mml 2.3.0 → 2.3.2

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 +4 -4
  2. data/.gitmodules +9 -0
  3. data/.rubocop.yml +4 -0
  4. data/.rubocop_todo.yml +83 -18
  5. data/Gemfile +0 -2
  6. data/README.adoc +176 -47
  7. data/Rakefile +16 -1
  8. data/lib/mml/base/common_attributes.rb +44 -0
  9. data/lib/mml/base/content/annotation.rb +28 -0
  10. data/lib/mml/base/content/annotation_xml.rb +31 -0
  11. data/lib/mml/base/content/apply.rb +27 -0
  12. data/lib/mml/base/content/arith.rb +243 -0
  13. data/lib/mml/base/content/bind.rb +27 -0
  14. data/lib/mml/base/content/bvar.rb +20 -0
  15. data/lib/mml/base/content/calculus.rb +103 -0
  16. data/lib/mml/base/content/cbytes.rb +24 -0
  17. data/lib/mml/base/content/cerror.rb +24 -0
  18. data/lib/mml/base/content/ci.rb +77 -0
  19. data/lib/mml/base/content/cn.rb +33 -0
  20. data/lib/mml/base/content/condition.rb +20 -0
  21. data/lib/mml/base/content/constants.rb +173 -0
  22. data/lib/mml/base/content/cs.rb +22 -0
  23. data/lib/mml/base/content/csymbol.rb +79 -0
  24. data/lib/mml/base/content/declare.rb +34 -0
  25. data/lib/mml/base/content/degree.rb +20 -0
  26. data/lib/mml/base/content/elementary_functions.rb +309 -0
  27. data/lib/mml/base/content/fn.rb +25 -0
  28. data/lib/mml/base/content/functions.rb +85 -0
  29. data/lib/mml/base/content/interval.rb +24 -0
  30. data/lib/mml/base/content/inverse.rb +25 -0
  31. data/lib/mml/base/content/lambda.rb +20 -0
  32. data/lib/mml/base/content/linear_algebra.rb +122 -0
  33. data/lib/mml/base/content/logic.rb +93 -0
  34. data/lib/mml/base/content/otherwise.rb +20 -0
  35. data/lib/mml/base/content/piece.rb +20 -0
  36. data/lib/mml/base/content/piecewise.rb +20 -0
  37. data/lib/mml/base/content/relations.rb +113 -0
  38. data/lib/mml/base/content/reln.rb +19 -0
  39. data/lib/mml/base/content/semantics.rb +27 -0
  40. data/lib/mml/base/content/sep.rb +19 -0
  41. data/lib/mml/base/content/sets.rb +163 -0
  42. data/lib/mml/base/content/share.rb +22 -0
  43. data/lib/mml/base/content/statistics.rb +95 -0
  44. data/lib/mml/base/content/vector_calculus.rb +63 -0
  45. data/lib/mml/base/content_loader.rb +195 -0
  46. data/lib/mml/base/maction.rb +1 -0
  47. data/lib/mml/base/math.rb +47 -0
  48. data/lib/mml/base/menclose.rb +1 -1
  49. data/lib/mml/base/mfenced.rb +2 -2
  50. data/lib/mml/base/mglyph.rb +2 -2
  51. data/lib/mml/base/mi.rb +9 -6
  52. data/lib/mml/base/mlabeledtr.rb +2 -6
  53. data/lib/mml/base/mn.rb +3 -2
  54. data/lib/mml/base/mo.rb +3 -3
  55. data/lib/mml/base/mrow.rb +0 -2
  56. data/lib/mml/base/ms.rb +4 -6
  57. data/lib/mml/base/mscarries.rb +1 -1
  58. data/lib/mml/base/mspace.rb +0 -2
  59. data/lib/mml/base/mstyle.rb +4 -8
  60. data/lib/mml/base/mtable.rb +8 -0
  61. data/lib/mml/base/mtd.rb +6 -0
  62. data/lib/mml/base/mtext.rb +0 -2
  63. data/lib/mml/base/semantics.rb +4 -2
  64. data/lib/mml/base/universal_presentation_attributes.rb +46 -0
  65. data/lib/mml/base/v3_common.rb +16 -0
  66. data/lib/mml/base/v3_presentation_attributes.rb +15 -0
  67. data/lib/mml/base/v4_attributes.rb +4 -18
  68. data/lib/mml/base.rb +11 -0
  69. data/lib/mml/common_elements.rb +336 -0
  70. data/lib/mml/context_configuration.rb +29 -0
  71. data/lib/mml/v2/annotation.rb +9 -0
  72. data/lib/mml/v2/annotation_xml.rb +9 -0
  73. data/lib/mml/v2/apply.rb +9 -0
  74. data/lib/mml/v2/arith.rb +93 -0
  75. data/lib/mml/v2/bind.rb +9 -0
  76. data/lib/mml/v2/bvar.rb +9 -0
  77. data/lib/mml/v2/calculus.rb +33 -0
  78. data/lib/mml/v2/ci.rb +9 -0
  79. data/lib/mml/v2/cn.rb +9 -0
  80. data/lib/mml/v2/common_elements.rb +34 -0
  81. data/lib/mml/v2/condition.rb +9 -0
  82. data/lib/mml/v2/configuration.rb +13 -0
  83. data/lib/mml/v2/constants.rb +65 -0
  84. data/lib/mml/v2/csymbol.rb +9 -0
  85. data/lib/mml/v2/degree.rb +9 -0
  86. data/lib/mml/v2/elementary_functions.rb +121 -0
  87. data/lib/mml/v2/fn.rb +9 -0
  88. data/lib/mml/v2/functions.rb +29 -0
  89. data/lib/mml/v2/interval.rb +9 -0
  90. data/lib/mml/v2/inverse.rb +9 -0
  91. data/lib/mml/v2/lambda.rb +9 -0
  92. data/lib/mml/v2/linear_algebra.rb +41 -0
  93. data/lib/mml/v2/logic.rb +33 -0
  94. data/lib/mml/v2/maction.rb +9 -0
  95. data/lib/mml/v2/maligngroup.rb +9 -0
  96. data/lib/mml/v2/malignmark.rb +9 -0
  97. data/lib/mml/v2/math.rb +11 -0
  98. data/lib/mml/v2/menclose.rb +9 -0
  99. data/lib/mml/v2/merror.rb +9 -0
  100. data/lib/mml/v2/mfenced.rb +9 -0
  101. data/lib/mml/v2/mfrac.rb +9 -0
  102. data/lib/mml/v2/mfraction.rb +9 -0
  103. data/lib/mml/v2/mglyph.rb +9 -0
  104. data/lib/mml/v2/mi.rb +9 -0
  105. data/lib/mml/v2/mlabeledtr.rb +9 -0
  106. data/lib/mml/v2/mlongdiv.rb +9 -0
  107. data/lib/mml/v2/mmultiscripts.rb +9 -0
  108. data/lib/mml/v2/mn.rb +9 -0
  109. data/lib/mml/v2/mo.rb +10 -0
  110. data/lib/mml/v2/mover.rb +9 -0
  111. data/lib/mml/v2/mpadded.rb +9 -0
  112. data/lib/mml/v2/mphantom.rb +9 -0
  113. data/lib/mml/v2/mprescripts.rb +9 -0
  114. data/lib/mml/v2/mroot.rb +9 -0
  115. data/lib/mml/v2/mrow.rb +9 -0
  116. data/lib/mml/v2/ms.rb +9 -0
  117. data/lib/mml/v2/mscarries.rb +9 -0
  118. data/lib/mml/v2/mscarry.rb +9 -0
  119. data/lib/mml/v2/msgroup.rb +9 -0
  120. data/lib/mml/v2/msline.rb +9 -0
  121. data/lib/mml/v2/mspace.rb +9 -0
  122. data/lib/mml/v2/msqrt.rb +9 -0
  123. data/lib/mml/v2/msrow.rb +9 -0
  124. data/lib/mml/v2/mstack.rb +9 -0
  125. data/lib/mml/v2/mstyle.rb +10 -0
  126. data/lib/mml/v2/msub.rb +9 -0
  127. data/lib/mml/v2/msubsup.rb +9 -0
  128. data/lib/mml/v2/msup.rb +9 -0
  129. data/lib/mml/v2/mtable.rb +9 -0
  130. data/lib/mml/v2/mtd.rb +9 -0
  131. data/lib/mml/v2/mtext.rb +9 -0
  132. data/lib/mml/v2/mtr.rb +9 -0
  133. data/lib/mml/v2/munder.rb +9 -0
  134. data/lib/mml/v2/munderover.rb +9 -0
  135. data/lib/mml/v2/namespace.rb +7 -0
  136. data/lib/mml/v2/none.rb +9 -0
  137. data/lib/mml/v2/otherwise.rb +9 -0
  138. data/lib/mml/v2/piece.rb +9 -0
  139. data/lib/mml/v2/piecewise.rb +9 -0
  140. data/lib/mml/v2/relations.rb +41 -0
  141. data/lib/mml/v2/reln.rb +13 -0
  142. data/lib/mml/v2/semantics.rb +9 -0
  143. data/lib/mml/v2/sep.rb +9 -0
  144. data/lib/mml/v2/sets.rb +57 -0
  145. data/lib/mml/v2/statistics.rb +33 -0
  146. data/lib/mml/v2/vector_calculus.rb +21 -0
  147. data/lib/mml/v2.rb +311 -0
  148. data/lib/mml/v3/annotation.rb +10 -0
  149. data/lib/mml/v3/annotation_xml.rb +10 -0
  150. data/lib/mml/v3/apply.rb +10 -0
  151. data/lib/mml/v3/arith.rb +115 -0
  152. data/lib/mml/v3/bind.rb +10 -0
  153. data/lib/mml/v3/calculus.rb +40 -0
  154. data/lib/mml/v3/cbytes.rb +10 -0
  155. data/lib/mml/v3/cerror.rb +10 -0
  156. data/lib/mml/v3/ci.rb +10 -0
  157. data/lib/mml/v3/cn.rb +10 -0
  158. data/lib/mml/v3/common_elements.rb +34 -0
  159. data/lib/mml/v3/constants.rb +80 -0
  160. data/lib/mml/v3/constructs.rb +55 -0
  161. data/lib/mml/v3/cs.rb +10 -0
  162. data/lib/mml/v3/csymbol.rb +10 -0
  163. data/lib/mml/v3/deprecated_content.rb +29 -0
  164. data/lib/mml/v3/elementary_functions.rb +145 -0
  165. data/lib/mml/v3/functions.rb +35 -0
  166. data/lib/mml/v3/linear_algebra.rb +50 -0
  167. data/lib/mml/v3/logic.rb +40 -0
  168. data/lib/mml/v3/maction.rb +1 -1
  169. data/lib/mml/v3/math.rb +7 -1
  170. data/lib/mml/v3/mi.rb +1 -0
  171. data/lib/mml/v3/mn.rb +1 -0
  172. data/lib/mml/v3/mo.rb +1 -0
  173. data/lib/mml/v3/mrow.rb +1 -0
  174. data/lib/mml/v3/ms.rb +1 -0
  175. data/lib/mml/v3/mstyle.rb +1 -0
  176. data/lib/mml/v3/mtext.rb +1 -0
  177. data/lib/mml/v3/relations.rb +50 -0
  178. data/lib/mml/v3/sets.rb +70 -0
  179. data/lib/mml/v3/statistics.rb +40 -0
  180. data/lib/mml/v3/vector_calculus.rb +25 -0
  181. data/lib/mml/v3.rb +25 -0
  182. data/lib/mml/v4/a.rb +4 -3
  183. data/lib/mml/v4/annotation.rb +10 -0
  184. data/lib/mml/v4/annotation_xml.rb +14 -0
  185. data/lib/mml/v4/apply.rb +9 -0
  186. data/lib/mml/v4/arith.rb +93 -0
  187. data/lib/mml/v4/calculus.rb +25 -0
  188. data/lib/mml/v4/cbytes.rb +9 -0
  189. data/lib/mml/v4/cerror.rb +9 -0
  190. data/lib/mml/v4/ci.rb +9 -0
  191. data/lib/mml/v4/cn.rb +9 -0
  192. data/lib/mml/v4/common_elements.rb +33 -0
  193. data/lib/mml/v4/constants.rb +65 -0
  194. data/lib/mml/v4/constructs.rb +49 -0
  195. data/lib/mml/v4/cs.rb +9 -0
  196. data/lib/mml/v4/csymbol.rb +9 -0
  197. data/lib/mml/v4/deprecated_content.rb +25 -0
  198. data/lib/mml/v4/elementary_functions.rb +118 -0
  199. data/lib/mml/v4/factorof.rb +9 -0
  200. data/lib/mml/v4/functions.rb +30 -0
  201. data/lib/mml/v4/limit.rb +9 -0
  202. data/lib/mml/v4/linear_algebra.rb +41 -0
  203. data/lib/mml/v4/logic.rb +33 -0
  204. data/lib/mml/v4/maction.rb +1 -2
  205. data/lib/mml/v4/maligngroup.rb +0 -1
  206. data/lib/mml/v4/malignmark.rb +0 -1
  207. data/lib/mml/v4/math.rb +1 -1
  208. data/lib/mml/v4/menclose.rb +0 -1
  209. data/lib/mml/v4/merror.rb +0 -1
  210. data/lib/mml/v4/mfenced.rb +0 -1
  211. data/lib/mml/v4/mfrac.rb +0 -1
  212. data/lib/mml/v4/mfraction.rb +0 -1
  213. data/lib/mml/v4/mglyph.rb +0 -1
  214. data/lib/mml/v4/mi.rb +1 -1
  215. data/lib/mml/v4/mlabeledtr.rb +0 -1
  216. data/lib/mml/v4/mlongdiv.rb +0 -1
  217. data/lib/mml/v4/mmultiscripts.rb +0 -1
  218. data/lib/mml/v4/mn.rb +1 -1
  219. data/lib/mml/v4/mo.rb +1 -1
  220. data/lib/mml/v4/mover.rb +0 -1
  221. data/lib/mml/v4/mpadded.rb +0 -1
  222. data/lib/mml/v4/mphantom.rb +0 -1
  223. data/lib/mml/v4/mprescripts.rb +0 -1
  224. data/lib/mml/v4/mroot.rb +0 -1
  225. data/lib/mml/v4/mrow.rb +1 -1
  226. data/lib/mml/v4/ms.rb +1 -1
  227. data/lib/mml/v4/mscarries.rb +0 -1
  228. data/lib/mml/v4/mscarry.rb +0 -1
  229. data/lib/mml/v4/msgroup.rb +0 -1
  230. data/lib/mml/v4/msline.rb +0 -1
  231. data/lib/mml/v4/mspace.rb +0 -1
  232. data/lib/mml/v4/msqrt.rb +0 -1
  233. data/lib/mml/v4/msrow.rb +0 -1
  234. data/lib/mml/v4/mstack.rb +0 -1
  235. data/lib/mml/v4/mstyle.rb +1 -1
  236. data/lib/mml/v4/msub.rb +0 -1
  237. data/lib/mml/v4/msubsup.rb +0 -1
  238. data/lib/mml/v4/msup.rb +0 -1
  239. data/lib/mml/v4/mtable.rb +0 -1
  240. data/lib/mml/v4/mtd.rb +0 -1
  241. data/lib/mml/v4/mtext.rb +1 -1
  242. data/lib/mml/v4/mtr.rb +0 -1
  243. data/lib/mml/v4/munder.rb +0 -1
  244. data/lib/mml/v4/munderover.rb +0 -1
  245. data/lib/mml/v4/none.rb +0 -1
  246. data/lib/mml/v4/relations.rb +37 -0
  247. data/lib/mml/v4/semantics.rb +0 -1
  248. data/lib/mml/v4/sets.rb +57 -0
  249. data/lib/mml/v4/statistics.rb +33 -0
  250. data/lib/mml/v4/tendsto.rb +9 -0
  251. data/lib/mml/v4/vector_calculus.rb +21 -0
  252. data/lib/mml/v4.rb +421 -44
  253. data/lib/mml/version.rb +1 -1
  254. data/lib/mml/versioned_parser.rb +1 -1
  255. data/lib/mml.rb +3 -1
  256. data/reference-docs/mathml-source/pubtext/mathmlspec.dtd +150 -0
  257. data/reference-docs/mathml-source/pubtext/xmlspec.dtd +2649 -0
  258. data/reference-docs/mathml-source/readme.txt +40 -0
  259. data/reference-docs/mathml-source/run +296 -0
  260. data/reference-docs/mathml-source/style/html/html2xhtml.xsl +216 -0
  261. data/reference-docs/mathml-source/style/html/images.xsl +98 -0
  262. data/reference-docs/mathml-source/style/html/mml6.xsl +1156 -0
  263. data/reference-docs/mathml-source/style/html/mmldiff.xsl +566 -0
  264. data/reference-docs/mathml-source/style/html/mmlspec.xsl +2531 -0
  265. data/reference-docs/mathml-source/style/html/slices-common.xsl +312 -0
  266. data/reference-docs/mathml-source/style/html/slices.xsl +48 -0
  267. data/reference-docs/mathml-source/style/html/xmlspec.xsl +2542 -0
  268. data/reference-docs/mathml-source/style/pdf/mathmlspec.xsl +2510 -0
  269. data/reference-docs/mathml-source/xml/changes.xml +773 -0
  270. data/reference-docs/mathml-source/xml/character-set.xml +1011 -0
  271. data/reference-docs/mathml-source/xml/content-element-def.xml +6143 -0
  272. data/reference-docs/mathml-source/xml/content-markup.xml +8178 -0
  273. data/reference-docs/mathml-source/xml/contributors.xml +425 -0
  274. data/reference-docs/mathml-source/xml/dom-bindings.xml +20 -0
  275. data/reference-docs/mathml-source/xml/dom-intro.xml +114 -0
  276. data/reference-docs/mathml-source/xml/fundamentals.xml +1646 -0
  277. data/reference-docs/mathml-source/xml/glossary.xml +519 -0
  278. data/reference-docs/mathml-source/xml/interface.xml +1096 -0
  279. data/reference-docs/mathml-source/xml/introduction.xml +724 -0
  280. data/reference-docs/mathml-source/xml/mathml-css-sample.xml +304 -0
  281. data/reference-docs/mathml-source/xml/mathml-dom.xml +3813 -0
  282. data/reference-docs/mathml-source/xml/mathml-spec.xml +356 -0
  283. data/reference-docs/mathml-source/xml/mixing.xml +982 -0
  284. data/reference-docs/mathml-source/xml/operator-dict.xml +551 -0
  285. data/reference-docs/mathml-source/xml/parsing.xml +2565 -0
  286. data/reference-docs/mathml-source/xml/presentation-markup.xml +6834 -0
  287. data/reference-docs/mathml-source/xml/references.xml +323 -0
  288. data/reference-docs/mathml-source/xml/validation-grammar.xml +877 -0
  289. data/schemas/README.adoc +17 -0
  290. data/schemas/mathml2/common/common-attribs.xsd +41 -0
  291. data/schemas/mathml2/common/math.xsd +126 -0
  292. data/schemas/mathml2/common/xlink-href.xsd +20 -0
  293. data/schemas/mathml2/content/CVS/Entries +16 -0
  294. data/schemas/mathml2/content/CVS/Repository +1 -0
  295. data/schemas/mathml2/content/CVS/Root +1 -0
  296. data/schemas/mathml2/content/arith.xsd +90 -0
  297. data/schemas/mathml2/content/calculus.xsd +146 -0
  298. data/schemas/mathml2/content/common-attrib.xsd +30 -0
  299. data/schemas/mathml2/content/constants.xsd +83 -0
  300. data/schemas/mathml2/content/constructs.xsd +260 -0
  301. data/schemas/mathml2/content/elementary-functions.xsd +117 -0
  302. data/schemas/mathml2/content/functions.xsd +73 -0
  303. data/schemas/mathml2/content/linear-algebra.xsd +173 -0
  304. data/schemas/mathml2/content/logic.xsd +53 -0
  305. data/schemas/mathml2/content/relations.xsd +55 -0
  306. data/schemas/mathml2/content/semantics.xsd +85 -0
  307. data/schemas/mathml2/content/sets.xsd +236 -0
  308. data/schemas/mathml2/content/statistics.xsd +136 -0
  309. data/schemas/mathml2/content/tokens.xsd +120 -0
  310. data/schemas/mathml2/content/tokens.xsd.~1.3.~ +119 -0
  311. data/schemas/mathml2/content/vector-calculus.xsd +88 -0
  312. data/schemas/mathml2/mathml2.xsd +59 -0
  313. data/schemas/mathml2/presentation/action.xsd +44 -0
  314. data/schemas/mathml2/presentation/characters.xsd +37 -0
  315. data/schemas/mathml2/presentation/common-attribs.xsd +113 -0
  316. data/schemas/mathml2/presentation/common-types.xsd +103 -0
  317. data/schemas/mathml2/presentation/error.xsd +40 -0
  318. data/schemas/mathml2/presentation/layout.xsd +195 -0
  319. data/schemas/mathml2/presentation/scripts.xsd +186 -0
  320. data/schemas/mathml2/presentation/space.xsd +52 -0
  321. data/schemas/mathml2/presentation/style.xsd +69 -0
  322. data/schemas/mathml2/presentation/table.xsd +216 -0
  323. data/schemas/mathml2/presentation/tokens.xsd +124 -0
  324. data/schemas/mathml3/mathml3-common.xsd +99 -0
  325. data/schemas/mathml3/mathml3-content.xsd +684 -0
  326. data/schemas/mathml3/mathml3-presentation.xsd +2151 -0
  327. data/schemas/mathml3/mathml3-strict-content.xsd +186 -0
  328. data/schemas/mathml3/mathml3.xsd +9 -0
  329. data/schemas/mathml4/mathml4-content.rnc +382 -0
  330. data/schemas/mathml4/mathml4-core.rnc +361 -0
  331. data/schemas/mathml4/mathml4-presentation.rnc +358 -0
  332. data/schemas/mathml4/mathml4-strict-content.rnc +86 -0
  333. data/schemas/mathml4/mathml4.rnc +21 -0
  334. data/schemas/mathml4/mathml4.rnc.1 +21 -0
  335. data/schemas/mathml4/mathml4.rng +37 -0
  336. metadata +249 -2
