pubid 2.0.0.pre.alpha.1 → 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 (463) hide show
  1. checksums.yaml +4 -4
  2. data/README.adoc +5 -1
  3. data/data/nist/update_codes.yaml +27 -0
  4. data/lib/pubid/amca/builder.rb +2 -2
  5. data/lib/pubid/amca/identifier.rb +7 -0
  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 -1
  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 -4
  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 -0
  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/identifiers/base.rb +0 -60
  55. data/lib/pubid/asme/renderer.rb +66 -0
  56. data/lib/pubid/asme/urn_parser.rb +31 -0
  57. data/lib/pubid/asme.rb +42 -1
  58. data/lib/pubid/astm/components/code.rb +9 -0
  59. data/lib/pubid/{jis → astm}/components.rb +1 -1
  60. data/lib/pubid/astm/identifiers/adjunct.rb +0 -8
  61. data/lib/pubid/astm/identifiers/data_series.rb +0 -14
  62. data/lib/pubid/astm/identifiers/iso_dual_published.rb +9 -34
  63. data/lib/pubid/astm/identifiers/manual.rb +0 -27
  64. data/lib/pubid/astm/identifiers/monograph.rb +0 -14
  65. data/lib/pubid/astm/identifiers/research_report.rb +0 -7
  66. data/lib/pubid/astm/identifiers/standard.rb +0 -39
  67. data/lib/pubid/astm/identifiers/technical_report.rb +0 -13
  68. data/lib/pubid/astm/identifiers/work_in_progress.rb +0 -11
  69. data/lib/pubid/astm/identifiers.rb +18 -0
  70. data/lib/pubid/astm/renderer.rb +172 -0
  71. data/lib/pubid/astm/single_identifier.rb +0 -10
  72. data/lib/pubid/astm/urn_parser.rb +30 -0
  73. data/lib/pubid/astm.rb +39 -27
  74. data/lib/pubid/bsi/builder.rb +21 -12
  75. data/lib/pubid/bsi/identifier.rb +8 -2
  76. data/lib/pubid/bsi/identifiers/addendum_document.rb +3 -33
  77. data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +11 -47
  78. data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +11 -38
  79. data/lib/pubid/bsi/identifiers/aerospace_standard.rb +3 -53
  80. data/lib/pubid/bsi/identifiers/amendment.rb +3 -19
  81. data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +2 -4
  82. data/lib/pubid/bsi/identifiers/british_standard.rb +2 -1
  83. data/lib/pubid/bsi/identifiers/bundled_identifier.rb +3 -84
  84. data/lib/pubid/bsi/identifiers/committee_document.rb +1 -14
  85. data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +3 -84
  86. data/lib/pubid/bsi/identifiers/corrigendum.rb +3 -7
  87. data/lib/pubid/bsi/identifiers/detailed_specification.rb +1 -34
  88. data/lib/pubid/bsi/identifiers/disc.rb +1 -27
  89. data/lib/pubid/bsi/identifiers/draft_document.rb +3 -44
  90. data/lib/pubid/bsi/identifiers/electronic_book.rb +3 -36
  91. data/lib/pubid/bsi/identifiers/expert_commentary.rb +3 -15
  92. data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +1 -45
  93. data/lib/pubid/bsi/identifiers/flex.rb +1 -33
  94. data/lib/pubid/bsi/identifiers/handbook.rb +2 -13
  95. data/lib/pubid/bsi/identifiers/index.rb +1 -30
  96. data/lib/pubid/bsi/identifiers/method.rb +1 -39
  97. data/lib/pubid/bsi/identifiers/national_annex.rb +5 -27
  98. data/lib/pubid/bsi/identifiers/practice_guide.rb +2 -4
  99. data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +3 -52
  100. data/lib/pubid/bsi/identifiers/published_document.rb +3 -52
  101. data/lib/pubid/bsi/identifiers/section.rb +1 -28
  102. data/lib/pubid/bsi/identifiers/set.rb +3 -17
  103. data/lib/pubid/bsi/identifiers/standalone_amendment.rb +1 -7
  104. data/lib/pubid/bsi/identifiers/supplement_document.rb +3 -21
  105. data/lib/pubid/bsi/identifiers/supplementary_index.rb +1 -44
  106. data/lib/pubid/bsi/identifiers/technical_specification.rb +3 -45
  107. data/lib/pubid/bsi/identifiers/test_method.rb +1 -30
  108. data/lib/pubid/bsi/identifiers/value_added_publication.rb +3 -14
  109. data/lib/pubid/bsi/identifiers.rb +0 -1
  110. data/lib/pubid/bsi/renderer.rb +1050 -0
  111. data/lib/pubid/bsi/single_identifier.rb +6 -70
  112. data/lib/pubid/bsi/urn_generator.rb +2 -3
  113. data/lib/pubid/bsi/urn_parser.rb +52 -0
  114. data/lib/pubid/bsi.rb +224 -1
  115. data/lib/pubid/builder/base.rb +57 -10
  116. data/lib/pubid/bundled_identifier.rb +0 -1
  117. data/lib/pubid/ccsds/builder.rb +4 -3
  118. data/lib/pubid/ccsds/identifier.rb +66 -1
  119. data/lib/pubid/ccsds/identifiers/base.rb +11 -50
  120. data/lib/pubid/ccsds/identifiers/corrigendum.rb +7 -6
  121. data/lib/pubid/ccsds/parser.rb +4 -2
  122. data/lib/pubid/ccsds/single_identifier.rb +4 -1
  123. data/lib/pubid/ccsds/supplement_identifier.rb +15 -11
  124. data/lib/pubid/ccsds/urn_generator.rb +3 -3
  125. data/lib/pubid/ccsds/urn_parser.rb +20 -0
  126. data/lib/pubid/ccsds.rb +39 -1
  127. data/lib/pubid/cen_cenelec/builder.rb +12 -14
  128. data/lib/pubid/cen_cenelec/identifier.rb +8 -2
  129. data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +13 -4
  130. data/lib/pubid/cen_cenelec/identifiers/amendment.rb +2 -8
  131. data/lib/pubid/cen_cenelec/identifiers/base.rb +5 -41
  132. data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +2 -1
  133. data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +2 -1
  134. data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +2 -25
  135. data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +2 -13
  136. data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +2 -1
  137. data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +4 -7
  138. data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +2 -1
  139. data/lib/pubid/cen_cenelec/identifiers/fragment.rb +2 -2
  140. data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +2 -1
  141. data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +2 -1
  142. data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +2 -1
  143. data/lib/pubid/cen_cenelec/renderer.rb +261 -0
  144. data/lib/pubid/cen_cenelec/single_identifier.rb +11 -89
  145. data/lib/pubid/cen_cenelec/urn_generator.rb +6 -6
  146. data/lib/pubid/cen_cenelec/urn_parser.rb +28 -0
  147. data/lib/pubid/cen_cenelec.rb +168 -1
  148. data/lib/pubid/cie/components/code.rb +8 -0
  149. data/lib/pubid/cie/identifier.rb +6 -4
  150. data/lib/pubid/cie/urn_parser.rb +28 -0
  151. data/lib/pubid/cie.rb +43 -1
  152. data/lib/pubid/components/adoption.rb +104 -0
  153. data/lib/pubid/components/code.rb +22 -8
  154. data/lib/pubid/components/date.rb +23 -16
  155. data/lib/pubid/components/edition.rb +9 -6
  156. data/lib/pubid/components/iteration.rb +32 -0
  157. data/lib/pubid/components/language.rb +6 -4
  158. data/lib/pubid/components/locality.rb +10 -1
  159. data/lib/pubid/components/publisher.rb +9 -6
  160. data/lib/pubid/components/relationship.rb +151 -0
  161. data/lib/pubid/components/stage.rb +5 -14
  162. data/lib/pubid/components/supplement.rb +184 -0
  163. data/lib/pubid/components/type.rb +5 -15
  164. data/lib/pubid/components/typed_stage.rb +11 -8
  165. data/lib/pubid/components.rb +4 -0
  166. data/lib/pubid/core/update_codes.rb +28 -7
  167. data/lib/pubid/csa/identifier.rb +0 -3
  168. data/lib/pubid/csa/identifiers/base.rb +2 -122
  169. data/lib/pubid/csa/identifiers/cec.rb +2 -101
  170. data/lib/pubid/csa/identifiers/series.rb +2 -102
  171. data/lib/pubid/csa/renderer.rb +292 -0
  172. data/lib/pubid/csa/urn_generator.rb +1 -1
  173. data/lib/pubid/csa/urn_parser.rb +33 -0
  174. data/lib/pubid/csa.rb +42 -1
  175. data/lib/pubid/etsi/components/code.rb +9 -2
  176. data/lib/pubid/etsi/identifiers/base.rb +1 -4
  177. data/lib/pubid/etsi/identifiers/supplement_identifier.rb +2 -9
  178. data/lib/pubid/etsi/renderer.rb +42 -0
  179. data/lib/pubid/etsi/urn_parser.rb +34 -0
  180. data/lib/pubid/etsi.rb +42 -1
  181. data/lib/pubid/export/exporter.rb +4 -46
  182. data/lib/pubid/export/flavor_exporter.rb +111 -278
  183. data/lib/pubid/export.rb +0 -6
  184. data/lib/pubid/identifier.rb +10 -18
  185. data/lib/pubid/identifier_facade.rb +114 -0
  186. data/lib/pubid/identifier_metadata.rb +1 -1
  187. data/lib/pubid/idf/builder.rb +3 -3
  188. data/lib/pubid/idf/identifier.rb +3 -6
  189. data/lib/pubid/idf/identifiers/amendment.rb +2 -1
  190. data/lib/pubid/idf/identifiers/corrigendum.rb +2 -1
  191. data/lib/pubid/idf/identifiers/international_standard.rb +2 -1
  192. data/lib/pubid/idf/identifiers/reviewed_method.rb +2 -1
  193. data/lib/pubid/idf/parser.rb +3 -2
  194. data/lib/pubid/idf/renderer.rb +84 -0
  195. data/lib/pubid/idf/supplement_identifier.rb +2 -10
  196. data/lib/pubid/idf/urn_generator.rb +4 -39
  197. data/lib/pubid/idf/urn_parser.rb +25 -0
  198. data/lib/pubid/idf.rb +51 -1
  199. data/lib/pubid/iec/builder.rb +48 -65
  200. data/lib/pubid/iec/components/code.rb +9 -32
  201. data/lib/pubid/iec/components/publisher.rb +1 -1
  202. data/lib/pubid/iec/components.rb +14 -0
  203. data/lib/pubid/iec/identifier.rb +276 -3
  204. data/lib/pubid/iec/identifiers/amendment.rb +2 -3
  205. data/lib/pubid/iec/identifiers/base.rb +8 -28
  206. data/lib/pubid/iec/identifiers/component_specification.rb +3 -3
  207. data/lib/pubid/iec/identifiers/conformity_assessment.rb +1 -2
  208. data/lib/pubid/iec/identifiers/consolidated_identifier.rb +27 -30
  209. data/lib/pubid/iec/identifiers/corrigendum.rb +2 -3
  210. data/lib/pubid/iec/identifiers/fragment_identifier.rb +37 -26
  211. data/lib/pubid/iec/identifiers/guide.rb +0 -2
  212. data/lib/pubid/iec/identifiers/international_standard.rb +2 -3
  213. data/lib/pubid/iec/identifiers/interpretation_sheet.rb +2 -3
  214. data/lib/pubid/iec/identifiers/operational_document.rb +3 -3
  215. data/lib/pubid/iec/identifiers/publicly_available_specification.rb +2 -3
  216. data/lib/pubid/iec/identifiers/sheet_identifier.rb +21 -15
  217. data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +3 -3
  218. data/lib/pubid/iec/identifiers/systems_reference_document.rb +2 -3
  219. data/lib/pubid/iec/identifiers/technical_report.rb +2 -3
  220. data/lib/pubid/iec/identifiers/technical_specification.rb +2 -3
  221. data/lib/pubid/iec/identifiers/technology_report.rb +1 -2
  222. data/lib/pubid/iec/identifiers/test_report_form.rb +5 -34
  223. data/lib/pubid/iec/identifiers/vap_identifier.rb +26 -23
  224. data/lib/pubid/iec/identifiers/white_paper.rb +3 -3
  225. data/lib/pubid/iec/identifiers/working_document.rb +4 -48
  226. data/lib/pubid/iec/identifiers.rb +30 -0
  227. data/lib/pubid/iec/parser.rb +20 -14
  228. data/lib/pubid/iec/renderer.rb +254 -0
  229. data/lib/pubid/iec/single_identifier.rb +6 -12
  230. data/lib/pubid/iec/supplement_identifier.rb +58 -54
  231. data/lib/pubid/iec/urn_generator.rb +57 -171
  232. data/lib/pubid/iec/urn_parser.rb +53 -252
  233. data/lib/pubid/iec.rb +40 -68
  234. data/lib/pubid/ieee/builder.rb +12 -12
  235. data/lib/pubid/ieee/components/code.rb +8 -0
  236. data/lib/pubid/ieee/components/draft.rb +14 -0
  237. data/lib/pubid/ieee/components/relationship.rb +5 -149
  238. data/lib/pubid/ieee/identifier.rb +6 -0
  239. data/lib/pubid/ieee/identifiers/adopted_standard.rb +1 -6
  240. data/lib/pubid/ieee/identifiers/base.rb +101 -458
  241. data/lib/pubid/ieee/identifiers/conformance_identifier.rb +1 -7
  242. data/lib/pubid/ieee/identifiers/corrigendum.rb +1 -9
  243. data/lib/pubid/ieee/identifiers/csa_dual_published.rb +1 -7
  244. data/lib/pubid/ieee/identifiers/dual_identifier.rb +1 -1
  245. data/lib/pubid/ieee/identifiers/dual_published.rb +1 -1
  246. data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +1 -6
  247. data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +1 -7
  248. data/lib/pubid/ieee/identifiers/joint_development.rb +2 -0
  249. data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +1 -15
  250. data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +1 -3
  251. data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +15 -0
  252. data/lib/pubid/ieee/identifiers/redlined_standard.rb +1 -4
  253. data/lib/pubid/ieee/identifiers/si_standard.rb +1 -35
  254. data/lib/pubid/ieee/identifiers/standard.rb +1 -1
  255. data/lib/pubid/ieee/pre_parser.rb +301 -0
  256. data/lib/pubid/ieee/renderer.rb +307 -0
  257. data/lib/pubid/ieee/urn_parser.rb +34 -0
  258. data/lib/pubid/ieee.rb +62 -1
  259. data/lib/pubid/ieee_debug.rb +0 -1
  260. data/lib/pubid/iho/builder.rb +2 -2
  261. data/lib/pubid/iho/identifier.rb +8 -0
  262. data/lib/pubid/iho/identifiers/base.rb +49 -10
  263. data/lib/pubid/iho/identifiers/bibliographic.rb +0 -4
  264. data/lib/pubid/iho/identifiers/circular_letter.rb +0 -4
  265. data/lib/pubid/iho/identifiers/miscellaneous.rb +0 -4
  266. data/lib/pubid/iho/identifiers/publication.rb +0 -4
  267. data/lib/pubid/iho/identifiers/standard.rb +0 -4
  268. data/lib/pubid/iho/parser.rb +3 -3
  269. data/lib/pubid/iho/renderer.rb +30 -0
  270. data/lib/pubid/iho/urn_generator.rb +3 -3
  271. data/lib/pubid/iho/urn_parser.rb +58 -0
  272. data/lib/pubid/iho.rb +50 -1
  273. data/lib/pubid/iso/builder.rb +59 -53
  274. data/lib/pubid/iso/bundled_identifier.rb +51 -0
  275. data/lib/pubid/iso/components/code.rb +7 -19
  276. data/lib/pubid/iso/components/publisher.rb +10 -8
  277. data/lib/pubid/iso/components.rb +2 -4
  278. data/lib/pubid/iso/identifier.rb +233 -6
  279. data/lib/pubid/iso/identifiers/addendum.rb +9 -6
  280. data/lib/pubid/iso/identifiers/amendment.rb +8 -4
  281. data/lib/pubid/iso/identifiers/corrigendum.rb +4 -4
  282. data/lib/pubid/iso/identifiers/data.rb +0 -1
  283. data/lib/pubid/iso/identifiers/directives.rb +8 -2
  284. data/lib/pubid/iso/identifiers/directives_supplement.rb +43 -14
  285. data/lib/pubid/iso/identifiers/extract.rb +2 -2
  286. data/lib/pubid/iso/identifiers/guide.rb +0 -1
  287. data/lib/pubid/iso/identifiers/international_standard.rb +4 -4
  288. data/lib/pubid/iso/identifiers/international_standardized_profile.rb +4 -4
  289. data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +10 -4
  290. data/lib/pubid/iso/identifiers/pas.rb +2 -2
  291. data/lib/pubid/iso/identifiers/recommendation.rb +2 -2
  292. data/lib/pubid/iso/identifiers/supplement.rb +11 -3
  293. data/lib/pubid/iso/identifiers/tc_document.rb +44 -15
  294. data/lib/pubid/iso/identifiers/technical_report.rb +4 -4
  295. data/lib/pubid/iso/identifiers/technical_specification.rb +2 -2
  296. data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +2 -2
  297. data/lib/pubid/iso/identifiers.rb +0 -1
  298. data/lib/pubid/iso/normalizer.rb +89 -0
  299. data/lib/pubid/iso/parser.rb +26 -6
  300. data/lib/pubid/iso/single_identifier.rb +6 -3
  301. data/lib/pubid/iso/supplement_identifier.rb +15 -2
  302. data/lib/pubid/iso/urn_generator.rb +74 -176
  303. data/lib/pubid/iso/urn_parser.rb +28 -9
  304. data/lib/pubid/iso.rb +173 -2
  305. data/lib/pubid/itu/builder.rb +0 -12
  306. data/lib/pubid/itu/components/code.rb +8 -0
  307. data/lib/pubid/itu/components.rb +11 -0
  308. data/lib/pubid/itu/identifier.rb +6 -39
  309. data/lib/pubid/itu/identifiers/amendment.rb +0 -2
  310. data/lib/pubid/itu/identifiers/annex.rb +0 -2
  311. data/lib/pubid/itu/identifiers/base.rb +0 -6
  312. data/lib/pubid/itu/identifiers/combined_identifier.rb +0 -2
  313. data/lib/pubid/itu/identifiers/corrigendum.rb +0 -2
  314. data/lib/pubid/itu/identifiers/recommendation.rb +0 -2
  315. data/lib/pubid/itu/identifiers/special_publication.rb +0 -2
  316. data/lib/pubid/itu/identifiers/supplement.rb +0 -2
  317. data/lib/pubid/itu/urn_parser.rb +23 -0
  318. data/lib/pubid/itu.rb +42 -1
  319. data/lib/pubid/jcgm/builder.rb +16 -8
  320. data/lib/pubid/jcgm/identifiers/amendment.rb +2 -7
  321. data/lib/pubid/jcgm/identifiers/gum_guide.rb +2 -10
  322. data/lib/pubid/jcgm/renderer.rb +68 -0
  323. data/lib/pubid/jcgm/single_identifier.rb +1 -5
  324. data/lib/pubid/jcgm/urn_generator.rb +4 -6
  325. data/lib/pubid/jcgm/urn_parser.rb +23 -0
  326. data/lib/pubid/jcgm.rb +43 -2
  327. data/lib/pubid/jis/builder.rb +44 -52
  328. data/lib/pubid/jis/identifier.rb +132 -3
  329. data/lib/pubid/jis/identifiers/amendment.rb +1 -1
  330. data/lib/pubid/jis/identifiers/corrigendum.rb +16 -0
  331. data/lib/pubid/jis/identifiers/standard.rb +2 -1
  332. data/lib/pubid/jis/identifiers/technical_report.rb +2 -1
  333. data/lib/pubid/jis/identifiers/technical_specification.rb +2 -1
  334. data/lib/pubid/jis/identifiers.rb +1 -1
  335. data/lib/pubid/jis/parser.rb +31 -5
  336. data/lib/pubid/jis/renderer.rb +69 -0
  337. data/lib/pubid/jis/single_identifier.rb +6 -12
  338. data/lib/pubid/jis/supplement_identifier.rb +17 -14
  339. data/lib/pubid/jis/urn_parser.rb +23 -0
  340. data/lib/pubid/jis.rb +42 -2
  341. data/lib/pubid/nist/builder.rb +122 -1761
  342. data/lib/pubid/nist/caster.rb +1272 -0
  343. data/lib/pubid/nist/circular_supplement_builder.rb +291 -0
  344. data/lib/pubid/nist/components/code.rb +9 -20
  345. data/lib/pubid/nist/components/edition.rb +16 -0
  346. data/lib/pubid/nist/components/supplement.rb +88 -21
  347. data/lib/pubid/nist/components.rb +0 -1
  348. data/lib/pubid/nist/identifier.rb +25 -0
  349. data/lib/pubid/nist/identifiers/base.rb +206 -64
  350. data/lib/pubid/nist/identifiers/circular.rb +7 -2
  351. data/lib/pubid/nist/identifiers/circular_supplement.rb +3 -2
  352. data/lib/pubid/nist/identifiers/commercial_standard.rb +2 -1
  353. data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +6 -4
  354. data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +10 -3
  355. data/lib/pubid/nist/identifiers/crpl_report.rb +8 -11
  356. data/lib/pubid/nist/identifiers/dated_document.rb +49 -0
  357. data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +17 -16
  358. data/lib/pubid/nist/identifiers/grant_contractor_report.rb +2 -1
  359. data/lib/pubid/nist/identifiers/handbook.rb +2 -1
  360. data/lib/pubid/nist/identifiers/internal_report.rb +2 -1
  361. data/lib/pubid/nist/identifiers/letter_circular.rb +2 -1
  362. data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +5 -4
  363. data/lib/pubid/nist/identifiers/monograph.rb +7 -3
  364. data/lib/pubid/nist/identifiers/report.rb +4 -3
  365. data/lib/pubid/nist/identifiers/special_publication.rb +2 -1
  366. data/lib/pubid/nist/identifiers/technical_note.rb +3 -2
  367. data/lib/pubid/nist/identifiers.rb +1 -0
  368. data/lib/pubid/nist/parser.rb +67 -424
  369. data/lib/pubid/nist/parser_output_normalizer.rb +233 -0
  370. data/lib/pubid/nist/preprocessor.rb +416 -0
  371. data/lib/pubid/nist/renderer.rb +43 -0
  372. data/lib/pubid/nist/router.rb +148 -0
  373. data/lib/pubid/nist/series/base.rb +58 -0
  374. data/lib/pubid/nist/series/crpl.rb +13 -0
  375. data/lib/pubid/nist/series/fips.rb +14 -0
  376. data/lib/pubid/nist/series/ir.rb +60 -0
  377. data/lib/pubid/nist/series/letter_preserving.rb +15 -0
  378. data/lib/pubid/nist/series/mono.rb +19 -0
  379. data/lib/pubid/nist/series/ncstar.rb +20 -0
  380. data/lib/pubid/nist/series.rb +49 -0
  381. data/lib/pubid/nist/supplement_identifier.rb +11 -25
  382. data/lib/pubid/nist/urn_generator.rb +14 -8
  383. data/lib/pubid/nist/urn_parser.rb +67 -0
  384. data/lib/pubid/nist.rb +83 -4
  385. data/lib/pubid/oiml/components/code.rb +10 -0
  386. data/lib/pubid/oiml/identifiers/annex.rb +3 -45
  387. data/lib/pubid/oiml/identifiers/base.rb +2 -17
  388. data/lib/pubid/oiml/renderer.rb +161 -0
  389. data/lib/pubid/oiml/single_identifier.rb +6 -45
  390. data/lib/pubid/oiml/supplement_identifier.rb +4 -19
  391. data/lib/pubid/oiml/urn_generator.rb +0 -8
  392. data/lib/pubid/oiml/urn_parser.rb +22 -0
  393. data/lib/pubid/oiml.rb +42 -1
  394. data/lib/pubid/plateau/identifier.rb +23 -0
  395. data/lib/pubid/plateau/identifiers/handbook.rb +1 -3
  396. data/lib/pubid/plateau/identifiers/technical_report.rb +1 -1
  397. data/lib/pubid/plateau/renderer.rb +51 -0
  398. data/lib/pubid/plateau/supplement_identifier.rb +1 -1
  399. data/lib/pubid/plateau/urn_parser.rb +43 -0
  400. data/lib/pubid/plateau.rb +44 -1
  401. data/lib/pubid/renderers/base.rb +34 -0
  402. data/lib/pubid/renderers/directives_renderer.rb +27 -14
  403. data/lib/pubid/renderers/guide_renderer.rb +7 -1
  404. data/lib/pubid/renderers/human_readable.rb +31 -8
  405. data/lib/pubid/renderers/iwa_renderer.rb +5 -1
  406. data/lib/pubid/renderers/supplement_renderer.rb +4 -1
  407. data/lib/pubid/rendering/context.rb +33 -21
  408. data/lib/pubid/rendering.rb +0 -3
  409. data/lib/pubid/sae/components/date.rb +8 -0
  410. data/lib/pubid/sae/components/type.rb +5 -1
  411. data/lib/pubid/sae/identifiers/base.rb +2 -16
  412. data/lib/pubid/sae/renderer.rb +36 -0
  413. data/lib/pubid/sae/urn_generator.rb +2 -10
  414. data/lib/pubid/sae/urn_parser.rb +36 -0
  415. data/lib/pubid/sae.rb +42 -1
  416. data/lib/pubid/urn_generator/base.rb +12 -12
  417. data/lib/pubid/urn_parser/base.rb +81 -0
  418. data/lib/pubid/urn_parser/errors.rb +9 -0
  419. data/lib/pubid/urn_parser.rb +14 -0
  420. data/lib/pubid/version.rb +1 -1
  421. data/lib/pubid.rb +29 -7
  422. data/lib/tasks/website-data.json +1940 -1882
  423. metadata +77 -43
  424. data/lib/pubid/amca/scheme.rb +0 -16
  425. data/lib/pubid/ansi/scheme.rb +0 -15
  426. data/lib/pubid/api/scheme.rb +0 -66
  427. data/lib/pubid/ashrae/scheme.rb +0 -53
  428. data/lib/pubid/asme/scheme.rb +0 -37
  429. data/lib/pubid/astm/scheme.rb +0 -55
  430. data/lib/pubid/bsi/identifiers/base.rb +0 -11
  431. data/lib/pubid/bsi/scheme.rb +0 -243
  432. data/lib/pubid/ccsds/scheme.rb +0 -57
  433. data/lib/pubid/cen_cenelec/scheme.rb +0 -164
  434. data/lib/pubid/cie/scheme.rb +0 -64
  435. data/lib/pubid/csa/scheme.rb +0 -44
  436. data/lib/pubid/etsi/scheme.rb +0 -42
  437. data/lib/pubid/export/data_class_exporter.rb +0 -59
  438. data/lib/pubid/export/ieee_exporter.rb +0 -78
  439. data/lib/pubid/export/itu_exporter.rb +0 -66
  440. data/lib/pubid/export/nist_exporter.rb +0 -64
  441. data/lib/pubid/export/registry_exporter.rb +0 -90
  442. data/lib/pubid/export/scheme_exporter.rb +0 -70
  443. data/lib/pubid/identifier_registry.rb +0 -198
  444. data/lib/pubid/idf/scheme.rb +0 -61
  445. data/lib/pubid/iec/scheme.rb +0 -71
  446. data/lib/pubid/ieee/scheme.rb +0 -90
  447. data/lib/pubid/iho/scheme.rb +0 -29
  448. data/lib/pubid/iso/identifiers/base.rb +0 -115
  449. data/lib/pubid/iso/scheme.rb +0 -187
  450. data/lib/pubid/itu/scheme.rb +0 -174
  451. data/lib/pubid/jcgm/scheme.rb +0 -60
  452. data/lib/pubid/jis/components/code.rb +0 -59
  453. data/lib/pubid/jis/identifiers/base.rb +0 -72
  454. data/lib/pubid/jis/scheme.rb +0 -49
  455. data/lib/pubid/nist/components/publisher.rb +0 -24
  456. data/lib/pubid/nist/scheme.rb +0 -199
  457. data/lib/pubid/oiml/scheme.rb +0 -46
  458. data/lib/pubid/plateau/scheme.rb +0 -45
  459. data/lib/pubid/rendering/base.rb +0 -73
  460. data/lib/pubid/rendering/common.rb +0 -211
  461. data/lib/pubid/rendering/format.rb +0 -25
  462. data/lib/pubid/sae/scheme.rb +0 -47
  463. data/lib/pubid/scheme.rb +0 -207
