pubid 2.0.0.pre.alpha.13 → 2.0.0.pre.alpha.15
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 -0
- data/data/parg/aiee.parg +37 -0
- data/data/parg/amca.json +1 -0
- data/data/parg/ansi.json +1 -0
- data/data/parg/api.json +1 -0
- data/data/parg/ashrae.json +1 -0
- data/data/parg/asme.json +1 -0
- data/data/parg/astm.json +1 -0
- data/data/parg/bipm.json +1 -0
- data/data/parg/bsi.json +1 -0
- data/data/parg/calconnect.json +1 -0
- data/data/parg/ccsds.json +1 -0
- data/data/parg/cen_cenelec.json +1 -0
- data/data/parg/cen_cenelec.parg +42 -0
- data/data/parg/cie.json +1 -0
- data/data/parg/csa.json +1 -0
- data/data/parg/doi.json +1 -0
- data/data/parg/easc.json +1 -0
- data/data/parg/ecma.json +1 -0
- data/data/parg/etsi.json +1 -0
- data/data/parg/evs.json +1 -0
- data/data/parg/gb.json +1 -0
- data/data/parg/gost.json +1 -0
- data/data/parg/iala.json +1 -0
- data/data/parg/iana.json +1 -0
- data/data/parg/idf.parg +39 -0
- data/data/parg/iec.json +1 -0
- data/data/parg/ieee.json +1 -0
- data/data/parg/ietf.json +1 -0
- data/data/parg/ire.parg +39 -0
- data/data/parg/isbn.json +1 -0
- data/data/parg/iso.json +1 -0
- data/data/parg/itu.json +1 -0
- data/data/parg/jcgm.json +1 -0
- data/data/parg/jis.json +1 -0
- data/data/parg/nesc.parg +38 -0
- data/data/parg/nist.json +1 -0
- data/data/parg/oasis.json +1 -0
- data/data/parg/ogc.json +1 -0
- data/data/parg/oiml.json +1 -0
- data/data/parg/omg.json +1 -0
- data/data/parg/plateau.json +1 -0
- data/data/parg/sae.json +1 -0
- data/data/parg/tables/bipm_groups.yaml +14 -0
- data/data/parg/tables/bipm_type_codes.yaml +5 -0
- data/data/parg/tables/bipm_type_names_en.yaml +6 -0
- data/data/parg/tables/bipm_type_names_fr.yaml +6 -0
- data/data/parg/tables/directives_supplements_typed_stages.yaml +3 -0
- data/data/parg/tables/directives_typed_stages.yaml +5 -0
- data/data/parg/tables/idf_typed_stages.yaml +27 -0
- data/data/parg/tables/idf_typed_stages_supplements.yaml +2 -0
- data/data/parg/tables/iec_typed_stages.yaml +130 -0
- data/data/parg/tables/iso_publishers.yaml +4 -0
- data/data/parg/tables/organizations.yaml +12 -0
- data/data/parg/tables/tc_types.yaml +42 -0
- data/data/parg/tables/typed_stages.yaml +114 -0
- data/data/parg/tables/typed_stages_supplements.yaml +64 -0
- data/data/parg/tables/wg_types.yaml +21 -0
- data/data/parg/tgpp.json +1 -0
- data/data/parg/un.json +1 -0
- data/data/parg/w3c.json +1 -0
- data/data/parg/xsf.json +1 -0
- data/lib/pubid/adobe/identifier.rb +11 -1
- data/lib/pubid/amca/identifiers/base.rb +1 -1
- data/lib/pubid/ansi/identifier.rb +1 -1
- data/lib/pubid/api/identifier.rb +1 -1
- data/lib/pubid/api/parser.rb +8 -4
- data/lib/pubid/ashrae/identifiers/base.rb +10 -1
- data/lib/pubid/ashrae/parser.rb +18 -11
- data/lib/pubid/asme/identifier.rb +1 -1
- data/lib/pubid/astm/identifier.rb +1 -1
- data/lib/pubid/bipm/identifier.rb +1 -1
- data/lib/pubid/bsi/single_identifier.rb +1 -3
- data/lib/pubid/calconnect/identifier.rb +1 -1
- data/lib/pubid/ccsds/identifier.rb +1 -1
- data/lib/pubid/cen_cenelec/identifier.rb +2 -1
- data/lib/pubid/cen_cenelec/parser.rb +9 -2
- data/lib/pubid/cie/identifier.rb +1 -1
- data/lib/pubid/cie/parser.rb +9 -2
- data/lib/pubid/conformance/checks.rb +1 -1
- data/lib/pubid/csa/identifier.rb +6 -2
- data/lib/pubid/csa/parser.rb +25 -8
- data/lib/pubid/doi/identifier.rb +1 -1
- data/lib/pubid/easc/identifier.rb +10 -1
- data/lib/pubid/ecma/identifier.rb +1 -1
- data/lib/pubid/etsi/identifiers/base.rb +1 -1
- data/lib/pubid/evs.rb +1 -1
- data/lib/pubid/gb/identifier.rb +1 -1
- data/lib/pubid/gost/identifier.rb +11 -1
- data/lib/pubid/gost/parser.rb +8 -1
- data/lib/pubid/iala/identifier.rb +10 -1
- data/lib/pubid/iana/identifier.rb +1 -1
- data/lib/pubid/idf/builder.rb +5 -0
- data/lib/pubid/iec/identifier.rb +1 -1
- data/lib/pubid/iec/parser.rb +9 -4
- data/lib/pubid/ieee/builder.rb +61 -23
- data/lib/pubid/ieee/identifiers/base.rb +1 -1
- data/lib/pubid/ieee/identifiers/joint_development.rb +55 -19
- data/lib/pubid/ieee/parser.rb +25 -11
- data/lib/pubid/ieee/renderer.rb +5 -3
- data/lib/pubid/ietf/identifiers/base.rb +1 -1
- data/lib/pubid/isbn/identifier.rb +1 -1
- data/lib/pubid/iso/identifier.rb +4 -1
- data/lib/pubid/iso/normalizer.rb +4 -1
- data/lib/pubid/itu/CLAUDE.md +46 -0
- data/lib/pubid/itu/builder.rb +24 -4
- data/lib/pubid/itu/identifiers/base.rb +11 -18
- data/lib/pubid/itu/identifiers/radio_regulations.rb +27 -0
- data/lib/pubid/itu/identifiers/special_publication.rb +48 -14
- data/lib/pubid/itu/identifiers/standard_serialization.rb +2 -0
- data/lib/pubid/itu/identifiers.rb +1 -0
- data/lib/pubid/itu/parser.rb +108 -22
- data/lib/pubid/itu/urn_generator.rb +9 -2
- data/lib/pubid/jcgm.rb +1 -1
- data/lib/pubid/jis/identifier.rb +1 -1
- data/lib/pubid/nist/builder.rb +1 -0
- data/lib/pubid/nist/identifiers/base.rb +15 -4
- data/lib/pubid/nist/parser.rb +9 -0
- data/lib/pubid/nist/urn_parser.rb +10 -1
- data/lib/pubid/oasis/identifier.rb +1 -1
- data/lib/pubid/ogc/identifier.rb +1 -1
- data/lib/pubid/oiml.rb +1 -1
- data/lib/pubid/omg/identifier.rb +1 -1
- data/lib/pubid/parg/artifact.rb +46 -0
- data/lib/pubid/parg/backend.rb +92 -0
- data/lib/pubid/parg.rb +8 -0
- data/lib/pubid/pg.rb +8 -0
- data/lib/pubid/plateau.rb +1 -2
- data/lib/pubid/sae/identifiers/base.rb +1 -1
- data/lib/pubid/tgpp/identifier.rb +1 -1
- data/lib/pubid/un/identifier.rb +1 -1
- data/lib/pubid/version.rb +1 -1
- data/lib/pubid/w3c/identifier.rb +1 -1
- data/lib/pubid/xsf/identifier.rb +1 -1
- data/lib/pubid.rb +1 -0
- metadata +83 -2
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
- abbr: "TRF"
|
|
2
|
+
- abbr: "PWI Amd"
|
|
3
|
+
- abbr: "NP Amd"
|
|
4
|
+
- abbr: "ANW Amd"
|
|
5
|
+
- abbr: "WD Amd"
|
|
6
|
+
- abbr: "CDAM"
|
|
7
|
+
- abbr: "DAM"
|
|
8
|
+
- abbr: "FDAM"
|
|
9
|
+
- abbr: "PRF Amd"
|
|
10
|
+
- abbr: "Amd"
|
|
11
|
+
- abbr: "AMD"
|
|
12
|
+
- abbr: "PWI Cor"
|
|
13
|
+
- abbr: "NP Cor"
|
|
14
|
+
- abbr: "ANW Cor"
|
|
15
|
+
- abbr: "WDCor"
|
|
16
|
+
- abbr: "CDCor"
|
|
17
|
+
- abbr: "DCOR"
|
|
18
|
+
- abbr: "FDCOR"
|
|
19
|
+
- abbr: "PRF Cor"
|
|
20
|
+
- abbr: "Cor"
|
|
21
|
+
- abbr: "COR"
|
|
22
|
+
- abbr: "CS"
|
|
23
|
+
- abbr: "CA"
|
|
24
|
+
- abbr: "PWI Guide"
|
|
25
|
+
- abbr: "NP Guide"
|
|
26
|
+
- abbr: "ANW Guide"
|
|
27
|
+
- abbr: "WD Guide"
|
|
28
|
+
- abbr: "CD Guide"
|
|
29
|
+
- abbr: "DGuide"
|
|
30
|
+
- abbr: "FDGuide"
|
|
31
|
+
- abbr: "PRF Guide"
|
|
32
|
+
- abbr: "GUIDE"
|
|
33
|
+
- abbr: "Guide"
|
|
34
|
+
- abbr: "PWI"
|
|
35
|
+
- abbr: "NWIP"
|
|
36
|
+
- abbr: "BWG"
|
|
37
|
+
- abbr: "AWIN"
|
|
38
|
+
- abbr: "AMW"
|
|
39
|
+
- abbr: "NP"
|
|
40
|
+
- abbr: "PNW"
|
|
41
|
+
- abbr: "ANW"
|
|
42
|
+
- abbr: "WD"
|
|
43
|
+
- abbr: "CD"
|
|
44
|
+
- abbr: "2CD"
|
|
45
|
+
- abbr: "3CD"
|
|
46
|
+
- abbr: "4CD"
|
|
47
|
+
- abbr: "5CD"
|
|
48
|
+
- abbr: "6CD"
|
|
49
|
+
- abbr: "7CD"
|
|
50
|
+
- abbr: "8CD"
|
|
51
|
+
- abbr: "9CD"
|
|
52
|
+
- abbr: "ACD"
|
|
53
|
+
- abbr: "A2CD"
|
|
54
|
+
- abbr: "A3CD"
|
|
55
|
+
- abbr: "A4CD"
|
|
56
|
+
- abbr: "A5CD"
|
|
57
|
+
- abbr: "A6CD"
|
|
58
|
+
- abbr: "A7CD"
|
|
59
|
+
- abbr: "A8CD"
|
|
60
|
+
- abbr: "A9CD"
|
|
61
|
+
- abbr: "CDM"
|
|
62
|
+
- abbr: "CDV"
|
|
63
|
+
- abbr: "ACDV"
|
|
64
|
+
- abbr: "CCDV"
|
|
65
|
+
- abbr: "CDVM"
|
|
66
|
+
- abbr: "NCDV"
|
|
67
|
+
- abbr: "FDIS"
|
|
68
|
+
- abbr: "PRF"
|
|
69
|
+
- abbr: "NFDIS"
|
|
70
|
+
- abbr: "NADIS"
|
|
71
|
+
- abbr: "RDISH"
|
|
72
|
+
- abbr: "RFDIS"
|
|
73
|
+
- abbr: "CFDIS"
|
|
74
|
+
- abbr: "BPUB"
|
|
75
|
+
- abbr: "PPUB"
|
|
76
|
+
- abbr: "APUB"
|
|
77
|
+
- abbr: "WPUB"
|
|
78
|
+
- abbr: "DELPUB"
|
|
79
|
+
- abbr: "RR"
|
|
80
|
+
- abbr: "CAN"
|
|
81
|
+
- abbr: "PWI ISH"
|
|
82
|
+
- abbr: "NP ISH"
|
|
83
|
+
- abbr: "ANW ISH"
|
|
84
|
+
- abbr: "WD ISH"
|
|
85
|
+
- abbr: "CDISH"
|
|
86
|
+
- abbr: "DISH"
|
|
87
|
+
- abbr: "ISH"
|
|
88
|
+
- abbr: "OD"
|
|
89
|
+
- abbr: "PWI PAS"
|
|
90
|
+
- abbr: "NP PAS"
|
|
91
|
+
- abbr: "ANW PAS"
|
|
92
|
+
- abbr: "WD PAS"
|
|
93
|
+
- abbr: "CDPAS"
|
|
94
|
+
- abbr: "DPAS"
|
|
95
|
+
- abbr: "PAS"
|
|
96
|
+
- abbr: "Trend Report"
|
|
97
|
+
- abbr: "PWI TR"
|
|
98
|
+
- abbr: "NP TR"
|
|
99
|
+
- abbr: "ANW TR"
|
|
100
|
+
- abbr: "WD TR"
|
|
101
|
+
- abbr: "CD TR"
|
|
102
|
+
- abbr: "DTR"
|
|
103
|
+
- abbr: "ADTR"
|
|
104
|
+
- abbr: "CDTR"
|
|
105
|
+
- abbr: "DTRM"
|
|
106
|
+
- abbr: "NDTR"
|
|
107
|
+
- abbr: "DTSM"
|
|
108
|
+
- abbr: "TR"
|
|
109
|
+
- abbr: "SRD"
|
|
110
|
+
- abbr: "Technology Report"
|
|
111
|
+
- abbr: "PWI TS"
|
|
112
|
+
- abbr: "NP TS"
|
|
113
|
+
- abbr: "ANW TS"
|
|
114
|
+
- abbr: "WD TS"
|
|
115
|
+
- abbr: "CD TS"
|
|
116
|
+
- abbr: "DTS"
|
|
117
|
+
- abbr: "ADTS"
|
|
118
|
+
- abbr: "CDTS"
|
|
119
|
+
- abbr: "NDTS"
|
|
120
|
+
- abbr: "TS"
|
|
121
|
+
- abbr: "White Paper"
|
|
122
|
+
- abbr: "PWI Frag"
|
|
123
|
+
- abbr: "NP Frag"
|
|
124
|
+
- abbr: "ANW Frag"
|
|
125
|
+
- abbr: "WD Frag"
|
|
126
|
+
- abbr: "CDFRAG"
|
|
127
|
+
- abbr: "DFRAG"
|
|
128
|
+
- abbr: "FDFRAG"
|
|
129
|
+
- abbr: "PRF Frag"
|
|
130
|
+
- abbr: "FRAG"
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
- name: "TC"
|
|
2
|
+
- name: "JTC"
|
|
3
|
+
- name: "PC"
|
|
4
|
+
- name: "IT"
|
|
5
|
+
- name: "CAB"
|
|
6
|
+
- name: "CASCO"
|
|
7
|
+
- name: "COPOLCO"
|
|
8
|
+
- name: "COUNCIL"
|
|
9
|
+
- name: "CPSG"
|
|
10
|
+
- name: "CS"
|
|
11
|
+
- name: "DEVCO"
|
|
12
|
+
- name: "GA"
|
|
13
|
+
- name: "GAAB"
|
|
14
|
+
- name: "INFCO"
|
|
15
|
+
- name: "ITN"
|
|
16
|
+
- name: "ISOlutions"
|
|
17
|
+
- name: "REMCO"
|
|
18
|
+
- name: "TMB"
|
|
19
|
+
- name: "TMBG"
|
|
20
|
+
- name: "WMO"
|
|
21
|
+
- name: "DMT"
|
|
22
|
+
- name: "JCG"
|
|
23
|
+
- name: "SGPM"
|
|
24
|
+
- name: "ATMG"
|
|
25
|
+
- name: "CCCC"
|
|
26
|
+
- name: "CCCC-TG"
|
|
27
|
+
- name: "JDMT"
|
|
28
|
+
- name: "JSAG"
|
|
29
|
+
- name: "JSCTF-TF"
|
|
30
|
+
- name: "JTCG"
|
|
31
|
+
- name: "JTCG-TF"
|
|
32
|
+
- name: "SAG_Acc"
|
|
33
|
+
- name: "SAG_CRMI"
|
|
34
|
+
- name: "SAG_CRMI_CG"
|
|
35
|
+
- name: "SAG_ESG"
|
|
36
|
+
- name: "SAG_ESG_CG"
|
|
37
|
+
- name: "SAG_MRS"
|
|
38
|
+
- name: "SAG_SF"
|
|
39
|
+
- name: "SAG_SF_CG"
|
|
40
|
+
- name: "SMCC"
|
|
41
|
+
- name: "STMG"
|
|
42
|
+
- name: "MENA_STAR"
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
- abbr: "PWI TS"
|
|
2
|
+
- abbr: "NP TS"
|
|
3
|
+
- abbr: "AWI TS"
|
|
4
|
+
- abbr: "WD TS"
|
|
5
|
+
- abbr: "CDTS"
|
|
6
|
+
- abbr: "CD TS"
|
|
7
|
+
- abbr: "PDTS"
|
|
8
|
+
- abbr: "DTS"
|
|
9
|
+
- abbr: "FDTS"
|
|
10
|
+
- abbr: "PRF TS"
|
|
11
|
+
- abbr: "TS"
|
|
12
|
+
- abbr: "PWI TTA"
|
|
13
|
+
- abbr: "NP TTA"
|
|
14
|
+
- abbr: "AWI TTA"
|
|
15
|
+
- abbr: "WD TTA"
|
|
16
|
+
- abbr: "CD TTA"
|
|
17
|
+
- abbr: "DTTA"
|
|
18
|
+
- abbr: "FDTTA"
|
|
19
|
+
- abbr: "PRF TTA"
|
|
20
|
+
- abbr: "TTA"
|
|
21
|
+
- abbr: "NP DATA"
|
|
22
|
+
- abbr: "AWI DATA"
|
|
23
|
+
- abbr: "WD DATA"
|
|
24
|
+
- abbr: "CD DATA"
|
|
25
|
+
- abbr: "D DATA"
|
|
26
|
+
- abbr: "PRF DATA"
|
|
27
|
+
- abbr: "DATA"
|
|
28
|
+
- abbr: "DIR"
|
|
29
|
+
- abbr: "Directives Part"
|
|
30
|
+
- abbr: "Directives, Part"
|
|
31
|
+
- abbr: "Directives,"
|
|
32
|
+
- abbr: "Directives"
|
|
33
|
+
- abbr: "DIR SUP"
|
|
34
|
+
- abbr: "SUP"
|
|
35
|
+
- abbr: "Supplement"
|
|
36
|
+
- abbr: "PWI Guide"
|
|
37
|
+
- abbr: "NP Guide"
|
|
38
|
+
- abbr: "NP GUIDE"
|
|
39
|
+
- abbr: "AWI Guide"
|
|
40
|
+
- abbr: "AWI GUIDE"
|
|
41
|
+
- abbr: "WD Guide"
|
|
42
|
+
- abbr: "WD GUIDE"
|
|
43
|
+
- abbr: "CD Guide"
|
|
44
|
+
- abbr: "CD GUIDE"
|
|
45
|
+
- abbr: "DGuide"
|
|
46
|
+
- abbr: "DGUIDE"
|
|
47
|
+
- abbr: "FDGuide"
|
|
48
|
+
- abbr: "FD Guide"
|
|
49
|
+
- abbr: "FD GUIDE"
|
|
50
|
+
- abbr: "PRF Guide"
|
|
51
|
+
- abbr: "PRF GUIDE"
|
|
52
|
+
- abbr: "Guide"
|
|
53
|
+
- abbr: "GUIDE"
|
|
54
|
+
- abbr: "DP"
|
|
55
|
+
- abbr: "PWI"
|
|
56
|
+
- abbr: "NP"
|
|
57
|
+
- abbr: "NWIP"
|
|
58
|
+
- abbr: "AWI"
|
|
59
|
+
- abbr: "WD"
|
|
60
|
+
- abbr: "WDS"
|
|
61
|
+
- abbr: "preCD"
|
|
62
|
+
- abbr: "PreCD"
|
|
63
|
+
- abbr: "CD"
|
|
64
|
+
- abbr: "DIS"
|
|
65
|
+
- abbr: "FPD"
|
|
66
|
+
- abbr: "FCD"
|
|
67
|
+
- abbr: "FDIS"
|
|
68
|
+
- abbr: "PRF"
|
|
69
|
+
- abbr: "Fpr"
|
|
70
|
+
- abbr: "IS"
|
|
71
|
+
- abbr: "WDR"
|
|
72
|
+
- abbr: "WDA"
|
|
73
|
+
- abbr: "WDAR"
|
|
74
|
+
- abbr: "PWI ISP"
|
|
75
|
+
- abbr: "NP ISP"
|
|
76
|
+
- abbr: "AWI ISP"
|
|
77
|
+
- abbr: "WD ISP"
|
|
78
|
+
- abbr: "CD ISP"
|
|
79
|
+
- abbr: "DISP"
|
|
80
|
+
- abbr: "DIS ISP"
|
|
81
|
+
- abbr: "FDISP"
|
|
82
|
+
- abbr: "FDIS ISP"
|
|
83
|
+
- abbr: "PRF ISP"
|
|
84
|
+
- abbr: "ISP"
|
|
85
|
+
- abbr: "PWI IWA"
|
|
86
|
+
- abbr: "NP IWA"
|
|
87
|
+
- abbr: "AWI IWA"
|
|
88
|
+
- abbr: "WD IWA"
|
|
89
|
+
- abbr: "CD IWA"
|
|
90
|
+
- abbr: "DIWA"
|
|
91
|
+
- abbr: "PRF IWA"
|
|
92
|
+
- abbr: "IWA"
|
|
93
|
+
- abbr: "PWI PAS"
|
|
94
|
+
- abbr: "NP PAS"
|
|
95
|
+
- abbr: "AWI PAS"
|
|
96
|
+
- abbr: "WD PAS"
|
|
97
|
+
- abbr: "CD PAS"
|
|
98
|
+
- abbr: "DPAS"
|
|
99
|
+
- abbr: "FDPAS"
|
|
100
|
+
- abbr: "PRF PAS"
|
|
101
|
+
- abbr: "PAS"
|
|
102
|
+
- abbr: "R"
|
|
103
|
+
- abbr: "PWI TR"
|
|
104
|
+
- abbr: "NP TR"
|
|
105
|
+
- abbr: "AWI TR"
|
|
106
|
+
- abbr: "WD TR"
|
|
107
|
+
- abbr: "CD TR"
|
|
108
|
+
- abbr: "PDTR"
|
|
109
|
+
- abbr: "DTR"
|
|
110
|
+
- abbr: "DIS TR"
|
|
111
|
+
- abbr: "FDTR"
|
|
112
|
+
- abbr: "FDIS TR"
|
|
113
|
+
- abbr: "PRF TR"
|
|
114
|
+
- abbr: "TR"
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
- abbr: "PWI Suppl"
|
|
2
|
+
- abbr: "NP Suppl"
|
|
3
|
+
- abbr: "AWI Suppl"
|
|
4
|
+
- abbr: "WD Suppl"
|
|
5
|
+
- abbr: "CD Suppl"
|
|
6
|
+
- abbr: "DSuppl"
|
|
7
|
+
- abbr: "DIS Suppl"
|
|
8
|
+
- abbr: "FDSuppl"
|
|
9
|
+
- abbr: "FDIS Suppl"
|
|
10
|
+
- abbr: "PRF Suppl"
|
|
11
|
+
- abbr: "Suppl"
|
|
12
|
+
- abbr: "Suppl."
|
|
13
|
+
- abbr: "PWI Add"
|
|
14
|
+
- abbr: "NP Add"
|
|
15
|
+
- abbr: "AWI Add"
|
|
16
|
+
- abbr: "WD Add"
|
|
17
|
+
- abbr: "CD Add"
|
|
18
|
+
- abbr: "DAD"
|
|
19
|
+
- abbr: "DAdd"
|
|
20
|
+
- abbr: "D ADD"
|
|
21
|
+
- abbr: "Dad"
|
|
22
|
+
- abbr: "DIS Add"
|
|
23
|
+
- abbr: "FDAD"
|
|
24
|
+
- abbr: "FDAdd"
|
|
25
|
+
- abbr: "FD ADD"
|
|
26
|
+
- abbr: "FDad"
|
|
27
|
+
- abbr: "FDIS Add"
|
|
28
|
+
- abbr: "Add"
|
|
29
|
+
- abbr: "ADD"
|
|
30
|
+
- abbr: "Add."
|
|
31
|
+
- abbr: "Addendum"
|
|
32
|
+
- abbr: "PWI Amd"
|
|
33
|
+
- abbr: "NP Amd"
|
|
34
|
+
- abbr: "AWI Amd"
|
|
35
|
+
- abbr: "WD Amd"
|
|
36
|
+
- abbr: "CD Amd"
|
|
37
|
+
- abbr: "PDAM"
|
|
38
|
+
- abbr: "DAM"
|
|
39
|
+
- abbr: "DAmd"
|
|
40
|
+
- abbr: "FDAM"
|
|
41
|
+
- abbr: "FDAmd"
|
|
42
|
+
- abbr: "FPDAM"
|
|
43
|
+
- abbr: "PRF Amd"
|
|
44
|
+
- abbr: "Amd"
|
|
45
|
+
- abbr: "AMD"
|
|
46
|
+
- abbr: "Amd."
|
|
47
|
+
- abbr: "PWI Cor"
|
|
48
|
+
- abbr: "NP Cor"
|
|
49
|
+
- abbr: "AWI Cor"
|
|
50
|
+
- abbr: "WD Cor"
|
|
51
|
+
- abbr: "CD Cor"
|
|
52
|
+
- abbr: "pDCOR"
|
|
53
|
+
- abbr: "DCor"
|
|
54
|
+
- abbr: "DCOR"
|
|
55
|
+
- abbr: "DIS Cor"
|
|
56
|
+
- abbr: "FDCor"
|
|
57
|
+
- abbr: "FDCOR"
|
|
58
|
+
- abbr: "FCOR"
|
|
59
|
+
- abbr: "FDIS Cor"
|
|
60
|
+
- abbr: "PRF Cor"
|
|
61
|
+
- abbr: "Cor"
|
|
62
|
+
- abbr: "COR"
|
|
63
|
+
- abbr: "Cor."
|
|
64
|
+
- abbr: "Ext"
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
- name: "AG"
|
|
2
|
+
- name: "AhG"
|
|
3
|
+
- name: "WG"
|
|
4
|
+
- name: "JWG"
|
|
5
|
+
- name: "QC"
|
|
6
|
+
- name: "TF"
|
|
7
|
+
- name: "PPC"
|
|
8
|
+
- name: "CAG"
|
|
9
|
+
- name: "CSC"
|
|
10
|
+
- name: "ITSAG"
|
|
11
|
+
- name: "CSC/FIN"
|
|
12
|
+
- name: "CSC/NOM"
|
|
13
|
+
- name: "CSC/OVE"
|
|
14
|
+
- name: "CSC/SP"
|
|
15
|
+
- name: "SF"
|
|
16
|
+
- name: "ITSG"
|
|
17
|
+
- name: "JAG"
|
|
18
|
+
- name: "JCTF"
|
|
19
|
+
- name: "JSG"
|
|
20
|
+
- name: "JTAG"
|
|
21
|
+
- name: "JTG"
|
data/data/parg/tgpp.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"0.1.0","grammar":"PubidTgpp","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"3GPP "}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":6}},{"Str":{"pattern":"TR"}},{"Str":{"pattern":"TS"}},{"Alternative":{"atoms":[3,4]}},{"Named":{"name":"type","atom":5}},{"Entity":{"atom":8}},{"Str":{"pattern":" "}},{"Entity":{"atom":17}},{"Entity":{"atom":11}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":10,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Entity":{"atom":11}},{"Repetition":{"atom":14,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[12,13,15]}},{"Named":{"name":"number","atom":16}},{"Entity":{"atom":24}},{"Entity":{"atom":22}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[20,21]}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"suffix","atom":23}},{"Repetition":{"atom":18,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":34}},{"Entity":{"atom":32}},{"Str":{"pattern":"-"}},{"Entity":{"atom":11}},{"Repetition":{"atom":29,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"part","atom":30}},{"Sequence":{"atoms":[28,31]}},{"Repetition":{"atom":27,"min":0,"max":null,"tag":"Repetition"}},{"Named":{"name":"parts","atom":33}},{"Entity":{"atom":36}},{"Str":{"pattern":":"}},{"Entity":{"atom":60}},{"Entity":{"atom":47}},{"Entity":{"atom":11}},{"Repetition":{"atom":39,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Entity":{"atom":11}},{"Repetition":{"atom":42,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Entity":{"atom":11}},{"Repetition":{"atom":45,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[40,41,43,44,46]}},{"Entity":{"atom":49}},{"Re":{"pattern":"[\\x01-\\u{10ffff}]"}},{"Lookahead":{"atom":48,"positive":false}},{"Sequence":{"atoms":[38,50]}},{"Lookahead":{"atom":51,"positive":false}},{"Entity":{"atom":57}},{"Re":{"pattern":"[\\x01-\\x2e]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[\\x3b-\\u{10ffff}]"}},{"Alternative":{"atoms":[54,55,56]}},{"Repetition":{"atom":53,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"release","atom":58}},{"Sequence":{"atoms":[52,59]}},{"Sequence":{"atoms":[35,37]}},{"Repetition":{"atom":61,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":64}},{"Str":{"pattern":"/"}},{"Entity":{"atom":67}},{"Entity":{"atom":47}},{"Named":{"name":"version","atom":66}},{"Sequence":{"atoms":[63,65]}},{"Repetition":{"atom":68,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[1,2,7,9,25,26,62,69]}}],"root":70},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule release_char: branches 1 and 3 are order-dependent (first set not statically known)","rule release_char: branches 2 and 3 are order-dependent (first set not statically known)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"3GPP TS 21.101","expect":{}},{"entry":"identifier","kind":"accept","input":"TS 25.999","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/tgpp/parser.rb:\n# [3GPP ]<TR|TS> <NN.NNN>[suffix][-part…][:<release>][/<version>]\n# The release excludes \"/\" and \":\" (match[\"^/:\"]), byte-wise here; the\n# mistyped-version guard (!version…!any) is ported literally.\n\ngrammar PubidTgpp version \"0.1.0\" {\n release_char = %x01-2E / %x30-39 / %x3B-10FFFF\n any_char = %x01-10FFFF\n type = (\"TR\" / \"TS\") as type\n number = (1*digit \".\" 1*digit) as number\n suffix = (1*letter) as suffix\n part = \"-\" (1*digit) as part\n parts = (*part) as parts\n version_core = 1*digit \".\" 1*digit \".\" 1*digit\n release = !(version_core !any_char) (1*release_char) as release\n version = version_core as version\n identifier = [\"3GPP \"] type space number [suffix] parts [(colon release)] [(slash version)]\n letter = %x41-5A / %x61-7A\n digit = %x30-39\n space = \" \"\n colon = \":\"\n slash = \"/\"\n entry identifier: identifier\n\n test {\n accept \"3GPP TS 21.101\"\n accept \"TS 25.999\"\n reject \"nonsense\"\n }\n}\n","checksum":"sha256:6446a79c9b880d0cc0565fdd9bdb13a665b8d6b5bf5b91c055404ddab778c0c9"}
|
data/data/parg/un.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"0.1.0","grammar":"PubidUn","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"UN "}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":9}},{"Entity":{"atom":7}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Re":{"pattern":"[.]"}},{"Alternative":{"atoms":[4,5,6]}},{"Repetition":{"atom":3,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"token","atom":8}},{"Entity":{"atom":11}},{"Str":{"pattern":"/"}},{"Entity":{"atom":9}},{"Sequence":{"atoms":[10,12]}},{"Repetition":{"atom":13,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[1,2,14]}}],"root":15},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"UN/CEFACT/TBG14","expect":{}},{"entry":"identifier","kind":"accept","input":"CEFACT/TBG14","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/un/parser.rb. `token` matches [A-Z0-9.] runs.\n\ngrammar PubidUn version \"0.1.0\" {\n token_char = %x41-5A / %x30-39 / %x2E\n token = (1*token_char) as token\n identifier = [\"UN \"] token 1*(slash token)\n slash = \"/\"\n entry identifier: identifier\n\n test {\n accept \"UN/CEFACT/TBG14\"\n accept \"CEFACT/TBG14\"\n reject \"nonsense\"\n }\n}\n","checksum":"sha256:1ca1befe71541f581fe67befd3499e399c3a8463c17dcc641e00dba1858a4bbf"}
|
data/data/parg/w3c.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"0.1.0","grammar":"PubidW3c","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"W3C "}},{"Entity":{"atom":16}},{"Entity":{"atom":13}},{"Str":{"pattern":"DNOTE"}},{"Str":{"pattern":"NOTE"}},{"Str":{"pattern":"WD"}},{"Str":{"pattern":"CRD"}},{"Str":{"pattern":"CR"}},{"Str":{"pattern":"REC"}},{"Str":{"pattern":"PER"}},{"Str":{"pattern":"PR"}},{"Str":{"pattern":"SPSD"}},{"Str":{"pattern":"OBSL"}},{"Alternative":{"atoms":[3,4,5,6,7,8,9,10,11,12]}},{"Named":{"name":"type","atom":2}},{"Str":{"pattern":"-"}},{"Sequence":{"atoms":[14,15]}},{"Repetition":{"atom":1,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":22}},{"Entity":{"atom":20}},{"Re":{"pattern":"[\\x01-\\u{10ffff}]"}},{"Repetition":{"atom":19,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"rest","atom":21}},{"Sequence":{"atoms":[0,17,18]}}],"root":23},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule type_token: branches 4 and 5 are order-dependent (shared first bytes; ordered choice is decisive)","rule type_token: branches 7 and 8 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"W3C REC-html40-19981224","expect":{}},{"entry":"identifier","kind":"accept","input":"W3C NOTE-datetime-19980827","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/w3c/parser.rb: split off the leading maturity token;\n# code/date boundary is builder-side by design. Token order matters for\n# shared prefixes (CRD before CR, PER before PR, DNOTE before NOTE).\n\ngrammar PubidW3c version \"0.1.0\" {\n any_char = %x01-10FFFF\n type_token = \"DNOTE\" / \"NOTE\" / \"WD\" / \"CRD\" / \"CR\" / \"REC\" / \"PER\" / \"PR\" / \"SPSD\" / \"OBSL\"\n type_part = type_token as type \"-\"\n rest = (1*any_char) as rest\n identifier = \"W3C \" [type_part] rest\n entry identifier: identifier\n\n test {\n accept \"W3C REC-html40-19981224\"\n accept \"W3C NOTE-datetime-19980827\"\n reject \"nonsense\"\n }\n}\n","checksum":"sha256:1bd04533a9817c662357acb14e9aad070df46535c537ee95b67b0aa752016164"}
|
data/data/parg/xsf.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":"0.1.0","grammar":"PubidXsf","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"XEP "}},{"Entity":{"atom":10}},{"Entity":{"atom":3}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":2,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":8}},{"Str":{"pattern":"README"}},{"Str":{"pattern":"xxxx"}},{"Alternative":{"atoms":[6,7]}},{"Alternative":{"atoms":[4,5]}},{"Named":{"name":"number","atom":9}},{"Sequence":{"atoms":[0,1]}}],"root":11},"bindings":[]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"XEP 0001","expect":{}},{"entry":"identifier","kind":"accept","input":"XEP README","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/xsf/parser.rb: \"XEP NNNN\" plus the two named\n# documents (README, xxxx) in SPECIAL_NUMBERS.\n grammar PubidXsf version \"0.1.0\" {\n digit = %x30-39\n special_number = \"README\" / \"xxxx\"\n number = (1*digit / special_number) as number\n identifier = \"XEP \" number\n entry identifier: identifier\n\n test {\n accept \"XEP 0001\"\n accept \"XEP README\"\n reject \"nonsense\"\n }\n}\n","checksum":"sha256:f70d07de892c58f8386c80aae269fa29f30705100d2aee6266d1bf588f5eeeda"}
|
|
@@ -18,7 +18,17 @@ module Pubid
|
|
|
18
18
|
# @return [Pubid::Adobe::Identifier]
|
|
19
19
|
# @raise [Pubid::Errors::ParseError] If parsing fails
|
|
20
20
|
def self.parse(identifier)
|
|
21
|
-
|
|
21
|
+
unless identifier.is_a?(String)
|
|
22
|
+
raise Pubid::Errors::InvalidInputError,
|
|
23
|
+
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
27
|
+
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# R1 parser swap: the baked PG artifact is the parser of record.
|
|
31
|
+
parsed = Pubid::Parg::Backend.parse(:adobe, identifier.strip)
|
|
22
32
|
Builder.build(parsed)
|
|
23
33
|
end
|
|
24
34
|
|
data/lib/pubid/api/identifier.rb
CHANGED
|
@@ -34,7 +34,7 @@ module Pubid
|
|
|
34
34
|
# this was the one public parse in the gem that could return nil, which
|
|
35
35
|
# a caller reading `id.to_s` sees as a NoMethodError far from the cause.
|
|
36
36
|
# Both API fixture loaders already drop `#` lines themselves.
|
|
37
|
-
tree =
|
|
37
|
+
tree = Pubid::Parg::Backend.parse(:api, Api::Parser.normalize_input(input))
|
|
38
38
|
Builder.new.build(tree)
|
|
39
39
|
end
|
|
40
40
|
end
|
data/lib/pubid/api/parser.rb
CHANGED
|
@@ -129,11 +129,15 @@ module Pubid
|
|
|
129
129
|
|
|
130
130
|
root(:identifier)
|
|
131
131
|
|
|
132
|
-
#
|
|
133
|
-
|
|
132
|
+
# Pre-parse ingestion normalization (R2): every parse path feeds
|
|
133
|
+
# the grammar the same normalized string.
|
|
134
|
+
def self.normalize_input(input)
|
|
134
135
|
# Normalize MPMP typo to MPMS
|
|
135
|
-
|
|
136
|
-
|
|
136
|
+
input.gsub("API MPMP", "API MPMS")
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
def parse(input)
|
|
140
|
+
super(self.class.normalize_input(input))
|
|
137
141
|
end
|
|
138
142
|
end
|
|
139
143
|
end
|
|
@@ -10,7 +10,16 @@ module Pubid
|
|
|
10
10
|
# @return [Pubid::Ashrae::Identifier] The appropriate identifier object
|
|
11
11
|
# @raise [Pubid::Errors::ParseError] If parsing fails
|
|
12
12
|
def self.parse(identifier)
|
|
13
|
-
|
|
13
|
+
unless identifier.is_a?(String)
|
|
14
|
+
raise Pubid::Errors::InvalidInputError,
|
|
15
|
+
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if identifier.length > Pubid::MAX_INPUT_LENGTH
|
|
19
|
+
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
parsed = Pubid::Parg::Backend.parse(:ashrae, Parser.normalize_input(identifier))
|
|
14
23
|
Builder.build(parsed)
|
|
15
24
|
end
|
|
16
25
|
|
data/lib/pubid/ashrae/parser.rb
CHANGED
|
@@ -698,16 +698,10 @@ module Pubid
|
|
|
698
698
|
|
|
699
699
|
root(:identifier)
|
|
700
700
|
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
end
|
|
706
|
-
|
|
707
|
-
if string.length > Pubid::MAX_INPUT_LENGTH
|
|
708
|
-
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
709
|
-
end
|
|
710
|
-
|
|
701
|
+
# Pre-parse ingestion normalizations (R2): every parse path —
|
|
702
|
+
# parslet and PG artifact alike — feeds the grammar the same
|
|
703
|
+
# normalized string.
|
|
704
|
+
def self.normalize_input(string)
|
|
711
705
|
# Strip leading/trailing whitespace
|
|
712
706
|
cleaned = string.strip
|
|
713
707
|
|
|
@@ -775,7 +769,20 @@ module Pubid
|
|
|
775
769
|
"Addenda \\1, ")
|
|
776
770
|
end
|
|
777
771
|
|
|
778
|
-
|
|
772
|
+
cleaned
|
|
773
|
+
end
|
|
774
|
+
|
|
775
|
+
def self.parse(string)
|
|
776
|
+
unless string.is_a?(String)
|
|
777
|
+
raise Pubid::Errors::InvalidInputError,
|
|
778
|
+
Pubid::INPUT_NOT_A_STRING_MESSAGE
|
|
779
|
+
end
|
|
780
|
+
|
|
781
|
+
if string.length > Pubid::MAX_INPUT_LENGTH
|
|
782
|
+
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
783
|
+
end
|
|
784
|
+
|
|
785
|
+
new.parse(normalize_input(string))
|
|
779
786
|
end
|
|
780
787
|
end
|
|
781
788
|
end
|
|
@@ -277,7 +277,7 @@ module Pubid
|
|
|
277
277
|
# Normalize legacy/docnumber-style spellings before parsing
|
|
278
278
|
# (data/bipm/update_codes.yaml), mirroring Pubid::Ccsds / Pubid::Plateau.
|
|
279
279
|
normalized = Core::UpdateCodes.apply(identifier, :bipm)
|
|
280
|
-
parsed =
|
|
280
|
+
parsed = Pubid::Parg::Backend.parse(:bipm, normalized)
|
|
281
281
|
Builder.build(parsed)
|
|
282
282
|
end
|
|
283
283
|
end
|
|
@@ -77,7 +77,7 @@ module Pubid
|
|
|
77
77
|
|
|
78
78
|
# Apply legacy update_codes normalization first
|
|
79
79
|
normalized = Core::UpdateCodes.apply(identifier, :ccsds)
|
|
80
|
-
parsed = Pubid::
|
|
80
|
+
parsed = Pubid::Parg::Backend.parse(:ccsds, normalized)
|
|
81
81
|
Pubid::Ccsds::Builder.build(parsed)
|
|
82
82
|
end
|
|
83
83
|
|
|
@@ -102,7 +102,8 @@ module Pubid
|
|
|
102
102
|
raise Pubid::Errors::InvalidInputError, Pubid::INPUT_TOO_LONG_MESSAGE
|
|
103
103
|
end
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
normalized = Parser.normalize_input(identifier)
|
|
106
|
+
parsed = Pubid::Parg::Backend.parse(:cen_cenelec, normalized)
|
|
106
107
|
Builder.new.build(parsed)
|
|
107
108
|
end
|
|
108
109
|
|
|
@@ -131,7 +131,10 @@ module Pubid
|
|
|
131
131
|
|
|
132
132
|
rule(:root) { identifier }
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
# Pre-parse ingestion normalizations (R2): every parse path —
|
|
135
|
+
# parslet and PG artifact alike — feeds the grammar the same
|
|
136
|
+
# normalized string.
|
|
137
|
+
def self.normalize_input(input)
|
|
135
138
|
# Normalize special dash characters
|
|
136
139
|
normalized = input.gsub(/[\u2011\u00AD]/, "-")
|
|
137
140
|
|
|
@@ -145,7 +148,11 @@ module Pubid
|
|
|
145
148
|
normalized = normalized.gsub("CEN-CLC", "CEN/CLC")
|
|
146
149
|
.gsub("CLC-CEN", "CLC/CEN")
|
|
147
150
|
.gsub("GUIDE", "Guide")
|
|
148
|
-
|
|
151
|
+
normalized
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
def self.parse(input)
|
|
155
|
+
new.parse(normalize_input(input))
|
|
149
156
|
end
|
|
150
157
|
end
|
|
151
158
|
end
|