mml 2.3.7 → 2.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CLAUDE.md +96 -30
- data/TODO.complete/1-v3-autoload.md +63 -0
- data/TODO.complete/2-v2-autoload.md +46 -0
- data/TODO.complete/3-no-require-relative.md +32 -0
- data/TODO.complete/4-remove-duplicate-register-model.md +31 -0
- data/TODO.complete/5-context-options-type-check.md +44 -0
- data/TODO.complete/6-context-configuration-type-check.md +32 -0
- data/TODO.complete/7-specs-for-refactor.md +38 -0
- data/lib/mml/base/maction.rb +1 -1
- data/lib/mml/base/math.rb +1 -1
- data/lib/mml/base/menclose.rb +1 -1
- data/lib/mml/base/merror.rb +1 -1
- data/lib/mml/base/mfenced.rb +1 -4
- data/lib/mml/base/mfrac.rb +1 -1
- data/lib/mml/base/mfraction.rb +1 -1
- data/lib/mml/base/mi.rb +2 -0
- data/lib/mml/base/mlabeledtr.rb +1 -1
- data/lib/mml/base/mlongdiv.rb +1 -1
- data/lib/mml/base/mmultiscripts.rb +1 -1
- data/lib/mml/base/mn.rb +2 -0
- data/lib/mml/base/mo.rb +6 -1
- data/lib/mml/base/mover.rb +1 -1
- data/lib/mml/base/mpadded.rb +1 -1
- data/lib/mml/base/mphantom.rb +1 -1
- data/lib/mml/base/mroot.rb +1 -1
- data/lib/mml/base/mrow.rb +1 -3
- data/lib/mml/base/ms.rb +4 -0
- data/lib/mml/base/mscarries.rb +1 -1
- data/lib/mml/base/mscarry.rb +1 -1
- data/lib/mml/base/msgroup.rb +1 -3
- data/lib/mml/base/msqrt.rb +1 -1
- data/lib/mml/base/msrow.rb +1 -1
- data/lib/mml/base/mstack.rb +1 -1
- data/lib/mml/base/mstyle.rb +1 -1
- data/lib/mml/base/msub.rb +1 -1
- data/lib/mml/base/msubsup.rb +1 -1
- data/lib/mml/base/msup.rb +1 -1
- data/lib/mml/base/mtable.rb +1 -1
- data/lib/mml/base/mtd.rb +1 -1
- data/lib/mml/base/mtext.rb +6 -1
- data/lib/mml/base/mtr.rb +1 -1
- data/lib/mml/base/munder.rb +1 -3
- data/lib/mml/base/munderover.rb +1 -1
- data/lib/mml/base/semantics.rb +1 -1
- data/lib/mml/context_configuration.rb +3 -1
- data/lib/mml/context_options.rb +10 -1
- data/lib/mml/v2/configuration.rb +0 -2
- data/lib/mml/v2.rb +382 -246
- data/lib/mml/v3/annotation.rb +0 -1
- data/lib/mml/v3/annotation_xml.rb +0 -1
- data/lib/mml/v3/apply.rb +0 -1
- data/lib/mml/v3/arith.rb +0 -22
- data/lib/mml/v3/bind.rb +0 -1
- data/lib/mml/v3/calculus.rb +0 -7
- data/lib/mml/v3/cbytes.rb +0 -1
- data/lib/mml/v3/cerror.rb +0 -1
- data/lib/mml/v3/ci.rb +0 -1
- data/lib/mml/v3/cn.rb +0 -1
- data/lib/mml/v3/configuration.rb +0 -2
- data/lib/mml/v3/constants.rb +0 -15
- data/lib/mml/v3/constructs.rb +0 -10
- data/lib/mml/v3/cs.rb +0 -1
- data/lib/mml/v3/csymbol.rb +0 -1
- data/lib/mml/v3/deprecated_content.rb +0 -7
- data/lib/mml/v3/elementary_functions.rb +0 -28
- data/lib/mml/v3/functions.rb +0 -6
- data/lib/mml/v3/linear_algebra.rb +0 -9
- data/lib/mml/v3/logic.rb +0 -7
- data/lib/mml/v3/maction.rb +0 -1
- data/lib/mml/v3/maligngroup.rb +0 -1
- data/lib/mml/v3/malignmark.rb +0 -1
- data/lib/mml/v3/math.rb +0 -2
- data/lib/mml/v3/menclose.rb +0 -1
- data/lib/mml/v3/merror.rb +0 -1
- data/lib/mml/v3/mfenced.rb +0 -1
- data/lib/mml/v3/mfrac.rb +0 -1
- data/lib/mml/v3/mfraction.rb +0 -1
- data/lib/mml/v3/mglyph.rb +0 -1
- data/lib/mml/v3/mi.rb +0 -1
- data/lib/mml/v3/mlabeledtr.rb +0 -1
- data/lib/mml/v3/mlongdiv.rb +0 -1
- data/lib/mml/v3/mmultiscripts.rb +0 -1
- data/lib/mml/v3/mn.rb +0 -1
- data/lib/mml/v3/mo.rb +0 -1
- data/lib/mml/v3/mover.rb +0 -1
- data/lib/mml/v3/mpadded.rb +0 -1
- data/lib/mml/v3/mphantom.rb +0 -1
- data/lib/mml/v3/mprescripts.rb +0 -1
- data/lib/mml/v3/mroot.rb +0 -1
- data/lib/mml/v3/mrow.rb +0 -1
- data/lib/mml/v3/ms.rb +0 -1
- data/lib/mml/v3/mscarries.rb +0 -1
- data/lib/mml/v3/mscarry.rb +0 -1
- data/lib/mml/v3/msgroup.rb +0 -1
- data/lib/mml/v3/msline.rb +0 -1
- data/lib/mml/v3/mspace.rb +0 -1
- data/lib/mml/v3/msqrt.rb +0 -1
- data/lib/mml/v3/msrow.rb +0 -1
- data/lib/mml/v3/mstack.rb +0 -1
- data/lib/mml/v3/mstyle.rb +0 -1
- data/lib/mml/v3/msub.rb +0 -1
- data/lib/mml/v3/msubsup.rb +0 -1
- data/lib/mml/v3/msup.rb +0 -1
- data/lib/mml/v3/mtable.rb +0 -1
- data/lib/mml/v3/mtd.rb +0 -1
- data/lib/mml/v3/mtext.rb +0 -1
- data/lib/mml/v3/mtr.rb +0 -1
- data/lib/mml/v3/munder.rb +0 -1
- data/lib/mml/v3/munderover.rb +0 -1
- data/lib/mml/v3/none.rb +0 -1
- data/lib/mml/v3/relations.rb +0 -9
- data/lib/mml/v3/semantics.rb +0 -1
- data/lib/mml/v3/sets.rb +0 -13
- data/lib/mml/v3/statistics.rb +0 -7
- data/lib/mml/v3/vector_calculus.rb +0 -4
- data/lib/mml/v3.rb +451 -73
- data/lib/mml/v4/annotation.rb +0 -1
- data/lib/mml/v4/configuration.rb +0 -2
- data/lib/mml/v4/elementary_functions.rb +0 -1
- data/lib/mml/v4/functions.rb +0 -1
- data/lib/mml/v4.rb +21 -17
- data/lib/mml/version.rb +1 -1
- data/lib/mml.rb +2 -0
- metadata +9 -2
data/lib/mml/base/mo.rb
CHANGED
|
@@ -7,7 +7,7 @@ module Mml
|
|
|
7
7
|
# Use fully qualified names (e.g., Mml::Namespace).
|
|
8
8
|
def self.included(klass)
|
|
9
9
|
klass.class_eval do
|
|
10
|
-
attribute :value, :string
|
|
10
|
+
attribute :value, :string, collection: true
|
|
11
11
|
attribute :mathcolor, :string
|
|
12
12
|
attribute :mathbackground, :string
|
|
13
13
|
attribute :mathvariant, :string
|
|
@@ -34,11 +34,14 @@ module Mml
|
|
|
34
34
|
attribute :indentshiftfirst, :string
|
|
35
35
|
attribute :indentalignlast, :string
|
|
36
36
|
attribute :indentshiftlast, :string
|
|
37
|
+
attribute :mglyph_value, :mglyph, collection: true
|
|
38
|
+
attribute :malignmark_value, :malignmark, collection: true
|
|
37
39
|
|
|
38
40
|
# rubocop:disable Metrics/BlockLength
|
|
39
41
|
xml do
|
|
40
42
|
namespace Mml::Namespace
|
|
41
43
|
element "mo"
|
|
44
|
+
mixed_content
|
|
42
45
|
|
|
43
46
|
map_content to: :value
|
|
44
47
|
map_attribute "form", to: :form
|
|
@@ -67,6 +70,8 @@ module Mml
|
|
|
67
70
|
map_attribute "indentalignfirst", to: :indentalignfirst
|
|
68
71
|
map_attribute "indentshiftfirst", to: :indentshiftfirst
|
|
69
72
|
map_attribute "linebreakmultchar", to: :linebreakmultchar
|
|
73
|
+
map_element "mglyph", to: :mglyph_value
|
|
74
|
+
map_element "malignmark", to: :malignmark_value
|
|
70
75
|
end
|
|
71
76
|
# rubocop:enable Metrics/BlockLength
|
|
72
77
|
end
|
data/lib/mml/base/mover.rb
CHANGED
data/lib/mml/base/mpadded.rb
CHANGED
data/lib/mml/base/mphantom.rb
CHANGED
data/lib/mml/base/mroot.rb
CHANGED
data/lib/mml/base/mrow.rb
CHANGED
|
@@ -9,13 +9,11 @@ module Mml
|
|
|
9
9
|
klass.class_eval do
|
|
10
10
|
attribute :mathbackground, :string
|
|
11
11
|
attribute :mathcolor, :string
|
|
12
|
-
attribute :content, :string, collection: true
|
|
13
12
|
xml do
|
|
14
13
|
namespace Mml::Namespace
|
|
15
14
|
element "mrow"
|
|
16
|
-
|
|
15
|
+
ordered
|
|
17
16
|
|
|
18
|
-
map_content to: :content
|
|
19
17
|
map_attribute "mathcolor", to: :mathcolor
|
|
20
18
|
map_attribute "mathbackground", to: :mathbackground
|
|
21
19
|
end
|
data/lib/mml/base/ms.rb
CHANGED
|
@@ -14,6 +14,8 @@ module Mml
|
|
|
14
14
|
attribute :lquote, :string
|
|
15
15
|
attribute :rquote, :string
|
|
16
16
|
attribute :value, :string, collection: true
|
|
17
|
+
attribute :mglyph_value, :mglyph, collection: true
|
|
18
|
+
attribute :malignmark_value, :malignmark, collection: true
|
|
17
19
|
xml do
|
|
18
20
|
namespace Mml::Namespace
|
|
19
21
|
element "ms"
|
|
@@ -26,6 +28,8 @@ module Mml
|
|
|
26
28
|
map_attribute "mathvariant", to: :mathvariant
|
|
27
29
|
map_attribute "lquote", to: :lquote, render_empty: true
|
|
28
30
|
map_attribute "rquote", to: :rquote, render_empty: true
|
|
31
|
+
map_element "mglyph", to: :mglyph_value
|
|
32
|
+
map_element "malignmark", to: :malignmark_value
|
|
29
33
|
end
|
|
30
34
|
end
|
|
31
35
|
end
|
data/lib/mml/base/mscarries.rb
CHANGED
data/lib/mml/base/mscarry.rb
CHANGED
data/lib/mml/base/msgroup.rb
CHANGED
|
@@ -11,13 +11,11 @@ module Mml
|
|
|
11
11
|
attribute :mathbackground, :string
|
|
12
12
|
attribute :position, :integer
|
|
13
13
|
attribute :shift, :integer
|
|
14
|
-
attribute :msgroup_text, :string, collection: true
|
|
15
14
|
xml do
|
|
16
15
|
namespace Mml::Namespace
|
|
17
16
|
element "msgroup"
|
|
18
|
-
|
|
17
|
+
ordered
|
|
19
18
|
|
|
20
|
-
map_content to: :msgroup_text
|
|
21
19
|
map_attribute "mathcolor", to: :mathcolor
|
|
22
20
|
map_attribute "mathbackground", to: :mathbackground
|
|
23
21
|
map_attribute "position", to: :position
|
data/lib/mml/base/msqrt.rb
CHANGED
data/lib/mml/base/msrow.rb
CHANGED
data/lib/mml/base/mstack.rb
CHANGED
data/lib/mml/base/mstyle.rb
CHANGED
data/lib/mml/base/msub.rb
CHANGED
data/lib/mml/base/msubsup.rb
CHANGED
data/lib/mml/base/msup.rb
CHANGED
data/lib/mml/base/mtable.rb
CHANGED
data/lib/mml/base/mtd.rb
CHANGED
data/lib/mml/base/mtext.rb
CHANGED
|
@@ -7,21 +7,26 @@ module Mml
|
|
|
7
7
|
# Use fully qualified names (e.g., Mml::Namespace).
|
|
8
8
|
def self.included(klass)
|
|
9
9
|
klass.class_eval do
|
|
10
|
-
attribute :value, :string
|
|
10
|
+
attribute :value, :string, collection: true
|
|
11
11
|
attribute :mathcolor, :string
|
|
12
12
|
attribute :mathbackground, :string
|
|
13
13
|
attribute :mathvariant, :string
|
|
14
14
|
attribute :mathsize, :string
|
|
15
|
+
attribute :mglyph_value, :mglyph, collection: true
|
|
16
|
+
attribute :malignmark_value, :malignmark, collection: true
|
|
15
17
|
|
|
16
18
|
xml do
|
|
17
19
|
namespace Mml::Namespace
|
|
18
20
|
element "mtext"
|
|
21
|
+
mixed_content
|
|
19
22
|
|
|
20
23
|
map_content to: :value
|
|
21
24
|
map_attribute "mathcolor", to: :mathcolor
|
|
22
25
|
map_attribute "mathbackground", to: :mathbackground
|
|
23
26
|
map_attribute "mathvariant", to: :mathvariant
|
|
24
27
|
map_attribute "mathsize", to: :mathsize
|
|
28
|
+
map_element "mglyph", to: :mglyph_value
|
|
29
|
+
map_element "malignmark", to: :malignmark_value
|
|
25
30
|
end
|
|
26
31
|
end
|
|
27
32
|
end
|
data/lib/mml/base/mtr.rb
CHANGED
data/lib/mml/base/munder.rb
CHANGED
|
@@ -10,19 +10,17 @@ module Mml
|
|
|
10
10
|
attribute :mathbackground, :string
|
|
11
11
|
attribute :accentunder, :string
|
|
12
12
|
attribute :mathcolor, :string
|
|
13
|
-
attribute :content, :string, collection: true
|
|
14
13
|
attribute :align, :string
|
|
15
14
|
|
|
16
15
|
xml do
|
|
17
16
|
namespace Mml::Namespace
|
|
18
17
|
element "munder"
|
|
19
|
-
|
|
18
|
+
ordered
|
|
20
19
|
|
|
21
20
|
map_attribute "mathbackground", to: :mathbackground
|
|
22
21
|
map_attribute "accentunder", to: :accentunder
|
|
23
22
|
map_attribute "mathcolor", to: :mathcolor
|
|
24
23
|
map_attribute "align", to: :align
|
|
25
|
-
map_content to: :content
|
|
26
24
|
end
|
|
27
25
|
end
|
|
28
26
|
end
|
data/lib/mml/base/munderover.rb
CHANGED
data/lib/mml/base/semantics.rb
CHANGED
|
@@ -141,7 +141,9 @@ module Mml
|
|
|
141
141
|
end
|
|
142
142
|
|
|
143
143
|
def clear_cache(klass)
|
|
144
|
-
klass.
|
|
144
|
+
return unless klass.is_a?(Class) && (klass <= Lutaml::Model::Serialize)
|
|
145
|
+
|
|
146
|
+
klass.clear_cache(context_id)
|
|
145
147
|
end
|
|
146
148
|
end
|
|
147
149
|
end
|
data/lib/mml/context_options.rb
CHANGED
|
@@ -31,7 +31,7 @@ module Mml
|
|
|
31
31
|
return nil if reference.nil?
|
|
32
32
|
return reference if reference.is_a?(Symbol)
|
|
33
33
|
return reference.to_sym if reference.is_a?(String)
|
|
34
|
-
return reference.id.to_sym if
|
|
34
|
+
return reference.id.to_sym if lutaml_context_reference?(reference)
|
|
35
35
|
|
|
36
36
|
raise ArgumentError,
|
|
37
37
|
"Unsupported context/register reference: #{reference.inspect}"
|
|
@@ -48,6 +48,15 @@ module Mml
|
|
|
48
48
|
!context.equal?(Mml::UNSPECIFIED_CONTEXT)
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
+
# Lutaml::Model exposes context identity through both TypeContext (returned
|
|
52
|
+
# by GlobalContext.context) and Register (the public registration handle).
|
|
53
|
+
# Both classes expose `attr_reader :id`. We accept either by explicit type
|
|
54
|
+
# check rather than `respond_to?` duck-typing so the contract is verifiable.
|
|
55
|
+
def lutaml_context_reference?(reference)
|
|
56
|
+
reference.is_a?(Lutaml::Model::TypeContext) ||
|
|
57
|
+
reference.is_a?(Lutaml::Model::Register)
|
|
58
|
+
end
|
|
59
|
+
|
|
51
60
|
# MML accepts the old `register:` alias, but never both inputs at once.
|
|
52
61
|
def raise_if_conflicting_context_options!(context, register)
|
|
53
62
|
return unless context_specified?(context) && register
|