asciimath 1.0.9 → 2.0.0

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 (57) hide show
  1. checksums.yaml +5 -5
  2. data/AST.adoc +457 -0
  3. data/CHANGELOG.adoc +12 -0
  4. data/Gemfile.lock +39 -0
  5. data/README.adoc +27 -3
  6. data/asciimath.gemspec +9 -5
  7. data/lib/asciimath.rb +5 -4
  8. data/lib/asciimath/ast.rb +456 -0
  9. data/lib/asciimath/cli.rb +4 -1
  10. data/lib/asciimath/color_table.rb +21 -0
  11. data/lib/asciimath/html.rb +126 -111
  12. data/lib/asciimath/latex.rb +386 -0
  13. data/lib/asciimath/markup.rb +478 -0
  14. data/lib/asciimath/mathml.rb +189 -87
  15. data/lib/asciimath/parser.rb +498 -343
  16. data/lib/asciimath/symbol_table.rb +25 -0
  17. data/lib/asciimath/version.rb +1 -1
  18. data/spec/ast.rb +144 -0
  19. data/spec/parser_spec.rb +592 -165
  20. data/spec/schema/mathml2/common/common-attribs.xsd +41 -0
  21. data/spec/schema/mathml2/common/math.xsd +126 -0
  22. data/spec/schema/mathml2/common/xlink-href.xsd +20 -0
  23. data/spec/schema/mathml2/content/arith.xsd +90 -0
  24. data/spec/schema/mathml2/content/calculus.xsd +146 -0
  25. data/spec/schema/mathml2/content/common-attrib.xsd +30 -0
  26. data/spec/schema/mathml2/content/constants.xsd +83 -0
  27. data/spec/schema/mathml2/content/constructs.xsd +260 -0
  28. data/spec/schema/mathml2/content/elementary-functions.xsd +117 -0
  29. data/spec/schema/mathml2/content/functions.xsd +73 -0
  30. data/spec/schema/mathml2/content/linear-algebra.xsd +173 -0
  31. data/spec/schema/mathml2/content/logic.xsd +53 -0
  32. data/spec/schema/mathml2/content/relations.xsd +55 -0
  33. data/spec/schema/mathml2/content/semantics.xsd +85 -0
  34. data/spec/schema/mathml2/content/sets.xsd +236 -0
  35. data/spec/schema/mathml2/content/statistics.xsd +136 -0
  36. data/spec/schema/mathml2/content/tokens.xsd +120 -0
  37. data/spec/schema/mathml2/content/vector-calculus.xsd +88 -0
  38. data/spec/schema/mathml2/mathml2.xsd +59 -0
  39. data/spec/schema/mathml2/presentation/action.xsd +44 -0
  40. data/spec/schema/mathml2/presentation/characters.xsd +37 -0
  41. data/spec/schema/mathml2/presentation/common-attribs.xsd +113 -0
  42. data/spec/schema/mathml2/presentation/common-types.xsd +103 -0
  43. data/spec/schema/mathml2/presentation/error.xsd +40 -0
  44. data/spec/schema/mathml2/presentation/layout.xsd +195 -0
  45. data/spec/schema/mathml2/presentation/scripts.xsd +186 -0
  46. data/spec/schema/mathml2/presentation/space.xsd +52 -0
  47. data/spec/schema/mathml2/presentation/style.xsd +69 -0
  48. data/spec/schema/mathml2/presentation/table.xsd +216 -0
  49. data/spec/schema/mathml2/presentation/tokens.xsd +124 -0
  50. data/spec/schema/mathml3/mathml3-common.xsd +99 -0
  51. data/spec/schema/mathml3/mathml3-content.xsd +684 -0
  52. data/spec/schema/mathml3/mathml3-presentation.xsd +2151 -0
  53. data/spec/schema/mathml3/mathml3-strict-content.xsd +186 -0
  54. data/spec/schema/mathml3/mathml3.xsd +9 -0
  55. metadata +102 -10
  56. data/.gitignore +0 -16
  57. data/.travis.yml +0 -18
