sts 0.5.2 → 0.5.4

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 (446) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/.rubocop.yml +3 -0
  4. data/.rubocop_todo.yml +17 -3
  5. data/CLAUDE.md +72 -0
  6. data/GAPS.guidelines.iso-sts-ed2.1/01-maintenance.md +19 -0
  7. data/GAPS.guidelines.iso-sts-ed2.1/03-general.md +75 -0
  8. data/GAPS.guidelines.iso-sts-ed2.1/04-structure.md +75 -0
  9. data/GAPS.guidelines.iso-sts-ed2.1/05-content.md +63 -0
  10. data/GAPS.guidelines.iso-sts-ed2.1/06-tables.md +53 -0
  11. data/GAPS.guidelines.iso-sts-ed2.1/07-formulae.md +41 -0
  12. data/GAPS.guidelines.iso-sts-ed2.1/08-figures.md +45 -0
  13. data/GAPS.guidelines.iso-sts-ed2.1/09-terms.md +56 -0
  14. data/GAPS.guidelines.iso-sts-ed2.1/10-references.md +56 -0
  15. data/GAPS.guidelines.iso-sts-ed2.1/annex-a-multilingual.md +79 -0
  16. data/GAPS.guidelines.niso-sts-v1.0/01-introduction-scope.md +27 -0
  17. data/GAPS.guidelines.niso-sts-v1.0/02-document-structure.md +100 -0
  18. data/GAPS.guidelines.niso-sts-v1.0/03-front-matter.md +149 -0
  19. data/GAPS.guidelines.niso-sts-v1.0/04-body-content.md +209 -0
  20. data/GAPS.guidelines.niso-sts-v1.0/05-tables-figures.md +152 -0
  21. data/GAPS.guidelines.niso-sts-v1.0/06-math-formulae.md +128 -0
  22. data/GAPS.guidelines.niso-sts-v1.0/07-references.md +113 -0
  23. data/GAPS.guidelines.niso-sts-v1.0/08-terminology.md +127 -0
  24. data/GAPS.guidelines.niso-sts-v1.0/09-metadata.md +113 -0
  25. data/GAPS.guidelines.niso-sts-v1.0/10-iso-iec-variant.md +141 -0
  26. data/GAPS.guidelines.niso-sts-v1.0/SUMMARY.md +96 -0
  27. data/GAPS.guidelines.schema-xref.md +101 -0
  28. data/Gemfile +2 -1
  29. data/TODO.sts-refactor/00-overview.md +172 -0
  30. data/TODO.sts-refactor/01-mathml-delegation.md +153 -0
  31. data/TODO.sts-refactor/02-type-resolution.md +122 -0
  32. data/TODO.sts-refactor/03-namespace-coupling.md +158 -0
  33. data/TODO.sts-refactor/04-register-versioning.md +180 -0
  34. data/TODO.sts-refactor/05-missing-elements.md +195 -0
  35. data/TODO.sts-refactor/06-missing-attributes.md +152 -0
  36. data/TODO.sts-refactor/07-incomplete-models.md +180 -0
  37. data/TODO.sts-refactor/08-isoiec-profile.md +169 -0
  38. data/TODO.sts-refactor/09-autoload-cleanup.md +88 -0
  39. data/TODO.sts-refactor/10-test-coverage.md +164 -0
  40. data/TODO.sts-refactor/11-duplicate-models.md +168 -0
  41. data/lib/sts/iso_sts/annex_type.rb +2 -0
  42. data/lib/sts/iso_sts/app.rb +26 -1
  43. data/lib/sts/iso_sts/app_group.rb +1 -0
  44. data/lib/sts/iso_sts/array.rb +1 -0
  45. data/lib/sts/iso_sts/back.rb +1 -0
  46. data/lib/sts/iso_sts/body.rb +4 -0
  47. data/lib/sts/iso_sts/bold.rb +23 -11
  48. data/lib/sts/iso_sts/break.rb +3 -0
  49. data/lib/sts/iso_sts/caption.rb +1 -0
  50. data/lib/sts/iso_sts/comm_ref.rb +2 -0
  51. data/lib/sts/iso_sts/content_language.rb +22 -0
  52. data/lib/sts/iso_sts/copyright_holder.rb +4 -2
  53. data/lib/sts/iso_sts/copyright_statement.rb +4 -2
  54. data/lib/sts/iso_sts/copyright_year.rb +3 -0
  55. data/lib/sts/iso_sts/def.rb +1 -0
  56. data/lib/sts/iso_sts/def_item.rb +1 -0
  57. data/lib/sts/iso_sts/def_list.rb +1 -0
  58. data/lib/sts/iso_sts/disp_formula.rb +5 -1
  59. data/lib/sts/iso_sts/doc_ref.rb +2 -0
  60. data/lib/sts/iso_sts/document_identification.rb +3 -0
  61. data/lib/sts/iso_sts/edition.rb +2 -0
  62. data/lib/sts/iso_sts/ext_link.rb +1 -1
  63. data/lib/sts/iso_sts/fig.rb +1 -0
  64. data/lib/sts/iso_sts/fn.rb +1 -0
  65. data/lib/sts/iso_sts/fn_group.rb +1 -0
  66. data/lib/sts/iso_sts/front.rb +5 -0
  67. data/lib/sts/iso_sts/graphic.rb +5 -0
  68. data/lib/sts/iso_sts/inline_formula.rb +1 -1
  69. data/lib/sts/iso_sts/iso_meta.rb +4 -3
  70. data/lib/sts/iso_sts/italic.rb +23 -11
  71. data/lib/sts/iso_sts/label.rb +7 -5
  72. data/lib/sts/iso_sts/language.rb +2 -0
  73. data/lib/sts/iso_sts/list.rb +1 -0
  74. data/lib/sts/iso_sts/list_item.rb +7 -4
  75. data/lib/sts/iso_sts/mathml2/math.rb +20 -18
  76. data/lib/sts/iso_sts/meta_date.rb +20 -0
  77. data/lib/sts/iso_sts/mixed_citation.rb +35 -11
  78. data/lib/sts/iso_sts/monospace.rb +26 -0
  79. data/lib/sts/iso_sts/named_content.rb +44 -0
  80. data/lib/sts/iso_sts/nat_meta.rb +5 -4
  81. data/lib/sts/iso_sts/non_normative_example.rb +5 -0
  82. data/lib/sts/iso_sts/non_normative_note.rb +1 -0
  83. data/lib/sts/iso_sts/page_count.rb +2 -0
  84. data/lib/sts/iso_sts/paragraph.rb +34 -22
  85. data/lib/sts/iso_sts/permissions.rb +3 -0
  86. data/lib/sts/iso_sts/preformat.rb +8 -5
  87. data/lib/sts/iso_sts/ref.rb +1 -0
  88. data/lib/sts/iso_sts/ref_list.rb +1 -0
  89. data/lib/sts/iso_sts/reg_meta.rb +5 -4
  90. data/lib/sts/iso_sts/release_date.rb +2 -0
  91. data/lib/sts/iso_sts/sc.rb +26 -0
  92. data/lib/sts/iso_sts/sec.rb +12 -2
  93. data/lib/sts/iso_sts/secretariat.rb +2 -0
  94. data/lib/sts/iso_sts/standard.rb +6 -0
  95. data/lib/sts/iso_sts/standard_cross_reference.rb +5 -2
  96. data/lib/sts/iso_sts/standard_identification.rb +3 -0
  97. data/lib/sts/iso_sts/standard_ref.rb +16 -0
  98. data/lib/sts/iso_sts/std.rb +7 -5
  99. data/lib/sts/iso_sts/std_ref.rb +2 -0
  100. data/lib/sts/iso_sts/strike.rb +26 -0
  101. data/lib/sts/iso_sts/styled_content.rb +19 -15
  102. data/lib/sts/iso_sts/sub.rb +2 -0
  103. data/lib/sts/iso_sts/sup.rb +2 -0
  104. data/lib/sts/iso_sts/table.rb +1 -0
  105. data/lib/sts/iso_sts/table_wrap.rb +1 -0
  106. data/lib/sts/iso_sts/table_wrap_foot.rb +3 -0
  107. data/lib/sts/iso_sts/td.rb +32 -14
  108. data/lib/sts/iso_sts/term.rb +6 -6
  109. data/lib/sts/iso_sts/term_sec.rb +1 -0
  110. data/lib/sts/iso_sts/th.rb +32 -14
  111. data/lib/sts/iso_sts/title.rb +17 -7
  112. data/lib/sts/iso_sts/title_compl.rb +2 -0
  113. data/lib/sts/iso_sts/title_full.rb +2 -0
  114. data/lib/sts/iso_sts/title_intro.rb +2 -0
  115. data/lib/sts/iso_sts/title_main.rb +2 -0
  116. data/lib/sts/iso_sts/title_wrap.rb +1 -0
  117. data/lib/sts/iso_sts/tr.rb +1 -0
  118. data/lib/sts/iso_sts/underline.rb +26 -0
  119. data/lib/sts/iso_sts/uri.rb +32 -0
  120. data/lib/sts/iso_sts/xref.rb +3 -3
  121. data/lib/sts/iso_sts.rb +11 -0
  122. data/lib/sts/mathml.rb +21 -0
  123. data/lib/sts/namespaces.rb +3 -0
  124. data/lib/sts/niso_sts/abstract.rb +3 -0
  125. data/lib/sts/niso_sts/access_date.rb +2 -0
  126. data/lib/sts/niso_sts/accrediting_organization.rb +2 -0
  127. data/lib/sts/niso_sts/ack.rb +1 -1
  128. data/lib/sts/niso_sts/addr_line.rb +2 -0
  129. data/lib/sts/niso_sts/address.rb +3 -0
  130. data/lib/sts/niso_sts/adoption.rb +1 -1
  131. data/lib/sts/niso_sts/adoption_front.rb +1 -0
  132. data/lib/sts/niso_sts/aff_alternatives.rb +3 -0
  133. data/lib/sts/niso_sts/alt_text.rb +2 -0
  134. data/lib/sts/niso_sts/alt_title.rb +2 -0
  135. data/lib/sts/niso_sts/alternatives.rb +3 -4
  136. data/lib/sts/niso_sts/annotation.rb +1 -3
  137. data/lib/sts/niso_sts/anonymous.rb +3 -0
  138. data/lib/sts/niso_sts/app.rb +16 -1
  139. data/lib/sts/niso_sts/app_group.rb +5 -0
  140. data/lib/sts/niso_sts/article_title.rb +2 -0
  141. data/lib/sts/niso_sts/attrib.rb +2 -0
  142. data/lib/sts/niso_sts/author_comment.rb +1 -3
  143. data/lib/sts/niso_sts/author_notes.rb +1 -1
  144. data/lib/sts/niso_sts/authorization.rb +2 -0
  145. data/lib/sts/niso_sts/award_group.rb +23 -4
  146. data/lib/sts/niso_sts/award_id.rb +6 -0
  147. data/lib/sts/niso_sts/back.rb +25 -6
  148. data/lib/sts/niso_sts/bio.rb +1 -3
  149. data/lib/sts/niso_sts/body.rb +38 -0
  150. data/lib/sts/niso_sts/boxed_text.rb +41 -3
  151. data/lib/sts/niso_sts/break.rb +14 -0
  152. data/lib/sts/niso_sts/caption.rb +15 -1
  153. data/lib/sts/niso_sts/chapter_title.rb +2 -0
  154. data/lib/sts/niso_sts/chem_struct.rb +2 -0
  155. data/lib/sts/niso_sts/chem_struct_wrap.rb +1 -0
  156. data/lib/sts/niso_sts/citation_alternatives.rb +3 -0
  157. data/lib/sts/niso_sts/city.rb +2 -0
  158. data/lib/sts/niso_sts/code.rb +111 -0
  159. data/lib/sts/niso_sts/collab.rb +8 -0
  160. data/lib/sts/niso_sts/collab_alternatives.rb +3 -0
  161. data/lib/sts/niso_sts/comm_ref_group.rb +3 -0
  162. data/lib/sts/niso_sts/comment.rb +2 -0
  163. data/lib/sts/niso_sts/compound_subject.rb +29 -0
  164. data/lib/sts/niso_sts/compound_subject_part.rb +39 -0
  165. data/lib/sts/niso_sts/conf_acronym.rb +2 -0
  166. data/lib/sts/niso_sts/conf_date.rb +2 -0
  167. data/lib/sts/niso_sts/conf_loc.rb +2 -0
  168. data/lib/sts/niso_sts/conf_name.rb +2 -0
  169. data/lib/sts/niso_sts/conf_num.rb +2 -0
  170. data/lib/sts/niso_sts/conf_sponsor.rb +2 -0
  171. data/lib/sts/niso_sts/conf_theme.rb +2 -0
  172. data/lib/sts/niso_sts/conference.rb +3 -0
  173. data/lib/sts/niso_sts/content_language.rb +2 -0
  174. data/lib/sts/niso_sts/contrib.rb +1 -0
  175. data/lib/sts/niso_sts/contrib_group.rb +1 -0
  176. data/lib/sts/niso_sts/contrib_id.rb +2 -0
  177. data/lib/sts/niso_sts/copyright_holder.rb +2 -0
  178. data/lib/sts/niso_sts/copyright_statement.rb +2 -0
  179. data/lib/sts/niso_sts/copyright_year.rb +2 -0
  180. data/lib/sts/niso_sts/country.rb +2 -0
  181. data/lib/sts/niso_sts/counts.rb +3 -0
  182. data/lib/sts/niso_sts/custom_meta.rb +3 -0
  183. data/lib/sts/niso_sts/custom_meta_group.rb +3 -0
  184. data/lib/sts/niso_sts/data_title.rb +29 -0
  185. data/lib/sts/niso_sts/date.rb +3 -0
  186. data/lib/sts/niso_sts/date_in_citation.rb +2 -0
  187. data/lib/sts/niso_sts/day.rb +2 -0
  188. data/lib/sts/niso_sts/def.rb +3 -0
  189. data/lib/sts/niso_sts/def_head.rb +18 -0
  190. data/lib/sts/niso_sts/def_item.rb +13 -0
  191. data/lib/sts/niso_sts/def_list.rb +25 -3
  192. data/lib/sts/niso_sts/degrees.rb +2 -0
  193. data/lib/sts/niso_sts/disp_formula_group.rb +1 -4
  194. data/lib/sts/niso_sts/disp_quote.rb +3 -1
  195. data/lib/sts/niso_sts/display_formula.rb +47 -2
  196. data/lib/sts/niso_sts/doc_number.rb +2 -0
  197. data/lib/sts/niso_sts/doc_type.rb +2 -0
  198. data/lib/sts/niso_sts/document_identification.rb +1 -0
  199. data/lib/sts/niso_sts/editing_instruction.rb +9 -5
  200. data/lib/sts/niso_sts/edition.rb +2 -0
  201. data/lib/sts/niso_sts/element_citation.rb +1 -1
  202. data/lib/sts/niso_sts/elocation_id.rb +2 -0
  203. data/lib/sts/niso_sts/email.rb +2 -0
  204. data/lib/sts/niso_sts/equation_count.rb +2 -0
  205. data/lib/sts/niso_sts/era.rb +2 -0
  206. data/lib/sts/niso_sts/ext_link.rb +32 -2
  207. data/lib/sts/niso_sts/fax.rb +2 -0
  208. data/lib/sts/niso_sts/fig_count.rb +2 -0
  209. data/lib/sts/niso_sts/fig_group.rb +1 -0
  210. data/lib/sts/niso_sts/figure.rb +14 -1
  211. data/lib/sts/niso_sts/floats_group.rb +3 -4
  212. data/lib/sts/niso_sts/fn.rb +2 -1
  213. data/lib/sts/niso_sts/fn_group.rb +3 -0
  214. data/lib/sts/niso_sts/fpage.rb +2 -0
  215. data/lib/sts/niso_sts/front.rb +16 -0
  216. data/lib/sts/niso_sts/funding_group.rb +1 -0
  217. data/lib/sts/niso_sts/funding_source.rb +2 -0
  218. data/lib/sts/niso_sts/given_names.rb +2 -0
  219. data/lib/sts/niso_sts/glossary.rb +1 -1
  220. data/lib/sts/niso_sts/gov.rb +2 -0
  221. data/lib/sts/niso_sts/graphic.rb +6 -0
  222. data/lib/sts/niso_sts/hr.rb +3 -0
  223. data/lib/sts/niso_sts/ics.rb +5 -0
  224. data/lib/sts/niso_sts/ics_desc.rb +2 -0
  225. data/lib/sts/niso_sts/ics_wrap.rb +9 -0
  226. data/lib/sts/niso_sts/index.rb +32 -0
  227. data/lib/sts/niso_sts/index_div.rb +30 -0
  228. data/lib/sts/niso_sts/index_entry.rb +32 -0
  229. data/lib/sts/niso_sts/index_term.rb +1 -0
  230. data/lib/sts/niso_sts/index_title_group.rb +22 -0
  231. data/lib/sts/niso_sts/inline_formula.rb +38 -2
  232. data/lib/sts/niso_sts/inline_media.rb +50 -0
  233. data/lib/sts/niso_sts/institution.rb +2 -0
  234. data/lib/sts/niso_sts/institution_id.rb +2 -0
  235. data/lib/sts/niso_sts/institution_wrap.rb +3 -0
  236. data/lib/sts/niso_sts/intro.rb +2 -0
  237. data/lib/sts/niso_sts/is_proof.rb +2 -0
  238. data/lib/sts/niso_sts/isbn.rb +2 -0
  239. data/lib/sts/niso_sts/issn.rb +2 -0
  240. data/lib/sts/niso_sts/issn_l.rb +2 -0
  241. data/lib/sts/niso_sts/issue.rb +2 -0
  242. data/lib/sts/niso_sts/kwd_group.rb +9 -0
  243. data/lib/sts/niso_sts/label.rb +7 -2
  244. data/lib/sts/niso_sts/legend.rb +39 -0
  245. data/lib/sts/niso_sts/license.rb +2 -0
  246. data/lib/sts/niso_sts/license_p.rb +2 -0
  247. data/lib/sts/niso_sts/list.rb +9 -2
  248. data/lib/sts/niso_sts/list_item.rb +9 -4
  249. data/lib/sts/niso_sts/long_desc.rb +2 -0
  250. data/lib/sts/niso_sts/lpage.rb +2 -0
  251. data/lib/sts/niso_sts/main.rb +2 -0
  252. data/lib/sts/niso_sts/media.rb +1 -0
  253. data/lib/sts/niso_sts/meta_date.rb +2 -0
  254. data/lib/sts/niso_sts/meta_note.rb +1 -1
  255. data/lib/sts/niso_sts/metadata_iso.rb +1 -1
  256. data/lib/sts/niso_sts/metadata_std.rb +16 -8
  257. data/lib/sts/niso_sts/milestone_end.rb +1 -3
  258. data/lib/sts/niso_sts/milestone_start.rb +1 -3
  259. data/lib/sts/niso_sts/mixed_citation.rb +22 -0
  260. data/lib/sts/niso_sts/mml_content.rb +0 -2
  261. data/lib/sts/niso_sts/monospace.rb +9 -0
  262. data/lib/sts/niso_sts/month.rb +2 -0
  263. data/lib/sts/niso_sts/name.rb +3 -0
  264. data/lib/sts/niso_sts/name_alternatives.rb +5 -0
  265. data/lib/sts/niso_sts/named_content.rb +51 -1
  266. data/lib/sts/niso_sts/nat_meta.rb +3 -0
  267. data/lib/sts/niso_sts/nested_kwd.rb +3 -0
  268. data/lib/sts/niso_sts/nlm_citation.rb +1 -1
  269. data/lib/sts/niso_sts/non_normative_example.rb +15 -2
  270. data/lib/sts/niso_sts/non_normative_note.rb +14 -2
  271. data/lib/sts/niso_sts/normative_example.rb +1 -1
  272. data/lib/sts/niso_sts/normative_note.rb +3 -1
  273. data/lib/sts/niso_sts/note.rb +1 -1
  274. data/lib/sts/niso_sts/notes.rb +1 -1
  275. data/lib/sts/niso_sts/notes_group.rb +1 -0
  276. data/lib/sts/niso_sts/object_id.rb +4 -0
  277. data/lib/sts/niso_sts/on_behalf_of.rb +2 -0
  278. data/lib/sts/niso_sts/open_access.rb +3 -4
  279. data/lib/sts/niso_sts/originator.rb +2 -0
  280. data/lib/sts/niso_sts/page_count.rb +2 -0
  281. data/lib/sts/niso_sts/page_range.rb +2 -0
  282. data/lib/sts/niso_sts/paragraph.rb +39 -7
  283. data/lib/sts/niso_sts/part_number.rb +2 -0
  284. data/lib/sts/niso_sts/part_of_speech.rb +2 -0
  285. data/lib/sts/niso_sts/patent.rb +2 -0
  286. data/lib/sts/niso_sts/permissions.rb +7 -1
  287. data/lib/sts/niso_sts/phone.rb +2 -0
  288. data/lib/sts/niso_sts/postal_code.rb +2 -0
  289. data/lib/sts/niso_sts/prefix.rb +2 -0
  290. data/lib/sts/niso_sts/preformat.rb +15 -0
  291. data/lib/sts/niso_sts/price.rb +2 -0
  292. data/lib/sts/niso_sts/principal_award_recipient.rb +2 -0
  293. data/lib/sts/niso_sts/principal_investigator.rb +2 -0
  294. data/lib/sts/niso_sts/private_char.rb +3 -3
  295. data/lib/sts/niso_sts/processing_meta.rb +54 -0
  296. data/lib/sts/niso_sts/product.rb +2 -0
  297. data/lib/sts/niso_sts/proj_id.rb +2 -0
  298. data/lib/sts/niso_sts/pub_date.rb +4 -0
  299. data/lib/sts/niso_sts/pub_id.rb +2 -0
  300. data/lib/sts/niso_sts/publisher.rb +3 -0
  301. data/lib/sts/niso_sts/publisher_loc.rb +2 -0
  302. data/lib/sts/niso_sts/publisher_name.rb +2 -0
  303. data/lib/sts/niso_sts/ref_count.rb +2 -0
  304. data/lib/sts/niso_sts/reference.rb +1 -0
  305. data/lib/sts/niso_sts/reference_list.rb +6 -1
  306. data/lib/sts/niso_sts/reference_standard.rb +4 -2
  307. data/lib/sts/niso_sts/reg_meta.rb +3 -0
  308. data/lib/sts/niso_sts/related_term.rb +2 -0
  309. data/lib/sts/niso_sts/release_date.rb +11 -6
  310. data/lib/sts/niso_sts/release_version.rb +2 -0
  311. data/lib/sts/niso_sts/release_version_id.rb +2 -0
  312. data/lib/sts/niso_sts/role.rb +35 -0
  313. data/lib/sts/niso_sts/ruby.rb +1 -0
  314. data/lib/sts/niso_sts/sdo.rb +2 -0
  315. data/lib/sts/niso_sts/season.rb +2 -0
  316. data/lib/sts/niso_sts/sec_meta.rb +26 -0
  317. data/lib/sts/niso_sts/secretariat.rb +2 -0
  318. data/lib/sts/niso_sts/section.rb +47 -4
  319. data/lib/sts/niso_sts/see_also_entry.rb +26 -0
  320. data/lib/sts/niso_sts/see_entry.rb +26 -0
  321. data/lib/sts/niso_sts/self_uri.rb +2 -0
  322. data/lib/sts/niso_sts/series.rb +2 -0
  323. data/lib/sts/niso_sts/series_text.rb +2 -0
  324. data/lib/sts/niso_sts/series_title.rb +2 -0
  325. data/lib/sts/niso_sts/sig.rb +2 -0
  326. data/lib/sts/niso_sts/size.rb +2 -0
  327. data/lib/sts/niso_sts/source.rb +29 -0
  328. data/lib/sts/niso_sts/speaker.rb +2 -0
  329. data/lib/sts/niso_sts/speech.rb +1 -1
  330. data/lib/sts/niso_sts/standard.rb +3 -0
  331. data/lib/sts/niso_sts/standard_identification.rb +3 -1
  332. data/lib/sts/niso_sts/state.rb +2 -0
  333. data/lib/sts/niso_sts/statement.rb +1 -1
  334. data/lib/sts/niso_sts/std_doc_meta.rb +50 -11
  335. data/lib/sts/niso_sts/std_id.rb +2 -0
  336. data/lib/sts/niso_sts/std_id_group.rb +3 -0
  337. data/lib/sts/niso_sts/std_org.rb +1 -0
  338. data/lib/sts/niso_sts/std_org_abbrev.rb +2 -0
  339. data/lib/sts/niso_sts/std_org_group.rb +3 -0
  340. data/lib/sts/niso_sts/std_org_name.rb +2 -0
  341. data/lib/sts/niso_sts/std_organization.rb +2 -0
  342. data/lib/sts/niso_sts/string_conf.rb +2 -0
  343. data/lib/sts/niso_sts/string_date.rb +2 -0
  344. data/lib/sts/niso_sts/string_name.rb +2 -0
  345. data/lib/sts/niso_sts/styled_content.rb +39 -0
  346. data/lib/sts/niso_sts/sub.rb +11 -0
  347. data/lib/sts/niso_sts/subj_group.rb +11 -0
  348. data/lib/sts/niso_sts/subtitle.rb +2 -0
  349. data/lib/sts/niso_sts/suffix.rb +2 -0
  350. data/lib/sts/niso_sts/sup.rb +13 -0
  351. data/lib/sts/niso_sts/suppl_number.rb +2 -0
  352. data/lib/sts/niso_sts/suppl_type.rb +2 -0
  353. data/lib/sts/niso_sts/suppl_version.rb +2 -0
  354. data/lib/sts/niso_sts/supplementary_material.rb +1 -0
  355. data/lib/sts/niso_sts/surname.rb +2 -0
  356. data/lib/sts/niso_sts/table_count.rb +2 -0
  357. data/lib/sts/niso_sts/table_wrap_group.rb +32 -0
  358. data/lib/sts/niso_sts/term_display.rb +22 -0
  359. data/lib/sts/niso_sts/term_display_string.rb +22 -0
  360. data/lib/sts/niso_sts/term_head.rb +2 -0
  361. data/lib/sts/niso_sts/term_section.rb +3 -3
  362. data/lib/sts/niso_sts/term_source.rb +2 -0
  363. data/lib/sts/niso_sts/tex_math.rb +2 -0
  364. data/lib/sts/niso_sts/textual_form.rb +2 -0
  365. data/lib/sts/niso_sts/time_stamp.rb +2 -0
  366. data/lib/sts/niso_sts/title.rb +26 -0
  367. data/lib/sts/niso_sts/title_wrap.rb +2 -0
  368. data/lib/sts/niso_sts/toc.rb +32 -0
  369. data/lib/sts/niso_sts/toc_div.rb +30 -0
  370. data/lib/sts/niso_sts/toc_entry.rb +30 -0
  371. data/lib/sts/niso_sts/toc_title_group.rb +22 -0
  372. data/lib/sts/niso_sts/trans_abstract.rb +1 -0
  373. data/lib/sts/niso_sts/trans_source.rb +2 -0
  374. data/lib/sts/niso_sts/trans_title.rb +2 -0
  375. data/lib/sts/niso_sts/trans_title_group.rb +3 -0
  376. data/lib/sts/niso_sts/underline.rb +5 -0
  377. data/lib/sts/niso_sts/uri.rb +4 -0
  378. data/lib/sts/niso_sts/urn.rb +2 -0
  379. data/lib/sts/niso_sts/verse_group.rb +1 -1
  380. data/lib/sts/niso_sts/verse_line.rb +2 -0
  381. data/lib/sts/niso_sts/version.rb +2 -0
  382. data/lib/sts/niso_sts/volume.rb +2 -0
  383. data/lib/sts/niso_sts/volume_id.rb +2 -0
  384. data/lib/sts/niso_sts/volume_issue_group.rb +3 -4
  385. data/lib/sts/niso_sts/volume_series.rb +2 -0
  386. data/lib/sts/niso_sts/word_count.rb +2 -0
  387. data/lib/sts/niso_sts/year.rb +2 -0
  388. data/lib/sts/niso_sts.rb +35 -10
  389. data/lib/sts/profiles/iso_iec/constraints.rb +43 -0
  390. data/lib/sts/profiles/iso_iec/validator.rb +73 -0
  391. data/lib/sts/profiles/iso_iec.rb +10 -0
  392. data/lib/sts/profiles.rb +7 -0
  393. data/lib/sts/tbx_iso_tml/bold.rb +30 -1
  394. data/lib/sts/tbx_iso_tml/caption.rb +3 -0
  395. data/lib/sts/tbx_iso_tml/col.rb +10 -0
  396. data/lib/sts/tbx_iso_tml/cross_reference.rb +2 -0
  397. data/lib/sts/tbx_iso_tml/definition.rb +18 -2
  398. data/lib/sts/tbx_iso_tml/entailed_term.rb +2 -0
  399. data/lib/sts/tbx_iso_tml/example.rb +9 -3
  400. data/lib/sts/tbx_iso_tml/external_graphic.rb +2 -0
  401. data/lib/sts/tbx_iso_tml/external_source.rb +2 -0
  402. data/lib/sts/tbx_iso_tml/fn.rb +3 -2
  403. data/lib/sts/tbx_iso_tml/fn_group.rb +3 -0
  404. data/lib/sts/tbx_iso_tml/geographical_usage.rb +3 -0
  405. data/lib/sts/tbx_iso_tml/grammatical_gender.rb +2 -0
  406. data/lib/sts/tbx_iso_tml/grammatical_number.rb +2 -0
  407. data/lib/sts/tbx_iso_tml/italic.rb +27 -1
  408. data/lib/sts/tbx_iso_tml/lang_set.rb +2 -0
  409. data/lib/sts/tbx_iso_tml/mfenced.rb +2 -0
  410. data/lib/sts/tbx_iso_tml/mfrac.rb +2 -2
  411. data/lib/sts/tbx_iso_tml/mi.rb +3 -2
  412. data/lib/sts/tbx_iso_tml/mrow.rb +2 -2
  413. data/lib/sts/tbx_iso_tml/mspace.rb +2 -0
  414. data/lib/sts/tbx_iso_tml/mstyle.rb +2 -2
  415. data/lib/sts/tbx_iso_tml/msub.rb +2 -0
  416. data/lib/sts/tbx_iso_tml/msup.rb +4 -1
  417. data/lib/sts/tbx_iso_tml/munder.rb +3 -0
  418. data/lib/sts/tbx_iso_tml/munderover.rb +2 -0
  419. data/lib/sts/tbx_iso_tml/normative_authorization.rb +2 -0
  420. data/lib/sts/tbx_iso_tml/note.rb +11 -7
  421. data/lib/sts/tbx_iso_tml/part_of_speech.rb +2 -0
  422. data/lib/sts/tbx_iso_tml/pronunciation.rb +3 -0
  423. data/lib/sts/tbx_iso_tml/see.rb +2 -0
  424. data/lib/sts/tbx_iso_tml/semantics.rb +2 -0
  425. data/lib/sts/tbx_iso_tml/source.rb +6 -0
  426. data/lib/sts/tbx_iso_tml/subject_field.rb +2 -0
  427. data/lib/sts/tbx_iso_tml/sup.rb +3 -2
  428. data/lib/sts/tbx_iso_tml/table.rb +1 -0
  429. data/lib/sts/tbx_iso_tml/table_wrap.rb +3 -1
  430. data/lib/sts/tbx_iso_tml/table_wrap_foot.rb +3 -0
  431. data/lib/sts/tbx_iso_tml/tbody.rb +9 -1
  432. data/lib/sts/tbx_iso_tml/td.rb +122 -17
  433. data/lib/sts/tbx_iso_tml/term.rb +9 -5
  434. data/lib/sts/tbx_iso_tml/term_type.rb +2 -0
  435. data/lib/sts/tbx_iso_tml/tfoot.rb +5 -1
  436. data/lib/sts/tbx_iso_tml/th.rb +133 -18
  437. data/lib/sts/tbx_iso_tml/thead.rb +9 -1
  438. data/lib/sts/tbx_iso_tml/tr.rb +16 -0
  439. data/lib/sts/tbx_iso_tml/xref.rb +2 -2
  440. data/lib/sts/version.rb +1 -1
  441. data/lib/sts.rb +1 -2
  442. data/reference-docs/Guidelines for coding ed.2.1.pdf +0 -0
  443. data/reference-docs/NISO-STS-1-2-compare-1-0.pdf +0 -0
  444. data/reference-docs/NISOSTS-guidelines-v1.0.pdf +0 -0
  445. metadata +76 -3
  446. data/lib/sts/niso_sts/mathml.rb +0 -69
