pubid 2.0.0.alpha.10 → 2.0.0.pre.alpha.1

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.
Files changed (811) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +51 -54
  3. data/data/iec/update_codes.yaml +0 -3
  4. data/data/ieee/update_codes.yaml +1 -107
  5. data/data/nist/update_codes.yaml +0 -35
  6. data/lib/pubid/amca/builder.rb +6 -6
  7. data/lib/pubid/amca/identifier.rb +16 -2
  8. data/lib/pubid/amca/identifiers/base.rb +46 -74
  9. data/lib/pubid/amca/identifiers/interpretation.rb +30 -17
  10. data/lib/pubid/amca/identifiers/publication.rb +27 -14
  11. data/lib/pubid/amca/identifiers/standard.rb +5 -3
  12. data/lib/pubid/amca/identifiers.rb +1 -0
  13. data/lib/pubid/amca/parser.rb +1 -1
  14. data/lib/pubid/amca/scheme.rb +16 -0
  15. data/lib/pubid/amca/single_identifier.rb +24 -1
  16. data/lib/pubid/amca/urn_generator.rb +3 -4
  17. data/lib/pubid/amca.rb +3 -50
  18. data/lib/pubid/ansi/builder.rb +5 -7
  19. data/lib/pubid/ansi/identifier.rb +1 -19
  20. data/lib/pubid/ansi/identifiers/american_national_standard.rb +1 -2
  21. data/lib/pubid/ansi/identifiers/standard.rb +3 -2
  22. data/lib/pubid/ansi/parser.rb +1 -1
  23. data/lib/pubid/ansi/scheme.rb +15 -0
  24. data/lib/pubid/ansi/single_identifier.rb +31 -2
  25. data/lib/pubid/ansi/urn_generator.rb +38 -3
  26. data/lib/pubid/ansi.rb +6 -47
  27. data/lib/pubid/api/builder.rb +72 -45
  28. data/lib/pubid/api/identifier.rb +9 -30
  29. data/lib/pubid/api/identifiers/base.rb +14 -2
  30. data/lib/pubid/api/identifiers/bulletin.rb +2 -0
  31. data/lib/pubid/api/identifiers/continuous_operations_standard.rb +2 -0
  32. data/lib/pubid/api/identifiers/mpms.rb +28 -10
  33. data/lib/pubid/api/identifiers/publication.rb +2 -0
  34. data/lib/pubid/api/identifiers/recommended_practice.rb +2 -0
  35. data/lib/pubid/api/identifiers/specification.rb +2 -0
  36. data/lib/pubid/api/identifiers/standard.rb +2 -0
  37. data/lib/pubid/api/identifiers/technical_report.rb +2 -0
  38. data/lib/pubid/api/identifiers/typeless_standard.rb +16 -0
  39. data/lib/pubid/api/parser.rb +1 -1
  40. data/lib/pubid/api/scheme.rb +66 -0
  41. data/lib/pubid/api/single_identifier.rb +32 -10
  42. data/lib/pubid/api/urn_generator.rb +18 -0
  43. data/lib/pubid/api.rb +5 -56
  44. data/lib/pubid/ashrae/builder.rb +35 -56
  45. data/lib/pubid/ashrae/identifier.rb +16 -6
  46. data/lib/pubid/ashrae/identifiers/addenda_package.rb +11 -7
  47. data/lib/pubid/ashrae/identifiers/addendum.rb +20 -9
  48. data/lib/pubid/ashrae/identifiers/base.rb +15 -111
  49. data/lib/pubid/ashrae/identifiers/combined_addenda.rb +16 -8
  50. data/lib/pubid/ashrae/identifiers/errata.rb +10 -9
  51. data/lib/pubid/ashrae/identifiers/guideline.rb +0 -3
  52. data/lib/pubid/ashrae/identifiers/interpretation.rb +10 -16
  53. data/lib/pubid/ashrae/identifiers/standard.rb +0 -3
  54. data/lib/pubid/ashrae/identifiers.rb +1 -0
  55. data/lib/pubid/ashrae/parser.rb +16 -40
  56. data/lib/pubid/ashrae/scheme.rb +53 -0
  57. data/lib/pubid/ashrae/single_identifier.rb +14 -1
  58. data/lib/pubid/ashrae/supplement_identifier.rb +6 -21
  59. data/lib/pubid/ashrae/urn_generator.rb +10 -8
  60. data/lib/pubid/ashrae.rb +2 -58
  61. data/lib/pubid/asme/builder.rb +2 -11
  62. data/lib/pubid/asme/components/code.rb +2 -10
  63. data/lib/pubid/asme/identifier.rb +0 -9
  64. data/lib/pubid/asme/identifiers/base.rb +60 -0
  65. data/lib/pubid/asme/identifiers/standard.rb +2 -86
  66. data/lib/pubid/asme/parser.rb +1 -1
  67. data/lib/pubid/asme/scheme.rb +37 -0
  68. data/lib/pubid/asme/single_identifier.rb +2 -11
  69. data/lib/pubid/asme/urn_generator.rb +2 -2
  70. data/lib/pubid/asme.rb +1 -47
  71. data/lib/pubid/astm/builder.rb +3 -10
  72. data/lib/pubid/astm/components/code.rb +0 -9
  73. data/lib/pubid/astm/identifier.rb +0 -9
  74. data/lib/pubid/astm/identifiers/adjunct.rb +9 -16
  75. data/lib/pubid/astm/identifiers/data_series.rb +14 -2
  76. data/lib/pubid/astm/identifiers/iso_dual_published.rb +34 -25
  77. data/lib/pubid/astm/identifiers/manual.rb +25 -8
  78. data/lib/pubid/astm/identifiers/monograph.rb +14 -2
  79. data/lib/pubid/astm/identifiers/research_report.rb +5 -8
  80. data/lib/pubid/astm/identifiers/standard.rb +37 -8
  81. data/lib/pubid/astm/identifiers/technical_report.rb +13 -2
  82. data/lib/pubid/astm/identifiers/work_in_progress.rb +10 -1
  83. data/lib/pubid/astm/parser.rb +1 -1
  84. data/lib/pubid/astm/scheme.rb +55 -0
  85. data/lib/pubid/astm/single_identifier.rb +10 -32
  86. data/lib/pubid/astm/urn_generator.rb +5 -7
  87. data/lib/pubid/astm.rb +27 -44
  88. data/lib/pubid/bsi/builder.rb +107 -119
  89. data/lib/pubid/bsi/identifier.rb +25 -4
  90. data/lib/pubid/bsi/identifiers/addendum_document.rb +37 -3
  91. data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +47 -19
  92. data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +39 -8
  93. data/lib/pubid/bsi/identifiers/aerospace_standard.rb +55 -2
  94. data/lib/pubid/bsi/identifiers/amendment.rb +22 -30
  95. data/lib/pubid/bsi/identifiers/base.rb +11 -0
  96. data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +7 -1
  97. data/lib/pubid/bsi/identifiers/british_standard.rb +1 -2
  98. data/lib/pubid/bsi/identifiers/bundled_identifier.rb +87 -13
  99. data/lib/pubid/bsi/identifiers/committee_document.rb +17 -10
  100. data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +87 -19
  101. data/lib/pubid/bsi/identifiers/corrigendum.rb +10 -26
  102. data/lib/pubid/bsi/identifiers/detailed_specification.rb +36 -0
  103. data/lib/pubid/bsi/identifiers/disc.rb +29 -0
  104. data/lib/pubid/bsi/identifiers/draft_document.rb +46 -2
  105. data/lib/pubid/bsi/identifiers/electronic_book.rb +38 -2
  106. data/lib/pubid/bsi/identifiers/expert_commentary.rb +21 -10
  107. data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +47 -0
  108. data/lib/pubid/bsi/identifiers/flex.rb +34 -3
  109. data/lib/pubid/bsi/identifiers/handbook.rb +17 -1
  110. data/lib/pubid/bsi/identifiers/index.rb +32 -0
  111. data/lib/pubid/bsi/identifiers/method.rb +41 -0
  112. data/lib/pubid/bsi/identifiers/national_annex.rb +29 -4
  113. data/lib/pubid/bsi/identifiers/practice_guide.rb +7 -1
  114. data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +54 -2
  115. data/lib/pubid/bsi/identifiers/published_document.rb +54 -2
  116. data/lib/pubid/bsi/identifiers/section.rb +30 -0
  117. data/lib/pubid/bsi/identifiers/set.rb +20 -14
  118. data/lib/pubid/bsi/identifiers/standalone_amendment.rb +10 -10
  119. data/lib/pubid/bsi/identifiers/supplement_document.rb +25 -3
  120. data/lib/pubid/bsi/identifiers/supplementary_index.rb +46 -0
  121. data/lib/pubid/bsi/identifiers/technical_specification.rb +47 -2
  122. data/lib/pubid/bsi/identifiers/test_method.rb +32 -0
  123. data/lib/pubid/bsi/identifiers/value_added_publication.rb +22 -7
  124. data/lib/pubid/bsi/identifiers.rb +1 -0
  125. data/lib/pubid/bsi/parser.rb +6 -20
  126. data/lib/pubid/bsi/scheme.rb +243 -0
  127. data/lib/pubid/bsi/single_identifier.rb +82 -94
  128. data/lib/pubid/bsi/urn_generator.rb +5 -13
  129. data/lib/pubid/bsi.rb +2 -252
  130. data/lib/pubid/builder/base.rb +13 -62
  131. data/lib/pubid/bundled_identifier.rb +10 -18
  132. data/lib/pubid/ccsds/builder.rb +4 -5
  133. data/lib/pubid/ccsds/identifier.rb +3 -63
  134. data/lib/pubid/ccsds/identifiers/base.rb +51 -14
  135. data/lib/pubid/ccsds/identifiers/corrigendum.rb +8 -9
  136. data/lib/pubid/ccsds/parser.rb +3 -5
  137. data/lib/pubid/ccsds/scheme.rb +57 -0
  138. data/lib/pubid/ccsds/single_identifier.rb +3 -6
  139. data/lib/pubid/ccsds/supplement_identifier.rb +13 -17
  140. data/lib/pubid/ccsds/urn_generator.rb +6 -6
  141. data/lib/pubid/ccsds.rb +1 -44
  142. data/lib/pubid/cen_cenelec/builder.rb +29 -61
  143. data/lib/pubid/cen_cenelec/identifier.rb +5 -28
  144. data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +4 -9
  145. data/lib/pubid/cen_cenelec/identifiers/amendment.rb +12 -2
  146. data/lib/pubid/cen_cenelec/identifiers/base.rb +46 -5
  147. data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +1 -2
  148. data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +1 -2
  149. data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +27 -6
  150. data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +17 -2
  151. data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +4 -62
  152. data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +7 -20
  153. data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +1 -2
  154. data/lib/pubid/cen_cenelec/identifiers/fragment.rb +6 -2
  155. data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +1 -2
  156. data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +1 -2
  157. data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +1 -2
  158. data/lib/pubid/cen_cenelec/parser.rb +1 -1
  159. data/lib/pubid/cen_cenelec/scheme.rb +164 -0
  160. data/lib/pubid/cen_cenelec/single_identifier.rb +91 -10
  161. data/lib/pubid/cen_cenelec/supplement_identifier.rb +7 -6
  162. data/lib/pubid/cen_cenelec/urn_generator.rb +7 -7
  163. data/lib/pubid/cen_cenelec.rb +1 -188
  164. data/lib/pubid/cie/builder.rb +24 -149
  165. data/lib/pubid/cie/components/code.rb +72 -0
  166. data/lib/pubid/cie/identifier.rb +5 -20
  167. data/lib/pubid/cie/identifiers/bundle.rb +5 -35
  168. data/lib/pubid/cie/identifiers/conference.rb +6 -11
  169. data/lib/pubid/cie/identifiers/corrigendum.rb +23 -17
  170. data/lib/pubid/cie/identifiers/dual_published.rb +6 -6
  171. data/lib/pubid/cie/identifiers/identical.rb +9 -9
  172. data/lib/pubid/cie/identifiers/joint_published.rb +10 -10
  173. data/lib/pubid/cie/identifiers/standard.rb +8 -43
  174. data/lib/pubid/cie/identifiers/supplement.rb +25 -27
  175. data/lib/pubid/cie/identifiers/tutorial_bundle.rb +3 -7
  176. data/lib/pubid/cie/identifiers.rb +0 -2
  177. data/lib/pubid/cie/parser.rb +6 -55
  178. data/lib/pubid/cie/scheme.rb +64 -0
  179. data/lib/pubid/cie/single_identifier.rb +5 -44
  180. data/lib/pubid/cie/supplement_identifier.rb +16 -29
  181. data/lib/pubid/cie/urn_generator.rb +8 -11
  182. data/lib/pubid/cie.rb +2 -57
  183. data/lib/pubid/components/code.rb +8 -22
  184. data/lib/pubid/components/date.rb +18 -41
  185. data/lib/pubid/components/edition.rb +6 -9
  186. data/lib/pubid/components/language.rb +4 -6
  187. data/lib/pubid/components/locality.rb +1 -10
  188. data/lib/pubid/components/publisher.rb +6 -9
  189. data/lib/pubid/components/stage.rb +14 -5
  190. data/lib/pubid/components/type.rb +15 -5
  191. data/lib/pubid/components/typed_stage.rb +8 -11
  192. data/lib/pubid/components.rb +0 -4
  193. data/lib/pubid/core/update_codes.rb +7 -28
  194. data/lib/pubid/csa/builder.rb +48 -48
  195. data/lib/pubid/csa/composite_identifier.rb +7 -18
  196. data/lib/pubid/csa/identifier.rb +78 -191
  197. data/lib/pubid/csa/identifiers/base.rb +123 -0
  198. data/lib/pubid/csa/identifiers/bundled.rb +9 -25
  199. data/lib/pubid/csa/identifiers/canadian_adopted.rb +13 -13
  200. data/lib/pubid/csa/identifiers/cec.rb +103 -40
  201. data/lib/pubid/csa/identifiers/combined.rb +69 -97
  202. data/lib/pubid/csa/identifiers/csa_adopted.rb +4 -4
  203. data/lib/pubid/csa/identifiers/package.rb +4 -4
  204. data/lib/pubid/csa/identifiers/series.rb +104 -0
  205. data/lib/pubid/csa/parser.rb +8 -12
  206. data/lib/pubid/csa/scheme.rb +44 -0
  207. data/lib/pubid/csa/single_identifier.rb +5 -94
  208. data/lib/pubid/csa/urn_generator.rb +2 -9
  209. data/lib/pubid/csa/wrapper_identifier.rb +10 -43
  210. data/lib/pubid/csa.rb +1 -56
  211. data/lib/pubid/etsi/builder.rb +4 -13
  212. data/lib/pubid/etsi/components/code.rb +9 -10
  213. data/lib/pubid/etsi/components/version.rb +5 -0
  214. data/lib/pubid/etsi/identifier.rb +12 -2
  215. data/lib/pubid/etsi/identifiers/base.rb +24 -60
  216. data/lib/pubid/etsi/identifiers/etsi_standard.rb +4 -207
  217. data/lib/pubid/etsi/identifiers/supplement_identifier.rb +14 -46
  218. data/lib/pubid/etsi/identifiers.rb +1 -0
  219. data/lib/pubid/etsi/parser.rb +3 -9
  220. data/lib/pubid/etsi/scheme.rb +42 -0
  221. data/lib/pubid/etsi.rb +2 -52
  222. data/lib/pubid/export/data_class_exporter.rb +59 -0
  223. data/lib/pubid/export/exporter.rb +47 -6
  224. data/lib/pubid/export/flavor_exporter.rb +276 -124
  225. data/lib/pubid/export/ieee_exporter.rb +78 -0
  226. data/lib/pubid/export/itu_exporter.rb +66 -0
  227. data/lib/pubid/export/nist_exporter.rb +64 -0
  228. data/lib/pubid/export/registry_exporter.rb +90 -0
  229. data/lib/pubid/export/scheme_exporter.rb +70 -0
  230. data/lib/pubid/export.rb +6 -0
  231. data/lib/pubid/identifier.rb +37 -920
  232. data/lib/pubid/identifier_metadata.rb +1 -1
  233. data/lib/pubid/identifier_registry.rb +198 -0
  234. data/lib/pubid/idf/builder.rb +7 -7
  235. data/lib/pubid/idf/identifier.rb +13 -23
  236. data/lib/pubid/idf/identifiers/amendment.rb +1 -2
  237. data/lib/pubid/idf/identifiers/corrigendum.rb +1 -2
  238. data/lib/pubid/idf/identifiers/international_standard.rb +1 -2
  239. data/lib/pubid/idf/identifiers/reviewed_method.rb +1 -2
  240. data/lib/pubid/idf/parser.rb +5 -6
  241. data/lib/pubid/idf/scheme.rb +61 -0
  242. data/lib/pubid/idf/supplement_identifier.rb +13 -5
  243. data/lib/pubid/idf/urn_generator.rb +39 -4
  244. data/lib/pubid/idf.rb +1 -65
  245. data/lib/pubid/iec/builder.rb +91 -92
  246. data/lib/pubid/iec/components/code.rb +32 -9
  247. data/lib/pubid/iec/components/publisher.rb +1 -1
  248. data/lib/pubid/iec/identifier.rb +8 -328
  249. data/lib/pubid/iec/identifiers/amendment.rb +5 -8
  250. data/lib/pubid/iec/identifiers/base.rb +31 -7
  251. data/lib/pubid/iec/identifiers/component_specification.rb +13 -3
  252. data/lib/pubid/iec/identifiers/conformity_assessment.rb +12 -1
  253. data/lib/pubid/iec/identifiers/consolidated_identifier.rb +30 -29
  254. data/lib/pubid/iec/identifiers/corrigendum.rb +5 -4
  255. data/lib/pubid/iec/identifiers/fragment_identifier.rb +36 -43
  256. data/lib/pubid/iec/identifiers/guide.rb +18 -0
  257. data/lib/pubid/iec/identifiers/international_standard.rb +9 -24
  258. data/lib/pubid/iec/identifiers/interpretation_sheet.rb +3 -2
  259. data/lib/pubid/iec/identifiers/operational_document.rb +13 -3
  260. data/lib/pubid/iec/identifiers/publicly_available_specification.rb +15 -2
  261. data/lib/pubid/iec/identifiers/sheet_identifier.rb +24 -26
  262. data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +13 -3
  263. data/lib/pubid/iec/identifiers/systems_reference_document.rb +13 -2
  264. data/lib/pubid/iec/identifiers/technical_report.rb +21 -3
  265. data/lib/pubid/iec/identifiers/technical_specification.rb +21 -3
  266. data/lib/pubid/iec/identifiers/technology_report.rb +12 -1
  267. data/lib/pubid/iec/identifiers/test_report_form.rb +46 -3
  268. data/lib/pubid/iec/identifiers/vap_identifier.rb +34 -33
  269. data/lib/pubid/iec/identifiers/white_paper.rb +13 -3
  270. data/lib/pubid/iec/identifiers/working_document.rb +60 -26
  271. data/lib/pubid/iec/parser.rb +42 -73
  272. data/lib/pubid/iec/scheme.rb +71 -0
  273. data/lib/pubid/iec/single_identifier.rb +23 -15
  274. data/lib/pubid/iec/supplement_identifier.rb +67 -84
  275. data/lib/pubid/iec/urn_generator.rb +143 -195
  276. data/lib/pubid/iec/urn_parser.rb +246 -85
  277. data/lib/pubid/iec.rb +66 -45
  278. data/lib/pubid/ieee/aiee/builder.rb +3 -17
  279. data/lib/pubid/ieee/aiee/identifier.rb +62 -46
  280. data/lib/pubid/ieee/aiee/parser.rb +1 -1
  281. data/lib/pubid/ieee/builder.rb +81 -398
  282. data/lib/pubid/ieee/components/code.rb +0 -8
  283. data/lib/pubid/ieee/components/draft.rb +0 -54
  284. data/lib/pubid/ieee/components/relationship.rb +149 -5
  285. data/lib/pubid/ieee/identifier.rb +11 -3
  286. data/lib/pubid/ieee/identifiers/adopted_standard.rb +14 -62
  287. data/lib/pubid/ieee/identifiers/base.rb +547 -340
  288. data/lib/pubid/ieee/identifiers/conformance_identifier.rb +12 -6
  289. data/lib/pubid/ieee/identifiers/corrigendum.rb +12 -15
  290. data/lib/pubid/ieee/identifiers/csa_dual_published.rb +13 -24
  291. data/lib/pubid/ieee/identifiers/dual_identifier.rb +7 -3
  292. data/lib/pubid/ieee/identifiers/dual_published.rb +7 -58
  293. data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +11 -99
  294. data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +11 -25
  295. data/lib/pubid/ieee/identifiers/joint_development.rb +15 -66
  296. data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +24 -58
  297. data/lib/pubid/ieee/identifiers/nesc/base.rb +19 -90
  298. data/lib/pubid/ieee/identifiers/nesc/draft.rb +5 -20
  299. data/lib/pubid/ieee/identifiers/nesc/handbook.rb +5 -16
  300. data/lib/pubid/ieee/identifiers/nesc/redline.rb +2 -11
  301. data/lib/pubid/ieee/identifiers/nesc/standard.rb +3 -18
  302. data/lib/pubid/ieee/identifiers/nesc.rb +0 -1
  303. data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +9 -3
  304. data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +6 -29
  305. data/lib/pubid/ieee/identifiers/redlined_standard.rb +11 -4
  306. data/lib/pubid/ieee/identifiers/si_standard.rb +39 -4
  307. data/lib/pubid/ieee/identifiers/standard.rb +2 -5
  308. data/lib/pubid/ieee/identifiers/supplement_identifier.rb +7 -26
  309. data/lib/pubid/ieee/identifiers.rb +1 -2
  310. data/lib/pubid/ieee/ire/builder.rb +6 -7
  311. data/lib/pubid/ieee/ire/identifier.rb +33 -48
  312. data/lib/pubid/ieee/ire/parser.rb +1 -1
  313. data/lib/pubid/ieee/nesc/builder.rb +20 -33
  314. data/lib/pubid/ieee/nesc/parser.rb +15 -16
  315. data/lib/pubid/ieee/parser.rb +44 -462
  316. data/lib/pubid/ieee/scheme.rb +90 -0
  317. data/lib/pubid/ieee/typed_stages.rb +1 -12
  318. data/lib/pubid/ieee/urn_generator.rb +8 -35
  319. data/lib/pubid/ieee.rb +2 -133
  320. data/lib/pubid/ieee_debug.rb +1 -0
  321. data/lib/pubid/iho/builder.rb +2 -2
  322. data/lib/pubid/iho/identifier.rb +17 -5
  323. data/lib/pubid/iho/identifiers/base.rb +30 -64
  324. data/lib/pubid/iho/identifiers/bibliographic.rb +5 -1
  325. data/lib/pubid/iho/identifiers/circular_letter.rb +5 -1
  326. data/lib/pubid/iho/identifiers/miscellaneous.rb +5 -1
  327. data/lib/pubid/iho/identifiers/publication.rb +5 -1
  328. data/lib/pubid/iho/identifiers/standard.rb +5 -1
  329. data/lib/pubid/iho/identifiers.rb +1 -0
  330. data/lib/pubid/iho/parser.rb +4 -4
  331. data/lib/pubid/iho/scheme.rb +29 -0
  332. data/lib/pubid/iho/urn_generator.rb +3 -3
  333. data/lib/pubid/iho.rb +3 -59
  334. data/lib/pubid/iso/builder.rb +57 -68
  335. data/lib/pubid/iso/bundled_identifier.rb +3 -56
  336. data/lib/pubid/iso/combined_identifier.rb +4 -6
  337. data/lib/pubid/iso/components/code.rb +19 -7
  338. data/lib/pubid/iso/components/publisher.rb +8 -10
  339. data/lib/pubid/iso/components.rb +4 -2
  340. data/lib/pubid/iso/identifier.rb +11 -260
  341. data/lib/pubid/iso/identifiers/addendum.rb +6 -9
  342. data/lib/pubid/iso/identifiers/amendment.rb +4 -8
  343. data/lib/pubid/iso/identifiers/base.rb +115 -0
  344. data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
  345. data/lib/pubid/iso/identifiers/data.rb +1 -0
  346. data/lib/pubid/iso/identifiers/directives.rb +2 -8
  347. data/lib/pubid/iso/identifiers/directives_supplement.rb +26 -55
  348. data/lib/pubid/iso/identifiers/extract.rb +2 -2
  349. data/lib/pubid/iso/identifiers/guide.rb +1 -0
  350. data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
  351. data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
  352. data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +4 -10
  353. data/lib/pubid/iso/identifiers/pas.rb +2 -2
  354. data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
  355. data/lib/pubid/iso/identifiers/supplement.rb +3 -11
  356. data/lib/pubid/iso/identifiers/tc_document.rb +15 -44
  357. data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
  358. data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
  359. data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
  360. data/lib/pubid/iso/identifiers.rb +1 -0
  361. data/lib/pubid/iso/parser.rb +19 -43
  362. data/lib/pubid/iso/scheme.rb +187 -0
  363. data/lib/pubid/iso/single_identifier.rb +7 -6
  364. data/lib/pubid/iso/supplement_identifier.rb +3 -29
  365. data/lib/pubid/iso/urn_generator.rb +177 -78
  366. data/lib/pubid/iso/urn_parser.rb +10 -29
  367. data/lib/pubid/iso.rb +2 -188
  368. data/lib/pubid/itu/builder.rb +41 -230
  369. data/lib/pubid/itu/components/code.rb +12 -57
  370. data/lib/pubid/itu/components/sector.rb +4 -15
  371. data/lib/pubid/itu/components/series.rb +4 -0
  372. data/lib/pubid/itu/identifier.rb +51 -2
  373. data/lib/pubid/itu/identifiers/amendment.rb +31 -7
  374. data/lib/pubid/itu/identifiers/annex.rb +4 -13
  375. data/lib/pubid/itu/identifiers/base.rb +128 -456
  376. data/lib/pubid/itu/identifiers/combined_identifier.rb +25 -99
  377. data/lib/pubid/itu/identifiers/corrigendum.rb +25 -16
  378. data/lib/pubid/itu/identifiers/recommendation.rb +4 -3
  379. data/lib/pubid/itu/identifiers/special_publication.rb +3 -3
  380. data/lib/pubid/itu/identifiers/supplement.rb +16 -119
  381. data/lib/pubid/itu/identifiers.rb +1 -10
  382. data/lib/pubid/itu/model.rb +1 -1
  383. data/lib/pubid/itu/parser.rb +27 -481
  384. data/lib/pubid/itu/scheme.rb +174 -0
  385. data/lib/pubid/itu/urn_generator.rb +6 -36
  386. data/lib/pubid/itu.rb +2 -58
  387. data/lib/pubid/jcgm/builder.rb +19 -37
  388. data/lib/pubid/jcgm/identifier.rb +0 -10
  389. data/lib/pubid/jcgm/identifiers/amendment.rb +11 -0
  390. data/lib/pubid/jcgm/identifiers/gum_guide.rb +15 -3
  391. data/lib/pubid/jcgm/identifiers.rb +0 -2
  392. data/lib/pubid/jcgm/parser.rb +7 -74
  393. data/lib/pubid/jcgm/scheme.rb +60 -0
  394. data/lib/pubid/jcgm/single_identifier.rb +14 -84
  395. data/lib/pubid/jcgm/supplement_identifier.rb +4 -39
  396. data/lib/pubid/jcgm/urn_generator.rb +19 -25
  397. data/lib/pubid/jcgm.rb +2 -57
  398. data/lib/pubid/jis/builder.rb +52 -44
  399. data/lib/pubid/jis/components/code.rb +59 -0
  400. data/lib/pubid/{astm → jis}/components.rb +1 -1
  401. data/lib/pubid/jis/identifier.rb +5 -181
  402. data/lib/pubid/jis/identifiers/amendment.rb +1 -1
  403. data/lib/pubid/jis/identifiers/base.rb +72 -0
  404. data/lib/pubid/jis/identifiers/standard.rb +1 -2
  405. data/lib/pubid/jis/identifiers/technical_report.rb +1 -2
  406. data/lib/pubid/jis/identifiers/technical_specification.rb +1 -2
  407. data/lib/pubid/jis/identifiers.rb +1 -1
  408. data/lib/pubid/jis/parser.rb +6 -32
  409. data/lib/pubid/jis/scheme.rb +49 -0
  410. data/lib/pubid/jis/single_identifier.rb +12 -6
  411. data/lib/pubid/jis/supplement_identifier.rb +14 -17
  412. data/lib/pubid/jis.rb +2 -48
  413. data/lib/pubid/nist/builder.rb +1765 -146
  414. data/lib/pubid/nist/components/code.rb +20 -9
  415. data/lib/pubid/nist/components/edition.rb +0 -16
  416. data/lib/pubid/nist/components/publisher.rb +24 -0
  417. data/lib/pubid/nist/components/supplement.rb +21 -91
  418. data/lib/pubid/nist/components.rb +1 -0
  419. data/lib/pubid/nist/configuration.rb +2 -12
  420. data/lib/pubid/nist/identifiers/base.rb +417 -662
  421. data/lib/pubid/nist/identifiers/circular.rb +5 -17
  422. data/lib/pubid/nist/identifiers/circular_supplement.rb +6 -16
  423. data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -3
  424. data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +5 -7
  425. data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +5 -18
  426. data/lib/pubid/nist/identifiers/crpl_report.rb +13 -16
  427. data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -18
  428. data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -3
  429. data/lib/pubid/nist/identifiers/handbook.rb +4 -12
  430. data/lib/pubid/nist/identifiers/internal_report.rb +7 -15
  431. data/lib/pubid/nist/identifiers/letter_circular.rb +2 -3
  432. data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +11 -20
  433. data/lib/pubid/nist/identifiers/monograph.rb +11 -22
  434. data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
  435. data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
  436. data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
  437. data/lib/pubid/nist/identifiers/report.rb +10 -19
  438. data/lib/pubid/nist/identifiers/special_publication.rb +2 -12
  439. data/lib/pubid/nist/identifiers/technical_note.rb +3 -4
  440. data/lib/pubid/nist/identifiers.rb +1 -1
  441. data/lib/pubid/nist/parser.rb +429 -97
  442. data/lib/pubid/nist/scheme.rb +199 -0
  443. data/lib/pubid/nist/supplement_identifier.rb +34 -35
  444. data/lib/pubid/nist/urn_generator.rb +8 -14
  445. data/lib/pubid/nist.rb +5 -107
  446. data/lib/pubid/oiml/builder.rb +10 -91
  447. data/lib/pubid/oiml/components/code.rb +0 -17
  448. data/lib/pubid/oiml/identifier.rb +0 -53
  449. data/lib/pubid/oiml/identifiers/annex.rb +46 -13
  450. data/lib/pubid/oiml/identifiers/base.rb +36 -0
  451. data/lib/pubid/oiml/identifiers/basic_publication.rb +0 -2
  452. data/lib/pubid/oiml/identifiers/document.rb +0 -2
  453. data/lib/pubid/oiml/identifiers/expert_report.rb +0 -2
  454. data/lib/pubid/oiml/identifiers/guide.rb +0 -2
  455. data/lib/pubid/oiml/identifiers/recommendation.rb +0 -2
  456. data/lib/pubid/oiml/identifiers/seminar_report.rb +0 -2
  457. data/lib/pubid/oiml/identifiers/vocabulary.rb +0 -2
  458. data/lib/pubid/oiml/identifiers.rb +1 -3
  459. data/lib/pubid/oiml/parser.rb +17 -118
  460. data/lib/pubid/oiml/scheme.rb +46 -0
  461. data/lib/pubid/oiml/single_identifier.rb +43 -66
  462. data/lib/pubid/oiml/supplement_identifier.rb +17 -62
  463. data/lib/pubid/oiml/urn_generator.rb +8 -22
  464. data/lib/pubid/oiml.rb +1 -56
  465. data/lib/pubid/parser.rb +0 -1
  466. data/lib/pubid/parsers/mr_string.rb +7 -120
  467. data/lib/pubid/plateau/builder.rb +4 -8
  468. data/lib/pubid/plateau/identifiers/base.rb +36 -40
  469. data/lib/pubid/plateau/identifiers/handbook.rb +7 -1
  470. data/lib/pubid/plateau/identifiers/technical_report.rb +5 -1
  471. data/lib/pubid/plateau/identifiers.rb +1 -0
  472. data/lib/pubid/plateau/parser.rb +6 -16
  473. data/lib/pubid/plateau/scheme.rb +45 -0
  474. data/lib/pubid/plateau/supplement_identifier.rb +15 -11
  475. data/lib/pubid/plateau.rb +1 -58
  476. data/lib/pubid/renderers/base.rb +0 -47
  477. data/lib/pubid/renderers/directives_renderer.rb +14 -27
  478. data/lib/pubid/renderers/guide_renderer.rb +1 -7
  479. data/lib/pubid/renderers/human_readable.rb +9 -34
  480. data/lib/pubid/renderers/iwa_renderer.rb +1 -5
  481. data/lib/pubid/renderers/mr_string.rb +6 -54
  482. data/lib/pubid/renderers/supplement_renderer.rb +2 -5
  483. data/lib/pubid/renderers.rb +0 -1
  484. data/lib/pubid/rendering/base.rb +73 -0
  485. data/lib/pubid/rendering/common.rb +211 -0
  486. data/lib/pubid/rendering/context.rb +21 -33
  487. data/lib/pubid/rendering/format.rb +25 -0
  488. data/lib/pubid/rendering/numbering.rb +7 -25
  489. data/lib/pubid/rendering/supplement.rb +4 -4
  490. data/lib/pubid/rendering.rb +3 -0
  491. data/lib/pubid/sae/builder.rb +1 -1
  492. data/lib/pubid/sae/components/date.rb +0 -8
  493. data/lib/pubid/sae/components/type.rb +1 -5
  494. data/lib/pubid/sae/identifier.rb +12 -2
  495. data/lib/pubid/sae/identifiers/base.rb +28 -33
  496. data/lib/pubid/sae/identifiers.rb +1 -0
  497. data/lib/pubid/sae/parser.rb +1 -1
  498. data/lib/pubid/sae/scheme.rb +47 -0
  499. data/lib/pubid/sae/urn_generator.rb +10 -2
  500. data/lib/pubid/sae.rb +2 -49
  501. data/lib/pubid/scheme.rb +207 -0
  502. data/lib/pubid/urn_generator/base.rb +12 -12
  503. data/lib/pubid/version.rb +1 -1
  504. data/lib/pubid.rb +10 -424
  505. data/lib/tasks/export.rake +5 -6
  506. data/lib/tasks/website-data.json +1796 -1854
  507. metadata +45 -307
  508. data/data/bipm/update_codes.yaml +0 -9
  509. data/data/nist/series.yaml +0 -155
  510. data/lib/pubid/adobe/builder.rb +0 -52
  511. data/lib/pubid/adobe/identifier.rb +0 -47
  512. data/lib/pubid/adobe/identifiers/publication.rb +0 -31
  513. data/lib/pubid/adobe/identifiers/tech_note.rb +0 -32
  514. data/lib/pubid/adobe/identifiers.rb +0 -10
  515. data/lib/pubid/adobe/parser.rb +0 -136
  516. data/lib/pubid/adobe/renderer.rb +0 -39
  517. data/lib/pubid/adobe/urn_generator.rb +0 -42
  518. data/lib/pubid/adobe/urn_parser.rb +0 -69
  519. data/lib/pubid/adobe.rb +0 -60
  520. data/lib/pubid/amca/renderer.rb +0 -82
  521. data/lib/pubid/amca/urn_parser.rb +0 -28
  522. data/lib/pubid/ansi/renderer.rb +0 -53
  523. data/lib/pubid/ansi/urn_parser.rb +0 -23
  524. data/lib/pubid/api/identifiers.rb +0 -18
  525. data/lib/pubid/api/renderer.rb +0 -98
  526. data/lib/pubid/api/urn_parser.rb +0 -35
  527. data/lib/pubid/ashrae/renderer.rb +0 -117
  528. data/lib/pubid/ashrae/urn_parser.rb +0 -27
  529. data/lib/pubid/asme/renderer.rb +0 -66
  530. data/lib/pubid/asme/urn_parser.rb +0 -31
  531. data/lib/pubid/astm/identifiers/code_number.rb +0 -81
  532. data/lib/pubid/astm/identifiers.rb +0 -19
  533. data/lib/pubid/astm/renderer.rb +0 -172
  534. data/lib/pubid/astm/urn_parser.rb +0 -30
  535. data/lib/pubid/bipm/builder.rb +0 -163
  536. data/lib/pubid/bipm/identifier.rb +0 -285
  537. data/lib/pubid/bipm/identifiers/committee_document.rb +0 -36
  538. data/lib/pubid/bipm/identifiers/guide.rb +0 -35
  539. data/lib/pubid/bipm/identifiers/meeting.rb +0 -53
  540. data/lib/pubid/bipm/identifiers/mep.rb +0 -33
  541. data/lib/pubid/bipm/identifiers/metrologia_article.rb +0 -48
  542. data/lib/pubid/bipm/identifiers/si_brochure.rb +0 -33
  543. data/lib/pubid/bipm/identifiers.rb +0 -15
  544. data/lib/pubid/bipm/parser.rb +0 -237
  545. data/lib/pubid/bipm/renderer.rb +0 -118
  546. data/lib/pubid/bipm/urn_generator.rb +0 -58
  547. data/lib/pubid/bipm/urn_parser.rb +0 -60
  548. data/lib/pubid/bipm.rb +0 -91
  549. data/lib/pubid/bsi/renderer.rb +0 -1064
  550. data/lib/pubid/bsi/urn_parser.rb +0 -52
  551. data/lib/pubid/calconnect/builder.rb +0 -38
  552. data/lib/pubid/calconnect/identifier.rb +0 -121
  553. data/lib/pubid/calconnect/identifiers/standard.rb +0 -29
  554. data/lib/pubid/calconnect/identifiers.rb +0 -9
  555. data/lib/pubid/calconnect/parser.rb +0 -54
  556. data/lib/pubid/calconnect/renderer.rb +0 -36
  557. data/lib/pubid/calconnect/urn_generator.rb +0 -33
  558. data/lib/pubid/calconnect/urn_parser.rb +0 -34
  559. data/lib/pubid/calconnect.rb +0 -82
  560. data/lib/pubid/ccsds/urn_parser.rb +0 -20
  561. data/lib/pubid/cen_cenelec/renderer.rb +0 -261
  562. data/lib/pubid/cen_cenelec/urn_parser.rb +0 -28
  563. data/lib/pubid/cie/identifiers/code_attributes.rb +0 -52
  564. data/lib/pubid/cie/identifiers/proceedings.rb +0 -41
  565. data/lib/pubid/cie/urn_parser.rb +0 -28
  566. data/lib/pubid/components/adoption.rb +0 -104
  567. data/lib/pubid/components/iteration.rb +0 -32
  568. data/lib/pubid/components/relationship.rb +0 -151
  569. data/lib/pubid/components/supplement.rb +0 -184
  570. data/lib/pubid/csa/renderer.rb +0 -300
  571. data/lib/pubid/csa/urn_parser.rb +0 -33
  572. data/lib/pubid/doi/builder.rb +0 -18
  573. data/lib/pubid/doi/identifier.rb +0 -49
  574. data/lib/pubid/doi/identifiers/resource.rb +0 -30
  575. data/lib/pubid/doi/identifiers.rb +0 -9
  576. data/lib/pubid/doi/parser.rb +0 -52
  577. data/lib/pubid/doi/renderer.rb +0 -13
  578. data/lib/pubid/doi.rb +0 -55
  579. data/lib/pubid/easc/builder.rb +0 -55
  580. data/lib/pubid/easc/identifier.rb +0 -59
  581. data/lib/pubid/easc/identifiers/pmg.rb +0 -20
  582. data/lib/pubid/easc/identifiers/rmg.rb +0 -19
  583. data/lib/pubid/easc/identifiers.rb +0 -10
  584. data/lib/pubid/easc/parser.rb +0 -88
  585. data/lib/pubid/easc/renderer.rb +0 -48
  586. data/lib/pubid/easc/urn_generator.rb +0 -46
  587. data/lib/pubid/easc/urn_parser.rb +0 -57
  588. data/lib/pubid/easc.rb +0 -52
  589. data/lib/pubid/ecma/builder.rb +0 -45
  590. data/lib/pubid/ecma/identifier.rb +0 -147
  591. data/lib/pubid/ecma/identifiers/memento.rb +0 -30
  592. data/lib/pubid/ecma/identifiers/standard.rb +0 -31
  593. data/lib/pubid/ecma/identifiers/technical_report.rb +0 -31
  594. data/lib/pubid/ecma/identifiers.rb +0 -11
  595. data/lib/pubid/ecma/parser.rb +0 -76
  596. data/lib/pubid/ecma/renderer.rb +0 -67
  597. data/lib/pubid/ecma/urn_generator.rb +0 -46
  598. data/lib/pubid/ecma/urn_parser.rb +0 -51
  599. data/lib/pubid/ecma.rb +0 -67
  600. data/lib/pubid/errors.rb +0 -79
  601. data/lib/pubid/etsi/renderer.rb +0 -48
  602. data/lib/pubid/etsi/urn_parser.rb +0 -34
  603. data/lib/pubid/gb/builder.rb +0 -45
  604. data/lib/pubid/gb/identifier.rb +0 -67
  605. data/lib/pubid/gb/identifiers/standard.rb +0 -34
  606. data/lib/pubid/gb/identifiers.rb +0 -9
  607. data/lib/pubid/gb/parser.rb +0 -63
  608. data/lib/pubid/gb/renderer.rb +0 -35
  609. data/lib/pubid/gb.rb +0 -87
  610. data/lib/pubid/gost/builder.rb +0 -148
  611. data/lib/pubid/gost/identifier.rb +0 -47
  612. data/lib/pubid/gost/identifiers/foreign_reference.rb +0 -25
  613. data/lib/pubid/gost/identifiers/harmonized.rb +0 -39
  614. data/lib/pubid/gost/identifiers/identical_adoption.rb +0 -39
  615. data/lib/pubid/gost/identifiers/interstate_standard.rb +0 -20
  616. data/lib/pubid/gost/identifiers/national_standard.rb +0 -19
  617. data/lib/pubid/gost/identifiers.rb +0 -13
  618. data/lib/pubid/gost/parser.rb +0 -105
  619. data/lib/pubid/gost/renderer.rb +0 -48
  620. data/lib/pubid/gost/urn_generator.rb +0 -46
  621. data/lib/pubid/gost/urn_parser.rb +0 -52
  622. data/lib/pubid/gost.rb +0 -49
  623. data/lib/pubid/iala/builder.rb +0 -102
  624. data/lib/pubid/iala/identifier.rb +0 -90
  625. data/lib/pubid/iala/identifiers/advice.rb +0 -15
  626. data/lib/pubid/iala/identifiers/annex.rb +0 -57
  627. data/lib/pubid/iala/identifiers/general_assembly.rb +0 -19
  628. data/lib/pubid/iala/identifiers/guideline.rb +0 -17
  629. data/lib/pubid/iala/identifiers/letter.rb +0 -16
  630. data/lib/pubid/iala/identifiers/manual.rb +0 -18
  631. data/lib/pubid/iala/identifiers/model_course.rb +0 -17
  632. data/lib/pubid/iala/identifiers/recommendation.rb +0 -17
  633. data/lib/pubid/iala/identifiers/report.rb +0 -16
  634. data/lib/pubid/iala/identifiers/resolution.rb +0 -16
  635. data/lib/pubid/iala/identifiers/standard.rb +0 -17
  636. data/lib/pubid/iala/identifiers.rb +0 -19
  637. data/lib/pubid/iala/parser.rb +0 -138
  638. data/lib/pubid/iala/renderer.rb +0 -36
  639. data/lib/pubid/iala/urn_generator.rb +0 -49
  640. data/lib/pubid/iala/urn_parser.rb +0 -67
  641. data/lib/pubid/iala.rb +0 -71
  642. data/lib/pubid/iana/builder.rb +0 -22
  643. data/lib/pubid/iana/identifier.rb +0 -140
  644. data/lib/pubid/iana/identifiers/registry.rb +0 -69
  645. data/lib/pubid/iana/identifiers.rb +0 -9
  646. data/lib/pubid/iana/parser.rb +0 -38
  647. data/lib/pubid/iana/renderer.rb +0 -32
  648. data/lib/pubid/iana/urn_generator.rb +0 -19
  649. data/lib/pubid/iana/urn_parser.rb +0 -24
  650. data/lib/pubid/iana.rb +0 -69
  651. data/lib/pubid/idf/renderer.rb +0 -84
  652. data/lib/pubid/idf/urn_parser.rb +0 -25
  653. data/lib/pubid/iec/components.rb +0 -14
  654. data/lib/pubid/iec/identifiers/technical_group.rb +0 -30
  655. data/lib/pubid/iec/identifiers.rb +0 -31
  656. data/lib/pubid/iec/renderer.rb +0 -267
  657. data/lib/pubid/ieee/compaction.rb +0 -121
  658. data/lib/pubid/ieee/identifiers/amendment.rb +0 -40
  659. data/lib/pubid/ieee/identifiers/code_number.rb +0 -82
  660. data/lib/pubid/ieee/identifiers/nesc/edition.rb +0 -32
  661. data/lib/pubid/ieee/pre_parser.rb +0 -301
  662. data/lib/pubid/ieee/renderer.rb +0 -408
  663. data/lib/pubid/ieee/urn_parser.rb +0 -34
  664. data/lib/pubid/ietf/builder.rb +0 -78
  665. data/lib/pubid/ietf/identifier.rb +0 -5
  666. data/lib/pubid/ietf/identifiers/base.rb +0 -72
  667. data/lib/pubid/ietf/identifiers/bcp.rb +0 -36
  668. data/lib/pubid/ietf/identifiers/fyi.rb +0 -36
  669. data/lib/pubid/ietf/identifiers/internet_draft.rb +0 -45
  670. data/lib/pubid/ietf/identifiers/rfc.rb +0 -27
  671. data/lib/pubid/ietf/identifiers/serialization.rb +0 -51
  672. data/lib/pubid/ietf/identifiers/std.rb +0 -36
  673. data/lib/pubid/ietf/identifiers.rb +0 -14
  674. data/lib/pubid/ietf/parser.rb +0 -61
  675. data/lib/pubid/ietf/renderer.rb +0 -64
  676. data/lib/pubid/ietf/urn_generator.rb +0 -37
  677. data/lib/pubid/ietf/urn_parser.rb +0 -43
  678. data/lib/pubid/ietf.rb +0 -85
  679. data/lib/pubid/iho/renderer.rb +0 -30
  680. data/lib/pubid/iho/urn_parser.rb +0 -58
  681. data/lib/pubid/isbn/builder.rb +0 -44
  682. data/lib/pubid/isbn/check_digit.rb +0 -53
  683. data/lib/pubid/isbn/identifier.rb +0 -81
  684. data/lib/pubid/isbn/identifiers/book.rb +0 -30
  685. data/lib/pubid/isbn/identifiers.rb +0 -9
  686. data/lib/pubid/isbn/parser.rb +0 -45
  687. data/lib/pubid/isbn/renderer.rb +0 -16
  688. data/lib/pubid/isbn.rb +0 -52
  689. data/lib/pubid/iso/normalizer.rb +0 -89
  690. data/lib/pubid/itu/components/designation.rb +0 -35
  691. data/lib/pubid/itu/components.rb +0 -12
  692. data/lib/pubid/itu/identifiers/addendum.rb +0 -15
  693. data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +0 -87
  694. data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +0 -92
  695. data/lib/pubid/itu/identifiers/errata.rb +0 -15
  696. data/lib/pubid/itu/identifiers/handbook.rb +0 -38
  697. data/lib/pubid/itu/identifiers/question.rb +0 -63
  698. data/lib/pubid/itu/identifiers/report.rb +0 -39
  699. data/lib/pubid/itu/identifiers/standard_serialization.rb +0 -58
  700. data/lib/pubid/itu/urn_parser.rb +0 -31
  701. data/lib/pubid/jcgm/identifiers/corrigendum.rb +0 -34
  702. data/lib/pubid/jcgm/identifiers/meeting.rb +0 -47
  703. data/lib/pubid/jcgm/renderer.rb +0 -89
  704. data/lib/pubid/jcgm/urn_parser.rb +0 -177
  705. data/lib/pubid/jis/identifiers/corrigendum.rb +0 -16
  706. data/lib/pubid/jis/renderer.rb +0 -69
  707. data/lib/pubid/jis/urn_parser.rb +0 -23
  708. data/lib/pubid/nist/caster.rb +0 -1234
  709. data/lib/pubid/nist/circular_supplement_builder.rb +0 -293
  710. data/lib/pubid/nist/identifier.rb +0 -8
  711. data/lib/pubid/nist/identifiers/dated_document.rb +0 -49
  712. data/lib/pubid/nist/parser_output_normalizer.rb +0 -233
  713. data/lib/pubid/nist/preprocessor.rb +0 -443
  714. data/lib/pubid/nist/renderer.rb +0 -43
  715. data/lib/pubid/nist/router.rb +0 -149
  716. data/lib/pubid/nist/series/base.rb +0 -58
  717. data/lib/pubid/nist/series/crpl.rb +0 -13
  718. data/lib/pubid/nist/series/fips.rb +0 -14
  719. data/lib/pubid/nist/series/ir.rb +0 -57
  720. data/lib/pubid/nist/series/letter_preserving.rb +0 -15
  721. data/lib/pubid/nist/series/mono.rb +0 -19
  722. data/lib/pubid/nist/series/ncstar.rb +0 -20
  723. data/lib/pubid/nist/series.rb +0 -49
  724. data/lib/pubid/nist/urn_parser.rb +0 -67
  725. data/lib/pubid/oasis/builder.rb +0 -79
  726. data/lib/pubid/oasis/identifier.rb +0 -160
  727. data/lib/pubid/oasis/identifiers/standard.rb +0 -29
  728. data/lib/pubid/oasis/identifiers.rb +0 -9
  729. data/lib/pubid/oasis/parser.rb +0 -34
  730. data/lib/pubid/oasis/renderer.rb +0 -29
  731. data/lib/pubid/oasis/urn_generator.rb +0 -25
  732. data/lib/pubid/oasis/urn_parser.rb +0 -22
  733. data/lib/pubid/oasis.rb +0 -79
  734. data/lib/pubid/ogc/builder.rb +0 -33
  735. data/lib/pubid/ogc/identifier.rb +0 -81
  736. data/lib/pubid/ogc/identifiers/document.rb +0 -26
  737. data/lib/pubid/ogc/identifiers.rb +0 -10
  738. data/lib/pubid/ogc/parser.rb +0 -40
  739. data/lib/pubid/ogc/renderer.rb +0 -33
  740. data/lib/pubid/ogc/urn_generator.rb +0 -14
  741. data/lib/pubid/ogc/urn_parser.rb +0 -22
  742. data/lib/pubid/ogc.rb +0 -71
  743. data/lib/pubid/oiml/identifiers/bulletin.rb +0 -137
  744. data/lib/pubid/oiml/identifiers/code_number.rb +0 -90
  745. data/lib/pubid/oiml/identifiers/errata.rb +0 -15
  746. data/lib/pubid/oiml/renderer.rb +0 -232
  747. data/lib/pubid/oiml/urn_parser.rb +0 -39
  748. data/lib/pubid/omg/builder.rb +0 -19
  749. data/lib/pubid/omg/identifier.rb +0 -47
  750. data/lib/pubid/omg/identifiers/specification.rb +0 -32
  751. data/lib/pubid/omg/identifiers.rb +0 -9
  752. data/lib/pubid/omg/parser.rb +0 -40
  753. data/lib/pubid/omg/renderer.rb +0 -19
  754. data/lib/pubid/omg.rb +0 -51
  755. data/lib/pubid/parser/grammar.rb +0 -74
  756. data/lib/pubid/plateau/identifier.rb +0 -4
  757. data/lib/pubid/plateau/renderer.rb +0 -51
  758. data/lib/pubid/plateau/urn_parser.rb +0 -43
  759. data/lib/pubid/prefixes_support.rb +0 -51
  760. data/lib/pubid/renderers/annotator.rb +0 -233
  761. data/lib/pubid/sae/renderer.rb +0 -36
  762. data/lib/pubid/sae/urn_parser.rb +0 -36
  763. data/lib/pubid/tgpp/builder.rb +0 -41
  764. data/lib/pubid/tgpp/identifier.rb +0 -107
  765. data/lib/pubid/tgpp/identifiers/technical_report.rb +0 -32
  766. data/lib/pubid/tgpp/identifiers/technical_specification.rb +0 -33
  767. data/lib/pubid/tgpp/identifiers.rb +0 -11
  768. data/lib/pubid/tgpp/parser.rb +0 -78
  769. data/lib/pubid/tgpp/renderer.rb +0 -52
  770. data/lib/pubid/tgpp/urn_generator.rb +0 -39
  771. data/lib/pubid/tgpp/urn_parser.rb +0 -30
  772. data/lib/pubid/tgpp.rb +0 -83
  773. data/lib/pubid/type_resolver.rb +0 -59
  774. data/lib/pubid/un/builder.rb +0 -42
  775. data/lib/pubid/un/identifier.rb +0 -40
  776. data/lib/pubid/un/identifiers/document.rb +0 -24
  777. data/lib/pubid/un/identifiers.rb +0 -9
  778. data/lib/pubid/un/parser.rb +0 -25
  779. data/lib/pubid/un/renderer.rb +0 -11
  780. data/lib/pubid/un.rb +0 -46
  781. data/lib/pubid/urn_parser/base.rb +0 -81
  782. data/lib/pubid/urn_parser/errors.rb +0 -16
  783. data/lib/pubid/urn_parser.rb +0 -14
  784. data/lib/pubid/w3c/builder.rb +0 -55
  785. data/lib/pubid/w3c/identifier.rb +0 -130
  786. data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +0 -31
  787. data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +0 -31
  788. data/lib/pubid/w3c/identifiers/draft_note.rb +0 -31
  789. data/lib/pubid/w3c/identifiers/note.rb +0 -30
  790. data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +0 -31
  791. data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +0 -31
  792. data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +0 -31
  793. data/lib/pubid/w3c/identifiers/recommendation.rb +0 -31
  794. data/lib/pubid/w3c/identifiers/standard.rb +0 -12
  795. data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +0 -31
  796. data/lib/pubid/w3c/identifiers/working_draft.rb +0 -30
  797. data/lib/pubid/w3c/identifiers.rb +0 -25
  798. data/lib/pubid/w3c/parser.rb +0 -43
  799. data/lib/pubid/w3c/renderer.rb +0 -35
  800. data/lib/pubid/w3c/urn_generator.rb +0 -18
  801. data/lib/pubid/w3c/urn_parser.rb +0 -36
  802. data/lib/pubid/w3c.rb +0 -67
  803. data/lib/pubid/xsf/builder.rb +0 -17
  804. data/lib/pubid/xsf/identifier.rb +0 -66
  805. data/lib/pubid/xsf/identifiers/xep.rb +0 -31
  806. data/lib/pubid/xsf/identifiers.rb +0 -9
  807. data/lib/pubid/xsf/parser.rb +0 -25
  808. data/lib/pubid/xsf/renderer.rb +0 -23
  809. data/lib/pubid/xsf/urn_generator.rb +0 -13
  810. data/lib/pubid/xsf/urn_parser.rb +0 -18
  811. data/lib/pubid/xsf.rb +0 -81
