Class: Pubid::Idf::UrnGenerator
Instance Attribute Summary
#identifier
Instance Method Summary
collapse
#initialize, #maybe, #urn_language, #urn_namespace, #urn_publisher
Instance Method Details
#generate ⇒ Object
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
|
# File 'lib/pubid/idf/urn_generator.rb', line 47
def generate
parts = ["urn", "idf"]
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_type if urn_type
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
if identifier.is_a?(SupplementIdentifier)
if identifier.typed_stage
supp_type = identifier.typed_stage.type_code.to_s
parts << supp_type if supp_type
end
if identifier.number
parts << identifier.number.value.to_s
end
end
parts.join(":")
end
|
#urn_edition ⇒ Object
38
39
40
41
42
43
44
45
|
# File 'lib/pubid/idf/urn_generator.rb', line 38
def urn_edition
return nil unless identifier.edition
num = identifier.edition.number
return nil unless num
"ed.#{num}"
end
|
#urn_number ⇒ Object
12
13
14
15
16
|
# File 'lib/pubid/idf/urn_generator.rb', line 12
def urn_number
return nil unless identifier.number
identifier.number.value.to_s
end
|
#urn_part ⇒ Object
18
19
20
21
22
|
# File 'lib/pubid/idf/urn_generator.rb', line 18
def urn_part
return nil unless identifier.part
"-#{identifier.part.value}"
end
|
#urn_subpart ⇒ Object
24
25
26
27
28
|
# File 'lib/pubid/idf/urn_generator.rb', line 24
def urn_subpart
return nil unless identifier.subpart
"-#{identifier.subpart.value}"
end
|
#urn_type ⇒ Object
6
7
8
9
10
|
# File 'lib/pubid/idf/urn_generator.rb', line 6
def urn_type
return nil unless identifier.type
identifier.type.abbr.to_s.downcase
end
|
#urn_year ⇒ Object
30
31
32
33
34
35
36
|
# File 'lib/pubid/idf/urn_generator.rb', line 30
def urn_year
if identifier.date&.year
return identifier.date.year.to_s
end
identifier.year&.to_s
end
|