Class: Pubid::Ansi::UrnGenerator
Instance Attribute Summary
#identifier
Instance Method Summary
collapse
#initialize, #maybe, #urn_language, #urn_namespace, #urn_publisher, #urn_type
Instance Method Details
#generate ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
|
# File 'lib/pubid/ansi/urn_generator.rb', line 50
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.body.to_s.downcase
end
if identifier.copublishers&.any?
copubs = identifier.copublishers.map(&:body)
parts[1] = "#{parts[1]}-#{copubs.join('-').downcase}"
end
if identifier.languages&.any?
parts << identifier.languages.map(&:code).join(",")
end
parts.join(":")
end
|
#urn_edition ⇒ Object
32
33
34
35
36
37
38
39
|
# File 'lib/pubid/ansi/urn_generator.rb', line 32
def urn_edition
return nil unless identifier.edition
num = identifier.edition.number
return nil unless num
"ed.#{num}"
end
|
#urn_number ⇒ Object
6
7
8
9
10
|
# File 'lib/pubid/ansi/urn_generator.rb', line 6
def urn_number
return nil unless identifier.number
identifier.number.value.to_s
end
|
#urn_part ⇒ Object
12
13
14
15
16
|
# File 'lib/pubid/ansi/urn_generator.rb', line 12
def urn_part
return nil unless identifier.part
"-#{identifier.part.value}"
end
|
#urn_subpart ⇒ Object
18
19
20
21
22
|
# File 'lib/pubid/ansi/urn_generator.rb', line 18
def urn_subpart
return nil unless identifier.subpart
"-#{identifier.subpart.value}"
end
|
#urn_typed_stage ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/pubid/ansi/urn_generator.rb', line 41
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
|
#urn_year ⇒ Object
24
25
26
27
28
29
30
|
# File 'lib/pubid/ansi/urn_generator.rb', line 24
def urn_year
if identifier.date&.year
return identifier.date.year.to_s
end
identifier.year&.to_s
end
|