Class: Pubid::Nist::UrnGenerator
- Inherits:
-
UrnGenerator::Base
- Object
- UrnGenerator::Base
- Pubid::Nist::UrnGenerator
- Defined in:
- lib/pubid/nist/urn_generator.rb
Instance Attribute Summary
Attributes inherited from UrnGenerator::Base
Instance Method Summary collapse
Methods inherited from UrnGenerator::Base
#initialize, #maybe, #urn_edition, #urn_language, #urn_namespace, #urn_number, #urn_part, #urn_publisher, #urn_subpart, #urn_type, #urn_year
Constructor Details
This class inherits a constructor from Pubid::UrnGenerator::Base
Instance Method Details
#generate ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/pubid/nist/urn_generator.rb', line 6 def generate parts = ["urn", "nist"] if identifier.series series = identifier.series.to_s parts << series.downcase elsif (sc = maybe(:series_code)) parts << sc.downcase else parts << "sp" end identifier_parts = [] if identifier.number number = identifier.number.to_s identifier_parts << number end if identifier.parts&.any? identifier_parts += identifier.parts.map { |p| "-#{p}" } end if identifier.edition identifier_parts << identifier.edition.to_s end if identifier.volume vol = identifier.volume.to_s identifier_parts << vol end if identifier.part && identifier.part identifier_parts << identifier.part.to_s end if identifier.volume && identifier.issue_number vol_str = identifier.volume.to_s issue_str = identifier.issue_number.to_s identifier_parts << "#{vol_str}n#{issue_str}" end if identifier.version_component identifier_parts << identifier.version_component.to_s elsif identifier.version identifier_parts << "ver.#{identifier.version}" end if identifier.update_component identifier_parts << identifier.update_component.to_s elsif identifier.update identifier_parts << "-upd#{identifier.update}" end if identifier.stage identifier_parts << identifier.stage.to_s end supp = identifier.supplement if identifier.supplement_date_range_start && identifier.supplement_date_range_end identifier_parts << "supp#{identifier.supplement_date_range_start}-#{identifier.supplement_date_range_end}" elsif identifier.supplement_has_revision identifier_parts << "supprev" elsif supp && !supp.empty? identifier_parts << if supp.match?(/^[A-Z]/) "supp#{supp}" else "supp-#{supp}" end elsif !supp identifier_parts << "supp" end if identifier.errata identifier_parts << identifier.errata end if identifier.addendum || identifier.addendum_number identifier_parts << "add." end if identifier.draft_number identifier_parts << "#{identifier.draft_number}pd" elsif identifier.draft&.to_s&.include?("draft") identifier_parts << "-draft" end if identifier.index identifier_parts << "index" end if identifier.insert identifier_parts << "insert" end if identifier.section identifier_parts << "sec#{identifier.section}" end if identifier.appendix identifier_parts << "app" end parts << identifier_parts.join(".") unless identifier_parts.empty? if identifier.translation_component trans = identifier.translation_component lang = if trans&.language trans.language elsif trans.is_a?(String) trans end parts << lang.downcase if lang elsif identifier.translation parts << identifier.translation.downcase end parts.join(":") end |