@@ -0,0 +1,164 @@
1
+ # 10: Test Coverage Improvements
2
+
3
+ **Priority**: ONGOING
4
+ **Category**: Quality
5
+ **Estimated Effort**: Ongoing
6
+ **Files Affected**: `spec/`
7
+
8
+ ## Current Test Structure
9
+
10
+ ```
11
+ spec/
12
+ ├── spec_helper.rb
13
+ ├── sts_spec.rb # Core parsing/serialization tests
14
+ ├── round_trip/
15
+ │ └── reference_docs_spec.rb # Round-trip tests with ISO doc fixtures
16
+ └── fixtures/
17
+ └── *.xml # Test XML documents
18
+ ```
19
+
20
+ ## Test Categories Needed
21
+
22
+ ### 1. Unit Tests Per Element
23
+
24
+ Each model class should have unit tests covering:
25
+
26
+ ```ruby
27
+ # spec/sts/niso_sts/paragraph_spec.rb
28
+ RSpec.describe Sts::NisoSts::Paragraph do
29
+ describe "XML parsing" do
30
+ it "parses <p> with text content"
31
+ it "parses <p> with mixed content"
32
+ it "parses <p> with @id attribute"
33
+ it "parses <p> with @content-type attribute"
34
+ it "parses <p> with @xml:lang attribute"
35
+ end
36
+
37
+ describe "XML serialization" do
38
+ it "round-trips text content"
39
+ it "round-trips mixed content"
40
+ it "round-trips all attributes"
41
+ end
42
+ end
43
+ ```
44
+
45
+ Priority elements for unit tests:
46
+ - `Standard`, `Front`, `Body`, `Back` — structural
47
+ - `Section`, `Paragraph` — high frequency
48
+ - `Fig`, `TableWrap`, `Graphic` — media
49
+ - `Ref`, `RefList`, `Xref` — references
50
+ - `TermSec`, `TermDisplay` — terminology
51
+ - `Permissions` — after model fix
52
+
53
+ ### 2. Schema Validation Tests
54
+
55
+ ```ruby
56
+ # spec/schema_validation_spec.rb
57
+ RSpec.describe "Schema compliance" do
58
+ context "NISO STS 1.0" do
59
+ it "validates against NISO STS Extended XSD"
60
+ it "validates against NISO STS Interchange XSD"
61
+ end
62
+
63
+ context "ISOSTS v1.1" do
64
+ it "validates against ISOSTS DTD"
65
+ end
66
+
67
+ context "NISO STS 1.2" do
68
+ it "validates against NISO STS 1.2 XSD"
69
+ end
70
+ end
71
+ ```
72
+
73
+ ### 3. Version-Specific Tests (After TODO 04)
74
+
75
+ ```ruby
76
+ # spec/versioning/register_spec.rb
77
+ RSpec.describe "Schema versioning" do
78
+ it "loads ISOSTS v1.1 register independently"
79
+ it "loads NISO STS 1.0 register independently"
80
+ it "loads NISO STS 1.2 register independently"
81
+ it "prevents cross-register contamination"
82
+ end
83
+ ```
84
+
85
+ ### 4. Profile Validation Tests (After TODO 08)
86
+
87
+ ```ruby
88
+ # spec/profiles/iso_iec_validator_spec.rb
89
+ RSpec.describe Sts::Profiles::IsoIec::Validator do
90
+ it "rejects document without <front>"
91
+ it "accepts valid ISO document"
92
+ it "validates ID scheme conventions"
93
+ it "validates metadata requirements"
94
+ end
95
+ ```
96
+
97
+ ### 5. Anti-Pattern Regression Tests
98
+
99
+ ```ruby
100
+ # spec/anti_patterns_spec.rb
101
+ RSpec.describe "No anti-patterns in codebase" do
102
+ it "contains no method_missing definitions"
103
+ it "contains no respond_to_missing definitions"
104
+ it "contains no send calls"
105
+ it "contains no Object.const_get calls"
106
+ end
107
+ ```
108
+
109
+ ### 6. Performance Tests
110
+
111
+ ```ruby
112
+ # spec/performance_spec.rb
113
+ RSpec.describe "Performance" do
114
+ it "parses large document within time budget"
115
+ it "serialization doesn't regress from baseline"
116
+ end
117
+ ```
118
+
119
+ ## Test Fixtures Needed
120
+
121
+ | Fixture | Purpose | Priority |
122
+ |---------|---------|----------|
123
+ | Simple standard (minimal) | Basic round-trip | HIGH |
124
+ | IEC standard with license | Permissions testing | HIGH |
125
+ | Document with index | Index hierarchy | HIGH |
126
+ | Document with TOC | TOC hierarchy | HIGH |
127
+ | Document with code blocks | Code element testing | HIGH |
128
+ | Document with MathML | Formula testing | MEDIUM |
129
+ | Document with TBX | Terminology testing | MEDIUM |
130
+ | Document with OASIS tables | CALS table testing | LOW |
131
+ | Multi-language document | xml:lang testing | MEDIUM |
132
+ | Amendment/corrigendum | Amendment structure | MEDIUM |
133
+ | National adoption | std-doc-meta testing | LOW |
134
+
135
+ ## Coverage Metrics
136
+
137
+ Track coverage with:
138
+ ```bash
139
+ COVERAGE=true bundle exec rspec
140
+ ```
141
+
142
+ Target: >80% line coverage for `lib/sts/`
143
+
144
+ ## Dependencies
145
+
146
+ All other TODOs feed into this — add tests as features are implemented.
147
+
148
+ ## TODO Checklist
149
+
150
+ - [x] Add anti-pattern regression test
151
+ - [x] Add unit tests for structural elements (Standard, Front, Body, Back)
152
+ - [x] Add unit tests for Section and Paragraph
153
+ - [x] Add unit tests for Fig, TableWrap, Graphic
154
+ - [x] Add unit tests for Ref, RefList, Xref
155
+ - [x] Add unit tests for TermSec, TermDisplay
156
+ - [x] Add unit tests for Permissions (after model fix)
157
+ - [x] Add unit tests for new elements (ProcessingMeta, Code, Legend, InlineMedia, TableWrapGroup, DefHead)
158
+ - [x] Add unit tests for attribute additions (Title, Caption, Label, ExtLink, AwardId, DefItem)
159
+ - [x] Add unit tests for Index and TOC hierarchy elements
160
+ - [ ] Add schema validation tests
161
+ - [ ] Add versioning tests (after TODO 04)
162
+ - [x] Add profile validation tests (after TODO 08)
163
+ - [x] Set up coverage tracking
164
+ - [x] Achieve >80% line coverage target (achieved 99.8%)
@@ -0,0 +1,168 @@
1
+ # 11: Duplicate Model Resolution
2
+
3
+ **Priority**: MEDIUM
4
+ **Category**: Architecture
5
+ **Estimated Effort**: High
6
+ **Files Affected**: `lib/sts/iso_sts/`, `lib/sts/niso_sts/`
7
+
8
+ ## Problem
9
+
10
+ Many model classes exist in both `Sts::IsoSts` and `Sts::NisoSts` with the same XML element name but potentially different attributes. This creates:
11
+
12
+ 1. **Maintenance burden**: Changes must be duplicated
13
+ 2. **Divergence risk**: Models drift apart over time
14
+ 3. **Ambiguity**: Which class should be used?
15
+
16
+ ## Identified Duplicates
17
+
18
+ ### Confirmed Different (Must Stay Separate)
19
+
20
+ These elements have genuinely different attribute sets between ISOSTS and NISO STS:
21
+
22
+ | Element | IsoSts Version | NisoSts Version | Difference |
23
+ |---------|---------------|----------------|------------|
24
+ | `<p>` | Paragraph | Paragraph | ISOSTS: 4 attrs; NISO STS: 7 attrs (adds `@originator`, `@style-type`, `@xml:base`) |
25
+ | `<standard>` | Standard | Standard | ISOSTS: DTD-based; NISO STS: XSD-based |
26
+
27
+ ### Potentially Identical (Audit Needed)
28
+
29
+ These elements likely have the same model but are duplicated:
30
+
31
+ | Element | IsoSts File | NisoSts File |
32
+ |---------|-------------|--------------|
33
+ | `<bold>` | Bold | Bold |
34
+ | `<italic>` | Italic | Italic |
35
+ | `<sub>` | Sub | Sub |
36
+ | `<sup>` | Sup | Sup |
37
+ | `<underline>` | Underline | Underline |
38
+ | `<monospace>` | Monospace | Monospace |
39
+ | `<styled-content>` | StyledContent | StyledContent |
40
+ | `<named-content>` | NamedContent | NamedContent |
41
+ | `<xref>` | Xref | Xref |
42
+ | `<ext-link>` | ExtLink | ExtLink |
43
+ | `<break>` | Break | Break |
44
+ | `<list>` | List | List |
45
+ | `<list-item>` | ListItem | ListItem |
46
+ | `<def-list>` | DefList | DefList |
47
+ | `<def-item>` | DefItem | DefItem |
48
+ | `<table>` | Table | Table |
49
+ | `<tr>` | Tr | Tr |
50
+ | `<td>` | Td | Td |
51
+ | `<th>` | Th | Th |
52
+ | `<fig>` | Fig | Fig |
53
+ | `<graphic>` | Graphic | Graphic |
54
+ | `<caption>` | Caption | Caption |
55
+ | `<title>` | Title | Title |
56
+ | `<label>` | Label | Label |
57
+ | `<disp-formula>` | DispFormula | DispFormula |
58
+ | `<inline-formula>` | InlineFormula | InlineFormula |
59
+
60
+ ## Resolution Strategy
61
+
62
+ ### For Genuinely Different Models
63
+
64
+ Keep separate but share a base class:
65
+
66
+ ```ruby
67
+ # lib/sts/base/paragraph.rb
68
+ module Sts
69
+ module Base
70
+ class Paragraph < Lutaml::Model::Serializable
71
+ # Shared attributes common to ISOSTS and NISO STS
72
+ attribute :id, :string
73
+ attribute :content_type, :string
74
+ attribute :specific_use, :string
75
+
76
+ xml do
77
+ element "p"
78
+ mixed_content
79
+ map_attribute "id", to: :id
80
+ map_attribute "content-type", to: :content_type
81
+ map_attribute "specific-use", to: :specific_use
82
+ # Children injected by content groups
83
+ end
84
+ end
85
+ end
86
+ end
87
+
88
+ # lib/sts/iso_sts/paragraph.rb
89
+ module Sts
90
+ module IsoSts
91
+ class Paragraph < ::Sts::Base::Paragraph
92
+ # ISOSTS-specific: only 4 attrs
93
+ attribute :xml_lang, :string
94
+
95
+ xml do
96
+ root "p"
97
+ map_attribute "xml:lang", to: :xml_lang
98
+ end
99
+ end
100
+ end
101
+ end
102
+
103
+ # lib/sts/niso_sts/paragraph.rb
104
+ module Sts
105
+ module NisoSts
106
+ class Paragraph < ::Sts::Base::Paragraph
107
+ # NISO STS Extended: 7 attrs
108
+ attribute :xml_lang, :string
109
+ attribute :xml_base, :string
110
+ attribute :originator, :string
111
+ attribute :style_type, :string
112
+
113
+ xml do
114
+ root "p"
115
+ map_attribute "xml:lang", to: :xml_lang
116
+ map_attribute "xml:base", to: :xml_base
117
+ map_attribute "originator", to: :originator
118
+ map_attribute "style-type", to: :style_type
119
+ end
120
+ end
121
+ end
122
+ end
123
+ ```
124
+
125
+ ### For Identical Models
126
+
127
+ Use the base class directly — no namespace-specific subclass needed:
128
+
129
+ ```ruby
130
+ # Both IsoSts and NisoSts can use Sts::Base::Bold
131
+ # Remove Sts::IsoSts::Bold and Sts::NisoSts::Bold
132
+ # Add alias in each namespace if needed for API compatibility
133
+ module Sts
134
+ module IsoSts
135
+ Bold = ::Sts::Base::Bold
136
+ end
137
+ module NisoSts
138
+ Bold = ::Sts::Base::Bold
139
+ end
140
+ end
141
+ ```
142
+
143
+ ## Audit Process
144
+
145
+ For each duplicate pair:
146
+
147
+ 1. Read ISOSTS DTD definition of the element
148
+ 2. Read NISO STS XSD definition of the element
149
+ 3. Compare attributes and children
150
+ 4. Categorize: identical, subset, or different
151
+ 5. Decide: share base, extend base, or keep separate
152
+
153
+ ## Dependencies
154
+
155
+ - `03-namespace-coupling.md` — base type creation
156
+ - `04-register-versioning.md` — versioned class hierarchy
157
+
158
+ ## TODO Checklist
159
+
160
+ - [ ] Audit all duplicate model pairs (25+ elements)
161
+ - [ ] Categorize each pair: identical / subset / different
162
+ - [ ] Create base classes for genuinely shared types
163
+ - [ ] Refactor ISOSTS versions to extend bases
164
+ - [ ] Refactor NISO STS versions to extend bases
165
+ - [ ] Replace direct references with namespace aliases where identical
166
+ - [ ] Remove duplicate implementations
167
+ - [ ] Run full round-trip test suite
168
+ - [ ] Verify no behavioral changes
@@ -3,12 +3,14 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class AnnexType < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  attribute :content, :string, collection: true
7
8
  attribute :bold, ::Sts::IsoSts::Bold