@@ -5,28 +5,34 @@ require "lutaml/model"
5
5
  module Pubid
6
6
  module Cie
7
7
  module Identifiers
8
- # Corrigendum identifier for CIE (/CorN notation).
9
- # Wraps a nested base — a Standard, or a Supplement when the
10
- # corrigendum applies to a supplement (CIE 198-SP1.4:2011/Cor1:2013).
11
- # The "/CorN:year" is a clean trailing suffix on the base's rendering.
8
+ # Corrigendum identifier for CIE
9
+ # Handles /CorN notation with recursive base parsing
12
10
  # Examples: CIE 232:2019/Cor1:2020, CIE 198-SP1.4:2011/Cor1:2013
13
11
  class Corrigendum < SupplementIdentifier
14
- # +number+ (the "/CorN" ordinal) is inherited from SupplementIdentifier.
15
- # The corrigendum's own year — SupplementIdentifier descends from the
16
- # base Identifier (not SingleIdentifier), so there is no inherited year.
17
- attribute :year, :string
12
+ attribute :base_number, :string
13
+ attribute :base_year, :string
14
+ attribute :base_supplement, :string # If base is a supplement
15
+ attribute :base_supplement_part, :string # Part of supplement
16
+ attribute :cor_number, :string
17
+ attribute :cor_year, :string
18
18
 
19
- # Uniform supplement interface (shared with Supplement).
20
- def supplement_type
21
- :corrigendum
22
- end
19
+ def to_s
20
+ # Build base identifier string
21
+ result = "CIE #{base_number}"
23
22
 
24
- def supplement_year
25
- year
26
- end
23
+ # Add supplement notation if base is a supplement
24
+ if base_supplement
25
+ result += "-SP#{base_supplement}"
26
+ result += ".#{base_supplement_part}" if base_supplement_part
27
+ end
28
+
29
+ # Add base year with colon
30
+ result += ":#{base_year}" if base_year
31
+
32
+ # Add corrigendum with slash and colon
33
+ result += "/Cor#{cor_number}:#{cor_year}"
27
34
 
28
- def to_s(**opts)
29
- annotate_plain_render("#{base}/Cor#{number}:#{year}", **opts)
35
+ result
30
36
  end
31
37
  end
32
38
  end
@@ -9,31 +9,31 @@ module Pubid
9
9
  # Represents CIE/IEC dual published standards
10
10
  # Example: CIE S 009:2002/IEC 62471:2006
11
11
  class DualPublished < SingleIdentifier
12
- include CodeAttributes # flat number/part/iteration/part_separator + #code_string
13
-
14
12
  attribute :s_prefix, :boolean, default: -> { false }
13
+ attribute :code, Components::Code
15
14
  attribute :iec_identifier, :string # IEC portion as string
16
15
 
17
- def to_s(**opts)
16
+ def to_s
18
17
  parts = ["CIE"]
19
18
 
20
19
  # S prefix
21
20
  parts << "S" if s_prefix
22
21
 
23
22
  # Code
24
- parts << code_string if number
23
+ parts << code.to_s if code
25
24
 
26
25
  result = parts.join(" ")
27
26
 
28
27
  # Date
29
28
  if year
30
- result += "#{date_sep_char}#{year}"
29
+ separator = date_separator == "colon" ? ":" : "-"
30
+ result += "#{separator}#{year}"
31
31
  end
32
32
 
33
33
  # IEC portion with slash separator
34
34
  result += "/IEC #{iec_identifier}" if iec_identifier
35
35
 
36
- annotate_plain_render(result, **opts)
36
+ result
37
37
  end
38
38
  end
39
39
  end
@@ -12,25 +12,24 @@ module Pubid
12
12
  # CIE S 014-4/E2007 - part with dash + language
13
13
  # CIE S 008/E:2001 (ISO 8995-1:2002(E)) - language with colon year
14
14
  class Identical < SingleIdentifier
15
- include CodeAttributes # flat number/part/iteration/part_separator + #code_string
16
-
17
15
  attribute :s_prefix, :boolean, default: -> { false }
16
+ attribute :code, Components::Code
18
17
  attribute :language, Components::Language
19
18
  attribute :iso_reference, :string # The ISO identifier in parentheses
20
19
 
21
- def to_s(**opts)
20
+ def to_s
22
21
  parts = ["CIE"]
23
22
 
24
23
  # S prefix
25
24
  parts << "S" if s_prefix
26
25
 
27
26
  # Code
28
- parts << code_string if number
27
+ parts << code.to_s if code
29
28
 
30
29
  result = parts.join(" ")
31
30
 
32
31
  # Language + Year combined for slash formats before ISO reference
33
- if language && (language.format == "slash_colon" || (language.format == "slash" && year && style != "slash"))
32
+ if language && (language.format == "slash_colon" || (language.format == "slash" && year && date_separator != "slash"))
34
33
  # Render /E:YYYY or /EYYYY (language with year, no separate date separator)
35
34
  result += if language.format == "slash_colon"
36
35
  "/#{language.code}:#{year}" # /E:2001
@@ -40,12 +39,13 @@ module Pubid
40
39
  elsif language && language.format == "slash"
41
40
  # Language without year: /E
42
41
  result += "/#{language.code}"
43
- elsif year && style == "slash"
42
+ elsif year && date_separator == "slash"
44
43
  # Legacy slash-year format without language: /1998
45
44
  result += "/#{year}"
46
45
  elsif year
47
- # Standard date with separator derived from style
48
- result += "#{date_sep_char}#{year}"
46
+ # Standard date with separator (colon or dash)
47
+ separator = date_separator == "colon" ? ":" : "-"
48
+ result += "#{separator}#{year}"
49
49
  end
50
50
 
51
51
  # Language (parenthetical) after date
@@ -56,7 +56,7 @@ module Pubid
56
56
  # ISO reference in parentheses
57
57
  result += " (ISO #{iso_reference})" if iso_reference
58
58
 
59
- annotate_plain_render(result, **opts)
59
+ result
60
60
  end
61
61
  end
62
62
  end
@@ -8,14 +8,13 @@ module Pubid
8
8
  # Joint published identifier for CIE
9
9
  # Handles CIE ISO, CIE IEC, CIE ISO/CIE patterns
10
10
  class JointPublished < SingleIdentifier
11
- include CodeAttributes # flat number/part/iteration/part_separator + #code_string
12
-
13
11
  attribute :copublisher, :string # "ISO", "IEC", or "ISO/CIE"
12
+ attribute :code, Components::Code
14
13
  attribute :language, Components::Language
15
14
  attribute :doc_type, :string # "TR" for Technical Report
16
15
  attribute :stage, :string # "DIS" for draft stage
17
16
 
18
- def to_s(**opts)
17
+ def to_s
19
18
  parts = ["CIE", copublisher]
20
19
 
21
20
  # Document type (TR)
@@ -25,26 +24,27 @@ module Pubid
25
24
  parts << stage if stage
26
25
 
27
26
  # Code (number-part) - special handling for IEC dot separator
28
- if number
29
- code_str = code_string
27
+ if code
28
+ code_str = code.to_s
30
29
  # For IEC copublisher, if code has a part, use dot not slash/dash
31
- if copublisher == "IEC" && part
32
- code_str = "#{number}.#{part}"
30
+ if copublisher == "IEC" && code.part
31
+ code_str = "#{code.number}.#{code.part}"
33
32
  end
34
33
  parts << code_str
35
34
  end
36
35
 
37
36
  result = parts.join(" ")
38
37
 
39
- # Date - separator derived from style
38
+ # Date - use the actual captured separator
40
39
  if year
41
- result += "#{date_sep_char}#{year}"
40
+ separator = date_separator == "colon" ? ":" : "-"
41
+ result += "#{separator}#{year}"
42
42
  end
43
43
 
44
44
  # Language (always parenthetical for joint published)
45
45
  result += language.to_s if language
46
46
 
47
- annotate_plain_render(result, **opts)
47
+ result
48
48
  end
49
49
  end
50
50
  end
@@ -8,52 +8,22 @@ module Pubid
8
8
  # Standard identifier for CIE
9
9
  # Handles both legacy (pre-2001) and current (2001+) styles
10
10
  class Standard < SingleIdentifier
11
- include CodeAttributes # flat number/part/iteration/part_separator + #code_string
12
-
13
11
  attribute :s_prefix, :boolean, default: -> { false }
14
- # D-series marker (CIE D001-2006). Boolean default false so it is
15
- # canonicalized away for every non-D standard (round-trip contract).
16
- attribute :d_prefix, :boolean, default: -> { false }
12
+ attribute :code, Components::Code
17
13
  attribute :language, Components::Language
18
14
  attribute :stage, :string # DIS, DS
19
15
 
20
- def to_s(**opts)
21
- annotate_plain_render(render_plain, **opts)
22
- end
23
-
24
- # CIE Standard distinguishes S-prefixed standards (`CIE S 017`) from
25
- # plain (`CIE 015`), D-prefixed (`CIE D001`), and DIS-staged. The
26
- # generic mr_type looks at typed_stage, which CIE doesn't use, so
27
- # without this override the `S`/`D`/stage marker would be lost in MR.
28
- def mr_type
29
- return stage.downcase if stage
30
- return "d" if d_prefix
31
- return "s" if s_prefix
32
-
33
- nil
34
- end
35
-
36
- private
37
-
38
- # The plain composition, extracted verbatim from `to_s`. It has two
39
- # early returns (the slash_colon language form and the legacy
40
- # bare slash-year form), and `to_s` needs a single exit to wrap.
41
- def render_plain
16
+ def to_s
42
17
  parts = ["CIE"]
43
18
 
44
19
  # Stage (DIS/DS) before code if present
45
20
  parts << stage if stage
46
21
 
47
- if d_prefix
48
- # D-series: the D is attached to the code (no space): CIE D001
49
- parts << "D#{code_string}"
50
- else
51
- # S prefix
52
- parts << "S" if s_prefix
22
+ # S prefix
23
+ parts << "S" if s_prefix
53
24
 
54
- # Code
55
- parts << code_string if number
56
- end
25
+ # Code
26
+ parts << code.to_s if code
57
27
 
58
28
  # Build initial result from parts
59
29
  result = parts.join(" ")
@@ -69,15 +39,10 @@ module Pubid
69
39
  return result # Year already added
70
40
  end
71
41
 
72
- # Bare slash-year (legacy, no language): CIE S 007/1998
73
- if year && style == "slash"
74
- result += "/#{year}"
75
- return result
76
- end
77
-
78
42
  # Date with separator (for non-slash-colon formats)
79
43
  if year
80
- result += "#{date_sep_char}#{year}"
44
+ separator = date_separator == "colon" ? ":" : "-"
45
+ result += "#{separator}#{year}"
81
46
  end
82
47
 
83
48
  # Language (parenthetical formats) - comes after date
@@ -5,41 +5,39 @@ require "lutaml/model"
5
5
  module Pubid
6
6
  module Cie
7
7
  module Identifiers
8
- # Supplement identifier for CIE (-SPN / -SPN.P notation).
9
- # Wraps a nested base (the base Standard); the "-SPN" is
10
- # inserted after the base number, so to_s renders from the base's parts.
8
+ # Supplement identifier for CIE
9
+ # Handles -SPN and -SPN.P notation with recursive base parsing
11
10
  # Examples: CIE 121-SP1:2009, CIE 198-SP1.4:2011, CIE DIS 025-SP1/E:2019
12
11
  class Supplement < SupplementIdentifier
13
- # +number+ (the "-SPN" ordinal) is inherited from SupplementIdentifier.
14
- attribute :part, :string # "1" in "SP1.1", "4" in "SP1.4"
15
-
16
- # Uniform supplement interface (shared with Corrigendum).
17
- def supplement_type
18
- :supplement
19
- end
20
-
21
- def supplement_year
22
- base&.year
23
- end
24
-
25
- def to_s(**opts)
26
- b = base
12
+ attribute :base_number, :string
13
+ attribute :supplement_number, :string # "1", "2"
14
+ attribute :supplement_part, :string # "1" in "SP1.1", "4" in "SP1.4"
15
+ attribute :year, :string
16
+ attribute :stage, :string # "DIS", "DS"
17
+ attribute :language, Components::Language
18
+
19
+ def to_s
27
20
  parts = ["CIE"]
28
- parts << b.stage if b.respond_to?(:stage) && b.stage
29
21
 
30
- core = "#{b.number}-SP#{number}"
31
- core += ".#{part}" if part
32
- parts << core
22
+ # Stage if present (DIS/DS)
23
+ parts << stage if stage
24
+
25
+ # Build base number and supplement
33
26
  result = parts.join(" ")
27
+ result += " #{base_number}-SP#{supplement_number}"
34
28
 
35
- # Language with slash (before year), e.g. "/E"
36
- if b.language && b.language.format == "slash_colon"
37
- result += "/#{b.language.code}"
29
+ # Add part if present (e.g., ".4" in "SP1.4")
30
+ result += ".#{supplement_part}" if supplement_part
31
+
32
+ # Add language with slash if present (before year)
33
+ if language && language.format == "slash_colon"
34
+ result += "/#{language.code}"
38
35
  end
39
36
 
40
- # Supplements always use the current (colon) style.
41
- result += ":#{b.year}" if b.year
42
- annotate_plain_render(result, **opts)
37
+ # Add year with colon (supplements always use current style)
38
+ result += ":#{year}" if year
39
+
40
+ result
43
41
  end
44
42
  end
45
43
  end
@@ -8,15 +8,11 @@ module Pubid
8
8
  # Tutorial Bundle identifier for CIE
9
9
  # Special text-based identifier
10
10
  # Example: CIE Tutorials Bundle 1
11
- #
12
- # The ordinal ("1") is the bundle's own +number+ (also the relaton-index
13
- # root key); there is no separate document, so no nested base.
14
11
  class TutorialBundle < SingleIdentifier
15
- # :string overrides the base ::Pubid::Identifier Components::Code type.
16
- attribute :number, :string
12
+ attribute :bundle_number, :string
17
13
 
18
- def to_s(**opts)
19
- annotate_plain_render("CIE Tutorials Bundle #{number}", **opts)
14
+ def to_s
15
+ "CIE Tutorials Bundle #{bundle_number}"
20
16
  end
21
17
  end
22
18
  end
@@ -3,14 +3,12 @@
3
3
  module Pubid
4
4
  module Cie
5
5
  module Identifiers
6
- autoload :CodeAttributes, "#{__dir__}/identifiers/code_attributes"
7
6
  autoload :Bundle, "#{__dir__}/identifiers/bundle"
8
7
  autoload :Conference, "#{__dir__}/identifiers/conference"
9
8
  autoload :Corrigendum, "#{__dir__}/identifiers/corrigendum"
10
9
  autoload :DualPublished, "#{__dir__}/identifiers/dual_published"
11
10
  autoload :Identical, "#{__dir__}/identifiers/identical"
12
11
  autoload :JointPublished, "#{__dir__}/identifiers/joint_published"
13
- autoload :Proceedings, "#{__dir__}/identifiers/proceedings"
14
12
  autoload :Standard, "#{__dir__}/identifiers/standard"
15
13
  autoload :Supplement, "#{__dir__}/identifiers/supplement"
16
14
  autoload :TutorialBundle, "#{__dir__}/identifiers/tutorial_bundle"
@@ -6,7 +6,7 @@ module Pubid
6
6
  module Cie
7
7
  # Parser for CIE identifiers
8
8
  # Handles dual-style system (legacy vs current)
9
- class Parser < ::Pubid::Parser::Grammar
9
+ class Parser < Parslet::Parser
10
10
  # Basic building blocks
11
11
  rule(:space) { str(" ") }
12
12
  rule(:space?) { space.maybe }
@@ -135,50 +135,9 @@ module Pubid
135
135
  (str("FDIS") | str("DIS") | str("DS")) >> space
136
136
  end
137
137
 
138
- # Document type (TR for Technical Report, TS for Technical Specification)
138
+ # Document type (TR for Technical Report)
139
139
  rule(:doc_type) do
140
- (str("TR") | str("TS")) # Don't consume trailing space
141
- end
142
-
143
- # Proceedings paper code: 1+ uppercase letters (OP, PO, PP, WP, IP, P, ...)
144
- # Deliberately generic (open set); greedy letters then digits.
145
- rule(:paper_code) do
146
- match("[A-Z]").repeat(1).as(:paper_code)
147
- end
148
-
149
- # Techstreet opaque conference variant: /<lowercase-alnum slug>
150
- # Charset kept lowercase-alnum so it can't collide with the uppercase
151
- # /E, /Cor, /IEC tails or the self.parse language gsub.
152
- rule(:variant_slug) do
153
- slash >> match("[0-9a-z]").repeat(1).as(:variant)
154
- end
155
-
156
- # Conference proceedings paper (x-prefixed): CIE x043-OP01
157
- rule(:conf_proceedings) do
158
- str("CIE") >> space >> str("x") >> digits.as(:conf_number) >>
159
- dash >> paper_code >> digits.as(:paper_number)
160
- end
161
-
162
- # Standalone proceedings paper: CIE OP02 1-5
163
- rule(:standalone_proceedings) do
164
- str("CIE") >> space >> paper_code >> digits.as(:paper_number) >>
165
- space >> (digits >> dash >> digits).as(:page_range)
166
- end
167
-
168
- # D-series: CIE D001-2006 / CIE D002:2004
169
- rule(:d_series_identifier) do
170
- str("CIE") >> space >> str("D").as(:d_prefix) >> digits.as(:number) >> date
171
- end
172
-
173
- # Standard with bare slash-year (no language letter): CIE S 007/1998
174
- # Uses a narrow number(+iteration) pattern rather than the full code rule
175
- # so code_with_part_slash doesn't greedily consume the /year.
176
- rule(:standard_with_slash_year) do
177
- str("CIE") >> space >>
178
- stage_code.maybe.as(:stage) >>
179
- s_prefix.maybe.as(:s_prefix) >>
180
- (digits.as(:number) >> (dot >> digits.as(:iteration)).maybe) >>
181
- slash >> year_digits.as(:slash_year)
140
+ str("TR") # Don't consume trailing space
182
141
  end
183
142
 
184
143
  # DIS stage with supplement pattern (e.g., DIS 025-SP1/E:2019)
@@ -198,14 +157,12 @@ module Pubid
198
157
  stage_code.maybe.as(:stage) >>
199
158
  s_prefix.maybe.as(:s_prefix) >>
200
159
  code >>
201
- # Language can come BEFORE date, AFTER date, or both.
202
- # The whole date group is optional so a bare "CIE 015" (no year)
203
- # parses with year left nil (partial reference for relaton matching).
160
+ # Language can come BEFORE date, AFTER date, or both
204
161
  (
205
162
  (language >> date).as(:lang_before) |
206
163
  (date >> language.maybe).as(:date_then_lang) |
207
164
  date
208
- ).maybe
165
+ )
209
166
  end
210
167
 
211
168
  # Standard identifier without ISO reference but with language-year (CIE S 014-4/E:2007)
@@ -224,9 +181,7 @@ module Pubid
224
181
  digits.as(:conf_number) >>
225
182
  date >>
226
183
  # Optional amendment
227
- (space >> str("Amendment") >> space >> digits.as(:amd_number)).maybe >>
228
- # Optional techstreet opaque /slug variant
229
- variant_slug.maybe
184
+ (space >> str("Amendment") >> space >> digits.as(:amd_number)).maybe
230
185
  end
231
186
 
232
187
  # Joint published with ISO
@@ -365,10 +320,6 @@ module Pubid
365
320
  corrigendum_identifier |
366
321
  supplement_identifier |
367
322
  standard_with_language_year |
368
- standard_with_slash_year |
369
- d_series_identifier |
370
- conf_proceedings |
371
- standalone_proceedings |
372
323
  legacy_code_with_year | # Before standard to catch 001-1980 pattern
373
324
  conference_identifier |
374
325
  standard_identifier
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pubid
4
+ module Cie
5
+ class Scheme < Pubid::Scheme
6
+ class << self
7
+ def identifiers
8
+ [
9
+ Identifiers::Standard,
10
+ Identifiers::Conference,
11
+ Identifiers::Bundle,
12
+ Identifiers::DualPublished,
13
+ Identifiers::Identical,
14
+ Identifiers::JointPublished,
15
+ Identifiers::Supplement,
16
+ Identifiers::TutorialBundle,
17
+ ]
18
+ end
19
+
20
+ def supplement_identifiers
21
+ [
22
+ Identifiers::Corrigendum,
23
+ ]
24
+ end
25
+
26
+ def typed_stages
27
+ identifiers.flat_map { |klass| klass::TYPED_STAGES }
28
+ end
29
+
30
+ def supplement_typed_stages
31
+ supplement_identifiers.flat_map { |klass| klass::TYPED_STAGES }
32
+ end
33
+
34
+ def locate_typed_stage_by_abbr(abbr)
35
+ abbr = "" if abbr.nil?
36
+
37
+ typed_stage = (typed_stages + supplement_typed_stages).detect do |ts|
38
+ ts.abbr.include?(abbr)
39
+ end
40
+
41
+ unless typed_stage
42
+ raise ArgumentError,
43
+ "Unknown type abbreviation: '#{abbr}'"
44
+ end
45
+
46
+ typed_stage
47
+ end
48
+
49
+ def locate_identifier_klass_by_type_code(type_code)
50
+ identifier_klass = (identifiers + supplement_identifiers).detect do |klass|
51
+ klass.type[:key].to_s == type_code.to_s
52
+ end
53
+
54
+ unless identifier_klass
55
+ raise ArgumentError,
56
+ "Unknown type code: #{type_code}"
57
+ end
58
+
59
+ identifier_klass
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
@@ -18,52 +18,13 @@ module Pubid
18
18
  # - Identical (identical to ISO publications)
19
19
  # - TutorialBundle (tutorial bundles)
20
20
  class SingleIdentifier < Identifier
21
- # Stored as a plain string (always "CIE") so it round-trips through
22
- # to_hash/from_hash. Was a `def publisher` method, which made lutaml
23
- # serialize a String against the Components::Publisher attribute and raise.
24
- attribute :publisher, :string, default: -> { "CIE" }
25
-
26
- attribute :year, :string
27
- # The number<->year separator character, derived from +style+ (the sole
28
- # separator field; there is no date_separator attribute):
29
- # current -> ":" legacy -> "-" slash -> "/"
30
- def date_sep_char
31
- { "legacy" => "-", "slash" => "/" }.fetch(style, ":")
21
+ # CIE uses a fixed publisher string
22
+ def publisher
23
+ "CIE"
32
24
  end
33
25
 
34
- # Partial-reference matching: CIE keeps the publication year in its own
35
- # `year` string attribute (the separator lives in `style`), not a `Date`
36
- # component, so the base's `:year`->`:date` remap would nil the unused
37
- # inherited `date` and leave `year` intact. Call super (preserving the
38
- # nested-identifier recursion), then nil `year` directly so a year-less
39
- # CIE ref is a year wildcard under `matches?(ignore: [:year])`.
40
- #
41
- # Known limit: `style` (which also encodes the era: current<->colon,
42
- # legacy<->dash) is intentionally NOT wildcarded, so bare `CIE 015`
43
- # (always current) matches a colon-dated full but not a legacy dash-dated
44
- # (pre-2001) one. Partial-ref scope targets modern colon forms.
45
- def exclude(*args)
46
- result = super
47
- result.year = nil if args.include?(:year) || args.include?(:date)
48
- result
49
- end
50
-
51
- # CIE stores its publication year in its own `year` string attribute
52
- # (not a Components::Date), and uses a single-Language component with
53
- # multiple formats. Override the lossless MR template so `CIE S 017/E:2011`
54
- # round-trips as `CIE.S.017.E.2011` rather than losing the type letter,
55
- # language, and year (issue #142). Subclasses add the `s_prefix` and
56
- # `language` attributes that this template reads.
57
- def mr_year
58
- year&.to_s
59
- end
60
-
61
- def mr_languages
62
- return nil unless respond_to?(:language) && language
63
-
64
- # Lowercase + filename-safe: drop the leading `/` (path-unsafe).
65
- language.code.to_s.downcase
66
- end
26
+ attribute :year, :string
27
+ attribute :date_separator, :string # "dash" or "colon"
67
28
  end
68
29
  end
69
30
  end
@@ -2,38 +2,25 @@
2
2
 
3
3
  module Pubid
4
4
  module Cie
5
- # Base class for CIE supplement identifiers (Supplement, Corrigendum).
5
+ # Base class for CIE supplement identifiers
6
+ # Single Responsibility: Provide common attributes for supplement documents
6
7
  #
7
- # Like ISO/IEC/BSI/JCGM, a CIE supplement wraps its base document as a
8
- # nested full identifier (+base+, a Pubid::Cie::Identifier),
9
- # rather than flat base_number/base_year strings. This lets CIE supplements
10
- # participate in the shared base_document / drop_supplements / matches?
11
- # vocabulary relaton uses to match a citation to its base standard.
8
+ # Supplement identifiers modify or extend base identifiers.
9
+ # Unlike ISO/IEC, CIE supplements store base information as flat
10
+ # string attributes rather than recursive Identifier objects.
12
11
  #
13
- # Concrete subtypes: Supplement (-SPN), Corrigendum (/CorN).
12
+ # Classes inheriting from SupplementIdentifier:
13
+ # - Corrigendum (corrigenda with /CorN notation)
14
+ # - Supplement (supplements with -SPN notation)
15
+ #
16
+ # Architecture Note:
17
+ # CIE uses a different architectural approach than ISO/IEC:
18
+ # - ISO/IEC: Recursive base_identifier objects
19
+ # - CIE: Flat string attributes (base_number, base_year, etc.)
14
20
  class SupplementIdentifier < Identifier
15
- attribute :base, Identifier, polymorphic: true
16
- # The supplement's/corrigendum's own ordinal ("1" in -SP1 / Cor1).
17
- # :string overrides the base ::Pubid::Identifier Components::Code type.
18
- # (Not the index key — relaton keys on #root.number, the base standard's.)
19
- attribute :number, :string
20
-
21
- # Uniform, class-agnostic supplement interface (shared by Supplement and
22
- # Corrigendum) so callers never special-case corrigenda. +supplement_type+
23
- # and +supplement_year+ are defined per subclass.
24
- def supplement_number
25
- number
26
- end
27
-
28
- # The underlying standard, with supplement layer(s) peeled recursively.
29
- def base_document
30
- base&.base_document || self
31
- end
32
-
33
- # Dropping one supplement layer yields the wrapped base identifier.
34
- def drop_supplements
35
- base || self
36
- end
21
+ # Common attribute for all CIE identifiers
22
+ # Values: "current" (colon date separator) or "legacy" (dash date separator)
23
+ attribute :style, :string
37
24
  end
38
25
  end
39
26
  end