pubid 2.0.1 → 2.0.2
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/data/parg/adobe.json +1 -1
- data/data/parg/amca.json +1 -1
- data/data/parg/ansi.json +1 -1
- data/data/parg/api.json +1 -1
- data/data/parg/ashrae.json +1 -1
- data/data/parg/asme.json +1 -1
- data/data/parg/astm.json +1 -1
- data/data/parg/bipm.json +1 -1
- data/data/parg/bsi.json +1 -1
- data/data/parg/ccsds.json +1 -1
- data/data/parg/cen_cenelec.json +1 -1
- data/data/parg/cie.json +1 -1
- data/data/parg/csa.json +1 -1
- data/data/parg/ecma.json +1 -1
- data/data/parg/etsi.json +1 -1
- data/data/parg/evs.json +1 -1
- data/data/parg/gost.json +1 -1
- data/data/parg/iana.json +1 -1
- data/data/parg/idf.json +1 -1
- data/data/parg/iec.json +1 -1
- data/data/parg/iho.json +1 -0
- data/data/parg/isbn.json +1 -1
- data/data/parg/itu.json +1 -1
- data/data/parg/jcgm.json +1 -1
- data/data/parg/jis.json +1 -1
- data/data/parg/nist.json +1 -1
- data/data/parg/oiml.json +1 -1
- data/data/parg/omg.json +1 -1
- data/data/parg/plateau.json +1 -1
- data/data/parg/tgpp.json +1 -1
- data/data/parg/un.json +1 -1
- data/lib/pubid/adobe/identifier.rb +1 -1
- data/lib/pubid/adobe/parser.rb +2 -113
- data/lib/pubid/amca/identifiers/base.rb +1 -1
- data/lib/pubid/amca/parser.rb +1 -145
- data/lib/pubid/ansi/identifier.rb +1 -1
- data/lib/pubid/ansi/parser.rb +1 -82
- data/lib/pubid/api/builder.rb +32 -1
- data/lib/pubid/api/identifier.rb +1 -1
- data/lib/pubid/api/parser.rb +1 -131
- data/lib/pubid/ashrae/identifiers/base.rb +1 -1
- data/lib/pubid/ashrae/parser.rb +3 -710
- data/lib/pubid/asme/builder.rb +6 -4
- data/lib/pubid/asme/identifier.rb +1 -2
- data/lib/pubid/asme/parser.rb +1 -328
- data/lib/pubid/astm/builder.rb +12 -3
- data/lib/pubid/astm/identifier.rb +1 -2
- data/lib/pubid/astm/parser.rb +1 -227
- data/lib/pubid/bipm/identifier.rb +8 -1
- data/lib/pubid/bipm/parser.rb +2 -224
- data/lib/pubid/bsi/builder.rb +2 -4
- data/lib/pubid/bsi/parser.rb +1 -666
- data/lib/pubid/bsi/single_identifier.rb +38 -1
- data/lib/pubid/calconnect/parser.rb +2 -40
- data/lib/pubid/ccsds/identifier.rb +1 -1
- data/lib/pubid/ccsds/parser.rb +1 -66
- data/lib/pubid/cen_cenelec/identifier.rb +16 -1
- data/lib/pubid/cen_cenelec/parser.rb +3 -136
- data/lib/pubid/cie/identifier.rb +1 -1
- data/lib/pubid/cie/parser.rb +3 -378
- data/lib/pubid/conformance.rb +1 -1
- data/lib/pubid/csa/builder.rb +41 -18
- data/lib/pubid/csa/identifier.rb +12 -4
- data/lib/pubid/csa/identifiers/amendment.rb +28 -0
- data/lib/pubid/csa/identifiers.rb +1 -0
- data/lib/pubid/csa/parser.rb +16 -397
- data/lib/pubid/doi/parser.rb +2 -37
- data/lib/pubid/easc/builder.rb +1 -1
- data/lib/pubid/easc/parser.rb +2 -70
- data/lib/pubid/ecma/CLAUDE.md +8 -1
- data/lib/pubid/ecma/identifier.rb +13 -8
- data/lib/pubid/ecma/parser.rb +2 -54
- data/lib/pubid/ecma/renderer.rb +3 -7
- data/lib/pubid/errors.rb +18 -13
- data/lib/pubid/etsi/builder.rb +8 -5
- data/lib/pubid/etsi/identifiers/base.rb +1 -1
- data/lib/pubid/etsi/parser.rb +1 -132
- data/lib/pubid/evs/identifier.rb +7 -0
- data/lib/pubid/evs/parser.rb +1 -8
- data/lib/pubid/evs.rb +1 -1
- data/lib/pubid/gb/identifier.rb +6 -0
- data/lib/pubid/gb/parser.rb +2 -51
- data/lib/pubid/gost/identifier.rb +9 -1
- data/lib/pubid/gost/parser.rb +4 -81
- data/lib/pubid/iala/parser.rb +2 -121
- data/lib/pubid/iana/identifier.rb +1 -1
- data/lib/pubid/iana/parser.rb +2 -24
- data/lib/pubid/identifier.rb +78 -1
- data/lib/pubid/idf/builder.rb +42 -0
- data/lib/pubid/idf/identifier.rb +1 -1
- data/lib/pubid/idf/parser.rb +1 -137
- data/lib/pubid/idf.rb +1 -2
- data/lib/pubid/iec/builder.rb +158 -50
- data/lib/pubid/iec/identifier.rb +1 -1
- data/lib/pubid/iec/parser.rb +3 -430
- data/lib/pubid/ieee/aiee/identifier.rb +2 -1
- data/lib/pubid/ieee/aiee.rb +0 -1
- data/lib/pubid/ieee/builder.rb +2 -2
- data/lib/pubid/ieee/identifiers/base.rb +1 -1
- data/lib/pubid/ieee/ire/identifier.rb +2 -1
- data/lib/pubid/ieee/ire.rb +0 -1
- data/lib/pubid/ieee/nesc.rb +0 -1
- data/lib/pubid/ieee/parser.rb +1 -1257
- data/lib/pubid/ietf/identifiers/base.rb +17 -1
- data/lib/pubid/ietf/parser.rb +2 -47
- data/lib/pubid/ietf/renderer.rb +17 -2
- data/lib/pubid/iho/CLAUDE.md +89 -0
- data/lib/pubid/iho/builder.rb +4 -1
- data/lib/pubid/iho/identifiers/base.rb +28 -2
- data/lib/pubid/iho/renderer.rb +8 -0
- data/lib/pubid/iho/urn_generator.rb +11 -1
- data/lib/pubid/iho/urn_parser.rb +21 -11
- data/lib/pubid/iho.rb +0 -1
- data/lib/pubid/isbn/identifier.rb +1 -1
- data/lib/pubid/isbn/parser.rb +2 -31
- data/lib/pubid/iso/builder.rb +1 -1
- data/lib/pubid/iso/identifiers/directives.rb +6 -3
- data/lib/pubid/iso/identifiers/guide.rb +6 -3
- data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +6 -3
- data/lib/pubid/iso/normalizer.rb +1 -1
- data/lib/pubid/iso/parser.rb +1 -539
- data/lib/pubid/iso/supplement_identifier.rb +6 -3
- data/lib/pubid/iso/utilities.rb +4 -5
- data/lib/pubid/iso.rb +1 -19
- data/lib/pubid/itu/builder.rb +36 -20
- data/lib/pubid/itu/identifiers/base.rb +15 -2
- data/lib/pubid/itu/parser.rb +1 -775
- data/lib/pubid/jcgm/builder.rb +35 -0
- data/lib/pubid/jcgm/parser.rb +1 -151
- data/lib/pubid/jcgm.rb +1 -2
- data/lib/pubid/jis/builder.rb +18 -29
- data/lib/pubid/jis/identifier.rb +1 -1
- data/lib/pubid/jis/parser.rb +1 -128
- data/lib/pubid/nist/builder.rb +5 -1
- data/lib/pubid/nist/caster.rb +13 -3
- data/lib/pubid/nist/identifiers/base.rb +37 -2
- data/lib/pubid/nist/identifiers/circular.rb +2 -2
- data/lib/pubid/nist/identifiers/circular_supplement.rb +2 -2
- data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +2 -2
- data/lib/pubid/nist/identifiers/crpl_report.rb +2 -2
- data/lib/pubid/nist/identifiers/handbook.rb +2 -2
- data/lib/pubid/nist/identifiers/internal_report.rb +2 -2
- data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +2 -2
- data/lib/pubid/nist/identifiers/monograph.rb +2 -2
- data/lib/pubid/nist/identifiers/report.rb +2 -2
- data/lib/pubid/nist/parser.rb +19 -775
- data/lib/pubid/nist/router.rb +4 -1
- data/lib/pubid/nist/supplement_identifier.rb +2 -2
- data/lib/pubid/oasis/parser.rb +2 -16
- data/lib/pubid/ogc/parser.rb +2 -26
- data/lib/pubid/oiml/identifiers/certification_system.rb +7 -0
- data/lib/pubid/oiml/identifiers/dual_published.rb +2 -2
- data/lib/pubid/oiml/parser.rb +1 -303
- data/lib/pubid/oiml.rb +1 -2
- data/lib/pubid/omg/identifier.rb +6 -1
- data/lib/pubid/omg/parser.rb +2 -76
- data/lib/pubid/parser.rb +5 -4
- data/lib/pubid/parsers/mr_string.rb +1 -1
- data/lib/pubid/plateau/parser.rb +1 -66
- data/lib/pubid/plateau.rb +1 -2
- data/lib/pubid/renderers/directives_renderer.rb +1 -1
- data/lib/pubid/renderers/iwa_renderer.rb +1 -1
- data/lib/pubid/renderers/publisher_stripper.rb +82 -0
- data/lib/pubid/renderers/supplement_renderer.rb +1 -1
- data/lib/pubid/renderers.rb +1 -0
- data/lib/pubid/sae/parser.rb +1 -48
- data/lib/pubid/tgpp/identifier.rb +1 -1
- data/lib/pubid/tgpp/parser.rb +2 -59
- data/lib/pubid/un/identifier.rb +1 -1
- data/lib/pubid/un/parser.rb +1 -18
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid/w3c/parser.rb +2 -27
- data/lib/pubid/xsf/identifier.rb +10 -6
- data/lib/pubid/xsf/parser.rb +3 -31
- data/lib/pubid/xsf/renderer.rb +2 -4
- data/lib/pubid.rb +8 -9
- metadata +6 -23
- data/lib/pubid/ieee/aiee/parser.rb +0 -130
- data/lib/pubid/ieee/ire/parser.rb +0 -109
- data/lib/pubid/ieee/nesc/parser.rb +0 -155
- data/lib/pubid/iho/parser.rb +0 -68
- data/lib/pubid/parser/common_parse_methods.rb +0 -13
- data/lib/pubid/parser/common_parse_rules.rb +0 -56
- data/lib/pubid/parser/grammar.rb +0 -96
data/lib/pubid/itu/builder.rb
CHANGED
|
@@ -18,6 +18,20 @@ module Pubid
|
|
|
18
18
|
# resolves to.
|
|
19
19
|
twin = parse_common_text_twin(data.delete(:common_text_twin))
|
|
20
20
|
|
|
21
|
+
# Check if this is a supplement identifier. This check comes BEFORE
|
|
22
|
+
# the annex/appendix branches because the bound map collects every
|
|
23
|
+
# capture occurrence by name across the tree: a supplement whose
|
|
24
|
+
# base is an annex ("... Annex B (1996) Cor. 3 (03/2001)") hoists the
|
|
25
|
+
# nested annex_number to the top level, and an annex-first dispatch
|
|
26
|
+
# would build the annex and drop the supplement. The nested
|
|
27
|
+
# annex/appendix data stays intact inside the raw :base subtree and
|
|
28
|
+
# is picked up by the recursive build below.
|
|
29
|
+
if data[:supplement_type]
|
|
30
|
+
supp = build_supplement(data)
|
|
31
|
+
supp.common_text_twin = twin if twin && supp
|
|
32
|
+
return supp
|
|
33
|
+
end
|
|
34
|
+
|
|
21
35
|
# Labelled annex of a Recommendation — "ITU-T A.23 Annex A (06/2014)".
|
|
22
36
|
# The annexed document is the :base subtree; :year/:month at this level
|
|
23
37
|
# are the annex's own date, not the base's.
|
|
@@ -60,13 +74,6 @@ module Pubid
|
|
|
60
74
|
)
|
|
61
75
|
end
|
|
62
76
|
|
|
63
|
-
# Check if this is a supplement identifier
|
|
64
|
-
if data[:supplement_type]
|
|
65
|
-
supp = build_supplement(data)
|
|
66
|
-
supp.common_text_twin = twin if twin && supp
|
|
67
|
-
return supp
|
|
68
|
-
end
|
|
69
|
-
|
|
70
77
|
# Handbook — "ITU-R 42.HDB"
|
|
71
78
|
if data[:handbook_marker]
|
|
72
79
|
return build_handbook(data)
|
|
@@ -318,21 +325,27 @@ module Pubid
|
|
|
318
325
|
|
|
319
326
|
private
|
|
320
327
|
|
|
321
|
-
# Build the additional designations of a combined recommendation from
|
|
322
|
-
# repeated
|
|
328
|
+
# Build the additional designations of a combined recommendation from
|
|
329
|
+
# the repeated raw subtrees (each `{ designation: { series:, d_number:,
|
|
330
|
+
# … } }`). The designation tail repeats the code-suffix shapes under
|
|
331
|
+
# d_* capture names (see grammars/itu.parg): a capture name occurring
|
|
332
|
+
# at two structural depths pairs into one top-level bound key, which
|
|
333
|
+
# would corrupt the primary's Code with the designation's tail, so the
|
|
334
|
+
# designation's tail captures are distinct and only ever read here,
|
|
335
|
+
# inside the raw subtree.
|
|
323
336
|
def build_designations(combined_data)
|
|
324
337
|
Array(combined_data).map do |element|
|
|
325
338
|
d = element[:designation] || element
|
|
326
339
|
Components::Designation.new(
|
|
327
340
|
series: Components::Series.new(series: d[:series].to_s),
|
|
328
341
|
code: Components::Code.new(
|
|
329
|
-
number: d[:
|
|
330
|
-
series_suffix: d[:
|
|
331
|
-
series_suffix_spaced: !d[:
|
|
332
|
-
subseries: d[:
|
|
333
|
-
parts: extract_parts(d[:
|
|
334
|
-
qualifier: d[:
|
|
335
|
-
qualifier_glued: !d[:
|
|
342
|
+
number: d[:d_number].to_s,
|
|
343
|
+
series_suffix: d[:d_series_suffix]&.to_s,
|
|
344
|
+
series_suffix_spaced: !d[:d_series_suffix_spaced].nil?,
|
|
345
|
+
subseries: d[:d_subseries]&.to_s,
|
|
346
|
+
parts: extract_parts(d[:d_parts], :d_part),
|
|
347
|
+
qualifier: d[:d_qualifier]&.to_s,
|
|
348
|
+
qualifier_glued: !d[:d_qualifier].nil? && d[:d_qualifier_spaced].nil?,
|
|
336
349
|
),
|
|
337
350
|
)
|
|
338
351
|
end
|
|
@@ -371,16 +384,19 @@ module Pubid
|
|
|
371
384
|
)
|
|
372
385
|
end
|
|
373
386
|
|
|
374
|
-
|
|
387
|
+
# +key+ names the part capture inside the wrapper: :part for the
|
|
388
|
+
# top-level `parts` array, :d_part for a combined designation's
|
|
389
|
+
# d_parts (see build_designations).
|
|
390
|
+
def extract_parts(parts_data, key = :part)
|
|
375
391
|
return [] unless parts_data
|
|
376
392
|
|
|
377
393
|
parts = []
|
|
378
394
|
if parts_data.is_a?(Array)
|
|
379
395
|
parts_data.each do |part_hash|
|
|
380
|
-
parts << part_hash[
|
|
396
|
+
parts << part_hash[key].to_s if part_hash[key]
|
|
381
397
|
end
|
|
382
|
-
elsif parts_data.is_a?(Hash) && parts_data[
|
|
383
|
-
parts << parts_data[
|
|
398
|
+
elsif parts_data.is_a?(Hash) && parts_data[key]
|
|
399
|
+
parts << parts_data[key].to_s
|
|
384
400
|
end
|
|
385
401
|
|
|
386
402
|
parts
|
|
@@ -15,7 +15,7 @@ module Pubid
|
|
|
15
15
|
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
parsed = Pubid::Parg::
|
|
18
|
+
parsed = Pubid::Parg::Model.bound(:itu, normalize_whitespace(identifier))
|
|
19
19
|
Builder.build(parsed)
|
|
20
20
|
end
|
|
21
21
|
|
|
@@ -209,7 +209,20 @@ module Pubid
|
|
|
209
209
|
result += " | #{common_text_twin}" if common_text_twin
|
|
210
210
|
# ITU composes its own string rather than going through `render`, so it
|
|
211
211
|
# never reaches the shared annotation hook. Apply it here.
|
|
212
|
-
annotate_plain_render(result, annotated: annotated
|
|
212
|
+
annotate_plain_render(result, annotated: annotated,
|
|
213
|
+
with_publisher: opts[:with_publisher])
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
# The publisher is welded to the sector (`ITU-T`), and the sector is part
|
|
217
|
+
# of the publisher, not of the designation: `with_publisher: false`
|
|
218
|
+
# drops the whole group (`ITU-T G.711` -> `G.711`), never just `ITU-`.
|
|
219
|
+
# A wrapper with no sector of its own (an annex or appendix) prints the
|
|
220
|
+
# sector of the document it wraps, so it asks `base`.
|
|
221
|
+
def publisher_prefixes
|
|
222
|
+
return ["#{publisher}-#{sector}"] if sector
|
|
223
|
+
return base.publisher_prefixes if base.is_a?(::Pubid::Identifier)
|
|
224
|
+
|
|
225
|
+
super
|
|
213
226
|
end
|
|
214
227
|
|
|
215
228
|
def render_base(**_opts)
|