8
9
  attribute :italic, ::Sts::IsoSts::Italic
9
10
 
10
11
  xml do
11
12
  element "annex-type"
13
+ map_attribute "id", to: :id
12
14
  mixed_content
13
15
 
14
16
  map_content to: :content
@@ -16,10 +16,24 @@ module Sts
16
16
  attribute :fn_group, ::Sts::IsoSts::FnGroup, collection: true
17
17
  attribute :ref_list, ::Sts::IsoSts::RefList, collection: true
18
18
  attribute :permissions, ::Sts::NisoSts::Permissions
19
- attribute :non_normative_note, ::Sts::IsoSts::NonNormativeNote
19
+ attribute :non_normative_note, ::Sts::IsoSts::NonNormativeNote,
20
+ collection: true
21
+ attribute :non_normative_example, ::Sts::IsoSts::NonNormativeExample,
22
+ collection: true
23
+ attribute :table_wrap, ::Sts::TbxIsoTml::TableWrap, collection: true
24
+ attribute :list, ::Sts::IsoSts::List, collection: true
25
+ attribute :def_list, ::Sts::IsoSts::DefList, collection: true
26
+ attribute :fig, ::Sts::IsoSts::Fig, collection: true
27
+ attribute :array, ::Sts::IsoSts::Array, collection: true
28
+ attribute :graphic, ::Sts::IsoSts::Graphic, collection: true
29
+ attribute :preformat, ::Sts::IsoSts::Preformat, collection: true
30
+ attribute :styled_content, ::Sts::IsoSts::StyledContent, collection: true
31
+ attribute :disp_formula, ::Sts::IsoSts::DispFormula, collection: true
32
+ attribute :inline_formula, ::Sts::IsoSts::InlineFormula, collection: true
20
33
 
