pubid 1.15.17 → 2.0.0.pre.alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (601) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/README.adoc +2041 -53
  4. data/archived-gems/pubid-ccsds/update_codes.yaml +1 -0
  5. data/archived-gems/pubid-iec/stages.yaml +129 -0
  6. data/archived-gems/pubid-iec/update_codes.yaml +67 -0
  7. data/archived-gems/pubid-ieee/update_codes.yaml +104 -0
  8. data/archived-gems/pubid-iso/stages.yaml +106 -0
  9. data/archived-gems/pubid-iso/update_codes.yaml +4 -0
  10. data/archived-gems/pubid-itu/i18n.yaml +13 -0
  11. data/archived-gems/pubid-itu/series.yaml +42 -0
  12. data/archived-gems/pubid-nist/publishers.yaml +6 -0
  13. data/archived-gems/pubid-nist/series.yaml +121 -0
  14. data/archived-gems/pubid-nist/stages.yaml +16 -0
  15. data/archived-gems/pubid-nist/update_codes.yaml +93 -0
  16. data/archived-gems/pubid-plateau/update_codes.yaml +6 -0
  17. data/data/ccsds/update_codes.yaml +1 -0
  18. data/data/iec/update_codes.yaml +67 -0
  19. data/data/ieee/update_codes.yaml +104 -0
  20. data/data/iso/update_codes.yaml +21 -0
  21. data/data/nist/update_codes.yaml +87 -0
  22. data/data/plateau/update_codes.yaml +6 -0
  23. data/lib/pubid/amca/builder.rb +176 -0
  24. data/lib/pubid/amca/identifier.rb +18 -0
  25. data/lib/pubid/amca/identifiers/base.rb +64 -0
  26. data/lib/pubid/amca/identifiers/interpretation.rb +51 -0
  27. data/lib/pubid/amca/identifiers/publication.rb +47 -0
  28. data/lib/pubid/amca/identifiers/standard.rb +22 -0
  29. data/lib/pubid/amca/identifiers.rb +12 -0
  30. data/lib/pubid/amca/parser.rb +153 -0
  31. data/lib/pubid/amca/scheme.rb +16 -0
  32. data/lib/pubid/amca/single_identifier.rb +33 -0
  33. data/lib/pubid/amca/urn_generator.rb +50 -0
  34. data/lib/pubid/amca.rb +26 -0
  35. data/lib/pubid/ansi/builder.rb +52 -0
  36. data/lib/pubid/ansi/identifier.rb +13 -0
  37. data/lib/pubid/ansi/identifiers/american_national_standard.rb +12 -0
  38. data/lib/pubid/ansi/identifiers/standard.rb +16 -0
  39. data/lib/pubid/ansi/identifiers.rb +11 -0
  40. data/lib/pubid/ansi/parser.rb +91 -0
  41. data/lib/pubid/ansi/scheme.rb +15 -0
  42. data/lib/pubid/ansi/single_identifier.rb +45 -0
  43. data/lib/pubid/ansi/urn_generator.rb +76 -0
  44. data/lib/pubid/ansi.rb +27 -0
  45. data/lib/pubid/api/builder.rb +85 -0
  46. data/lib/pubid/api/components/code.rb +9 -0
  47. data/lib/pubid/api/identifier.rb +21 -0
  48. data/lib/pubid/api/identifiers/base.rb +24 -0
  49. data/lib/pubid/api/identifiers/bulletin.rb +15 -0
  50. data/lib/pubid/api/identifiers/continuous_operations_standard.rb +15 -0
  51. data/lib/pubid/api/identifiers/mpms.rb +44 -0
  52. data/lib/pubid/api/identifiers/publication.rb +15 -0
  53. data/lib/pubid/api/identifiers/recommended_practice.rb +15 -0
  54. data/lib/pubid/api/identifiers/specification.rb +15 -0
  55. data/lib/pubid/api/identifiers/standard.rb +15 -0
  56. data/lib/pubid/api/identifiers/technical_report.rb +15 -0
  57. data/lib/pubid/api/identifiers/typeless_standard.rb +27 -0
  58. data/lib/pubid/api/parser.rb +140 -0
  59. data/lib/pubid/api/scheme.rb +66 -0
  60. data/lib/pubid/api/single_identifier.rb +46 -0
  61. data/lib/pubid/api/urn_generator.rb +41 -0
  62. data/lib/pubid/api.rb +17 -0
  63. data/lib/pubid/ashrae/builder.rb +498 -0
  64. data/lib/pubid/ashrae/identifier.rb +18 -0
  65. data/lib/pubid/ashrae/identifiers/addenda_package.rb +46 -0
  66. data/lib/pubid/ashrae/identifiers/addendum.rb +55 -0
  67. data/lib/pubid/ashrae/identifiers/base.rb +23 -0
  68. data/lib/pubid/ashrae/identifiers/combined_addenda.rb +51 -0
  69. data/lib/pubid/ashrae/identifiers/errata.rb +40 -0
  70. data/lib/pubid/ashrae/identifiers/guideline.rb +38 -0
  71. data/lib/pubid/ashrae/identifiers/interpretation.rb +39 -0
  72. data/lib/pubid/ashrae/identifiers/standard.rb +38 -0
  73. data/lib/pubid/ashrae/identifiers.rb +16 -0
  74. data/lib/pubid/ashrae/parser.rb +724 -0
  75. data/lib/pubid/ashrae/scheme.rb +53 -0
  76. data/lib/pubid/ashrae/single_identifier.rb +23 -0
  77. data/lib/pubid/ashrae/supplement_identifier.rb +23 -0
  78. data/lib/pubid/ashrae/urn_generator.rb +59 -0
  79. data/lib/pubid/ashrae.rb +21 -0
  80. data/lib/pubid/asme/builder.rb +153 -0
  81. data/lib/pubid/asme/components/code.rb +18 -0
  82. data/lib/pubid/asme/identifier.rb +15 -0
  83. data/lib/pubid/asme/identifiers/base.rb +70 -0
  84. data/lib/pubid/asme/identifiers/standard.rb +12 -0
  85. data/lib/pubid/asme/identifiers.rb +10 -0
  86. data/lib/pubid/asme/parser.rb +308 -0
  87. data/lib/pubid/asme/scheme.rb +37 -0
  88. data/lib/pubid/asme/single_identifier.rb +29 -0
  89. data/lib/pubid/asme/urn_generator.rb +133 -0
  90. data/lib/pubid/asme.rb +21 -0
  91. data/lib/pubid/astm/builder.rb +159 -0
  92. data/lib/pubid/astm/components/code.rb +33 -0
  93. data/lib/pubid/astm/identifier.rb +15 -0
  94. data/lib/pubid/astm/identifiers/adjunct.rb +21 -0
  95. data/lib/pubid/astm/identifiers/base.rb +13 -0
  96. data/lib/pubid/astm/identifiers/data_series.rb +25 -0
  97. data/lib/pubid/astm/identifiers/iso_dual_published.rb +74 -0
  98. data/lib/pubid/astm/identifiers/manual.rb +40 -0
  99. data/lib/pubid/astm/identifiers/monograph.rb +25 -0
  100. data/lib/pubid/astm/identifiers/research_report.rb +18 -0
  101. data/lib/pubid/astm/identifiers/standard.rb +52 -0
  102. data/lib/pubid/astm/identifiers/technical_report.rb +23 -0
  103. data/lib/pubid/astm/identifiers/work_in_progress.rb +21 -0
  104. data/lib/pubid/astm/parser.rb +244 -0
  105. data/lib/pubid/astm/scheme.rb +55 -0
  106. data/lib/pubid/astm/single_identifier.rb +25 -0
  107. data/lib/pubid/astm/urn_generator.rb +99 -0
  108. data/lib/pubid/astm.rb +38 -0
  109. data/lib/pubid/bsi/builder.rb +1483 -0
  110. data/lib/pubid/bsi/components/code.rb +11 -0
  111. data/lib/pubid/bsi/components/date.rb +11 -0
  112. data/lib/pubid/bsi/components/publisher.rb +11 -0
  113. data/lib/pubid/bsi/components/type.rb +11 -0
  114. data/lib/pubid/bsi/identifier.rb +27 -0
  115. data/lib/pubid/bsi/identifiers/addendum_document.rb +64 -0
  116. data/lib/pubid/bsi/identifiers/adopted_european_norm.rb +95 -0
  117. data/lib/pubid/bsi/identifiers/adopted_international_standard.rb +82 -0
  118. data/lib/pubid/bsi/identifiers/aerospace_standard.rb +118 -0
  119. data/lib/pubid/bsi/identifiers/amendment.rb +40 -0
  120. data/lib/pubid/bsi/identifiers/base.rb +11 -0
  121. data/lib/pubid/bsi/identifiers/british_industrial_practice.rb +27 -0
  122. data/lib/pubid/bsi/identifiers/british_standard.rb +33 -0
  123. data/lib/pubid/bsi/identifiers/bundled_identifier.rb +114 -0
  124. data/lib/pubid/bsi/identifiers/committee_document.rb +51 -0
  125. data/lib/pubid/bsi/identifiers/consolidated_identifier.rb +152 -0
  126. data/lib/pubid/bsi/identifiers/corrigendum.rb +28 -0
  127. data/lib/pubid/bsi/identifiers/detailed_specification.rb +69 -0
  128. data/lib/pubid/bsi/identifiers/disc.rb +56 -0
  129. data/lib/pubid/bsi/identifiers/draft_document.rb +71 -0
  130. data/lib/pubid/bsi/identifiers/electronic_book.rb +52 -0
  131. data/lib/pubid/bsi/identifiers/expert_commentary.rb +47 -0
  132. data/lib/pubid/bsi/identifiers/explanatory_supplement.rb +82 -0
  133. data/lib/pubid/bsi/identifiers/flex.rb +61 -0
  134. data/lib/pubid/bsi/identifiers/handbook.rb +39 -0
  135. data/lib/pubid/bsi/identifiers/index.rb +62 -0
  136. data/lib/pubid/bsi/identifiers/method.rb +76 -0
  137. data/lib/pubid/bsi/identifiers/national_annex.rb +73 -0
  138. data/lib/pubid/bsi/identifiers/practice_guide.rb +27 -0
  139. data/lib/pubid/bsi/identifiers/publicly_available_specification.rb +79 -0
  140. data/lib/pubid/bsi/identifiers/published_document.rb +79 -0
  141. data/lib/pubid/bsi/identifiers/section.rb +62 -0
  142. data/lib/pubid/bsi/identifiers/set.rb +46 -0
  143. data/lib/pubid/bsi/identifiers/standalone_amendment.rb +40 -0
  144. data/lib/pubid/bsi/identifiers/supplement_document.rb +51 -0
  145. data/lib/pubid/bsi/identifiers/supplementary_index.rb +81 -0
  146. data/lib/pubid/bsi/identifiers/technical_specification.rb +79 -0
  147. data/lib/pubid/bsi/identifiers/test_method.rb +67 -0
  148. data/lib/pubid/bsi/identifiers/value_added_publication.rb +52 -0
  149. data/lib/pubid/bsi/identifiers.rb +52 -0
  150. data/lib/pubid/bsi/model.rb +196 -0
  151. data/lib/pubid/bsi/parser.rb +659 -0
  152. data/lib/pubid/bsi/scheme.rb +243 -0
  153. data/lib/pubid/bsi/single_identifier.rb +129 -0
  154. data/lib/pubid/bsi/urn_generator.rb +84 -0
  155. data/lib/pubid/bsi.rb +32 -0
  156. data/lib/pubid/builder/base.rb +138 -0
  157. data/lib/pubid/bundled_identifier.rb +126 -0
  158. data/lib/pubid/ccsds/builder.rb +56 -0
  159. data/lib/pubid/ccsds/identifier.rb +16 -0
  160. data/lib/pubid/ccsds/identifiers/base.rb +78 -0
  161. data/lib/pubid/ccsds/identifiers/base_BASE_88929.rb +70 -0
  162. data/lib/pubid/ccsds/identifiers/corrigendum.rb +39 -0
  163. data/lib/pubid/ccsds/identifiers.rb +10 -0
  164. data/lib/pubid/ccsds/parser.rb +71 -0
  165. data/lib/pubid/ccsds/scheme.rb +57 -0
  166. data/lib/pubid/ccsds/single_identifier.rb +74 -0
  167. data/lib/pubid/ccsds/supplement_identifier.rb +33 -0
  168. data/lib/pubid/ccsds/urn_generator.rb +115 -0
  169. data/lib/pubid/ccsds.rb +21 -0
  170. data/lib/pubid/cen_cenelec/builder.rb +330 -0
  171. data/lib/pubid/cen_cenelec/identifier.rb +15 -0
  172. data/lib/pubid/cen_cenelec/identifiers/adopted_european_norm.rb +40 -0
  173. data/lib/pubid/cen_cenelec/identifiers/amendment.rb +29 -0
  174. data/lib/pubid/cen_cenelec/identifiers/base.rb +75 -0
  175. data/lib/pubid/cen_cenelec/identifiers/cen_report.rb +28 -0
  176. data/lib/pubid/cen_cenelec/identifiers/cen_workshop_agreement.rb +27 -0
  177. data/lib/pubid/cen_cenelec/identifiers/cenelec_harmonization_document.rb +28 -0
  178. data/lib/pubid/cen_cenelec/identifiers/consolidated_identifier.rb +61 -0
  179. data/lib/pubid/cen_cenelec/identifiers/corrigendum.rb +35 -0
  180. data/lib/pubid/cen_cenelec/identifiers/european_norm.rb +41 -0
  181. data/lib/pubid/cen_cenelec/identifiers/european_prestandard.rb +37 -0
  182. data/lib/pubid/cen_cenelec/identifiers/european_specification.rb +28 -0
  183. data/lib/pubid/cen_cenelec/identifiers/fragment.rb +22 -0
  184. data/lib/pubid/cen_cenelec/identifiers/guide.rb +27 -0
  185. data/lib/pubid/cen_cenelec/identifiers/harmonization_document.rb +27 -0
  186. data/lib/pubid/cen_cenelec/identifiers/technical_report.rb +27 -0
  187. data/lib/pubid/cen_cenelec/identifiers/technical_specification.rb +35 -0
  188. data/lib/pubid/cen_cenelec/identifiers.rb +32 -0
  189. data/lib/pubid/cen_cenelec/parser.rb +144 -0
  190. data/lib/pubid/cen_cenelec/scheme.rb +164 -0
  191. data/lib/pubid/cen_cenelec/single_identifier.rb +130 -0
  192. data/lib/pubid/cen_cenelec/supplement_identifier.rb +48 -0
  193. data/lib/pubid/cen_cenelec/urn_generator.rb +129 -0
  194. data/lib/pubid/cen_cenelec.rb +21 -0
  195. data/lib/pubid/cie/builder.rb +399 -0
  196. data/lib/pubid/cie/components/code.rb +72 -0
  197. data/lib/pubid/cie/components/language.rb +58 -0
  198. data/lib/pubid/cie/identifier.rb +18 -0
  199. data/lib/pubid/cie/identifiers/bundle.rb +20 -0
  200. data/lib/pubid/cie/identifiers/conference.rb +32 -0
  201. data/lib/pubid/cie/identifiers/corrigendum.rb +40 -0
  202. data/lib/pubid/cie/identifiers/dual_published.rb +41 -0
  203. data/lib/pubid/cie/identifiers/identical.rb +64 -0
  204. data/lib/pubid/cie/identifiers/joint_published.rb +52 -0
  205. data/lib/pubid/cie/identifiers/standard.rb +58 -0
  206. data/lib/pubid/cie/identifiers/supplement.rb +45 -0
  207. data/lib/pubid/cie/identifiers/tutorial_bundle.rb +20 -0
  208. data/lib/pubid/cie/identifiers.rb +17 -0
  209. data/lib/pubid/cie/parser.rb +347 -0
  210. data/lib/pubid/cie/scheme.rb +64 -0
  211. data/lib/pubid/cie/single_identifier.rb +30 -0
  212. data/lib/pubid/cie/supplement_identifier.rb +26 -0
  213. data/lib/pubid/cie/urn_generator.rb +123 -0
  214. data/lib/pubid/cie.rb +28 -0
  215. data/lib/pubid/components/code.rb +33 -0
  216. data/lib/pubid/components/date.rb +49 -0
  217. data/lib/pubid/components/edition.rb +32 -0
  218. data/lib/pubid/components/language.rb +37 -0
  219. data/lib/pubid/components/locality.rb +10 -0
  220. data/lib/pubid/components/publisher.rb +36 -0
  221. data/lib/pubid/components/stage.rb +54 -0
  222. data/lib/pubid/components/type.rb +58 -0
  223. data/lib/pubid/components/typed_stage.rb +55 -0
  224. data/lib/pubid/components.rb +15 -0
  225. data/lib/pubid/core/pattern_doc_generator.rb +272 -0
  226. data/lib/pubid/core/update_codes.rb +77 -0
  227. data/lib/pubid/core.rb +8 -0
  228. data/lib/pubid/csa/builder.rb +671 -0
  229. data/lib/pubid/csa/components/code.rb +9 -0
  230. data/lib/pubid/csa/components.rb +9 -0
  231. data/lib/pubid/csa/composite_identifier.rb +27 -0
  232. data/lib/pubid/csa/identifier.rb +457 -0
  233. data/lib/pubid/csa/identifiers/base.rb +133 -0
  234. data/lib/pubid/csa/identifiers/bundled.rb +125 -0
  235. data/lib/pubid/csa/identifiers/canadian_adopted.rb +82 -0
  236. data/lib/pubid/csa/identifiers/cec.rb +129 -0
  237. data/lib/pubid/csa/identifiers/combined.rb +130 -0
  238. data/lib/pubid/csa/identifiers/csa_adopted.rb +78 -0
  239. data/lib/pubid/csa/identifiers/package.rb +65 -0
  240. data/lib/pubid/csa/identifiers/series.rb +127 -0
  241. data/lib/pubid/csa/identifiers/standard.rb +10 -0
  242. data/lib/pubid/csa/identifiers.rb +17 -0
  243. data/lib/pubid/csa/parser.rb +445 -0
  244. data/lib/pubid/csa/scheme.rb +44 -0
  245. data/lib/pubid/csa/single_identifier.rb +30 -0
  246. data/lib/pubid/csa/urn_generator.rb +80 -0
  247. data/lib/pubid/csa/wrapper_identifier.rb +31 -0
  248. data/lib/pubid/csa.rb +25 -0
  249. data/lib/pubid/etsi/builder.rb +133 -0
  250. data/lib/pubid/etsi/components/code.rb +42 -0
  251. data/lib/pubid/etsi/components/version.rb +37 -0
  252. data/lib/pubid/etsi/components.rb +10 -0
  253. data/lib/pubid/etsi/identifier.rb +14 -0
  254. data/lib/pubid/etsi/identifiers/amendment.rb +15 -0
  255. data/lib/pubid/etsi/identifiers/base.rb +38 -0
  256. data/lib/pubid/etsi/identifiers/corrigendum.rb +15 -0
  257. data/lib/pubid/etsi/identifiers/etsi_standard.rb +19 -0
  258. data/lib/pubid/etsi/identifiers/supplement_identifier.rb +91 -0
  259. data/lib/pubid/etsi/identifiers.rb +14 -0
  260. data/lib/pubid/etsi/parser.rb +133 -0
  261. data/lib/pubid/etsi/scheme.rb +42 -0
  262. data/lib/pubid/etsi/urn_generator.rb +76 -0
  263. data/lib/pubid/etsi.rb +21 -0
  264. data/lib/pubid/export/auditor.rb +89 -0
  265. data/lib/pubid/export/data_class_exporter.rb +59 -0
  266. data/lib/pubid/export/exporter.rb +74 -0
  267. data/lib/pubid/export/flavor_exporter.rb +402 -0
  268. data/lib/pubid/export/ieee_exporter.rb +78 -0
  269. data/lib/pubid/export/itu_exporter.rb +66 -0
  270. data/lib/pubid/export/nist_exporter.rb +64 -0
  271. data/lib/pubid/export/registry_exporter.rb +90 -0
  272. data/lib/pubid/export/result.rb +97 -0
  273. data/lib/pubid/export/scheme_exporter.rb +70 -0
  274. data/lib/pubid/export.rb +18 -0
  275. data/lib/pubid/format_detector.rb +16 -0
  276. data/lib/pubid/format_registry.rb +42 -0
  277. data/lib/pubid/identifier.rb +235 -0
  278. data/lib/pubid/identifier_metadata.rb +148 -0
  279. data/lib/pubid/identifier_registry.rb +198 -0
  280. data/lib/pubid/idf/builder.rb +82 -0
  281. data/lib/pubid/idf/identifier.rb +69 -0
  282. data/lib/pubid/idf/identifiers/amendment.rb +27 -0
  283. data/lib/pubid/idf/identifiers/corrigendum.rb +27 -0
  284. data/lib/pubid/idf/identifiers/international_standard.rb +123 -0
  285. data/lib/pubid/idf/identifiers/reviewed_method.rb +100 -0
  286. data/lib/pubid/idf/identifiers.rb +13 -0
  287. data/lib/pubid/idf/parser.rb +143 -0
  288. data/lib/pubid/idf/scheme.rb +61 -0
  289. data/lib/pubid/idf/single_identifier.rb +19 -0
  290. data/lib/pubid/idf/supplement_identifier.rb +43 -0
  291. data/lib/pubid/idf/urn_generator.rb +84 -0
  292. data/lib/pubid/idf.rb +25 -0
  293. data/lib/pubid/iec/builder.rb +457 -0
  294. data/lib/pubid/iec/components/code.rb +59 -0
  295. data/lib/pubid/iec/components/consolidated_amendment.rb +59 -0
  296. data/lib/pubid/iec/components/publisher.rb +35 -0
  297. data/lib/pubid/iec/components/sheet.rb +32 -0
  298. data/lib/pubid/iec/components/trf_info.rb +38 -0
  299. data/lib/pubid/iec/components/vap_suffix.rb +41 -0
  300. data/lib/pubid/iec/identifier.rb +21 -0
  301. data/lib/pubid/iec/identifiers/amendment.rb +94 -0
  302. data/lib/pubid/iec/identifiers/base.rb +78 -0
  303. data/lib/pubid/iec/identifiers/component_specification.rb +39 -0
  304. data/lib/pubid/iec/identifiers/conformity_assessment.rb +39 -0
  305. data/lib/pubid/iec/identifiers/consolidated_identifier.rb +86 -0
  306. data/lib/pubid/iec/identifiers/corrigendum.rb +94 -0
  307. data/lib/pubid/iec/identifiers/fragment_identifier.rb +141 -0
  308. data/lib/pubid/iec/identifiers/guide.rb +104 -0
  309. data/lib/pubid/iec/identifiers/international_standard.rb +147 -0
  310. data/lib/pubid/iec/identifiers/interpretation_sheet.rb +104 -0
  311. data/lib/pubid/iec/identifiers/operational_document.rb +39 -0
  312. data/lib/pubid/iec/identifiers/publicly_available_specification.rb +101 -0
  313. data/lib/pubid/iec/identifiers/sheet_identifier.rb +66 -0
  314. data/lib/pubid/iec/identifiers/societal_technology_trend_report.rb +40 -0
  315. data/lib/pubid/iec/identifiers/systems_reference_document.rb +40 -0
  316. data/lib/pubid/iec/identifiers/technical_report.rb +132 -0
  317. data/lib/pubid/iec/identifiers/technical_specification.rb +132 -0
  318. data/lib/pubid/iec/identifiers/technology_report.rb +39 -0
  319. data/lib/pubid/iec/identifiers/test_report_form.rb +78 -0
  320. data/lib/pubid/iec/identifiers/vap_identifier.rb +77 -0
  321. data/lib/pubid/iec/identifiers/white_paper.rb +39 -0
  322. data/lib/pubid/iec/identifiers/working_document.rb +96 -0
  323. data/lib/pubid/iec/parser.rb +412 -0
  324. data/lib/pubid/iec/rendering_style.rb +113 -0
  325. data/lib/pubid/iec/scheme.rb +71 -0
  326. data/lib/pubid/iec/single_identifier.rb +80 -0
  327. data/lib/pubid/iec/supplement_identifier.rb +161 -0
  328. data/lib/pubid/iec/urn_generator.rb +193 -0
  329. data/lib/pubid/iec/urn_parser.rb +289 -0
  330. data/lib/pubid/iec.rb +85 -0
  331. data/lib/pubid/ieee/aiee/builder.rb +71 -0
  332. data/lib/pubid/ieee/aiee/identifier.rb +105 -0
  333. data/lib/pubid/ieee/aiee/parser.rb +130 -0
  334. data/lib/pubid/ieee/aiee.rb +11 -0
  335. data/lib/pubid/ieee/builder.rb +1237 -0
  336. data/lib/pubid/ieee/components/code.rb +102 -0
  337. data/lib/pubid/ieee/components/draft.rb +93 -0
  338. data/lib/pubid/ieee/components/relationship.rb +157 -0
  339. data/lib/pubid/ieee/components/typed_stage.rb +100 -0
  340. data/lib/pubid/ieee/identifier.rb +13 -0
  341. data/lib/pubid/ieee/identifiers/adopted_standard.rb +33 -0
  342. data/lib/pubid/ieee/identifiers/base.rb +591 -0
  343. data/lib/pubid/ieee/identifiers/conformance_identifier.rb +35 -0
  344. data/lib/pubid/ieee/identifiers/corrigendum.rb +37 -0
  345. data/lib/pubid/ieee/identifiers/csa_dual_published.rb +51 -0
  346. data/lib/pubid/ieee/identifiers/dual_identifier.rb +18 -0
  347. data/lib/pubid/ieee/identifiers/dual_published.rb +28 -0
  348. data/lib/pubid/ieee/identifiers/iec_ieee_copublished.rb +27 -0
  349. data/lib/pubid/ieee/identifiers/interpretation_identifier.rb +34 -0
  350. data/lib/pubid/ieee/identifiers/joint_development.rb +172 -0
  351. data/lib/pubid/ieee/identifiers/multi_numbered_identifier.rb +51 -0
  352. data/lib/pubid/ieee/identifiers/nesc/base.rb +56 -0
  353. data/lib/pubid/ieee/identifiers/nesc/draft.rb +28 -0
  354. data/lib/pubid/ieee/identifiers/nesc/handbook.rb +32 -0
  355. data/lib/pubid/ieee/identifiers/nesc/redline.rb +26 -0
  356. data/lib/pubid/ieee/identifiers/nesc/standard.rb +26 -0
  357. data/lib/pubid/ieee/identifiers/nesc.rb +15 -0
  358. data/lib/pubid/ieee/identifiers/parenthetical_identifier.rb +20 -0
  359. data/lib/pubid/ieee/identifiers/project_draft_identifier.rb +26 -0
  360. data/lib/pubid/ieee/identifiers/redlined_standard.rb +33 -0
  361. data/lib/pubid/ieee/identifiers/si_standard.rb +73 -0
  362. data/lib/pubid/ieee/identifiers/standard.rb +41 -0
  363. data/lib/pubid/ieee/identifiers/supplement_identifier.rb +23 -0
  364. data/lib/pubid/ieee/identifiers.rb +33 -0
  365. data/lib/pubid/ieee/ire/builder.rb +61 -0
  366. data/lib/pubid/ieee/ire/identifier.rb +58 -0
  367. data/lib/pubid/ieee/ire/parser.rb +91 -0
  368. data/lib/pubid/ieee/ire.rb +11 -0
  369. data/lib/pubid/ieee/nesc/builder.rb +101 -0
  370. data/lib/pubid/ieee/nesc/parser.rb +154 -0
  371. data/lib/pubid/ieee/nesc.rb +10 -0
  372. data/lib/pubid/ieee/parser.rb +1226 -0
  373. data/lib/pubid/ieee/scheme.rb +90 -0
  374. data/lib/pubid/ieee/typed_stages.rb +172 -0
  375. data/lib/pubid/ieee/urn_generator.rb +188 -0
  376. data/lib/pubid/ieee.rb +32 -0
  377. data/lib/pubid/ieee_debug.rb +31 -0
  378. data/lib/pubid/iho/builder.rb +37 -0
  379. data/lib/pubid/iho/identifier.rb +19 -0
  380. data/lib/pubid/iho/identifiers/base.rb +41 -0
  381. data/lib/pubid/iho/identifiers/bibliographic.rb +20 -0
  382. data/lib/pubid/iho/identifiers/circular_letter.rb +19 -0
  383. data/lib/pubid/iho/identifiers/miscellaneous.rb +20 -0
  384. data/lib/pubid/iho/identifiers/publication.rb +19 -0
  385. data/lib/pubid/iho/identifiers/standard.rb +19 -0
  386. data/lib/pubid/iho/identifiers.rb +14 -0
  387. data/lib/pubid/iho/parser.rb +68 -0
  388. data/lib/pubid/iho/scheme.rb +29 -0
  389. data/lib/pubid/iho/urn_generator.rb +29 -0
  390. data/lib/pubid/iho.rb +21 -0
  391. data/lib/pubid/iso/builder.rb +305 -0
  392. data/lib/pubid/iso/bundled_identifier.rb +85 -0
  393. data/lib/pubid/iso/combined_identifier.rb +22 -0
  394. data/lib/pubid/iso/components/code.rb +36 -0
  395. data/lib/pubid/iso/components/publisher.rb +60 -0
  396. data/lib/pubid/iso/components.rb +12 -0
  397. data/lib/pubid/iso/format_resolver.rb +45 -0
  398. data/lib/pubid/iso/identifier.rb +69 -0
  399. data/lib/pubid/iso/identifiers/addendum.rb +104 -0
  400. data/lib/pubid/iso/identifiers/amendment.rb +128 -0
  401. data/lib/pubid/iso/identifiers/base.rb +115 -0
  402. data/lib/pubid/iso/identifiers/corrigendum.rb +108 -0
  403. data/lib/pubid/iso/identifiers/data.rb +76 -0
  404. data/lib/pubid/iso/identifiers/directives.rb +59 -0
  405. data/lib/pubid/iso/identifiers/directives_supplement.rb +119 -0
  406. data/lib/pubid/iso/identifiers/extract.rb +30 -0
  407. data/lib/pubid/iso/identifiers/guide.rb +100 -0
  408. data/lib/pubid/iso/identifiers/international_standard.rb +168 -0
  409. data/lib/pubid/iso/identifiers/international_standardized_profile.rb +94 -0
  410. data/lib/pubid/iso/identifiers/international_workshop_agreement.rb +89 -0
  411. data/lib/pubid/iso/identifiers/pas.rb +93 -0
  412. data/lib/pubid/iso/identifiers/recommendation.rb +45 -0
  413. data/lib/pubid/iso/identifiers/supplement.rb +87 -0
  414. data/lib/pubid/iso/identifiers/tc_document.rb +108 -0
  415. data/lib/pubid/iso/identifiers/technical_report.rb +103 -0
  416. data/lib/pubid/iso/identifiers/technical_specification.rb +102 -0
  417. data/lib/pubid/iso/identifiers/technology_trends_assessments.rb +95 -0
  418. data/lib/pubid/iso/identifiers.rb +33 -0
  419. data/lib/pubid/iso/parser.rb +510 -0
  420. data/lib/pubid/iso/rendering_style.rb +120 -0
  421. data/lib/pubid/iso/scheme.rb +187 -0
  422. data/lib/pubid/iso/single_identifier.rb +61 -0
  423. data/lib/pubid/iso/supplement_identifier.rb +27 -0
  424. data/lib/pubid/iso/urn_generator.rb +412 -0
  425. data/lib/pubid/iso/urn_parser.rb +423 -0
  426. data/lib/pubid/iso/utilities.rb +86 -0
  427. data/lib/pubid/iso.rb +50 -0
  428. data/lib/pubid/itu/builder.rb +171 -0
  429. data/lib/pubid/itu/components/code.rb +39 -0
  430. data/lib/pubid/itu/components/sector.rb +35 -0
  431. data/lib/pubid/itu/components/series.rb +29 -0
  432. data/lib/pubid/itu/i18n.rb +9 -0
  433. data/lib/pubid/itu/i18n.yaml +30 -0
  434. data/lib/pubid/itu/identifier.rb +53 -0
  435. data/lib/pubid/itu/identifiers/amendment.rb +43 -0
  436. data/lib/pubid/itu/identifiers/annex.rb +74 -0
  437. data/lib/pubid/itu/identifiers/base.rb +154 -0
  438. data/lib/pubid/itu/identifiers/combined_identifier.rb +47 -0
  439. data/lib/pubid/itu/identifiers/corrigendum.rb +44 -0
  440. data/lib/pubid/itu/identifiers/recommendation.rb +16 -0
  441. data/lib/pubid/itu/identifiers/special_publication.rb +31 -0
  442. data/lib/pubid/itu/identifiers/supplement.rb +46 -0
  443. data/lib/pubid/itu/identifiers.rb +16 -0
  444. data/lib/pubid/itu/model.rb +111 -0
  445. data/lib/pubid/itu/parser.rb +225 -0
  446. data/lib/pubid/itu/scheme.rb +174 -0
  447. data/lib/pubid/itu/urn_generator.rb +105 -0
  448. data/lib/pubid/itu.rb +22 -0
  449. data/lib/pubid/jcgm/builder.rb +88 -0
  450. data/lib/pubid/jcgm/components/publisher.rb +20 -0
  451. data/lib/pubid/jcgm/components.rb +9 -0
  452. data/lib/pubid/jcgm/identifier.rb +11 -0
  453. data/lib/pubid/jcgm/identifiers/amendment.rb +35 -0
  454. data/lib/pubid/jcgm/identifiers/guide.rb +21 -0
  455. data/lib/pubid/jcgm/identifiers/gum_guide.rb +51 -0
  456. data/lib/pubid/jcgm/identifiers.rb +11 -0
  457. data/lib/pubid/jcgm/parser.rb +84 -0
  458. data/lib/pubid/jcgm/scheme.rb +60 -0
  459. data/lib/pubid/jcgm/single_identifier.rb +48 -0
  460. data/lib/pubid/jcgm/supplement_identifier.rb +16 -0
  461. data/lib/pubid/jcgm/urn_generator.rb +110 -0
  462. data/lib/pubid/jcgm.rb +31 -0
  463. data/lib/pubid/jis/builder.rb +124 -0
  464. data/lib/pubid/jis/components/code.rb +59 -0
  465. data/lib/pubid/jis/components.rb +9 -0
  466. data/lib/pubid/jis/identifier.rb +18 -0
  467. data/lib/pubid/jis/identifiers/amendment.rb +16 -0
  468. data/lib/pubid/jis/identifiers/base.rb +72 -0
  469. data/lib/pubid/jis/identifiers/explanation.rb +22 -0
  470. data/lib/pubid/jis/identifiers/japanese_industrial_standard.rb +16 -0
  471. data/lib/pubid/jis/identifiers/standard.rb +27 -0
  472. data/lib/pubid/jis/identifiers/technical_report.rb +31 -0
  473. data/lib/pubid/jis/identifiers/technical_specification.rb +31 -0
  474. data/lib/pubid/jis/identifiers.rb +17 -0
  475. data/lib/pubid/jis/parser.rb +109 -0
  476. data/lib/pubid/jis/scheme.rb +49 -0
  477. data/lib/pubid/jis/single_identifier.rb +37 -0
  478. data/lib/pubid/jis/supplement_identifier.rb +47 -0
  479. data/lib/pubid/jis/urn_generator.rb +25 -0
  480. data/lib/pubid/jis.rb +23 -0
  481. data/lib/pubid/lutaml/no_store_registration.rb +30 -0
  482. data/lib/pubid/nist/builder.rb +2100 -0
  483. data/lib/pubid/nist/components/code.rb +38 -0
  484. data/lib/pubid/nist/components/edition.rb +118 -0
  485. data/lib/pubid/nist/components/issue_number.rb +28 -0
  486. data/lib/pubid/nist/components/part.rb +77 -0
  487. data/lib/pubid/nist/components/publisher.rb +24 -0
  488. data/lib/pubid/nist/components/stage.rb +53 -0
  489. data/lib/pubid/nist/components/supplement.rb +121 -0
  490. data/lib/pubid/nist/components/translation.rb +42 -0
  491. data/lib/pubid/nist/components/update.rb +103 -0
  492. data/lib/pubid/nist/components/version.rb +35 -0
  493. data/lib/pubid/nist/components/volume.rb +32 -0
  494. data/lib/pubid/nist/components.rb +19 -0
  495. data/lib/pubid/nist/configuration.rb +77 -0
  496. data/lib/pubid/nist/identifiers/base.rb +499 -0
  497. data/lib/pubid/nist/identifiers/circular.rb +68 -0
  498. data/lib/pubid/nist/identifiers/circular_supplement.rb +50 -0
  499. data/lib/pubid/nist/identifiers/commercial_standard.rb +41 -0
  500. data/lib/pubid/nist/identifiers/commercial_standard_emergency.rb +56 -0
  501. data/lib/pubid/nist/identifiers/commercial_standards_monthly.rb +56 -0
  502. data/lib/pubid/nist/identifiers/crpl_report.rb +135 -0
  503. data/lib/pubid/nist/identifiers/federal_information_processing_standards.rb +94 -0
  504. data/lib/pubid/nist/identifiers/grant_contractor_report.rb +35 -0
  505. data/lib/pubid/nist/identifiers/handbook.rb +50 -0
  506. data/lib/pubid/nist/identifiers/internal_report.rb +56 -0
  507. data/lib/pubid/nist/identifiers/letter_circular.rb +45 -0
  508. data/lib/pubid/nist/identifiers/miscellaneous_publication.rb +65 -0
  509. data/lib/pubid/nist/identifiers/monograph.rb +69 -0
  510. data/lib/pubid/nist/identifiers/ncstar.rb +41 -0
  511. data/lib/pubid/nist/identifiers/nsrds.rb +41 -0
  512. data/lib/pubid/nist/identifiers/owmwp.rb +35 -0
  513. data/lib/pubid/nist/identifiers/report.rb +68 -0
  514. data/lib/pubid/nist/identifiers/special_publication.rb +36 -0
  515. data/lib/pubid/nist/identifiers/technical_note.rb +90 -0
  516. data/lib/pubid/nist/identifiers.rb +33 -0
  517. data/lib/pubid/nist/parser.rb +1084 -0
  518. data/lib/pubid/nist/scheme.rb +199 -0
  519. data/lib/pubid/nist/supplement_identifier.rb +83 -0
  520. data/lib/pubid/nist/urn_generator.rb +127 -0
  521. data/lib/pubid/nist.rb +36 -0
  522. data/lib/pubid/oiml/builder.rb +189 -0
  523. data/lib/pubid/oiml/components/code.rb +20 -0
  524. data/lib/pubid/oiml/components.rb +9 -0
  525. data/lib/pubid/oiml/identifier.rb +11 -0
  526. data/lib/pubid/oiml/identifiers/amendment.rb +13 -0
  527. data/lib/pubid/oiml/identifiers/annex.rb +62 -0
  528. data/lib/pubid/oiml/identifiers/base.rb +36 -0
  529. data/lib/pubid/oiml/identifiers/basic_publication.rb +13 -0
  530. data/lib/pubid/oiml/identifiers/document.rb +13 -0
  531. data/lib/pubid/oiml/identifiers/expert_report.rb +13 -0
  532. data/lib/pubid/oiml/identifiers/guide.rb +13 -0
  533. data/lib/pubid/oiml/identifiers/recommendation.rb +13 -0
  534. data/lib/pubid/oiml/identifiers/seminar_report.rb +13 -0
  535. data/lib/pubid/oiml/identifiers/vocabulary.rb +13 -0
  536. data/lib/pubid/oiml/identifiers.rb +18 -0
  537. data/lib/pubid/oiml/parser.rb +173 -0
  538. data/lib/pubid/oiml/scheme.rb +46 -0
  539. data/lib/pubid/oiml/single_identifier.rb +90 -0
  540. data/lib/pubid/oiml/supplement_identifier.rb +43 -0
  541. data/lib/pubid/oiml/urn_generator.rb +64 -0
  542. data/lib/pubid/oiml.rb +26 -0
  543. data/lib/pubid/parser/common_parse_methods.rb +13 -0
  544. data/lib/pubid/parser/common_parse_rules.rb +56 -0
  545. data/lib/pubid/parser.rb +8 -0
  546. data/lib/pubid/parsers/base.rb +11 -0
  547. data/lib/pubid/parsers/mr_string.rb +93 -0
  548. data/lib/pubid/plateau/builder.rb +50 -0
  549. data/lib/pubid/plateau/identifiers/annex.rb +16 -0
  550. data/lib/pubid/plateau/identifiers/base.rb +51 -0
  551. data/lib/pubid/plateau/identifiers/handbook.rb +34 -0
  552. data/lib/pubid/plateau/identifiers/technical_report.rb +20 -0
  553. data/lib/pubid/plateau/identifiers.rb +12 -0
  554. data/lib/pubid/plateau/parser.rb +63 -0
  555. data/lib/pubid/plateau/scheme.rb +45 -0
  556. data/lib/pubid/plateau/supplement_identifier.rb +72 -0
  557. data/lib/pubid/plateau/urn_generator.rb +29 -0
  558. data/lib/pubid/plateau.rb +25 -0
  559. data/lib/pubid/renderers/base.rb +19 -0
  560. data/lib/pubid/renderers/directives_renderer.rb +62 -0
  561. data/lib/pubid/renderers/guide_renderer.rb +20 -0
  562. data/lib/pubid/renderers/human_readable.rb +58 -0
  563. data/lib/pubid/renderers/iwa_renderer.rb +16 -0
  564. data/lib/pubid/renderers/mr_string.rb +16 -0
  565. data/lib/pubid/renderers/supplement_renderer.rb +33 -0
  566. data/lib/pubid/renderers/urn.rb +11 -0
  567. data/lib/pubid/renderers.rb +14 -0
  568. data/lib/pubid/rendering/base.rb +73 -0
  569. data/lib/pubid/rendering/common.rb +211 -0
  570. data/lib/pubid/rendering/context.rb +156 -0
  571. data/lib/pubid/rendering/date.rb +27 -0
  572. data/lib/pubid/rendering/format.rb +25 -0
  573. data/lib/pubid/rendering/language.rb +21 -0
  574. data/lib/pubid/rendering/numbering.rb +24 -0
  575. data/lib/pubid/rendering/publisher.rb +25 -0
  576. data/lib/pubid/rendering/stage.rb +38 -0
  577. data/lib/pubid/rendering/supplement.rb +46 -0
  578. data/lib/pubid/rendering.rb +16 -0
  579. data/lib/pubid/sae/builder.rb +32 -0
  580. data/lib/pubid/sae/components/code.rb +9 -0
  581. data/lib/pubid/sae/components/date.rb +19 -0
  582. data/lib/pubid/sae/components/type.rb +19 -0
  583. data/lib/pubid/sae/components.rb +11 -0
  584. data/lib/pubid/sae/identifier.rb +14 -0
  585. data/lib/pubid/sae/identifiers/base.rb +42 -0
  586. data/lib/pubid/sae/identifiers.rb +9 -0
  587. data/lib/pubid/sae/parser.rb +55 -0
  588. data/lib/pubid/sae/scheme.rb +47 -0
  589. data/lib/pubid/sae/urn_generator.rb +38 -0
  590. data/lib/pubid/sae.rb +19 -0
  591. data/lib/pubid/scheme.rb +207 -0
  592. data/lib/pubid/urn_generator/base.rb +110 -0
  593. data/lib/pubid/utils/string_normalizer.rb +196 -0
  594. data/lib/pubid/utils.rb +7 -0
  595. data/lib/pubid/version.rb +3 -1
  596. data/lib/pubid.rb +137 -13
  597. data/lib/tasks/docs.rake +37 -0
  598. data/lib/tasks/export.rake +38 -0
  599. data/lib/tasks/website-data.json +7488 -0
  600. metadata +613 -171
  601. data/lib/pubid/registry.rb +0 -30