@@ -4,6 +4,9 @@ require "lutaml/model"
4
4
 
5
5
  module Mml
6
6
  class CommonElements < Lutaml::Model::Serializable
7
+ include Base::CommonAttributes
8
+
9
+ # Presentation elements
7
10
  attribute :mmultiscripts_value, :mmultiscripts, collection: true
8
11
  attribute :maligngroup_value, :maligngroup, collection: true
9
12
  attribute :malignmark_value, :malignmark, collection: true
@@ -41,8 +44,175 @@ module Mml
41
44
  attribute :mo_value, :mo, collection: true
42
45
  attribute :mn_value, :mn, collection: true
43
46
  attribute :ms_value, :ms, collection: true
47
+ attribute :maction_value, :maction, collection: true
48
+
49
+ # Content elements - containers
50
+ attribute :apply_value, :apply, collection: true
51
+ attribute :ci_value, :ci, collection: true
52
+ attribute :cn_value, :cn, collection: true
53
+ attribute :csymbol_value, :csymbol, collection: true
54
+ attribute :annotation_xml_value, :"annotation-xml", collection: true
55
+
56
+ # Content elements - constructs
57
+ attribute :bind_value, :bind, collection: true
58
+ attribute :bvar_value, :bvar, collection: true
59
+ attribute :condition_value, :condition, collection: true
60
+ attribute :interval_value, :interval, collection: true
61
+ attribute :lambda_value, :lambda, collection: true
62
+ attribute :inverse_value, :inverse, collection: true
63
+ attribute :degree_value, :degree, collection: true
64
+ attribute :piecewise_value, :piecewise, collection: true
65
+ attribute :piece_value, :piece, collection: true
66
+ attribute :otherwise_value, :otherwise, collection: true
67
+ attribute :sep_value, :sep, collection: true
68
+
69
+ # Content elements - arithmetic
70
+ attribute :abs_value, :abs, collection: true
71
+ attribute :conjugate_value, :conjugate, collection: true
72
+ attribute :arg_value, :arg, collection: true
73
+ attribute :real_value, :real, collection: true
74
+ attribute :imaginary_value, :imaginary, collection: true
75
+ attribute :floor_value, :floor, collection: true
76
+ attribute :ceiling_value, :ceiling, collection: true
77
+ attribute :quotient_value, :quotient, collection: true
78
+ attribute :divide_value, :divide, collection: true
79
+ attribute :rem_value, :rem, collection: true
80
+ attribute :minus_value, :minus, collection: true
81
+ attribute :plus_value, :plus, collection: true
82
+ attribute :times_value, :times, collection: true
83
+ attribute :power_value, :power, collection: true
84
+ attribute :root_value, :root, collection: true
85
+ attribute :max_value, :max, collection: true
86
+ attribute :min_value, :min, collection: true
87
+ attribute :gcd_value, :gcd, collection: true
88
+ attribute :lcm_value, :lcm, collection: true
89
+ attribute :sum_value, :sum, collection: true
90
+ attribute :product_value, :product, collection: true
91
+ attribute :factorial_value, :factorial, collection: true
92
+
93
+ # Content elements - logic
94
+ attribute :and_value, :and, collection: true
95
+ attribute :or_value, :or, collection: true
96
+ attribute :xor_value, :xor, collection: true
97
+ attribute :not_value, :not, collection: true
98
+ attribute :implies_value, :implies, collection: true
99
+ attribute :forall_value, :forall, collection: true
100
+ attribute :exists_value, :exists, collection: true
101
+
102
+ # Content elements - relations
103
+ attribute :eq_value, :eq, collection: true
104
+ attribute :neq_value, :neq, collection: true
105
+ attribute :lt_value, :lt, collection: true
106
+ attribute :gt_value, :gt, collection: true
107
+ attribute :leq_value, :leq, collection: true
108
+ attribute :geq_value, :geq, collection: true
109
+ attribute :equivalent_value, :equivalent, collection: true
110
+ attribute :approx_value, :approx, collection: true
111
+
112
+ # Content elements - sets
113
+ attribute :set_value, :set, collection: true
114
+ attribute :list_value, :list, collection: true
115
+ attribute :union_value, :union, collection: true
116
+ attribute :intersect_value, :intersect, collection: true
117
+ attribute :in_value, :in, collection: true
118
+ attribute :notin_value, :notin, collection: true
119
+ attribute :notsubset_value, :notsubset, collection: true
120
+ attribute :notprsubset_value, :notprsubset, collection: true
121
+ attribute :subset_value, :subset, collection: true
122
+ attribute :prsubset_value, :prsubset, collection: true
123
+ attribute :setdiff_value, :setdiff, collection: true
124
+ attribute :card_value, :card, collection: true
125
+ attribute :cartesianproduct_value, :cartesianproduct, collection: true
126
+
127
+ # Content elements - calculus
128
+ attribute :diff_value, :diff, collection: true
129
+ attribute :partialdiff_value, :partialdiff, collection: true
130
+ attribute :int_value, :int, collection: true
131
+ attribute :lowlimit_value, :lowlimit, collection: true
132
+ attribute :uplimit_value, :uplimit, collection: true
133
+
134
+ # Content elements - vector calculus
135
+ attribute :divergence_value, :divergence, collection: true
136
+ attribute :grad_value, :grad, collection: true
137
+ attribute :curl_value, :curl, collection: true
138
+ attribute :laplacian_value, :laplacian, collection: true
139
+
140
+ # Content elements - functions
141
+ attribute :compose_value, :compose, collection: true
142
+ attribute :domain_value, :domain, collection: true
143
+ attribute :codomain_value, :codomain, collection: true
144
+ attribute :image_value, :image, collection: true
145
+ attribute :ident_value, :ident, collection: true
146
+
147
+ # Content elements - elementary functions
148
+ attribute :sin_value, :sin, collection: true
149
+ attribute :cos_value, :cos, collection: true
150
+ attribute :tan_value, :tan, collection: true
151
+ attribute :sec_value, :sec, collection: true
152
+ attribute :csc_value, :csc, collection: true
153
+ attribute :cot_value, :cot, collection: true
154
+ attribute :sinh_value, :sinh, collection: true
155
+ attribute :cosh_value, :cosh, collection: true
156
+ attribute :tanh_value, :tanh, collection: true
157
+ attribute :sech_value, :sech, collection: true
158
+ attribute :csch_value, :csch, collection: true
159
+ attribute :coth_value, :coth, collection: true
160
+ attribute :arcsin_value, :arcsin, collection: true
161
+ attribute :arccos_value, :arccos, collection: true
162
+ attribute :arctan_value, :arctan, collection: true
163
+ attribute :arcsec_value, :arcsec, collection: true
164
+ attribute :arccsc_value, :arccsc, collection: true
165
+ attribute :arccot_value, :arccot, collection: true
166
+ attribute :arcsinh_value, :arcsinh, collection: true
167
+ attribute :arccosh_value, :arccosh, collection: true
168
+ attribute :arctanh_value, :arctanh, collection: true
169
+ attribute :arcsech_value, :arcsech, collection: true
170
+ attribute :arccsch_value, :arccsch, collection: true
171
+ attribute :arccoth_value, :arccoth, collection: true
172
+ attribute :exp_value, :exp, collection: true
173
+ attribute :ln_value, :ln, collection: true
174
+ attribute :log_value, :log, collection: true
175
+
176
+ # Content elements - constants
177
+ attribute :integers_value, :integers, collection: true
178
+ attribute :reals_value, :reals, collection: true
179
+ attribute :rationals_value, :rationals, collection: true
180
+ attribute :naturalnumbers_value, :naturalnumbers, collection: true
181
+ attribute :complexes_value, :complexes, collection: true
182
+ attribute :primes_value, :primes, collection: true
183
+ attribute :exponentiale_value, :exponentiale, collection: true
184
+ attribute :imaginaryi_value, :imaginaryi, collection: true
185
+ attribute :notanumber_value, :notanumber, collection: true
186
+ attribute :true_value, :true, collection: true # rubocop:disable Lint/BooleanSymbol
187
+ attribute :false_value, :false, collection: true # rubocop:disable Lint/BooleanSymbol
188
+ attribute :emptyset_value, :emptyset, collection: true
189
+ attribute :pi_value, :pi, collection: true
190
+ attribute :eulergamma_value, :eulergamma, collection: true
191
+ attribute :infinity_value, :infinity, collection: true
192
+
193
+ # Content elements - linear algebra
194
+ attribute :vector_value, :vector, collection: true
195
+ attribute :matrix_value, :matrix, collection: true
196
+ attribute :matrixrow_value, :matrixrow, collection: true
197
+ attribute :determinant_value, :determinant, collection: true
198
+ attribute :transpose_value, :transpose, collection: true
199
+ attribute :selector_value, :selector, collection: true
200
+ attribute :vectorproduct_value, :vectorproduct, collection: true
201
+ attribute :scalarproduct_value, :scalarproduct, collection: true
202
+ attribute :outerproduct_value, :outerproduct, collection: true
203
+
204
+ # Content elements - statistics
205
+ attribute :mean_value, :mean, collection: true
206
+ attribute :sdev_value, :sdev, collection: true
207
+ attribute :variance_value, :variance, collection: true
208
+ attribute :median_value, :median, collection: true
209
+ attribute :mode_value, :mode, collection: true
210
+ attribute :moment_value, :moment, collection: true
211
+ attribute :momentabout_value, :momentabout, collection: true
44
212
 