21
34
  xml do
22
35
  element "app"
36
+ ordered
23
37
 
24
38
  map_attribute "id", to: :id
25
39
  map_attribute "content-type", to: :content_type
@@ -36,6 +50,17 @@ module Sts
36
50
  map_element "ref-list", to: :ref_list
37
51
  map_element "permissions", to: :permissions
38
52
  map_element "non-normative-note", to: :non_normative_note
53
+ map_element "non-normative-example", to: :non_normative_example
54
+ map_element "table-wrap", to: :table_wrap
55
+ map_element "list", to: :list
56
+ map_element "def-list", to: :def_list
57
+ map_element "fig", to: :fig
58
+ map_element "array", to: :array
59
+ map_element "graphic", to: :graphic
60
+ map_element "preformat", to: :preformat
61
+ map_element "styled-content", to: :styled_content
62
+ map_element "disp-formula", to: :disp_formula
63
+ map_element "inline-formula", to: :inline_formula
39
64
  end
40
65
  end
41
66
  end
@@ -15,6 +15,7 @@ module Sts
15
15
 
16
16
  xml do
17
17
  element "app-group"
18
+ ordered
18
19
 
19
20
  map_attribute "id", to: :id
20
21
  map_attribute "content-type", to: :content_type
@@ -16,6 +16,7 @@ module Sts
16
16
 
17
17
  xml do
18
18
  element "array"
19
+ ordered
19
20
 
20
21
  map_attribute "id", to: :id
21
22
  map_attribute "content-type", to: :content_type
@@ -12,6 +12,7 @@ module Sts
12
12
 
13
13
  xml do
14
14
  element "back"
15
+ ordered
15
16
 
16
17
  map_attribute "id", to: :id
17
18
  map_attribute "content-type", to: :content_type
@@ -22,9 +22,12 @@ module Sts
22
22
  attribute :array, ::Sts::IsoSts::Array, collection: true
23
23
  attribute :ref_list, ::Sts::IsoSts::RefList, collection: true
24
24
  attribute :disp_quote, ::Sts::NisoSts::DispQuote, collection: true
25
+ attribute :editing_instruction, ::Sts::NisoSts::EditingInstruction,
26
+ collection: true
25
27
 
26
28
  xml do
27
29
  element "body"
30
+ ordered
28
31
 
29
32
  map_attribute "id", to: :id
30
33
  map_attribute "content-type", to: :content_type
@@ -44,6 +47,7 @@ module Sts
44
47
  map_element "array", to: :array
45
48
  map_element "ref-list", to: :ref_list
46
49
  map_element "disp-quote", to: :disp_quote
50
+ map_element "editing-instruction", to: :editing_instruction
47
51
  end
