Class: Pubid::Ansi::UrnGenerator

Inherits:
UrnGenerator::Base show all
Defined in:
lib/pubid/ansi/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



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/pubid/ansi/urn_generator.rb', line 15

def generate
  parts = ["urn", "ansi"]
  parts << urn_number if urn_number
  parts << urn_part if urn_part
  parts << urn_subpart if urn_subpart
  parts << urn_year if urn_year
  parts << urn_edition if urn_edition
  parts << urn_typed_stage if urn_typed_stage

  if identifier.publisher
    parts[1] = identifier.publisher.render(context: URN_CONTEXT)
  end

  if identifier.copublishers&.any?
    copubs = identifier.copublishers.map { |cp| cp.render(context: URN_CONTEXT) }
    parts[1] = "#{parts[1]}-#{copubs.join('-')}"
  end

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

  parts.join(":")
end

#urn_typed_stageObject



6
7
8
9
10
11
12
13
# File 'lib/pubid/ansi/urn_generator.rb', line 6

def urn_typed_stage
  return nil unless identifier.typed_stage

  type_code = identifier.typed_stage.type_code
  return nil if type_code && type_code.to_s == "ans"

  type_code&.to_s
end