pubid 2.0.0 → 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/aiee.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/calconnect.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/doi.json +1 -1
- data/data/parg/easc.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/gb.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 -29571
- data/data/parg/ietf.json +1 -1
- data/data/parg/iho.json +1 -0
- data/data/parg/ire.json +1 -1
- data/data/parg/isbn.json +1 -1
- data/data/parg/iso.json +1 -8510
- 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/nist.json +1 -9588
- data/data/parg/oasis.json +1 -1
- data/data/parg/ogc.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/sae.json +1 -1
- data/data/parg/tables/typed_stages.yaml +1 -0
- data/data/parg/tgpp.json +1 -1
- data/data/parg/un.json +1 -1
- data/data/parg/w3c.json +1 -1
- data/data/parg/xsf.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/identifier.rb +1 -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/identifier.rb +1 -1
- data/lib/pubid/doi/parser.rb +2 -37
- data/lib/pubid/easc/builder.rb +1 -1
- data/lib/pubid/easc/identifier.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 +7 -1
- 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_standard.rb +3 -1
- 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/identifier.rb +1 -1
- data/lib/pubid/oasis/parser.rb +2 -16
- data/lib/pubid/ogc/identifier.rb +1 -1
- 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/parg/artifact.rb +22 -3
- data/lib/pubid/parg/model.rb +98 -0
- data/lib/pubid/parg.rb +1 -0
- 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/identifiers/base.rb +1 -1
- 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/identifier.rb +1 -1
- data/lib/pubid/w3c/parser.rb +2 -27
- data/lib/pubid/xsf/identifier.rb +11 -7
- data/lib/pubid/xsf/parser.rb +3 -31
- data/lib/pubid/xsf/renderer.rb +2 -4
- data/lib/pubid.rb +8 -9
- metadata +15 -25
- 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
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Pubid
|
|
4
|
-
module Parser
|
|
5
|
-
module CommonParseRules
|
|
6
|
-
def self.included(base)
|
|
7
|
-
base.class_eval do
|
|
8
|
-
rule(:space) { str(" ") }
|
|
9
|
-
rule(:space?) { space.maybe }
|
|
10
|
-
|
|
11
|
-
rule(:digits) do
|
|
12
|
-
match('\d').repeat(1)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
rule(:year) do
|
|
16
|
-
match('\d').repeat(4, 4).as(:year)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
rule(:comma) { str(", ") }
|
|
20
|
-
rule(:comma?) { comma.maybe }
|
|
21
|
-
rule(:comma_space) { comma | space }
|
|
22
|
-
rule(:dash) { str("-") }
|
|
23
|
-
rule(:dot) { str(".") }
|
|
24
|
-
rule(:words_digits) { match('[\dA-Za-z]').repeat(1) }
|
|
25
|
-
rule(:words) { match("[A-Za-z]").repeat(1) }
|
|
26
|
-
rule(:words?) { words.maybe }
|
|
27
|
-
rule(:year_digits) do
|
|
28
|
-
(str("19") | str("20")) >> match('\d').repeat(2,
|
|
29
|
-
2) >> digits.absent?
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
rule(:month_digits) do
|
|
33
|
-
match('\d').repeat(2, 2)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
rule(:day_digits) do
|
|
37
|
-
match('\d').repeat(2, 2)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
rule(:originator) do
|
|
41
|
-
organization.as(:publisher) >>
|
|
42
|
-
(space? >> str("/") >> organization.as(:copublisher)).repeat
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
rule(:comma_month_year) do
|
|
46
|
-
comma >> words.as(:month) >> space >> year_digits.as(:year)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
rule(:year_month) do
|
|
50
|
-
year_digits >> dash >> month_digits
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
data/lib/pubid/parser/grammar.rb
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require "parslet"
|
|
4
|
-
|
|
5
|
-
module Pubid
|
|
6
|
-
module Parser
|
|
7
|
-
# The superclass of every flavor grammar.
|
|
8
|
-
#
|
|
9
|
-
# Its only job is to keep parslet out of pubid's public contract. Every
|
|
10
|
-
# grammar failure originates in `Parslet::Atoms::Base#parse`, which
|
|
11
|
-
# `Parslet::Parser` does not override, so one override here covers all 46
|
|
12
|
-
# grammars, both public entry points of every flavor, and the cross-flavor
|
|
13
|
-
# delegation routes (`Pubid::Iso.parse("ITU-T G.711")` runs ITU's grammar)
|
|
14
|
-
# — without touching the 131 `parse` methods.
|
|
15
|
-
#
|
|
16
|
-
# The name is `Grammar`, not `Base`, because {Pubid::Parsers::Base} already
|
|
17
|
-
# exists and means something unrelated (the MR-string parser).
|
|
18
|
-
#
|
|
19
|
-
# Known limit: a rule atom parsed directly, `Parser.new.<rule>.parse(str)`,
|
|
20
|
-
# bypasses this and raises a bare `Parslet::ParseFailed`. Nothing in the
|
|
21
|
-
# gem does that.
|
|
22
|
-
class Grammar < ::Parslet::Parser
|
|
23
|
-
# A trailing "(all parts)" marks the reference as the whole document.
|
|
24
|
-
# The flavor grammars that carry their own rule consume it inside
|
|
25
|
-
# parslet; this shared strip gives every other flavor the same read:
|
|
26
|
-
# the suffix never reaches the flavor grammar, and the parsed tree
|
|
27
|
-
# carries :all_parts for the builder to wrap (see Builder::Base).
|
|
28
|
-
ALL_PARTS_SUFFIX = "(all parts)".freeze
|
|
29
|
-
|
|
30
|
-
# @param io [String, IO]
|
|
31
|
-
# @param options [Hash] passed through to parslet
|
|
32
|
-
# @raise [Pubid::Errors::ParseError]
|
|
33
|
-
def parse(io, options = {})
|
|
34
|
-
if io.is_a?(String) && io.end_with?(ALL_PARTS_SUFFIX)
|
|
35
|
-
base = io.sub(/\s*\(all parts\)\s*\z/, "")
|
|
36
|
-
return mark_all_parts(super(base, options))
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
super
|
|
40
|
-
rescue ::Pubid::Errors::ParseError
|
|
41
|
-
# A nested grammar already wrapped it. Keep the inner flavor and input.
|
|
42
|
-
raise
|
|
43
|
-
rescue ::Parslet::ParseFailed => e
|
|
44
|
-
raise wrap_parse_failure(e, io)
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
private
|
|
48
|
-
|
|
49
|
-
# Carry the stripped suffix into the tree. Parslet tops are a Hash or
|
|
50
|
-
# an Array of Hashes; the marker joins either shape, and every builder
|
|
51
|
-
# (Builder::Base and the standalone ones) routes it to #to_all_parts.
|
|
52
|
-
def mark_all_parts(tree)
|
|
53
|
-
case tree
|
|
54
|
-
when Hash then tree.merge(all_parts: true)
|
|
55
|
-
when Array then tree.map { |t| t.merge(all_parts: true) }
|
|
56
|
-
else tree
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
# @param error [Parslet::ParseFailed]
|
|
61
|
-
# @param io [String, IO] what was handed to {#parse}
|
|
62
|
-
# @return [Pubid::Errors::ParseError]
|
|
63
|
-
def wrap_parse_failure(error, io)
|
|
64
|
-
::Pubid::Errors::ParseError.new(
|
|
65
|
-
error.message,
|
|
66
|
-
error.parse_failure_cause,
|
|
67
|
-
input: io.is_a?(String) ? io : nil,
|
|
68
|
-
flavor: pubid_flavor_name,
|
|
69
|
-
)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
# "Pubid::Iso::Parser" -> "iso"; "Pubid::Ieee::Aiee::Parser" -> "ieee".
|
|
73
|
-
#
|
|
74
|
-
# Resolved through {Pubid::Registry} rather than taken from the module
|
|
75
|
-
# name, because the two disagree: `Pubid::Tgpp` registers as `"3gpp"`,
|
|
76
|
-
# and `Pubid::CenCenelec` registers twice (`"cen_cenelec"` first, then
|
|
77
|
-
# the `"cen"` alias). Reporting the registered name is what lets a caller
|
|
78
|
-
# feed `error.flavor` straight back to `Pubid::Registry.get`.
|
|
79
|
-
# @return [String, nil]
|
|
80
|
-
def pubid_flavor_name
|
|
81
|
-
parts = self.class.name.to_s.split("::")
|
|
82
|
-
return nil unless parts[0] == "Pubid" && parts.length > 1
|
|
83
|
-
|
|
84
|
-
registered_flavor_name(parts[1]) || parts[1].downcase
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
# @param module_name [String] e.g. "Tgpp"
|
|
88
|
-
# @return [String, nil] the registered name, nil if not registered
|
|
89
|
-
def registered_flavor_name(module_name)
|
|
90
|
-
::Pubid::Registry.canonical_name(::Pubid.const_get(module_name))
|
|
91
|
-
rescue ::NameError
|
|
92
|
-
nil
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
end
|