pubid 2.0.0.pre.alpha.2 → 2.0.0.pre.alpha.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (458) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +5 -1
  3. data/data/nist/update_codes.yaml +25 -0
  4. data/lib/pubid/amca/builder.rb +2 -2
  5. data/lib/pubid/amca/identifier.rb +7 -39
  6. data/lib/pubid/amca/identifiers/base.rb +0 -26
  7. data/lib/pubid/amca/identifiers/interpretation.rb +0 -17
  8. data/lib/pubid/amca/identifiers/publication.rb +0 -13
  9. data/lib/pubid/amca/renderer.rb +82 -0
  10. data/lib/pubid/amca/single_identifier.rb +0 -23
  11. data/lib/pubid/amca/urn_parser.rb +28 -0
  12. data/lib/pubid/amca.rb +42 -1
  13. data/lib/pubid/ansi/builder.rb +5 -3
  14. data/lib/pubid/ansi/identifier.rb +1 -43
  15. data/lib/pubid/ansi/identifiers/american_national_standard.rb +2 -1
  16. data/lib/pubid/ansi/identifiers/standard.rb +2 -3
  17. data/lib/pubid/ansi/renderer.rb +53 -0
  18. data/lib/pubid/ansi/single_identifier.rb +2 -31
  19. data/lib/pubid/ansi/urn_generator.rb +3 -38
  20. data/lib/pubid/ansi/urn_parser.rb +23 -0
  21. data/lib/pubid/ansi.rb +38 -3
  22. data/lib/pubid/api/builder.rb +29 -74
  23. data/lib/pubid/api/identifier.rb +0 -51
  24. data/lib/pubid/api/identifiers/base.rb +0 -2
  25. data/lib/pubid/api/identifiers/bulletin.rb +0 -2
  26. data/lib/pubid/api/identifiers/continuous_operations_standard.rb +0 -2
  27. data/lib/pubid/api/identifiers/mpms.rb +1 -17
  28. data/lib/pubid/api/identifiers/publication.rb +0 -2
  29. data/lib/pubid/api/identifiers/recommended_practice.rb +0 -2
  30. data/lib/pubid/api/identifiers/specification.rb +0 -2
  31. data/lib/pubid/api/identifiers/standard.rb +0 -2
  32. data/lib/pubid/api/identifiers/technical_report.rb +0 -2
  33. data/lib/pubid/api/identifiers/typeless_standard.rb +1 -14
  34. data/lib/pubid/api/identifiers.rb +18 -0
  35. data/lib/pubid/api/renderer.rb +89 -0
  36. data/lib/pubid/api/single_identifier.rb +1 -13
  37. data/lib/pubid/api/urn_generator.rb +0 -18
  38. data/lib/pubid/api/urn_parser.rb +35 -0
  39. data/lib/pubid/api.rb +51 -5
  40. data/lib/pubid/ashrae/builder.rb +3 -3
  41. data/lib/pubid/ashrae/identifier.rb +6 -39
  42. data/lib/pubid/ashrae/identifiers/addenda_package.rb +0 -10
  43. data/lib/pubid/ashrae/identifiers/addendum.rb +0 -19
  44. data/lib/pubid/ashrae/identifiers/base.rb +3 -0
  45. data/lib/pubid/ashrae/identifiers/combined_addenda.rb +0 -15
  46. data/lib/pubid/ashrae/identifiers/errata.rb +0 -10
  47. data/lib/pubid/ashrae/identifiers/interpretation.rb +0 -10
  48. data/lib/pubid/ashrae/renderer.rb +117 -0
  49. data/lib/pubid/ashrae/single_identifier.rb +0 -13
  50. data/lib/pubid/ashrae/urn_generator.rb +0 -8
  51. data/lib/pubid/ashrae/urn_parser.rb +27 -0
  52. data/lib/pubid/ashrae.rb +42 -1
  53. data/lib/pubid/asme/components/code.rb +10 -2
  54. data/lib/pubid/asme/identifier.rb +0 -46
  55. data/lib/pubid/asme/identifiers/base.rb +0 -60
  56. data/lib/pubid/asme/renderer.rb +66 -0
  57. data/lib/pubid/asme/urn_parser.rb +31 -0
  58. data/lib/pubid/asme.rb +42 -1
  59. data/lib/pubid/astm/components/code.rb +9 -0
  60. data/lib/pubid/{jis → astm}/components.rb +1 -1
  61. data/lib/pubid/astm/identifier.rb +0 -77
  62. data/lib/pubid/astm/identifiers/adjunct.rb +0 -8
  63. data/lib/pubid/astm/identifiers/data_series.rb +0 -14
  64. data/lib/pubid/astm/identifiers/iso_dual_published.rb +9 -34
  65. data/lib/pubid/astm/identifiers/manual.rb +0 -27
  66. data/lib/pubid/astm/identifiers/monograph.rb +0 -14
  67. data/lib/pubid/astm/identifiers/research_report.rb +0 -7
  68. data/lib/pubid/astm/identifiers/standard.rb +0 -39
  69. data/lib/pubid/astm/identifiers/technical_report.rb +0 -13
  70. data/lib/pubid/astm/identifiers/work_in_progress.rb +0 -11
  71. data/lib/pubid/astm/identifiers.rb +18 -0
  72. data/lib/pubid/astm/renderer.rb +172 -0
  73. data/lib/pubid/astm/single_identifier.rb +0 -10
  74. data/lib/pubid/astm/urn_parser.rb +30 -0
  75. data/lib/pubid/astm.rb +39 -27
  76. data/lib/pubid/bsi/builder.rb +21 -12
  77. data/lib/pubid/bsi/identifier.rb +8 -62
  78. data/lib/pubid/bsi/identifiers/addendum_document.rb +3 -33
  79. data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +11 -47
  80. data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +11 -38
  81. data/lib/pubid/bsi/identifiers/aerospace_standard.rb +3 -53
  82. data/lib/pubid/bsi/identifiers/amendment.rb +3 -19
  83. data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +2 -4
  84. data/lib/pubid/bsi/identifiers/british_standard.rb +2 -1
  85. data/lib/pubid/bsi/identifiers/bundled_identifier.rb +3 -84
  86. data/lib/pubid/bsi/identifiers/committee_document.rb +1 -14
  87. data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +3 -84
  88. data/lib/pubid/bsi/identifiers/corrigendum.rb +3 -7
  89. data/lib/pubid/bsi/identifiers/detailed_specification.rb +1 -34
  90. data/lib/pubid/bsi/identifiers/disc.rb +1 -27
  91. data/lib/pubid/bsi/identifiers/draft_document.rb +3 -44
  92. data/lib/pubid/bsi/identifiers/electronic_book.rb +3 -36
  93. data/lib/pubid/bsi/identifiers/expert_commentary.rb +3 -15
  94. data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +1 -45
  95. data/lib/pubid/bsi/identifiers/flex.rb +1 -33
  96. data/lib/pubid/bsi/identifiers/handbook.rb +2 -13
  97. data/lib/pubid/bsi/identifiers/index.rb +1 -30
  98. data/lib/pubid/bsi/identifiers/method.rb +1 -39
  99. data/lib/pubid/bsi/identifiers/national_annex.rb +5 -27
  100. data/lib/pubid/bsi/identifiers/practice_guide.rb +2 -4
  101. data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +3 -52
  102. data/lib/pubid/bsi/identifiers/published_document.rb +3 -52
  103. data/lib/pubid/bsi/identifiers/section.rb +1 -28
  104. data/lib/pubid/bsi/identifiers/set.rb +3 -17
  105. data/lib/pubid/bsi/identifiers/standalone_amendment.rb +1 -7
  106. data/lib/pubid/bsi/identifiers/supplement_document.rb +3 -21
  107. data/lib/pubid/bsi/identifiers/supplementary_index.rb +1 -44
  108. data/lib/pubid/bsi/identifiers/technical_specification.rb +3 -45
  109. data/lib/pubid/bsi/identifiers/test_method.rb +1 -30
  110. data/lib/pubid/bsi/identifiers/value_added_publication.rb +3 -14
  111. data/lib/pubid/bsi/identifiers.rb +0 -1
  112. data/lib/pubid/bsi/renderer.rb +1050 -0
  113. data/lib/pubid/bsi/single_identifier.rb +6 -70
  114. data/lib/pubid/bsi/urn_generator.rb +2 -3
  115. data/lib/pubid/bsi/urn_parser.rb +52 -0
  116. data/lib/pubid/bsi.rb +224 -1
  117. data/lib/pubid/builder/base.rb +57 -10
  118. data/lib/pubid/bundled_identifier.rb +0 -1
  119. data/lib/pubid/ccsds/builder.rb +4 -3
  120. data/lib/pubid/ccsds/identifier.rb +63 -66
  121. data/lib/pubid/ccsds/identifiers/base.rb +11 -61
  122. data/lib/pubid/ccsds/identifiers/corrigendum.rb +7 -6
  123. data/lib/pubid/ccsds/parser.rb +4 -2
  124. data/lib/pubid/ccsds/supplement_identifier.rb +15 -11
  125. data/lib/pubid/ccsds/urn_generator.rb +3 -3
  126. data/lib/pubid/ccsds/urn_parser.rb +20 -0
  127. data/lib/pubid/ccsds.rb +39 -1
  128. data/lib/pubid/cen_cenelec/builder.rb +12 -14
  129. data/lib/pubid/cen_cenelec/identifier.rb +7 -38
  130. data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +13 -4
  131. data/lib/pubid/cen_cenelec/identifiers/amendment.rb +2 -8
  132. data/lib/pubid/cen_cenelec/identifiers/base.rb +5 -41
  133. data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +2 -1
  134. data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +2 -1
  135. data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +2 -25
  136. data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +2 -13
  137. data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +2 -1
  138. data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +4 -7
  139. data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +2 -1
  140. data/lib/pubid/cen_cenelec/identifiers/fragment.rb +2 -2
  141. data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +2 -1
  142. data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +2 -1
  143. data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +2 -1
  144. data/lib/pubid/cen_cenelec/renderer.rb +261 -0
  145. data/lib/pubid/cen_cenelec/single_identifier.rb +11 -89
  146. data/lib/pubid/cen_cenelec/urn_generator.rb +6 -6
  147. data/lib/pubid/cen_cenelec/urn_parser.rb +28 -0
  148. data/lib/pubid/cen_cenelec.rb +168 -1
  149. data/lib/pubid/cie/components/code.rb +8 -0
  150. data/lib/pubid/cie/identifier.rb +6 -57
  151. data/lib/pubid/cie/urn_parser.rb +28 -0
  152. data/lib/pubid/cie.rb +43 -1
  153. data/lib/pubid/components/adoption.rb +104 -0
  154. data/lib/pubid/components/code.rb +22 -8
  155. data/lib/pubid/components/date.rb +23 -16
  156. data/lib/pubid/components/edition.rb +9 -6
  157. data/lib/pubid/components/iteration.rb +32 -0
  158. data/lib/pubid/components/language.rb +6 -4
  159. data/lib/pubid/components/locality.rb +10 -1
  160. data/lib/pubid/components/publisher.rb +9 -6
  161. data/lib/pubid/components/relationship.rb +151 -0
  162. data/lib/pubid/components/stage.rb +5 -14
  163. data/lib/pubid/components/supplement.rb +184 -0
  164. data/lib/pubid/components/type.rb +5 -15
  165. data/lib/pubid/components/typed_stage.rb +10 -11
  166. data/lib/pubid/components.rb +4 -1
  167. data/lib/pubid/core/update_codes.rb +28 -7
  168. data/lib/pubid/csa/identifier.rb +0 -59
  169. data/lib/pubid/csa/identifiers/base.rb +2 -122
  170. data/lib/pubid/csa/identifiers/cec.rb +2 -101
  171. data/lib/pubid/csa/identifiers/series.rb +2 -102
  172. data/lib/pubid/csa/renderer.rb +292 -0
  173. data/lib/pubid/csa/urn_generator.rb +1 -1
  174. data/lib/pubid/csa/urn_parser.rb +33 -0
  175. data/lib/pubid/csa.rb +42 -1
  176. data/lib/pubid/etsi/components/code.rb +9 -2
  177. data/lib/pubid/etsi/identifier.rb +0 -43
  178. data/lib/pubid/etsi/identifiers/base.rb +1 -4
  179. data/lib/pubid/etsi/identifiers/supplement_identifier.rb +2 -9
  180. data/lib/pubid/etsi/renderer.rb +42 -0
  181. data/lib/pubid/etsi/urn_parser.rb +34 -0
  182. data/lib/pubid/etsi.rb +42 -1
  183. data/lib/pubid/export/exporter.rb +4 -46
  184. data/lib/pubid/export/flavor_exporter.rb +111 -278
  185. data/lib/pubid/export.rb +0 -6
  186. data/lib/pubid/identifier.rb +2 -17
  187. data/lib/pubid/identifier_facade.rb +114 -0
  188. data/lib/pubid/identifier_metadata.rb +1 -1
  189. data/lib/pubid/idf/builder.rb +3 -3
  190. data/lib/pubid/idf/identifier.rb +3 -66
  191. data/lib/pubid/idf/identifiers/amendment.rb +2 -1
  192. data/lib/pubid/idf/identifiers/corrigendum.rb +2 -1
  193. data/lib/pubid/idf/identifiers/international_standard.rb +2 -1
  194. data/lib/pubid/idf/identifiers/reviewed_method.rb +2 -1
  195. data/lib/pubid/idf/parser.rb +3 -2
  196. data/lib/pubid/idf/renderer.rb +84 -0
  197. data/lib/pubid/idf/supplement_identifier.rb +2 -10
  198. data/lib/pubid/idf/urn_generator.rb +4 -39
  199. data/lib/pubid/idf/urn_parser.rb +25 -0
  200. data/lib/pubid/idf.rb +51 -1
  201. data/lib/pubid/iec/builder.rb +46 -64
  202. data/lib/pubid/iec/components/code.rb +8 -32
  203. data/lib/pubid/iec/components/publisher.rb +0 -1
  204. data/lib/pubid/iec/components.rb +14 -0
  205. data/lib/pubid/iec/identifier.rb +251 -213
  206. data/lib/pubid/iec/identifiers/amendment.rb +2 -3
  207. data/lib/pubid/iec/identifiers/base.rb +8 -32
  208. data/lib/pubid/iec/identifiers/component_specification.rb +3 -3
  209. data/lib/pubid/iec/identifiers/conformity_assessment.rb +1 -2
  210. data/lib/pubid/iec/identifiers/consolidated_identifier.rb +27 -26
  211. data/lib/pubid/iec/identifiers/corrigendum.rb +2 -3
  212. data/lib/pubid/iec/identifiers/fragment_identifier.rb +37 -22
  213. data/lib/pubid/iec/identifiers/guide.rb +0 -2
  214. data/lib/pubid/iec/identifiers/international_standard.rb +2 -3
  215. data/lib/pubid/iec/identifiers/interpretation_sheet.rb +2 -3
  216. data/lib/pubid/iec/identifiers/operational_document.rb +3 -3
  217. data/lib/pubid/iec/identifiers/publicly_available_specification.rb +2 -3
  218. data/lib/pubid/iec/identifiers/sheet_identifier.rb +21 -11
  219. data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +3 -3
  220. data/lib/pubid/iec/identifiers/systems_reference_document.rb +2 -3
  221. data/lib/pubid/iec/identifiers/technical_report.rb +2 -3
  222. data/lib/pubid/iec/identifiers/technical_specification.rb +2 -3
  223. data/lib/pubid/iec/identifiers/technology_report.rb +1 -2
  224. data/lib/pubid/iec/identifiers/test_report_form.rb +5 -34
  225. data/lib/pubid/iec/identifiers/vap_identifier.rb +26 -19
  226. data/lib/pubid/iec/identifiers/white_paper.rb +3 -3
  227. data/lib/pubid/iec/identifiers/working_document.rb +4 -48
  228. data/lib/pubid/iec/identifiers.rb +30 -0
  229. data/lib/pubid/iec/parser.rb +13 -12
  230. data/lib/pubid/iec/renderer.rb +254 -0
  231. data/lib/pubid/iec/single_identifier.rb +6 -12
  232. data/lib/pubid/iec/supplement_identifier.rb +58 -54
  233. data/lib/pubid/iec/urn_generator.rb +3 -3
  234. data/lib/pubid/iec/urn_parser.rb +3 -3
  235. data/lib/pubid/iec.rb +40 -68
  236. data/lib/pubid/ieee/builder.rb +12 -12
  237. data/lib/pubid/ieee/components/code.rb +8 -0
  238. data/lib/pubid/ieee/components/draft.rb +14 -0
  239. data/lib/pubid/ieee/components/relationship.rb +5 -149
  240. data/lib/pubid/ieee/identifier.rb +6 -41
  241. data/lib/pubid/ieee/identifiers/adopted_standard.rb +1 -6
  242. data/lib/pubid/ieee/identifiers/base.rb +101 -458
  243. data/lib/pubid/ieee/identifiers/conformance_identifier.rb +1 -7
  244. data/lib/pubid/ieee/identifiers/corrigendum.rb +1 -9
  245. data/lib/pubid/ieee/identifiers/csa_dual_published.rb +1 -7
  246. data/lib/pubid/ieee/identifiers/dual_identifier.rb +1 -1
  247. data/lib/pubid/ieee/identifiers/dual_published.rb +1 -1
  248. data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +1 -6
  249. data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +1 -7
  250. data/lib/pubid/ieee/identifiers/joint_development.rb +2 -0
  251. data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +1 -15
  252. data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +1 -3
  253. data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +15 -0
  254. data/lib/pubid/ieee/identifiers/redlined_standard.rb +1 -4
  255. data/lib/pubid/ieee/identifiers/si_standard.rb +1 -35
  256. data/lib/pubid/ieee/identifiers/standard.rb +1 -1
  257. data/lib/pubid/ieee/pre_parser.rb +301 -0
  258. data/lib/pubid/ieee/renderer.rb +307 -0
  259. data/lib/pubid/ieee/urn_parser.rb +34 -0
  260. data/lib/pubid/ieee.rb +62 -1
  261. data/lib/pubid/ieee_debug.rb +0 -1
  262. data/lib/pubid/iho/builder.rb +2 -2
  263. data/lib/pubid/iho/identifier.rb +8 -42
  264. data/lib/pubid/iho/identifiers/base.rb +49 -10
  265. data/lib/pubid/iho/parser.rb +3 -3
  266. data/lib/pubid/iho/renderer.rb +30 -0
  267. data/lib/pubid/iho/urn_generator.rb +2 -2
  268. data/lib/pubid/iho/urn_parser.rb +58 -0
  269. data/lib/pubid/iho.rb +50 -1
  270. data/lib/pubid/iso/builder.rb +55 -53
  271. data/lib/pubid/iso/bundled_identifier.rb +51 -0
  272. data/lib/pubid/iso/components/code.rb +7 -19
  273. data/lib/pubid/iso/components/publisher.rb +10 -8
  274. data/lib/pubid/iso/components.rb +2 -4
  275. data/lib/pubid/iso/identifier.rb +218 -252
  276. data/lib/pubid/iso/identifiers/addendum.rb +9 -6
  277. data/lib/pubid/iso/identifiers/amendment.rb +8 -4
  278. data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
  279. data/lib/pubid/iso/identifiers/data.rb +0 -1
  280. data/lib/pubid/iso/identifiers/directives.rb +8 -2
  281. data/lib/pubid/iso/identifiers/directives_supplement.rb +43 -14
  282. data/lib/pubid/iso/identifiers/extract.rb +2 -2
  283. data/lib/pubid/iso/identifiers/guide.rb +0 -1
  284. data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
  285. data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
  286. data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +10 -4
  287. data/lib/pubid/iso/identifiers/pas.rb +2 -2
  288. data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
  289. data/lib/pubid/iso/identifiers/supplement.rb +11 -3
  290. data/lib/pubid/iso/identifiers/tc_document.rb +44 -15
  291. data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
  292. data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
  293. data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
  294. data/lib/pubid/iso/identifiers.rb +0 -1
  295. data/lib/pubid/iso/normalizer.rb +89 -0
  296. data/lib/pubid/iso/parser.rb +22 -4
  297. data/lib/pubid/iso/supplement_identifier.rb +15 -2
  298. data/lib/pubid/iso/urn_generator.rb +66 -182
  299. data/lib/pubid/iso/urn_parser.rb +12 -7
  300. data/lib/pubid/iso.rb +173 -2
  301. data/lib/pubid/itu/builder.rb +0 -12
  302. data/lib/pubid/itu/components/code.rb +8 -0
  303. data/lib/pubid/itu/components.rb +11 -0
  304. data/lib/pubid/itu/identifier.rb +6 -104
  305. data/lib/pubid/itu/identifiers/amendment.rb +0 -2
  306. data/lib/pubid/itu/identifiers/annex.rb +0 -2
  307. data/lib/pubid/itu/identifiers/base.rb +0 -6
  308. data/lib/pubid/itu/identifiers/combined_identifier.rb +0 -2
  309. data/lib/pubid/itu/identifiers/corrigendum.rb +0 -2
  310. data/lib/pubid/itu/identifiers/recommendation.rb +0 -2
  311. data/lib/pubid/itu/identifiers/special_publication.rb +0 -2
  312. data/lib/pubid/itu/identifiers/supplement.rb +0 -2
  313. data/lib/pubid/itu/urn_parser.rb +23 -0
  314. data/lib/pubid/itu.rb +42 -1
  315. data/lib/pubid/jcgm/builder.rb +16 -8
  316. data/lib/pubid/jcgm/identifier.rb +0 -43
  317. data/lib/pubid/jcgm/identifiers/amendment.rb +2 -7
  318. data/lib/pubid/jcgm/identifiers/gum_guide.rb +2 -10
  319. data/lib/pubid/jcgm/renderer.rb +68 -0
  320. data/lib/pubid/jcgm/single_identifier.rb +1 -5
  321. data/lib/pubid/jcgm/urn_generator.rb +4 -6
  322. data/lib/pubid/jcgm/urn_parser.rb +23 -0
  323. data/lib/pubid/jcgm.rb +43 -2
  324. data/lib/pubid/jis/builder.rb +44 -52
  325. data/lib/pubid/jis/identifier.rb +132 -46
  326. data/lib/pubid/jis/identifiers/amendment.rb +1 -1
  327. data/lib/pubid/jis/identifiers/corrigendum.rb +16 -0
  328. data/lib/pubid/jis/identifiers/standard.rb +2 -1
  329. data/lib/pubid/jis/identifiers/technical_report.rb +2 -1
  330. data/lib/pubid/jis/identifiers/technical_specification.rb +2 -1
  331. data/lib/pubid/jis/identifiers.rb +1 -1
  332. data/lib/pubid/jis/parser.rb +31 -5
  333. data/lib/pubid/jis/renderer.rb +69 -0
  334. data/lib/pubid/jis/single_identifier.rb +6 -12
  335. data/lib/pubid/jis/supplement_identifier.rb +17 -14
  336. data/lib/pubid/jis/urn_parser.rb +23 -0
  337. data/lib/pubid/jis.rb +42 -2
  338. data/lib/pubid/nist/builder.rb +63 -1871
  339. data/lib/pubid/nist/caster.rb +1272 -0
  340. data/lib/pubid/nist/circular_supplement_builder.rb +291 -0
  341. data/lib/pubid/nist/components/code.rb +9 -20
  342. data/lib/pubid/nist/components/supplement.rb +2 -2
  343. data/lib/pubid/nist/components.rb +0 -1
  344. data/lib/pubid/nist/identifier.rb +11 -48
  345. data/lib/pubid/nist/identifiers/base.rb +110 -47
  346. data/lib/pubid/nist/identifiers/circular.rb +7 -2
  347. data/lib/pubid/nist/identifiers/circular_supplement.rb +2 -1
  348. data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -1
  349. data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +6 -4
  350. data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +10 -3
  351. data/lib/pubid/nist/identifiers/crpl_report.rb +8 -8
  352. data/lib/pubid/nist/identifiers/dated_document.rb +49 -0
  353. data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +15 -24
  354. data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -1
  355. data/lib/pubid/nist/identifiers/handbook.rb +2 -1
  356. data/lib/pubid/nist/identifiers/internal_report.rb +2 -1
  357. data/lib/pubid/nist/identifiers/letter_circular.rb +2 -1
  358. data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +5 -4
  359. data/lib/pubid/nist/identifiers/monograph.rb +7 -3
  360. data/lib/pubid/nist/identifiers/report.rb +4 -2
  361. data/lib/pubid/nist/identifiers/special_publication.rb +2 -1
  362. data/lib/pubid/nist/identifiers/technical_note.rb +3 -2
  363. data/lib/pubid/nist/identifiers.rb +1 -0
  364. data/lib/pubid/nist/parser.rb +62 -452
  365. data/lib/pubid/nist/parser_output_normalizer.rb +233 -0
  366. data/lib/pubid/nist/preprocessor.rb +416 -0
  367. data/lib/pubid/nist/renderer.rb +43 -0
  368. data/lib/pubid/nist/router.rb +148 -0
  369. data/lib/pubid/nist/series/base.rb +58 -0
  370. data/lib/pubid/nist/series/crpl.rb +13 -0
  371. data/lib/pubid/nist/series/fips.rb +14 -0
  372. data/lib/pubid/nist/series/ir.rb +60 -0
  373. data/lib/pubid/nist/series/letter_preserving.rb +15 -0
  374. data/lib/pubid/nist/series/mono.rb +19 -0
  375. data/lib/pubid/nist/series/ncstar.rb +20 -0
  376. data/lib/pubid/nist/series.rb +49 -0
  377. data/lib/pubid/nist/supplement_identifier.rb +3 -1
  378. data/lib/pubid/nist/urn_parser.rb +67 -0
  379. data/lib/pubid/nist.rb +82 -4
  380. data/lib/pubid/oiml/components/code.rb +10 -0
  381. data/lib/pubid/oiml/identifier.rb +0 -50
  382. data/lib/pubid/oiml/identifiers/annex.rb +3 -45
  383. data/lib/pubid/oiml/identifiers/base.rb +2 -17
  384. data/lib/pubid/oiml/renderer.rb +161 -0
  385. data/lib/pubid/oiml/single_identifier.rb +6 -45
  386. data/lib/pubid/oiml/supplement_identifier.rb +4 -19
  387. data/lib/pubid/oiml/urn_generator.rb +0 -8
  388. data/lib/pubid/oiml/urn_parser.rb +22 -0
  389. data/lib/pubid/oiml.rb +42 -1
  390. data/lib/pubid/plateau/identifier.rb +7 -41
  391. data/lib/pubid/plateau/identifiers/handbook.rb +1 -3
  392. data/lib/pubid/plateau/identifiers/technical_report.rb +1 -1
  393. data/lib/pubid/plateau/renderer.rb +51 -0
  394. data/lib/pubid/plateau/supplement_identifier.rb +1 -1
  395. data/lib/pubid/plateau/urn_parser.rb +43 -0
  396. data/lib/pubid/plateau.rb +43 -1
  397. data/lib/pubid/renderers/directives_renderer.rb +22 -8
  398. data/lib/pubid/renderers/guide_renderer.rb +4 -2
  399. data/lib/pubid/renderers/human_readable.rb +18 -7
  400. data/lib/pubid/rendering/context.rb +28 -19
  401. data/lib/pubid/rendering.rb +0 -3
  402. data/lib/pubid/sae/components/date.rb +8 -0
  403. data/lib/pubid/sae/components/type.rb +5 -1
  404. data/lib/pubid/sae/identifier.rb +0 -23
  405. data/lib/pubid/sae/identifiers/base.rb +2 -16
  406. data/lib/pubid/sae/renderer.rb +36 -0
  407. data/lib/pubid/sae/urn_generator.rb +2 -10
  408. data/lib/pubid/sae/urn_parser.rb +36 -0
  409. data/lib/pubid/sae.rb +42 -1
  410. data/lib/pubid/urn_generator/base.rb +12 -12
  411. data/lib/pubid/urn_parser/base.rb +81 -0
  412. data/lib/pubid/urn_parser/errors.rb +9 -0
  413. data/lib/pubid/urn_parser.rb +14 -0
  414. data/lib/pubid/version.rb +1 -1
  415. data/lib/pubid.rb +29 -7
  416. data/lib/tasks/website-data.json +1940 -1882
  417. metadata +75 -44
  418. data/lib/pubid/amca/scheme.rb +0 -16
  419. data/lib/pubid/ansi/scheme.rb +0 -15
  420. data/lib/pubid/api/scheme.rb +0 -66
  421. data/lib/pubid/ashrae/scheme.rb +0 -53
  422. data/lib/pubid/asme/scheme.rb +0 -37
  423. data/lib/pubid/astm/scheme.rb +0 -55
  424. data/lib/pubid/bsi/identifiers/base.rb +0 -11
  425. data/lib/pubid/bsi/scheme.rb +0 -243
  426. data/lib/pubid/ccsds/scheme.rb +0 -57
  427. data/lib/pubid/cen_cenelec/scheme.rb +0 -164
  428. data/lib/pubid/cie/scheme.rb +0 -64
  429. data/lib/pubid/components/factory.rb +0 -50
  430. data/lib/pubid/csa/scheme.rb +0 -44
  431. data/lib/pubid/etsi/scheme.rb +0 -42
  432. data/lib/pubid/export/data_class_exporter.rb +0 -59
  433. data/lib/pubid/export/ieee_exporter.rb +0 -78
  434. data/lib/pubid/export/itu_exporter.rb +0 -66
  435. data/lib/pubid/export/nist_exporter.rb +0 -64
  436. data/lib/pubid/export/registry_exporter.rb +0 -90
  437. data/lib/pubid/export/scheme_exporter.rb +0 -70
  438. data/lib/pubid/identifier_registry.rb +0 -198
  439. data/lib/pubid/idf/scheme.rb +0 -61
  440. data/lib/pubid/iec/scheme.rb +0 -71
  441. data/lib/pubid/ieee/scheme.rb +0 -90
  442. data/lib/pubid/iho/scheme.rb +0 -29
  443. data/lib/pubid/iso/identifiers/base.rb +0 -115
  444. data/lib/pubid/iso/scheme.rb +0 -193
  445. data/lib/pubid/itu/scheme.rb +0 -174
  446. data/lib/pubid/jcgm/scheme.rb +0 -60
  447. data/lib/pubid/jis/components/code.rb +0 -59
  448. data/lib/pubid/jis/identifiers/base.rb +0 -72
  449. data/lib/pubid/jis/scheme.rb +0 -49
  450. data/lib/pubid/nist/components/publisher.rb +0 -24
  451. data/lib/pubid/nist/scheme.rb +0 -199
  452. data/lib/pubid/oiml/scheme.rb +0 -46
  453. data/lib/pubid/plateau/scheme.rb +0 -45
  454. data/lib/pubid/rendering/base.rb +0 -73
  455. data/lib/pubid/rendering/common.rb +0 -211
  456. data/lib/pubid/rendering/format.rb +0 -25
  457. data/lib/pubid/sae/scheme.rb +0 -47
  458. data/lib/pubid/scheme.rb +0 -219