@@ -0,0 +1,83 @@
1
+ <xs:schema
2
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
+ xmlns="http://www.w3.org/1998/Math/MathML"
4
+ targetNamespace="http://www.w3.org/1998/Math/MathML"
5
+ elementFormDefault="qualified"
6
+ >
7
+
8
+ <xs:annotation>
9
+ <xs:documentation>
10
+ This is the XML Schema module for the basic constants of MathML content.
11
+ Author: St&#233;phane Dalmas.
12
+ </xs:documentation>
13
+ </xs:annotation>
14
+
15
+ <!-- a common type for all this -->
16
+
17
+ <xs:complexType name="Constant.type">
18
+ <xs:attributeGroup ref="Definition.attrib"/>
19
+ <xs:attributeGroup ref="Common.attrib"/>
20
+ </xs:complexType>
21
+
22
+ <!-- Basic sets -->
23
+
24
+ <xs:element name="naturalnumbers" type="Constant.type"/>
25
+ <xs:element name="primes" type="Constant.type"/>
26
+ <xs:element name="integers" type="Constant.type"/>
27
+ <xs:element name="rationals" type="Constant.type"/>
28
+ <xs:element name="reals" type="Constant.type"/>
29
+ <xs:element name="complexes" type="Constant.type"/>
30
+
31
+ <!-- Empty set -->
32
+
33
+ <xs:element name="emptyset" type="Constant.type"/>
34
+
35
+ <!-- Basic constants -->
36
+
37
+ <xs:element name="exponentiale" type="Constant.type"/>
38
+ <xs:element name="imaginaryi" type="Constant.type"/>
39
+ <xs:element name="pi" type="Constant.type"/>
40
+ <xs:element name="eulergamma" type="Constant.type"/>
41
+
42
+ <!-- Boolean constants -->
43
+
44
+ <xs:element name="true" type="Constant.type"/>
45
+ <xs:element name="false" type="Constant.type"/>
46
+
47
+ <!-- Infinty -->
48
+
49
+ <xs:element name="infinity" type="Constant.type"/>
50
+
51
+ <!-- NotANumber -->
52
+
53
+ <xs:element name="notanumber" type="Constant.type"/>
54
+
55
+ <!-- And the group of everything -->
56
+
57
+ <xs:group name="Content-constants.class">
58
+ <xs:choice>
59
+ <xs:element ref="naturalnumbers"/>
60
+ <xs:element ref="primes"/>
61
+ <xs:element ref="integers"/>
62
+ <xs:element ref="rationals"/>
63
+ <xs:element ref="reals"/>
64
+ <xs:element ref="complexes"/>
65
+ <xs:element ref="emptyset"/>
66
+ <xs:element ref="exponentiale"/>
67
+ <xs:element ref="imaginaryi"/>
68
+ <xs:element ref="pi"/>
69
+ <xs:element ref="eulergamma"/>
70
+ <xs:element ref="true"/>
71
+ <xs:element ref="false"/>
72
+ <xs:element ref="infinity"/>
73
+ <xs:element ref="notanumber"/>
74
+ </xs:choice>
75
+ </xs:group>
76
+
77
+ </xs:schema>
78
+ <!--
79
+ Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
80
+ of Technology, Institut National de Recherche en Informatique et en
81
+ Automatique, Keio University). All Rights Reserved. See
82
+ http://www.w3.org/Consortium/Legal/.
83
+ -->
@@ -0,0 +1,260 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+
3
+ <xs:schema
4
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
5
+ xmlns="http://www.w3.org/1998/Math/MathML"
6
+ targetNamespace="http://www.w3.org/1998/Math/MathML"
7
+ elementFormDefault="qualified"
8
+ >
9
+
10
+
11
+ <xs:annotation>
12
+ <xs:documentation>
13
+ This is an XML Schema module for the basic constructs of content MathML.
14
+ Author: St&#233;phane Dalmas, INRIA.
15
+ </xs:documentation>
16
+ </xs:annotation>
17
+
18
+ <!-- "apply" -->
19
+
20
+ <xs:attributeGroup name="apply.attlist">
21
+ <xs:attributeGroup ref="Common.attrib"/>
22
+ </xs:attributeGroup>
23
+
24
+ <xs:group name="apply.content">
25
+ <xs:sequence>
26
+ <xs:group ref="Content-expr.class"/>
27
+ </xs:sequence>
28
+ </xs:group>
29
+
30
+ <xs:complexType name="apply.type">
31
+ <xs:group ref="apply.content" minOccurs="0" maxOccurs="unbounded"/>
32
+ <xs:attributeGroup ref="apply.attlist"/>
33
+ </xs:complexType>
34
+
35
+ <xs:element name="apply" type="apply.type"/>
36
+
37
+ <!-- "interval" -->
38
+
39
+ <xs:attributeGroup name="interval.attlist">
40
+ <xs:attribute name="closure" default="closed">
41
+ <xs:simpleType>
42
+ <xs:restriction base="xs:string">
43
+ <xs:enumeration value="closed"/>
44
+ <xs:enumeration value="open"/>
45
+ <xs:enumeration value="open-closed"/>
46
+ <xs:enumeration value="closed-open"/>
47
+ </xs:restriction>
48
+ </xs:simpleType>
49
+ </xs:attribute>
50
+ <xs:attributeGroup ref="Common.attrib"/>
51
+ </xs:attributeGroup>
52
+
53
+ <!--
54
+ <xs:group name="interval.content">
55
+ <xs:choice>
56
+ <xs:group ref="Content-expr.class" minOccurs="2" maxOccurs="2"/>
57
+ <xs:element ref="condition"/>
58
+ </xs:choice>
59
+ </xs:group>
60
+ -->
61
+
62
+ <xs:complexType name="interval.type">
63
+ <!-- <xs:group ref="interval.content"/> -->
64
+ <xs:group ref="Content-expr.class" maxOccurs="2"/>
65
+ <xs:attributeGroup ref="interval.attlist"/>
66
+ </xs:complexType>
67
+
68
+ <xs:element name="interval" type="interval.type"/>
69
+
70
+ <!-- "inverse" -->
71
+
72
+ <xs:attributeGroup name="inverse.attlist">
73
+ <xs:attributeGroup ref="Definition.attrib"/>
74
+ <xs:attributeGroup ref="Common.attrib"/>
75
+ </xs:attributeGroup>
76
+
77
+ <xs:complexType name="inverse.type">
78
+ <xs:attributeGroup ref="inverse.attlist"/>
79
+ </xs:complexType>
80
+
81
+ <xs:element name="inverse" type="inverse.type"/>
82
+
83
+ <!-- "condition" -->
84
+
85
+ <xs:attributeGroup name="condition.attlist">
86
+ <xs:attributeGroup ref="Definition.attrib"/>
87
+ </xs:attributeGroup>
88
+
89
+ <xs:group name="condition.content">
90
+ <xs:sequence>
91
+ <xs:group ref="Content-expr.class"/>
92
+ </xs:sequence>
93
+ </xs:group>
94
+
95
+ <xs:complexType name="condition.type">
96
+ <xs:group ref="condition.content" minOccurs="1" maxOccurs="unbounded"/>
97
+ <xs:attributeGroup ref="condition.attlist"/>
98
+ </xs:complexType>
99
+
100
+ <xs:element name="condition" type="condition.type"/>
101
+
102
+ <!-- "declare" -->
103
+
104
+ <xs:attributeGroup name="declare.attlist">
105
+ <xs:attribute name="type" type="xs:string"/>
106
+ <xs:attribute name="scope" type="xs:string"/>
107
+ <xs:attribute name="nargs" type="xs:nonNegativeInteger"/>
108
+ <xs:attribute name="occurrence">
109
+ <xs:simpleType>
110
+ <xs:restriction base="xs:string">
111
+ <xs:enumeration value="prefix"/>
112
+ <xs:enumeration value="infix"/>
113
+ <xs:enumeration value="function-model"/>
114
+ </xs:restriction>
115
+ </xs:simpleType>
116
+ </xs:attribute>
117
+ <xs:attributeGroup ref="Definition.attrib"/>
118
+ </xs:attributeGroup>
119
+
120
+ <xs:group name="declare.content">
121
+ <xs:sequence>
122
+ <xs:group ref="Content-expr.class"/>
123
+ </xs:sequence>
124
+ </xs:group>
125
+
126
+ <xs:complexType name="declare.type">
127
+ <xs:group ref="declare.content" minOccurs="1" maxOccurs="unbounded"/>
128
+ <xs:attributeGroup ref="declare.attlist"/>
129
+ </xs:complexType>
130
+
131
+ <xs:element name="declare" type="declare.type"/>
132
+
133
+ <!-- "lambda" -->
134
+
135
+ <xs:attributeGroup name="lambda.attlist">
136
+ <xs:attributeGroup ref="Common.attrib"/>
137
+ </xs:attributeGroup>
138
+
139
+ <xs:group name="lambda.content">
140
+ <xs:sequence>
141
+ <xs:group ref="Content-expr.class"/>
142
+ </xs:sequence>
143
+ </xs:group>
144
+
145
+ <xs:complexType name="lambda.type">
146
+ <xs:group ref="lambda.content" minOccurs="1" maxOccurs="unbounded"/>
147
+ <xs:attributeGroup ref="lambda.attlist"/>
148
+ </xs:complexType>
149
+
150
+ <xs:element name="lambda" type="lambda.type"/>
151
+
152
+ <!-- "piecewise" and its inner elements -->
153
+
154
+ <xs:group name="otherwise.content">
155
+ <xs:sequence>
156
+ <xs:group ref="Content-expr.class"/>
157
+ </xs:sequence>
158
+ </xs:group>
159
+
160
+ <xs:complexType name="otherwise.type">
161
+ <xs:group ref="otherwise.content"/>
162
+ <xs:attributeGroup ref="Common.attrib"/>
163
+ </xs:complexType>
164
+
165
+ <xs:element name="otherwise" type="otherwise.type"/>
166
+
167
+ <xs:group name="piece.content">
168
+ <xs:sequence>
169
+ <xs:group ref="Content-expr.class"/>
170
+ </xs:sequence>
171
+ </xs:group>
172
+
173
+ <xs:complexType name="piece.type">
174
+ <xs:group ref="piece.content" minOccurs="1" maxOccurs="unbounded"/>
175
+ </xs:complexType>
176
+
177
+ <xs:element name="piece" type="piece.type"/>
178
+
179
+ <xs:attributeGroup name="piecewise.attlist">
180
+ <xs:attributeGroup ref="Common.attrib"/>
181
+ </xs:attributeGroup>
182
+
183
+ <xs:group name="piecewise.content">
184
+ <xs:sequence>
185
+ <xs:element ref="piece" minOccurs="0" maxOccurs="unbounded"/>
186
+ <xs:sequence minOccurs="0">
187
+ <xs:element ref="otherwise"/>
188
+ <xs:element ref="piece" minOccurs="0" maxOccurs="unbounded"/>
189
+ </xs:sequence>
190
+ </xs:sequence>
191
+ </xs:group>
192
+
193
+ <xs:complexType name="piecewise.type">
194
+ <xs:group ref="piecewise.content"/>
195
+ <xs:attributeGroup ref="piecewise.attlist"/>
196
+ </xs:complexType>
197
+
198
+ <xs:element name="piecewise" type="piecewise.type"/>
199
+
200
+ <!-- "bvar" -->
201
+
202
+ <xs:attributeGroup name="bvar.attlist">
203
+ <xs:attributeGroup ref="Common.attrib"/>
204
+ </xs:attributeGroup>
205
+
206
+ <xs:group name="bvar.content">
207
+ <xs:sequence>
208
+ <xs:group ref="Content-expr.class"/>
209
+ </xs:sequence>
210
+ </xs:group>
211
+
212
+ <xs:complexType name="bvar.type">
213
+ <xs:group ref="bvar.content" minOccurs="1" maxOccurs="unbounded"/>
214
+ <xs:attributeGroup ref="bvar.attlist"/>
215
+ </xs:complexType>
216
+
217
+ <xs:element name="bvar" type="bvar.type"/>
218
+
219
+ <!-- "degree" -->
220
+
221
+ <xs:attributeGroup name="degree.attlist">
222
+ <xs:attributeGroup ref="Common.attrib"/>
223
+ </xs:attributeGroup>
224
+
225
+ <xs:group name="degree.content">
226
+ <xs:sequence>
227
+ <xs:group ref="Content-expr.class"/>
228
+ </xs:sequence>
229
+ </xs:group>
230
+
231
+ <xs:complexType name="degree.type">
232
+ <xs:group ref="degree.content" minOccurs="1" maxOccurs="unbounded"/>
233
+ <xs:attributeGroup ref="degree.attlist"/>
234
+ </xs:complexType>
235
+
236
+ <xs:element name="degree" type="degree.type"/>
237
+
238
+ <!-- And the group of everything -->
239
+
240
+ <xs:group name="Content-constructs.class">
241
+ <xs:choice>
242
+ <xs:element ref="apply"/>
243
+ <xs:element ref="interval"/>
244
+ <xs:element ref="inverse"/>
245
+ <xs:element ref="condition"/>
246
+ <xs:element ref="declare"/>
247
+ <xs:element ref="lambda"/>
248
+ <xs:element ref="piecewise"/>
249
+ <xs:element ref="bvar"/>
250
+ <xs:element ref="degree"/>
251
+ </xs:choice>
252
+ </xs:group>
253
+
254
+ </xs:schema>
255
+ <!--
256
+ Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
257
+ of Technology, Institut National de Recherche en Informatique et en
258
+ Automatique, Keio University). All Rights Reserved. See
259
+ http://www.w3.org/Consortium/Legal/.
260
+ -->
@@ -0,0 +1,117 @@
1
+ <xs:schema
2
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
+ xmlns="http://www.w3.org/1998/Math/MathML"
4
+ targetNamespace="http://www.w3.org/1998/Math/MathML"
5
+ elementFormDefault="qualified"
6
+ >
7
+
8
+
9
+ <xs:annotation>
10
+ <xs:documentation>
11
+ This is an XML Schema module for the elementary functions in content
12
+ MathML.
13
+ Author: St&#233;phane Dalmas, INRIA.
14
+ </xs:documentation>
15
+ </xs:annotation>
16
+
17
+ <!-- a common type for all this -->
18
+
19
+ <xs:complexType name="Elementary-functions.type">
20
+ <xs:attributeGroup ref="Definition.attrib"/>
21
+ <xs:attributeGroup ref="Common.attrib"/>
22
+ </xs:complexType>
23
+
24
+ <!-- Exp and logs -->
25
+
26
+ <xs:element name="exp" type="Elementary-functions.type"/>
27
+ <xs:element name="ln" type="Elementary-functions.type"/>
28
+ <xs:element name="log" type="Elementary-functions.type"/>
29
+
30
+ <!-- special element of the base of logarithms -->
31
+
32
+ <xs:group name="logbase.content">
33
+ <xs:sequence>
34
+ <xs:group ref="Content-expr.class"/>
35
+ </xs:sequence>
36
+ </xs:group>
37
+
38
+ <xs:complexType name="logbase.type">
39
+ <xs:group ref="logbase.content"/>
40
+ <xs:attributeGroup ref="Common.attrib"/>
41
+ </xs:complexType>
42
+
43
+ <xs:element name="logbase" type="logbase.type"/>
44
+
45
+ <!-- Trigonometric functions -->
46
+
47
+ <xs:element name="sin" type="Elementary-functions.type"/>
48
+ <xs:element name="cos" type="Elementary-functions.type"/>
49
+ <xs:element name="tan" type="Elementary-functions.type"/>
50
+ <xs:element name="sec" type="Elementary-functions.type"/>
51
+ <xs:element name="csc" type="Elementary-functions.type"/>
52
+ <xs:element name="cot" type="Elementary-functions.type"/>
53
+
54
+ <xs:element name="arcsin" type="Elementary-functions.type"/>
55
+ <xs:element name="arccos" type="Elementary-functions.type"/>
56
+ <xs:element name="arctan" type="Elementary-functions.type"/>
57
+ <xs:element name="arccot" type="Elementary-functions.type"/>
58
+ <xs:element name="arccsc" type="Elementary-functions.type"/>
59
+ <xs:element name="arcsec" type="Elementary-functions.type"/>
60
+
61
+ <!-- Hyperbolic trigonometric functions -->
62
+
63
+ <xs:element name="sinh" type="Elementary-functions.type"/>
64
+ <xs:element name="cosh" type="Elementary-functions.type"/>
65
+ <xs:element name="tanh" type="Elementary-functions.type"/>
66
+ <xs:element name="sech" type="Elementary-functions.type"/>
67
+ <xs:element name="csch" type="Elementary-functions.type"/>
68
+ <xs:element name="coth" type="Elementary-functions.type"/>
69
+ <xs:element name="arccosh" type="Elementary-functions.type"/>
70
+ <xs:element name="arccoth" type="Elementary-functions.type"/>
71
+ <xs:element name="arccsch" type="Elementary-functions.type"/>
72
+ <xs:element name="arcsech" type="Elementary-functions.type"/>
73
+ <xs:element name="arcsinh" type="Elementary-functions.type"/>
74
+ <xs:element name="arctanh" type="Elementary-functions.type"/>
75
+
76
+ <!-- And the group of everything -->
77
+
78
+ <xs:group name="Content-elementary-functions.class">
79
+ <xs:choice>
80
+ <xs:element ref="exp"/>
81
+ <xs:element ref="ln"/>
82
+ <xs:element ref="log"/>
83
+ <xs:element ref="logbase"/>
84
+ <xs:element ref="sin"/>
85
+ <xs:element ref="cos"/>
86
+ <xs:element ref="tan"/>
87
+ <xs:element ref="sec"/>
88
+ <xs:element ref="csc"/>
89
+ <xs:element ref="cot"/>
90
+ <xs:element ref="arcsin"/>
91
+ <xs:element ref="arccos"/>
92
+ <xs:element ref="arctan"/>
93
+ <xs:element ref="arcsec"/>
94
+ <xs:element ref="arccsc"/>
95
+ <xs:element ref="arccot"/>
96
+ <xs:element ref="sinh"/>
97
+ <xs:element ref="cosh"/>
98
+ <xs:element ref="tanh"/>
99
+ <xs:element ref="sech"/>
100
+ <xs:element ref="csch"/>
101
+ <xs:element ref="coth"/>
102
+ <xs:element ref="arccosh"/>
103
+ <xs:element ref="arccoth"/>
104
+ <xs:element ref="arccsch"/>
105
+ <xs:element ref="arcsech"/>
106
+ <xs:element ref="arcsinh"/>
107
+ <xs:element ref="arctanh"/>
108
+ </xs:choice>
109
+ </xs:group>
110
+
111
+ </xs:schema>
112
+ <!--
113
+ Copyright &#251; 2002 World Wide Web Consortium, (Massachusetts Institute
114
+ of Technology, Institut National de Recherche en Informatique et en
115
+ Automatique, Keio University). All Rights Reserved. See
116
+ http://www.w3.org/Consortium/Legal/.
117
+ -->