plurimath 0.2.0 → 0.2.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.
Files changed (87) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/test.yml +8 -11
  3. data/.gitignore +1 -0
  4. data/AsciiMath-Supported-Data.adoc +280 -0
  5. data/Gemfile +1 -0
  6. data/Latex-Supported-Data.adoc +1872 -0
  7. data/MathML-Supported-Data.adoc +270 -0
  8. data/README.adoc +94 -0
  9. data/lib/plurimath/asciimath/constants.rb +215 -222
  10. data/lib/plurimath/asciimath/parse.rb +45 -11
  11. data/lib/plurimath/asciimath/parser.rb +4 -3
  12. data/lib/plurimath/asciimath/transform.rb +222 -131
  13. data/lib/plurimath/asciimath.rb +1 -1
  14. data/lib/plurimath/html/constants.rb +50 -0
  15. data/lib/plurimath/html/parse.rb +149 -0
  16. data/lib/plurimath/html/parser.rb +26 -0
  17. data/lib/plurimath/html/transform.rb +363 -0
  18. data/lib/plurimath/html.rb +1 -1
  19. data/lib/plurimath/latex/constants.rb +1885 -1858
  20. data/lib/plurimath/latex/parse.rb +127 -34
  21. data/lib/plurimath/latex/parser.rb +5 -4
  22. data/lib/plurimath/latex/transform.rb +324 -164
  23. data/lib/plurimath/math/formula.rb +9 -1
  24. data/lib/plurimath/math/function/bar.rb +1 -1
  25. data/lib/plurimath/math/function/base.rb +7 -1
  26. data/lib/plurimath/math/function/binary_function.rb +10 -5
  27. data/lib/plurimath/math/function/color.rb +4 -4
  28. data/lib/plurimath/math/function/fenced.rb +7 -2
  29. data/lib/plurimath/math/function/font_style/bold.rb +18 -0
  30. data/lib/plurimath/math/function/font_style/double_struck.rb +18 -0
  31. data/lib/plurimath/math/function/font_style/fraktur.rb +18 -0
  32. data/lib/plurimath/math/function/font_style/monospace.rb +18 -0
  33. data/lib/plurimath/math/function/font_style/sans-serif.rb +18 -0
  34. data/lib/plurimath/math/function/font_style/script.rb +18 -0
  35. data/lib/plurimath/math/function/font_style.rb +2 -22
  36. data/lib/plurimath/math/function/frac.rb +4 -4
  37. data/lib/plurimath/math/function/inf.rb +0 -1
  38. data/lib/plurimath/math/function/left.rb +3 -6
  39. data/lib/plurimath/math/function/limits.rb +0 -1
  40. data/lib/plurimath/math/function/log.rb +6 -0
  41. data/lib/plurimath/math/function/mod.rb +6 -0
  42. data/lib/plurimath/math/function/multiscript.rb +11 -0
  43. data/lib/plurimath/math/function/norm.rb +2 -1
  44. data/lib/plurimath/math/function/over.rb +29 -0
  45. data/lib/plurimath/math/function/overset.rb +2 -2
  46. data/lib/plurimath/math/function/power.rb +7 -1
  47. data/lib/plurimath/math/function/power_base.rb +14 -7
  48. data/lib/plurimath/math/function/prod.rb +6 -0
  49. data/lib/plurimath/math/function/right.rb +24 -0
  50. data/lib/plurimath/math/function/root.rb +5 -4
  51. data/lib/plurimath/math/function/sqrt.rb +1 -1
  52. data/lib/plurimath/math/function/substack.rb +0 -1
  53. data/lib/plurimath/math/function/sum.rb +6 -0
  54. data/lib/plurimath/math/function/table/align.rb +24 -0
  55. data/lib/plurimath/math/function/table/array.rb +25 -0
  56. data/lib/plurimath/math/function/table/bmatrix.rb +26 -0
  57. data/lib/plurimath/math/function/table/matrix.rb +24 -0
  58. data/lib/plurimath/math/function/table/multline.rb +24 -0
  59. data/lib/plurimath/math/function/table/pmatrix.rb +24 -0
  60. data/lib/plurimath/math/function/table/split.rb +24 -0
  61. data/lib/plurimath/math/function/table/vmatrix.rb +25 -0
  62. data/lib/plurimath/math/function/table.rb +17 -5
  63. data/lib/plurimath/math/function/td.rb +6 -1
  64. data/lib/plurimath/math/function/ternary_function.rb +16 -6
  65. data/lib/plurimath/math/function/text.rb +19 -7
  66. data/lib/plurimath/math/function/tr.rb +6 -1
  67. data/lib/plurimath/math/function/unary_function.rb +5 -0
  68. data/lib/plurimath/math/function/vec.rb +4 -0
  69. data/lib/plurimath/math/function.rb +13 -2
  70. data/lib/plurimath/math/number.rb +8 -0
  71. data/lib/plurimath/math/symbol.rb +12 -3
  72. data/lib/plurimath/math.rb +9 -4
  73. data/lib/plurimath/mathml/constants.rb +2 -34
  74. data/lib/plurimath/mathml/parse.rb +7 -2
  75. data/lib/plurimath/mathml/parser.rb +2 -1
  76. data/lib/plurimath/mathml/transform.rb +73 -68
  77. data/lib/plurimath/mathml.rb +1 -1
  78. data/lib/plurimath/omml/constants.rb +154 -0
  79. data/lib/plurimath/omml/parser.rb +22 -0
  80. data/lib/plurimath/omml/transform.rb +216 -0
  81. data/lib/plurimath/omml.rb +1 -1
  82. data/lib/plurimath/unitsml.rb +4 -0
  83. data/lib/plurimath/utility.rb +73 -0
  84. data/lib/plurimath/version.rb +1 -1
  85. data/plurimath.gemspec +1 -0
  86. metadata +49 -7
  87. data/README.md +0 -40