213
+ # rubocop:disable Metrics/BlockLength
45
214
  xml do
215
+ # Presentation elements
46
216
  map_element "mmultiscripts", to: :mmultiscripts_value
47
217
  map_element "maligngroup", to: :maligngroup_value
48
218
  map_element "malignmark", to: :malignmark_value
@@ -80,6 +250,172 @@ module Mml
80
250
  map_element "mo", to: :mo_value
81
251
  map_element "mn", to: :mn_value
82
252
  map_element "ms", to: :ms_value
253
+ map_element "maction", to: :maction_value
254
+
255
+ # Content elements - containers
256
+ map_element "apply", to: :apply_value
257
+ map_element "ci", to: :ci_value
258
+ map_element "cn", to: :cn_value
259
+ map_element "csymbol", to: :csymbol_value
260
+ map_element "annotation-xml", to: :annotation_xml_value
261
+
262
+ # Content elements - constructs
263
+ map_element "bind", to: :bind_value
264
+ map_element "bvar", to: :bvar_value
265
+ map_element "condition", to: :condition_value
266
+ map_element "interval", to: :interval_value
267
+ map_element "lambda", to: :lambda_value
268
+ map_element "inverse", to: :inverse_value
269
+ map_element "degree", to: :degree_value
270
+ map_element "piecewise", to: :piecewise_value
271
+ map_element "piece", to: :piece_value
272
+ map_element "otherwise", to: :otherwise_value
273
+ map_element "sep", to: :sep_value
274
+
275
+ # Content elements - arithmetic
276
+ map_element "abs", to: :abs_value
277
+ map_element "conjugate", to: :conjugate_value
278
+ map_element "arg", to: :arg_value
279
+ map_element "real", to: :real_value
280
+ map_element "imaginary", to: :imaginary_value
281
+ map_element "floor", to: :floor_value
282
+ map_element "ceiling", to: :ceiling_value
283
+ map_element "quotient", to: :quotient_value
284
+ map_element "divide", to: :divide_value
285
+ map_element "rem", to: :rem_value
286
+ map_element "minus", to: :minus_value
287
+ map_element "plus", to: :plus_value
288
+ map_element "times", to: :times_value
289
+ map_element "power", to: :power_value
290
+ map_element "root", to: :root_value
291
+ map_element "max", to: :max_value
292
+ map_element "min", to: :min_value
293
+ map_element "gcd", to: :gcd_value
294
+ map_element "lcm", to: :lcm_value
295
+ map_element "sum", to: :sum_value
296
+ map_element "product", to: :product_value
297
+ map_element "factorial", to: :factorial_value
298
+
299
+ # Content elements - logic
300
+ map_element "and", to: :and_value
301
+ map_element "or", to: :or_value
302
+ map_element "xor", to: :xor_value
303
+ map_element "not", to: :not_value
304
+ map_element "implies", to: :implies_value
305
+ map_element "forall", to: :forall_value
306
+ map_element "exists", to: :exists_value
307
+
308
+ # Content elements - relations
309
+ map_element "eq", to: :eq_value
310
+ map_element "neq", to: :neq_value
311
+ map_element "lt", to: :lt_value
312
+ map_element "gt", to: :gt_value
313
+ map_element "leq", to: :leq_value
314
+ map_element "geq", to: :geq_value
315
+ map_element "equivalent", to: :equivalent_value
316
+ map_element "approx", to: :approx_value
317
+
318
+ # Content elements - sets
319
+ map_element "set", to: :set_value
320
+ map_element "list", to: :list_value
321
+ map_element "union", to: :union_value
322
+ map_element "intersect", to: :intersect_value
323
+ map_element "in", to: :in_value
324
+ map_element "notin", to: :notin_value
325
+ map_element "notsubset", to: :notsubset_value
326
+ map_element "notprsubset", to: :notprsubset_value
327
+ map_element "subset", to: :subset_value
328
+ map_element "prsubset", to: :prsubset_value
329
+ map_element "setdiff", to: :setdiff_value
330
+ map_element "card", to: :card_value
331
+ map_element "cartesianproduct", to: :cartesianproduct_value
332
+
333
+ # Content elements - calculus
334
+ map_element "diff", to: :diff_value
335
+ map_element "partialdiff", to: :partialdiff_value
336
+ map_element "int", to: :int_value
337
+ map_element "lowlimit", to: :lowlimit_value
338
+ map_element "uplimit", to: :uplimit_value
339
+
340
+ # Content elements - vector calculus
341
+ map_element "divergence", to: :divergence_value
342
+ map_element "grad", to: :grad_value
343
+ map_element "curl", to: :curl_value
344
+ map_element "laplacian", to: :laplacian_value
345
+
346
+ # Content elements - functions
347
+ map_element "compose", to: :compose_value
348
+ map_element "domain", to: :domain_value
349
+ map_element "codomain", to: :codomain_value
350
+ map_element "image", to: :image_value
351
+ map_element "ident", to: :ident_value
352
+
353
+ # Content elements - elementary functions
354
+ map_element "sin", to: :sin_value
355
+ map_element "cos", to: :cos_value
356
+ map_element "tan", to: :tan_value
357
+ map_element "sec", to: :sec_value
358
+ map_element "csc", to: :csc_value
359
+ map_element "cot", to: :cot_value
360
+ map_element "sinh", to: :sinh_value
361
+ map_element "cosh", to: :cosh_value
362
+ map_element "tanh", to: :tanh_value
363
+ map_element "sech", to: :sech_value
364
+ map_element "csch", to: :csch_value
365
+ map_element "coth", to: :coth_value
366
+ map_element "arcsin", to: :arcsin_value
367
+ map_element "arccos", to: :arccos_value
368
+ map_element "arctan", to: :arctan_value
369
+ map_element "arcsec", to: :arcsec_value
370
+ map_element "arccsc", to: :arccsc_value
371
+ map_element "arccot", to: :arccot_value
372
+ map_element "arcsinh", to: :arcsinh_value
373
+ map_element "arccosh", to: :arccosh_value
374
+ map_element "arctanh", to: :arctanh_value
375
+ map_element "arcsech", to: :arcsech_value
376
+ map_element "arccsch", to: :arccsch_value
377
+ map_element "arccoth", to: :arccoth_value
378
+ map_element "exp", to: :exp_value
379
+ map_element "ln", to: :ln_value
380
+ map_element "log", to: :log_value
381
+
382
+ # Content elements - constants
383
+ map_element "integers", to: :integers_value
384
+ map_element "reals", to: :reals_value
385
+ map_element "rationals", to: :rationals_value
386
+ map_element "naturalnumbers", to: :naturalnumbers_value
387
+ map_element "complexes", to: :complexes_value
388
+ map_element "primes", to: :primes_value
389
+ map_element "exponentiale", to: :exponentiale_value
390
+ map_element "imaginaryi", to: :imaginaryi_value
391
+ map_element "notanumber", to: :notanumber_value
392
+ map_element "true", to: :true_value
393
+ map_element "false", to: :false_value
394
+ map_element "emptyset", to: :emptyset_value
395
+ map_element "pi", to: :pi_value
396
+ map_element "eulergamma", to: :eulergamma_value
397
+ map_element "infinity", to: :infinity_value
398
+
399
+ # Content elements - linear algebra
400
+ map_element "vector", to: :vector_value
401
+ map_element "matrix", to: :matrix_value
402
+ map_element "matrixrow", to: :matrixrow_value
403
+ map_element "determinant", to: :determinant_value
404
+ map_element "transpose", to: :transpose_value
405
+ map_element "selector", to: :selector_value
406
+ map_element "vectorproduct", to: :vectorproduct_value
407
+ map_element "scalarproduct", to: :scalarproduct_value
408
+ map_element "outerproduct", to: :outerproduct_value
409
+
410
+ # Content elements - statistics
411
+ map_element "mean", to: :mean_value
412
+ map_element "sdev", to: :sdev_value
413
+ map_element "variance", to: :variance_value
414
+ map_element "median", to: :median_value
415
+ map_element "mode", to: :mode_value
416
+ map_element "moment", to: :moment_value
417
+ map_element "momentabout", to: :momentabout_value
83
418
  end
