plurimath 0.3.9 → 0.4.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.
- checksums.yaml +4 -4
- data/lib/plurimath/latex/constants.rb +1 -0
- data/lib/plurimath/latex/parse.rb +11 -3
- data/lib/plurimath/latex/transform.rb +93 -7
- data/lib/plurimath/math/core.rb +16 -4
- data/lib/plurimath/math/formula.rb +24 -20
- data/lib/plurimath/math/function/abs.rb +2 -2
- data/lib/plurimath/math/function/bar.rb +48 -10
- data/lib/plurimath/math/function/base.rb +3 -3
- data/lib/plurimath/math/function/binary_function.rb +20 -10
- data/lib/plurimath/math/function/cancel.rb +2 -2
- data/lib/plurimath/math/function/ceil.rb +7 -2
- data/lib/plurimath/math/function/color.rb +2 -2
- data/lib/plurimath/math/function/ddot.rb +17 -12
- data/lib/plurimath/math/function/deg.rb +2 -2
- data/lib/plurimath/math/function/det.rb +2 -2
- data/lib/plurimath/math/function/dim.rb +2 -2
- data/lib/plurimath/math/function/dot.rb +26 -2
- data/lib/plurimath/math/function/exp.rb +2 -2
- data/lib/plurimath/math/function/fenced.rb +6 -7
- data/lib/plurimath/math/function/floor.rb +2 -2
- data/lib/plurimath/math/function/font_style/bold-fraktur.rb +17 -0
- data/lib/plurimath/math/function/font_style/bold-italic.rb +17 -0
- data/lib/plurimath/math/function/font_style/bold-sans-serif.rb +17 -0
- data/lib/plurimath/math/function/font_style/bold-script.rb +17 -0
- data/lib/plurimath/math/function/font_style/bold.rb +4 -0
- data/lib/plurimath/math/function/font_style/double_struck.rb +4 -0
- data/lib/plurimath/math/function/font_style/fraktur.rb +4 -0
- data/lib/plurimath/math/function/font_style/italic.rb +4 -0
- data/lib/plurimath/math/function/font_style/monospace.rb +4 -0
- data/lib/plurimath/math/function/font_style/normal.rb +4 -0
- data/lib/plurimath/math/function/font_style/sans-serif-bold-italic.rb +17 -0
- data/lib/plurimath/math/function/font_style/sans-serif-italic.rb +17 -0
- data/lib/plurimath/math/function/font_style/sans-serif.rb +4 -0
- data/lib/plurimath/math/function/font_style/script.rb +4 -0
- data/lib/plurimath/math/function/font_style.rb +24 -2
- data/lib/plurimath/math/function/frac.rb +3 -3
- data/lib/plurimath/math/function/gcd.rb +2 -2
- data/lib/plurimath/math/function/glb.rb +2 -2
- data/lib/plurimath/math/function/hat.rb +42 -9
- data/lib/plurimath/math/function/hom.rb +2 -2
- data/lib/plurimath/math/function/inf.rb +2 -2
- data/lib/plurimath/math/function/int.rb +4 -4
- data/lib/plurimath/math/function/ker.rb +2 -2
- data/lib/plurimath/math/function/lcm.rb +2 -2
- data/lib/plurimath/math/function/left.rb +1 -1
- data/lib/plurimath/math/function/lg.rb +2 -2
- data/lib/plurimath/math/function/lim.rb +2 -2
- data/lib/plurimath/math/function/liminf.rb +2 -2
- data/lib/plurimath/math/function/limits.rb +4 -4
- data/lib/plurimath/math/function/limsup.rb +2 -2
- data/lib/plurimath/math/function/ln.rb +2 -2
- data/lib/plurimath/math/function/log.rb +5 -3
- data/lib/plurimath/math/function/longdiv.rb +2 -2
- data/lib/plurimath/math/function/lub.rb +2 -2
- data/lib/plurimath/math/function/max.rb +2 -2
- data/lib/plurimath/math/function/mbox.rb +2 -2
- data/lib/plurimath/math/function/menclose.rb +2 -2
- data/lib/plurimath/math/function/merror.rb +1 -1
- data/lib/plurimath/math/function/min.rb +2 -2
- data/lib/plurimath/math/function/mod.rb +3 -3
- data/lib/plurimath/math/function/msgroup.rb +2 -2
- data/lib/plurimath/math/function/msline.rb +2 -2
- data/lib/plurimath/math/function/multiscript.rb +4 -4
- data/lib/plurimath/math/function/norm.rb +2 -2
- data/lib/plurimath/math/function/obrace.rb +40 -26
- data/lib/plurimath/math/function/oint.rb +4 -4
- data/lib/plurimath/math/function/over.rb +3 -3
- data/lib/plurimath/math/function/overset.rb +8 -3
- data/lib/plurimath/math/function/power.rb +3 -3
- data/lib/plurimath/math/function/power_base.rb +8 -8
- data/lib/plurimath/math/function/prod.rb +4 -4
- data/lib/plurimath/math/function/right.rb +1 -1
- data/lib/plurimath/math/function/root.rb +3 -3
- data/lib/plurimath/math/function/rule.rb +1 -1
- data/lib/plurimath/math/function/scarries.rb +2 -2
- data/lib/plurimath/math/function/semantics.rb +2 -2
- data/lib/plurimath/math/function/sqrt.rb +2 -2
- data/lib/plurimath/math/function/stackrel.rb +3 -3
- data/lib/plurimath/math/function/substack.rb +3 -3
- data/lib/plurimath/math/function/sum.rb +14 -19
- data/lib/plurimath/math/function/sup.rb +2 -2
- data/lib/plurimath/math/function/table.rb +7 -7
- data/lib/plurimath/math/function/td.rb +2 -2
- data/lib/plurimath/math/function/ternary_function.rb +13 -9
- data/lib/plurimath/math/function/text.rb +6 -5
- data/lib/plurimath/math/function/tilde.rb +27 -2
- data/lib/plurimath/math/function/tr.rb +2 -2
- data/lib/plurimath/math/function/ubrace.rb +28 -21
- data/lib/plurimath/math/function/ul.rb +55 -18
- data/lib/plurimath/math/function/unary_function.rb +13 -8
- data/lib/plurimath/math/function/underover.rb +10 -5
- data/lib/plurimath/math/function/underset.rb +8 -3
- data/lib/plurimath/math/function/vec.rb +25 -3
- data/lib/plurimath/math/number.rb +6 -2
- data/lib/plurimath/math/symbol.rb +6 -2
- data/lib/plurimath/math.rb +1 -0
- data/lib/plurimath/mathml/constants.rb +9 -1
- data/lib/plurimath/mathml/parser.rb +16 -10
- data/lib/plurimath/mathml/transform.rb +59 -31
- data/lib/plurimath/omml/parser.rb +24 -1
- data/lib/plurimath/omml/transform.rb +56 -41
- data/lib/plurimath/utility.rb +154 -9
- data/lib/plurimath/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0ec251305cefca33f4a6d66180a797595d43ef370d55f7b67bdeac63b37e3111
|
|
4
|
+
data.tar.gz: 2c041edf5748e938813a20e0d397080d2f8cedcf96b19e9e39e98edae6b47ef8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 37065161c1a09768bbec28f0d98e5438be18a5a0affa9e6024f7027ad002324c1e66e63c22f921f43fd32fa2bf1b723ace3f08b99464a8af3b7e6d265e092df6
|
|
7
|
+
data.tar.gz: 596e9cb2ce7f7d41ab8f93b4c0f330ffcdfec6adba518b49086dc4792c12f7eafed799ee087ea2ea82a3753389c179fab8883445c1b804a52fe779314941280c
|
|
@@ -95,11 +95,18 @@ module Plurimath
|
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
rule(:intermediate_exp) do
|
|
98
|
-
(lparen.as(:left_paren) >> expression.maybe.as(:expression) >> rparen.as(:right_paren)).as(:intermediate_exp) |
|
|
98
|
+
(lparen.as(:left_paren) >> expression.maybe.as(:expression) >> (rparen | (str("\\") >> (match("\s") >> str(".")).maybe).as(:rparen)).maybe.as(:right_paren)).as(:intermediate_exp) |
|
|
99
99
|
(str("{") >> expression.maybe.as(:expression) >> str("}")) |
|
|
100
100
|
symbol_text_or_integer
|
|
101
101
|
end
|
|
102
102
|
|
|
103
|
+
rule(:parsing_text_values) do
|
|
104
|
+
(str("{") >> parsing_text_values >> str("}")) >> parsing_text_values |
|
|
105
|
+
(str("{") >> parsing_text_values >> str("}")) |
|
|
106
|
+
(match("[^}]") >> parsing_text_values) |
|
|
107
|
+
match("[^}]").repeat
|
|
108
|
+
end
|
|
109
|
+
|
|
103
110
|
rule(:power_base) do
|
|
104
111
|
(subscript >> power >> intermediate_exp.as(:supscript)).as(:power_base) |
|
|
105
112
|
(supscript >> base >> intermediate_exp.as(:subscript)).as(:power_base) |
|
|
@@ -130,7 +137,8 @@ module Plurimath
|
|
|
130
137
|
(begining >> expression.as(:table_data) >> ending).as(:environment) |
|
|
131
138
|
(slash >> environment >> intermediate_exp).as(:table_data) |
|
|
132
139
|
power_base |
|
|
133
|
-
intermediate_exp
|
|
140
|
+
intermediate_exp |
|
|
141
|
+
intermediate_exp.as(:intermediate_exp) >> rparen.as(:symbol)
|
|
134
142
|
end
|
|
135
143
|
|
|
136
144
|
rule(:left_right) do
|
|
@@ -204,7 +212,7 @@ module Plurimath
|
|
|
204
212
|
when :binary
|
|
205
213
|
(slashed_value(first_value, :binary) >> intermediate_exp.as(:first_value) >> intermediate_exp.as(:second_value)).as(:binary)
|
|
206
214
|
when :text
|
|
207
|
-
(slashed_value(first_value, :text) >> (str("{") >>
|
|
215
|
+
(slashed_value(first_value, :text) >> (str("{") >> parsing_text_values.as(:first_value) >> str("}")))
|
|
208
216
|
when :ternary
|
|
209
217
|
(slashed_value(first_value, :ternary_functions) >> dynamic_power_base >> sequence.as(:third_value).maybe).as(:ternary_class) |
|
|
210
218
|
slashed_value(first_value, :ternary)
|
|
@@ -45,13 +45,9 @@ module Plurimath
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
rule(symbols: simple(:sym)) do
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
)
|
|
52
|
-
else
|
|
53
|
-
sym
|
|
54
|
-
end
|
|
48
|
+
Math::Symbol.new(
|
|
49
|
+
Constants::UNICODE_SYMBOLS[sym.to_sym] || sym,
|
|
50
|
+
)
|
|
55
51
|
end
|
|
56
52
|
|
|
57
53
|
rule(lparen: simple(:lparen),
|
|
@@ -404,6 +400,16 @@ module Plurimath
|
|
|
404
400
|
)
|
|
405
401
|
end
|
|
406
402
|
|
|
403
|
+
rule(number: simple(:number),
|
|
404
|
+
subscript: simple(:subscript),
|
|
405
|
+
supscript: simple(:supscript)) do
|
|
406
|
+
Math::Function::PowerBase.new(
|
|
407
|
+
Math::Number.new(number),
|
|
408
|
+
subscript,
|
|
409
|
+
supscript,
|
|
410
|
+
)
|
|
411
|
+
end
|
|
412
|
+
|
|
407
413
|
rule(symbols: simple(:sym),
|
|
408
414
|
subscript: simple(:subscript)) do
|
|
409
415
|
Math::Function::Base.new(
|
|
@@ -469,6 +475,47 @@ module Plurimath
|
|
|
469
475
|
Math::Function::Text.new(first_value)
|
|
470
476
|
end
|
|
471
477
|
|
|
478
|
+
rule(text: simple(:text),
|
|
479
|
+
first_value: sequence(:first_value)) do
|
|
480
|
+
Math::Function::Text.new(first_value.join)
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
rule(text: simple(:text),
|
|
484
|
+
first_value: simple(:first_value),
|
|
485
|
+
supscript: simple(:supscript),) do
|
|
486
|
+
Math::Function::Power.new(
|
|
487
|
+
Math::Function::Text.new(first_value),
|
|
488
|
+
supscript,
|
|
489
|
+
)
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
rule(text: simple(:text),
|
|
493
|
+
first_value: sequence(:first_value),
|
|
494
|
+
supscript: simple(:supscript),) do
|
|
495
|
+
Math::Function::Power.new(
|
|
496
|
+
Math::Function::Text.new(first_value.join),
|
|
497
|
+
supscript,
|
|
498
|
+
)
|
|
499
|
+
end
|
|
500
|
+
|
|
501
|
+
rule(text: simple(:text),
|
|
502
|
+
first_value: sequence(:first_value),
|
|
503
|
+
subscript: simple(:subscript),) do
|
|
504
|
+
Math::Function::Base.new(
|
|
505
|
+
Math::Function::Text.new(first_value.join),
|
|
506
|
+
subscript,
|
|
507
|
+
)
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
rule(text: simple(:text),
|
|
511
|
+
first_value: simple(:first_value),
|
|
512
|
+
subscript: simple(:subscript),) do
|
|
513
|
+
Math::Function::Base.new(
|
|
514
|
+
Math::Function::Text.new(first_value),
|
|
515
|
+
subscript,
|
|
516
|
+
)
|
|
517
|
+
end
|
|
518
|
+
|
|
472
519
|
rule(unary: simple(:unary),
|
|
473
520
|
first_value: simple(:first_value)) do
|
|
474
521
|
Utility.get_class(
|
|
@@ -521,6 +568,28 @@ module Plurimath
|
|
|
521
568
|
)
|
|
522
569
|
end
|
|
523
570
|
|
|
571
|
+
rule(fonts: simple(:fonts),
|
|
572
|
+
intermediate_exp: simple(:int_exp),
|
|
573
|
+
subscript: simple(:subscript),
|
|
574
|
+
supscript: simple(:supscript)) do
|
|
575
|
+
font_style = if Utility::FONT_STYLES[fonts.to_sym].nil?
|
|
576
|
+
Math::Function::FontStyle.new(
|
|
577
|
+
int_exp,
|
|
578
|
+
fonts.to_s,
|
|
579
|
+
)
|
|
580
|
+
else
|
|
581
|
+
Utility::FONT_STYLES[fonts.to_sym].new(
|
|
582
|
+
int_exp,
|
|
583
|
+
fonts.to_s,
|
|
584
|
+
)
|
|
585
|
+
end
|
|
586
|
+
Math::Function::PowerBase.new(
|
|
587
|
+
font_style,
|
|
588
|
+
subscript,
|
|
589
|
+
supscript,
|
|
590
|
+
)
|
|
591
|
+
end
|
|
592
|
+
|
|
524
593
|
rule(root: simple(:root),
|
|
525
594
|
first_value: simple(:first_value),
|
|
526
595
|
second_value: simple(:second_value)) do
|
|
@@ -626,6 +695,23 @@ module Plurimath
|
|
|
626
695
|
)
|
|
627
696
|
end
|
|
628
697
|
|
|
698
|
+
rule(binary: simple(:binary),
|
|
699
|
+
subscript: simple(:subscript),
|
|
700
|
+
supscript: simple(:supscript)) do
|
|
701
|
+
if binary.is_a?(Parslet::Slice)
|
|
702
|
+
Utility.get_class(binary).new(
|
|
703
|
+
subscript,
|
|
704
|
+
supscript,
|
|
705
|
+
)
|
|
706
|
+
else
|
|
707
|
+
Math::Function::PowerBase.new(
|
|
708
|
+
binary,
|
|
709
|
+
subscript,
|
|
710
|
+
subscript,
|
|
711
|
+
)
|
|
712
|
+
end
|
|
713
|
+
end
|
|
714
|
+
|
|
629
715
|
rule(binary: simple(:binary),
|
|
630
716
|
subscript: simple(:subscript)) do
|
|
631
717
|
if binary.is_a?(Parslet::Slice)
|
data/lib/plurimath/math/core.rb
CHANGED
|
@@ -7,8 +7,8 @@ module Plurimath
|
|
|
7
7
|
self.class.name.split("::").last.downcase
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
def insert_t_tag
|
|
11
|
-
Array(to_omml_without_math_tag)
|
|
10
|
+
def insert_t_tag(display_style)
|
|
11
|
+
Array(to_omml_without_math_tag(display_style))
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
def tag_name
|
|
@@ -29,13 +29,13 @@ module Plurimath
|
|
|
29
29
|
wrapper_tag << r_tag
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
def omml_parameter(field, tag_name: , namespace: "m")
|
|
32
|
+
def omml_parameter(field, display_style, tag_name: , namespace: "m")
|
|
33
33
|
tag = Utility.ox_element(tag_name, namespace: namespace)
|
|
34
34
|
return empty_tag(tag) unless field
|
|
35
35
|
|
|
36
36
|
Utility.update_nodes(
|
|
37
37
|
tag,
|
|
38
|
-
field&.insert_t_tag,
|
|
38
|
+
field&.insert_t_tag(display_style),
|
|
39
39
|
)
|
|
40
40
|
end
|
|
41
41
|
|
|
@@ -52,6 +52,18 @@ module Plurimath
|
|
|
52
52
|
r_tag << (Utility.ox_element("t", namespace: "m") << string)
|
|
53
53
|
Array(r_tag)
|
|
54
54
|
end
|
|
55
|
+
|
|
56
|
+
def extractable?
|
|
57
|
+
false
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def extract_class_from_text
|
|
61
|
+
""
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def font_style_t_tag(display_style)
|
|
65
|
+
to_omml_without_math_tag(display_style)
|
|
66
|
+
end
|
|
55
67
|
end
|
|
56
68
|
end
|
|
57
69
|
end
|
|
@@ -8,13 +8,13 @@ module Plurimath
|
|
|
8
8
|
def initialize(
|
|
9
9
|
value = [],
|
|
10
10
|
left_right_wrapper = true,
|
|
11
|
-
|
|
11
|
+
display_style: true,
|
|
12
12
|
input_string: nil
|
|
13
13
|
)
|
|
14
14
|
@value = value.is_a?(Array) ? value : [value]
|
|
15
15
|
left_right_wrapper = false if @value.first.is_a?(Function::Left)
|
|
16
16
|
@left_right_wrapper = left_right_wrapper
|
|
17
|
-
@displaystyle =
|
|
17
|
+
@displaystyle = boolean_display_style(display_style)
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
def ==(object)
|
|
@@ -33,7 +33,7 @@ module Plurimath
|
|
|
33
33
|
xmlns: "http://www.w3.org/1998/Math/MathML",
|
|
34
34
|
display: "block",
|
|
35
35
|
}
|
|
36
|
-
style_attrs = { displaystyle: display_style }
|
|
36
|
+
style_attrs = { displaystyle: boolean_display_style(display_style) }
|
|
37
37
|
math = Utility.ox_element("math", attributes: math_attrs)
|
|
38
38
|
style = Utility.ox_element("mstyle", attributes: style_attrs)
|
|
39
39
|
Utility.update_nodes(style, mathml_content)
|
|
@@ -91,39 +91,39 @@ module Plurimath
|
|
|
91
91
|
}
|
|
92
92
|
end
|
|
93
93
|
|
|
94
|
-
def to_omml
|
|
94
|
+
def to_omml(display_style: displaystyle)
|
|
95
95
|
para_element = Utility.ox_element(
|
|
96
96
|
"oMathPara",
|
|
97
97
|
attributes: omml_math_attrs,
|
|
98
98
|
namespace: "m",
|
|
99
99
|
)
|
|
100
100
|
math_element = Utility.ox_element("oMath", namespace: "m")
|
|
101
|
-
|
|
102
|
-
Utility.update_nodes(
|
|
101
|
+
content = omml_content(boolean_display_style(display_style))
|
|
102
|
+
para_element << Utility.update_nodes(math_element, content)
|
|
103
103
|
Ox.dump(para_element, indent: 2).gsub("&", "&").lstrip
|
|
104
104
|
rescue
|
|
105
105
|
parse_error!(:omml)
|
|
106
106
|
end
|
|
107
107
|
|
|
108
|
-
def omml_content
|
|
109
|
-
value&.map(
|
|
108
|
+
def omml_content(display_style)
|
|
109
|
+
value&.map { |val| val.insert_t_tag(display_style) }
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
-
def to_omml_without_math_tag
|
|
113
|
-
return nary_tag if nary_tag_able?
|
|
112
|
+
def to_omml_without_math_tag(display_style)
|
|
113
|
+
return nary_tag(display_style) if nary_tag_able?(display_style)
|
|
114
114
|
|
|
115
|
-
omml_content
|
|
115
|
+
omml_content(display_style)
|
|
116
116
|
end
|
|
117
117
|
|
|
118
|
-
def nary_tag
|
|
119
|
-
|
|
118
|
+
def nary_tag(display_style)
|
|
119
|
+
nary_element = Utility.ox_element("nary", namespace: "m")
|
|
120
120
|
e_tag = Utility.ox_element("e", namespace: "m")
|
|
121
|
-
Utility.update_nodes(e_tag, value.last.insert_t_tag)
|
|
121
|
+
Utility.update_nodes(e_tag, value.last.insert_t_tag(display_style))
|
|
122
122
|
Utility.update_nodes(
|
|
123
|
-
|
|
124
|
-
(value.first.omml_nary_tag << e_tag),
|
|
123
|
+
nary_element,
|
|
124
|
+
(value.first.omml_nary_tag(display_style) << e_tag),
|
|
125
125
|
)
|
|
126
|
-
[
|
|
126
|
+
[nary_element]
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
def extract_class_from_text
|
|
@@ -136,12 +136,12 @@ module Plurimath
|
|
|
136
136
|
value.first.nary_attr_value
|
|
137
137
|
end
|
|
138
138
|
|
|
139
|
-
def nary_tag_able?
|
|
139
|
+
def nary_tag_able?(display_style)
|
|
140
140
|
value.length == 2 &&
|
|
141
141
|
["underover", "powerbase"].include?(value&.first&.class_name) &&
|
|
142
142
|
(
|
|
143
|
-
value&.first&.parameter_one&.to_omml_without_math_tag&.length == 1 ||
|
|
144
|
-
value&.first&.parameter_one.to_omml_without_math_tag.match?(/^&#x\w*\d*;$/)
|
|
143
|
+
value&.first&.parameter_one&.to_omml_without_math_tag(display_style)&.length == 1 ||
|
|
144
|
+
value&.first&.parameter_one.to_omml_without_math_tag(display_style).match?(/^&#x\w*\d*;$/)
|
|
145
145
|
)
|
|
146
146
|
end
|
|
147
147
|
|
|
@@ -151,6 +151,10 @@ module Plurimath
|
|
|
151
151
|
|
|
152
152
|
protected
|
|
153
153
|
|
|
154
|
+
def boolean_display_style(display_style = displaystyle)
|
|
155
|
+
YAML.load(display_style.to_s)
|
|
156
|
+
end
|
|
157
|
+
|
|
154
158
|
def parse_error!(type)
|
|
155
159
|
Math.parse_error!(input_string, type)
|
|
156
160
|
end
|
|
@@ -15,10 +15,10 @@ module Plurimath
|
|
|
15
15
|
)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def to_omml_without_math_tag
|
|
18
|
+
def to_omml_without_math_tag(display_style)
|
|
19
19
|
md = (Utility.ox_element("d", namespace: "m") << mdpr_tag)
|
|
20
20
|
me = Utility.ox_element("e", namespace: "m")
|
|
21
|
-
Utility.update_nodes(me, omml_value)
|
|
21
|
+
Utility.update_nodes(me, omml_value(display_style))
|
|
22
22
|
Utility.update_nodes(md, Array(me))
|
|
23
23
|
[md]
|
|
24
24
|
end
|
|
@@ -6,38 +6,76 @@ module Plurimath
|
|
|
6
6
|
module Math
|
|
7
7
|
module Function
|
|
8
8
|
class Bar < UnaryFunction
|
|
9
|
+
attr_accessor :attributes
|
|
10
|
+
|
|
11
|
+
def initialize(parameter_one = nil, attributes = {})
|
|
12
|
+
super(parameter_one)
|
|
13
|
+
@attributes = attributes
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def to_asciimath
|
|
17
|
+
first_value = "(#{parameter_one.to_asciimath})" if parameter_one
|
|
18
|
+
"bar#{first_value}"
|
|
19
|
+
end
|
|
20
|
+
|
|
9
21
|
def to_latex
|
|
10
22
|
first_value = "{#{parameter_one.to_latex}}" if parameter_one
|
|
11
23
|
"\\overline#{first_value}"
|
|
12
24
|
end
|
|
13
25
|
|
|
14
26
|
def to_mathml_without_math_tag
|
|
15
|
-
|
|
27
|
+
mo_tag = Utility.ox_element("mo") << "¯"
|
|
28
|
+
return mo_tag unless parameter_one
|
|
29
|
+
|
|
30
|
+
mover_tag = Utility.ox_element("mover")
|
|
31
|
+
mover_tag.attributes.merge!(attributes) if attributes && !attributes.empty?
|
|
16
32
|
Utility.update_nodes(
|
|
17
|
-
|
|
33
|
+
mover_tag,
|
|
18
34
|
[
|
|
19
|
-
|
|
20
|
-
|
|
35
|
+
parameter_one&.to_mathml_without_math_tag,
|
|
36
|
+
mo_tag,
|
|
21
37
|
],
|
|
22
38
|
)
|
|
23
39
|
end
|
|
24
40
|
|
|
25
|
-
def to_omml_without_math_tag
|
|
41
|
+
def to_omml_without_math_tag(display_style)
|
|
42
|
+
return r_element("¯", rpr_tag: false) unless parameter_one
|
|
43
|
+
|
|
44
|
+
attributes && attributes[:accent] ? acc_tag(display_style) : bar_tag(display_style)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def swap_class
|
|
48
|
+
Ul.new(parameter_one, attributes)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
protected
|
|
52
|
+
|
|
53
|
+
def acc_tag(display_style)
|
|
54
|
+
acc = Utility.ox_element("acc", namespace: "m")
|
|
55
|
+
chr = Utility.ox_element("chr", namespace: "m", attributes: { "m:val": "‾" } )
|
|
56
|
+
acc_pr = (Utility.ox_element("accPr", namespace: "m") << chr)
|
|
57
|
+
Utility.update_nodes(
|
|
58
|
+
acc,
|
|
59
|
+
[
|
|
60
|
+
acc_pr,
|
|
61
|
+
omml_parameter(parameter_one, display_style, tag_name: "e"),
|
|
62
|
+
],
|
|
63
|
+
)
|
|
64
|
+
[acc]
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def bar_tag(display_style)
|
|
26
68
|
bar = Utility.ox_element("bar", namespace: "m")
|
|
27
|
-
me = Utility.ox_element("e", namespace: "m")
|
|
28
|
-
Utility.update_nodes(me, omml_value) if parameter_one
|
|
29
69
|
Utility.update_nodes(
|
|
30
70
|
bar,
|
|
31
71
|
[
|
|
32
72
|
bar_pr,
|
|
33
|
-
|
|
73
|
+
omml_parameter(parameter_one, display_style, tag_name: "e", namespace: "m"),
|
|
34
74
|
],
|
|
35
75
|
)
|
|
36
76
|
[bar]
|
|
37
77
|
end
|
|
38
78
|
|
|
39
|
-
protected
|
|
40
|
-
|
|
41
79
|
def bar_pr
|
|
42
80
|
attrs = { "m:val": "top" }
|
|
43
81
|
barpr = Utility.ox_element("barPr", namespace: "m")
|
|
@@ -34,7 +34,7 @@ module Plurimath
|
|
|
34
34
|
"#{first_value}#{second_value}"
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
def to_omml_without_math_tag
|
|
37
|
+
def to_omml_without_math_tag(display_style)
|
|
38
38
|
ssub_element = Utility.ox_element("sSub", namespace: "m")
|
|
39
39
|
subpr_element = Utility.ox_element("sSubPr", namespace: "m")
|
|
40
40
|
subpr_element << Utility.pr_element("ctrl", true, namespace: "m")
|
|
@@ -42,8 +42,8 @@ module Plurimath
|
|
|
42
42
|
ssub_element,
|
|
43
43
|
[
|
|
44
44
|
subpr_element,
|
|
45
|
-
omml_parameter(parameter_one, tag_name: "e"),
|
|
46
|
-
omml_parameter(parameter_two, tag_name: "sub"),
|
|
45
|
+
omml_parameter(parameter_one, display_style, tag_name: "e"),
|
|
46
|
+
omml_parameter(parameter_two, display_style, tag_name: "sub"),
|
|
47
47
|
],
|
|
48
48
|
)
|
|
49
49
|
[ssub_element]
|
|
@@ -49,13 +49,21 @@ module Plurimath
|
|
|
49
49
|
"#{first_value}#{second_value}"
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
def to_omml_without_math_tag
|
|
52
|
+
def to_omml_without_math_tag(display_style)
|
|
53
53
|
r_tag = Utility.ox_element("r", namespace: "m")
|
|
54
|
-
Utility.update_nodes(r_tag, [parameter_one.insert_t_tag]) if parameter_one
|
|
55
|
-
Utility.update_nodes(r_tag, [parameter_two.insert_t_tag]) if parameter_two
|
|
54
|
+
Utility.update_nodes(r_tag, [parameter_one.insert_t_tag(display_style)]) if parameter_one
|
|
55
|
+
Utility.update_nodes(r_tag, [parameter_two.insert_t_tag(display_style)]) if parameter_two
|
|
56
56
|
[r_tag]
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
+
def any_value_exist?
|
|
60
|
+
!(parameter_one.nil? || parameter_two.nil?)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def all_values_exist?
|
|
64
|
+
!(parameter_one.nil? && parameter_two.nil?)
|
|
65
|
+
end
|
|
66
|
+
|
|
59
67
|
protected
|
|
60
68
|
|
|
61
69
|
def latex_wrapped(field)
|
|
@@ -82,18 +90,20 @@ module Plurimath
|
|
|
82
90
|
wrapper_tag << r_tag
|
|
83
91
|
end
|
|
84
92
|
|
|
85
|
-
def
|
|
86
|
-
!(parameter_one.nil? && parameter_two.nil?)
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def underover
|
|
93
|
+
def underover(display_style)
|
|
90
94
|
return r_element(class_name, rpr_tag: false) unless all_values_exist?
|
|
91
95
|
|
|
92
96
|
first_value = Symbol.new(class_name)
|
|
97
|
+
if !display_style
|
|
98
|
+
power_base = PowerBase.new(first_value, parameter_one, parameter_two)
|
|
99
|
+
return power_base.to_omml_without_math_tag(display_style)
|
|
100
|
+
end
|
|
101
|
+
|
|
93
102
|
overset = Overset.new(first_value, parameter_two)
|
|
94
|
-
return Array(overset.to_omml_without_math_tag) unless parameter_one
|
|
103
|
+
return Array(overset.to_omml_without_math_tag(display_style)) unless parameter_one
|
|
95
104
|
|
|
96
|
-
|
|
105
|
+
underset = Underset.new(overset, parameter_one)
|
|
106
|
+
Array(underset.to_omml_without_math_tag(display_style))
|
|
97
107
|
end
|
|
98
108
|
end
|
|
99
109
|
end
|
|
@@ -20,11 +20,16 @@ module Plurimath
|
|
|
20
20
|
)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
|
-
def to_omml_without_math_tag
|
|
23
|
+
def to_omml_without_math_tag(display_style)
|
|
24
24
|
lceil = Symbol.new("⌈")
|
|
25
25
|
rceil = Symbol.new("⌉")
|
|
26
26
|
fenced = Fenced.new(lceil, Array(parameter_one), rceil)
|
|
27
|
-
Array(fenced.to_omml_without_math_tag)
|
|
27
|
+
Array(fenced.to_omml_without_math_tag(display_style))
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def to_html
|
|
31
|
+
first_value = "<i>#{parameter_one.to_html}</i>" if parameter_one
|
|
32
|
+
"<i>⌈</i>#{first_value}<i>⌉</i>"
|
|
28
33
|
end
|
|
29
34
|
end
|
|
30
35
|
end
|
|
@@ -28,8 +28,8 @@ module Plurimath
|
|
|
28
28
|
"{\\#{class_name}{#{first_value}} #{second_value}}"
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def to_omml_without_math_tag
|
|
32
|
-
Array(parameter_two.insert_t_tag)
|
|
31
|
+
def to_omml_without_math_tag(display_style)
|
|
32
|
+
Array(parameter_two.insert_t_tag(display_style))
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
end
|
|
@@ -6,6 +6,13 @@ module Plurimath
|
|
|
6
6
|
module Math
|
|
7
7
|
module Function
|
|
8
8
|
class Ddot < UnaryFunction
|
|
9
|
+
attr_accessor :attributes
|
|
10
|
+
|
|
11
|
+
def initialize(parameter_one = nil, attributes = {})
|
|
12
|
+
super(parameter_one)
|
|
13
|
+
@attributes = attributes
|
|
14
|
+
end
|
|
15
|
+
|
|
9
16
|
def to_mathml_without_math_tag
|
|
10
17
|
second_value = Utility.ox_element("mo") << ".."
|
|
11
18
|
Utility.update_nodes(
|
|
@@ -14,18 +21,16 @@ module Plurimath
|
|
|
14
21
|
)
|
|
15
22
|
end
|
|
16
23
|
|
|
17
|
-
def to_omml_without_math_tag
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
)
|
|
28
|
-
[acc_tag]
|
|
24
|
+
def to_omml_without_math_tag(display_style)
|
|
25
|
+
return r_element("..", rpr_tag: false) unless parameter_one
|
|
26
|
+
|
|
27
|
+
symbol = Symbol.new("..")
|
|
28
|
+
Overset.new(parameter_one, symbol).to_omml_without_math_tag(true)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def to_html
|
|
32
|
+
first_value = "<i>#{parameter_one.to_html}</i>" if parameter_one
|
|
33
|
+
"#{first_value}<i>..</i>"
|
|
29
34
|
end
|
|
30
35
|
end
|
|
31
36
|
end
|