@@ -1,243 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pubid
4
- module Bsi
5
- class Scheme < Pubid::Scheme
6
- # TYPED_STAGES_REGISTRY for native BSI types
7
- TYPED_STAGES_REGISTRY = [
8
- # British Standard (BS)
9
- Pubid::Components::TypedStage.new(
10
- code: :pubbs,
11
- stage_code: :published,
12
- type_code: :bs,
13
- abbr: ["BS"],
14
- name: "British Standard",
15
- harmonized_stages: %w[60.00 60.60],
16
- ),
17
- Pubid::Components::TypedStage.new(
18
- code: :drbs,
19
- stage_code: :draft,
20
- type_code: :bs,
21
- abbr: ["Draft BS", "DBS"],
22
- name: "Draft British Standard",
23
- harmonized_stages: %w[30.00 30.20 30.60 40.00 40.20 40.60],
24
- ),
25
-
26
- # Published Document (PD)
27
- Pubid::Components::TypedStage.new(
28
- code: :pubpd,
29
- stage_code: :published,
30
- type_code: :pd,
31
- abbr: ["PD"],
32
- name: "Published Document",
33
- harmonized_stages: %w[60.00 60.60],
34
- ),
35
-
36
- # Publicly Available Specification (PAS)
37
- Pubid::Components::TypedStage.new(
38
- code: :pubpas,
39
- stage_code: :published,
40
- type_code: :pas,
41
- abbr: ["PAS"],
42
- name: "Publicly Available Specification",
43
- harmonized_stages: %w[60.00 60.60],
44
- ),
45
-
46
- # National Annex (NA)
47
- Pubid::Components::TypedStage.new(
48
- code: :pubna,
49
- stage_code: :published,
50
- type_code: :na,
51
- abbr: ["NA"],
52
- name: "National Annex",
53
- harmonized_stages: %w[60.00 60.60],
54
- ),
55
-
56
- # Draft Document (DD)
57
- Pubid::Components::TypedStage.new(
58
- code: :pubdd,
59
- stage_code: :published,
60
- type_code: :dd,
61
- abbr: ["DD"],
62
- name: "Draft Document",
63
- harmonized_stages: %w[60.00 60.60],
64
- ),
65
-
66
- # Flex Document
67
- Pubid::Components::TypedStage.new(
68
- code: :pubflex,
69
- stage_code: :published,
70
- type_code: :flex,
71
- abbr: ["Flex", "BSI Flex"],
72
- name: "BSI Flex",
73
- harmonized_stages: %w[60.00 60.60],
74
- ),
75
-
76
- # Handbook
77
- Pubid::Components::TypedStage.new(
78
- code: :pubhandbook,
79
- stage_code: :published,
80
- type_code: :handbook,
81
- abbr: ["Handbook", "HB"],
82
- name: "BSI Handbook",
83
- harmonized_stages: %w[60.00 60.60],
84
- ),
85
-
86
- # Practice Guide (PP)
87
- Pubid::Components::TypedStage.new(
88
- code: :pubpp,
89
- stage_code: :published,
90
- type_code: :pp,
91
- abbr: ["PP"],
92
- name: "Published Practice",
93
- harmonized_stages: %w[60.00 60.60],
94
- ),
95
-
96
- # British Industrial Practice (BIP)
97
- Pubid::Components::TypedStage.new(
98
- code: :pubbip,
99
- stage_code: :published,
100
- type_code: :bip,
101
- abbr: ["BIP"],
102
- name: "British Industrial Practice",
103
- harmonized_stages: %w[60.00 60.60],
104
- ),
105
-
106
- # Aerospace/Specialized British Standard (with letter prefix)
107
- Pubid::Components::TypedStage.new(
108
- code: :pubaerospace,
109
- stage_code: :published,
110
- type_code: :aerospace,
111
- abbr: ["BS A", "BS AU", "BS C", "BS M", "BS S", "BS L", "BS TA",
112
- "BS MA", "BS PL", "BS QC", "BS G", "BS HC", "BS F", "BS X", "BS B"],
113
- name: "Aerospace/Specialized British Standard",
114
- harmonized_stages: %w[60.00 60.60],
115
- ),
116
-
117
- # Index
118
- Pubid::Components::TypedStage.new(
119
- code: :pubindex,
120
- stage_code: :published,
121
- type_code: :index,
122
- abbr: ["Index"],
123
- name: "BSI Index",
124
- harmonized_stages: %w[60.00 60.60],
125
- ),
126
-
127
- # Method
128
- Pubid::Components::TypedStage.new(
129
- code: :pubmethod,
130
- stage_code: :published,
131
- type_code: :method,
132
- abbr: ["Method", "Methods"],
133
- name: "BSI Method",
134
- harmonized_stages: %w[60.00 60.60],
135
- ),
136
-
137
- # Section
138
- Pubid::Components::TypedStage.new(
139
- code: :pubsection,
140
- stage_code: :published,
141
- type_code: :section,
142
- abbr: ["Section"],
143
- name: "BSI Section",
144
- harmonized_stages: %w[60.00 60.60],
145
- ),
146
-
147
- # DISC (Delivering Information Solutions to Customers)
148
- Pubid::Components::TypedStage.new(
149
- code: :pubdisc,
150
- stage_code: :published,
151
- type_code: :disc,
152
- abbr: ["DISC"],
153
- name: "DISC",
154
- harmonized_stages: %w[60.00 60.60],
155
- ),
156
-
157
- # Detailed Specification (with N or C notation)
158
- Pubid::Components::TypedStage.new(
159
- code: :pubdetailed_spec,
160
- stage_code: :published,
161
- type_code: :detailed_specification,
162
- abbr: ["DETAILED SPEC"],
163
- name: "Detailed Specification",
164
- harmonized_stages: %w[60.00 60.60],
165
- ),
166
-
167
- # Standalone Amendment
168
- Pubid::Components::TypedStage.new(
169
- code: :standalone_amendment,
170
- stage_code: :published,
171
- type_code: :amendment,
172
- abbr: ["AMD"],
173
- name: "Amendment",
174
- harmonized_stages: %w[60.00 60.60],
175
- ),
176
-
177
- # Technical Specification
178
- Pubid::Components::TypedStage.new(
179
- code: :pubts,
180
- stage_code: :published,
181
- type_code: :ts,
182
- abbr: ["TS"],
183
- name: "Technical Specification",
184
- harmonized_stages: %w[60.00 60.60],
185
- ),
186
- ].freeze
187
-
188
- # Map type codes to identifier classes
189
- IDENTIFIER_CLASS_MAP = {
190
- bs: "Identifiers::BritishStandard",
191
- pd: "Identifiers::PublishedDocument",
192
- pas: "Identifiers::PubliclyAvailableSpecification",
193
- na: "Identifiers::NationalAnnex",
194
- dd: "Identifiers::DraftDocument",
195
- flex: "Identifiers::Flex",
196
- handbook: "Identifiers::Handbook",
197
- pp: "Identifiers::PracticeGuide",
198
- bip: "Identifiers::BritishIndustrialPractice",
199
- aerospace: "Identifiers::AerospaceStandard",
200
- index: "Identifiers::Index",
201
- method: "Identifiers::Method",
202
- section: "Identifiers::Section",
203
- disc: "Identifiers::Disc",
204
- bundled: "Identifiers::BundledIdentifier",
205
- detailed_specification: "Identifiers::DetailedSpecification",
206
- standalone_amendment: "Identifiers::StandaloneAmendment",
207
- ts: "Identifiers::TechnicalSpecification",
208
- committee_document: "Identifiers::CommitteeDocument",
209
- explanatory_supplement: "Identifiers::ExplanatorySupplement",
210
- supplementary_index: "Identifiers::SupplementaryIndex",
211
- test_method: "Identifiers::TestMethod",
212
- set: "Identifiers::Set",
213
- }.freeze
214
-
215
- # Default typed stage for when no match is found
216
- DEFAULT_TYPED_STAGE = Pubid::Components::TypedStage.new(
217
- code: :pubbs,
218
- stage_code: :published,
219
- type_code: :bs,
220
- abbr: ["BS"],
221
- name: "British Standard",
222
- harmonized_stages: %w[60.00 60.60],
223
- ).freeze
224
-
225
- def locate_typed_stage_by_abbr(abbr)
226
- abbr_str = abbr.to_s.strip
227
- TYPED_STAGES_REGISTRY.find do |ts|
228
- ts.abbr.include?(abbr_str)
229
- end || DEFAULT_TYPED_STAGE
230
- end
231
-
232
- def locate_identifier_klass_by_type_code(type_code)
233
- class_name = IDENTIFIER_CLASS_MAP[type_code.to_sym]
234
- return Identifiers::BritishStandard unless class_name
235
-
236
- # Convert string to actual class
237
- class_name.split("::").reduce(Pubid::Bsi) do |mod, name|
238
- mod.const_get(name)
239
- end
240
- end
241
- end
242
- end
243
- end
@@ -1,57 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pubid
4
- module Ccsds
5
- class Scheme < Pubid::Scheme
6
- class << self
7
- def identifiers
8
- [
9
- Identifiers::Base,
10
- ]
11
- end
12
-
13
- def supplement_identifiers
14
- [
15
- Identifiers::Corrigendum,
16
- ]
17
- end
18
-
19
- def typed_stages
20
- identifiers.flat_map { |klass| klass::TYPED_STAGES }
21
- end
22
-
23
- def supplement_typed_stages
24
- supplement_identifiers.flat_map { |klass| klass::TYPED_STAGES }
25
- end
26
-
27
- def locate_typed_stage_by_abbr(abbr)
28
- abbr = "" if abbr.nil?
29
-
30
- typed_stage = (typed_stages + supplement_typed_stages).detect do |ts|
31
- ts.abbr.include?(abbr)
32
- end
33
-
34
- unless typed_stage
35
- raise ArgumentError,
36
- "Unknown type abbreviation: '#{abbr}'"
37
- end
38
-
39
- typed_stage
40
- end
41
-
42
- def locate_identifier_klass_by_type_code(type_code)
43
- identifier_klass = (identifiers + supplement_identifiers).detect do |klass|
44
- klass.type[:key].to_s == type_code.to_s
45
- end
46
-
47
- unless identifier_klass
48
- raise ArgumentError,
49
- "Unknown type code: #{type_code}"
50
- end
51
-
52
- identifier_klass
53
- end
54
- end
55
- end
56
- end
57
- end
@@ -1,164 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pubid
4
- module CenCenelec
5
- class Scheme < Pubid::Scheme
6
- # TYPED_STAGES_REGISTRY for native CEN types
7
- TYPED_STAGES_REGISTRY = [
8
- # European Norm (EN)
9
- Pubid::Components::TypedStage.new(
10
- code: :puben,
11
- stage_code: :published,
12
- type_code: :en,
13
- abbr: ["EN"],
14
- name: "European Norm",
15
- harmonized_stages: %w[60.00 60.60],
16
- ),
17
- Pubid::Components::TypedStage.new(
18
- code: :pren,
19
- stage_code: :proposal,
20
- type_code: :en,
21
- abbr: ["prEN"],
22
- name: "Proposal European Norm",
23
- harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
24
- ),
25
- Pubid::Components::TypedStage.new(
26
- code: :fpren,
27
- stage_code: :final_proposal,
28
- type_code: :en,
29
- abbr: ["FprEN"],
30
- name: "Final Proposal European Norm",
31
- harmonized_stages: %w[40.00 40.20 40.60 40.92 40.98 40.99],
32
- ),
33
-
34
- # Technical Specification (TS)
35
- Pubid::Components::TypedStage.new(
36
- code: :pubts,
37
- stage_code: :published,
38
- type_code: :ts,
39
- abbr: ["TS"],
40
- name: "Technical Specification",
41
- harmonized_stages: %w[60.00 60.60],
42
- ),
43
- Pubid::Components::TypedStage.new(
44
- code: :prts,
45
- stage_code: :proposal,
46
- type_code: :ts,
47
- abbr: ["prTS"],
48
- name: "Proposal Technical Specification",
49
- harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
50
- ),
51
-
52
- # Technical Report (TR)
53
- Pubid::Components::TypedStage.new(
54
- code: :pubtr,
55
- stage_code: :published,
56
- type_code: :tr,
57
- abbr: ["TR"],
58
- name: "Technical Report",
59
- harmonized_stages: %w[60.00 60.60],
60
- ),
61
-
62
- # CEN Workshop Agreement (CWA)
63
- Pubid::Components::TypedStage.new(
64
- code: :pubcwa,
65
- stage_code: :published,
66
- type_code: :cwa,
67
- abbr: ["CWA"],
68
- name: "CEN Workshop Agreement",
69
- harmonized_stages: %w[60.00 60.60],
70
- ),
71
-
72
- # Guide
73
- Pubid::Components::TypedStage.new(
74
- code: :pubguide,
75
- stage_code: :published,
76
- type_code: :guide,
77
- abbr: ["Guide"],
78
- name: "Guide",
79
- harmonized_stages: %w[60.00 60.60],
80
- ),
81
-
82
- # Harmonization Document (HD)
83
- Pubid::Components::TypedStage.new(
84
- code: :pubhd,
85
- stage_code: :published,
86
- type_code: :hd,
87
- abbr: ["HD"],
88
- name: "Harmonization Document",
89
- harmonized_stages: %w[60.00 60.60],
90
- ),
91
-
92
- # European Specification (ES)
93
- Pubid::Components::TypedStage.new(
94
- code: :pubes,
95
- stage_code: :published,
96
- type_code: :es,
97
- abbr: ["ES"],
98
- name: "European Specification",
99
- harmonized_stages: %w[60.00 60.60],
100
- ),
101
-
102
- # CEN Report (CR)
103
- Pubid::Components::TypedStage.new(
104
- code: :pubcr,
105
- stage_code: :published,
106
- type_code: :cr,
107
- abbr: ["CR"],
108
- name: "CEN Report",
109
- harmonized_stages: %w[60.00 60.60],
110
- ),
111
-
112
- # European Prestandard (ENV)
113
- Pubid::Components::TypedStage.new(
114
- code: :pubenv,
115
- stage_code: :published,
116
- type_code: :env,
117
- abbr: ["ENV"],
118
- name: "European Prestandard",
119
- harmonized_stages: %w[60.00 60.60],
120
- ),
121
- ].freeze
122
-
123
- # Map type codes to identifier classes
124
- IDENTIFIER_CLASS_MAP = {
125
- en: "Identifiers::EuropeanNorm",
126
- ts: "Identifiers::TechnicalSpecification",
127
- tr: "Identifiers::TechnicalReport",
128
- cwa: "Identifiers::CenWorkshopAgreement",
129
- guide: "Identifiers::Guide",
130
- hd: "Identifiers::HarmonizationDocument",
131
- es: "Identifiers::EuropeanSpecification",
132
- cr: "Identifiers::CenReport",
133
- env: "Identifiers::EuropeanPrestandard",
134
- }.freeze
135
-
136
- # Default typed stage for when no match is found
137
- DEFAULT_TYPED_STAGE = Pubid::Components::TypedStage.new(
138
- code: :puben,
139
- stage_code: :published,
140
- type_code: :en,
141
- abbr: ["EN"],
142
- name: "European Norm",
143
- harmonized_stages: %w[60.00 60.60],
144
- ).freeze
145
-
146
- def locate_typed_stage_by_abbr(abbr)
147
- abbr_str = abbr.to_s.strip
148
- TYPED_STAGES_REGISTRY.find do |ts|
149
- ts.abbr.include?(abbr_str)
150
- end || DEFAULT_TYPED_STAGE
151
- end
152
-
153
- def locate_identifier_klass_by_type_code(type_code)
154
- class_name = IDENTIFIER_CLASS_MAP[type_code.to_sym]
155
- return Identifiers::EuropeanNorm unless class_name
156
-
157
- # Convert string to actual class
158
- class_name.split("::").reduce(Pubid::CenCenelec) do |mod, name|
159
- mod.const_get(name)
160
- end
161
- end
162
- end
163
- end
164
- end
@@ -1,64 +0,0 @@
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
@@ -1,50 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require_relative "code"
4
- require_relative "date"
5
- require_relative "edition"
6
- require_relative "language"
7
- require_relative "publisher"
8
-
9
- module Pubid
10
- module Components
11
- # Coerces loose primitive kwargs (matching pubid 1.x's `Identifier.create`
12
- # signature) into the structured Component objects pubid 2.x expects.
13
- #
14
- # Used by per-flavor `.create` factories.
15
- module Factory
16
- # Per-kwarg coercer. Returns a Component, or an Array<Component> for
17
- # collection attributes such as `languages`.
18
- COERCERS = {
19
- publisher: ->(v) { Publisher.new(body: v.to_s) },
20
- number: ->(v) { Code.new(value: v.to_s) },
21
- part: ->(v) { Code.new(value: v.to_s) },
22
- subpart: ->(v) { Code.new(value: v.to_s) },
23
- year: ->(v) { Date.new(year: v.to_s) },
24
- edition: ->(v) { Edition.new(number: v) },
25
- language: ->(v) { [Language.new(code: v.to_s)] },
26
- }.freeze
27
-
28
- # 1.x kwarg name → 2.x attribute name.
29
- # Applied after coercion.
30
- KEY_RENAMES = {
31
- year: :date,
32
- language: :languages,
33
- }.freeze
34
-
35
- # Convert a hash of 1.x-style primitive kwargs into a hash of 2.x-style
36
- # Component-valued attributes ready for `<IdentifierClass>.new(...)`.
37
- #
38
- # Unknown keys pass through unchanged; nil values are dropped.
39
- def self.from_hash(opts)
40
- opts.each_with_object({}) do |(k, v), out|
41
- next if v.nil?
42
-
43
- target = KEY_RENAMES.fetch(k, k)
44
- coercer = COERCERS[k]
45
- out[target] = coercer ? coercer.call(v) : v
46
- end
47
- end
48
- end
49
- end
50
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pubid
4
- module Csa
5
- class Scheme < Pubid::Scheme
6
- class << self
7
- def identifiers
8
- @identifiers ||= [
9
- Identifiers::Standard,
10
- Identifiers::Bundled,
11
- Identifiers::CanadianAdopted,
12
- Identifiers::CsaAdopted,
13
- Identifiers::Package,
14
- Identifiers::Series,
15
- Identifiers::Cec,
16
- Identifiers::Combined,
17
- ].freeze
18
- end
19
-
20
- def supplement_identifiers
21
- @supplement_identifiers ||= [].freeze
22
- end
23
-
24
- def typed_stages
25
- @typed_stages ||= [].freeze
26
- end
27
-
28
- def supplement_typed_stages
29
- @supplement_typed_stages ||= [].freeze
30
- end
31
-
32
- def locate_typed_stage_by_abbr(_abbr)
33
- raise ArgumentError,
34
- "CSA identifiers do not use typed stages"
35
- end
36
-
37
- def locate_identifier_klass_by_type_code(_type_code)
38
- raise ArgumentError,
39
- "CSA identifiers do not use type codes"
40
- end
41
- end
42
- end
43
- end
44
- end
@@ -1,42 +0,0 @@
1
- require "lutaml/model"
2
- # frozen_string_literal: true
3
-
4
- module Pubid
5
- module Etsi
6
- class Scheme < Lutaml::Model::Serializable
7
- attribute :type, :string
8
- attribute :number, :string
9
- attribute :part, :string, collection: true, default: -> { [] }
10
- attribute :version, :string, default: -> {}
11
- attribute :edition, :string, default: -> {}
12
- attribute :date, :string
13
- attribute :amendment, :string, default: -> {}
14
- attribute :corrigendum, :string, default: -> {}
15
-
16
- def to_s
17
- result = "ETSI #{type} #{number}"
18
-
19
- # Add parts
20
- part.each do |p|
21
- result += "-#{p}"
22
- end
23
-
24
- # Add amendment or corrigendum
25
- result += "/A#{amendment}" if amendment
26
- result += "/C#{corrigendum}" if corrigendum
27
-
28
- # Add version or edition
29
- if version
30
- result += " V#{version}"
31
- elsif edition
32
- result += " ed.#{edition}"
33
- end
34
-
35
- # Add date (only if present)
36
- result += " (#{date})" if date
37
-
38
- result
39
- end
40
- end
41
- end
42
- end