@@ -0,0 +1,270 @@
1
+ === MathML Support
2
+
3
+ ==== Classes
4
+ |===
5
+ | Functions | Fonts
6
+
7
+ | stackrel | double-struck
8
+ | underset | sans-serif
9
+ | mathfrak | monospace
10
+ | mathcal | fraktur
11
+ | overset | script
12
+ | cancel | bold
13
+ | obrace |
14
+ | ubrace |
15
+ | mathtt |
16
+ | mathbf |
17
+ | mathbb |
18
+ | mathsf |
19
+ | arctan |
20
+ | arcsin |
21
+ | arccos |
22
+ | color |
23
+ | floor |
24
+ | tilde |
25
+ | prod |
26
+ | text |
27
+ | norm |
28
+ | sqrt |
29
+ | cosh |
30
+ | tanh |
31
+ | sinh |
32
+ | sech |
33
+ | csch |
34
+ | coth |
35
+ | ddot |
36
+ | ceil |
37
+ | oint |
38
+ | root |
39
+ | frac |
40
+ | log |
41
+ | mod |
42
+ | vec |
43
+ | hat |
44
+ | dot |
45
+ | bar |
46
+ | abs |
47
+ | min |
48
+ | max |
49
+ | dim |
50
+ | det |
51
+ | csc |
52
+ | cot |
53
+ | lub |
54
+ | lcm |
55
+ | glb |
56
+ | gcd |
57
+ | exp |
58
+ | sum |
59
+ | cos |
60
+ | tan |
61
+ | sin |
62
+ | int |
63
+ | sec |
64
+ | ln |
65
+ | ul |
66
+ | g |
67
+ | f |
68
+ |===
69
+
70
+ ==== Tags
71
+ ** annotation_xml
72
+ ** annotation-xml
73
+ ** mmultiscripts
74
+ ** maligngroup
75
+ ** munderover
76
+ ** annotation
77
+ ** malignmark
78
+ ** semantics
79
+ ** mscarries
80
+ ** menclose
81
+ ** mlongdiv
82
+ ** mphantom
83
+ ** mfenced
84
+ ** msgroup
85
+ ** maction
86
+ ** mpadded
87
+ ** msubsup
88
+ ** mscarry
89
+ ** msline
90
+ ** mspace
91
+ ** mstack
92
+ ** mstyle
93
+ ** mtable
94
+ ** munder
95
+ ** merror
96
+ ** msqrt
97
+ ** mroot
98
+ ** msrow
99
+ ** mover
100
+ ** mfrac
101
+ ** math
102
+ ** mrow
103
+ ** msub
104
+ ** msup
105
+ ** mtd
106
+ ** mtr
107
+ ** mn
108
+ ** mo
109
+ ** mi
110
+ ** ms
111
+
112
+ ==== Unicodes
113
+ ** \α
114
+ ** \β
115
+ ** \γ
116
+ ** \Γ
117
+ ** \δ
118
+ ** \Δ
119
+ ** \∆
120
+ ** \ε
121
+ ** \ɛ
122
+ ** \ζ
123
+ ** \η
124
+ ** \θ
125
+ ** \Θ
126
+ ** \ϑ
127
+ ** \ι
128
+ ** \κ
129
+ ** \λ
130
+ ** \Λ
131
+ ** \μ
132
+ ** \ν
133
+ ** \ξ
134
+ ** \Ξ
135
+ ** \π
136
+ ** \Π
137
+ ** \ρ
138
+ ** \ς
139
+ ** \σ
140
+ ** \Σ
141
+ ** \τ
142
+ ** \υ
143
+ ** \φ
144
+ ** \Φ
145
+ ** \ϕ
146
+ ** \χ
147
+ ** \ψ
148
+ ** \Ψ
149
+ ** \ω
150
+ ** \Ω
151
+ ** \⋅
152
+ ** \∙
153
+ ** \·
154
+ ** \∗
155
+ ** \⋆
156
+ ** \×
157
+ ** \⋉
158
+ ** \⋊
159
+ ** \⋈
160
+ ** \÷
161
+ ** \∘
162
+ ** \⊕
163
+ ** \⨁
164
+ ** \⊗
165
+ ** \⊙
166
+ ** \∑
167
+ ** \∏
168
+ ** \∏
169
+ ** \∧
170
+ ** \⋀
171
+ ** \∨
172
+ ** \⋁
173
+ ** \∩
174
+ ** \⋂
175
+ ** \∪
176
+ ** \⋃
177
+ ** \≠
178
+ ** \≤
179
+ ** \≥
180
+ ** \≺
181
+ ** \≻
182
+ ** \⪯
183
+ ** \⪰
184
+ ** \∈
185
+ ** \∉
186
+ ** \⊂
187
+ ** \⊃
188
+ ** \⊆
189
+ ** \⊇
190
+ ** \≡
191
+ ** \≅
192
+ ** \≈
193
+ ** \∝
194
+ ** \¬
195
+ ** \∀
196
+ ** \∃
197
+ ** \⊥
198
+ ** \⊤
199
+ ** \⊢
200
+ ** \⊨
201
+ ** \〈
202
+ ** \〉
203
+ ** \⟨
204
+ ** \⟩
205
+ ** \∫
206
+ ** \∮
207
+ ** \∂
208
+ ** \∇
209
+ ** \±
210
+ ** \∅
211
+ ** \∞
212
+ ** \ℵ
213
+ ** \∴
214
+ ** \∵
215
+ ** \∠
216
+ ** \△
217
+ ** \′
218
+ ** \  
219
+ ** \    
220
+ ** \⌢
221
+ ** \⋯
222
+ ** \⋮
223
+ ** \⋱
224
+ ** \⋄
225
+ ** \□
226
+ ** \⌊
227
+ ** \⌋
228
+ ** \⌈
229
+ ** \⌉
230
+ ** \ℂ
231
+ ** \ℕ
232
+ ** \ℚ
233
+ ** \ℝ
234
+ ** \ℤ
235
+ ** \↑
236
+ ** \↓
237
+ ** \←
238
+ ** \↔
239
+ ** \⇒
240
+ ** \⇐
241
+ ** \⇔
242
+ ** \→
243
+ ** \↣
244
+ ** \↠
245
+ ** \⤖
246
+ ** \↦
247
+ ** \…
248
+ ** \−
249
+ ** \⁡
250
+ ** \⏞
251
+ ** \⏟
252
+
253
+ === Symbols
254
+ ** |
255
+ ** /
256
+ ** \
257
+ ** ~
258
+ ** (
259
+ ** )
260
+ ** (:
261
+ ** :)
262
+ ** {
263
+ ** }
264
+ ** {:
265
+ ** :}
266
+ ** ]
267
+ ** [
268
+ ** =
269
+ ** +
270
+ ** -
data/README.adoc ADDED
@@ -0,0 +1,94 @@
1
+ = Plurimath
2
+
3
+ This gem implements a mechanism of conversion between Math languages mentioned below.
4
+
5
+ 1. **AsciiMath**
6
+ 2. **MathML**
7
+ 3. **Latex**
8
+
9
+ == Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem "plurimath"
15
+ ```
16
+ And then execute:
17
+ ```shell
18
+
19
+ $ bundle install
20
+ ```
21
+ Or install it yourself as:
22
+ ```shell
23
+ $ gem install plurimath
24
+ ```
25
+
26
+ == Usage
27
+
28
+ Pass the string you want to convert and Math type of the string provided, which will give you **Plurimath::Math::Formula** object as output, Let's see some examples below.
29
+
30
+ === Conversion Examples
31
+
32
+ ==== Asciimath Formula Example
33
+ [source, ruby]
34
+ ----
35
+ asciimath = "sin(1)"
36
+ formula = Plurimath::Math.parse(asciimath, :asciimath)
37
+ ----
38
+ ==== MathML Formula Example
39
+ [source, ruby]
40
+ ----
41
+ mathml = <<~MATHML
42
+ <math xmlns='http://www.w3.org/1998/Math/MathML'>
43
+ <mstyle displaystyle='true'>
44
+ <mi>sin</mi>
45
+ <mn>1</mn>
46
+ </mstyle>
47
+ </math>
48
+ MATHML
49
+ formula = Plurimath::Math.parse(mathml, "mathml")
50
+ ----
51
+ ==== Latex Formula Example
52
+ [source, ruby]
53
+ ----
54
+ latex = "\\sin{1}"
55
+ formula = Plurimath::Math.parse(latex, "latex")
56
+ ----
57
+ ---
58
+ Since we have the object of **Plurimath::Formula**,We can generate **AsciiMath**, **MathMl** or **Latex** string from the formula object,All we have to do is call conversion function on formula object, see examples below.
59
+
60
+ ==== AsciiMath Output conversion
61
+ [source, ruby]
62
+ ----
63
+ formula.to_asciimath
64
+ > sin(1)
65
+ ----
66
+ ==== Latex Output conversion
67
+ [source, ruby]
68
+ ----
69
+ formula.to_latex
70
+ > \\sin1
71
+ ----
72
+ ==== MathML Output conversion
73
+ [source, ruby]
74
+ ----
75
+ formula.to_mathml
76
+ > <math xmlns='http://www.w3.org/1998/Math/MathML'>
77
+ > <mstyle displaystyle='true'>
78
+ > <mi>sin</mi>
79
+ > <mn>1</mn>
80
+ > </mstyle>
81
+ > </math>
82
+ ----
83
+ === Supported Content
84
+ --
85
+ include::AsciiMath-Supported-Data.adoc[]
86
+ --
87
+
88
+ --
89
+ include::MathML-Supported-Data.adoc[]
90
+ --
91
+
92
+ --
93
+ include::Latex-Supported-Data.adoc[]
94
+ --