@@ -0,0 +1,104 @@
1
+ require_relative "base"
2
+ # frozen_string_literal: true
3
+ require_relative "../../components/typed_stage"
4
+
5
+ module Pubid
6
+ module Iec
7
+ module Identifiers
8
+ # Guide identifier class
9
+ # Single Responsibility: Represents IEC Guide documents
10
+ class Guide < Base
11
+ # Convert v1 hash-based TYPED_STAGES to v2 object-based
12
+ # From gems/pubid-iec/lib/pubid/iec/identifier/guide.rb
13
+ TYPED_STAGES = [
14
+ Pubid::Components::TypedStage.new(
15
+ code: :pwi_guide,
16
+ stage_code: :pwi,
17
+ type_code: :guide,
18
+ abbr: ["PWI Guide"],
19
+ name: "Preliminary Work Item Guide",
20
+ harmonized_stages: %w[00.00 00.20 00.60 00.98 00.99],
21
+ ),
22
+ Pubid::Components::TypedStage.new(
23
+ code: :np_guide,
24
+ stage_code: :np,
25
+ type_code: :guide,
26
+ abbr: ["NP Guide"],
27
+ name: "New Proposal Guide",
28
+ harmonized_stages: %w[10.00 10.20 10.60 10.92 10.98],
29
+ ),
30
+ Pubid::Components::TypedStage.new(
31
+ code: :anw_guide,
32
+ stage_code: :anw,
33
+ type_code: :guide,
34
+ abbr: ["ANW Guide"],
35
+ name: "Approved New Work Item Guide",
36
+ harmonized_stages: %w[10.99 20.00],
37
+ ),
38
+ Pubid::Components::TypedStage.new(
39
+ code: :wd_guide,
40
+ stage_code: :wd,
41
+ type_code: :guide,
42
+ abbr: ["WD Guide"],
43
+ name: "Working Draft Guide",
44
+ harmonized_stages: %w[20.20 20.60 20.98 20.99],
45
+ ),
46
+ Pubid::Components::TypedStage.new(
47
+ code: :cd_guide,
48
+ stage_code: :cd,
49
+ type_code: :guide,
50
+ abbr: ["CD Guide"],
51
+ name: "Committee Draft Guide",
52
+ harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
53
+ ),
54
+ Pubid::Components::TypedStage.new(
55
+ code: :dguide,
56
+ stage_code: :draft,
57
+ type_code: :guide,
58
+ abbr: ["DGuide"],
59
+ name: "Draft Guide",
60
+ harmonized_stages: %w[40.00 40.20 40.60 40.92 40.98 40.99],
61
+ ),
62
+ Pubid::Components::TypedStage.new(
63
+ code: :fdguide,
64
+ stage_code: :final_draft,
65
+ type_code: :guide,
66
+ abbr: ["FDGuide", "PRF Guide"],
67
+ name: "Final Draft Guide",
68
+ harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
69
+ ),
70
+ Pubid::Components::TypedStage.new(
71
+ code: :guide,
72
+ stage_code: :published,
73
+ type_code: :guide,
74
+ abbr: ["GUIDE", "Guide"],
75
+ name: "Guide",
76
+ harmonized_stages: %w[60.00 60.60 90.20 90.60 90.92 90.93 90.99
77
+ 95.20 95.60 95.92 95.99],
78
+ ),
79
+ ].freeze
80
+
81
+ def self.type
82
+ { key: :guide, title: "Guide", short: %w[Guide GUIDE] }
83
+ end
84
+
85
+ # Override publisher_portion to handle Guide formatting
86
+ # If copublishers exist, use parent implementation
87
+ def publisher_portion
88
+ # If copublishers, delegate to parent (SingleIdentifier) which handles them
89
+ return super if copublishers&.any?
90
+
91
+ # No copublishers: simple Guide formatting
92
+ result = publisher.to_s
93
+
94
+ if typed_stage
95
+ abbr = typed_stage.abbreviation
96
+ result += " #{abbr}" unless abbr.empty?
97
+ end
98
+
99
+ result
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,147 @@
1
+ require_relative "base"
2
+ # frozen_string_literal: true
3
+ require_relative "../../components/typed_stage"
4
+
5
+ module Pubid
6
+ module Iec
7
+ module Identifiers
8
+ # International Standard identifier class
9
+ # Single Responsibility: Represents IEC International Standard documents
10
+ class InternationalStandard < Base
11
+ # International Standards need a TypedStage with empty abbr for published standards
12
+ # From gems/pubid-iec/lib/pubid/iec/identifier/international_standard.rb
13
+ TYPED_STAGES = [
14
+ Pubid::Components::TypedStage.new(
15
+ code: :pwi,
16
+ stage_code: :pwi,
17
+ type_code: :is,
18
+ abbr: ["PWI"],
19
+ name: "Preliminary Work Item",
20
+ harmonized_stages: %w[00.00 00.20 00.60 00.98 00.99],
21
+ ),
22
+ Pubid::Components::TypedStage.new(
23
+ code: :np,
24
+ stage_code: :np,
25
+ type_code: :is,
26
+ abbr: ["NP"],
27
+ name: "New Proposal",
28
+ harmonized_stages: %w[10.00 10.20 10.60 10.92 10.98],
29
+ ),
30
+ Pubid::Components::TypedStage.new(
31
+ code: :anw,
32
+ stage_code: :anw,
33
+ type_code: :is,
34
+ abbr: ["ANW"],
35
+ name: "Approved New Work Item",
36
+ harmonized_stages: %w[10.99 20.00],
37
+ ),
38
+ Pubid::Components::TypedStage.new(
39
+ code: :wd,
40
+ stage_code: :wd,
41
+ type_code: :is,
42
+ abbr: ["WD"],
43
+ name: "Working Draft",
44
+ harmonized_stages: %w[20.20 20.60 20.98 20.99],
45
+ ),
46
+ Pubid::Components::TypedStage.new(
47
+ code: :cd,
48
+ stage_code: :cd,
49
+ type_code: :is,
50
+ abbr: ["CD"],
51
+ name: "Committee Draft",
52
+ harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
53
+ ),
54
+ Pubid::Components::TypedStage.new(
55
+ code: :cdv,
56
+ stage_code: :cdv,
57
+ type_code: :is,
58
+ abbr: ["CDV"],
59
+ name: "Committee Draft for Vote",
60
+ harmonized_stages: %w[40.00 40.20 40.60 40.92 40.98 40.99],
61
+ ),
62
+ Pubid::Components::TypedStage.new(
63
+ code: :fdis,
64
+ stage_code: :fdis,
65
+ type_code: :is,
66
+ abbr: ["FDIS", "PRF"],
67
+ name: "Final Draft International Standard",
68
+ harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
69
+ ),
70
+ Pubid::Components::TypedStage.new(
71
+ code: :is,
72
+ stage_code: :published,
73
+ type_code: :is,
74
+ abbr: [""],
75
+ name: "International Standard",
76
+ harmonized_stages: %w[60.00 60.60 90.20 90.60 90.92 90.93 90.99
77
+ 95.20 95.60 95.92 95.99],
78
+ ),
79
+ ].freeze
80
+
81
+ # Project stages specific to International Standards
82
+ # These are IEC-specific workflow stages
83
+ PROJECT_STAGES = {
84
+ afdis: {
85
+ abbr: "AFDIS",
86
+ name: "Approved for FDIS",
87
+ harmonized_stages: %w[40.99],
88
+ },
89
+ ccdv: {
90
+ abbr: "CCDV",
91
+ name: "Draft circulated as CDV",
92
+ harmonized_stages: %w[40.20],
93
+ },
94
+ cdvm: {
95
+ abbr: "CDVM",
96
+ name: "Rejected CDV to be discussed at a meeting",
97
+ harmonized_stages: %w[40.91],
98
+ },
99
+ cfdis: {
100
+ abbr: "CFDIS",
101
+ name: "Draft circulated as FDIS",
102
+ harmonized_stages: %w[50.20],
103
+ },
104
+ decfdis: {
105
+ abbr: "DECFDIS",
106
+ name: "FDIS at editing check",
107
+ harmonized_stages: %w[50.00],
108
+ },
109
+ ncdv: {
110
+ abbr: "NCDV",
111
+ name: "CDV rejected",
112
+ harmonized_stages: %w[40.91],
113
+ },
114
+ nfdis: {
115
+ abbr: "NFDIS",
116
+ name: "FDIS rejected",
117
+ harmonized_stages: %w[50.92],
118
+ },
119
+ prvc: {
120
+ abbr: "PRVC",
121
+ name: "Preparation of RVC",
122
+ harmonized_stages: %w[40.60],
123
+ },
124
+ prvd: {
125
+ abbr: "PRVD",
126
+ name: "Preparation of RVD",
127
+ harmonized_stages: %w[50.60],
128
+ },
129
+ rfdis: {
130
+ abbr: "RFDIS",
131
+ name: "FDIS received and registered",
132
+ harmonized_stages: %w[50.00],
133
+ },
134
+ tcdv: {
135
+ abbr: "TCDV",
136
+ name: "Translation of CDV",
137
+ harmonized_stages: %w[40.00],
138
+ },
139
+ }.freeze
140
+
141
+ def self.type
142
+ { key: :is, title: "International Standard", short: nil }
143
+ end
144
+ end
145
+ end
146
+ end
147
+ end
@@ -0,0 +1,104 @@
1
+ require_relative "../supplement_identifier"
2
+ # frozen_string_literal: true
3
+ require_relative "../../components/typed_stage"
4
+
5
+ module Pubid
6
+ module Iec
7
+ module Identifiers
8
+ # Interpretation Sheet identifier class
9
+ # Single Responsibility: Represents IEC ISH documents
10
+ # Dual role: Can be primary document or supplement
11
+ class InterpretationSheet < SupplementIdentifier
12
+ # Convert v1 hash-based TYPED_STAGES to v2 object-based
13
+ # From gems/pubid-iec/lib/pubid/iec/identifier/interpretation_sheet.rb
14
+ TYPED_STAGES = [
15
+ Pubid::Components::TypedStage.new(
16
+ code: :pwi_ish,
17
+ stage_code: :pwi,
18
+ type_code: :ish,
19
+ abbr: ["PWI ISH"],
20
+ name: "Preliminary Work Item Interpretation Sheet",
21
+ harmonized_stages: %w[00.00 00.20 00.60 00.98 00.99],
22
+ ),
23
+ Pubid::Components::TypedStage.new(
24
+ code: :np_ish,
25
+ stage_code: :np,
26
+ type_code: :ish,
27
+ abbr: ["NP ISH"],
28
+ name: "New Proposal Interpretation Sheet",
29
+ harmonized_stages: %w[10.00 10.20 10.60 10.92 10.98],
30
+ ),
31
+ Pubid::Components::TypedStage.new(
32
+ code: :anw_ish,
33
+ stage_code: :anw,
34
+ type_code: :ish,
35
+ abbr: ["ANW ISH"],
36
+ name: "Approved New Work Item Interpretation Sheet",
37
+ harmonized_stages: %w[10.99 20.00],
38
+ ),
39
+ Pubid::Components::TypedStage.new(
40
+ code: :wd_ish,
41
+ stage_code: :wd,
42
+ type_code: :ish,
43
+ abbr: ["WD ISH"],
44
+ name: "Working Draft Interpretation Sheet",
45
+ harmonized_stages: %w[20.20 20.60 20.98 20.99],
46
+ ),
47
+ Pubid::Components::TypedStage.new(
48
+ code: :cdish,
49
+ stage_code: :cd,
50
+ type_code: :ish,
51
+ abbr: ["CDISH"],
52
+ name: "Committee Draft Interpretation Sheet",
53
+ harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
54
+ ),
55
+ Pubid::Components::TypedStage.new(
56
+ code: :dish,
57
+ stage_code: :draft,
58
+ type_code: :ish,
59
+ abbr: ["DISH"],
60
+ name: "Draft Interpretation Sheet",
61
+ harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
62
+ ),
63
+ Pubid::Components::TypedStage.new(
64
+ code: :ish,
65
+ stage_code: :published,
66
+ type_code: :ish,
67
+ abbr: ["ISH"],
68
+ name: "Interpretation Sheet",
69
+ harmonized_stages: %w[60.00 60.60 90.20 90.60 90.92 90.93 90.99
70
+ 95.20 95.60 95.92 95.99],
71
+ ),
72
+ ].freeze
73
+
74
+ # Project stages specific to Interpretation Sheets
75
+ PROJECT_STAGES = {
76
+ decdish: {
77
+ abbr: "DECDISH",
78
+ name: "DISH at editing check",
79
+ harmonized_stages: %w[50.00],
80
+ },
81
+ prvdish: {
82
+ abbr: "PRVDISH",
83
+ name: "Preparation of RVDISH",
84
+ harmonized_stages: %w[50.60],
85
+ },
86
+ rdish: {
87
+ abbr: "RDISH",
88
+ name: "DISH received and registered",
89
+ harmonized_stages: %w[50.00],
90
+ },
91
+ tdish: {
92
+ abbr: "TDISH",
93
+ name: "Translation of DISH",
94
+ harmonized_stages: %w[50.00],
95
+ },
96
+ }.freeze
97
+
98
+ def self.type
99
+ { key: :ish, title: "Interpretation Sheet", short: "ISH" }
100
+ end
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,39 @@
1
+ require_relative "base"
2
+ require_relative "../../components/typed_stage"
3
+
4
+ module Pubid
5
+ module Iec
6
+ module Identifiers
7
+ # Operational Document identifier class
8
+ # Single Responsibility: Represents IEC OD documents
9
+ class OperationalDocument < Base
10
+ # Operational Documents have OD as type abbreviation
11
+ TYPED_STAGES = [
12
+ Pubid::Components::TypedStage.new(
13
+ code: :od,
14
+ stage_code: :published,
15
+ type_code: :od,
16
+ abbr: ["OD"],
17
+ name: "Operational Document",
18
+ harmonized_stages: %w[60.00 60.60],
19
+ ),
20
+ ].freeze
21
+
22
+ def self.type
23
+ { key: :od, title: "Operational Document", short: "OD" }
24
+ end
25
+
26
+ # Override publisher_portion to add OD
27
+ def publisher_portion
28
+ result = publisher.to_s
29
+
30
+ if typed_stage && typed_stage.abbreviation == "OD"
31
+ result += " OD"
32
+ end
33
+
34
+ result
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,101 @@
1
+ require_relative "base"
2
+ # frozen_string_literal: true
3
+ require_relative "../../components/typed_stage"
4
+
5
+ module Pubid
6
+ module Iec
7
+ module Identifiers
8
+ # Publicly Available Specification identifier class
9
+ # Single Responsibility: Represents IEC PAS documents
10
+ class PubliclyAvailableSpecification < Base
11
+ # Convert v1 hash-based TYPED_STAGES to v2 object-based
12
+ # From gems/pubid-iec/lib/pubid/iec/identifier/publicly_available_specification.rb
13
+ TYPED_STAGES = [
14
+ Pubid::Components::TypedStage.new(
15
+ code: :pwi_pas,
16
+ stage_code: :pwi,
17
+ type_code: :pas,
18
+ abbr: ["PWI PAS"],
19
+ name: "Preliminary Work Item Publicly Available Specification",
20
+ harmonized_stages: %w[00.00 00.20 00.60 00.98 00.99],
21
+ ),
22
+ Pubid::Components::TypedStage.new(
23
+ code: :np_pas,
24
+ stage_code: :np,
25
+ type_code: :pas,
26
+ abbr: ["NP PAS"],
27
+ name: "New Proposal Publicly Available Specification",
28
+ harmonized_stages: %w[10.00 10.20 10.60 10.92 10.98],
29
+ ),
30
+ Pubid::Components::TypedStage.new(
31
+ code: :anw_pas,
32
+ stage_code: :anw,
33
+ type_code: :pas,
34
+ abbr: ["ANW PAS"],
35
+ name: "Approved New Work Item Publicly Available Specification",
36
+ harmonized_stages: %w[10.99 20.00],
37
+ ),
38
+ Pubid::Components::TypedStage.new(
39
+ code: :wd_pas,
40
+ stage_code: :wd,
41
+ type_code: :pas,
42
+ abbr: ["WD PAS"],
43
+ name: "Working Draft Publicly Available Specification",
44
+ harmonized_stages: %w[20.20 20.60 20.98 20.99],
45
+ ),
46
+ Pubid::Components::TypedStage.new(
47
+ code: :cdpas,
48
+ stage_code: :cd,
49
+ type_code: :pas,
50
+ abbr: ["CDPAS"],
51
+ name: "Committee Draft Publicly Available Specification",
52
+ harmonized_stages: %w[30.00 30.20 30.60 30.92 30.98 30.99],
53
+ ),
54
+ Pubid::Components::TypedStage.new(
55
+ code: :dpas,
56
+ stage_code: :draft,
57
+ type_code: :pas,
58
+ abbr: ["DPAS"],
59
+ name: "Draft Publicly Available Specification",
60
+ harmonized_stages: %w[50.00 50.20 50.60 50.92 50.98 50.99],
61
+ ),
62
+ Pubid::Components::TypedStage.new(
63
+ code: :pas,
64
+ stage_code: :published,
65
+ type_code: :pas,
66
+ abbr: ["PAS"],
67
+ name: "Publicly Available Specification",
68
+ harmonized_stages: %w[60.00 60.60 90.20 90.60 90.92 90.93 90.99
69
+ 95.20 95.60 95.92 95.99],
70
+ ),
71
+ ].freeze
72
+
73
+ # Project stages specific to PAS
74
+ PROJECT_STAGES = {
75
+ PRVDPAS: {
76
+ abbr: "PRVDPAS",
77
+ name: "Preparation of RVDPAS",
78
+ harmonized_stages: %w[50.60],
79
+ },
80
+ }.freeze
81
+
82
+ def self.type
83
+ { key: :pas, title: "Publicly Available Specification", short: "PAS" }
84
+ end
85
+
86
+ # Override publisher_portion to add PAS or DPAS stage
87
+ def publisher_portion
88
+ result = publisher.to_s
89
+
90
+ if typed_stage
91
+ abbr = typed_stage.abbreviation
92
+ # PAS uses space for all stages
93
+ result += " #{abbr}" unless abbr.empty?
94
+ end
95
+
96
+ result
97
+ end
98
+ end
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,66 @@
1
+ require_relative "../identifier"
2
+ # frozen_string_literal: true
3
+
4
+ module Pubid
5
+ module Iec
6
+ module Identifiers
7
+ # Sheet Identifier
8
+ # Single Responsibility: Wraps another identifier with sheet number and year
9
+ # Example: "IEC 60695-2-1/1:1994" = Sheet 1 of IEC 60695-2-1 from 1994
10
+ class SheetIdentifier < Identifier
11
+ attribute :base_identifier, Identifier, polymorphic: true
12
+ attribute :sheet_number, :string
13
+ attribute :year, :string, default: -> {}
14
+
15
+ def to_s(lang: :en, lang_single: false, with_edition: false)
16
+ parts = []
17
+
18
+ # Render base identifier
19
+ parts << base_identifier.to_s(lang: lang, lang_single: lang_single,
20
+ with_edition: with_edition)
21
+
22
+ # Add sheet notation /N
23
+ parts << "/#{sheet_number}"
24
+
25
+ # Add year if present
26
+ parts << ":#{year}" if year
27
+
28
+ parts.join
29
+ end
30
+
31
+ # Delegate common attributes to base_identifier
32
+ def publisher
33
+ base_identifier&.publisher
34
+ end
35
+
36
+ def copublishers
37
+ base_identifier&.copublishers
38
+ end
39
+
40
+ def code
41
+ base_identifier&.code
42
+ end
43
+
44
+ def number
45
+ base_identifier&.number
46
+ end
47
+
48
+ def date
49
+ base_identifier&.date
50
+ end
51
+
52
+ def type
53
+ :sheet
54
+ end
55
+
56
+ def stage
57
+ base_identifier&.stage
58
+ end
59
+
60
+ def typed_stage
61
+ base_identifier&.typed_stage
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,40 @@
1
+ require_relative "base"
2
+ require_relative "../../components/typed_stage"
3
+
4
+ module Pubid
5
+ module Iec
6
+ module Identifiers
7
+ # Societal Technology Trend Report identifier class
8
+ # Single Responsibility: Represents IEC STTR documents
9
+ class SocietalTechnologyTrendReport < Base
10
+ # Societal Technology Trend Reports have full phrase as type abbreviation
11
+ TYPED_STAGES = [
12
+ Pubid::Components::TypedStage.new(
13
+ code: :sttr,
14
+ stage_code: :published,
15
+ type_code: :sttr,
16
+ abbr: ["Trend Report"],
17
+ name: "Societal and Technology Trend Report",
18
+ harmonized_stages: %w[60.00 60.60],
19
+ ),
20
+ ].freeze
21
+
22
+ def self.type
23
+ { key: :sttr, title: "Societal and Technology Trend Report",
24
+ short: "Trend Report" }
25
+ end
26
+
27
+ # Override publisher_portion to add Trend Report
28
+ def publisher_portion
29
+ result = publisher.to_s
30
+
31
+ if typed_stage && typed_stage.abbreviation == "Trend Report"
32
+ result += " Trend Report"
33
+ end
34
+
35
+ result
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,40 @@
1
+ require_relative "base"
2
+ # frozen_string_literal: true
3
+ require_relative "../../components/typed_stage"
4
+
5
+ module Pubid
6
+ module Iec
7
+ module Identifiers
8
+ # Systems Reference Document identifier class
9
+ # Single Responsibility: Represents IEC SRD documents
10
+ class SystemsReferenceDocument < Base
11
+ # Systems Reference Documents have SRD as type abbreviation
12
+ TYPED_STAGES = [
13
+ Pubid::Components::TypedStage.new(
14
+ code: :srd,
15
+ stage_code: :published,
16
+ type_code: :srd,
17
+ abbr: ["SRD"],
18
+ name: "Systems Reference Document",
19
+ harmonized_stages: %w[60.00 60.60],
20
+ ),
21
+ ].freeze
22
+
23
+ def self.type
24
+ { key: :srd, title: "Systems Reference Document", short: "SRD" }
25
+ end
26
+
27
+ # Override publisher_portion to add SRD
28
+ def publisher_portion
29
+ result = publisher.to_s
30
+
31
+ if typed_stage && typed_stage.abbreviation == "SRD"
32
+ result += " SRD"
33
+ end
34
+
35
+ result
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end