Class: Pubid::Cie::UrnGenerator
- Inherits:
-
UrnGenerator::Base
- Object
- UrnGenerator::Base
- Pubid::Cie::UrnGenerator
- Defined in:
- lib/pubid/cie/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 |
# File 'lib/pubid/cie/urn_generator.rb', line 6 def generate parts = ["urn", "cie"] special_type = special_identifier_type_component parts << special_type if special_type if maybe(:s_prefix) parts << "s" end parts << publisher_component if identifier.respond_to?(:code_string) && identifier.code_string parts << identifier.code_string end year = extract_year parts << year.to_s if year language = maybe(:language) if language if language&.code parts << language.code.to_s.downcase if language&.format parts << language.format.to_s.downcase end else parts << language.to_s.downcase end end stage = maybe(:stage) parts << stage.to_s.downcase if stage # style is the sole separator field; record it for dated identifiers parts << "sep.#{maybe(:style)}" if year iec_identifier = maybe(:iec_identifier) parts << "iec.#{iec_identifier}" if iec_identifier iso_reference = maybe(:iso_reference) parts << "iso.#{iso_reference}" if iso_reference doc_type = maybe(:doc_type) parts << "doctype.#{doc_type}" if doc_type if identifier.respond_to?(:ids) && identifier.ids&.any? parts << "bundle.#{identifier}" end if identifier.is_a?(Cie::Identifiers::TutorialBundle) && identifier.number parts << "tut-bundle.#{identifier.number}" end languages = maybe(:languages) if languages&.any? lang_codes = languages.map(&:code).join(",") parts << lang_codes end parts.join(":") end |