dcc 0.2.0

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 (336) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +16 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +16 -0
  5. data/.rubocop_todo.yml +10 -0
  6. data/CHANGELOG.adoc +54 -0
  7. data/CONTRIBUTING.adoc +64 -0
  8. data/Gemfile +25 -0
  9. data/LICENSE +21 -0
  10. data/README.adoc +69 -0
  11. data/Rakefile +13 -0
  12. data/dcc.gemspec +41 -0
  13. data/docs/cli-reference.adoc +67 -0
  14. data/docs/getting-started.adoc +117 -0
  15. data/docs/schema-versions.adoc +65 -0
  16. data/examples/build_minimal_dcc.rb +23 -0
  17. data/examples/convert_all_formats.rb +19 -0
  18. data/examples/parse_and_inspect.rb +19 -0
  19. data/examples/quantity_math_demo.rb +32 -0
  20. data/examples/validate_full.rb +27 -0
  21. data/exe/dcc +7 -0
  22. data/lib/dcc/base/administrative_data.rb +43 -0
  23. data/lib/dcc/base/byte_data.rb +36 -0
  24. data/lib/dcc/base/calibration_laboratory.rb +29 -0
  25. data/lib/dcc/base/comment.rb +23 -0
  26. data/lib/dcc/base/condition.rb +34 -0
  27. data/lib/dcc/base/contact.rb +38 -0
  28. data/lib/dcc/base/contact_not_strict.rb +38 -0
  29. data/lib/dcc/base/core_data.rb +44 -0
  30. data/lib/dcc/base/data.rb +42 -0
  31. data/lib/dcc/base/digital_calibration_certificate.rb +32 -0
  32. data/lib/dcc/base/equipment_class.rb +24 -0
  33. data/lib/dcc/base/formula.rb +33 -0
  34. data/lib/dcc/base/hash_type.rb +34 -0
  35. data/lib/dcc/base/identification.rb +27 -0
  36. data/lib/dcc/base/identifications.rb +27 -0
  37. data/lib/dcc/base/influence_condition.rb +16 -0
  38. data/lib/dcc/base/influence_condition_list.rb +40 -0
  39. data/lib/dcc/base/item.rb +38 -0
  40. data/lib/dcc/base/item_list.rb +38 -0
  41. data/lib/dcc/base/list.rb +44 -0
  42. data/lib/dcc/base/location.rb +36 -0
  43. data/lib/dcc/base/measurement_meta_data.rb +15 -0
  44. data/lib/dcc/base/measurement_meta_data_list.rb +27 -0
  45. data/lib/dcc/base/measurement_result.rb +41 -0
  46. data/lib/dcc/base/measurement_result_list.rb +28 -0
  47. data/lib/dcc/base/measuring_equipment.rb +41 -0
  48. data/lib/dcc/base/measuring_equipment_list.rb +38 -0
  49. data/lib/dcc/base/quantity.rb +61 -0
  50. data/lib/dcc/base/ref_type_definition.rb +36 -0
  51. data/lib/dcc/base/ref_type_definition_list.rb +21 -0
  52. data/lib/dcc/base/resp_person.rb +38 -0
  53. data/lib/dcc/base/resp_person_list.rb +27 -0
  54. data/lib/dcc/base/result.rb +31 -0
  55. data/lib/dcc/base/result_list.rb +27 -0
  56. data/lib/dcc/base/rich_content.rb +34 -0
  57. data/lib/dcc/base/software.rb +35 -0
  58. data/lib/dcc/base/software_list.rb +27 -0
  59. data/lib/dcc/base/statement.rb +50 -0
  60. data/lib/dcc/base/statement_list.rb +27 -0
  61. data/lib/dcc/base/string_with_lang.rb +24 -0
  62. data/lib/dcc/base/text.rb +33 -0
  63. data/lib/dcc/base/used_method.rb +31 -0
  64. data/lib/dcc/base/used_method_list.rb +27 -0
  65. data/lib/dcc/base/xml_blob.rb +20 -0
  66. data/lib/dcc/base.rb +58 -0
  67. data/lib/dcc/builder/dsl.rb +10 -0
  68. data/lib/dcc/builder/session.rb +170 -0
  69. data/lib/dcc/builder.rb +34 -0
  70. data/lib/dcc/cli/cli.rb +149 -0
  71. data/lib/dcc/cli/formatters.rb +77 -0
  72. data/lib/dcc/cli.rb +7 -0
  73. data/lib/dcc/common_elements.rb +20 -0
  74. data/lib/dcc/context_configuration.rb +167 -0
  75. data/lib/dcc/context_options.rb +47 -0
  76. data/lib/dcc/convert/csv.rb +129 -0
  77. data/lib/dcc/convert/html.rb +127 -0
  78. data/lib/dcc/convert/json.rb +62 -0
  79. data/lib/dcc/convert/result.rb +51 -0
  80. data/lib/dcc/convert/yaml.rb +21 -0
  81. data/lib/dcc/convert.rb +14 -0
  82. data/lib/dcc/diff/change.rb +21 -0
  83. data/lib/dcc/diff/result.rb +58 -0
  84. data/lib/dcc/diff.rb +83 -0
  85. data/lib/dcc/error.rb +54 -0
  86. data/lib/dcc/extract/file.rb +143 -0
  87. data/lib/dcc/extract/ring.rb +28 -0
  88. data/lib/dcc/extract.rb +9 -0
  89. data/lib/dcc/i18n/text_lookup.rb +67 -0
  90. data/lib/dcc/i18n.rb +12 -0
  91. data/lib/dcc/inspect/report.rb +139 -0
  92. data/lib/dcc/inspect.rb +9 -0
  93. data/lib/dcc/migrate.rb +41 -0
  94. data/lib/dcc/namespace/dcc.rb +30 -0
  95. data/lib/dcc/namespace/dsig.rb +15 -0
  96. data/lib/dcc/namespace/math_ml.rb +14 -0
  97. data/lib/dcc/namespace/qudt.rb +15 -0
  98. data/lib/dcc/namespace/si.rb +26 -0
  99. data/lib/dcc/namespace.rb +18 -0
  100. data/lib/dcc/plugin/registry.rb +45 -0
  101. data/lib/dcc/plugin.rb +42 -0
  102. data/lib/dcc/quantity_format/formatter.rb +90 -0
  103. data/lib/dcc/quantity_format.rb +10 -0
  104. data/lib/dcc/quantity_math/quantity.rb +46 -0
  105. data/lib/dcc/quantity_math/real.rb +116 -0
  106. data/lib/dcc/quantity_math.rb +14 -0
  107. data/lib/dcc/schema/resources/dcc/dsi/v1.0.1.xsd +415 -0
  108. data/lib/dcc/schema/resources/dcc/dsi/v1.3.0.xsd +814 -0
  109. data/lib/dcc/schema/resources/dcc/dsi/v1.3.1.xsd +814 -0
  110. data/lib/dcc/schema/resources/dcc/dsi/v2.0.0.xsd +869 -0
  111. data/lib/dcc/schema/resources/dcc/dsi/v2.1.0.xsd +1031 -0
  112. data/lib/dcc/schema/resources/dcc/dsi/v2.2.1.xsd +1574 -0
  113. data/lib/dcc/schema/resources/dcc/qudt/v2.2.1.xsd +44 -0
  114. data/lib/dcc/schema/resources/dcc/v2.1.0/dcc.xsd +650 -0
  115. data/lib/dcc/schema/resources/dcc/v2.1.1/dcc.xsd +669 -0
  116. data/lib/dcc/schema/resources/dcc/v2.2.0/dcc.xsd +730 -0
  117. data/lib/dcc/schema/resources/dcc/v2.3.0/dcc.xsd +708 -0
  118. data/lib/dcc/schema/resources/dcc/v2.4.0/dcc.xsd +725 -0
  119. data/lib/dcc/schema/resources/dcc/v3.0.0/dcc.xsd +749 -0
  120. data/lib/dcc/schema/resources/dcc/v3.1.0/dcc.xsd +843 -0
  121. data/lib/dcc/schema/resources/dcc/v3.1.1/dcc.xsd +843 -0
  122. data/lib/dcc/schema/resources/dcc/v3.1.2/dcc.xsd +844 -0
  123. data/lib/dcc/schema/resources/dcc/v3.2.0/dcc.xsd +940 -0
  124. data/lib/dcc/schema/resources/dcc/v3.2.1/dcc.xsd +963 -0
  125. data/lib/dcc/schema/resources/dcc/v3.3.0/dcc.xsd +1008 -0
  126. data/lib/dcc/schema/resources/dcc/xmldsig-core-schema.xsd +312 -0
  127. data/lib/dcc/schema/resources/dsi/qudt/v2.2.1.xsd +44 -0
  128. data/lib/dcc/schema/resources/dsi/v1.0.1/SI_Format.xsd +415 -0
  129. data/lib/dcc/schema/resources/dsi/v1.3.0/SI_Format.xsd +814 -0
  130. data/lib/dcc/schema/resources/dsi/v1.3.1/SI_Format.xsd +814 -0
  131. data/lib/dcc/schema/resources/dsi/v2.0.0/SI_Format.xsd +869 -0
  132. data/lib/dcc/schema/resources/dsi/v2.1.0/SI_Format.xsd +1031 -0
  133. data/lib/dcc/schema/resources/dsi/v2.2.1/SI_Format.xsd +1574 -0
  134. data/lib/dcc/schema/resources/qudt/qudt.xsd +44 -0
  135. data/lib/dcc/schema/resources/schematron/dcc.sch +523 -0
  136. data/lib/dcc/schema/resources/schematron/dcc.svrl +2302 -0
  137. data/lib/dcc/schema/resources/xmldsig/xmldsig-core-schema.xsd +312 -0
  138. data/lib/dcc/schema/version.rb +94 -0
  139. data/lib/dcc/schema.rb +35 -0
  140. data/lib/dcc/server/app.rb +133 -0
  141. data/lib/dcc/server/storage/entry.rb +15 -0
  142. data/lib/dcc/server/storage/memory.rb +57 -0
  143. data/lib/dcc/server/storage.rb +13 -0
  144. data/lib/dcc/server.rb +33 -0
  145. data/lib/dcc/si/base/complex.rb +43 -0
  146. data/lib/dcc/si/base/complex_list_xml_list.rb +39 -0
  147. data/lib/dcc/si/base/constant.rb +39 -0
  148. data/lib/dcc/si/base/coverage_interval_mu.rb +31 -0
  149. data/lib/dcc/si/base/expanded_mu.rb +29 -0
  150. data/lib/dcc/si/base/expanded_unc_xml_list.rb +30 -0
  151. data/lib/dcc/si/base/hybrid.rb +42 -0
  152. data/lib/dcc/si/base/measurement_uncertainty_univariate.rb +28 -0
  153. data/lib/dcc/si/base/real.rb +48 -0
  154. data/lib/dcc/si/base/real_list_xml_list.rb +45 -0
  155. data/lib/dcc/si/base/si_list.rb +37 -0
  156. data/lib/dcc/si/base/standard_mu.rb +25 -0
  157. data/lib/dcc/si/base.rb +24 -0
  158. data/lib/dcc/si/common_elements.rb +13 -0
  159. data/lib/dcc/si/namespace.rb +7 -0
  160. data/lib/dcc/si/v1/common_elements.rb +13 -0
  161. data/lib/dcc/si/v1/complex.rb +8 -0
  162. data/lib/dcc/si/v1/complex_list_xml_list.rb +8 -0
  163. data/lib/dcc/si/v1/configuration.rb +13 -0
  164. data/lib/dcc/si/v1/constant.rb +8 -0
  165. data/lib/dcc/si/v1/coverage_interval_mu.rb +8 -0
  166. data/lib/dcc/si/v1/expanded_mu.rb +8 -0
  167. data/lib/dcc/si/v1/expanded_unc.rb +23 -0
  168. data/lib/dcc/si/v1/expanded_unc_xml_list.rb +8 -0
  169. data/lib/dcc/si/v1/hybrid.rb +8 -0
  170. data/lib/dcc/si/v1/measurement_uncertainty_univariate.rb +8 -0
  171. data/lib/dcc/si/v1/namespace.rb +9 -0
  172. data/lib/dcc/si/v1/real.rb +8 -0
  173. data/lib/dcc/si/v1/real_list_xml_list.rb +8 -0
  174. data/lib/dcc/si/v1/si_list.rb +8 -0
  175. data/lib/dcc/si/v1/standard_mu.rb +8 -0
  176. data/lib/dcc/si/v1.rb +46 -0
  177. data/lib/dcc/si/v2/common_elements.rb +13 -0
  178. data/lib/dcc/si/v2/complex.rb +8 -0
  179. data/lib/dcc/si/v2/complex_list_xml_list.rb +8 -0
  180. data/lib/dcc/si/v2/configuration.rb +13 -0
  181. data/lib/dcc/si/v2/constant.rb +8 -0
  182. data/lib/dcc/si/v2/coverage_interval_mu.rb +8 -0
  183. data/lib/dcc/si/v2/coverage_interval_mu_xml_list.rb +24 -0
  184. data/lib/dcc/si/v2/expanded_mu.rb +8 -0
  185. data/lib/dcc/si/v2/expanded_mu_xml_list.rb +22 -0
  186. data/lib/dcc/si/v2/expanded_unc_xml_list.rb +8 -0
  187. data/lib/dcc/si/v2/hybrid.rb +8 -0
  188. data/lib/dcc/si/v2/measurement_uncertainty_univariate.rb +8 -0
  189. data/lib/dcc/si/v2/namespace.rb +9 -0
  190. data/lib/dcc/si/v2/real.rb +8 -0
  191. data/lib/dcc/si/v2/real_list_xml_list.rb +8 -0
  192. data/lib/dcc/si/v2/si_list.rb +8 -0
  193. data/lib/dcc/si/v2/standard_mu.rb +8 -0
  194. data/lib/dcc/si/v2/standard_mu_xml_list.rb +18 -0
  195. data/lib/dcc/si/v2.rb +49 -0
  196. data/lib/dcc/si.rb +34 -0
  197. data/lib/dcc/signature/result.rb +43 -0
  198. data/lib/dcc/signature/signer.rb +36 -0
  199. data/lib/dcc/signature/verifier.rb +41 -0
  200. data/lib/dcc/signature.rb +13 -0
  201. data/lib/dcc/transform/result.rb +24 -0
  202. data/lib/dcc/transform/xslt.rb +72 -0
  203. data/lib/dcc/transform.rb +12 -0
  204. data/lib/dcc/type/base64_binary.rb +55 -0
  205. data/lib/dcc/type/decimal_xml_list.rb +47 -0
  206. data/lib/dcc/type/iso_country_code.rb +23 -0
  207. data/lib/dcc/type/iso_language_code.rb +23 -0
  208. data/lib/dcc/type/schema_version.rb +37 -0
  209. data/lib/dcc/type/si_unit.rb +26 -0
  210. data/lib/dcc/type.rb +16 -0
  211. data/lib/dcc/type_guards.rb +140 -0
  212. data/lib/dcc/v2/administrative_data.rb +8 -0
  213. data/lib/dcc/v2/byte_data.rb +8 -0
  214. data/lib/dcc/v2/calibration_laboratory.rb +8 -0
  215. data/lib/dcc/v2/comment.rb +8 -0
  216. data/lib/dcc/v2/common_elements.rb +13 -0
  217. data/lib/dcc/v2/condition.rb +8 -0
  218. data/lib/dcc/v2/configuration.rb +17 -0
  219. data/lib/dcc/v2/contact.rb +8 -0
  220. data/lib/dcc/v2/contact_not_strict.rb +8 -0
  221. data/lib/dcc/v2/core_data.rb +8 -0
  222. data/lib/dcc/v2/data.rb +8 -0
  223. data/lib/dcc/v2/digital_calibration_certificate.rb +8 -0
  224. data/lib/dcc/v2/equipment_class.rb +8 -0
  225. data/lib/dcc/v2/formula.rb +8 -0
  226. data/lib/dcc/v2/hash_type.rb +8 -0
  227. data/lib/dcc/v2/identification.rb +8 -0
  228. data/lib/dcc/v2/identifications.rb +8 -0
  229. data/lib/dcc/v2/influence_condition.rb +7 -0
  230. data/lib/dcc/v2/influence_condition_list.rb +8 -0
  231. data/lib/dcc/v2/item.rb +8 -0
  232. data/lib/dcc/v2/item_list.rb +8 -0
  233. data/lib/dcc/v2/list.rb +8 -0
  234. data/lib/dcc/v2/location.rb +8 -0
  235. data/lib/dcc/v2/measurement_meta_data.rb +8 -0
  236. data/lib/dcc/v2/measurement_meta_data_list.rb +8 -0
  237. data/lib/dcc/v2/measurement_result.rb +8 -0
  238. data/lib/dcc/v2/measurement_result_list.rb +8 -0
  239. data/lib/dcc/v2/measuring_equipment.rb +8 -0
  240. data/lib/dcc/v2/measuring_equipment_list.rb +8 -0
  241. data/lib/dcc/v2/namespace.rb +8 -0
  242. data/lib/dcc/v2/quantity.rb +49 -0
  243. data/lib/dcc/v2/ref_type_definition.rb +11 -0
  244. data/lib/dcc/v2/ref_type_definition_list.rb +15 -0
  245. data/lib/dcc/v2/resp_person.rb +8 -0
  246. data/lib/dcc/v2/resp_person_list.rb +8 -0
  247. data/lib/dcc/v2/result.rb +8 -0
  248. data/lib/dcc/v2/result_list.rb +8 -0
  249. data/lib/dcc/v2/rich_content.rb +12 -0
  250. data/lib/dcc/v2/software.rb +8 -0
  251. data/lib/dcc/v2/software_list.rb +8 -0
  252. data/lib/dcc/v2/statement.rb +8 -0
  253. data/lib/dcc/v2/statement_list.rb +8 -0
  254. data/lib/dcc/v2/string_with_lang.rb +8 -0
  255. data/lib/dcc/v2/text.rb +8 -0
  256. data/lib/dcc/v2/used_method.rb +8 -0
  257. data/lib/dcc/v2/used_method_list.rb +8 -0
  258. data/lib/dcc/v2/xml_blob.rb +8 -0
  259. data/lib/dcc/v2.rb +84 -0
  260. data/lib/dcc/v3/administrative_data.rb +8 -0
  261. data/lib/dcc/v3/byte_data.rb +8 -0
  262. data/lib/dcc/v3/calibration_laboratory.rb +8 -0
  263. data/lib/dcc/v3/comment.rb +8 -0
  264. data/lib/dcc/v3/common_elements.rb +11 -0
  265. data/lib/dcc/v3/condition.rb +8 -0
  266. data/lib/dcc/v3/configuration.rb +17 -0
  267. data/lib/dcc/v3/contact.rb +8 -0
  268. data/lib/dcc/v3/contact_not_strict.rb +8 -0
  269. data/lib/dcc/v3/core_data.rb +8 -0
  270. data/lib/dcc/v3/data.rb +8 -0
  271. data/lib/dcc/v3/digital_calibration_certificate.rb +8 -0
  272. data/lib/dcc/v3/equipment_class.rb +8 -0
  273. data/lib/dcc/v3/formula.rb +8 -0
  274. data/lib/dcc/v3/hash_type.rb +8 -0
  275. data/lib/dcc/v3/identification.rb +8 -0
  276. data/lib/dcc/v3/identifications.rb +8 -0
  277. data/lib/dcc/v3/influence_condition.rb +7 -0
  278. data/lib/dcc/v3/influence_condition_list.rb +8 -0
  279. data/lib/dcc/v3/item.rb +8 -0
  280. data/lib/dcc/v3/item_list.rb +8 -0
  281. data/lib/dcc/v3/list.rb +8 -0
  282. data/lib/dcc/v3/location.rb +8 -0
  283. data/lib/dcc/v3/measurement_meta_data.rb +8 -0
  284. data/lib/dcc/v3/measurement_meta_data_list.rb +8 -0
  285. data/lib/dcc/v3/measurement_result.rb +8 -0
  286. data/lib/dcc/v3/measurement_result_list.rb +8 -0
  287. data/lib/dcc/v3/measuring_equipment.rb +8 -0
  288. data/lib/dcc/v3/measuring_equipment_list.rb +8 -0
  289. data/lib/dcc/v3/namespace.rb +7 -0
  290. data/lib/dcc/v3/quantity.rb +49 -0
  291. data/lib/dcc/v3/ref_type_definition.rb +8 -0
  292. data/lib/dcc/v3/ref_type_definition_list.rb +8 -0
  293. data/lib/dcc/v3/resp_person.rb +8 -0
  294. data/lib/dcc/v3/resp_person_list.rb +8 -0
  295. data/lib/dcc/v3/result.rb +8 -0
  296. data/lib/dcc/v3/result_list.rb +8 -0
  297. data/lib/dcc/v3/rich_content.rb +8 -0
  298. data/lib/dcc/v3/software.rb +8 -0
  299. data/lib/dcc/v3/software_list.rb +8 -0
  300. data/lib/dcc/v3/statement.rb +8 -0
  301. data/lib/dcc/v3/statement_list.rb +8 -0
  302. data/lib/dcc/v3/string_with_lang.rb +8 -0
  303. data/lib/dcc/v3/text.rb +8 -0
  304. data/lib/dcc/v3/used_method.rb +8 -0
  305. data/lib/dcc/v3/used_method_list.rb +8 -0
  306. data/lib/dcc/v3/xml_blob.rb +8 -0
  307. data/lib/dcc/v3.rb +111 -0
  308. data/lib/dcc/validate/business_rules.rb +121 -0
  309. data/lib/dcc/validate/issue.rb +56 -0
  310. data/lib/dcc/validate/result.rb +105 -0
  311. data/lib/dcc/validate/schematron/profile.rb +64 -0
  312. data/lib/dcc/validate/schematron/rule.rb +49 -0
  313. data/lib/dcc/validate/schematron/rules/administrative_data_completeness.rb +42 -0
  314. data/lib/dcc/validate/schematron/rules/base.rb +15 -0
  315. data/lib/dcc/validate/schematron/rules/date_range_check.rb +41 -0
  316. data/lib/dcc/validate/schematron/rules/id_refid_linking.rb +61 -0
  317. data/lib/dcc/validate/schematron/rules/influence_conditions_placement.rb +58 -0
  318. data/lib/dcc/validate/schematron/rules/iso_code_validation.rb +53 -0
  319. data/lib/dcc/validate/schematron/rules/language_code_dedup.rb +39 -0
  320. data/lib/dcc/validate/schematron/rules/non_si_declaration.rb +82 -0
  321. data/lib/dcc/validate/schematron/rules/release_format_check.rb +44 -0
  322. data/lib/dcc/validate/schematron/rules/schema_version_check.rb +31 -0
  323. data/lib/dcc/validate/schematron/rules/uncertainty_consistency.rb +58 -0
  324. data/lib/dcc/validate/schematron/rules/unit_format_check.rb +74 -0
  325. data/lib/dcc/validate/schematron/rules/used_methods_placement.rb +65 -0
  326. data/lib/dcc/validate/schematron/rules/used_software_placement.rb +43 -0
  327. data/lib/dcc/validate/schematron/rules/xml_list_spacing.rb +42 -0
  328. data/lib/dcc/validate/schematron/rules.rb +30 -0
  329. data/lib/dcc/validate/schematron.rb +22 -0
  330. data/lib/dcc/validate/severity.rb +39 -0
  331. data/lib/dcc/validate/xsd.rb +97 -0
  332. data/lib/dcc/validate.rb +15 -0
  333. data/lib/dcc/version.rb +5 -0
  334. data/lib/dcc/versioned_parser.rb +48 -0
  335. data/lib/dcc.rb +141 -0
  336. metadata +425 -0
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc
4
+ module V2
5
+ # V2 DCC namespace: same URI as V3 but pinned to v2.x schema location.
6
+ Namespace = ::Dcc::Namespace::Dcc
7
+ end
8
+ end
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ # V2 Quantity: declares DCC admin attributes + D-SI v1.x quantity
5
+ # element references in a single `xml do` block. Follows the same
6
+ # pattern as V3::Quantity but wires D-SI v1 classes.
7
+ class Quantity < CommonElements
8
+ attribute :id, :string
9
+ attribute :ref_id, :string
10
+ attribute :ref_type, :string
11
+ attribute :name, :text
12
+ attribute :no_quantity, :string
13
+ attribute :used_methods, :usedMethods
14
+ attribute :used_software, :softwareList
15
+ attribute :influence_conditions, :influenceConditions
16
+ attribute :measurement_meta_data, :measurementMetaData
17
+ # D-SI v1 quantity substitutions (Option B)
18
+ attribute :real, ::Dcc::Si::V1::Real, collection: true
19
+ attribute :complex, ::Dcc::Si::V1::Complex, collection: true
20
+ attribute :constant, ::Dcc::Si::V1::Constant, collection: true
21
+ attribute :hybrid, ::Dcc::Si::V1::Hybrid, collection: true
22
+ attribute :real_list_xml_list, ::Dcc::Si::V1::RealListXmlList, collection: true
23
+ attribute :complex_list_xml_list, ::Dcc::Si::V1::ComplexListXmlList, collection: true
24
+ attribute :list, ::Dcc::Si::V1::SiList, collection: true
25
+
26
+ xml do
27
+ namespace ::Dcc::Namespace::Dcc
28
+ element "quantity"
29
+ ordered
30
+ map_attribute "id", to: :id
31
+ map_attribute "refId", to: :ref_id
32
+ map_attribute "refType", to: :ref_type
33
+ map_element "name", to: :name
34
+ map_element "noQuantity", to: :no_quantity
35
+ map_element "usedMethods", to: :used_methods
36
+ map_element "usedSoftware", to: :used_software
37
+ map_element "influenceConditions", to: :influence_conditions
38
+ map_element "measurementMetaData", to: :measurement_meta_data
39
+ map_element "real", to: :real
40
+ map_element "complex", to: :complex
41
+ map_element "constant", to: :constant
42
+ map_element "hybrid", to: :hybrid
43
+ map_element "realListXMLList", to: :real_list_xml_list
44
+ map_element "complexListXMLList", to: :complex_list_xml_list
45
+ map_element "list", to: :list
46
+ end
47
+ end
48
+ Configuration.register_model(Quantity, id: :quantity)
49
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DCC v2.x has no `dcc:refTypeDefinitionType`; this is a v3.x addition. We
4
+ # register an empty V2 placeholder so documents that happen to include the
5
+ # element (mixed-version transitional documents) parse without error.
6
+ module Dcc::V2
7
+ class RefTypeDefinition < CommonElements
8
+ # Deliberately empty; v2 has no refTypeDefinition structure.
9
+ end
10
+ Configuration.register_model(RefTypeDefinition, id: :refTypeDefinition)
11
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class RefTypeDefinitionList < CommonElements
5
+ attribute :ref_type_definition, :refTypeDefinition, collection: true
6
+
7
+ xml do
8
+ namespace ::Dcc::Namespace::Dcc
9
+ element "refTypeDefinitions"
10
+ ordered
11
+ map_element "refTypeDefinition", to: :ref_type_definition
12
+ end
13
+ end
14
+ Configuration.register_model(RefTypeDefinitionList, id: :refTypeDefinitions)
15
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class RespPerson < CommonElements
5
+ include ::Dcc::Base::RespPerson
6
+ end
7
+ Configuration.register_model(RespPerson, id: :respPerson)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class RespPersonList < CommonElements
5
+ include ::Dcc::Base::RespPersonList
6
+ end
7
+ Configuration.register_model(RespPersonList, id: :respPersons)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class Result < CommonElements
5
+ include ::Dcc::Base::Result
6
+ end
7
+ Configuration.register_model(Result, id: :result)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class ResultList < CommonElements
5
+ include ::Dcc::Base::ResultList
6
+ end
7
+ Configuration.register_model(ResultList, id: :results)
8
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # DCC v2.x has no `dcc:richContentType`; the v3.4+ type doesn't apply. For
4
+ # forward compatibility we register a V2 `RichContent` that simply reuses
5
+ # the V2 `Text` mapping so documents parsed under `:dcc_v2` context resolve
6
+ # the `:richContent` symbol.
7
+ module Dcc::V2
8
+ class RichContent < CommonElements
9
+ include ::Dcc::Base::Text
10
+ end
11
+ Configuration.register_model(RichContent, id: :richContent)
12
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class Software < CommonElements
5
+ include ::Dcc::Base::Software
6
+ end
7
+ Configuration.register_model(Software, id: :software)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class SoftwareList < CommonElements
5
+ include ::Dcc::Base::SoftwareList
6
+ end
7
+ Configuration.register_model(SoftwareList, id: :softwareList)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class Statement < CommonElements
5
+ include ::Dcc::Base::Statement
6
+ end
7
+ Configuration.register_model(Statement, id: :statement)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class StatementList < CommonElements
5
+ include ::Dcc::Base::StatementList
6
+ end
7
+ Configuration.register_model(StatementList, id: :statements)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class StringWithLang < CommonElements
5
+ include ::Dcc::Base::StringWithLang
6
+ end
7
+ Configuration.register_model(StringWithLang, id: :content)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class Text < CommonElements
5
+ include ::Dcc::Base::Text
6
+ end
7
+ Configuration.register_model(Text, id: :text)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class UsedMethod < CommonElements
5
+ include ::Dcc::Base::UsedMethod
6
+ end
7
+ Configuration.register_model(UsedMethod, id: :usedMethod)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class UsedMethodList < CommonElements
5
+ include ::Dcc::Base::UsedMethodList
6
+ end
7
+ Configuration.register_model(UsedMethodList, id: :usedMethods)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V2
4
+ class XmlBlob < CommonElements
5
+ include ::Dcc::Base::XmlBlob
6
+ end
7
+ Configuration.register_model(XmlBlob, id: :xml)
8
+ end
data/lib/dcc/v2.rb ADDED
@@ -0,0 +1,84 @@
1
+ # frozen_string_literal: true
2
+
3
+ # `Dcc::V2` hosts all DCC v2.x element wrapper classes. They share the same
4
+ # `lib/dcc/base/*.rb` mapping modules as V3 but live in their own class
5
+ # hierarchy and register in their own type context (`:dcc_v2`), so V2 and V3
6
+ # can coexist in one process without symbol clashes.
7
+ module Dcc
8
+ module V2
9
+ autoload :Configuration, "dcc/v2/configuration"
10
+ autoload :Namespace, "dcc/v2/namespace"
11
+ autoload :CommonElements, "dcc/v2/common_elements"
12
+
13
+ autoload :StringWithLang, "dcc/v2/string_with_lang"
14
+ autoload :Text, "dcc/v2/text"
15
+ autoload :ByteData, "dcc/v2/byte_data"
16
+ autoload :Formula, "dcc/v2/formula"
17
+ autoload :RichContent, "dcc/v2/rich_content"
18
+ autoload :XmlBlob, "dcc/v2/xml_blob"
19
+ autoload :Comment, "dcc/v2/comment"
20
+ autoload :EquipmentClass, "dcc/v2/equipment_class"
21
+ autoload :Location, "dcc/v2/location"
22
+ autoload :Contact, "dcc/v2/contact"
23
+ autoload :ContactNotStrict, "dcc/v2/contact_not_strict"
24
+ autoload :HashType, "dcc/v2/hash_type"
25
+ autoload :Identification, "dcc/v2/identification"
26
+ autoload :Identifications, "dcc/v2/identifications"
27
+ autoload :Software, "dcc/v2/software"
28
+ autoload :SoftwareList, "dcc/v2/software_list"
29
+ autoload :RefTypeDefinition, "dcc/v2/ref_type_definition"
30
+ autoload :RefTypeDefinitionList, "dcc/v2/ref_type_definition_list"
31
+ autoload :CoreData, "dcc/v2/core_data"
32
+ autoload :Item, "dcc/v2/item"
33
+ autoload :ItemList, "dcc/v2/item_list"
34
+ autoload :CalibrationLaboratory, "dcc/v2/calibration_laboratory"
35
+ autoload :RespPerson, "dcc/v2/resp_person"
36
+ autoload :RespPersonList, "dcc/v2/resp_person_list"
37
+ autoload :Statement, "dcc/v2/statement"
38
+ autoload :StatementList, "dcc/v2/statement_list"
39
+ autoload :MeasuringEquipment, "dcc/v2/measuring_equipment"
40
+ autoload :MeasuringEquipmentList, "dcc/v2/measuring_equipment_list"
41
+ autoload :UsedMethod, "dcc/v2/used_method"
42
+ autoload :UsedMethodList, "dcc/v2/used_method_list"
43
+ autoload :Condition, "dcc/v2/condition"
44
+ autoload :InfluenceCondition, "dcc/v2/influence_condition"
45
+ autoload :InfluenceConditionList, "dcc/v2/influence_condition_list"
46
+ autoload :Result, "dcc/v2/result"
47
+ autoload :ResultList, "dcc/v2/result_list"
48
+ autoload :Data, "dcc/v2/data"
49
+ autoload :Quantity, "dcc/v2/quantity"
50
+ autoload :List, "dcc/v2/list"
51
+ autoload :MeasurementMetaData, "dcc/v2/measurement_meta_data"
52
+ autoload :MeasurementMetaDataList, "dcc/v2/measurement_meta_data_list"
53
+ autoload :MeasurementResult, "dcc/v2/measurement_result"
54
+ autoload :MeasurementResultList, "dcc/v2/measurement_result_list"
55
+ autoload :AdministrativeData, "dcc/v2/administrative_data"
56
+ autoload :DigitalCalibrationCertificate, "dcc/v2/digital_calibration_certificate"
57
+
58
+ ROOT_ELEMENT_TAG = "digitalCalibrationCertificate"
59
+
60
+ extend ::Dcc::VersionedParser
61
+
62
+ ELEMENT_CLASSES = %i[
63
+ StringWithLang Text ByteData Formula RichContent XmlBlob Comment
64
+ EquipmentClass Location Contact ContactNotStrict HashType
65
+ Identification Identifications Software SoftwareList
66
+ RefTypeDefinition RefTypeDefinitionList
67
+ CoreData Item ItemList CalibrationLaboratory
68
+ RespPerson RespPersonList Statement StatementList
69
+ MeasuringEquipment MeasuringEquipmentList
70
+ UsedMethod UsedMethodList
71
+ Condition InfluenceCondition InfluenceConditionList
72
+ Result ResultList Data Quantity List
73
+ MeasurementMetaData MeasurementMetaDataList
74
+ MeasurementResult MeasurementResultList
75
+ AdministrativeData DigitalCalibrationCertificate
76
+ ].freeze
77
+
78
+ def self.load_all!
79
+ ELEMENT_CLASSES.each { |name| const_get(name) }
80
+ Configuration.populate_context!
81
+ true
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class AdministrativeData < CommonElements
5
+ include ::Dcc::Base::AdministrativeData
6
+ end
7
+ Configuration.register_model(AdministrativeData, id: :administrativeData)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class ByteData < CommonElements
5
+ include ::Dcc::Base::ByteData
6
+ end
7
+ Configuration.register_model(ByteData, id: :byteData)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class CalibrationLaboratory < CommonElements
5
+ include ::Dcc::Base::CalibrationLaboratory
6
+ end
7
+ Configuration.register_model(CalibrationLaboratory, id: :calibrationLaboratory)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Comment < CommonElements
5
+ include ::Dcc::Base::Comment
6
+ end
7
+ Configuration.register_model(Comment, id: :comment)
8
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc
4
+ module V3
5
+ class CommonElements < ::Dcc::CommonElements
6
+ def self.lutaml_default_register
7
+ :dcc_v3
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Condition < CommonElements
5
+ include ::Dcc::Base::Condition
6
+ end
7
+ Configuration.register_model(Condition, id: :influenceCondition)
8
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc
4
+ module V3
5
+ module Configuration
6
+ extend ::Dcc::ContextConfiguration
7
+
8
+ CONTEXT_ID = :dcc_v3
9
+
10
+ # V3 DCC imports D-SI v2.x for quantity expressions. Returned as
11
+ # instance method (becomes class method via `extend`).
12
+ def fallback_contexts
13
+ [:dsi_v2, :default]
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Contact < CommonElements
5
+ include ::Dcc::Base::Contact
6
+ end
7
+ Configuration.register_model(Contact, id: :contact)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class ContactNotStrict < CommonElements
5
+ include ::Dcc::Base::ContactNotStrict
6
+ end
7
+ Configuration.register_model(ContactNotStrict, id: :contactNotStrict)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class CoreData < CommonElements
5
+ include ::Dcc::Base::CoreData
6
+ end
7
+ Configuration.register_model(CoreData, id: :coreData)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Data < CommonElements
5
+ include ::Dcc::Base::Data
6
+ end
7
+ Configuration.register_model(Data, id: :data)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class DigitalCalibrationCertificate < CommonElements
5
+ include ::Dcc::Base::DigitalCalibrationCertificate
6
+ end
7
+ Configuration.register_model(DigitalCalibrationCertificate, id: :digitalCalibrationCertificate)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class EquipmentClass < CommonElements
5
+ include ::Dcc::Base::EquipmentClass
6
+ end
7
+ Configuration.register_model(EquipmentClass, id: :equipmentClass)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Formula < CommonElements
5
+ include ::Dcc::Base::Formula
6
+ end
7
+ Configuration.register_model(Formula, id: :formula)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class HashType < CommonElements
5
+ include ::Dcc::Base::HashType
6
+ end
7
+ Configuration.register_model(HashType, id: :previousReport)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Identification < CommonElements
5
+ include ::Dcc::Base::Identification
6
+ end
7
+ Configuration.register_model(Identification, id: :identification)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Identifications < CommonElements
5
+ include ::Dcc::Base::Identifications
6
+ end
7
+ Configuration.register_model(Identifications, id: :identifications)
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class InfluenceCondition < CommonElements
5
+ include ::Dcc::Base::InfluenceCondition
6
+ end
7
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class InfluenceConditionList < CommonElements
5
+ include ::Dcc::Base::InfluenceConditionList
6
+ end
7
+ Configuration.register_model(InfluenceConditionList, id: :influenceConditions)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Item < CommonElements
5
+ include ::Dcc::Base::Item
6
+ end
7
+ Configuration.register_model(Item, id: :item)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class ItemList < CommonElements
5
+ include ::Dcc::Base::ItemList
6
+ end
7
+ Configuration.register_model(ItemList, id: :items)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class List < CommonElements
5
+ include ::Dcc::Base::List
6
+ end
7
+ Configuration.register_model(List, id: :list)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class Location < CommonElements
5
+ include ::Dcc::Base::Location
6
+ end
7
+ Configuration.register_model(Location, id: :location)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class MeasurementMetaData < CommonElements
5
+ include ::Dcc::Base::MeasurementMetaData
6
+ end
7
+ Configuration.register_model(MeasurementMetaData, id: :metaData)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class MeasurementMetaDataList < CommonElements
5
+ include ::Dcc::Base::MeasurementMetaDataList
6
+ end
7
+ Configuration.register_model(MeasurementMetaDataList, id: :measurementMetaData)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class MeasurementResult < CommonElements
5
+ include ::Dcc::Base::MeasurementResult
6
+ end
7
+ Configuration.register_model(MeasurementResult, id: :measurementResult)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class MeasurementResultList < CommonElements
5
+ include ::Dcc::Base::MeasurementResultList
6
+ end
7
+ Configuration.register_model(MeasurementResultList, id: :measurementResults)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class MeasuringEquipment < CommonElements
5
+ include ::Dcc::Base::MeasuringEquipment
6
+ end
7
+ Configuration.register_model(MeasuringEquipment, id: :measuringEquipment)
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc::V3
4
+ class MeasuringEquipmentList < CommonElements
5
+ include ::Dcc::Base::MeasuringEquipmentList
6
+ end
7
+ Configuration.register_model(MeasuringEquipmentList, id: :measuringEquipments)
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dcc
4
+ module V3
5
+ Namespace = ::Dcc::Namespace::Dcc
6
+ end
7
+ end