419
+ # rubocop:enable Metrics/BlockLength
84
420
  end
85
421
  end
@@ -66,6 +66,35 @@ module Mml
66
66
  Lutaml::Model::Config.xml_adapter_type = adapter
67
67
  end
68
68
 
69
+ # Convenience API for setting up model substitutions.
70
+ # Creates a derived context with the given substitutions.
71
+ #
72
+ # @param models [Hash] A hash mapping original classes to substitute classes
73
+ # e.g., { Mml::V4::Mover => Overset }
74
+ #
75
+ # @example
76
+ # Mml::V4::Configuration.custom_models = { Mml::V4::Mover => Overset }
77
+ # math = Mml::V4.parse(xml, context: :custom_models)
78
+ def custom_models=(models)
79
+ substitutions = models.map do |from_type, to_type|
80
+ { from_type: from_type, to_type: to_type }
81
+ end
82
+ create_context(id: :custom_models, substitutions: substitutions)
83
+ @default_context_id = :custom_models
84
+ end
85
+
86
+ def custom_models
87
+ registered_substitutions ||= {}
88
+ end
89
+
90
+ def default_context_id
91
+ @default_context_id || context_id
92
+ end
93
+
94
+ def clear_custom_models
95
+ @default_context_id = nil
96
+ end
97
+
69
98
  private
