diff --git a/app/lib/kgcl/renderers/issue_content.rb b/app/lib/kgcl/renderers/issue_content.rb new file mode 100644 index 000000000..597e81d23 --- /dev/null +++ b/app/lib/kgcl/renderers/issue_content.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +module KGCL + module Renderers + # Base class for generating GitHub issue content for ontology change requests + class IssueContent + attr_reader :params + + def initialize(params) + @params = params + end + + def render + tr = KGCL::TemplateRenderer.new( + title_template: title_template, + body_template: body_template, + bind_klass: self + ) + tr.render + end + + def concept_id + @params[:concept_id] + end + + def concept_label + @params[:concept_label] + end + + def curie + @params[:curie] + end + + def github_id + @params[:github_id] + end + + def orcid_id + @params[:orcid_id] + end + + def username + @params[:username] + end + + # These methods should be defined in subclasses to provide unique templates + def title_template + raise NotImplementedError, 'Subclasses must define a title_template' + end + + def body_template + raise NotImplementedError, 'Subclasses must define a body_template' + end + end + end +end diff --git a/app/lib/kgcl/renderers/new_synonym_content.rb b/app/lib/kgcl/renderers/new_synonym_content.rb index 7871ba4df..de149adaf 100644 --- a/app/lib/kgcl/renderers/new_synonym_content.rb +++ b/app/lib/kgcl/renderers/new_synonym_content.rb @@ -12,50 +12,15 @@ module Renderers # # @see https://github.com/INCATools/kgcl KGCL documentation # - class NewSynonymContent - attr_reader :params - - def initialize(params) - @params = params - end - - def render - tr = KGCL::TemplateRenderer.new( - title_template: 'new_synonym_title.erb', - body_template: 'new_synonym_body.erb', - bind_klass: self - ) - tr.render - end - + class NewSynonymContent < IssueContent def comment @params[:create_synonym][:comment] end - def concept_id - @params[:concept_id] - end - - def concept_label - @params[:concept_label] - end - - def curie - @params[:curie] - end - def get_binding binding end - def github_id - @params[:github_id] - end - - def orcid_id - @params[:orcid_id] - end - def qualifier @params[:create_synonym][:qualifier] end @@ -64,8 +29,12 @@ def synonym_label @params[:create_synonym][:preferred_label] end - def username - @params[:username] + def title_template + 'new_synonym_title.erb' + end + + def body_template + 'new_synonym_body.erb' end end end diff --git a/app/lib/kgcl/renderers/node_obsoletion_content.rb b/app/lib/kgcl/renderers/node_obsoletion_content.rb index 86506e51f..ca0b8fe3f 100644 --- a/app/lib/kgcl/renderers/node_obsoletion_content.rb +++ b/app/lib/kgcl/renderers/node_obsoletion_content.rb @@ -9,52 +9,21 @@ module Renderers # # @see https://github.com/INCATools/kgcl KGCL documentation # - class NodeObsoletionContent - attr_reader :params - - def initialize(params) - @params = params - end - - def render - tr = KGCL::TemplateRenderer.new( - title_template: 'node_obsoletion_title.erb', - body_template: 'node_obsoletion_body.erb', - bind_klass: self - ) - tr.render - end - + class NodeObsoletionContent < IssueContent def comment @params[:node_obsoletion][:comment] end - def concept_id - @params[:concept_id] - end - - def concept_label - @params[:concept_label] - end - - def curie - @params[:curie] - end - def get_binding binding end - def github_id - @params[:github_id] - end - - def orcid_id - @params[:orcid_id] + def title_template + 'node_obsoletion_title.erb' end - def username - @params[:username] + def body_template + 'node_obsoletion_body.erb' end end end diff --git a/app/lib/kgcl/renderers/node_rename_content.rb b/app/lib/kgcl/renderers/node_rename_content.rb index 4f2e24e56..9315284f8 100644 --- a/app/lib/kgcl/renderers/node_rename_content.rb +++ b/app/lib/kgcl/renderers/node_rename_content.rb @@ -9,52 +9,25 @@ module Renderers # # @see https://github.com/INCATools/kgcl KGCL documentation # - class NodeRenameContent - attr_reader :params - - def initialize(params) - @params = params - end - - def render - tr = KGCL::TemplateRenderer.new( - title_template: 'node_rename_title.erb', - body_template: 'node_rename_body.erb', - bind_klass: self - ) - tr.render - end - + class NodeRenameContent < IssueContent def comment @params[:node_rename][:comment] end - def concept_label - @params[:concept_label] - end - - def curie - @params[:curie] - end - def get_binding binding end - def github_id - @params[:github_id] - end - - def orcid_id - @params[:orcid_id] - end - def new_concept_label @params[:node_rename][:new_preferred_name] end - def username - @params[:username] + def title_template + 'node_rename_title.erb' + end + + def body_template + 'node_rename_body.erb' end end end diff --git a/app/lib/kgcl/renderers/remove_synonym_content.rb b/app/lib/kgcl/renderers/remove_synonym_content.rb index cddefd8ae..84d9e4da2 100644 --- a/app/lib/kgcl/renderers/remove_synonym_content.rb +++ b/app/lib/kgcl/renderers/remove_synonym_content.rb @@ -11,52 +11,25 @@ module Renderers # # @see https://github.com/INCATools/kgcl KGCL documentation # - class RemoveSynonymContent - attr_reader :params - - def initialize(params) - @params = params - end - - def render - tr = KGCL::TemplateRenderer.new( - title_template: 'remove_synonym_title.erb', - body_template: 'remove_synonym_body.erb', - bind_klass: self - ) - tr.render - end - + class RemoveSynonymContent < IssueContent def comment @params[:remove_synonym][:comment] end - def concept_label - @params[:concept_label] - end - - def curie - @params[:curie] - end - def get_binding binding end - def github_id - @params[:github_id] - end - - def orcid_id - @params[:orcid_id] - end - def synonym_label @params[:remove_synonym][:synonym] end - def username - @params[:username] + def title_template + 'remove_synonym_title.erb' + end + + def body_template + 'remove_synonym_body.erb' end end end