48
52
  end
49
53
  end
@@ -6,17 +6,23 @@ module Sts
6
6
  attribute :id, :string
7
7
  attribute :specific_use, :string
8
8
  attribute :content, :string, collection: true
9
- attribute :bold, ::Sts::IsoSts::Bold
10
- attribute :italic, ::Sts::IsoSts::Italic
11
- attribute :sub, ::Sts::NisoSts::Sub
12
- attribute :sup, ::Sts::NisoSts::Sup
13
- attribute :xref, ::Sts::TbxIsoTml::Xref
14
- attribute :ext_link, ::Sts::NisoSts::ExtLink
15
- attribute :uri, ::Sts::NisoSts::Uri
16
- attribute :inline_formula, ::Sts::IsoSts::InlineFormula
17
- attribute :named_content, ::Sts::NisoSts::NamedContent
18
- attribute :styled_content, ::Sts::IsoSts::StyledContent
19
- attribute :break, ::Sts::IsoSts::Break
9
+ attribute :bold, ::Sts::IsoSts::Bold, collection: true
10
+ attribute :italic, ::Sts::IsoSts::Italic, collection: true
11
+ attribute :sub, ::Sts::IsoSts::Sub, collection: true
12
+ attribute :sup, ::Sts::IsoSts::Sup, collection: true
13
+ attribute :xref, ::Sts::TbxIsoTml::Xref, collection: true
14
+ attribute :ext_link, ::Sts::IsoSts::ExtLink, collection: true
15
+ attribute :uri, ::Sts::IsoSts::Uri, collection: true
16
+ attribute :inline_formula, ::Sts::IsoSts::InlineFormula, collection: true
17
+ attribute :named_content, ::Sts::IsoSts::NamedContent, collection: true
18
+ attribute :styled_content, ::Sts::IsoSts::StyledContent, collection: true
19
+ attribute :break, ::Sts::IsoSts::Break, collection: true
20
+ attribute :std_ref, ::Sts::IsoSts::StdRef, collection: true
21
+ attribute :monospace, ::Sts::IsoSts::Monospace, collection: true
22
+ attribute :sc, ::Sts::IsoSts::Sc, collection: true
23
+ attribute :strike, ::Sts::IsoSts::Strike, collection: true
24
+ attribute :underline, ::Sts::IsoSts::Underline, collection: true
25
+ attribute :fn, ::Sts::TbxIsoTml::Fn, collection: true
20
26
 
