Class: Niso::Jats::Article
- Inherits:
-
Lutaml::Model::Serializable
- Object
- Lutaml::Model::Serializable
- Niso::Jats::Article
- Defined in:
- lib/niso/jats/article.rb
Instance Method Summary collapse
-
#affiliation(id) ⇒ Array<Aff>
Returns affiliations matching the given id across all contrib-groups.
-
#contributors ⇒ Array<Contrib>
Returns all contributors across all contrib-groups in article metadata.
-
#doi ⇒ String?
Returns the DOI (Digital Object Identifier) from article identifiers.
-
#doi_links ⇒ Array<Hash{Symbol => String}>
Returns DOI-based links derived from article identifiers.
-
#journal_title ⇒ String?
Returns the first journal title from journal metadata.
-
#locality ⇒ Array<Array<String>>
Returns bibliographic locality (volume, issue, page range).
-
#pub_dates ⇒ Array<String>
Returns formatted publication dates as ISO 8601 strings (YYYY-MM-DD).
Instance Method Details
#affiliation(id) ⇒ Array<Aff>
Returns affiliations matching the given id across all contrib-groups.
77 78 79 80 81 82 |
# File 'lib/niso/jats/article.rb', line 77 def affiliation(id) groups = front&.&.contrib_group return [] unless groups groups.flat_map(&:aff).select { |a| a.id == id } end |
#contributors ⇒ Array<Contrib>
Returns all contributors across all contrib-groups in article metadata.
66 67 68 69 70 71 |
# File 'lib/niso/jats/article.rb', line 66 def contributors groups = front&.&.contrib_group return [] unless groups groups.flat_map(&:contrib) end |
#doi ⇒ String?
Returns the DOI (Digital Object Identifier) from article identifiers.
56 57 58 59 60 61 |
# File 'lib/niso/jats/article.rb', line 56 def doi ids = front&.&.article_id return unless ids ids.find { |id| id.pub_id_type == "doi" }&.content end |
#doi_links ⇒ Array<Hash{Symbol => String}>
Returns DOI-based links derived from article identifiers.
110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/niso/jats/article.rb', line 110 def doi_links ids = front&.&.article_id return [] unless ids ids.each_with_object([]) do |id, links| next unless id.pub_id_type == "doi" url = "https://doi.org/#{id.content}" links << { content: url, type: "src" } links << { content: url, type: "doi" } end end |
#journal_title ⇒ String?
Returns the first journal title from journal metadata.
45 46 47 48 49 50 51 |
# File 'lib/niso/jats/article.rb', line 45 def journal_title = front&. return unless titles = .journal_title_group.first.journal_title titles.first.content if titles.any? end |
#locality ⇒ Array<Array<String>>
Returns bibliographic locality (volume, issue, page range).
99 100 101 102 103 104 |
# File 'lib/niso/jats/article.rb', line 99 def locality = front&. return [] unless build_locality() end |
#pub_dates ⇒ Array<String>
Returns formatted publication dates as ISO 8601 strings (YYYY-MM-DD). Missing month or day defaults to “01”.
88 89 90 91 92 93 |
# File 'lib/niso/jats/article.rb', line 88 def pub_dates dates = front&.&.pub_date return [] unless dates dates.map { |d| format_pub_date(d) } end |