pubid-iso 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/pubid/iso/identifier/amendment.rb +1 -1
- data/lib/pubid/iso/identifier/base.rb +13 -109
- data/lib/pubid/iso/identifier/corrigendum.rb +1 -1
- data/lib/pubid/iso/identifier/directives.rb +8 -1
- data/lib/pubid/iso/identifier/international_standard.rb +2 -6
- data/lib/pubid/iso/identifier/international_standardized_profile.rb +2 -2
- data/lib/pubid/iso/identifier/international_workshop_agreement.rb +1 -1
- data/lib/pubid/iso/identifier/supplement.rb +1 -1
- data/lib/pubid/iso/parser.rb +7 -3
- data/lib/pubid/iso/renderer/base.rb +10 -6
- data/lib/pubid/iso/renderer/dir.rb +5 -10
- data/lib/pubid/iso/renderer/guide.rb +2 -2
- data/lib/pubid/iso/renderer/international_workshop_agreement.rb +2 -1
- data/lib/pubid/iso/renderer/supplement.rb +6 -5
- data/lib/pubid/iso/renderer/urn-dir.rb +2 -2
- data/lib/pubid/iso/renderer/urn-supplement.rb +1 -1
- data/lib/pubid/iso/transformer.rb +20 -18
- data/lib/pubid/iso/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e4fd0f754d87e7496c307221422d69bb36c6d4b497843eafa27a547d68bcd4e6
|
4
|
+
data.tar.gz: c1d58a83fb0d672111b9fe6d0dc28df87c0070e483c3c19d487e7c2618c99293
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aff91d1b6b5bc709bb4929b2901ac7ee53e35a2e67e403f4c3eec4123b8ab29a4d42604ae06ff0777be19b29d598139b224bfd7f34fe206595f3946147fb440b
|
7
|
+
data.tar.gz: ec6219d66f0b62c97bb20c09adcb3c53f3d63f7fb245228e3463fe47b33d37087574f6a327461f839b0eef1f713c8ce33dd1408619194814fda9ccc8938fdab1
|
@@ -11,10 +11,8 @@ module Pubid::Iso
|
|
11
11
|
:iteration, :joint_document,
|
12
12
|
:tctype, :sctype, :wgtype, :tcnumber, :scnumber, :wgnumber,
|
13
13
|
:dirtype,
|
14
|
-
# supplement for DIR type identifiers
|
15
|
-
:supplement,
|
16
14
|
:base,
|
17
|
-
:typed_stage,
|
15
|
+
# :typed_stage,
|
18
16
|
:supplements,
|
19
17
|
:addendum
|
20
18
|
|
@@ -24,7 +22,7 @@ module Pubid::Iso
|
|
24
22
|
# @param stage [Stage, Symbol, String] stage or typed stage, e.g. "PWI", "NP", "50.00", Stage.new(abbr: :WD), "DTR"
|
25
23
|
# @param iteration [Integer] document iteration, eg. "1", "2", "3"
|
26
24
|
# @param joint_document [Identifier] joint document
|
27
|
-
# @param
|
25
|
+
# @param supplements [Array<Supplement>] supplements
|
28
26
|
# @param tctype [String] Technical Committee type, eg. "TC", "JTC"
|
29
27
|
# @param sctype [String] TC subsommittee, eg. "SC"
|
30
28
|
# @param wgtype [String] TC working group type, eg. "AG", "AHG"
|
@@ -44,12 +42,12 @@ module Pubid::Iso
|
|
44
42
|
# @see Identifier
|
45
43
|
# @see Pubid::Core::Identifier
|
46
44
|
# @see Parser
|
47
|
-
def initialize(publisher: "ISO", number: nil, stage: nil, iteration: nil,
|
45
|
+
def initialize(publisher: "ISO", number: nil, stage: nil, iteration: nil,
|
48
46
|
joint_document: nil, tctype: nil, sctype: nil, wgtype: nil, tcnumber: nil,
|
49
47
|
scnumber: nil, wgnumber:nil,
|
50
48
|
dir: nil, dirtype: nil, year: nil, amendments: nil,
|
51
49
|
corrigendums: nil, type: nil, base: nil, supplements: nil,
|
52
|
-
part: nil, addendum: nil, **opts)
|
50
|
+
part: nil, addendum: nil, edition: nil, **opts)
|
53
51
|
super(**opts.merge(number: number, publisher: publisher, year: year,
|
54
52
|
amendments: amendments, corrigendums: corrigendums))
|
55
53
|
|
@@ -64,25 +62,12 @@ module Pubid::Iso
|
|
64
62
|
end
|
65
63
|
|
66
64
|
if stage
|
67
|
-
|
68
|
-
@stage = stage
|
69
|
-
@typed_stage = resolve_typed_stage(@stage.harmonized_code) unless @stage.abbr
|
70
|
-
elsif self.class.has_typed_stage?(stage)
|
71
|
-
@typed_stage, @stage = find_typed_stage(stage)
|
72
|
-
else
|
73
|
-
@stage = Identifier.parse_stage(stage)
|
74
|
-
# resolve typed stage when harmonized code provided as stage
|
75
|
-
# or stage abbreviation was not resolved
|
76
|
-
if /\A[\d.]+\z/.match?(stage) || @stage.empty_abbr?(with_prf: true)
|
77
|
-
@typed_stage = resolve_typed_stage(@stage.harmonized_code)
|
78
|
-
end
|
79
|
-
end
|
65
|
+
@stage = resolve_stage(stage)
|
80
66
|
elsif iteration && !is_a?(Supplement)
|
81
67
|
raise Errors::IterationWithoutStageError, "Document without stage cannot have iteration"
|
82
68
|
end
|
83
69
|
|
84
70
|
@iteration = iteration.to_i if iteration
|
85
|
-
@supplement = supplement if supplement
|
86
71
|
@joint_document = joint_document if joint_document
|
87
72
|
@tctype = tctype if tctype
|
88
73
|
@sctype = sctype.to_s if sctype
|
@@ -95,47 +80,7 @@ module Pubid::Iso
|
|
95
80
|
@base = base if base
|
96
81
|
@part = part if part
|
97
82
|
@addendum = addendum if addendum
|
98
|
-
|
99
|
-
|
100
|
-
# @param typed_stage [String, Symbol] eg. "DTR" or :dtr
|
101
|
-
# @return [[Symbol, Stage]] typed stage and stage with assigned harmonized codes
|
102
|
-
def find_typed_stage(typed_stage)
|
103
|
-
if typed_stage.is_a?(Symbol)
|
104
|
-
return [typed_stage,
|
105
|
-
Identifier.build_stage(
|
106
|
-
harmonized_code: Identifier.build_harmonized_stage_code(self.class::TYPED_STAGES[typed_stage][:harmonized_stages])),
|
107
|
-
]
|
108
|
-
end
|
109
|
-
|
110
|
-
typed_stage = self.class::TYPED_STAGES.find do |_, v|
|
111
|
-
if v[:abbr].is_a?(Hash)
|
112
|
-
v[:abbr].value?(typed_stage)
|
113
|
-
else
|
114
|
-
if v.key?(:legacy_abbr)
|
115
|
-
v[:legacy_abbr].include?(typed_stage) || v[:abbr] == typed_stage
|
116
|
-
else
|
117
|
-
v[:abbr] == typed_stage
|
118
|
-
end
|
119
|
-
#
|
120
|
-
# v[:abbr] == typed_stage
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
[typed_stage.first,
|
125
|
-
Identifier.build_stage(
|
126
|
-
harmonized_code: Identifier.build_harmonized_stage_code(typed_stage[1][:harmonized_stages]))]
|
127
|
-
end
|
128
|
-
|
129
|
-
# Resolve typed stage using stage harmonized stage code
|
130
|
-
# @param harmonized_code [HarmonizedStageCode]
|
131
|
-
# @return [Symbol, nil] typed stage or nil
|
132
|
-
def resolve_typed_stage(harmonized_code)
|
133
|
-
self.class::TYPED_STAGES.each do |k, v|
|
134
|
-
if (v[:harmonized_stages] & harmonized_code.stages) == harmonized_code.stages
|
135
|
-
return k
|
136
|
-
end
|
137
|
-
end
|
138
|
-
nil
|
83
|
+
@edition = edition
|
139
84
|
end
|
140
85
|
|
141
86
|
class << self
|
@@ -179,7 +124,7 @@ module Pubid::Iso
|
|
179
124
|
end.inject({}, :merge)
|
180
125
|
|
181
126
|
# return supplement if supplements applied
|
182
|
-
if identifier_params[:supplements]
|
127
|
+
if identifier_params[:supplements] && identifier_params[:supplements].is_a?(Array)
|
183
128
|
return transform_supplements(
|
184
129
|
identifier_params[:supplements],
|
185
130
|
identifier_params.dup.tap { |h| h.delete(:supplements) }
|
@@ -196,24 +141,6 @@ module Pubid::Iso
|
|
196
141
|
Identifier.create(**identifier_params)
|
197
142
|
end
|
198
143
|
|
199
|
-
# @param typed_stage [String, Symbol] typed stage, eg. "DTR" or :dtr
|
200
|
-
# @return [Boolean] true when identifier has associated typed stage
|
201
|
-
def has_typed_stage?(typed_stage)
|
202
|
-
return self::TYPED_STAGES.key?(typed_stage) if typed_stage.is_a?(Symbol)
|
203
|
-
|
204
|
-
self::TYPED_STAGES.any? do |_, v|
|
205
|
-
if v[:abbr].is_a?(Hash)
|
206
|
-
v[:abbr].value?(typed_stage)
|
207
|
-
else
|
208
|
-
if v.key?(:legacy_abbr)
|
209
|
-
v[:legacy_abbr].include?(typed_stage) || v[:abbr] == typed_stage
|
210
|
-
else
|
211
|
-
v[:abbr] == typed_stage
|
212
|
-
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
144
|
def get_amendment_class
|
218
145
|
Pubid::Iso::Amendment
|
219
146
|
end
|
@@ -238,6 +165,10 @@ module Pubid::Iso
|
|
238
165
|
UPDATE_CODES
|
239
166
|
end
|
240
167
|
|
168
|
+
def get_identifier
|
169
|
+
Identifier
|
170
|
+
end
|
171
|
+
|
241
172
|
def type_match?(parameters)
|
242
173
|
parameters[:type] ? has_type?(parameters[:type]) : has_typed_stage?(parameters[:stage])
|
243
174
|
end
|
@@ -247,20 +178,10 @@ module Pubid::Iso
|
|
247
178
|
# @return [String] URN identifier
|
248
179
|
def urn
|
249
180
|
((@tctype && Renderer::UrnTc) || Pubid::Iso::Renderer::Urn).new(
|
250
|
-
|
181
|
+
to_h(deep: false).merge({ type: type[:key] }),
|
251
182
|
).render + (language ? ":#{language}" : "")
|
252
183
|
end
|
253
184
|
|
254
|
-
def get_params
|
255
|
-
instance_variables.map do |var|
|
256
|
-
if var.to_s == "@typed_stage" && @typed_stage
|
257
|
-
[:typed_stage, self.class::TYPED_STAGES[@typed_stage][:abbr]]
|
258
|
-
else
|
259
|
-
[var.to_s.gsub("@", "").to_sym, instance_variable_get(var)]
|
260
|
-
end
|
261
|
-
end.to_h
|
262
|
-
end
|
263
|
-
|
264
185
|
# @param format [:ref_num_short,:ref_num_long,:ref_dated,:ref_dated_long,:ref_undated,:ref_undated_long] create reference with specified format
|
265
186
|
# Format options are:
|
266
187
|
# :ref_num_short -- instance reference number: 1 letter language code + short form (DAM) + dated
|
@@ -322,7 +243,7 @@ module Pubid::Iso
|
|
322
243
|
options[:with_prf] = with_prf
|
323
244
|
options[:language] = lang
|
324
245
|
|
325
|
-
self.class.get_renderer_class.new(
|
246
|
+
self.class.get_renderer_class.new(to_h(deep: false)).render(**options) +
|
326
247
|
if @joint_document
|
327
248
|
render_joint_document(@joint_document)
|
328
249
|
end.to_s
|
@@ -333,23 +254,6 @@ module Pubid::Iso
|
|
333
254
|
end
|
334
255
|
|
335
256
|
# Return typed stage abbreviation, eg. "FDTR", "DIS", "TR"
|
336
|
-
def typed_stage_abbrev
|
337
|
-
if self.class::TYPED_STAGES.key?(typed_stage)
|
338
|
-
self.class::TYPED_STAGES[typed_stage][:abbr]
|
339
|
-
else
|
340
|
-
stage ? "#{stage.abbr} #{type[:key].to_s.upcase}" : type[:key].to_s.upcase
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
# Return typed stage name, eg. "Final Draft Technical Report" for "FDTR"
|
345
|
-
def typed_stage_name
|
346
|
-
if self.class::TYPED_STAGES.key?(typed_stage)
|
347
|
-
self.class::TYPED_STAGES[typed_stage][:name]
|
348
|
-
else
|
349
|
-
stage ? "#{stage.name} #{type[:title]}" : type[:title]
|
350
|
-
end
|
351
|
-
end
|
352
|
-
|
353
257
|
# returns root identifier
|
354
258
|
def root
|
355
259
|
return base.base if base&.base
|
@@ -8,6 +8,13 @@ module Pubid::Iso
|
|
8
8
|
|
9
9
|
TYPED_STAGES = {}.freeze
|
10
10
|
|
11
|
+
attr_accessor :edition_publisher
|
12
|
+
|
13
|
+
def initialize(edition_publisher: nil, **opts)
|
14
|
+
super(**opts)
|
15
|
+
@edition_publisher = edition_publisher
|
16
|
+
end
|
17
|
+
|
11
18
|
def self.type
|
12
19
|
{ key: :dir, title: "Directives" }
|
13
20
|
end
|
@@ -17,7 +24,7 @@ module Pubid::Iso
|
|
17
24
|
end
|
18
25
|
|
19
26
|
def urn
|
20
|
-
Renderer::UrnDir.new(
|
27
|
+
Renderer::UrnDir.new(to_h(deep: false)).render
|
21
28
|
end
|
22
29
|
|
23
30
|
def render_joint_document(joint_document)
|
@@ -21,11 +21,7 @@ module Pubid::Iso
|
|
21
21
|
},
|
22
22
|
}.freeze
|
23
23
|
|
24
|
-
def initialize(
|
25
|
-
joint_document: nil, tctype: nil, sctype: nil, wgtype: nil, tcnumber: nil,
|
26
|
-
scnumber: nil, wgnumber:nil,
|
27
|
-
dir: nil, dirtype: nil, year: nil, amendments: nil,
|
28
|
-
corrigendums: nil, type: nil, base: nil, supplements: nil, **opts)
|
24
|
+
def initialize(stage: nil, iteration: nil, **opts)
|
29
25
|
|
30
26
|
if iteration && stage.nil?
|
31
27
|
raise Errors::IsStageIterationError, "IS stage document cannot have iteration"
|
@@ -35,7 +31,7 @@ module Pubid::Iso
|
|
35
31
|
end
|
36
32
|
|
37
33
|
def typed_stage_abbrev
|
38
|
-
if self.class::TYPED_STAGES.key?(
|
34
|
+
if self.class::TYPED_STAGES.key?(stage)
|
39
35
|
super
|
40
36
|
else
|
41
37
|
stage&.abbr
|
@@ -6,12 +6,12 @@ module Pubid::Iso
|
|
6
6
|
def_delegators 'Pubid::Iso::Identifier::InternationalStandardizedProfile', :type
|
7
7
|
|
8
8
|
TYPED_STAGES = {
|
9
|
-
|
9
|
+
disp: {
|
10
10
|
abbr: "DISP",
|
11
11
|
name: "Draft International Standardized Profile",
|
12
12
|
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93 40.98 40.99],
|
13
13
|
},
|
14
|
-
|
14
|
+
fdisp: {
|
15
15
|
abbr: "FDISP",
|
16
16
|
name: "Final Draft International Standardized Profile",
|
17
17
|
harmonized_stages: %w[50.00 50.20 50.60 50.92],
|
@@ -6,7 +6,7 @@ module Pubid::Iso
|
|
6
6
|
def_delegators 'Pubid::Iso::Identifier::InternationalWorkshopAgreement', :type
|
7
7
|
|
8
8
|
TYPED_STAGES = {
|
9
|
-
|
9
|
+
diwa: {
|
10
10
|
abbr: "DIWA",
|
11
11
|
name: "Draft International Workshop Agreement",
|
12
12
|
harmonized_stages: %w[40.00 40.20 40.60 40.92 40.93 40.98 40.99],
|
data/lib/pubid/iso/parser.rb
CHANGED
@@ -169,9 +169,13 @@ module Pubid::Iso
|
|
169
169
|
((str("DIR") | str("Directives Part") | str("Directives, Part") | str("Directives,")).as(:type) >> space).maybe >>
|
170
170
|
(str("JTC").as(:dirtype) >> space).maybe >>
|
171
171
|
(digits.as(:number) >> (str(":") >> year).maybe).maybe >>
|
172
|
-
(str(" -- Consolidated").maybe >> (
|
173
|
-
(
|
174
|
-
|
172
|
+
(str(" -- Consolidated").maybe >> (str("").as(:mark) >> space? >>
|
173
|
+
(organization.as(:publisher) >> space?).maybe >>
|
174
|
+
array_to_str(DIR_SUPPLEMENTS) >> (str(":") >> year).maybe >>
|
175
|
+
dir_supplement_edition.maybe).repeat(1).as(:supplements)).maybe >>
|
176
|
+
# parse identifiers with publisher at the end, e.g. "ISO/IEC DIR 2 ISO"
|
177
|
+
(space >> organization.as(:publisher) >> (str(":") >> year).maybe).as(:edition).maybe
|
178
|
+
|
175
179
|
end
|
176
180
|
|
177
181
|
rule(:std_document_body) do
|
@@ -42,10 +42,10 @@ module Pubid::Iso::Renderer
|
|
42
42
|
def render_base(_base, _opts, _params)
|
43
43
|
end
|
44
44
|
|
45
|
-
def render_type_prefix(params)
|
46
|
-
result = params[:
|
45
|
+
def render_type_prefix(params, opts)
|
46
|
+
result = params[:stage].nil? || !params[:stage].is_a?(Pubid::Core::TypedStage) ? self.class::TYPE : ""
|
47
47
|
|
48
|
-
if params[:stage] && !params[:stage].empty? && !result.empty?
|
48
|
+
if params[:stage] != "" && !params[:stage].to_s(with_prf: opts[:with_prf]).empty? && !result.empty?
|
49
49
|
" #{result}"
|
50
50
|
else
|
51
51
|
result
|
@@ -53,7 +53,8 @@ module Pubid::Iso::Renderer
|
|
53
53
|
end
|
54
54
|
|
55
55
|
def render_identifier(params, opts)
|
56
|
-
|
56
|
+
stage = params.key?(:stage) ? postrender_stage(params[:stage], opts, params) : ""
|
57
|
+
"%{publisher}#{stage}#{render_type_prefix(params, opts)} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{addendum}%{edition}" % params
|
57
58
|
end
|
58
59
|
|
59
60
|
def render_copublisher_string(publisher, copublishers, opts)
|
@@ -125,8 +126,11 @@ module Pubid::Iso::Renderer
|
|
125
126
|
typed_stage.to_s
|
126
127
|
end
|
127
128
|
|
128
|
-
def render_stage(stage,
|
129
|
-
|
129
|
+
def render_stage(stage, _opts, _params)
|
130
|
+
stage
|
131
|
+
end
|
132
|
+
|
133
|
+
def postrender_stage(stage, opts, params)
|
130
134
|
return if stage.empty_abbr?(with_prf: opts[:with_prf])
|
131
135
|
|
132
136
|
if opts[:language]
|
@@ -4,12 +4,12 @@ module Pubid::Iso::Renderer
|
|
4
4
|
class Dir < Base
|
5
5
|
|
6
6
|
def render_identifier(params, opts)
|
7
|
-
res = ("%{publisher} DIR%{dirtype}%{number}%{year}%{
|
7
|
+
res = ("%{publisher} DIR%{dirtype}%{number}%{year}%{edition}" % params)
|
8
8
|
|
9
9
|
if params.key?(:joint_document)
|
10
|
-
joint_params = prerender_params(params[:joint_document].
|
10
|
+
joint_params = prerender_params(params[:joint_document].to_h(deep: false), {})
|
11
11
|
joint_params.default = ""
|
12
|
-
res += (" + %{publisher}%{dirtype}%{number}%{year}
|
12
|
+
res += (" + %{publisher}%{dirtype}%{number}%{year}" % joint_params)
|
13
13
|
end
|
14
14
|
|
15
15
|
res
|
@@ -23,13 +23,8 @@ module Pubid::Iso::Renderer
|
|
23
23
|
" #{dirtype}"
|
24
24
|
end
|
25
25
|
|
26
|
-
def
|
27
|
-
|
28
|
-
" #{supplement.publisher} SUP"
|
29
|
-
else
|
30
|
-
" SUP"
|
31
|
-
end + (supplement.year && ":#{supplement.year}" || "") +
|
32
|
-
(supplement.edition && " Edition #{supplement.edition}" || "")
|
26
|
+
def render_edition(edition, _opts, _params)
|
27
|
+
" #{edition[:publisher]}" + (edition[:year] ? ":#{edition[:year]}" : "")
|
33
28
|
end
|
34
29
|
end
|
35
30
|
end
|
@@ -8,8 +8,8 @@ module Pubid::Iso::Renderer
|
|
8
8
|
elsif opts[:language] == :russian
|
9
9
|
"Руководство %{publisher}%{stage} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{edition}" % params
|
10
10
|
else
|
11
|
-
if params[:
|
12
|
-
"%{publisher}%{
|
11
|
+
if params[:stage] && params[:stage].is_a?(Pubid::Core::TypedStage)
|
12
|
+
"%{publisher}%{stage} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{edition}" % params
|
13
13
|
else
|
14
14
|
"%{publisher}%{stage} Guide %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{edition}" % params
|
15
15
|
end
|
@@ -11,7 +11,8 @@ module Pubid::Iso::Renderer
|
|
11
11
|
end
|
12
12
|
|
13
13
|
def render_identifier(params, opts)
|
14
|
-
|
14
|
+
stage = params.key?(:stage) ? postrender_stage(params[:stage], opts, params) : ""
|
15
|
+
"#{stage}#{render_type_prefix(params, opts)} %{number}%{part}%{iteration}%{year}%{amendments}%{corrigendums}%{addendum}%{edition}" % params
|
15
16
|
end
|
16
17
|
end
|
17
18
|
end
|
@@ -23,21 +23,22 @@ module Pubid::Iso::Renderer
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def render_identifier(params, opts)
|
26
|
-
type_prefix = params[:
|
26
|
+
type_prefix = params[:stage].nil? || !params[:stage].is_a?(Pubid::Core::TypedStage) ? self.class::TYPE : ""
|
27
|
+
# type_prefix = params[:typed_stage].nil? || params[:typed_stage].empty? ? self.class::TYPE : ""
|
27
28
|
|
28
|
-
if params[:stage].
|
29
|
+
if params[:stage].instance_of?(Pubid::Core::Stage) && !params[:stage].empty_abbr?
|
29
30
|
type_prefix = " #{type_prefix}"
|
30
31
|
end
|
31
32
|
|
32
33
|
if self.class == Supplement
|
33
34
|
if opts[:base_type] == :dir
|
34
|
-
"%{
|
35
|
+
"%{stage}%{publisher} SUP%{number}%{part}%{iteration}%{year}%{edition}" % params
|
35
36
|
else
|
36
37
|
# type_prefix = "/#{type_prefix}" unless type_prefix.empty?
|
37
|
-
"/%{
|
38
|
+
"/%{stage}#{type_prefix}%{number}%{part}%{iteration}%{year}%{edition}" % params
|
38
39
|
end
|
39
40
|
else
|
40
|
-
"/%{
|
41
|
+
"/%{stage}#{type_prefix}%{number}%{part}%{iteration}%{year}%{edition}" % params
|
41
42
|
end
|
42
43
|
end
|
43
44
|
|
@@ -8,10 +8,10 @@ module Pubid::Iso::Renderer
|
|
8
8
|
|
9
9
|
if params.key?(:joint_document)
|
10
10
|
if params[:joint_document].is_a?(Pubid::Iso::Identifier::Supplement)
|
11
|
-
joint_params = params[:joint_document].
|
11
|
+
joint_params = params[:joint_document].to_h(deep: false)
|
12
12
|
res += ":#{joint_params[:base].publisher.downcase}:sup:%{year}" % joint_params
|
13
13
|
else
|
14
|
-
joint_params = prerender_params(params[:joint_document].
|
14
|
+
joint_params = prerender_params(params[:joint_document].to_h(deep: false), {})
|
15
15
|
joint_params.default = ""
|
16
16
|
res += (":%{publisher}%{copublisher}%{dirtype}%{number}%{supplement}" % joint_params)
|
17
17
|
end
|
@@ -13,7 +13,7 @@ module Pubid::Iso::Renderer
|
|
13
13
|
return base.urn if base.base || base.is_a?(Pubid::Iso::Identifier::Directives)
|
14
14
|
|
15
15
|
# to avoid rendering language as part of base
|
16
|
-
Urn.new(base.
|
16
|
+
Urn.new(base.to_h(deep: false)).render
|
17
17
|
end
|
18
18
|
|
19
19
|
def render_number(number, _opts, params)
|
@@ -15,28 +15,30 @@ module Pubid::Iso
|
|
15
15
|
end
|
16
16
|
|
17
17
|
rule(supplements: subtree(:supplements)) do |context|
|
18
|
-
context[:supplements]
|
19
|
-
context[:supplements]
|
20
|
-
|
21
|
-
supplement
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
18
|
+
if context[:supplements].is_a?(Array)
|
19
|
+
context[:supplements] =
|
20
|
+
context[:supplements].map do |supplement|
|
21
|
+
if supplement[:typed_stage]
|
22
|
+
supplement.merge(
|
23
|
+
case supplement[:typed_stage]
|
24
|
+
when "PDAM"
|
25
|
+
{ typed_stage: "CD", type: "Amd" }
|
26
|
+
when "pDCOR"
|
27
|
+
{ typed_stage: "CD", type: "Cor" }
|
28
|
+
else
|
29
|
+
{}
|
30
|
+
end
|
31
|
+
)
|
32
|
+
else
|
33
|
+
case supplement[:type]
|
34
|
+
when "Addendum"
|
35
|
+
supplement.merge({ type: "Add" })
|
27
36
|
else
|
28
|
-
|
37
|
+
supplement
|
29
38
|
end
|
30
|
-
)
|
31
|
-
else
|
32
|
-
case supplement[:type]
|
33
|
-
when "Addendum"
|
34
|
-
supplement.merge({ type: "Add" })
|
35
|
-
else
|
36
|
-
supplement
|
37
39
|
end
|
38
40
|
end
|
39
|
-
|
41
|
+
end
|
40
42
|
context
|
41
43
|
end
|
42
44
|
|
data/lib/pubid/iso/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pubid-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 1.
|
61
|
+
version: '1.12'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 1.
|
68
|
+
version: '1.12'
|
69
69
|
description: Library to generate, parse and manipulate ISO PubID.
|
70
70
|
email:
|
71
71
|
- open.source@ribose.com
|
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
145
145
|
- !ruby/object:Gem::Version
|
146
146
|
version: '0'
|
147
147
|
requirements: []
|
148
|
-
rubygems_version: 3.
|
148
|
+
rubygems_version: 3.3.26
|
149
149
|
signing_key:
|
150
150
|
specification_version: 4
|
151
151
|
summary: Library to generate, parse and manipulate ISO PubID.
|