21
27
  xml do
22
28
  element "bold"
@@ -38,6 +44,12 @@ module Sts
38
44
  map_element "named-content", to: :named_content
39
45
  map_element "styled-content", to: :styled_content
40
46
  map_element "break", to: :break
47
+ map_element "std-ref", to: :std_ref
48
+ map_element "monospace", to: :monospace
49
+ map_element "sc", to: :sc
50
+ map_element "strike", to: :strike
51
+ map_element "underline", to: :underline
52
+ map_element "fn", to: :fn
41
53
  end
42
54
  end
43
55
  end
@@ -3,8 +3,11 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class Break < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  xml do
7
8
  element "break"
9
+
10
+ map_attribute "id", to: :id
8
11
  end
9
12
  end
10
13
  end
@@ -15,6 +15,7 @@ module Sts
15
15
 
16
16
  xml do
17
17
  element "caption"
18
+ ordered
18
19
 
19
20
  map_attribute "id", to: :id
20
21
  map_attribute "specific-use", to: :specific_use
@@ -3,9 +3,11 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class CommRef < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  attribute :content, :string, collection: true
7
8
  xml do
8
9
  element "comm-ref"
10
+ map_attribute "id", to: :id
9
11
  mixed_content
10
12
 
11
13
  map_content to: :content
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sts
4
+ module IsoSts
5
+ class ContentLanguage < Lutaml::Model::Serializable
6
+ attribute :id, :string
7
+ attribute :content, :string, collection: true
8
+ attribute :lang, :string
9
+ attribute :specific_use, :string
10
+
11
+ xml do
12
+ element "content-language"
13
+ map_attribute "id", to: :id
14
+ mixed_content
15
+
16
+ map_content to: :content
17
+ map_attribute "lang", to: :lang
18
+ map_attribute "specific-use", to: :specific_use
19
+ end
20
+ end
21
+ end
22
+ end
@@ -3,12 +3,14 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class CopyrightHolder < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  attribute :content, :string, collection: true
7
- attribute :sub, ::Sts::NisoSts::Sub
8
- attribute :sup, ::Sts::NisoSts::Sup
8
+ attribute :sub, ::Sts::IsoSts::Sub
9
+ attribute :sup, ::Sts::IsoSts::Sup
9
10
 
10
11
  xml do
11
12
  element "copyright-holder"
13
+ map_attribute "id", to: :id
12
14
  mixed_content
13
15
 
14
16
  map_content to: :content
@@ -3,14 +3,16 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class CopyrightStatement < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  attribute :content, :string, collection: true
7
8
  attribute :bold, ::Sts::IsoSts::Bold
8
9
  attribute :italic, ::Sts::IsoSts::Italic
9
- attribute :ext_link, ::Sts::NisoSts::ExtLink
10
- attribute :uri, ::Sts::NisoSts::Uri
10
+ attribute :ext_link, ::Sts::IsoSts::ExtLink
11
+ attribute :uri, ::Sts::IsoSts::Uri
11
12
 
12
13
  xml do
13
14
  element "copyright-statement"
15
+ map_attribute "id", to: :id
14
16
  mixed_content
15
17
 
16
18
  map_content to: :content
@@ -3,11 +3,14 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class CopyrightYear < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  attribute :content, :string
7
8
 
8
9
  xml do
9
10
  element "copyright-year"
10
11
 
12
+ map_attribute "id", to: :id
13
+
11
14
  map_content to: :content
12
15
  end
13
16
  end
@@ -13,6 +13,7 @@ module Sts
13
13
 
14
14
  xml do
15
15
  element "def"
16
+ ordered
16
17
 
17
18
  map_attribute "rid", to: :rid
18
19
  map_attribute "id", to: :id
@@ -11,6 +11,7 @@ module Sts
11
11
 
12
12
  xml do
13
13
  element "def-item"
14
+ ordered
14
15
 
15
16
  map_attribute "id", to: :id
16
17
  map_attribute "specific-use", to: :specific_use
@@ -20,6 +20,7 @@ module Sts
20
20
 
21
21
  xml do
22
22
  element "def-list"
23
+ ordered
23
24
 
24
25
  map_attribute "id", to: :id
25
26
  map_attribute "list-type", to: :list_type
@@ -9,13 +9,15 @@ module Sts
9
9
  attribute :xml_lang, :string
10
10
  attribute :originator, :string
11
11
  attribute :label, ::Sts::IsoSts::Label
12
- attribute :math, ::Sts::IsoSts::Mathml2::Math
12
+ attribute :math, Mml::V3::Math
13
13
  attribute :bold, ::Sts::IsoSts::Bold
14
14
  attribute :italic, ::Sts::IsoSts::Italic
15
15
  attribute :non_normative_note, ::Sts::IsoSts::NonNormativeNote
16
16
  attribute :non_normative_example, ::Sts::IsoSts::NonNormativeExample
17
17
  attribute :styled_content, ::Sts::IsoSts::StyledContent
18
18
  attribute :preformat, ::Sts::IsoSts::Preformat
19
+ attribute :graphic, ::Sts::IsoSts::Graphic, collection: true
20
+ attribute :tex_math, ::Sts::NisoSts::TexMath
19
21
 
20
22
  xml do
21
23
  element "disp-formula"
@@ -34,6 +36,8 @@ module Sts
34
36
  map_element "non-normative-example", to: :non_normative_example
35
37
  map_element "styled-content", to: :styled_content
36
38
  map_element "preformat", to: :preformat
39
+ map_element "graphic", to: :graphic
40
+ map_element "tex-math", to: :tex_math
37
41
  end
38
42
  end
39
43
  end
@@ -3,9 +3,11 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class DocRef < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  attribute :content, :string, collection: true
7
8
  xml do
8
9
  element "doc-ref"
10
+ map_attribute "id", to: :id
9
11
  mixed_content
10
12
 
11
13
  map_content to: :content
@@ -3,6 +3,7 @@
3
3
  module Sts
4
4
  module IsoSts
5
5
  class DocumentIdentification < Lutaml::Model::Serializable
6
+ attribute :id, :string
6
7
  attribute :sdo, ::Sts::NisoSts::Sdo
7
8
  attribute :proj_id, ::Sts::NisoSts::ProjId
8
9
  attribute :language, ::Sts::IsoSts::Language
@@ -11,6 +12,8 @@ module Sts
11
12
 
12
13
  xml do
13
14
  element "doc-ident"
15
+ map_attribute "id", to: :id
16
+ ordered
14
17
 
15
18
  map_element "sdo", to: :sdo
16
19
  map_element "proj-id", to: :proj_id