asciimath 1.0.9 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ -->