pubid 2.0.0.pre.alpha.7 → 2.0.0.pre.alpha.9

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 (485) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +9 -50
  3. data/data/bipm/update_codes.yaml +9 -0
  4. data/data/iec/update_codes.yaml +3 -0
  5. data/data/ieee/update_codes.yaml +107 -1
  6. data/data/nist/series.yaml +155 -0
  7. data/data/nist/update_codes.yaml +8 -0
  8. data/lib/pubid/adobe/builder.rb +52 -0
  9. data/lib/pubid/adobe/identifier.rb +49 -0
  10. data/lib/pubid/adobe/identifiers/publication.rb +31 -0
  11. data/lib/pubid/adobe/identifiers/tech_note.rb +32 -0
  12. data/lib/pubid/adobe/identifiers.rb +10 -0
  13. data/lib/pubid/adobe/parser.rb +128 -0
  14. data/lib/pubid/adobe/renderer.rb +39 -0
  15. data/lib/pubid/adobe/urn_generator.rb +42 -0
  16. data/lib/pubid/adobe/urn_parser.rb +69 -0
  17. data/lib/pubid/adobe.rb +60 -0
  18. data/lib/pubid/amca/builder.rb +2 -2
  19. data/lib/pubid/amca/identifier.rb +1 -3
  20. data/lib/pubid/amca/identifiers/base.rb +1 -6
  21. data/lib/pubid/amca/identifiers/interpretation.rb +1 -1
  22. data/lib/pubid/amca/identifiers/publication.rb +1 -1
  23. data/lib/pubid/amca/identifiers/standard.rb +1 -1
  24. data/lib/pubid/amca/identifiers.rb +0 -1
  25. data/lib/pubid/amca/single_identifier.rb +1 -1
  26. data/lib/pubid/amca.rb +3 -3
  27. data/lib/pubid/ashrae/builder.rb +22 -22
  28. data/lib/pubid/ashrae/identifier.rb +3 -4
  29. data/lib/pubid/ashrae/identifiers/addenda_package.rb +1 -1
  30. data/lib/pubid/ashrae/identifiers/addendum.rb +1 -1
  31. data/lib/pubid/ashrae/identifiers/base.rb +14 -8
  32. data/lib/pubid/ashrae/identifiers/combined_addenda.rb +1 -1
  33. data/lib/pubid/ashrae/identifiers.rb +0 -1
  34. data/lib/pubid/ashrae/parser.rb +14 -9
  35. data/lib/pubid/ashrae/renderer.rb +19 -19
  36. data/lib/pubid/ashrae/single_identifier.rb +1 -1
  37. data/lib/pubid/ashrae/supplement_identifier.rb +6 -6
  38. data/lib/pubid/ashrae.rb +3 -3
  39. data/lib/pubid/bipm/builder.rb +107 -0
  40. data/lib/pubid/bipm/identifier.rb +160 -0
  41. data/lib/pubid/bipm/identifiers/committee_document.rb +24 -0
  42. data/lib/pubid/bipm/identifiers/guide.rb +24 -0
  43. data/lib/pubid/bipm/identifiers/meeting.rb +41 -0
  44. data/lib/pubid/bipm/identifiers/mep.rb +21 -0
  45. data/lib/pubid/bipm/identifiers/metrologia_article.rb +24 -0
  46. data/lib/pubid/bipm/identifiers/si_brochure.rb +20 -0
  47. data/lib/pubid/bipm/identifiers.rb +15 -0
  48. data/lib/pubid/bipm/parser.rb +184 -0
  49. data/lib/pubid/bipm/renderer.rb +110 -0
  50. data/lib/pubid/bipm/urn_generator.rb +58 -0
  51. data/lib/pubid/bipm/urn_parser.rb +52 -0
  52. data/lib/pubid/bipm.rb +86 -0
  53. data/lib/pubid/bsi/builder.rb +14 -14
  54. data/lib/pubid/bsi/identifier.rb +0 -1
  55. data/lib/pubid/bsi/identifiers/addendum_document.rb +2 -2
  56. data/lib/pubid/bsi/identifiers/amendment.rb +4 -4
  57. data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +6 -0
  58. data/lib/pubid/bsi/identifiers/corrigendum.rb +4 -4
  59. data/lib/pubid/bsi/identifiers/expert_commentary.rb +5 -5
  60. data/lib/pubid/bsi/identifiers/supplement_document.rb +2 -2
  61. data/lib/pubid/bsi/identifiers/value_added_publication.rb +6 -6
  62. data/lib/pubid/bsi/renderer.rb +8 -8
  63. data/lib/pubid/bsi/single_identifier.rb +48 -0
  64. data/lib/pubid/builder/base.rb +5 -3
  65. data/lib/pubid/bundled_identifier.rb +3 -3
  66. data/lib/pubid/calconnect/builder.rb +38 -0
  67. data/lib/pubid/calconnect/identifier.rb +117 -0
  68. data/lib/pubid/calconnect/identifiers/standard.rb +29 -0
  69. data/lib/pubid/calconnect/identifiers.rb +9 -0
  70. data/lib/pubid/calconnect/parser.rb +54 -0
  71. data/lib/pubid/calconnect/renderer.rb +36 -0
  72. data/lib/pubid/calconnect/urn_generator.rb +33 -0
  73. data/lib/pubid/calconnect/urn_parser.rb +34 -0
  74. data/lib/pubid/calconnect.rb +77 -0
  75. data/lib/pubid/ccsds/builder.rb +1 -1
  76. data/lib/pubid/ccsds/identifier.rb +1 -1
  77. data/lib/pubid/ccsds/identifiers/corrigendum.rb +2 -2
  78. data/lib/pubid/ccsds/supplement_identifier.rb +6 -6
  79. data/lib/pubid/ccsds/urn_generator.rb +3 -3
  80. data/lib/pubid/cen_cenelec/builder.rb +46 -12
  81. data/lib/pubid/cen_cenelec/identifiers/amendment.rb +2 -2
  82. data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +6 -0
  83. data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +2 -2
  84. data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +60 -3
  85. data/lib/pubid/cen_cenelec/identifiers/fragment.rb +2 -2
  86. data/lib/pubid/cen_cenelec/renderer.rb +5 -5
  87. data/lib/pubid/cen_cenelec/supplement_identifier.rb +5 -5
  88. data/lib/pubid/cen_cenelec/urn_generator.rb +1 -1
  89. data/lib/pubid/cen_cenelec.rb +76 -72
  90. data/lib/pubid/cie/builder.rb +139 -24
  91. data/lib/pubid/cie/identifier.rb +7 -3
  92. data/lib/pubid/cie/identifiers/bundle.rb +32 -4
  93. data/lib/pubid/cie/identifiers/code_attributes.rb +52 -0
  94. data/lib/pubid/cie/identifiers/conference.rb +9 -4
  95. data/lib/pubid/cie/identifiers/corrigendum.rb +17 -23
  96. data/lib/pubid/cie/identifiers/dual_published.rb +4 -4
  97. data/lib/pubid/cie/identifiers/identical.rb +7 -7
  98. data/lib/pubid/cie/identifiers/joint_published.rb +8 -8
  99. data/lib/pubid/cie/identifiers/proceedings.rb +39 -0
  100. data/lib/pubid/cie/identifiers/standard.rb +33 -7
  101. data/lib/pubid/cie/identifiers/supplement.rb +24 -22
  102. data/lib/pubid/cie/identifiers/tutorial_bundle.rb +6 -2
  103. data/lib/pubid/cie/identifiers.rb +2 -0
  104. data/lib/pubid/cie/parser.rb +54 -5
  105. data/lib/pubid/cie/single_identifier.rb +40 -1
  106. data/lib/pubid/cie/supplement_identifier.rb +29 -16
  107. data/lib/pubid/cie/urn_generator.rb +11 -8
  108. data/lib/pubid/cie.rb +0 -1
  109. data/lib/pubid/components/date.rb +21 -5
  110. data/lib/pubid/csa/builder.rb +1 -1
  111. data/lib/pubid/csa/composite_identifier.rb +17 -1
  112. data/lib/pubid/csa/identifier.rb +48 -3
  113. data/lib/pubid/csa/identifiers/bundled.rb +6 -0
  114. data/lib/pubid/csa/identifiers/combined.rb +6 -0
  115. data/lib/pubid/csa/identifiers/package.rb +2 -2
  116. data/lib/pubid/csa/parser.rb +6 -6
  117. data/lib/pubid/csa/wrapper_identifier.rb +17 -0
  118. data/lib/pubid/doi/builder.rb +18 -0
  119. data/lib/pubid/doi/identifier.rb +46 -0
  120. data/lib/pubid/doi/identifiers/resource.rb +30 -0
  121. data/lib/pubid/doi/identifiers.rb +9 -0
  122. data/lib/pubid/doi/parser.rb +52 -0
  123. data/lib/pubid/doi/renderer.rb +13 -0
  124. data/lib/pubid/doi.rb +55 -0
  125. data/lib/pubid/easc/builder.rb +55 -0
  126. data/lib/pubid/easc/identifier.rb +61 -0
  127. data/lib/pubid/easc/identifiers/pmg.rb +20 -0
  128. data/lib/pubid/easc/identifiers/rmg.rb +19 -0
  129. data/lib/pubid/easc/identifiers.rb +10 -0
  130. data/lib/pubid/easc/parser.rb +80 -0
  131. data/lib/pubid/easc/renderer.rb +48 -0
  132. data/lib/pubid/easc/urn_generator.rb +46 -0
  133. data/lib/pubid/easc/urn_parser.rb +57 -0
  134. data/lib/pubid/easc.rb +52 -0
  135. data/lib/pubid/ecma/builder.rb +31 -0
  136. data/lib/pubid/ecma/identifier.rb +76 -0
  137. data/lib/pubid/ecma/identifiers/memento.rb +30 -0
  138. data/lib/pubid/ecma/identifiers/standard.rb +31 -0
  139. data/lib/pubid/ecma/identifiers/technical_report.rb +31 -0
  140. data/lib/pubid/ecma/identifiers.rb +11 -0
  141. data/lib/pubid/ecma/parser.rb +41 -0
  142. data/lib/pubid/ecma/renderer.rb +46 -0
  143. data/lib/pubid/ecma/urn_generator.rb +25 -0
  144. data/lib/pubid/ecma/urn_parser.rb +35 -0
  145. data/lib/pubid/ecma.rb +67 -0
  146. data/lib/pubid/etsi/builder.rb +7 -3
  147. data/lib/pubid/etsi/identifier.rb +1 -3
  148. data/lib/pubid/etsi/identifiers/base.rb +28 -10
  149. data/lib/pubid/etsi/identifiers/etsi_standard.rb +128 -4
  150. data/lib/pubid/etsi/identifiers/supplement_identifier.rb +35 -3
  151. data/lib/pubid/etsi/identifiers.rb +0 -1
  152. data/lib/pubid/etsi/parser.rb +8 -2
  153. data/lib/pubid/etsi/renderer.rb +8 -2
  154. data/lib/pubid/etsi.rb +5 -5
  155. data/lib/pubid/export/exporter.rb +2 -1
  156. data/lib/pubid/export/flavor_exporter.rb +18 -3
  157. data/lib/pubid/gb/builder.rb +45 -0
  158. data/lib/pubid/gb/identifier.rb +64 -0
  159. data/lib/pubid/gb/identifiers/standard.rb +34 -0
  160. data/lib/pubid/gb/identifiers.rb +9 -0
  161. data/lib/pubid/gb/parser.rb +63 -0
  162. data/lib/pubid/gb/renderer.rb +35 -0
  163. data/lib/pubid/gb.rb +87 -0
  164. data/lib/pubid/gost/builder.rb +148 -0
  165. data/lib/pubid/gost/identifier.rb +49 -0
  166. data/lib/pubid/gost/identifiers/foreign_reference.rb +25 -0
  167. data/lib/pubid/gost/identifiers/harmonized.rb +39 -0
  168. data/lib/pubid/gost/identifiers/identical_adoption.rb +39 -0
  169. data/lib/pubid/gost/identifiers/interstate_standard.rb +20 -0
  170. data/lib/pubid/gost/identifiers/national_standard.rb +19 -0
  171. data/lib/pubid/gost/identifiers.rb +13 -0
  172. data/lib/pubid/gost/parser.rb +97 -0
  173. data/lib/pubid/gost/renderer.rb +48 -0
  174. data/lib/pubid/gost/urn_generator.rb +46 -0
  175. data/lib/pubid/gost/urn_parser.rb +52 -0
  176. data/lib/pubid/gost.rb +49 -0
  177. data/lib/pubid/iala/builder.rb +22 -27
  178. data/lib/pubid/iala/identifier.rb +27 -2
  179. data/lib/pubid/iala/identifiers/advice.rb +1 -1
  180. data/lib/pubid/iala/identifiers/annex.rb +14 -12
  181. data/lib/pubid/iala/identifiers/general_assembly.rb +5 -2
  182. data/lib/pubid/iala/identifiers/guideline.rb +3 -1
  183. data/lib/pubid/iala/identifiers/letter.rb +1 -1
  184. data/lib/pubid/iala/identifiers/manual.rb +3 -1
  185. data/lib/pubid/iala/identifiers/model_course.rb +3 -1
  186. data/lib/pubid/iala/identifiers/recommendation.rb +3 -1
  187. data/lib/pubid/iala/identifiers/report.rb +1 -1
  188. data/lib/pubid/iala/identifiers/resolution.rb +1 -1
  189. data/lib/pubid/iala/identifiers/standard.rb +3 -1
  190. data/lib/pubid/iala/identifiers.rb +0 -1
  191. data/lib/pubid/iala/renderer.rb +1 -1
  192. data/lib/pubid/iala/urn_generator.rb +1 -1
  193. data/lib/pubid/iala/urn_parser.rb +19 -2
  194. data/lib/pubid/iala.rb +4 -4
  195. data/lib/pubid/iana/builder.rb +20 -0
  196. data/lib/pubid/iana/identifier.rb +72 -0
  197. data/lib/pubid/iana/identifiers/registry.rb +33 -0
  198. data/lib/pubid/iana/identifiers.rb +9 -0
  199. data/lib/pubid/iana/parser.rb +38 -0
  200. data/lib/pubid/iana/renderer.rb +29 -0
  201. data/lib/pubid/iana/urn_generator.rb +15 -0
  202. data/lib/pubid/iana/urn_parser.rb +24 -0
  203. data/lib/pubid/iana.rb +69 -0
  204. data/lib/pubid/identifier.rb +210 -23
  205. data/lib/pubid/idf/builder.rb +1 -1
  206. data/lib/pubid/idf/parser.rb +2 -2
  207. data/lib/pubid/idf/renderer.rb +1 -1
  208. data/lib/pubid/idf/supplement_identifier.rb +3 -3
  209. data/lib/pubid/iec/builder.rb +35 -25
  210. data/lib/pubid/iec/identifier.rb +47 -2
  211. data/lib/pubid/iec/identifiers/base.rb +2 -2
  212. data/lib/pubid/iec/identifiers/consolidated_identifier.rb +6 -0
  213. data/lib/pubid/iec/identifiers/fragment_identifier.rb +11 -11
  214. data/lib/pubid/iec/identifiers/international_standard.rb +8 -5
  215. data/lib/pubid/iec/identifiers/sheet_identifier.rb +12 -12
  216. data/lib/pubid/iec/identifiers/technical_group.rb +30 -0
  217. data/lib/pubid/iec/identifiers/technical_report.rb +1 -1
  218. data/lib/pubid/iec/identifiers/technical_specification.rb +1 -1
  219. data/lib/pubid/iec/identifiers/vap_identifier.rb +12 -12
  220. data/lib/pubid/iec/identifiers.rb +1 -0
  221. data/lib/pubid/iec/parser.rb +51 -10
  222. data/lib/pubid/iec/renderer.rb +18 -8
  223. data/lib/pubid/iec/single_identifier.rb +1 -1
  224. data/lib/pubid/iec/supplement_identifier.rb +32 -19
  225. data/lib/pubid/iec.rb +1 -6
  226. data/lib/pubid/ieee/aiee/builder.rb +17 -3
  227. data/lib/pubid/ieee/aiee/identifier.rb +45 -61
  228. data/lib/pubid/ieee/builder.rb +341 -68
  229. data/lib/pubid/ieee/compaction.rb +121 -0
  230. data/lib/pubid/ieee/components/draft.rb +47 -7
  231. data/lib/pubid/ieee/identifier.rb +1 -3
  232. data/lib/pubid/ieee/identifiers/adopted_standard.rb +30 -5
  233. data/lib/pubid/ieee/identifiers/amendment.rb +40 -0
  234. data/lib/pubid/ieee/identifiers/base.rb +106 -13
  235. data/lib/pubid/ieee/identifiers/code_number.rb +82 -0
  236. data/lib/pubid/ieee/identifiers/conformance_identifier.rb +6 -2
  237. data/lib/pubid/ieee/identifiers/corrigendum.rb +17 -2
  238. data/lib/pubid/ieee/identifiers/csa_dual_published.rb +3 -3
  239. data/lib/pubid/ieee/identifiers/dual_identifier.rb +3 -3
  240. data/lib/pubid/ieee/identifiers/dual_published.rb +3 -3
  241. data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +102 -5
  242. data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +2 -1
  243. data/lib/pubid/ieee/identifiers/joint_development.rb +56 -11
  244. data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +1 -1
  245. data/lib/pubid/ieee/identifiers/nesc/base.rb +90 -19
  246. data/lib/pubid/ieee/identifiers/nesc/draft.rb +20 -5
  247. data/lib/pubid/ieee/identifiers/nesc/edition.rb +32 -0
  248. data/lib/pubid/ieee/identifiers/nesc/handbook.rb +16 -5
  249. data/lib/pubid/ieee/identifiers/nesc/redline.rb +11 -2
  250. data/lib/pubid/ieee/identifiers/nesc/standard.rb +18 -3
  251. data/lib/pubid/ieee/identifiers/nesc.rb +1 -0
  252. data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +3 -3
  253. data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +14 -6
  254. data/lib/pubid/ieee/identifiers/redlined_standard.rb +4 -4
  255. data/lib/pubid/ieee/identifiers/si_standard.rb +4 -1
  256. data/lib/pubid/ieee/identifiers/standard.rb +4 -1
  257. data/lib/pubid/ieee/identifiers/supplement_identifier.rb +26 -7
  258. data/lib/pubid/ieee/identifiers.rb +2 -1
  259. data/lib/pubid/ieee/ire/builder.rb +7 -6
  260. data/lib/pubid/ieee/ire/identifier.rb +48 -33
  261. data/lib/pubid/ieee/nesc/builder.rb +33 -20
  262. data/lib/pubid/ieee/nesc/parser.rb +15 -14
  263. data/lib/pubid/ieee/parser.rb +461 -43
  264. data/lib/pubid/ieee/pre_parser.rb +1 -1
  265. data/lib/pubid/ieee/renderer.rb +154 -57
  266. data/lib/pubid/ieee/typed_stages.rb +12 -1
  267. data/lib/pubid/ieee/urn_generator.rb +3 -5
  268. data/lib/pubid/ieee.rb +56 -3
  269. data/lib/pubid/ietf/builder.rb +62 -0
  270. data/lib/pubid/ietf/identifier.rb +5 -0
  271. data/lib/pubid/ietf/identifiers/base.rb +75 -0
  272. data/lib/pubid/ietf/identifiers/bcp.rb +25 -0
  273. data/lib/pubid/ietf/identifiers/fyi.rb +25 -0
  274. data/lib/pubid/ietf/identifiers/internet_draft.rb +29 -0
  275. data/lib/pubid/ietf/identifiers/rfc.rb +25 -0
  276. data/lib/pubid/ietf/identifiers/std.rb +25 -0
  277. data/lib/pubid/ietf/identifiers.rb +13 -0
  278. data/lib/pubid/ietf/parser.rb +43 -0
  279. data/lib/pubid/ietf/renderer.rb +26 -0
  280. data/lib/pubid/ietf/urn_generator.rb +23 -0
  281. data/lib/pubid/ietf/urn_parser.rb +35 -0
  282. data/lib/pubid/ietf.rb +76 -0
  283. data/lib/pubid/iho/identifier.rb +1 -3
  284. data/lib/pubid/iho/identifiers/base.rb +1 -7
  285. data/lib/pubid/iho/identifiers/bibliographic.rb +1 -1
  286. data/lib/pubid/iho/identifiers/circular_letter.rb +1 -1
  287. data/lib/pubid/iho/identifiers/miscellaneous.rb +1 -1
  288. data/lib/pubid/iho/identifiers/publication.rb +1 -1
  289. data/lib/pubid/iho/identifiers/standard.rb +1 -1
  290. data/lib/pubid/iho/identifiers.rb +0 -1
  291. data/lib/pubid/iho.rb +7 -7
  292. data/lib/pubid/isbn/builder.rb +44 -0
  293. data/lib/pubid/isbn/check_digit.rb +53 -0
  294. data/lib/pubid/isbn/identifier.rb +63 -0
  295. data/lib/pubid/isbn/identifiers/book.rb +30 -0
  296. data/lib/pubid/isbn/identifiers.rb +9 -0
  297. data/lib/pubid/isbn/parser.rb +45 -0
  298. data/lib/pubid/isbn/renderer.rb +16 -0
  299. data/lib/pubid/isbn.rb +52 -0
  300. data/lib/pubid/iso/builder.rb +9 -4
  301. data/lib/pubid/iso/combined_identifier.rb +2 -2
  302. data/lib/pubid/iso/identifier.rb +17 -1
  303. data/lib/pubid/iso/identifiers/directives_supplement.rb +8 -8
  304. data/lib/pubid/iso/normalizer.rb +2 -2
  305. data/lib/pubid/iso/parser.rb +16 -12
  306. data/lib/pubid/iso/supplement_identifier.rb +19 -6
  307. data/lib/pubid/iso/urn_generator.rb +4 -1
  308. data/lib/pubid/iso/urn_parser.rb +1 -1
  309. data/lib/pubid/itu/builder.rb +230 -29
  310. data/lib/pubid/itu/components/code.rb +48 -5
  311. data/lib/pubid/itu/components/designation.rb +35 -0
  312. data/lib/pubid/itu/components.rb +1 -0
  313. data/lib/pubid/itu/identifier.rb +1 -3
  314. data/lib/pubid/itu/identifiers/addendum.rb +15 -0
  315. data/lib/pubid/itu/identifiers/amendment.rb +6 -28
  316. data/lib/pubid/itu/identifiers/annex.rb +13 -2
  317. data/lib/pubid/itu/identifiers/annex_of_recommendation.rb +87 -0
  318. data/lib/pubid/itu/identifiers/appendix_of_recommendation.rb +92 -0
  319. data/lib/pubid/itu/identifiers/base.rb +341 -23
  320. data/lib/pubid/itu/identifiers/combined_identifier.rb +99 -23
  321. data/lib/pubid/itu/identifiers/corrigendum.rb +16 -23
  322. data/lib/pubid/itu/identifiers/errata.rb +15 -0
  323. data/lib/pubid/itu/identifiers/handbook.rb +38 -0
  324. data/lib/pubid/itu/identifiers/question.rb +63 -0
  325. data/lib/pubid/itu/identifiers/recommendation.rb +3 -2
  326. data/lib/pubid/itu/identifiers/report.rb +39 -0
  327. data/lib/pubid/itu/identifiers/special_publication.rb +3 -1
  328. data/lib/pubid/itu/identifiers/standard_serialization.rb +58 -0
  329. data/lib/pubid/itu/identifiers/supplement.rb +119 -14
  330. data/lib/pubid/itu/identifiers.rb +10 -1
  331. data/lib/pubid/itu/model.rb +1 -1
  332. data/lib/pubid/itu/parser.rb +480 -26
  333. data/lib/pubid/itu/urn_generator.rb +36 -6
  334. data/lib/pubid/itu/urn_parser.rb +8 -0
  335. data/lib/pubid/itu.rb +11 -3
  336. data/lib/pubid/jcgm/builder.rb +23 -13
  337. data/lib/pubid/jcgm/identifiers/amendment.rb +0 -2
  338. data/lib/pubid/jcgm/identifiers/corrigendum.rb +34 -0
  339. data/lib/pubid/jcgm/identifiers/gum_guide.rb +3 -3
  340. data/lib/pubid/jcgm/identifiers/meeting.rb +47 -0
  341. data/lib/pubid/jcgm/identifiers.rb +2 -0
  342. data/lib/pubid/jcgm/parser.rb +66 -6
  343. data/lib/pubid/jcgm/renderer.rb +26 -12
  344. data/lib/pubid/jcgm/single_identifier.rb +74 -5
  345. data/lib/pubid/jcgm/supplement_identifier.rb +39 -4
  346. data/lib/pubid/jcgm/urn_generator.rb +21 -13
  347. data/lib/pubid/jcgm/urn_parser.rb +15 -3
  348. data/lib/pubid/jis/identifier.rb +52 -0
  349. data/lib/pubid/nist/builder.rb +29 -9
  350. data/lib/pubid/nist/caster.rb +7 -45
  351. data/lib/pubid/nist/circular_supplement_builder.rb +7 -5
  352. data/lib/pubid/nist/components/supplement.rb +5 -2
  353. data/lib/pubid/nist/configuration.rb +7 -1
  354. data/lib/pubid/nist/identifier.rb +1 -3
  355. data/lib/pubid/nist/identifiers/base.rb +121 -37
  356. data/lib/pubid/nist/identifiers/circular.rb +1 -1
  357. data/lib/pubid/nist/identifiers/commercial_standard.rb +1 -1
  358. data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +1 -1
  359. data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +1 -1
  360. data/lib/pubid/nist/identifiers/crpl_report.rb +1 -1
  361. data/lib/pubid/nist/identifiers/dated_document.rb +1 -1
  362. data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +1 -1
  363. data/lib/pubid/nist/identifiers/grant_contractor_report.rb +1 -1
  364. data/lib/pubid/nist/identifiers/handbook.rb +1 -1
  365. data/lib/pubid/nist/identifiers/internal_report.rb +1 -1
  366. data/lib/pubid/nist/identifiers/letter_circular.rb +1 -1
  367. data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +1 -1
  368. data/lib/pubid/nist/identifiers/monograph.rb +1 -1
  369. data/lib/pubid/nist/identifiers/ncstar.rb +2 -2
  370. data/lib/pubid/nist/identifiers/nsrds.rb +1 -1
  371. data/lib/pubid/nist/identifiers/owmwp.rb +1 -1
  372. data/lib/pubid/nist/identifiers/report.rb +1 -1
  373. data/lib/pubid/nist/identifiers/special_publication.rb +10 -1
  374. data/lib/pubid/nist/identifiers/technical_note.rb +1 -1
  375. data/lib/pubid/nist/identifiers.rb +0 -1
  376. data/lib/pubid/nist/parser.rb +29 -4
  377. data/lib/pubid/nist/preprocessor.rb +15 -0
  378. data/lib/pubid/nist/router.rb +3 -2
  379. data/lib/pubid/nist/series/ir.rb +0 -3
  380. data/lib/pubid/nist/supplement_identifier.rb +9 -9
  381. data/lib/pubid/nist.rb +13 -12
  382. data/lib/pubid/oasis/builder.rb +77 -0
  383. data/lib/pubid/oasis/identifier.rb +82 -0
  384. data/lib/pubid/oasis/identifiers/standard.rb +29 -0
  385. data/lib/pubid/oasis/identifiers.rb +9 -0
  386. data/lib/pubid/oasis/parser.rb +34 -0
  387. data/lib/pubid/oasis/renderer.rb +29 -0
  388. data/lib/pubid/oasis/urn_generator.rb +25 -0
  389. data/lib/pubid/oasis/urn_parser.rb +22 -0
  390. data/lib/pubid/oasis.rb +74 -0
  391. data/lib/pubid/ogc/builder.rb +33 -0
  392. data/lib/pubid/ogc/identifier.rb +77 -0
  393. data/lib/pubid/ogc/identifiers/document.rb +26 -0
  394. data/lib/pubid/ogc/identifiers.rb +10 -0
  395. data/lib/pubid/ogc/parser.rb +40 -0
  396. data/lib/pubid/ogc/renderer.rb +33 -0
  397. data/lib/pubid/ogc/urn_generator.rb +14 -0
  398. data/lib/pubid/ogc/urn_parser.rb +22 -0
  399. data/lib/pubid/ogc.rb +71 -0
  400. data/lib/pubid/oiml/builder.rb +31 -7
  401. data/lib/pubid/oiml/identifier.rb +9 -1
  402. data/lib/pubid/oiml/parser.rb +11 -12
  403. data/lib/pubid/oiml/renderer.rb +13 -13
  404. data/lib/pubid/oiml/single_identifier.rb +20 -0
  405. data/lib/pubid/oiml/supplement_identifier.rb +9 -9
  406. data/lib/pubid/oiml/urn_parser.rb +23 -6
  407. data/lib/pubid/oiml.rb +4 -0
  408. data/lib/pubid/omg/builder.rb +19 -0
  409. data/lib/pubid/omg/identifier.rb +44 -0
  410. data/lib/pubid/omg/identifiers/specification.rb +32 -0
  411. data/lib/pubid/omg/identifiers.rb +9 -0
  412. data/lib/pubid/omg/parser.rb +40 -0
  413. data/lib/pubid/omg/renderer.rb +19 -0
  414. data/lib/pubid/omg.rb +51 -0
  415. data/lib/pubid/parsers/mr_string.rb +101 -7
  416. data/lib/pubid/plateau/builder.rb +8 -4
  417. data/lib/pubid/plateau/identifier.rb +1 -3
  418. data/lib/pubid/plateau/identifiers/base.rb +1 -6
  419. data/lib/pubid/plateau/identifiers/handbook.rb +1 -1
  420. data/lib/pubid/plateau/identifiers/technical_report.rb +1 -1
  421. data/lib/pubid/plateau/identifiers.rb +0 -1
  422. data/lib/pubid/plateau/parser.rb +15 -5
  423. data/lib/pubid/plateau/renderer.rb +1 -1
  424. data/lib/pubid/plateau/supplement_identifier.rb +11 -11
  425. data/lib/pubid/plateau.rb +4 -4
  426. data/lib/pubid/renderers/human_readable.rb +3 -1
  427. data/lib/pubid/renderers/mr_string.rb +46 -4
  428. data/lib/pubid/renderers/supplement_renderer.rb +1 -1
  429. data/lib/pubid/rendering/supplement.rb +4 -4
  430. data/lib/pubid/sae/builder.rb +1 -1
  431. data/lib/pubid/sae/identifier.rb +1 -3
  432. data/lib/pubid/sae/identifiers/base.rb +10 -7
  433. data/lib/pubid/sae/identifiers.rb +0 -1
  434. data/lib/pubid/sae.rb +3 -3
  435. data/lib/pubid/tgpp/builder.rb +41 -0
  436. data/lib/pubid/tgpp/identifier.rb +91 -0
  437. data/lib/pubid/tgpp/identifiers/technical_report.rb +32 -0
  438. data/lib/pubid/tgpp/identifiers/technical_specification.rb +33 -0
  439. data/lib/pubid/tgpp/identifiers.rb +11 -0
  440. data/lib/pubid/tgpp/parser.rb +62 -0
  441. data/lib/pubid/tgpp/renderer.rb +36 -0
  442. data/lib/pubid/tgpp/urn_generator.rb +20 -0
  443. data/lib/pubid/tgpp/urn_parser.rb +28 -0
  444. data/lib/pubid/tgpp.rb +78 -0
  445. data/lib/pubid/type_resolver.rb +59 -0
  446. data/lib/pubid/un/builder.rb +42 -0
  447. data/lib/pubid/un/identifier.rb +37 -0
  448. data/lib/pubid/un/identifiers/document.rb +24 -0
  449. data/lib/pubid/un/identifiers.rb +9 -0
  450. data/lib/pubid/un/parser.rb +25 -0
  451. data/lib/pubid/un/renderer.rb +11 -0
  452. data/lib/pubid/un.rb +46 -0
  453. data/lib/pubid/version.rb +1 -1
  454. data/lib/pubid/w3c/builder.rb +55 -0
  455. data/lib/pubid/w3c/identifier.rb +101 -0
  456. data/lib/pubid/w3c/identifiers/candidate_recommendation.rb +31 -0
  457. data/lib/pubid/w3c/identifiers/candidate_recommendation_draft.rb +31 -0
  458. data/lib/pubid/w3c/identifiers/draft_note.rb +31 -0
  459. data/lib/pubid/w3c/identifiers/note.rb +30 -0
  460. data/lib/pubid/w3c/identifiers/obsolete_recommendation.rb +31 -0
  461. data/lib/pubid/w3c/identifiers/proposed_edited_recommendation.rb +31 -0
  462. data/lib/pubid/w3c/identifiers/proposed_recommendation.rb +31 -0
  463. data/lib/pubid/w3c/identifiers/recommendation.rb +31 -0
  464. data/lib/pubid/w3c/identifiers/standard.rb +12 -0
  465. data/lib/pubid/w3c/identifiers/superseded_recommendation.rb +31 -0
  466. data/lib/pubid/w3c/identifiers/working_draft.rb +30 -0
  467. data/lib/pubid/w3c/identifiers.rb +25 -0
  468. data/lib/pubid/w3c/parser.rb +43 -0
  469. data/lib/pubid/w3c/renderer.rb +35 -0
  470. data/lib/pubid/w3c/urn_generator.rb +18 -0
  471. data/lib/pubid/w3c/urn_parser.rb +36 -0
  472. data/lib/pubid/w3c.rb +67 -0
  473. data/lib/pubid/xsf/builder.rb +17 -0
  474. data/lib/pubid/xsf/identifier.rb +62 -0
  475. data/lib/pubid/xsf/identifiers/xep.rb +31 -0
  476. data/lib/pubid/xsf/identifiers.rb +9 -0
  477. data/lib/pubid/xsf/parser.rb +25 -0
  478. data/lib/pubid/xsf/renderer.rb +23 -0
  479. data/lib/pubid/xsf/urn_generator.rb +13 -0
  480. data/lib/pubid/xsf/urn_parser.rb +18 -0
  481. data/lib/pubid/xsf.rb +76 -0
  482. data/lib/pubid.rb +25 -1
  483. metadata +205 -4
  484. data/lib/pubid/cie/components/code.rb +0 -80
  485. data/lib/pubid/iala/identifiers/base.rb +0 -14
@@ -0,0 +1,128 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "parslet"
4
+
5
+ module Pubid
6
+ module Adobe
7
+ # Parslet grammar for Adobe identifiers.
8
+ #
9
+ # Canonical citation forms (what the renderer produces):
10
+ #
11
+ # Adobe TN 5014 (tech note; replaces the older
12
+ # "Adobe Technical Note #5014")
13
+ # Adobe Publication adobe-glyph-list
14
+ # Adobe Publication adobe-japan1-7
15
+ #
16
+ # The parser also accepts these legacy forms for back-compat:
17
+ #
18
+ # Adobe Technical Note #5014
19
+ # Adobe Technical Note 5014
20
+ # Adobe TN5014 (no space)
21
+ # ATN5014 (short alias)
22
+ # 5014 (bare number; data-repo context)
23
+ # adobe-glyph-list (bare slug)
24
+ class Parser < Parslet::Parser
25
+ include ::Pubid::Parser::CommonParseRules
26
+
27
+ root :identifier
28
+
29
+ rule(:space) { str(" ") }
30
+ rule(:space?) { space.maybe }
31
+ rule(:hash) { str("#") }
32
+ rule(:dot) { str(".") }
33
+ rule(:dash) { str("-") }
34
+
35
+ # Canonical short prefix: "Adobe TN" with optional trailing space.
36
+ # Matches both "Adobe TN 5014" and "Adobe TN5014".
37
+ rule(:tech_note_tn_prefix) do
38
+ str("Adobe") >> space >> str("TN") >> space?.maybe
39
+ end
40
+
41
+ # Legacy long prefix: "Adobe Technical Note" with optional "#".
42
+ rule(:tech_note_long_prefix) do
43
+ str("Adobe") >> space >> str("Technical") >> space >> str("Note") >>
44
+ (space? >> hash.maybe >> space?).maybe
45
+ end
46
+
47
+ # Legacy short alias: "ATN" with optional trailing space.
48
+ rule(:tech_note_atn_prefix) do
49
+ str("ATN") >> space?.maybe
50
+ end
51
+
52
+ rule(:tech_note_prefix) do
53
+ tech_note_tn_prefix | tech_note_long_prefix | tech_note_atn_prefix
54
+ end
55
+
56
+ rule(:digits) do
57
+ match("[0-9]").repeat(1)
58
+ end
59
+
60
+ # 4-digit tech note number, optionally followed by ".<Slug>" from
61
+ # the filename form. The slug is captured but not required.
62
+ rule(:slug_chars) do
63
+ match("[A-Za-z0-9_]").repeat(1)
64
+ end
65
+
66
+ rule(:tech_note) do
67
+ (tech_note_prefix >>
68
+ digits.as(:number) >>
69
+ (dot >> slug_chars.as(:slug)).maybe).as(:tech_note)
70
+ end
71
+
72
+ # Bare number form (e.g. when the data repo passes just "5014"
73
+ # extracted from a filename). Not advertised in user docs; used
74
+ # internally by AdobeFetcher::Docid.
75
+ rule(:bare_number) do
76
+ digits.as(:number).as(:tech_note_bare)
77
+ end
78
+
79
+ # "Adobe Publication " prefix. Matched literally then discarded —
80
+ # the publication slug/version is parsed by the inner rule.
81
+ rule(:publication_prefix) do
82
+ str("Adobe") >> space >> str("Publication") >> space
83
+ end
84
+
85
+ # Publication slug. Lowercase ASCII letters and digits joined by `-`.
86
+ # Each segment starts with a letter (so a trailing `-<digits>` is
87
+ # unambiguously a version suffix, not part of the slug).
88
+ rule(:slug_segment) do
89
+ match("[a-z]") >> match("[a-z0-9]").repeat
90
+ end
91
+
92
+ rule(:slug_inner) do
93
+ slug_segment >> (dash >> slug_segment).repeat
94
+ end
95
+
96
+ rule(:publication_with_version) do
97
+ (slug_inner.as(:slug) >> dash >> digits.as(:version)).as(:publication_version)
98
+ end
99
+
100
+ rule(:publication_slug_or_version) do
101
+ # Try with-version first so `adobe-japan1-7` doesn't get captured
102
+ # as slug `adobe-japan1-7` with no version. The flat `:slug` form
103
+ # is the fallback for unversioned slugs.
104
+ publication_with_version | slug_inner.as(:slug)
105
+ end
106
+
107
+ rule(:publication) do
108
+ # Optional "Adobe Publication " prefix. The prefix is consumed
109
+ # but not captured — the inner rule produces :slug or
110
+ # :publication_version as before.
111
+ publication_prefix.maybe >> publication_slug_or_version
112
+ end
113
+
114
+ rule(:identifier) do
115
+ tech_note | bare_number | publication
116
+ end
117
+
118
+ # Parse a string and return the raw parslet tree.
119
+ # @param string [String]
120
+ # @return [Hash]
121
+ def self.parse(string)
122
+ raise ArgumentError, ::Pubid::INPUT_TOO_LONG_MESSAGE if string.length > ::Pubid::MAX_INPUT_LENGTH
123
+
124
+ new.parse(string.strip)
125
+ end
126
+ end
127
+ end
128
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pubid
4
+ module Adobe
5
+ # Human-readable renderer for Adobe identifiers.
6
+ #
7
+ # Produces the canonical citation forms:
8
+ # "Adobe TN 5014" (tech note)
9
+ # "Adobe Publication adobe-glyph-list" (publication, slug)
10
+ # "Adobe Publication adobe-japan1-7" (publication, slug + version)
11
+ #
12
+ # The data repo (AdobeFetcher::Docid) overrides #to_s for publications
13
+ # to use the title from metadata instead of the slug, producing e.g.
14
+ # "Adobe Publication Adobe Glyph List". Pubid::Adobe itself is purely
15
+ # structural and renders slug-form citations.
16
+ class Renderer < ::Pubid::Renderers::Base
17
+ def render(context: nil, **_opts)
18
+ id = @id
19
+
20
+ return render_tech_note(id) if id.is_a?(Identifiers::TechNote)
21
+ return render_publication(id) if id.is_a?(Identifiers::Publication)
22
+
23
+ raise ArgumentError, "Unknown Adobe identifier class: #{id.class}"
24
+ end
25
+
26
+ private
27
+
28
+ def render_tech_note(id)
29
+ "Adobe TN #{id.number}"
30
+ end
31
+
32
+ def render_publication(id)
33
+ rendered = "Adobe Publication #{id.slug}"
34
+ rendered << "-#{id.version}" if id.version
35
+ rendered
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pubid
4
+ module Adobe
5
+ # Generates URN strings for Adobe identifiers.
6
+ #
7
+ # Format:
8
+ # urn:adobe:tech-note:<number> e.g. urn:adobe:tech-note:5014
9
+ # urn:adobe:publication:<slug>[:v<ver>] e.g. urn:adobe:publication:adobe-glyph-list
10
+ # urn:adobe:publication:adobe-japan1:v7
11
+ class UrnGenerator
12
+ attr_reader :identifier
13
+
14
+ def initialize(identifier)
15
+ @identifier = identifier
16
+ end
17
+
18
+ def generate
19
+ if identifier.is_a?(Identifiers::TechNote)
20
+ generate_tech_note
21
+ elsif identifier.is_a?(Identifiers::Publication)
22
+ generate_publication
23
+ else
24
+ raise ArgumentError,
25
+ "Unknown Adobe identifier class: #{identifier.class}"
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def generate_tech_note
32
+ "urn:adobe:tech-note:#{identifier.number}"
33
+ end
34
+
35
+ def generate_publication
36
+ parts = ["urn:adobe:publication", identifier.slug]
37
+ parts << "v#{identifier.version}" if identifier.version
38
+ parts.join(":")
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,69 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pubid
4
+ module Adobe
5
+ # Parses Adobe URNs back into identifiers.
6
+ #
7
+ # UrnGenerator emits:
8
+ # urn:adobe:tech-note:<number>
9
+ # urn:adobe:publication:<slug>[:v<version>]
10
+ #
11
+ # Examples:
12
+ # urn:adobe:tech-note:5014 → Adobe Technical Note #5014
13
+ # urn:adobe:publication:adobe-glyph-list → adobe-glyph-list
14
+ # urn:adobe:publication:adobe-japan1:v7 → adobe-japan1-7
15
+ class UrnParser < Pubid::UrnParser::Base
16
+ PREFIX = "urn:adobe:".freeze
17
+
18
+ def parse_urn(urn)
19
+ body = strip_namespace(urn)
20
+ parts = split_parts(body)
21
+ namespace = parts.fetch(0)
22
+
23
+ case namespace
24
+ when "tech-note"
25
+ parse_tech_note(parts)
26
+ when "publication"
27
+ parse_publication(parts)
28
+ else
29
+ raise Pubid::UrnParser::Errors::ParseError,
30
+ "Unknown Adobe URN namespace: #{namespace.inspect} in #{urn.inspect}"
31
+ end
32
+ end
33
+
34
+ private
35
+
36
+ def strip_namespace(urn)
37
+ unless urn.downcase.start_with?(PREFIX)
38
+ raise Pubid::UrnParser::Errors::ParseError,
39
+ "Invalid Adobe URN: #{urn.inspect}"
40
+ end
41
+
42
+ urn[PREFIX.length..]
43
+ end
44
+
45
+ def parse_tech_note(parts)
46
+ number = parts.fetch(1)
47
+ flavor_parse("Adobe Technical Note ##{number}")
48
+ end
49
+
50
+ def parse_publication(parts)
51
+ slug = parts.fetch(1)
52
+ version_seg = parts[2]
53
+ if version_seg&.start_with?("v")
54
+ flavor_parse("#{slug}-#{version_seg.sub(/\Av/, "")}")
55
+ else
56
+ flavor_parse(slug)
57
+ end
58
+ end
59
+
60
+ def split_parts(body)
61
+ body.split(":")
62
+ end
63
+
64
+ def flavor_parse(text)
65
+ ::Pubid::Adobe.parse(text)
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pubid
4
+ module Adobe
5
+ extend Pubid::PrefixesSupport
6
+
7
+ # Leading identifier prefix tokens that an Adobe document id can start
8
+ # with. Tech notes appear as both `Adobe Technical Note #<n>` and the
9
+ # short alias `ATN<n>` in citations; both must route to this flavor.
10
+ # Named publications start with `Adobe` (e.g. `Adobe Glyph List`,
11
+ # `Adobe-Japan1-7`).
12
+ PREFIXES = ["Adobe", "ATN"].freeze
13
+
14
+ autoload :Builder, "#{__dir__}/adobe/builder"
15
+ autoload :Identifier, "#{__dir__}/adobe/identifier"
16
+ autoload :Identifiers, "#{__dir__}/adobe/identifiers"
17
+ autoload :Parser, "#{__dir__}/adobe/parser"
18
+ autoload :Renderer, "#{__dir__}/adobe/renderer"
19
+ autoload :UrnGenerator, "#{__dir__}/adobe/urn_generator"
20
+ autoload :UrnParser, "#{__dir__}/adobe/urn_parser"
21
+
22
+ # Parse an Adobe identifier string into an identifier object.
23
+ # @param identifier [String]
24
+ # @return [Pubid::Adobe::Identifier]
25
+ def self.parse(identifier)
26
+ Identifier.parse(identifier)
27
+ end
28
+
29
+ # Per-flavor format registry: inherits global formats, overrides :human
30
+ # with the Adobe-specific renderer.
31
+ Identifier.format_registry = FormatRegistry.new(parent: ::Pubid::Identifier.format_registry)
32
+ Identifier.format_registry.register(:human, renderer: Adobe::Renderer)
33
+
34
+ # Auto-discover identifier types from the Identifiers namespace.
35
+ # @return [Array<Class>]
36
+ def self.identifier_types
37
+ @identifier_types ||= Identifiers.constants
38
+ .filter_map { |c| begin; Identifiers.const_get(c); rescue NameError; nil; end }
39
+ .select { |c| c.is_a?(Class) && c < Pubid::Identifier }
40
+ .reject { |c| c == Identifier }
41
+ end
42
+
43
+ # Lookup: type key → identifier class
44
+ # @param code [String, Symbol]
45
+ # @return [Class, nil]
46
+ def self.locate_type(code)
47
+ identifier_types.find { |t| t.type[:key].to_s == code.to_s }
48
+ end
49
+
50
+ # Lookup: type short letter (e.g. "ATN") → identifier class
51
+ # @param short [String]
52
+ # @return [Class<Identifier>]
53
+ def self.identifier_klass_for_short(short)
54
+ @by_short ||= identifier_types.to_h { |klass| [klass.type[:short].to_s, klass] }
55
+ @by_short.fetch(short.to_s)
56
+ end
57
+ end
58
+ end
59
+
60
+ Pubid::Registry.register(:adobe, Pubid::Adobe)
@@ -7,7 +7,7 @@ module Pubid
7
7
  class Builder
8
8
  attr_reader :identifier_class
9
9
 
10
- def initialize(identifier_class = Identifiers::Base)
10
+ def initialize(identifier_class = Identifier)
11
11
  @identifier_class = identifier_class
12
12
  end
13
13
 
@@ -46,7 +46,7 @@ module Pubid
46
46
 
47
47
  # Class method to build an identifier from parsed data
48
48
  # @param parsed [Hash, Array] the parsed identifier data
49
- # @return [Identifiers::Base] the constructed identifier object
49
+ # @return [Identifier] the constructed identifier object
50
50
  def self.build(parsed)
51
51
  new.build(parsed)
52
52
  end
@@ -1,6 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Pubid::Amca::Identifier is the AMCA base class (a real Pubid::Identifier
4
- # subclass); its body, `.parse`, and the Identifiers::Base back-compat alias
5
- # live in identifiers/base.rb. This file just ensures it is loaded.
6
- require_relative "identifiers/base"
4
+ # subclass); its body and `.parse` live in identifiers/base.rb. This file just ensures it is loaded.
@@ -3,7 +3,7 @@
3
3
  module Pubid
4
4
  module Amca
5
5
  # Base identifier class for AMCA identifiers. Canonical name
6
- # Pubid::Amca::Identifier (Identifiers::Base is a back-compat alias); common
6
+ # Pubid::Amca::Identifier; common
7
7
  # functionality for all AMCA identifier types.
8
8
  class Identifier < ::Pubid::Identifier
9
9
  # @raise [Parslet::ParseFailed] If parsing fails
@@ -66,10 +66,5 @@ module Pubid
66
66
  end
67
67
  end
68
68
 
69
- module Identifiers
70
- # Backward-compatible alias: AMCA's base class used to be
71
- # Pubid::Amca::Identifiers::Base. It is now Pubid::Amca::Identifier.
72
- Base = Pubid::Amca::Identifier
73
- end
74
69
  end
75
70
  end
@@ -8,7 +8,7 @@ module Pubid
8
8
  # - AMCA 99 JW Interp
9
9
  # - AMCA 204 – 1
10
10
  # - ANSI/AMCA 204 Interp
11
- class Interpretation < Base
11
+ class Interpretation < Identifier
12
12
  attr_reader :interpretation_code
13
13
 
14
14
  def initialize(code:, year: nil, copublisher: nil, suffix: nil,
@@ -8,7 +8,7 @@ module Pubid
8
8
  # - AMCA Publication 211-22 (Rev. 01-23)
9
9
  # - AMCA Publication 311-16
10
10
  # - AMCA Publication 1011-03 (R2010)
11
- class Publication < Base
11
+ class Publication < Identifier
12
12
  attr_reader :revision
13
13
 
14
14
  def initialize(code:, year:, copublisher: nil, suffix: nil,
@@ -8,7 +8,7 @@ module Pubid
8
8
  # - ANSI/AMCA 210-16
9
9
  # - ANSI/AMCA Standard 99-25
10
10
  # - AMCA Standard 803-02 (R2008)
11
- class Standard < Base
11
+ class Standard < Identifier
12
12
  def self.type
13
13
  { key: :standard, title: "Standard", short: nil }
14
14
  end
@@ -3,7 +3,6 @@
3
3
  module Pubid
4
4
  module Amca
5
5
  module Identifiers
6
- autoload :Base, "#{__dir__}/identifiers/base"
7
6
  autoload :Interpretation, "#{__dir__}/identifiers/interpretation"
8
7
  autoload :Publication, "#{__dir__}/identifiers/publication"
9
8
  autoload :Standard, "#{__dir__}/identifiers/standard"
@@ -4,7 +4,7 @@ module Pubid
4
4
  module Amca
5
5
  # Base class for single (non-supplement) ACMA identifiers
6
6
  # Includes: Standard, Publication
7
- class SingleIdentifier < Identifiers::Base
7
+ class SingleIdentifier < Identifier
8
8
  end
9
9
  end
10
10
  end
data/lib/pubid/amca.rb CHANGED
@@ -8,7 +8,7 @@ module Pubid
8
8
  # Pubid::JOINT_PREFIXES.
9
9
  PREFIXES = ["AMCA"].freeze
10
10
 
11
- autoload :Identifier, "#{__dir__}/amca/identifier"
11
+ autoload :Identifier, "#{__dir__}/amca/identifiers/base"
12
12
  autoload :Identifiers, "#{__dir__}/amca/identifiers"
13
13
  autoload :Builder, "#{__dir__}/amca/builder"
14
14
  autoload :Parser, "#{__dir__}/amca/parser"
@@ -26,8 +26,8 @@ module Pubid
26
26
  end
27
27
 
28
28
  # Per-flavor format registry: inherits global formats, overrides :human
29
- Identifiers::Base.format_registry = FormatRegistry.new(parent: ::Pubid::Identifier.format_registry)
30
- Identifiers::Base.format_registry.register(:human, renderer: Amca::Renderer)
29
+ Identifier.format_registry = FormatRegistry.new(parent: ::Pubid::Identifier.format_registry)
30
+ Identifier.format_registry.register(:human, renderer: Amca::Renderer)
31
31
 
32
32
  # Auto-discover all identifier types from the Identifiers namespace
33
33
  # @return [Array<Class>] identifier classes that define a self.type Hash
@@ -7,7 +7,7 @@ module Pubid
7
7
  class Builder
8
8
  attr_reader :identifier_class
9
9
 
10
- def initialize(identifier_class = Identifiers::Base)
10
+ def initialize(identifier_class = Identifier)
11
11
  @identifier_class = identifier_class
12
12
  end
13
13
 
@@ -53,7 +53,7 @@ module Pubid
53
53
 
54
54
  # Class method to build an identifier from parsed data
55
55
  # @param parsed [Hash, Array] the parsed identifier data
56
- # @return [Identifiers::Base] the constructed identifier object
56
+ # @return [Identifier] the constructed identifier object
57
57
  def self.build(parsed)
58
58
  new.build(parsed)
59
59
  end
@@ -158,12 +158,12 @@ module Pubid
158
158
  def build_errata(parsed)
159
159
  base_attrs = extract_base_attributes(parsed)
160
160
  base_class = determine_identifier_class(base_attrs)
161
- base_identifier = base_class.new(**base_attrs)
161
+ base = base_class.new(**base_attrs)
162
162
 
163
163
  errata_date = extract_errata_date(parsed[:errata_date])
164
164
 
165
165
  Identifiers::Errata.new(
166
- base_identifier: base_identifier,
166
+ base: base,
167
167
  errata_date: errata_date,
168
168
  )
169
169
  end
@@ -174,10 +174,10 @@ module Pubid
174
174
  def build_interpretation(parsed)
175
175
  base_attrs = extract_base_attributes(parsed)
176
176
  base_class = determine_identifier_class(base_attrs)
177
- base_identifier = base_class.new(**base_attrs)
177
+ base = base_class.new(**base_attrs)
178
178
 
179
179
  Identifiers::Interpretation.new(
180
- base_identifier: base_identifier,
180
+ base: base,
181
181
  )
182
182
  end
183
183
 
@@ -187,13 +187,13 @@ module Pubid
187
187
  def build_addendum_from_identifier(parsed)
188
188
  base_attrs = extract_base_attributes(parsed)
189
189
  base_class = determine_identifier_class(base_attrs)
190
- base_identifier = base_class.new(**base_attrs)
190
+ base = base_class.new(**base_attrs)
191
191
 
192
192
  addendum_code = extract_value(parsed[:addendum_code])
193
193
  addendum_date = extract_addendum_date(parsed[:addendum_year])
194
194
 
195
195
  Identifiers::Addendum.new(
196
- base_identifier: base_identifier,
196
+ base: base,
197
197
  addendum_code: addendum_code,
198
198
  addendum_date: addendum_date,
199
199
  )
@@ -209,13 +209,13 @@ module Pubid
209
209
  year: extract_value(parsed[:year]),
210
210
  }
211
211
  base_class = determine_identifier_class(base_attrs)
212
- base_identifier = base_class.new(**base_attrs)
212
+ base = base_class.new(**base_attrs)
213
213
 
214
214
  addendum_code = extract_value(parsed[:addendum_code])
215
215
  addendum_date = extract_addendum_date(parsed[:addendum_year])
216
216
 
217
217
  Identifiers::Addendum.new(
218
- base_identifier: base_identifier,
218
+ base: base,
219
219
  addendum_code: addendum_code,
220
220
  addendum_date: addendum_date,
221
221
  )
@@ -232,13 +232,13 @@ module Pubid
232
232
  year: extract_value(parsed[:year]),
233
233
  }
234
234
  base_class = determine_identifier_class(base_attrs)
235
- base_identifier = base_class.new(**base_attrs)
235
+ base = base_class.new(**base_attrs)
236
236
 
237
237
  addendum_code = extract_value(parsed[:addendum_code])
238
238
  addendum_date = extract_addendum_date(parsed[:addendum_year])
239
239
 
240
240
  Identifiers::Addendum.new(
241
- base_identifier: base_identifier,
241
+ base: base,
242
242
  addendum_code: addendum_code,
243
243
  addendum_date: addendum_date,
244
244
  )
@@ -270,13 +270,13 @@ module Pubid
270
270
  end
271
271
 
272
272
  base_class = determine_identifier_class(base_attrs)
273
- base_identifier = base_class.new(**base_attrs)
273
+ base = base_class.new(**base_attrs)
274
274
 
275
275
  addendum_code = extract_value(parsed[:addendum_code])
276
276
  addendum_date = extract_addendum_date(parsed[:addendum_year])
277
277
 
278
278
  Identifiers::Addendum.new(
279
- base_identifier: base_identifier,
279
+ base: base,
280
280
  addendum_code: addendum_code,
281
281
  addendum_date: addendum_date,
282
282
  )
@@ -308,13 +308,13 @@ module Pubid
308
308
  end
309
309
 
310
310
  base_class = determine_identifier_class(base_attrs)
311
- base_identifier = base_class.new(**base_attrs)
311
+ base = base_class.new(**base_attrs)
312
312
 
313
313
  addendum_code = extract_value(parsed[:addendum_code])
314
314
  addendum_date = extract_addendum_date(parsed[:addendum_year])
315
315
 
316
316
  Identifiers::Addendum.new(
317
- base_identifier: base_identifier,
317
+ base: base,
318
318
  addendum_code: addendum_code,
319
319
  addendum_date: addendum_date,
320
320
  )
@@ -326,13 +326,13 @@ module Pubid
326
326
  def build_standard_addendum(parsed)
327
327
  base_attrs = extract_base_attributes(parsed)
328
328
  base_class = determine_identifier_class(base_attrs)
329
- base_identifier = base_class.new(**base_attrs)
329
+ base = base_class.new(**base_attrs)
330
330
 
331
331
  addendum_code = extract_value(parsed[:addendum_code])
332
332
  addendum_date = extract_addendum_date(parsed[:addendum_year])
333
333
 
334
334
  Identifiers::Addendum.new(
335
- base_identifier: base_identifier,
335
+ base: base,
336
336
  addendum_code: addendum_code,
337
337
  addendum_date: addendum_date,
338
338
  )
@@ -372,7 +372,7 @@ module Pubid
372
372
  end
373
373
 
374
374
  base_class = determine_identifier_class(base_attrs)
375
- base_identifier = base_class.new(**base_attrs)
375
+ base = base_class.new(**base_attrs)
376
376
 
377
377
  # Build the addendum_codes string from first code and additional codes
378
378
  first_code = extract_value(parsed[:addendum_code])
@@ -406,7 +406,7 @@ module Pubid
406
406
  end
407
407
 
408
408
  Identifiers::CombinedAddenda.new(
409
- base_identifier: base_identifier,
409
+ base: base,
410
410
  addendum_codes: addendum_codes_str,
411
411
  )
412
412
  end
@@ -417,12 +417,12 @@ module Pubid
417
417
  def build_addenda_package(parsed)
418
418
  base_attrs = extract_base_attributes(parsed)
419
419
  base_class = determine_identifier_class(base_attrs)
420
- base_identifier = base_class.new(**base_attrs)
420
+ base = base_class.new(**base_attrs)
421
421
 
422
422
  package_description = extract_value(parsed[:package_description])
423
423
 
424
424
  Identifiers::AddendaPackage.new(
425
- base_identifier: base_identifier,
425
+ base: base,
426
426
  package_description: package_description,
427
427
  )
428
428
  end
@@ -3,7 +3,6 @@
3
3
  # The ASHRAE flavor base class is Pubid::Ashrae::Identifier — a real
4
4
  # Pubid::Identifier subclass that every concrete ASHRAE identifier descends
5
5
  # from, so `is_a?` identity and the shared polymorphic `from_hash` work natively
6
- # (no facade needed). Its body, `.parse`, and the Identifiers::Base back-compat
7
- # alias live in identifiers/base.rb; this file just ensures it is loaded when a
8
- # consumer references Pubid::Ashrae::Identifier directly.
9
- require_relative "identifiers/base"
6
+ # (no facade needed). Its body and `.parse` live in identifiers/base.rb; this
7
+ # file just ensures it is loaded when a consumer references
8
+ # Pubid::Ashrae::Identifier directly.
@@ -28,7 +28,7 @@ module Pubid
28
28
  end
29
29
 
30
30
  def copublisher
31
- base_identifier&.copublisher
31
+ base&.copublisher
32
32
  end
33
33
  end
34
34
  end
@@ -28,7 +28,7 @@ module Pubid
28
28
  end
29
29
 
30
30
  def copublisher
31
- base_identifier&.copublisher
31
+ base&.copublisher
32
32
  end
33
33
  end
34
34
  end