@@ -1,11 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pubid
4
- module Bsi
5
- module Identifiers
6
- # Base BSI identifier (module organization)
7
- class Base < Pubid::Identifier
8
- end
9
- end
10
- end
11
- end
@@ -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,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
@@ -1,59 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Pubid
4
- module Export
5
- # Strategy for flavors using Lutaml::Model::Serializable as their Scheme
6
- # (ETSI, Plateau). These have identifier classes in the Identifiers module
7
- # that may not have def self.type.
8
- class DataClassExporter < FlavorExporter
9
- def export
10
- klasses = resolve_identifier_classes_from_module
11
- return nil if klasses.empty?
12
-
13
- fixture_data = fixture_examples
14
-
15
- identifier_types = klasses.map do |klass|
16
- info = extract_type_info(klass)
17
- type_key = info[:key]
18
- examples = fixture_data[type_key] || fixture_data[type_key.to_s] || []
19
-
20
- IdentifierTypeResult.new(
21
- key: info[:key],
22
- title: info[:title],
23
- short: info[:short],
24
- abbr: info[:abbr],
25
- typed_stages: [],
26
- examples: examples,
27
- )
28
- end
29
-
30
- scheme = scheme_class
31
- attrs = scheme&.methods&.include?(:attributes) ? scheme.attributes.keys.map(&:to_s) : []
32
-
33
- FlavorResult.new(
34
- flavor: flavor,
35
- identifier_types: identifier_types,
36
- attributes: attrs,
37
- )
38
- end
39
-
40
- private
41
-
42
- def resolve_identifier_classes_from_module
43
- mod = scheme_module
44
- return [] unless mod
45
-
46
- idents_mod = mod.const_get(:Identifiers)
47
- skip = %w[Base Supplement]
48
-
49
- idents_mod.constants.filter_map do |c|
50
- klass = begin; idents_mod.const_get(c); rescue NameError; next; end
51
- next unless klass.is_a?(Class)
52
- next if skip.include?(klass.name&.split("::")&.last)
53
-
54
- klass
55
- end
56
- end
57
- end
58
- end
59
- end