Module: Metanorma::Html::Concerns::MetadataExtraction
- Included in:
- BaseRenderer
- Defined in:
- lib/metanorma/html/concerns/metadata_extraction.rb
Overview
Document metadata extraction from bibdata, mixed into BaseRenderer: page language, HTML title, and the primary document identifier used in the header.
Instance Method Summary collapse
- #extract_display_title(bibdata) ⇒ Object
- #extract_primary_doc_id ⇒ Object
- #html_title ⇒ Object
- #language ⇒ Object
Instance Method Details
#extract_display_title(bibdata) ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/metanorma/html/concerns/metadata_extraction.rb', line 27 def extract_display_title(bibdata) return nil unless bibdata title = bibdata.title_for("en") if bibdata.is_a?(Metanorma::Document::Components::BibData::BibData) return title.to_s if title && !title.to_s.empty? titles = safe_attr(bibdata, :title) return nil unless titles && !titles.is_a?(String) && !titles.empty? en = titles.find { |t| safe_attr(t, :language) == "en" } found = en || titles.first extract_text_value(found).to_s end |
#extract_primary_doc_id ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/metanorma/html/concerns/metadata_extraction.rb', line 41 def extract_primary_doc_id bibdata = @document.bibdata return nil unless bibdata identifiers = bibdata.doc_identifier return nil unless identifiers && !identifiers.empty? first_id = identifiers.first text = if first_id.is_a?(String) first_id elsif first_id.is_a?(Lutaml::Model::Serializable) Array(first_id.value).join else first_id.to_s end text.strip.empty? ? nil : text.strip end |
#html_title ⇒ Object
23 24 25 |
# File 'lib/metanorma/html/concerns/metadata_extraction.rb', line 23 def html_title extract_display_title(@document.bibdata) || "Document" end |
#language ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/metanorma/html/concerns/metadata_extraction.rb', line 10 def language bibdata = @document.bibdata return "en" unless bibdata langs = bibdata.language if langs && !langs.empty? lang = langs.find { |l| l.current == "true" } || langs.first lang.value || lang.to_s else "en" end end |