70
99
 
71
100
  def populate_base_context
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Annotation < Lutaml::Model::Serializable
6
+ include Base::Content::Annotation
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class AnnotationXml < Lutaml::Model::Serializable
6
+ include Base::Content::AnnotationXml
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Apply < CommonElements
6
+ include Base::Content::Apply
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Abs < Lutaml::Model::Serializable
6
+ include Base::Content::Abs
7
+ end
8
+
9
+ class Conjugate < Lutaml::Model::Serializable
10
+ include Base::Content::Conjugate
11
+ end
12
+
13
+ class Arg < Lutaml::Model::Serializable
14
+ include Base::Content::Arg
15
+ end
16
+
17
+ class Real < Lutaml::Model::Serializable
18
+ include Base::Content::Real
19
+ end
20
+
21
+ class Imaginary < Lutaml::Model::Serializable
22
+ include Base::Content::Imaginary
23
+ end
24
+
25
+ class Floor < Lutaml::Model::Serializable
26
+ include Base::Content::Floor
27
+ end
28
+
29
+ class Ceiling < Lutaml::Model::Serializable
30
+ include Base::Content::Ceiling
31
+ end
32
+
33
+ class Quotient < Lutaml::Model::Serializable
34
+ include Base::Content::Quotient
35
+ end
36
+
37
+ class Divide < Lutaml::Model::Serializable
38
+ include Base::Content::Divide
39
+ end
40
+
41
+ class Rem < Lutaml::Model::Serializable
42
+ include Base::Content::Rem
43
+ end
44
+
45
+ class Minus < Lutaml::Model::Serializable
46
+ include Base::Content::Minus
47
+ end
48
+
49
+ class Plus < Lutaml::Model::Serializable
50
+ include Base::Content::Plus
51
+ end
52
+
53
+ class Times < Lutaml::Model::Serializable
54
+ include Base::Content::Times
55
+ end
56
+
57
+ class Power < Lutaml::Model::Serializable
58
+ include Base::Content::Power
59
+ end
60
+
61
+ class Root < Lutaml::Model::Serializable
62
+ include Base::Content::Root
63
+ end
64
+
65
+ class Max < Lutaml::Model::Serializable
66
+ include Base::Content::Max
67
+ end
68
+
69
+ class Min < Lutaml::Model::Serializable
70
+ include Base::Content::Min
71
+ end
72
+
73
+ class Gcd < Lutaml::Model::Serializable
74
+ include Base::Content::Gcd
75
+ end
76
+
77
+ class Lcm < Lutaml::Model::Serializable
78
+ include Base::Content::Lcm
79
+ end
80
+
81
+ class Sum < Lutaml::Model::Serializable
82
+ include Base::Content::Sum
83
+ end
84
+
85
+ class Product < Lutaml::Model::Serializable
86
+ include Base::Content::Product
87
+ end
88
+
89
+ class Factorial < Lutaml::Model::Serializable
90
+ include Base::Content::Factorial
91
+ end
92
+ end
93
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Bind < CommonElements
6
+ include Base::Content::Bind
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Bvar < CommonElements
6
+ include Base::Content::Bvar
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Int < CommonElements
6
+ include Base::Content::Int
7
+ end
8
+
9
+ class Diff < CommonElements
10
+ include Base::Content::Diff
11
+ end
12
+
13
+ class Partialdiff < CommonElements
14
+ include Base::Content::Partialdiff
15
+ end
16
+
17
+ class Limit < CommonElements
18
+ include Base::Content::Limit
19
+ end
20
+
21
+ class Lowlimit < CommonElements
22
+ include Base::Content::Lowlimit
23
+ end
24
+
25
+ class Uplimit < CommonElements
26
+ include Base::Content::Uplimit
27
+ end
28
+
29
+ class Tendsto < CommonElements
30
+ include Base::Content::Tendsto
31
+ end
32
+ end
33
+ end
data/lib/mml/v2/ci.rb ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Ci < Lutaml::Model::Serializable
6
+ include Base::Content::Ci
7
+ end
8
+ end
9
+ end
data/lib/mml/v2/cn.rb ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Cn < Lutaml::Model::Serializable
6
+ include Base::Content::Cn
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class CommonElements < Mml::CommonElements
6
+ def self.lutaml_default_register
7
+ :mml_v2
8
+ end
9
+
10
+ attribute :factorof_value, :factorof, collection: true
11
+ attribute :limit_value, :limit, collection: true
12
+ attribute :tendsto_value, :tendsto, collection: true
13
+ attribute :domainofapplication_value, :domainofapplication,
14
+ collection: true
15
+ attribute :fn_value, :fn, collection: true
16
+ attribute :reln_value, :reln, collection: true
17
+ attribute :logbase_value, :logbase, collection: true
18
+ attribute :annotation_value, :annotation, collection: true
19
+ attribute :annotation_xml_value, :"annotation-xml", collection: true
20
+
21
+ xml do
22
+ map_element "factorof", to: :factorof_value
23
+ map_element "limit", to: :limit_value
24
+ map_element "tendsto", to: :tendsto_value
25
+ map_element "domainofapplication", to: :domainofapplication_value
26
+ map_element "fn", to: :fn_value
27
+ map_element "reln", to: :reln_value
28
+ map_element "logbase", to: :logbase_value
29
+ map_element "annotation", to: :annotation_value
30
+ map_element "annotation-xml", to: :annotation_xml_value
31
+ end
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mml
4
+ module V2
5
+ class Condition < CommonElements
6
+ include Base::Content::Condition
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../context_configuration"
4
+
5
+ module Mml
6
+ module V2
7
+ module Configuration
8
+ extend Mml::ContextConfiguration
9
+
10
+ CONTEXT_ID = :mml_v2
11
+ end
12
+ end
13
+ end