plurimath 0.3.5 → 0.3.6
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/lib/plurimath/asciimath/constants.rb +5 -3
- data/lib/plurimath/asciimath/parse.rb +41 -28
- data/lib/plurimath/asciimath/transform.rb +111 -0
- data/lib/plurimath/latex/constants.rb +2 -2
- data/lib/plurimath/latex/parse.rb +3 -0
- data/lib/plurimath/latex/transform.rb +37 -0
- data/lib/plurimath/math/core.rb +43 -0
- data/lib/plurimath/math/formula.rb +33 -25
- data/lib/plurimath/math/function/abs.rb +19 -0
- data/lib/plurimath/math/function/arccos.rb +3 -0
- data/lib/plurimath/math/function/arcsin.rb +3 -0
- data/lib/plurimath/math/function/arctan.rb +3 -0
- data/lib/plurimath/math/function/bar.rb +2 -1
- data/lib/plurimath/math/function/base.rb +5 -7
- data/lib/plurimath/math/function/binary_function.rb +11 -61
- data/lib/plurimath/math/function/cos.rb +3 -0
- data/lib/plurimath/math/function/cosh.rb +3 -0
- data/lib/plurimath/math/function/cot.rb +3 -0
- data/lib/plurimath/math/function/coth.rb +3 -0
- data/lib/plurimath/math/function/csc.rb +3 -0
- data/lib/plurimath/math/function/csch.rb +3 -0
- data/lib/plurimath/math/function/ddot.rb +13 -0
- data/lib/plurimath/math/function/deg.rb +3 -0
- data/lib/plurimath/math/function/det.rb +3 -0
- data/lib/plurimath/math/function/dim.rb +3 -0
- data/lib/plurimath/math/function/exp.rb +3 -0
- data/lib/plurimath/math/function/fenced.rb +9 -21
- data/lib/plurimath/math/function/font_style.rb +7 -1
- data/lib/plurimath/math/function/frac.rb +5 -7
- data/lib/plurimath/math/function/gcd.rb +3 -0
- data/lib/plurimath/math/function/glb.rb +3 -0
- data/lib/plurimath/math/function/hat.rb +4 -0
- data/lib/plurimath/math/function/int.rb +36 -6
- data/lib/plurimath/math/function/left.rb +10 -3
- data/lib/plurimath/math/function/lg.rb +3 -0
- data/lib/plurimath/math/function/lim.rb +5 -14
- data/lib/plurimath/math/function/limits.rb +8 -0
- data/lib/plurimath/math/function/ln.rb +3 -0
- data/lib/plurimath/math/function/log.rb +40 -22
- data/lib/plurimath/math/function/lub.rb +3 -0
- data/lib/plurimath/math/function/max.rb +3 -0
- data/lib/plurimath/math/function/mbox.rb +1 -3
- data/lib/plurimath/math/function/menclose.rb +2 -1
- data/lib/plurimath/math/function/min.rb +3 -0
- data/lib/plurimath/math/function/msgroup.rb +1 -4
- data/lib/plurimath/math/function/multiscript.rb +4 -9
- data/lib/plurimath/math/function/obrace.rb +8 -0
- data/lib/plurimath/math/function/overset.rb +3 -16
- data/lib/plurimath/math/function/power.rb +5 -8
- data/lib/plurimath/math/function/power_base.rb +9 -39
- data/lib/plurimath/math/function/prod.rb +34 -4
- data/lib/plurimath/math/function/right.rb +10 -3
- data/lib/plurimath/math/function/root.rb +6 -4
- data/lib/plurimath/math/function/rule.rb +1 -1
- data/lib/plurimath/math/function/sec.rb +3 -0
- data/lib/plurimath/math/function/sech.rb +3 -0
- data/lib/plurimath/math/function/sin.rb +3 -0
- data/lib/plurimath/math/function/sinh.rb +3 -0
- data/lib/plurimath/math/function/sqrt.rb +4 -3
- data/lib/plurimath/math/function/sum.rb +31 -27
- data/lib/plurimath/math/function/table.rb +48 -6
- data/lib/plurimath/math/function/tan.rb +3 -0
- data/lib/plurimath/math/function/tanh.rb +3 -0
- data/lib/plurimath/math/function/td.rb +4 -1
- data/lib/plurimath/math/function/ternary_function.rb +34 -17
- data/lib/plurimath/math/function/text.rb +11 -0
- data/lib/plurimath/math/function/tr.rb +1 -0
- data/lib/plurimath/math/function/ubrace.rb +8 -0
- data/lib/plurimath/math/function/ul.rb +2 -1
- data/lib/plurimath/math/function/unary_function.rb +10 -9
- data/lib/plurimath/math/function/underover.rb +10 -27
- data/lib/plurimath/math/function/underset.rb +3 -16
- data/lib/plurimath/math/number.rb +17 -3
- data/lib/plurimath/math/symbol.rb +20 -2
- data/lib/plurimath/math.rb +1 -1
- data/lib/plurimath/mathml/parser.rb +9 -1
- data/lib/plurimath/mathml/transform.rb +21 -1
- data/lib/plurimath/omml/parser.rb +8 -1
- data/lib/plurimath/omml/transform.rb +27 -13
- data/lib/plurimath/utility.rb +18 -8
- data/lib/plurimath/version.rb +1 -1
- metadata +3 -3
- data/lib/plurimath/math/base.rb +0 -15
@@ -8,21 +8,16 @@ module Plurimath
|
|
8
8
|
def to_omml_without_math_tag
|
9
9
|
pre_element = Utility.ox_element("sPre", namespace: "m")
|
10
10
|
pr_element = Utility.ox_element("sPrePr", namespace: "m")
|
11
|
-
sub_element = Utility.ox_element("sub", namespace: "m")
|
12
|
-
sub_element << parameter_two.to_omml_without_math_tag if parameter_two
|
13
|
-
sup_element = Utility.ox_element("sup", namespace: "m")
|
14
|
-
sup_element << parameter_three.to_omml_without_math_tag if parameter_three
|
15
|
-
e_element = Utility.ox_element("e", namespace: "m")
|
16
|
-
e_element << parameter_one.to_omml_without_math_tag if parameter_one
|
17
11
|
Utility.update_nodes(
|
18
12
|
pre_element,
|
19
13
|
[
|
20
14
|
pr_element << Utility.pr_element("ctrl", true, namespace: "m"),
|
21
|
-
|
22
|
-
|
23
|
-
|
15
|
+
omml_parameter(parameter_two, tag_name: "sub"),
|
16
|
+
omml_parameter(parameter_three, tag_name: "sup"),
|
17
|
+
omml_parameter(parameter_one, tag_name: "e"),
|
24
18
|
],
|
25
19
|
)
|
20
|
+
[pre_element]
|
26
21
|
end
|
27
22
|
end
|
28
23
|
end
|
@@ -20,31 +20,18 @@ module Plurimath
|
|
20
20
|
end
|
21
21
|
|
22
22
|
def to_omml_without_math_tag
|
23
|
-
first_value = if parameter_one.is_a?(Math::Symbol)
|
24
|
-
mt = Utility.ox_element("t", namespace: "m")
|
25
|
-
mt << parameter_one.to_omml_without_math_tag
|
26
|
-
else
|
27
|
-
parameter_one.to_omml_without_math_tag
|
28
|
-
end
|
29
|
-
second_value = if parameter_two.is_a?(Math::Symbol)
|
30
|
-
mt = Utility.ox_element("t", namespace: "m")
|
31
|
-
mt << parameter_two.to_omml_without_math_tag
|
32
|
-
else
|
33
|
-
parameter_two.to_omml_without_math_tag
|
34
|
-
end
|
35
23
|
limupp = Utility.ox_element("limUpp", namespace: "m")
|
36
24
|
limupppr = Utility.ox_element("limUppPr", namespace: "m")
|
37
25
|
limupppr << Utility.pr_element("ctrl", true, namespace: "m")
|
38
|
-
me = (Utility.ox_element("e", namespace: "m") << first_value)
|
39
|
-
lim = (Utility.ox_element("lim", namespace: "m") << second_value)
|
40
26
|
Utility.update_nodes(
|
41
27
|
limupp,
|
42
28
|
[
|
43
29
|
limupppr,
|
44
|
-
|
45
|
-
lim,
|
30
|
+
omml_parameter(parameter_one, tag_name: "e"),
|
31
|
+
omml_parameter(parameter_two, tag_name: "lim"),
|
46
32
|
],
|
47
33
|
)
|
34
|
+
[limupp]
|
48
35
|
end
|
49
36
|
end
|
50
37
|
end
|
@@ -34,19 +34,16 @@ module Plurimath
|
|
34
34
|
def to_omml_without_math_tag
|
35
35
|
ssup_element = Utility.ox_element("sSup", namespace: "m")
|
36
36
|
suppr_element = Utility.ox_element("sSupPr", namespace: "m")
|
37
|
-
|
38
|
-
e_element = Utility.ox_element("e", namespace: "m")
|
39
|
-
e_element << parameter_one.to_omml_without_math_tag if parameter_one
|
40
|
-
sup_element << parameter_two.to_omml_without_math_tag if parameter_two
|
37
|
+
suppr_element << Utility.pr_element("ctrl", true, namespace: "m")
|
41
38
|
Utility.update_nodes(
|
42
39
|
ssup_element,
|
43
40
|
[
|
44
|
-
suppr_element
|
45
|
-
|
46
|
-
|
41
|
+
suppr_element,
|
42
|
+
omml_parameter(parameter_one, tag_name: "e"),
|
43
|
+
omml_parameter(parameter_two, tag_name: "sup"),
|
47
44
|
],
|
48
45
|
)
|
49
|
-
ssup_element
|
46
|
+
[ssup_element]
|
50
47
|
end
|
51
48
|
end
|
52
49
|
end
|
@@ -7,16 +7,12 @@ module Plurimath
|
|
7
7
|
module Function
|
8
8
|
class PowerBase < TernaryFunction
|
9
9
|
def to_mathml_without_math_tag
|
10
|
-
|
11
|
-
subsup_tag = Utility.ox_element("m#{tag_name}")
|
10
|
+
subsup_tag = Utility.ox_element("m#{parameter_one.tag_name}")
|
12
11
|
new_arr = []
|
13
12
|
new_arr << parameter_one.to_mathml_without_math_tag
|
14
13
|
new_arr << parameter_two&.to_mathml_without_math_tag
|
15
14
|
new_arr << parameter_three&.to_mathml_without_math_tag
|
16
|
-
Utility.update_nodes(
|
17
|
-
subsup_tag,
|
18
|
-
new_arr,
|
19
|
-
)
|
15
|
+
Utility.update_nodes(subsup_tag, new_arr)
|
20
16
|
end
|
21
17
|
|
22
18
|
def to_latex
|
@@ -45,8 +41,8 @@ module Plurimath
|
|
45
41
|
narypr << Utility.pr_element("ctrl", true, namespace: "m")
|
46
42
|
[
|
47
43
|
narypr,
|
48
|
-
|
49
|
-
|
44
|
+
omml_parameter(parameter_two, tag_name: "sub"),
|
45
|
+
omml_parameter(parameter_three, tag_name: "sup"),
|
50
46
|
]
|
51
47
|
end
|
52
48
|
|
@@ -60,17 +56,18 @@ module Plurimath
|
|
60
56
|
ssubsup,
|
61
57
|
[
|
62
58
|
ssubsuppr,
|
63
|
-
|
64
|
-
|
65
|
-
|
59
|
+
omml_parameter(parameter_one, tag_name: "e"),
|
60
|
+
omml_parameter(parameter_two, tag_name: "sub"),
|
61
|
+
omml_parameter(parameter_three, tag_name: "sup"),
|
66
62
|
],
|
67
63
|
)
|
64
|
+
[ssubsup]
|
68
65
|
end
|
69
66
|
|
70
67
|
protected
|
71
68
|
|
72
69
|
def chr_value(narypr)
|
73
|
-
first_value = parameter_one
|
70
|
+
first_value = Utility.html_entity_to_unicode(parameter_one&.nary_attr_value)
|
74
71
|
return narypr if first_value == "∫"
|
75
72
|
|
76
73
|
narypr << Utility.ox_element(
|
@@ -80,33 +77,6 @@ module Plurimath
|
|
80
77
|
)
|
81
78
|
end
|
82
79
|
|
83
|
-
def e_element
|
84
|
-
elemnet = Utility.ox_element("e", namespace: "m")
|
85
|
-
if parameter_one
|
86
|
-
elemnet << parameter_one&.to_omml_without_math_tag
|
87
|
-
else
|
88
|
-
elemnet
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
def sub_element
|
93
|
-
elemnet = Utility.ox_element("sub", namespace: "m")
|
94
|
-
if parameter_two
|
95
|
-
elemnet << parameter_two&.to_omml_without_math_tag
|
96
|
-
else
|
97
|
-
elemnet
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def sup_element
|
102
|
-
elemnet = Utility.ox_element("sup", namespace: "m")
|
103
|
-
if parameter_three
|
104
|
-
elemnet << parameter_three&.to_omml_without_math_tag
|
105
|
-
else
|
106
|
-
elemnet
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
80
|
def hide_tags(nar)
|
111
81
|
attr = { "m:val": "1" }
|
112
82
|
if parameter_two.nil?
|
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "
|
3
|
+
require_relative "ternary_function"
|
4
4
|
|
5
5
|
module Plurimath
|
6
6
|
module Math
|
7
7
|
module Function
|
8
|
-
class Prod <
|
8
|
+
class Prod < TernaryFunction
|
9
9
|
def to_asciimath
|
10
10
|
first_value = "_#{wrapped(parameter_one)}" if parameter_one
|
11
11
|
second_value = "^#{wrapped(parameter_two)}" if parameter_two
|
12
|
-
"prod#{first_value}#{second_value}"
|
12
|
+
"prod#{first_value}#{second_value} #{parameter_three&.to_asciimath}".strip
|
13
13
|
end
|
14
14
|
|
15
15
|
def to_latex
|
16
16
|
first_value = "_{#{parameter_one.to_latex}}" if parameter_one
|
17
17
|
second_value = "^{#{parameter_two.to_latex}}" if parameter_two
|
18
|
-
"\\prod#{first_value}#{second_value}"
|
18
|
+
"\\prod#{first_value}#{second_value} #{parameter_three&.to_latex}".strip
|
19
19
|
end
|
20
20
|
|
21
21
|
def to_mathml_without_math_tag
|
@@ -34,6 +34,15 @@ module Plurimath
|
|
34
34
|
munderover_tag,
|
35
35
|
value_array,
|
36
36
|
)
|
37
|
+
return munderover_tag if parameter_three.nil?
|
38
|
+
|
39
|
+
Utility.update_nodes(
|
40
|
+
Utility.ox_element("mrow"),
|
41
|
+
[
|
42
|
+
munderover_tag,
|
43
|
+
parameter_three&.to_mathml_without_math_tag,
|
44
|
+
].flatten.compact,
|
45
|
+
)
|
37
46
|
else
|
38
47
|
first_value
|
39
48
|
end
|
@@ -44,6 +53,27 @@ module Plurimath
|
|
44
53
|
second_value = "<sup>#{parameter_two.to_html}</sup>" if parameter_two
|
45
54
|
"<i>∏</i>#{first_value}#{second_value}"
|
46
55
|
end
|
56
|
+
|
57
|
+
def to_omml_without_math_tag
|
58
|
+
if all_values_exist?
|
59
|
+
nary = Utility.ox_element("nary", namespace: "m")
|
60
|
+
Utility.update_nodes(
|
61
|
+
nary,
|
62
|
+
[
|
63
|
+
narypr("∏"),
|
64
|
+
omml_parameter(parameter_one, tag_name: "sub"),
|
65
|
+
omml_parameter(parameter_two, tag_name: "sup"),
|
66
|
+
omml_parameter(parameter_three, tag_name: "e"),
|
67
|
+
],
|
68
|
+
)
|
69
|
+
[nary]
|
70
|
+
else
|
71
|
+
r_tag = Utility.ox_element("r", namespace: "m")
|
72
|
+
t_tag = Utility.ox_element("t", namespace: "m")
|
73
|
+
r_tag << (t_tag << "∏")
|
74
|
+
[r_tag]
|
75
|
+
end
|
76
|
+
end
|
47
77
|
end
|
48
78
|
end
|
49
79
|
end
|
@@ -17,9 +17,12 @@ module Plurimath
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def to_omml_without_math_tag
|
20
|
-
|
21
|
-
|
22
|
-
|
20
|
+
mr = Utility.ox_element("m:r")
|
21
|
+
if parameter_one
|
22
|
+
mt = Utility.ox_element("m:t")
|
23
|
+
mr << (mt << parameter_one)
|
24
|
+
end
|
25
|
+
[mr]
|
23
26
|
end
|
24
27
|
|
25
28
|
def to_html
|
@@ -30,6 +33,10 @@ module Plurimath
|
|
30
33
|
"\\right #{Latex::Constants::LEFT_RIGHT_PARENTHESIS.invert[parameter_one] || '.'}"
|
31
34
|
end
|
32
35
|
|
36
|
+
def validate_function_formula
|
37
|
+
false
|
38
|
+
end
|
39
|
+
|
33
40
|
protected
|
34
41
|
|
35
42
|
def right_paren
|
@@ -29,15 +29,17 @@ module Plurimath
|
|
29
29
|
pr_element = Utility.ox_element("radPr", namespace: "m")
|
30
30
|
deg_element = Utility.ox_element("deg", namespace: "m")
|
31
31
|
e_element = Utility.ox_element("e", namespace: "m")
|
32
|
+
Utility.update_nodes(e_element, parameter_one.to_omml_without_math_tag)
|
33
|
+
Utility.update_nodes(deg_element, parameter_two.to_omml_without_math_tag)
|
32
34
|
Utility.update_nodes(
|
33
35
|
rad_element,
|
34
36
|
[
|
35
|
-
pr_element
|
36
|
-
deg_element
|
37
|
-
e_element
|
37
|
+
(pr_element << Utility.pr_element("ctrl", true, namespace: "m")),
|
38
|
+
deg_element,
|
39
|
+
e_element,
|
38
40
|
],
|
39
41
|
)
|
40
|
-
rad_element
|
42
|
+
[rad_element]
|
41
43
|
end
|
42
44
|
end
|
43
45
|
end
|
@@ -22,15 +22,16 @@ module Plurimath
|
|
22
22
|
attributes: { "m:val": "1" },
|
23
23
|
)
|
24
24
|
e_element = Utility.ox_element("e", namespace: "m")
|
25
|
+
Utility.update_nodes(e_element, omml_value)
|
25
26
|
Utility.update_nodes(
|
26
27
|
rad_element,
|
27
28
|
[
|
28
|
-
pr_element << Utility.pr_element("ctrl", true, namespace: "m"),
|
29
|
+
(pr_element << Utility.pr_element("ctrl", true, namespace: "m")),
|
29
30
|
Utility.ox_element("deg", namespace: "m"),
|
30
|
-
e_element
|
31
|
+
e_element,
|
31
32
|
],
|
32
33
|
)
|
33
|
-
rad_element
|
34
|
+
[rad_element]
|
34
35
|
end
|
35
36
|
end
|
36
37
|
end
|
@@ -1,21 +1,21 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "
|
3
|
+
require_relative "ternary_function"
|
4
4
|
|
5
5
|
module Plurimath
|
6
6
|
module Math
|
7
7
|
module Function
|
8
|
-
class Sum <
|
8
|
+
class Sum < TernaryFunction
|
9
9
|
def to_asciimath
|
10
10
|
first_value = "_#{wrapped(parameter_one)}" if parameter_one
|
11
11
|
second_value = "^#{wrapped(parameter_two)}" if parameter_two
|
12
|
-
"sum#{first_value}#{second_value}"
|
12
|
+
"sum#{first_value}#{second_value} #{parameter_three&.to_asciimath}".strip
|
13
13
|
end
|
14
14
|
|
15
15
|
def to_latex
|
16
16
|
first_value = "_{#{parameter_one.to_latex}}" if parameter_one
|
17
17
|
second_value = "^{#{parameter_two.to_latex}}" if parameter_two
|
18
|
-
"\\sum#{first_value}#{second_value}"
|
18
|
+
"\\sum#{first_value}#{second_value} #{parameter_three&.to_latex}".strip
|
19
19
|
end
|
20
20
|
|
21
21
|
def to_mathml_without_math_tag
|
@@ -34,6 +34,15 @@ module Plurimath
|
|
34
34
|
munderover_tag,
|
35
35
|
value_array.insert(0, first_value),
|
36
36
|
)
|
37
|
+
return munderover_tag if parameter_three.nil?
|
38
|
+
|
39
|
+
Utility.update_nodes(
|
40
|
+
Utility.ox_element("mrow"),
|
41
|
+
[
|
42
|
+
munderover_tag,
|
43
|
+
parameter_three&.to_mathml_without_math_tag,
|
44
|
+
].flatten.compact,
|
45
|
+
)
|
37
46
|
else
|
38
47
|
first_value
|
39
48
|
end
|
@@ -46,29 +55,24 @@ module Plurimath
|
|
46
55
|
end
|
47
56
|
|
48
57
|
def to_omml_without_math_tag
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
return parameter_two&.to_omml_without_math_tag unless parameter_two.is_a?(Math::Symbol)
|
68
|
-
|
69
|
-
mt = Utility.ox_element("t", namespace: "m")
|
70
|
-
mt << parameter_two.to_omml_without_math_tag if parameter_two
|
71
|
-
mt
|
58
|
+
if all_values_exist?
|
59
|
+
nary = Utility.ox_element("nary", namespace: "m")
|
60
|
+
Utility.update_nodes(
|
61
|
+
nary,
|
62
|
+
[
|
63
|
+
narypr("∑"),
|
64
|
+
omml_parameter(parameter_one, tag_name: "sub"),
|
65
|
+
omml_parameter(parameter_two, tag_name: "sup"),
|
66
|
+
omml_parameter(parameter_three, tag_name: "e"),
|
67
|
+
],
|
68
|
+
)
|
69
|
+
[nary]
|
70
|
+
else
|
71
|
+
r_tag = Utility.ox_element("r", namespace: "m")
|
72
|
+
t_tag = Utility.ox_element("t", namespace: "m")
|
73
|
+
r_tag << (t_tag << "∑")
|
74
|
+
[r_tag]
|
75
|
+
end
|
72
76
|
end
|
73
77
|
end
|
74
78
|
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require_relative "ternary_function"
|
4
|
-
|
5
3
|
module Plurimath
|
6
4
|
module Math
|
7
5
|
module Function
|
8
|
-
class Table
|
6
|
+
class Table < Core
|
9
7
|
attr_accessor :value, :open_paren, :close_paren, :options
|
10
8
|
|
11
9
|
def initialize(value = nil,
|
@@ -75,7 +73,7 @@ module Plurimath
|
|
75
73
|
if value.map { |d| d.parameter_one.length == 1 }.all?
|
76
74
|
single_td_table
|
77
75
|
else
|
78
|
-
multiple_td_table
|
76
|
+
fenced_table(multiple_td_table)
|
79
77
|
end
|
80
78
|
end
|
81
79
|
|
@@ -173,6 +171,7 @@ module Plurimath
|
|
173
171
|
eqarr << eqarrpr
|
174
172
|
tr_value = value.map(&:to_omml_without_math_tag).flatten
|
175
173
|
Utility.update_nodes(eqarr, tr_value.compact)
|
174
|
+
[eqarr]
|
176
175
|
end
|
177
176
|
|
178
177
|
def multiple_td_table
|
@@ -200,16 +199,59 @@ module Plurimath
|
|
200
199
|
mpr << mcs
|
201
200
|
mpr << ctrlpr
|
202
201
|
mm_value = value&.map(&:to_omml_without_math_tag)
|
203
|
-
Utility.update_nodes(
|
202
|
+
Utility.update_nodes(
|
203
|
+
mm,
|
204
|
+
mm_value.insert(0, mpr).flatten,
|
205
|
+
)
|
206
|
+
[mm]
|
204
207
|
end
|
205
208
|
|
206
209
|
def norm_table(table_tag)
|
207
210
|
mo_tag = Utility.ox_element("mo") << "∥"
|
208
211
|
Utility.update_nodes(
|
209
212
|
Utility.ox_element("mrow"),
|
210
|
-
[
|
213
|
+
[
|
214
|
+
mo_tag,
|
215
|
+
table_tag,
|
216
|
+
mo_tag,
|
217
|
+
],
|
211
218
|
)
|
212
219
|
end
|
220
|
+
|
221
|
+
def fenced_table(ox_table)
|
222
|
+
return ox_table unless open_paren && close_paren
|
223
|
+
|
224
|
+
d_node = Utility.ox_element("d", namespace: "m")
|
225
|
+
e_node = Utility.ox_element("e", namespace: "m")
|
226
|
+
Utility.update_nodes(e_node, ox_table)
|
227
|
+
Utility.update_nodes(d_node, [mdpr_node, e_node])
|
228
|
+
[d_node]
|
229
|
+
end
|
230
|
+
|
231
|
+
def mdpr_node
|
232
|
+
begchr = Utility.ox_element("begChr", namespace: "m")
|
233
|
+
begchr.attributes["m:val"] = paren(open_paren)
|
234
|
+
endchr = Utility.ox_element("endChr", namespace: "m")
|
235
|
+
endchr.attributes["m:val"] = paren(close_paren)
|
236
|
+
sepchr = Utility.ox_element("sepChr", attributes: { "m:val": "" }, namespace: "m")
|
237
|
+
mgrow = Utility.ox_element("grow", namespace: "m")
|
238
|
+
mdpr = Utility.ox_element("dPr", namespace: "m")
|
239
|
+
Utility.update_nodes(
|
240
|
+
mdpr,
|
241
|
+
[
|
242
|
+
begchr,
|
243
|
+
endchr,
|
244
|
+
sepchr,
|
245
|
+
mgrow,
|
246
|
+
],
|
247
|
+
)
|
248
|
+
end
|
249
|
+
|
250
|
+
def paren(parenthesis)
|
251
|
+
return "" if ["{:", ":}"].include?(parenthesis)
|
252
|
+
|
253
|
+
parenthesis
|
254
|
+
end
|
213
255
|
end
|
214
256
|
end
|
215
257
|
end
|
@@ -34,10 +34,13 @@ module Plurimath
|
|
34
34
|
|
35
35
|
def to_omml_without_math_tag
|
36
36
|
me = Utility.ox_element("e", namespace: "m")
|
37
|
+
return [me] if parameter_one&.empty?
|
38
|
+
|
37
39
|
Utility.update_nodes(
|
38
40
|
me,
|
39
|
-
parameter_one
|
41
|
+
Formula.new(parameter_one).omml_content,
|
40
42
|
)
|
43
|
+
[me]
|
41
44
|
end
|
42
45
|
end
|
43
46
|
end
|