Class: Pubid::Cie::UrnGenerator

Inherits:
UrnGenerator::Base show all
Defined in:
lib/pubid/cie/urn_generator.rb

Instance Attribute Summary

Attributes inherited from UrnGenerator::Base

#identifier

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

#generateObject



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
# 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.code
    parts << identifier.code.to_s
  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

  date_separator = maybe(:date_separator)
  parts << "sep.#{date_separator}" if date_separator

  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

  identifiers_string = maybe(:identifiers_string)
  parts << "bundle.#{identifiers_string}" if identifiers_string

  bundle_number = maybe(:bundle_number)
  parts << "tut-bundle.#{bundle_number}" if bundle_number

  languages = maybe(:languages)
  if languages&.any?
    lang_codes = languages.map(&:code).join(",")
    parts << lang_codes
  end

  parts.join(":")
end