plurimath 0.7.2 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitmodules +3 -0
- data/Latex-Supported-Data.adoc +1 -0
- data/UnicodeMath-Supported-Data.adoc +1342 -0
- data/UnitsML-Supported-Data.adoc +444 -0
- data/lib/plurimath/asciimath/parse.rb +1 -1
- data/lib/plurimath/asciimath/transform.rb +2 -6
- data/lib/plurimath/latex/constants.rb +2 -0
- data/lib/plurimath/math/core.rb +38 -6
- data/lib/plurimath/math/formula.rb +60 -6
- data/lib/plurimath/math/function/abs.rb +4 -0
- data/lib/plurimath/math/function/arg.rb +22 -0
- data/lib/plurimath/math/function/bar.rb +4 -0
- data/lib/plurimath/math/function/base.rb +49 -0
- data/lib/plurimath/math/function/binary_function.rb +6 -0
- data/lib/plurimath/math/function/cancel.rb +5 -0
- data/lib/plurimath/math/function/ceil.rb +6 -0
- data/lib/plurimath/math/function/color.rb +20 -1
- data/lib/plurimath/math/function/ddot.rb +4 -0
- data/lib/plurimath/math/function/dot.rb +5 -0
- data/lib/plurimath/math/function/fenced.rb +98 -7
- data/lib/plurimath/math/function/floor.rb +6 -0
- data/lib/plurimath/math/function/font_style/monospace.rb +4 -0
- data/lib/plurimath/math/function/font_style.rb +31 -6
- data/lib/plurimath/math/function/frac.rb +69 -15
- data/lib/plurimath/math/function/hat.rb +4 -0
- data/lib/plurimath/math/function/inf.rb +30 -0
- data/lib/plurimath/math/function/int.rb +47 -1
- data/lib/plurimath/math/function/intent.rb +22 -0
- data/lib/plurimath/math/function/left.rb +4 -0
- data/lib/plurimath/math/function/lim.rb +6 -0
- data/lib/plurimath/math/function/limits.rb +28 -0
- data/lib/plurimath/math/function/linebreak.rb +5 -0
- data/lib/plurimath/math/function/log.rb +27 -20
- data/lib/plurimath/math/function/longdiv.rb +4 -0
- data/lib/plurimath/math/function/mbox.rb +4 -0
- data/lib/plurimath/math/function/menclose.rb +74 -5
- data/lib/plurimath/math/function/merror.rb +2 -0
- data/lib/plurimath/math/function/mglyph.rb +64 -0
- data/lib/plurimath/math/function/mlabeledtr.rb +29 -0
- data/lib/plurimath/math/function/mod.rb +4 -0
- data/lib/plurimath/math/function/mpadded.rb +84 -0
- data/lib/plurimath/math/function/ms.rb +33 -0
- data/lib/plurimath/math/function/msgroup.rb +4 -0
- data/lib/plurimath/math/function/msline.rb +2 -4
- data/lib/plurimath/math/function/multiscript.rb +70 -6
- data/lib/plurimath/math/function/nary.rb +69 -10
- data/lib/plurimath/math/function/none.rb +25 -0
- data/lib/plurimath/math/function/norm.rb +6 -0
- data/lib/plurimath/math/function/obrace.rb +4 -0
- data/lib/plurimath/math/function/oint.rb +25 -1
- data/lib/plurimath/math/function/over.rb +6 -0
- data/lib/plurimath/math/function/overset.rb +46 -1
- data/lib/plurimath/math/function/phantom.rb +18 -2
- data/lib/plurimath/math/function/power.rb +37 -0
- data/lib/plurimath/math/function/power_base.rb +45 -18
- data/lib/plurimath/math/function/prod.rb +46 -0
- data/lib/plurimath/math/function/right.rb +4 -0
- data/lib/plurimath/math/function/root.rb +9 -1
- data/lib/plurimath/math/function/rule.rb +4 -0
- data/lib/plurimath/math/function/sqrt.rb +7 -1
- data/lib/plurimath/math/function/stackrel.rb +6 -0
- data/lib/plurimath/math/function/substack.rb +4 -0
- data/lib/plurimath/math/function/sum.rb +45 -24
- data/lib/plurimath/math/function/table/bmatrix.rb +18 -5
- data/lib/plurimath/math/function/table/cases.rb +24 -0
- data/lib/plurimath/math/function/table/eqarray.rb +24 -0
- data/lib/plurimath/math/function/table/matrix.rb +23 -3
- data/lib/plurimath/math/function/table/pmatrix.rb +4 -0
- data/lib/plurimath/math/function/table/vmatrix.rb +10 -0
- data/lib/plurimath/math/function/table.rb +58 -7
- data/lib/plurimath/math/function/td.rb +9 -0
- data/lib/plurimath/math/function/ternary_function.rb +14 -1
- data/lib/plurimath/math/function/text.rb +6 -0
- data/lib/plurimath/math/function/tilde.rb +4 -0
- data/lib/plurimath/math/function/tr.rb +9 -0
- data/lib/plurimath/math/function/ubrace.rb +5 -0
- data/lib/plurimath/math/function/ul.rb +4 -0
- data/lib/plurimath/math/function/unary_function.rb +4 -0
- data/lib/plurimath/math/function/underover.rb +14 -0
- data/lib/plurimath/math/function/underset.rb +49 -1
- data/lib/plurimath/math/function/vec.rb +4 -0
- data/lib/plurimath/math/number.rb +33 -3
- data/lib/plurimath/math/symbol.rb +68 -3
- data/lib/plurimath/math.rb +3 -2
- data/lib/plurimath/mathml/constants.rb +16 -0
- data/lib/plurimath/mathml/parser.rb +42 -2
- data/lib/plurimath/mathml/transform.rb +80 -29
- data/lib/plurimath/omml/parser.rb +8 -0
- data/lib/plurimath/omml/transform.rb +29 -26
- data/lib/plurimath/unicode_math/constants.rb +1014 -0
- data/lib/plurimath/unicode_math/parse.rb +233 -0
- data/lib/plurimath/unicode_math/parser.rb +58 -0
- data/lib/plurimath/unicode_math/parsing_rules/absence_rules.rb +138 -0
- data/lib/plurimath/unicode_math/parsing_rules/common_rules.rb +114 -0
- data/lib/plurimath/unicode_math/parsing_rules/constants_rules.rb +102 -0
- data/lib/plurimath/unicode_math/parsing_rules/helper.rb +19 -0
- data/lib/plurimath/unicode_math/parsing_rules/masked.rb +62 -0
- data/lib/plurimath/unicode_math/parsing_rules/sub_sup.rb +254 -0
- data/lib/plurimath/unicode_math/transform.rb +3831 -0
- data/lib/plurimath/{unicode.rb → unicode_math.rb} +2 -2
- data/lib/plurimath/unitsml.rb +14 -1
- data/lib/plurimath/utility.rb +346 -11
- data/lib/plurimath/version.rb +1 -1
- data/lib/plurimath/xml_engine/oga.rb +5 -0
- data/lib/plurimath/xml_engine/ox.rb +5 -0
- metadata +25 -3
@@ -32,10 +32,10 @@ module Plurimath
|
|
32
32
|
rule(barPr: subtree(:barpr)) { barpr }
|
33
33
|
rule(oMath: subtree(:omath)) { omath.flatten.compact }
|
34
34
|
rule(fName: subtree(:fname)) { fname }
|
35
|
+
rule(sPreSub: sequence(:sub)) { { sub: Utility.nil_to_none_object(sub) } }
|
36
|
+
rule(sPreSup: sequence(:sup)) { { sup: Utility.nil_to_none_object(sup) } }
|
35
37
|
rule(oMath: sequence(:omath)) { omath }
|
36
38
|
rule(limLoc: simple(:limLoc)) { limLoc }
|
37
|
-
rule(begChr: simple(:begChr)) { Math::Symbol.new(begChr) }
|
38
|
-
rule(endChr: simple(:endChr)) { Math::Symbol.new(endChr) }
|
39
39
|
|
40
40
|
rule(rFonts: subtree(:rFonts)) { nil }
|
41
41
|
rule(sSupPr: subtree(:ssuppr)) { nil }
|
@@ -95,26 +95,32 @@ module Plurimath
|
|
95
95
|
end
|
96
96
|
|
97
97
|
rule(d: subtree(:data)) do
|
98
|
-
fenced
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
fenced_value.first.close_paren = close_paren&.value
|
105
|
-
fenced_value
|
98
|
+
fenced = data.shift
|
99
|
+
fenced_value = data.flatten.compact
|
100
|
+
if data.length == 1 && data.flatten.compact.first.is_a?(Math::Function::Table)
|
101
|
+
fenced_value.first.open_paren = fenced&.parameter_one&.value
|
102
|
+
fenced_value.first.close_paren = fenced&.parameter_three&.value
|
103
|
+
data
|
106
104
|
else
|
107
|
-
|
108
|
-
|
109
|
-
fenced_value,
|
110
|
-
close_paren,
|
111
|
-
)
|
105
|
+
fenced.parameter_two = data.flatten.compact
|
106
|
+
fenced
|
112
107
|
end
|
113
108
|
end
|
114
109
|
|
115
110
|
rule(dPr: subtree(:dpr)) do
|
116
|
-
|
117
|
-
|
111
|
+
flatten_dpr = dpr.flatten.compact
|
112
|
+
open_paren = flatten_dpr.find { |hash| hash[:begChr] }&.values&.first
|
113
|
+
close_paren = flatten_dpr.find { |hash| hash[:endChr] }&.values&.first
|
114
|
+
sep_chr = flatten_dpr.find { |hash| hash[:sepChr] }
|
115
|
+
open_paren_object = Utility.symbol_object(open_paren) if open_paren
|
116
|
+
close_paren_object = Utility.symbol_object(close_paren) if close_paren
|
117
|
+
fenced = Math::Function::Fenced.new(
|
118
|
+
open_paren_object,
|
119
|
+
nil,
|
120
|
+
close_paren_object,
|
121
|
+
)
|
122
|
+
fenced.options = sep_chr
|
123
|
+
fenced
|
118
124
|
end
|
119
125
|
|
120
126
|
rule(mtd: sequence(:mtd)) do
|
@@ -149,11 +155,7 @@ module Plurimath
|
|
149
155
|
end
|
150
156
|
|
151
157
|
rule(lim: sequence(:lim)) do
|
152
|
-
|
153
|
-
Utility.text_classes(lim)
|
154
|
-
else
|
155
|
-
Utility.filter_values(lim)
|
156
|
-
end
|
158
|
+
lim.any?(String) ? Utility.text_classes(lim) : Utility.filter_values(lim)
|
157
159
|
end
|
158
160
|
|
159
161
|
rule(acc: subtree(:acc)) do
|
@@ -298,11 +300,12 @@ module Plurimath
|
|
298
300
|
end
|
299
301
|
|
300
302
|
rule(sPre: subtree(:spre)) do
|
301
|
-
|
303
|
+
sub_value = spre.find { |pre| pre.is_a?(Hash) && pre[:sub] }[:sub]
|
304
|
+
sup_value = spre.find { |pre| pre.is_a?(Hash) && pre[:sup] }[:sup]
|
302
305
|
Math::Function::Multiscript.new(
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
+
Utility.filter_values(spre[0]),
|
307
|
+
sub_value,
|
308
|
+
sup_value,
|
306
309
|
)
|
307
310
|
end
|
308
311
|
|