pubid 2.0.1 → 2.0.3
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/ieee/update_codes.yaml +2 -2
- data/data/parg/adobe.json +1 -1
- data/data/parg/aiee.json +1 -1
- data/data/parg/aiee.parg +99 -9
- 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/iala.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/ieee.json +1 -1
- data/data/parg/iho.json +1 -0
- data/data/parg/ire.json +1 -1
- data/data/parg/ire.parg +51 -12
- data/data/parg/isbn.json +1 -1
- data/data/parg/iso.json +1 -1
- data/data/parg/iso.parg +751 -0
- data/data/parg/itu.json +1 -1
- data/data/parg/jcgm.json +1 -1
- data/data/parg/jis.json +1 -1
- data/data/parg/nesc.json +1 -1
- data/data/parg/nesc.parg +97 -12
- data/data/parg/nist.json +1 -1
- data/data/parg/oiml.json +1 -1
- data/data/parg/omg.json +1 -1
- data/data/parg/parg.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/builder.rb +48 -39
- data/lib/pubid/iala/identifier.rb +1 -1
- 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/CLAUDE.md +2 -0
- data/lib/pubid/ieee/aiee/identifier.rb +2 -1
- data/lib/pubid/ieee/aiee.rb +0 -1
- data/lib/pubid/ieee/builder.rb +177 -30
- data/lib/pubid/ieee/components/code.rb +46 -7
- data/lib/pubid/ieee/identifiers/base.rb +5 -2
- data/lib/pubid/ieee/identifiers/joint_development.rb +7 -3
- data/lib/pubid/ieee/ire/identifier.rb +2 -1
- data/lib/pubid/ieee/ire.rb +0 -1
- data/lib/pubid/ieee/nesc/builder.rb +1 -1
- data/lib/pubid/ieee/nesc.rb +0 -1
- data/lib/pubid/ieee/parser.rb +1 -1257
- data/lib/pubid/ieee/project_renderer.rb +5 -1
- data/lib/pubid/ieee/renderer.rb +4 -2
- data/lib/pubid/ieee/urn_generator.rb +4 -1
- 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 +98 -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 +14 -1
- data/lib/pubid/iho/urn_parser.rb +45 -32
- 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/CLAUDE.md +66 -0
- data/lib/pubid/iso/builder.rb +229 -15
- data/lib/pubid/iso/identifier.rb +22 -12
- 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 +5 -4
- data/lib/pubid/iso/parser.rb +1 -539
- data/lib/pubid/iso/supplement_identifier.rb +6 -3
- data/lib/pubid/iso/urn_parser.rb +13 -8
- 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/CLAUDE.md +36 -0
- data/lib/pubid/jis/builder.rb +30 -41
- data/lib/pubid/jis/identifier.rb +12 -2
- data/lib/pubid/jis/identifiers/welding_engineering_standard.rb +35 -0
- data/lib/pubid/jis/identifiers.rb +2 -0
- data/lib/pubid/jis/parser.rb +1 -128
- data/lib/pubid/jis/renderer.rb +1 -1
- data/lib/pubid/jis/supplement_identifier.rb +5 -5
- data/lib/pubid/jis/urn_parser.rb +2 -1
- data/lib/pubid/jis.rb +3 -2
- 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 +9 -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/nist/caster.rb
CHANGED
|
@@ -128,7 +128,16 @@ module Pubid
|
|
|
128
128
|
id: value[:owmwp_year])
|
|
129
129
|
{ first_number: Components::Code.new(value: number_part), edition: edition_part }
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
# The polymorphic number wrappers split per branch in the grammar
|
|
132
|
+
# (asme's designator/designator_code pattern): first_number /
|
|
133
|
+
# second_number (string) arrive over the bare branches,
|
|
134
|
+
# first_number_composite / second_number_composite (raw) over the
|
|
135
|
+
# branches carrying inner captures. The composite keys map onto
|
|
136
|
+
# the same dispatch.
|
|
137
|
+
when :first_number, :first_number_composite, :second_number,
|
|
138
|
+
:second_number_composite
|
|
139
|
+
type = :first_number if type == :first_number_composite
|
|
140
|
+
type = :second_number if type == :second_number_composite
|
|
132
141
|
return nil if value.nil? || value.to_s.strip.empty?
|
|
133
142
|
|
|
134
143
|
# NEW: Handle OWMWP date-based number (nested hash structure)
|
|
@@ -1039,8 +1048,9 @@ module Pubid
|
|
|
1039
1048
|
|
|
1040
1049
|
when :edition_month, :edition_year, :edition_day, :edition_has_rev
|
|
1041
1050
|
# These work together: edition_month + edition_year -> single edition ID
|
|
1042
|
-
# Skip processing if this is edition_month
|
|
1043
|
-
|
|
1051
|
+
# Skip processing if this is edition_month or edition_day alone
|
|
1052
|
+
# (both are consumed by the edition_year branch via parsed_hash)
|
|
1053
|
+
return nil if type == :edition_month || type == :edition_day
|
|
1044
1054
|
|
|
1045
1055
|
# Process edition_year, combining with edition_month if present
|
|
1046
1056
|
return nil if value.nil? || value.to_s.strip.empty?
|
|
@@ -346,7 +346,7 @@ module Pubid
|
|
|
346
346
|
# @param format [:full, :long, :abbreviated, :short, :mr] output format
|
|
347
347
|
def to_s(format = nil)
|
|
348
348
|
# Handle both keyword argument (hash) and positional argument (symbol/string)
|
|
349
|
-
|
|
349
|
+
flags = plain_render_flags(format)
|
|
350
350
|
format = format[:format] if format.is_a?(Hash)
|
|
351
351
|
|
|
352
352
|
# Default to parsed_format if available (preserves input format on round-trip)
|
|
@@ -358,7 +358,42 @@ module Pubid
|
|
|
358
358
|
# NIST's `to_s` takes a POSITIONAL format and its `render` override
|
|
359
359
|
# builds no rendering context, so neither the flag nor the context
|
|
360
360
|
# reaches the shared hook. Apply the annotation fallback here.
|
|
361
|
-
annotate_plain_render(rendered,
|
|
361
|
+
annotate_plain_render(rendered, **flags)
|
|
362
|
+
end
|
|
363
|
+
|
|
364
|
+
# The keyword flags a positional-format `to_s` hands to
|
|
365
|
+
# `annotate_plain_render`. Ruby fills the positional `format` with a
|
|
366
|
+
# Hash when a caller passes keywords, so they arrive here.
|
|
367
|
+
#
|
|
368
|
+
# `with_publisher: false` cuts the leading `NIST`/`NBS` from the
|
|
369
|
+
# finished string ({#publisher_prefixes}), which covers every place a
|
|
370
|
+
# NIST style prints a publisher — the compound `NBS …` series, the
|
|
371
|
+
# `default_publisher` subclasses and a supplement's base — in one
|
|
372
|
+
# step.
|
|
373
|
+
def plain_render_flags(format)
|
|
374
|
+
return {} unless format.is_a?(Hash)
|
|
375
|
+
|
|
376
|
+
format.slice(:annotated, :with_publisher)
|
|
377
|
+
end
|
|
378
|
+
private :plain_render_flags
|
|
379
|
+
|
|
380
|
+
# The MR style (`NIST.SP.800-53`) is a fixed machine form and ignores
|
|
381
|
+
# `with_publisher:`. The test reads the OUTPUT, not the requested
|
|
382
|
+
# format: several subclasses pick their style themselves (an id parsed
|
|
383
|
+
# from an MR string still renders the short style), so the format a
|
|
384
|
+
# caller asked for does not say which style came back.
|
|
385
|
+
def apply_with_publisher(result, format, with_publisher)
|
|
386
|
+
mr_style = result.is_a?(String) && result.match?(/\A(?:NIST|NBS)\./)
|
|
387
|
+
return result if mr_style
|
|
388
|
+
|
|
389
|
+
super
|
|
390
|
+
end
|
|
391
|
+
private :apply_with_publisher
|
|
392
|
+
|
|
393
|
+
# Every leading publisher token a NIST short style can print: the
|
|
394
|
+
# parsed publisher, and the two `default_publisher` values.
|
|
395
|
+
def publisher_prefixes
|
|
396
|
+
[publisher.to_s, "NIST", "NBS"]
|
|
362
397
|
end
|
|
363
398
|
|
|
364
399
|
# NIST has its own defined MR format (to_mr_style) used by relaton-nist
|
|
@@ -57,7 +57,7 @@ module Pubid
|
|
|
57
57
|
# string: with the flag set, `super` returns a string ending in
|
|
58
58
|
# "</span>" and the anchor no longer matches. Render plain, rewrite,
|
|
59
59
|
# then annotate.
|
|
60
|
-
|
|
60
|
+
flags = plain_render_flags(format)
|
|
61
61
|
format = format[:format] if format.is_a?(Hash)
|
|
62
62
|
|
|
63
63
|
result = super(format)
|
|
@@ -72,7 +72,7 @@ module Pubid
|
|
|
72
72
|
"e#{edition.id || '?'}.#{edition.additional_text}")
|
|
73
73
|
end
|
|
74
74
|
|
|
75
|
-
annotate_plain_render(result,
|
|
75
|
+
annotate_plain_render(result, **flags)
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
end
|
|
@@ -41,7 +41,7 @@ module Pubid
|
|
|
41
41
|
# Hash. Normalise it away before `super`, so the annotation is applied
|
|
42
42
|
# once, here, and covers the date-range branch too — that branch
|
|
43
43
|
# returns a hand-composed string and never reached `super` at all.
|
|
44
|
-
|
|
44
|
+
flags = plain_render_flags(format)
|
|
45
45
|
format = format[:format] || :short if format.is_a?(Hash)
|
|
46
46
|
|
|
47
47
|
# Handle date range supplements (no base identifier)
|
|
@@ -52,7 +52,7 @@ module Pubid
|
|
|
52
52
|
super(format)
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
annotate_plain_render(result,
|
|
55
|
+
annotate_plain_render(result, **flags)
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
end
|
|
@@ -45,7 +45,7 @@ module Pubid
|
|
|
45
45
|
# a Hash — Ruby converts keywords for a method that accepts none.
|
|
46
46
|
# The same idiom `Identifiers::Base#to_s` uses. This renderer
|
|
47
47
|
# ignores `format`, so only the flag is read.
|
|
48
|
-
|
|
48
|
+
flags = plain_render_flags(format)
|
|
49
49
|
|
|
50
50
|
result = "#{publisher} #{series}"
|
|
51
51
|
|
|
@@ -61,7 +61,7 @@ module Pubid
|
|
|
61
61
|
result += " #{vol_str}n#{issue_number.number}"
|
|
62
62
|
end
|
|
63
63
|
|
|
64
|
-
annotate_plain_render(result,
|
|
64
|
+
annotate_plain_render(result, **flags)
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
end
|
|
@@ -91,7 +91,7 @@ module Pubid
|
|
|
91
91
|
# a Hash — Ruby converts keywords for a method that accepts none.
|
|
92
92
|
# The same idiom `Identifiers::Base#to_s` uses. This renderer
|
|
93
93
|
# ignores `format`, so only the flag is read.
|
|
94
|
-
|
|
94
|
+
flags = plain_render_flags(format)
|
|
95
95
|
|
|
96
96
|
# Use actual series attribute if it contains subseries (e.g., "CRPL-F-B")
|
|
97
97
|
# Otherwise use default series_code ("CRPL")
|
|
@@ -129,7 +129,7 @@ module Pubid
|
|
|
129
129
|
result += append_short_components
|
|
130
130
|
|
|
131
131
|
result += range_notation if range_notation
|
|
132
|
-
annotate_plain_render(result,
|
|
132
|
+
annotate_plain_render(result, **flags)
|
|
133
133
|
end
|
|
134
134
|
end
|
|
135
135
|
end
|
|
@@ -38,7 +38,7 @@ module Pubid
|
|
|
38
38
|
# string: with the flag set, `super` returns a string ending in
|
|
39
39
|
# "</span>" and the anchor no longer matches. Render plain, rewrite,
|
|
40
40
|
# then annotate.
|
|
41
|
-
|
|
41
|
+
flags = plain_render_flags(format)
|
|
42
42
|
format = format[:format] if format.is_a?(Hash)
|
|
43
43
|
|
|
44
44
|
# Use the base to_s method first
|
|
@@ -50,7 +50,7 @@ module Pubid
|
|
|
50
50
|
"#{edition.type}#{edition.id}-#{edition.additional_text}")
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
annotate_plain_render(result,
|
|
53
|
+
annotate_plain_render(result, **flags)
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
end
|
|
@@ -40,7 +40,7 @@ module Pubid
|
|
|
40
40
|
# `super` is handed a SYMBOL below, so the base's annotation hook
|
|
41
41
|
# never sees the flag. Capture it here and wrap what comes back —
|
|
42
42
|
# exactly once, because the base returned plain text.
|
|
43
|
-
|
|
43
|
+
flags = plain_render_flags(format)
|
|
44
44
|
|
|
45
45
|
# Handle both keyword argument (hash) and positional argument (symbol/string)
|
|
46
46
|
effective_format = if format.is_a?(Hash)
|
|
@@ -56,7 +56,7 @@ module Pubid
|
|
|
56
56
|
super(effective_format)
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
annotate_plain_render(rendered,
|
|
59
|
+
annotate_plain_render(rendered, **flags)
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -40,7 +40,7 @@ module Pubid
|
|
|
40
40
|
# Hash — Ruby converts keywords for a method that accepts none. The same
|
|
41
41
|
# idiom `Identifiers::Base#to_s` uses.
|
|
42
42
|
def to_s(format = :short)
|
|
43
|
-
|
|
43
|
+
flags = plain_render_flags(format)
|
|
44
44
|
format = format[:format] || :short if format.is_a?(Hash)
|
|
45
45
|
|
|
46
46
|
rendered = case format
|
|
@@ -50,7 +50,7 @@ module Pubid
|
|
|
50
50
|
to_short_style
|
|
51
51
|
end
|
|
52
52
|
|
|
53
|
-
annotate_plain_render(rendered,
|
|
53
|
+
annotate_plain_render(rendered, **flags)
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
public
|
|
@@ -38,7 +38,7 @@ module Pubid
|
|
|
38
38
|
# `super` is handed a SYMBOL below, so the base's annotation hook
|
|
39
39
|
# never sees the flag. Capture it here and wrap what comes back —
|
|
40
40
|
# exactly once, because the base returned plain text.
|
|
41
|
-
|
|
41
|
+
flags = plain_render_flags(format)
|
|
42
42
|
|
|
43
43
|
# Handle both keyword argument (hash) and positional argument (symbol/string)
|
|
44
44
|
effective_format = if format.is_a?(Hash)
|
|
@@ -56,7 +56,7 @@ module Pubid
|
|
|
56
56
|
super(effective_format)
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
annotate_plain_render(rendered,
|
|
59
|
+
annotate_plain_render(rendered, **flags)
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
private
|
|
@@ -43,7 +43,7 @@ module Pubid
|
|
|
43
43
|
# Hash — Ruby converts keywords for a method that accepts none. The same
|
|
44
44
|
# idiom `Identifiers::Base#to_s` uses.
|
|
45
45
|
def to_s(format = :short)
|
|
46
|
-
|
|
46
|
+
flags = plain_render_flags(format)
|
|
47
47
|
format = format[:format] || :short if format.is_a?(Hash)
|
|
48
48
|
|
|
49
49
|
rendered = case format
|
|
@@ -53,7 +53,7 @@ module Pubid
|
|
|
53
53
|
to_short_style
|
|
54
54
|
end
|
|
55
55
|
|
|
56
|
-
annotate_plain_render(rendered,
|
|
56
|
+
annotate_plain_render(rendered, **flags)
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
private
|