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/data/parg/iho.json
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidIho","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Str":{"pattern":"IHO"}},{"Entity":{"atom":2}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[0,1]}},{"Repetition":{"atom":3,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":12}},{"Str":{"pattern":"S"}},{"Str":{"pattern":"P"}},{"Str":{"pattern":"M"}},{"Str":{"pattern":"B"}},{"Str":{"pattern":"C"}},{"Alternative":{"atoms":[6,7,8,9,10]}},{"Named":{"name":"type","atom":11}},{"Entity":{"atom":14}},{"Str":{"pattern":"-"}},{"Entity":{"atom":37}},{"Entity":{"atom":17}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":16,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":34}},{"Str":{"pattern":":"}},{"Entity":{"atom":17}},{"Repetition":{"atom":21,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[20,22]}},{"Str":{"pattern":"/"}},{"Entity":{"atom":17}},{"Repetition":{"atom":25,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[24,26]}},{"Entity":{"atom":14}},{"Entity":{"atom":17}},{"Repetition":{"atom":29,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[28,30]}},{"Entity":{"atom":33}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Alternative":{"atoms":[23,27,31,32]}},{"Repetition":{"atom":19,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[18,35]}},{"Named":{"name":"number","atom":36}},{"Entity":{"atom":54}},{"Entity":{"atom":2}},{"Str":{"pattern":"Appendix"}},{"Str":{"pattern":"Ap."}},{"Alternative":{"atoms":[40,41]}},{"Entity":{"atom":2}},{"Entity":{"atom":33}},{"Entity":{"atom":14}},{"Entity":{"atom":17}},{"Repetition":{"atom":46,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[44,45,47]}},{"Entity":{"atom":17}},{"Repetition":{"atom":49,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":33}},{"Alternative":{"atoms":[48,50,51]}},{"Named":{"name":"appendix","atom":52}},{"Sequence":{"atoms":[39,42,43,53]}},{"Repetition":{"atom":38,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":72}},{"Entity":{"atom":2}},{"Str":{"pattern":"Part"}},{"Entity":{"atom":2}},{"Entity":{"atom":17}},{"Repetition":{"atom":60,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":66}},{"Entity":{"atom":33}},{"Entity":{"atom":65}},{"Re":{"pattern":"[\\x61-\\x7a]"}},{"Alternative":{"atoms":[63,64]}},{"Repetition":{"atom":62,"min":0,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[61,67]}},{"Entity":{"atom":33}},{"Alternative":{"atoms":[68,69]}},{"Named":{"name":"part","atom":70}},{"Sequence":{"atoms":[57,58,59,71]}},{"Repetition":{"atom":56,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":80}},{"Entity":{"atom":2}},{"Str":{"pattern":"Annex"}},{"Entity":{"atom":2}},{"Entity":{"atom":33}},{"Named":{"name":"annex","atom":78}},{"Sequence":{"atoms":[75,76,77,79]}},{"Repetition":{"atom":74,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":89}},{"Entity":{"atom":2}},{"Str":{"pattern":"Suppl"}},{"Entity":{"atom":2}},{"Entity":{"atom":17}},{"Repetition":{"atom":86,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"supplement","atom":87}},{"Sequence":{"atoms":[83,84,85,88]}},{"Repetition":{"atom":82,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":135}},{"Entity":{"atom":2}},{"Entity":{"atom":17}},{"Repetition":{"atom":93,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Str":{"pattern":"."}},{"Entity":{"atom":17}},{"Repetition":{"atom":97,"min":1,"max":null,"tag":"Repetition"}},{"Entity":{"atom":96}},{"Entity":{"atom":17}},{"Repetition":{"atom":100,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[94,95,98,99,101]}},{"Named":{"name":"version","atom":102}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"20"}},{"Alternative":{"atoms":[104,105]}},{"Entity":{"atom":17}},{"Repetition":{"atom":107,"min":2,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[106,108]}},{"Named":{"name":"year","atom":109}},{"Str":{"pattern":"Vol."}},{"Entity":{"atom":2}},{"Entity":{"atom":17}},{"Repetition":{"atom":113,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"volume","atom":114}},{"Sequence":{"atoms":[111,112,115]}},{"Entity":{"atom":2}},{"Str":{"pattern":"Issue"}},{"Entity":{"atom":2}},{"Entity":{"atom":17}},{"Repetition":{"atom":120,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"issue","atom":121}},{"Sequence":{"atoms":[117,118,119,122]}},{"Entity":{"atom":2}},{"Str":{"pattern":"("}},{"Entity":{"atom":17}},{"Repetition":{"atom":126,"min":1,"max":null,"tag":"Repetition"}},{"Named":{"name":"issue","atom":127}},{"Str":{"pattern":")"}},{"Sequence":{"atoms":[124,125,128,129]}},{"Alternative":{"atoms":[123,130]}},{"Repetition":{"atom":131,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[116,132]}},{"Alternative":{"atoms":[103,110,133]}},{"Sequence":{"atoms":[92,134]}},{"Repetition":{"atom":91,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[4,5,13,15,55,73,81,90,136]}}],"root":137},"bindings":[{"capture":"year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"volume","path":"volume","type":"string","card":null,"preprocess":null},{"capture":"issue","path":"issue","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"S-5","expect":{}},{"entry":"identifier","kind":"accept","input":"IHO S-5 Appendix 2","expect":{}},{"entry":"identifier","kind":"accept","input":"IHO B-12 3.0.0","expect":{}},{"entry":"identifier","kind":"accept","input":"IHO P-5 2024","expect":{}},{"entry":"identifier","kind":"accept","input":"P-5 2024","expect":{}},{"entry":"identifier","kind":"accept","input":"IHO B-7 2023","expect":{}},{"entry":"identifier","kind":"accept","input":"IHO P-1 Vol. 30","expect":{}},{"entry":"identifier","kind":"accept","input":"IHO P-1 Vol. 30 (2)","expect":{}},{"entry":"identifier","kind":"accept","input":"IHO P-1 Vol. 30 Issue 2","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}},{"entry":"identifier","kind":"reject","input":"IHO B-12 3.0","expect":{}}],"docs":{},"source":"# Port of lib/pubid/iho/parser.rb — IHO identifiers: letter series\n# (S/P/M/B/C), a number with an optional suffix, and appendix, part,\n# annex, supplement and version tails.\n#\n# The trailing component of a series form is a discriminator chosen\n# from:\n# - the dotted version a.b.c (unchanged — the historical placeholder\n# and the real S/M/B/C editions, e.g. \"B-12 3.0.0\");\n# - a 4-digit year 19xx/20xx (\"P-5 2024\", \"B-7 2023\") — the identity\n# form for the year-identified series (relaton#407: B-7, P-5, P-6\n# are identified by year, not by a placeholder edition);\n# - a volume \"Vol. N\" with an optional issue (\"P-1 Vol. 30\",\n# \"P-1 Vol. 30 (2)\"). The issue is captured as the bare number and\n# prints in parentheses. The \"Issue N\" spelling is accepted as an\n# input alias; the parenthesized form is the canonical print.\n# DECISION FLAG for the IHO-agreement step: real IHR issue\n# spellings vary (\"No. N\" is also seen) — only \"(N)\" and\n# \"Issue N\" are accepted until the spelling is agreed.\n# A two-segment version (\"B-12 3.0\") is deliberately NOT supported:\n# no IHO series carries one in the corpus, and neither new rule\n# swallows it (a year needs all four digits of 19xx/20xx; a dotted\n# version needs all three segments).\n#\n# The grammar stays edition v1: the v1 tree inlines rule references\n# inside a captured body (the v2 tree materializes them as named\n# nodes), which the builder's string fold over :number/:type expects.\n# The tail rule uses only raw terms, so nothing in it needs v2.\n\ngrammar PubidIho version \"0.1.0\" edition 1 {\n digit = %x30-39\n upper = %x41-5A\n lower = %x61-7A\n letter = upper / lower\n space = \" \"\n dash = \"-\"\n dot = \".\"\n\n series = (\"S\" / \"P\" / \"M\" / \"B\" / \"C\") as type\n number_suffix = ((\":\" 1*digit) / (\"/\" 1*digit) / (dash 1*digit) / upper)\n number = (1*digit [number_suffix]) as number\n appendix = {\n space (\"Appendix\" / \"Ap.\") space\n ((upper dash 1*digit) / (1*digit) / upper) as appendix\n }\n part = {\n space \"Part\" space\n ((1*digit *letter) / upper) as part\n }\n annex = space \"Annex\" space upper as annex\n supplement = space \"Suppl\" space (1*digit) as supplement\n tail = {\n space\n (\n (1*digit dot 1*digit dot 1*digit) as version\n / ((\"19\" / \"20\") 2*digit) as year\n / (\n (\"Vol.\" space (1*digit) as volume)\n [\n (space \"Issue\" space (1*digit) as issue)\n / (space \"(\" (1*digit) as issue \")\")\n ]\n )\n )\n }\n\n identifier = {\n [(\"IHO\" space)]\n series\n dash\n number\n [appendix]\n [part]\n [annex]\n [supplement]\n [tail]\n }\n\n entry identifier: identifier\n\n test {\n accept \"S-5\"\n accept \"IHO S-5 Appendix 2\"\n accept \"IHO B-12 3.0.0\"\n accept \"IHO P-5 2024\"\n accept \"P-5 2024\"\n accept \"IHO B-7 2023\"\n accept \"IHO P-1 Vol. 30\"\n accept \"IHO P-1 Vol. 30 (2)\"\n accept \"IHO P-1 Vol. 30 Issue 2\"\n reject \"nonsense\"\n reject \"IHO B-12 3.0\"\n }\n\n bindings identifier {\n year -> year (string)\n volume -> volume (string)\n issue -> issue (string)\n }\n}\n","source_hash":"8d0d31907c36e5a398b7af8e11b434afb75588f6252e79cd975cb2c10a10ad8a","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":1,"checksum":"sha256:52f91157a4d75ed1eef5cddd14789fcd907ec721384f88f5d3df77548dc307b9"}
|
data/data/parg/ire.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidIre","shape":"parsanol-tree/v2","binding_version":1,"entries":{"ire_identifier":{"root":"ire_identifier","grammar":{"atoms":[{"Entity":{"atom":
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidIre","shape":"parsanol-tree/v2","binding_version":1,"entries":{"ire_identifier":{"root":"ire_identifier","grammar":{"atoms":[{"Entity":{"atom":105}},{"Str":{"pattern":"191"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[1,2]}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"2"}},{"Str":{"pattern":"3"}},{"Str":{"pattern":"4"}},{"Str":{"pattern":"5"}},{"Alternative":{"atoms":[5,6,7,8]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[4,9,10]}},{"Str":{"pattern":"196"}},{"Re":{"pattern":"[\\x30-\\x33]"}},{"Sequence":{"atoms":[12,13]}},{"Re":{"pattern":"[\\x31-\\x36]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[15,16]}},{"Alternative":{"atoms":[3,11,14,17]}},{"Named":{"name":"year","atom":18}},{"Str":{"pattern":" "}},{"Entity":{"atom":25}},{"Str":{"pattern":"IEEE-IRE"}},{"Str":{"pattern":"IRE"}},{"Alternative":{"atoms":[22,23]}},{"Named":{"name":"publisher","atom":24}},{"Str":{"pattern":" "}},{"Entity":{"atom":32}},{"Str":{"pattern":"Trans."}},{"Str":{"pattern":"Standard"}},{"Str":{"pattern":"Std"}},{"Alternative":{"atoms":[28,29,30]}},{"Named":{"name":"type","atom":31}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[27,33]}},{"Repetition":{"atom":34,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":68}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":37,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":" "}},{"Str":{"pattern":"."}},{"Alternative":{"atoms":[39,40]}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":43,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[38,41,42,44]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":46,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Str":{"pattern":"IRE"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":50,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"."}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":53,"min":1,"max":null,"tag":"Repetition"}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":56,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[47,48,49,51,52,54,55,57]}},{"Re":{"pattern":"[\\x41-\\x5a]"}},{"Repetition":{"atom":59,"min":2,"max":4,"tag":"Repetition"}},{"Str":{"pattern":"-"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":62,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[60,61,63]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":65,"min":1,"max":null,"tag":"Repetition"}},{"Alternative":{"atoms":[45,58,64,66]}},{"Named":{"name":"number","atom":67}},{"Entity":{"atom":86}},{"Entity":{"atom":71}},{"Str":{"pattern":" "}},{"Entity":{"atom":73}},{"Str":{"pattern":"-"}},{"Named":{"name":"dash","atom":72}},{"Str":{"pattern":","}},{"Alternative":{"atoms":[74,75]}},{"Repetition":{"atom":76,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":71}},{"Repetition":{"atom":78,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[70,77,79]}},{"Entity":{"atom":73}},{"Named":{"name":"dash","atom":81}},{"Str":{"pattern":","}},{"Alternative":{"atoms":[82,83]}},{"Entity":{"atom":71}},{"Alternative":{"atoms":[80,84,85]}},{"Str":{"pattern":"191"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[87,88]}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"2"}},{"Str":{"pattern":"3"}},{"Str":{"pattern":"4"}},{"Str":{"pattern":"5"}},{"Alternative":{"atoms":[91,92,93,94]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[90,95,96]}},{"Str":{"pattern":"196"}},{"Re":{"pattern":"[\\x30-\\x33]"}},{"Sequence":{"atoms":[98,99]}},{"Alternative":{"atoms":[89,97,100]}},{"Named":{"name":"full_year","atom":101}},{"Sequence":{"atoms":[69,102]}},{"Repetition":{"atom":103,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[19,20,21,26,35,36,104]}},{"Entity":{"atom":136}},{"Entity":{"atom":25}},{"Str":{"pattern":" "}},{"Entity":{"atom":32}},{"Str":{"pattern":" "}},{"Sequence":{"atoms":[109,110]}},{"Repetition":{"atom":111,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":68}},{"Entity":{"atom":86}},{"Str":{"pattern":"191"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[115,116]}},{"Str":{"pattern":"19"}},{"Str":{"pattern":"2"}},{"Str":{"pattern":"3"}},{"Str":{"pattern":"4"}},{"Str":{"pattern":"5"}},{"Alternative":{"atoms":[119,120,121,122]}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[118,123,124]}},{"Str":{"pattern":"196"}},{"Re":{"pattern":"[\\x30-\\x33]"}},{"Sequence":{"atoms":[126,127]}},{"Re":{"pattern":"[\\x31-\\x36]"}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Sequence":{"atoms":[129,130]}},{"Alternative":{"atoms":[117,125,128,131]}},{"Named":{"name":"year","atom":132}},{"Sequence":{"atoms":[114,133]}},{"Repetition":{"atom":134,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[107,108,112,113,135]}},{"Alternative":{"atoms":[0,106]}}],"root":137},"bindings":[{"capture":"publisher","path":"publisher","type":"string","card":null,"preprocess":null},{"capture":"type","path":"type","type":"string","card":null,"preprocess":null},{"capture":"number","path":"number","type":"string","card":null,"preprocess":null},{"capture":"year","path":"year","type":"string","card":null,"preprocess":null},{"capture":"full_year","path":"full_year","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":["rule year_full: branches 1 and 2 are order-dependent (shared first bytes; ordered choice is decisive)","rule year_full: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule year_full: branches 2 and 3 are order-dependent (shared first bytes; ordered choice is decisive)","rule yr_sep: branches 1 and 3 are order-dependent (shared first bytes; ordered choice is decisive)"]},"default_entry":"ire_identifier","render":{},"derive":{},"tests":[{"entry":"ire_identifier","kind":"accept","input":"IRE Trans. PGI-7","expect":{}},{"entry":"ire_identifier","kind":"accept","input":"1930 IRE 20","expect":{}},{"entry":"ire_identifier","kind":"accept","input":"IRE Standard 15 S1","expect":{}},{"entry":"ire_identifier","kind":"accept","input":"IRE 28","expect":{}},{"entry":"ire_identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/ieee/ire/parser.rb — IRE (pre-IEEE) designations:\n# year-first and prefix-first forms, types (Trans./Standard/Std),\n# numbers (dotted letters, IRE-glued, letters-dash) and dates.\n# Consumed by the ieee grammar via `use ire`.\n#\n# Edition-2 notes: the year / year_full bodies are inlined at every\n# capture site (a capture wrapping a rule ref expands to element hashes,\n# while the inlined body binds as one scalar string), and the helper\n# spaces around captures stay raw literals (a parenthesized ref\n# materializes a stray named node).\n\ngrammar PubidIre version \"0.1.0\" edition 2 {\n digit = %x30-39\n upper = %x41-5A\n space = \" \"\n dash = \"-\"\n dot = \".\"\n\n year_short = (%x31-36 %x30-39)\n year_full = ((\"191\" %x30-39)) / ((\"19\" (\"2\" / \"3\" / \"4\" / \"5\") %x30-39)) / ((\"196\" %x30-33))\n ire_prefix = (\"IEEE-IRE\" / \"IRE\") as publisher\n ire_type = (\"Trans.\" / \"Standard\" / \"Std\") as type\n number = {\n (\n ( 1*(%x30-39) (\" \" / \".\") %x41-5A 1*(%x30-39) )\n / ( 1*(%x30-39) \".\" \"IRE\" 1*(%x30-39) \".\" 1*(%x30-39) %x41-5A 1*(%x30-39) )\n / ( 2*4%x41-5A \"-\" 1*(%x30-39) )\n / ( 1*(%x30-39) )\n ) as number\n }\n yr_sep = (space [(dash / \",\")] [space]) / (dash / \",\") / space\n\n # The trailing optional stays flattened on purpose: a nested\n # [([x] [y])] compiles to branches that commit past the leading space\n # in the pure-Ruby VM, losing the backtrack the year-less forms need.\n ire_identifier_year_first = {\n (\n (\"191\" %x30-39)\n / (\"19\" (\"2\" / \"3\" / \"4\" / \"5\") %x30-39)\n / (\"196\" %x30-33)\n / (%x31-36 %x30-39)\n ) as year\n \" \" ire_prefix \" \" [ire_type \" \"] number\n [ yr_sep (\n (\"191\" %x30-39)\n / (\"19\" (\"2\" / \"3\" / \"4\" / \"5\") %x30-39)\n / (\"196\" %x30-33)\n ) as full_year ]\n }\n ire_identifier_prefix_first = {\n ire_prefix \" \" [ire_type \" \"] number\n [ yr_sep (\n (\"191\" %x30-39)\n / (\"19\" (\"2\" / \"3\" / \"4\" / \"5\") %x30-39)\n / (\"196\" %x30-33)\n / (%x31-36 %x30-39)\n ) as year ]\n }\n ire_identifier = ire_identifier_year_first / ire_identifier_prefix_first\n\n entry ire_identifier: ire_identifier\n\n bindings ire_identifier {\n publisher -> publisher (string)\n type -> type (string)\n number -> number (string)\n year -> year (string)\n full_year -> full_year (string)\n }\n\n test {\n accept \"IRE Trans. PGI-7\"\n accept \"1930 IRE 20\"\n accept \"IRE Standard 15 S1\"\n accept \"IRE 28\"\n reject \"nonsense\"\n }\n}\n","source_hash":"c4e0006d9f6995e5c75e03b2f277fc9a078ca5d49367bbc17a48ac994b53ba8e","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:d381eee0583376c50b1e0c48b3cef50380a2368fedf6932e592fff4469845e84"}
|
data/data/parg/ire.parg
CHANGED
|
@@ -2,33 +2,72 @@
|
|
|
2
2
|
# year-first and prefix-first forms, types (Trans./Standard/Std),
|
|
3
3
|
# numbers (dotted letters, IRE-glued, letters-dash) and dates.
|
|
4
4
|
# Consumed by the ieee grammar via `use ire`.
|
|
5
|
+
#
|
|
6
|
+
# Edition-2 notes: the year / year_full bodies are inlined at every
|
|
7
|
+
# capture site (a capture wrapping a rule ref expands to element hashes,
|
|
8
|
+
# while the inlined body binds as one scalar string), and the helper
|
|
9
|
+
# spaces around captures stay raw literals (a parenthesized ref
|
|
10
|
+
# materializes a stray named node).
|
|
5
11
|
|
|
6
|
-
grammar PubidIre version "0.1.0" {
|
|
12
|
+
grammar PubidIre version "0.1.0" edition 2 {
|
|
7
13
|
digit = %x30-39
|
|
8
14
|
upper = %x41-5A
|
|
9
|
-
digits = 1*digit
|
|
10
15
|
space = " "
|
|
11
16
|
dash = "-"
|
|
12
17
|
dot = "."
|
|
13
18
|
|
|
14
|
-
year_short = (%x31-36
|
|
15
|
-
year_full = (("191"
|
|
16
|
-
year = year_full / year_short
|
|
19
|
+
year_short = (%x31-36 %x30-39)
|
|
20
|
+
year_full = (("191" %x30-39)) / (("19" ("2" / "3" / "4" / "5") %x30-39)) / (("196" %x30-33))
|
|
17
21
|
ire_prefix = ("IEEE-IRE" / "IRE") as publisher
|
|
18
22
|
ire_type = ("Trans." / "Standard" / "Std") as type
|
|
19
|
-
number =
|
|
23
|
+
number = {
|
|
24
|
+
(
|
|
25
|
+
( 1*(%x30-39) (" " / ".") %x41-5A 1*(%x30-39) )
|
|
26
|
+
/ ( 1*(%x30-39) "." "IRE" 1*(%x30-39) "." 1*(%x30-39) %x41-5A 1*(%x30-39) )
|
|
27
|
+
/ ( 2*4%x41-5A "-" 1*(%x30-39) )
|
|
28
|
+
/ ( 1*(%x30-39) )
|
|
29
|
+
) as number
|
|
30
|
+
}
|
|
20
31
|
yr_sep = (space [(dash / ",")] [space]) / (dash / ",") / space
|
|
21
|
-
date = [yr_sep (year) as year]
|
|
22
32
|
|
|
23
|
-
# The trailing optional
|
|
24
|
-
# compiles to branches that commit past the leading space
|
|
25
|
-
# pure-Ruby VM, losing the backtrack the year-less forms need.
|
|
26
|
-
ire_identifier_year_first =
|
|
27
|
-
|
|
33
|
+
# The trailing optional stays flattened on purpose: a nested
|
|
34
|
+
# [([x] [y])] compiles to branches that commit past the leading space
|
|
35
|
+
# in the pure-Ruby VM, losing the backtrack the year-less forms need.
|
|
36
|
+
ire_identifier_year_first = {
|
|
37
|
+
(
|
|
38
|
+
("191" %x30-39)
|
|
39
|
+
/ ("19" ("2" / "3" / "4" / "5") %x30-39)
|
|
40
|
+
/ ("196" %x30-33)
|
|
41
|
+
/ (%x31-36 %x30-39)
|
|
42
|
+
) as year
|
|
43
|
+
" " ire_prefix " " [ire_type " "] number
|
|
44
|
+
[ yr_sep (
|
|
45
|
+
("191" %x30-39)
|
|
46
|
+
/ ("19" ("2" / "3" / "4" / "5") %x30-39)
|
|
47
|
+
/ ("196" %x30-33)
|
|
48
|
+
) as full_year ]
|
|
49
|
+
}
|
|
50
|
+
ire_identifier_prefix_first = {
|
|
51
|
+
ire_prefix " " [ire_type " "] number
|
|
52
|
+
[ yr_sep (
|
|
53
|
+
("191" %x30-39)
|
|
54
|
+
/ ("19" ("2" / "3" / "4" / "5") %x30-39)
|
|
55
|
+
/ ("196" %x30-33)
|
|
56
|
+
/ (%x31-36 %x30-39)
|
|
57
|
+
) as year ]
|
|
58
|
+
}
|
|
28
59
|
ire_identifier = ire_identifier_year_first / ire_identifier_prefix_first
|
|
29
60
|
|
|
30
61
|
entry ire_identifier: ire_identifier
|
|
31
62
|
|
|
63
|
+
bindings ire_identifier {
|
|
64
|
+
publisher -> publisher (string)
|
|
65
|
+
type -> type (string)
|
|
66
|
+
number -> number (string)
|
|
67
|
+
year -> year (string)
|
|
68
|
+
full_year -> full_year (string)
|
|
69
|
+
}
|
|
70
|
+
|
|
32
71
|
test {
|
|
33
72
|
accept "IRE Trans. PGI-7"
|
|
34
73
|
accept "1930 IRE 20"
|
data/data/parg/isbn.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bindings":null,"version":"0.1.0","grammar":"PubidIsbn","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":
|
|
1
|
+
{"bindings":null,"version":"0.1.0","grammar":"PubidIsbn","shape":"parsanol-tree/v2","binding_version":1,"entries":{"identifier":{"root":"identifier","grammar":{"atoms":[{"Entity":{"atom":14}},{"Str":{"pattern":"ISBN"}},{"Entity":{"atom":3}},{"Str":{"pattern":" "}},{"Entity":{"atom":3}},{"Repetition":{"atom":4,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":7}},{"Str":{"pattern":":"}},{"Named":{"name":"colon","atom":6}},{"Entity":{"atom":3}},{"Repetition":{"atom":9,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[5,8,10]}},{"Alternative":{"atoms":[2,11]}},{"Sequence":{"atoms":[1,12]}},{"Repetition":{"atom":13,"min":0,"max":1,"tag":"Maybe"}},{"Repetition":{"atom":0,"min":0,"max":1,"tag":"Maybe"}},{"Entity":{"atom":32}},{"Entity":{"atom":18}},{"Re":{"pattern":"[\\x30-\\x39]"}},{"Repetition":{"atom":17,"min":1,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"-"}},{"Entity":{"atom":18}},{"Repetition":{"atom":21,"min":1,"max":null,"tag":"Repetition"}},{"Sequence":{"atoms":[20,22]}},{"Repetition":{"atom":23,"min":0,"max":null,"tag":"Repetition"}},{"Str":{"pattern":"-"}},{"Entity":{"atom":18}},{"Str":{"pattern":"X"}},{"Alternative":{"atoms":[26,27]}},{"Sequence":{"atoms":[25,28]}},{"Repetition":{"atom":29,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[19,24,30]}},{"Named":{"name":"body","atom":31}},{"Entity":{"atom":41}},{"Entity":{"atom":18}},{"Repetition":{"atom":34,"min":9,"max":12,"tag":"Repetition"}},{"Entity":{"atom":18}},{"Str":{"pattern":"X"}},{"Alternative":{"atoms":[36,37]}},{"Repetition":{"atom":38,"min":0,"max":1,"tag":"Maybe"}},{"Sequence":{"atoms":[35,39]}},{"Named":{"name":"body","atom":40}},{"Alternative":{"atoms":[16,33]}},{"Sequence":{"atoms":[15,42]}}],"root":43},"bindings":[{"capture":"body","path":"body","type":"string","card":null,"preprocess":null}]}},"preprocess":{},"tables":{},"lint":{"order_warnings":[]},"default_entry":"identifier","render":{},"derive":{},"tests":[{"entry":"identifier","kind":"accept","input":"ISBN 978-0-306-40615-7","expect":{}},{"entry":"identifier","kind":"accept","input":"978-0-306-40615-7","expect":{}},{"entry":"identifier","kind":"accept","input":"0-306-40615-2","expect":{}},{"entry":"identifier","kind":"reject","input":"nonsense","expect":{}}],"docs":{},"source":"# Port of lib/pubid/isbn/parser.rb: [ISBN[ |:]] digits/hyphens with an\n# optional final X (ISBN-10 check digit), per ISO 2108.\n\ngrammar PubidIsbn version \"0.1.0\" edition 2 {\n digit = %x30-39\n x_digit = digit / \"X\"\n isbn_prefix = [\"ISBN\" (space / ([space] colon [space]))]\n digit_group = 1*digit\n hyphen_body = (1*digit *(\"-\" 1*digit) [\"-\" (digit / \"X\")]) as body\n plain_body = (9*12digit [(digit / \"X\")]) as body\n identifier = [isbn_prefix] (hyphen_body / plain_body)\n space = \" \"\n colon = \":\"\n hyphen = \"-\"\n entry identifier: identifier\n\n bindings identifier {\n body -> body (string)\n }\n\n\n test {\n accept \"ISBN 978-0-306-40615-7\"\n accept \"978-0-306-40615-7\"\n accept \"0-306-40615-2\"\n reject \"nonsense\"\n }\n}\n","source_hash":"f51cde7d61a7430a88c5fdf9e8e9ae21b8139cc2f4bb3d3e6412739c81336bde","unicode_tables":"onigmo (Ruby 3.4.8)","compiler_version":"1.3.114","edition":2,"checksum":"sha256:e42ff78bfd5bba2199f0748c4306dcb6f00cb7b2b6bff50e71e4a93b269e0e4f"}
|