pubid-iso 0.6.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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.
|