asciimath2unitsml 0.3.2 → 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/.github/workflows/rake.yml +2 -23
- data/.hound.yml +5 -0
- data/.rubocop.yml +4 -8
- data/Gemfile +1 -1
- data/README.adoc +19 -1
- data/Rakefile +1 -1
- data/asciimath2unitsml.gemspec +15 -18
- data/bin/rspec +1 -2
- data/lib/asciimath2unitsml/conv.rb +32 -89
- data/lib/asciimath2unitsml/dimensions.rb +117 -0
- data/lib/asciimath2unitsml/parse.rb +93 -75
- data/lib/asciimath2unitsml/read.rb +42 -0
- data/lib/asciimath2unitsml/render.rb +48 -31
- data/lib/asciimath2unitsml/unit.rb +29 -23
- data/lib/asciimath2unitsml/validate.rb +27 -25
- data/lib/asciimath2unitsml/version.rb +1 -1
- data/lib/asciimath2unitsml.rb +0 -1
- data/lib/unitsdb/dimensions.yaml +65 -8
- data/lib/unitsdb_ruby/unitsdb.rb +87 -55
- data/spec/conv_spec.rb +1443 -1365
- data/spec/spec_helper.rb +10 -10
- metadata +28 -25
data/spec/conv_spec.rb
CHANGED
@@ -2,1454 +2,1532 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
RSpec.describe Asciimath2UnitsML do
|
4
4
|
it "converts an AsciiMath string to MathML + UnitsML" do
|
5
|
-
|
6
|
-
|
5
|
+
input = <<~INPUT
|
6
|
+
1 "unitsml(mm*s^-2)"
|
7
7
|
INPUT
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
<
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
8
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
9
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
10
|
+
<?xml version='1.0'?>
|
11
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
12
|
+
<mn>1</mn>
|
13
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
14
|
+
<mrow xref='U_mm.s-2'>
|
15
|
+
<mi mathvariant='normal'>mm</mi>
|
16
|
+
<mo>⋅</mo>
|
17
|
+
<msup>
|
18
|
+
<mrow>
|
19
|
+
<mi mathvariant='normal'>s</mi>
|
20
|
+
</mrow>
|
21
|
+
<mrow>
|
22
|
+
<mo>−</mo>
|
23
|
+
<mn>2</mn>
|
24
|
+
</mrow>
|
25
|
+
</msup>
|
22
26
|
</mrow>
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
<UnitSymbol type='MathML'>
|
33
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
34
|
-
<mrow>
|
35
|
-
<mi mathvariant='normal'>mm</mi>
|
36
|
-
<mo>⋅</mo>
|
37
|
-
<msup>
|
38
|
-
<mrow>
|
39
|
-
<mi mathvariant='normal'>s</mi>
|
40
|
-
</mrow>
|
27
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_mm.s-2' dimensionURL='#NISTd28'>
|
28
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
29
|
+
<UnitName xml:lang='en'>mm*s^-2</UnitName>
|
30
|
+
<UnitSymbol type='HTML'>
|
31
|
+
mm⋅s
|
32
|
+
<sup>−2</sup>
|
33
|
+
</UnitSymbol>
|
34
|
+
<UnitSymbol type='MathML'>
|
35
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
41
36
|
<mrow>
|
42
|
-
<
|
43
|
-
<
|
37
|
+
<mi mathvariant='normal'>mm</mi>
|
38
|
+
<mo>⋅</mo>
|
39
|
+
<msup>
|
40
|
+
<mrow>
|
41
|
+
<mi mathvariant='normal'>s</mi>
|
42
|
+
</mrow>
|
43
|
+
<mrow>
|
44
|
+
<mo>−</mo>
|
45
|
+
<mn>2</mn>
|
46
|
+
</mrow>
|
47
|
+
</msup>
|
44
48
|
</mrow>
|
45
|
-
</
|
46
|
-
</
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
</math>
|
66
|
-
OUTPUT
|
49
|
+
</math>
|
50
|
+
</UnitSymbol>
|
51
|
+
<RootUnits>
|
52
|
+
<EnumeratedRootUnit unit='meter' prefix='m'/>
|
53
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
54
|
+
</RootUnits>
|
55
|
+
</Unit>
|
56
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
57
|
+
<PrefixName xml:lang='en'>milli</PrefixName>
|
58
|
+
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
59
|
+
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
60
|
+
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
61
|
+
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
62
|
+
</Prefix>
|
63
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd28'>
|
64
|
+
<Length symbol='L' powerNumerator='1'/>
|
65
|
+
<Time symbol='T' powerNumerator='-2'/>
|
66
|
+
</Dimension>
|
67
|
+
</math>
|
68
|
+
OUTPUT
|
67
69
|
end
|
68
70
|
|
69
71
|
it "deals with non-Ascii units and prefixes" do
|
70
|
-
|
71
|
-
|
72
|
+
input = <<~INPUT
|
73
|
+
1 "unitsml(um)"
|
72
74
|
INPUT
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
75
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
76
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
77
|
+
<?xml version='1.0'?>
|
78
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
79
|
+
<mn>1</mn>
|
80
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
81
|
+
<mrow xref='U_um'>
|
82
|
+
<mi mathvariant='normal'>µm</mi>
|
83
|
+
</mrow>
|
84
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_um' dimensionURL='#NISTd1'>
|
85
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
86
|
+
<UnitName xml:lang='en'>um</UnitName>
|
87
|
+
<UnitSymbol type='HTML'>um</UnitSymbol>
|
88
|
+
<UnitSymbol type='MathML'>
|
89
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
90
|
+
<mrow>
|
91
|
+
<mi mathvariant='normal'>µm</mi>
|
92
|
+
</mrow>
|
93
|
+
</math>
|
94
|
+
</UnitSymbol>
|
95
|
+
<RootUnits>
|
96
|
+
<EnumeratedRootUnit unit='meter' prefix='u'/>
|
97
|
+
</RootUnits>
|
98
|
+
</Unit>
|
99
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-6' xml:id='NISTp10_-6'>
|
100
|
+
<PrefixName xml:lang='en'>micro</PrefixName>
|
101
|
+
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
102
|
+
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
103
|
+
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
104
|
+
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
105
|
+
</Prefix>
|
106
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd1'>
|
107
|
+
<Length symbol='L' powerNumerator='1'/>
|
108
|
+
</Dimension>
|
109
|
+
</math>
|
110
|
+
OUTPUT
|
111
|
+
end
|
108
112
|
|
109
113
|
it "does not insert space before non-alphabetic units" do
|
110
|
-
|
111
|
-
|
112
|
-
INPUT
|
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
|
-
|
114
|
+
input = <<~INPUT
|
115
|
+
1 "unitsml(degK)" + 1 "unitsml(prime)" + ii(theta) = s//r "unitsml(rad)" + 10^(12) "unitsml(Hz)"
|
116
|
+
INPUT
|
117
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
118
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
119
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
120
|
+
<mn>1</mn>
|
121
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
122
|
+
<mrow xref='U_NISTu5'>
|
123
|
+
<mi mathvariant='normal'>°K</mi>
|
124
|
+
</mrow>
|
125
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu5' dimensionURL='#NISTd5'>
|
126
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
127
|
+
<UnitName xml:lang='en'>kelvin</UnitName>
|
128
|
+
<UnitSymbol type='HTML'>K</UnitSymbol>
|
129
|
+
<UnitSymbol type='MathML'>
|
130
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
131
|
+
<mrow>
|
132
|
+
<mi mathvariant='normal'>K</mi>
|
133
|
+
</mrow>
|
134
|
+
</math>
|
135
|
+
</UnitSymbol>
|
136
|
+
</Unit>
|
137
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd5'>
|
138
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
|
139
|
+
</Dimension>
|
140
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq5' dimensionURL='#NISTd5' quantityType='base'>
|
141
|
+
<QuantityName xml:lang='en-US'>thermodynamic temperature</QuantityName>
|
142
|
+
</Quantity>
|
143
|
+
<mo>+</mo>
|
144
|
+
<mn>1</mn>
|
145
|
+
<mo>⁢</mo>
|
146
|
+
<mrow xref='U_NISTu147'>
|
147
|
+
<mi mathvariant='normal'>′</mi>
|
148
|
+
</mrow>
|
149
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu147'>
|
150
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
151
|
+
<UnitName xml:lang='en'>minute (minute of arc)</UnitName>
|
152
|
+
<UnitSymbol type='HTML'>′</UnitSymbol>
|
153
|
+
<UnitSymbol type='MathML'>
|
154
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
155
|
+
<mrow>
|
156
|
+
<mi mathvariant='normal'>′</mi>
|
157
|
+
</mrow>
|
158
|
+
</math>
|
159
|
+
</UnitSymbol>
|
160
|
+
</Unit>
|
161
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd9'>
|
162
|
+
<PlaneAngle symbol='phi' powerNumerator='1'/>
|
163
|
+
</Dimension>
|
164
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq9' dimensionURL='#NISTd9' quantityType='base'>
|
165
|
+
<QuantityName xml:lang='en-US'>plane angle</QuantityName>
|
166
|
+
<QuantityName xml:lang='en-US'>angle</QuantityName>
|
167
|
+
</Quantity>
|
168
|
+
<mo>+</mo>
|
169
|
+
<mstyle mathvariant='italic'>
|
170
|
+
<mi>θ</mi>
|
171
|
+
</mstyle>
|
172
|
+
<mo>=</mo>
|
173
|
+
<mi>s</mi>
|
174
|
+
<mo>/</mo>
|
175
|
+
<mi>r</mi>
|
176
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
177
|
+
<mrow xref='U_NISTu9'>
|
178
|
+
<mi mathvariant='normal'>rad</mi>
|
179
|
+
</mrow>
|
180
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu9' dimensionURL='#D_L0'>
|
181
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
182
|
+
<UnitName xml:lang='en'>radian</UnitName>
|
183
|
+
<UnitSymbol type='HTML'>rad</UnitSymbol>
|
184
|
+
<UnitSymbol type='MathML'>
|
185
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
186
|
+
<mrow>
|
187
|
+
<mi mathvariant='normal'>rad</mi>
|
188
|
+
</mrow>
|
189
|
+
</math>
|
190
|
+
</UnitSymbol>
|
191
|
+
</Unit>
|
192
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_L0'>
|
193
|
+
<Length symbol='L' powerNumerator='0'/>
|
194
|
+
</Dimension>
|
195
|
+
<mo>+</mo>
|
196
|
+
<msup>
|
197
|
+
<mrow>
|
198
|
+
<mn>10</mn>
|
199
|
+
</mrow>
|
200
|
+
<mrow>
|
201
|
+
<mn>12</mn>
|
202
|
+
</mrow>
|
203
|
+
</msup>
|
204
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
205
|
+
<mrow xref='U_NISTu31'>
|
206
|
+
<mi mathvariant='normal'>Hz</mi>
|
207
|
+
</mrow>
|
208
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu31' dimensionURL='#NISTd24'>
|
209
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
210
|
+
<UnitName xml:lang='en'>hertz</UnitName>
|
211
|
+
<UnitSymbol type='HTML'>Hz</UnitSymbol>
|
212
|
+
<UnitSymbol type='MathML'>
|
213
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
214
|
+
<mrow>
|
215
|
+
<mi mathvariant='normal'>Hz</mi>
|
216
|
+
</mrow>
|
217
|
+
</math>
|
218
|
+
</UnitSymbol>
|
219
|
+
</Unit>
|
220
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd24'>
|
221
|
+
<Time symbol='T' powerNumerator='-1'/>
|
222
|
+
</Dimension>
|
223
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq45' dimensionURL='#NISTd24' quantityType='base'>
|
224
|
+
<QuantityName xml:lang='en-US'>frequency</QuantityName>
|
225
|
+
</Quantity>
|
226
|
+
</math>
|
227
|
+
OUTPUT
|
228
|
+
end
|
223
229
|
|
224
230
|
it "does not insert space before operators" do
|
225
|
-
|
226
|
-
|
227
|
-
INPUT
|
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
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
231
|
+
input = <<~INPUT
|
232
|
+
8 "unitsml(kg)" cdot "unitsml(m)"
|
233
|
+
INPUT
|
234
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
235
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
236
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
237
|
+
<mn>8</mn>
|
238
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
239
|
+
<mrow xref='U_NISTu2'>
|
240
|
+
<mi mathvariant='normal'>kg</mi>
|
241
|
+
</mrow>
|
242
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu2' dimensionURL='#NISTd2'>
|
243
|
+
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
244
|
+
<UnitName xml:lang='en'>kilogram</UnitName>
|
245
|
+
<UnitSymbol type='HTML'>kg</UnitSymbol>
|
246
|
+
<UnitSymbol type='MathML'>
|
247
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
248
|
+
<mrow>
|
249
|
+
<mi mathvariant='normal'>kg</mi>
|
250
|
+
</mrow>
|
251
|
+
</math>
|
252
|
+
</UnitSymbol>
|
253
|
+
<RootUnits>
|
254
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
255
|
+
</RootUnits>
|
256
|
+
</Unit>
|
257
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
258
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
259
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
260
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
261
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
262
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
263
|
+
</Prefix>
|
264
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd2'>
|
265
|
+
<Mass symbol='M' powerNumerator='1'/>
|
266
|
+
</Dimension>
|
267
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
268
|
+
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
269
|
+
</Quantity>
|
270
|
+
<mo>⋅</mo>
|
271
|
+
<mrow xref='U_NISTu1'>
|
272
|
+
<mi mathvariant='normal'>m</mi>
|
273
|
+
</mrow>
|
274
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
275
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
276
|
+
<UnitName xml:lang='en'>meter</UnitName>
|
277
|
+
<UnitSymbol type='HTML'>m</UnitSymbol>
|
278
|
+
<UnitSymbol type='MathML'>
|
279
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
280
|
+
<mrow>
|
281
|
+
<mi mathvariant='normal'>m</mi>
|
282
|
+
</mrow>
|
283
|
+
</math>
|
284
|
+
</UnitSymbol>
|
285
|
+
</Unit>
|
286
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd1'>
|
287
|
+
<Length symbol='L' powerNumerator='1'/>
|
288
|
+
</Dimension>
|
289
|
+
</math>
|
290
|
+
OUTPUT
|
283
291
|
end
|
284
292
|
|
285
293
|
it "deals with sqrt units" do
|
286
|
-
|
287
|
-
|
294
|
+
input = <<~INPUT
|
295
|
+
1 "unitsml(sqrt(Hz))"
|
288
296
|
INPUT
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
|
311
|
-
|
312
|
-
|
313
|
-
|
314
|
-
|
315
|
-
|
297
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
298
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
299
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
300
|
+
<mn>1</mn>
|
301
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
302
|
+
<mrow xref='U_sqrtHz'>
|
303
|
+
<msqrt>
|
304
|
+
<mi mathvariant='normal'>Hz</mi>
|
305
|
+
</msqrt>
|
306
|
+
</mrow>
|
307
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_Hz0.5' dimensionURL='#D_T-0.5'>
|
308
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
309
|
+
<UnitName xml:lang='en'>Hz^0.5</UnitName>
|
310
|
+
<UnitSymbol type='HTML'>√Hz</UnitSymbol>
|
311
|
+
<UnitSymbol type='MathML'>
|
312
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
313
|
+
<mrow>
|
314
|
+
<msqrt>
|
315
|
+
<mi mathvariant='normal'>Hz</mi>
|
316
|
+
</msqrt>
|
317
|
+
</mrow>
|
318
|
+
</math>
|
319
|
+
</UnitSymbol>
|
320
|
+
</Unit>
|
321
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_T-0.5'>
|
322
|
+
<Time symbol='T' powerNumerator='-0.5'/>
|
323
|
+
</Dimension>
|
324
|
+
</math>
|
325
|
+
OUTPUT
|
316
326
|
end
|
317
327
|
|
318
328
|
it "deals with kg and g" do
|
319
|
-
|
320
|
-
|
329
|
+
input = <<~INPUT
|
330
|
+
1 "unitsml(kg)" + 1 "unitsml(g)"
|
321
331
|
INPUT
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
|
329
|
-
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
332
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
333
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
334
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
335
|
+
<mn>1</mn>
|
336
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
337
|
+
<mrow xref='U_NISTu2'>
|
338
|
+
<mi mathvariant='normal'>kg</mi>
|
339
|
+
</mrow>
|
340
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu2' dimensionURL='#NISTd2'>
|
341
|
+
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
342
|
+
<UnitName xml:lang='en'>kilogram</UnitName>
|
343
|
+
<UnitSymbol type='HTML'>kg</UnitSymbol>
|
344
|
+
<UnitSymbol type='MathML'>
|
345
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
346
|
+
<mrow>
|
347
|
+
<mi mathvariant='normal'>kg</mi>
|
348
|
+
</mrow>
|
349
|
+
</math>
|
350
|
+
</UnitSymbol>
|
351
|
+
<RootUnits>
|
352
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
353
|
+
</RootUnits>
|
354
|
+
</Unit>
|
355
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
356
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
357
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
358
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
359
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
360
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
361
|
+
</Prefix>
|
362
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd2'>
|
363
|
+
<Mass symbol='M' powerNumerator='1'/>
|
364
|
+
</Dimension>
|
365
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
366
|
+
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
367
|
+
</Quantity>
|
368
|
+
<mo>+</mo>
|
369
|
+
<mn>1</mn>
|
370
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
371
|
+
<mrow xref='U_NISTu27'>
|
372
|
+
<mi mathvariant='normal'>g</mi>
|
373
|
+
</mrow>
|
374
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu27' dimensionURL='#NISTd2'>
|
375
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
376
|
+
<UnitName xml:lang='en'>gram</UnitName>
|
377
|
+
<UnitSymbol type='HTML'>g</UnitSymbol>
|
378
|
+
<UnitSymbol type='MathML'>
|
379
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
380
|
+
<mrow>
|
381
|
+
<mi mathvariant='normal'>g</mi>
|
382
|
+
</mrow>
|
383
|
+
</math>
|
384
|
+
</UnitSymbol>
|
385
|
+
</Unit>
|
386
|
+
</math>
|
387
|
+
OUTPUT
|
376
388
|
end
|
377
389
|
|
378
390
|
it "deals with non-metric" do
|
379
|
-
|
380
|
-
|
391
|
+
input = <<~INPUT
|
392
|
+
1 "unitsml(hp)"
|
381
393
|
INPUT
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
<
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
394
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
395
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
396
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
397
|
+
<mn>1</mn>
|
398
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
399
|
+
<mrow xref='U_NISTu284'>
|
400
|
+
<mi mathvariant='normal'>hp</mi>
|
401
|
+
</mrow>
|
402
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu284'>
|
403
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
404
|
+
<UnitName xml:lang='en'>horsepower</UnitName>
|
405
|
+
<UnitSymbol type='HTML'>hp</UnitSymbol>
|
406
|
+
<UnitSymbol type='MathML'>
|
407
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
408
|
+
<mrow>
|
409
|
+
<mi mathvariant='normal'>hp</mi>
|
410
|
+
</mrow>
|
411
|
+
</math>
|
412
|
+
</UnitSymbol>
|
413
|
+
</Unit>
|
414
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd16'>
|
415
|
+
<Length symbol='L' powerNumerator='2'/>
|
416
|
+
<Mass symbol='M' powerNumerator='1'/>
|
417
|
+
<Time symbol='T' powerNumerator='-3'/>
|
418
|
+
</Dimension>
|
419
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq20' dimensionURL='#NISTd16' quantityType='base'>
|
420
|
+
<QuantityName xml:lang='en-US'>power</QuantityName>
|
421
|
+
</Quantity>
|
422
|
+
</math>
|
423
|
+
OUTPUT
|
410
424
|
end
|
411
425
|
|
412
426
|
it "deals with duplicate units" do
|
413
|
-
|
414
|
-
|
427
|
+
input = <<~INPUT
|
428
|
+
1 "unitsml(kg*s^-2)" xx 9 "unitsml(kg*s^-2)"
|
415
429
|
INPUT
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
<
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
430
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
431
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
432
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
433
|
+
<mn>1</mn>
|
434
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
435
|
+
<mrow xref='U_kg.s-2'>
|
436
|
+
<mi mathvariant='normal'>kg</mi>
|
437
|
+
<mo>⋅</mo>
|
438
|
+
<msup>
|
439
|
+
<mrow>
|
440
|
+
<mi mathvariant='normal'>s</mi>
|
441
|
+
</mrow>
|
442
|
+
<mrow>
|
443
|
+
<mo>−</mo>
|
444
|
+
<mn>2</mn>
|
445
|
+
</mrow>
|
446
|
+
</msup>
|
429
447
|
</mrow>
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
<UnitSymbol type='MathML'>
|
440
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
441
|
-
<mrow>
|
442
|
-
<mi mathvariant='normal'>kg</mi>
|
443
|
-
<mo>⋅</mo>
|
444
|
-
<msup>
|
445
|
-
<mrow>
|
446
|
-
<mi mathvariant='normal'>s</mi>
|
447
|
-
</mrow>
|
448
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
449
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
450
|
+
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
451
|
+
<UnitSymbol type='HTML'>
|
452
|
+
kg⋅s
|
453
|
+
<sup>−2</sup>
|
454
|
+
</UnitSymbol>
|
455
|
+
<UnitSymbol type='MathML'>
|
456
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
448
457
|
<mrow>
|
449
|
-
<
|
450
|
-
<
|
458
|
+
<mi mathvariant='normal'>kg</mi>
|
459
|
+
<mo>⋅</mo>
|
460
|
+
<msup>
|
461
|
+
<mrow>
|
462
|
+
<mi mathvariant='normal'>s</mi>
|
463
|
+
</mrow>
|
464
|
+
<mrow>
|
465
|
+
<mo>−</mo>
|
466
|
+
<mn>2</mn>
|
467
|
+
</mrow>
|
468
|
+
</msup>
|
451
469
|
</mrow>
|
452
|
-
</
|
453
|
-
</
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
470
|
+
</math>
|
471
|
+
</UnitSymbol>
|
472
|
+
<RootUnits>
|
473
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
474
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
475
|
+
</RootUnits>
|
476
|
+
</Unit>
|
477
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
478
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
479
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
480
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
481
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
482
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
483
|
+
</Prefix>
|
484
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd37'>
|
485
|
+
<Mass symbol='M' powerNumerator='1'/>
|
486
|
+
<Time symbol='T' powerNumerator='-2'/>
|
487
|
+
</Dimension>
|
488
|
+
<mo>×</mo>
|
489
|
+
<mn>9</mn>
|
490
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
491
|
+
<mrow xref='U_kg.s-2'>
|
492
|
+
<mi mathvariant='normal'>kg</mi>
|
493
|
+
<mo>⋅</mo>
|
494
|
+
<msup>
|
495
|
+
<mrow>
|
496
|
+
<mi mathvariant='normal'>s</mi>
|
497
|
+
</mrow>
|
498
|
+
<mrow>
|
499
|
+
<mo>−</mo>
|
500
|
+
<mn>2</mn>
|
501
|
+
</mrow>
|
502
|
+
</msup>
|
485
503
|
</mrow>
|
486
|
-
</
|
487
|
-
|
488
|
-
</math>
|
489
|
-
OUTPUT
|
504
|
+
</math>
|
505
|
+
OUTPUT
|
490
506
|
end
|
491
507
|
|
492
508
|
it "deals with parentheses" do
|
493
|
-
|
494
|
-
|
509
|
+
input = <<~INPUT
|
510
|
+
10 "unitsml(K/(kg*m))"
|
495
511
|
INPUT
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
512
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
513
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
514
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
515
|
+
<mn>10</mn>
|
516
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
517
|
+
<mrow xref='U_K/kg.m'>
|
518
|
+
<mi mathvariant='normal'>K</mi>
|
519
|
+
<mo>/</mo>
|
520
|
+
<mi mathvariant='normal'>kg</mi>
|
521
|
+
<mo>⋅</mo>
|
522
|
+
<mi mathvariant='normal'>m</mi>
|
523
|
+
</mrow>
|
524
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_K.kg-1.m-1' dimensionURL='#D_L-1M-1Theta'>
|
525
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
526
|
+
<UnitName xml:lang='en'>K*kg^-1*m^-1</UnitName>
|
527
|
+
<UnitSymbol type='HTML'>
|
528
|
+
K⋅kg
|
529
|
+
<sup>−1</sup>
|
530
|
+
⋅m
|
531
|
+
<sup>−1</sup>
|
532
|
+
</UnitSymbol>
|
533
|
+
<UnitSymbol type='MathML'>
|
534
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
535
|
+
<mrow>
|
536
|
+
<mi mathvariant='normal'>K</mi>
|
537
|
+
<mo>⋅</mo>
|
538
|
+
<msup>
|
539
|
+
<mrow>
|
540
|
+
<mi mathvariant='normal'>kg</mi>
|
541
|
+
</mrow>
|
542
|
+
<mrow>
|
543
|
+
<mo>−</mo>
|
544
|
+
<mn>1</mn>
|
545
|
+
</mrow>
|
546
|
+
</msup>
|
547
|
+
<mo>⋅</mo>
|
548
|
+
<msup>
|
549
|
+
<mrow>
|
550
|
+
<mi mathvariant='normal'>m</mi>
|
551
|
+
</mrow>
|
552
|
+
<mrow>
|
553
|
+
<mo>−</mo>
|
554
|
+
<mn>1</mn>
|
555
|
+
</mrow>
|
556
|
+
</msup>
|
557
|
+
</mrow>
|
558
|
+
</math>
|
559
|
+
</UnitSymbol>
|
560
|
+
<RootUnits>
|
561
|
+
<EnumeratedRootUnit unit='kelvin'/>
|
562
|
+
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-1'/>
|
563
|
+
<EnumeratedRootUnit unit='meter' powerNumerator='-1'/>
|
564
|
+
</RootUnits>
|
565
|
+
</Unit>
|
566
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
567
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
568
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
569
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
570
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
571
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
572
|
+
</Prefix>
|
573
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_L-1M-1Theta'>
|
574
|
+
<Length symbol='L' powerNumerator='-1'/>
|
575
|
+
<Mass symbol='M' powerNumerator='-1'/>
|
576
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
|
577
|
+
</Dimension>
|
578
|
+
</math>
|
579
|
+
OUTPUT
|
562
580
|
end
|
563
581
|
|
564
582
|
it "deals with notational variants" do
|
565
|
-
|
566
|
-
|
567
|
-
INPUT
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
|
583
|
-
|
584
|
-
|
585
|
-
|
586
|
-
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
598
|
-
</
|
599
|
-
|
583
|
+
input = <<~INPUT
|
584
|
+
9 "unitsml(degK)" + 10 "unitsml(K)"
|
585
|
+
INPUT
|
586
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
587
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
588
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
589
|
+
<mn>9</mn>
|
590
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
591
|
+
<mrow xref='U_NISTu5'>
|
592
|
+
<mi mathvariant='normal'>°K</mi>
|
593
|
+
</mrow>
|
594
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu5' dimensionURL='#NISTd5'>
|
595
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
596
|
+
<UnitName xml:lang='en'>kelvin</UnitName>
|
597
|
+
<UnitSymbol type='HTML'>K</UnitSymbol>
|
598
|
+
<UnitSymbol type='MathML'>
|
599
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
600
|
+
<mrow>
|
601
|
+
<mi mathvariant='normal'>K</mi>
|
602
|
+
</mrow>
|
603
|
+
</math>
|
604
|
+
</UnitSymbol>
|
605
|
+
</Unit>
|
606
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd5'>
|
607
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
|
608
|
+
</Dimension>
|
609
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq5' dimensionURL='#NISTd5' quantityType='base'>
|
610
|
+
<QuantityName xml:lang='en-US'>thermodynamic temperature</QuantityName>
|
611
|
+
</Quantity>
|
612
|
+
<mo>+</mo>
|
613
|
+
<mn>10</mn>
|
614
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
615
|
+
<mrow xref='U_NISTu5'>
|
616
|
+
<mi mathvariant='normal'>K</mi>
|
617
|
+
</mrow>
|
618
|
+
</math>
|
619
|
+
OUTPUT
|
600
620
|
end
|
601
621
|
|
602
622
|
it "deals with prefixed units" do
|
603
|
-
|
604
|
-
|
605
|
-
INPUT
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
620
|
-
|
621
|
-
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
637
|
-
|
638
|
-
|
639
|
-
|
640
|
-
|
623
|
+
input = <<~INPUT
|
624
|
+
9 "unitsml(mbar)"
|
625
|
+
INPUT
|
626
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
627
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
628
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
629
|
+
<mn>9</mn>
|
630
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
631
|
+
<mrow xref='U_NISTu362'>
|
632
|
+
<mi mathvariant='normal'>mbar</mi>
|
633
|
+
</mrow>
|
634
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu362'>
|
635
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
636
|
+
<UnitName xml:lang='en'>millibar</UnitName>
|
637
|
+
<UnitSymbol type='HTML'>mbar</UnitSymbol>
|
638
|
+
<UnitSymbol type='MathML'>
|
639
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
640
|
+
<mrow>
|
641
|
+
<mi mathvariant='normal'>mbar</mi>
|
642
|
+
</mrow>
|
643
|
+
</math>
|
644
|
+
</UnitSymbol>
|
645
|
+
<RootUnits>
|
646
|
+
<EnumeratedRootUnit unit='bar' prefix='m'/>
|
647
|
+
</RootUnits>
|
648
|
+
</Unit>
|
649
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
650
|
+
<PrefixName xml:lang='en'>milli</PrefixName>
|
651
|
+
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
652
|
+
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
653
|
+
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
654
|
+
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
655
|
+
</Prefix>
|
656
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd14'>
|
657
|
+
<Length symbol='L' powerNumerator='-1'/>
|
658
|
+
<Mass symbol='M' powerNumerator='1'/>
|
659
|
+
<Time symbol='T' powerNumerator='-2'/>
|
660
|
+
</Dimension>
|
661
|
+
</math>
|
662
|
+
OUTPUT
|
641
663
|
end
|
642
664
|
|
643
665
|
it "deals with standalone prefixes" do
|
644
|
-
|
645
|
-
|
666
|
+
input = <<~INPUT
|
667
|
+
"unitsml(p-)" "unitsml(da-)"
|
646
668
|
INPUT
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
</
|
669
|
-
</
|
670
|
-
|
669
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
670
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
671
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
672
|
+
<mrow xref='NISTp10_-12'>
|
673
|
+
<mi mathvariant='normal'>p</mi>
|
674
|
+
</mrow>
|
675
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-12' xml:id='NISTp10_-12'>
|
676
|
+
<PrefixName xml:lang='en'>pico</PrefixName>
|
677
|
+
<PrefixSymbol type='ASCII'>p</PrefixSymbol>
|
678
|
+
<PrefixSymbol type='unicode'>p</PrefixSymbol>
|
679
|
+
<PrefixSymbol type='LaTeX'>p</PrefixSymbol>
|
680
|
+
<PrefixSymbol type='HTML'>p</PrefixSymbol>
|
681
|
+
</Prefix>
|
682
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
683
|
+
<mrow xref='NISTp10_1'>
|
684
|
+
<mi mathvariant='normal'>da</mi>
|
685
|
+
</mrow>
|
686
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='1' xml:id='NISTp10_1'>
|
687
|
+
<PrefixName xml:lang='en'>deka</PrefixName>
|
688
|
+
<PrefixSymbol type='ASCII'>da</PrefixSymbol>
|
689
|
+
<PrefixSymbol type='unicode'>da</PrefixSymbol>
|
690
|
+
<PrefixSymbol type='LaTeX'>da</PrefixSymbol>
|
691
|
+
<PrefixSymbol type='HTML'>da</PrefixSymbol>
|
692
|
+
</Prefix>
|
693
|
+
</math>
|
694
|
+
OUTPUT
|
671
695
|
end
|
672
696
|
|
673
697
|
it "deals with HTML entities in UnitsDB" do
|
674
|
-
|
675
|
-
|
676
|
-
INPUT
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
691
|
-
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
698
|
+
input = <<~INPUT
|
699
|
+
"unitsml(u-)" + "unitsml(um)"
|
700
|
+
INPUT
|
701
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
702
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
703
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
704
|
+
<mrow xref='NISTp10_-6'>
|
705
|
+
<mi mathvariant='normal'>µ</mi>
|
706
|
+
</mrow>
|
707
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-6' xml:id='NISTp10_-6'>
|
708
|
+
<PrefixName xml:lang='en'>micro</PrefixName>
|
709
|
+
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
710
|
+
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
711
|
+
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
712
|
+
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
713
|
+
</Prefix>
|
714
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd2'>
|
715
|
+
<Mass symbol='M' powerNumerator='1'/>
|
716
|
+
</Dimension>
|
717
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
718
|
+
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
719
|
+
</Quantity>
|
720
|
+
<mo>+</mo>
|
721
|
+
<mrow xref='U_um'>
|
722
|
+
<mi mathvariant='normal'>µm</mi>
|
723
|
+
</mrow>
|
724
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_um' dimensionURL='#NISTd1'>
|
725
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
726
|
+
<UnitName xml:lang='en'>um</UnitName>
|
727
|
+
<UnitSymbol type='HTML'>um</UnitSymbol>
|
728
|
+
<UnitSymbol type='MathML'>
|
729
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
730
|
+
<mrow>
|
731
|
+
<mi mathvariant='normal'>µm</mi>
|
732
|
+
</mrow>
|
733
|
+
</math>
|
734
|
+
</UnitSymbol>
|
735
|
+
<RootUnits>
|
736
|
+
<EnumeratedRootUnit unit='meter' prefix='u'/>
|
737
|
+
</RootUnits>
|
738
|
+
</Unit>
|
739
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd1'>
|
740
|
+
<Length symbol='L' powerNumerator='1'/>
|
741
|
+
</Dimension>
|
742
|
+
</math>
|
743
|
+
OUTPUT
|
718
744
|
end
|
719
745
|
|
720
746
|
it "deals with units division" do
|
721
|
-
|
722
|
-
|
723
|
-
INPUT
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
747
|
+
input = <<~INPUT
|
748
|
+
9 "unitsml(A*C^3)" + 13 "unitsml(A/C^-3)" + 2 "unitsml(J/kg*K)"
|
749
|
+
INPUT
|
750
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
751
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
752
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
753
|
+
<mn>9</mn>
|
754
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
755
|
+
<mrow xref='U_A.C3'>
|
756
|
+
<mi mathvariant='normal'>A</mi>
|
757
|
+
<mo>⋅</mo>
|
758
|
+
<msup>
|
759
|
+
<mrow>
|
760
|
+
<mi mathvariant='normal'>C</mi>
|
761
|
+
</mrow>
|
762
|
+
<mrow>
|
763
|
+
<mn>3</mn>
|
764
|
+
</mrow>
|
765
|
+
</msup>
|
766
|
+
</mrow>
|
767
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_A.C3' dimensionURL='#D_M3I4'>
|
768
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
769
|
+
<UnitName xml:lang='en'>A*C^3</UnitName>
|
770
|
+
<UnitSymbol type='HTML'>
|
771
|
+
A⋅C
|
772
|
+
<sup>3</sup>
|
773
|
+
</UnitSymbol>
|
774
|
+
<UnitSymbol type='MathML'>
|
775
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
776
|
+
<mrow>
|
777
|
+
<mi mathvariant='normal'>A</mi>
|
778
|
+
<mo>⋅</mo>
|
779
|
+
<msup>
|
780
|
+
<mrow>
|
781
|
+
<mi mathvariant='normal'>C</mi>
|
782
|
+
</mrow>
|
783
|
+
<mrow>
|
784
|
+
<mn>3</mn>
|
785
|
+
</mrow>
|
786
|
+
</msup>
|
787
|
+
</mrow>
|
788
|
+
</math>
|
789
|
+
</UnitSymbol>
|
790
|
+
<RootUnits>
|
791
|
+
<EnumeratedRootUnit unit='ampere'/>
|
792
|
+
<EnumeratedRootUnit unit='coulomb' powerNumerator='3'/>
|
793
|
+
</RootUnits>
|
794
|
+
</Unit>
|
795
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_M3I4'>
|
796
|
+
<Mass symbol='M' powerNumerator='3'/>
|
797
|
+
<ElectricCurrent symbol='I' powerNumerator='4'/>
|
798
|
+
</Dimension>
|
799
|
+
<mo>+</mo>
|
800
|
+
<mn>13</mn>
|
801
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
802
|
+
<mrow xref='U_A/C-3'>
|
803
|
+
<mi mathvariant='normal'>A</mi>
|
804
|
+
<mo>/</mo>
|
805
|
+
<msup>
|
806
|
+
<mrow>
|
807
|
+
<mi mathvariant='normal'>C</mi>
|
808
|
+
</mrow>
|
809
|
+
<mrow>
|
810
|
+
<mo>−</mo>
|
811
|
+
<mn>3</mn>
|
812
|
+
</mrow>
|
813
|
+
</msup>
|
814
|
+
</mrow>
|
815
|
+
<mo>+</mo>
|
816
|
+
<mn>2</mn>
|
817
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
818
|
+
<mrow xref='U_J/kg.K'>
|
819
|
+
<mi mathvariant='normal'>J</mi>
|
820
|
+
<mo>/</mo>
|
821
|
+
<mi mathvariant='normal'>kg</mi>
|
822
|
+
<mo>⋅</mo>
|
823
|
+
<mi mathvariant='normal'>K</mi>
|
824
|
+
</mrow>
|
825
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu13.u27p10_3e-1/1.u5e-1/1' dimensionURL='#D_L2M0T-2Theta-1'>
|
826
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
827
|
+
<UnitName xml:lang='en'>joule per kilogram kelvin</UnitName>
|
828
|
+
<UnitSymbol type='HTML'>
|
829
|
+
J⋅kg
|
830
|
+
<sup>−1</sup>
|
831
|
+
⋅K
|
832
|
+
<sup>−1</sup>
|
833
|
+
</UnitSymbol>
|
834
|
+
<UnitSymbol type='MathML'>
|
835
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
836
|
+
<mrow>
|
837
|
+
<mi mathvariant='normal'>J</mi>
|
838
|
+
<mo>⋅</mo>
|
839
|
+
<msup>
|
840
|
+
<mrow>
|
841
|
+
<mi mathvariant='normal'>kg</mi>
|
842
|
+
</mrow>
|
843
|
+
<mrow>
|
844
|
+
<mo>−</mo>
|
845
|
+
<mn>1</mn>
|
846
|
+
</mrow>
|
847
|
+
</msup>
|
848
|
+
<mo>⋅</mo>
|
849
|
+
<msup>
|
850
|
+
<mrow>
|
851
|
+
<mi mathvariant='normal'>K</mi>
|
852
|
+
</mrow>
|
853
|
+
<mrow>
|
854
|
+
<mo>−</mo>
|
855
|
+
<mn>1</mn>
|
856
|
+
</mrow>
|
857
|
+
</msup>
|
858
|
+
</mrow>
|
859
|
+
</math>
|
860
|
+
</UnitSymbol>
|
861
|
+
<RootUnits>
|
862
|
+
<EnumeratedRootUnit unit='joule'/>
|
863
|
+
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-1'/>
|
864
|
+
<EnumeratedRootUnit unit='kelvin' powerNumerator='-1'/>
|
865
|
+
</RootUnits>
|
866
|
+
</Unit>
|
867
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
868
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
869
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
870
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
871
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
872
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
873
|
+
</Prefix>
|
874
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd40'>
|
875
|
+
<Length symbol='L' powerNumerator='2'/>
|
876
|
+
<Time symbol='T' powerNumerator='-2'/>
|
877
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='-1'/>
|
878
|
+
</Dimension>
|
879
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_L2M0T-2Theta-1'>
|
880
|
+
<Length symbol='L' powerNumerator='2'/>
|
881
|
+
<Mass symbol='M' powerNumerator='0'/>
|
882
|
+
<Time symbol='T' powerNumerator='-2'/>
|
883
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='-1'/>
|
884
|
+
</Dimension>
|
885
|
+
</math>
|
886
|
+
OUTPUT
|
887
|
+
end
|
888
|
+
|
889
|
+
it "converts MathML to MatML + UnitsML" do
|
890
|
+
input = <<~INPUT
|
891
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
892
|
+
<mn>32</mn>
|
893
|
+
<mo>+</mo>
|
894
|
+
<mn>5</mn>
|
895
|
+
<mo>×</mo>
|
896
|
+
<mn>7</mn>
|
897
|
+
<mtext>unitsml(kg^-2)</mtext>
|
898
|
+
</math>
|
899
|
+
INPUT
|
900
|
+
output = <<~OUTPUT
|
901
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
902
|
+
<mn>32</mn>
|
903
|
+
<mo>+</mo>
|
904
|
+
<mn>5</mn>
|
905
|
+
<mo>×</mo>
|
906
|
+
<mn>7</mn>
|
907
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
908
|
+
<mrow xref='U_kg-2'>
|
751
909
|
<msup>
|
752
910
|
<mrow>
|
753
|
-
<mi mathvariant='normal'>
|
911
|
+
<mi mathvariant='normal'>kg</mi>
|
754
912
|
</mrow>
|
755
913
|
<mrow>
|
756
|
-
<
|
914
|
+
<mo>−</mo>
|
915
|
+
<mn>2</mn>
|
757
916
|
</mrow>
|
758
917
|
</msup>
|
759
918
|
</mrow>
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
</
|
766
|
-
</
|
767
|
-
<
|
768
|
-
<
|
769
|
-
<ElectricCurrent symbol='I' powerNumerator='4'/>
|
770
|
-
</Dimension>
|
771
|
-
<mo>+</mo>
|
772
|
-
<mn>13</mn>
|
773
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
774
|
-
<mrow xref='U_A/C-3'>
|
775
|
-
<mi mathvariant='normal'>A</mi>
|
776
|
-
<mo>/</mo>
|
777
|
-
<msup>
|
778
|
-
<mrow>
|
779
|
-
<mi mathvariant='normal'>C</mi>
|
780
|
-
</mrow>
|
781
|
-
<mrow>
|
782
|
-
<mo>−</mo>
|
783
|
-
<mn>3</mn>
|
784
|
-
</mrow>
|
785
|
-
</msup>
|
786
|
-
</mrow>
|
787
|
-
<mo>+</mo>
|
788
|
-
<mn>2</mn>
|
789
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
790
|
-
<mrow xref='U_J/kg.K'>
|
791
|
-
<mi mathvariant='normal'>J</mi>
|
792
|
-
<mo>/</mo>
|
793
|
-
<mi mathvariant='normal'>kg</mi>
|
794
|
-
<mo>⋅</mo>
|
795
|
-
<mi mathvariant='normal'>K</mi>
|
796
|
-
</mrow>
|
797
|
-
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu13.u27p10_3e-1/1.u5e-1/1' dimensionURL='#D_L2M0T-2Theta-1'>
|
798
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
799
|
-
<UnitName xml:lang='en'>joule per kilogram kelvin</UnitName>
|
800
|
-
<UnitSymbol type='HTML'>
|
801
|
-
J⋅kg
|
802
|
-
<sup>−1</sup>
|
803
|
-
⋅K
|
804
|
-
<sup>−1</sup>
|
805
|
-
</UnitSymbol>
|
806
|
-
<UnitSymbol type='MathML'>
|
807
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
808
|
-
<mrow>
|
809
|
-
<mi mathvariant='normal'>J</mi>
|
810
|
-
<mo>⋅</mo>
|
811
|
-
<msup>
|
812
|
-
<mrow>
|
813
|
-
<mi mathvariant='normal'>kg</mi>
|
814
|
-
</mrow>
|
815
|
-
<mrow>
|
816
|
-
<mo>−</mo>
|
817
|
-
<mn>1</mn>
|
818
|
-
</mrow>
|
819
|
-
</msup>
|
820
|
-
<mo>⋅</mo>
|
821
|
-
<msup>
|
822
|
-
<mrow>
|
823
|
-
<mi mathvariant='normal'>K</mi>
|
824
|
-
</mrow>
|
825
|
-
<mrow>
|
826
|
-
<mo>−</mo>
|
827
|
-
<mn>1</mn>
|
828
|
-
</mrow>
|
829
|
-
</msup>
|
830
|
-
</mrow>
|
831
|
-
</math>
|
832
|
-
</UnitSymbol>
|
833
|
-
<RootUnits>
|
834
|
-
<EnumeratedRootUnit unit='joule'/>
|
835
|
-
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-1'/>
|
836
|
-
<EnumeratedRootUnit unit='kelvin' powerNumerator='-1'/>
|
837
|
-
</RootUnits>
|
838
|
-
</Unit>
|
839
|
-
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
840
|
-
<PrefixName xml:lang='en'>kilo</PrefixName>
|
841
|
-
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
842
|
-
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
843
|
-
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
844
|
-
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
845
|
-
</Prefix>
|
846
|
-
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd40'>
|
847
|
-
<Length symbol='L' powerNumerator='2'/>
|
848
|
-
<Time symbol='T' powerNumerator='-2'/>
|
849
|
-
<ThermodynamicTemperature symbol='Theta' powerNumerator='-1'/>
|
850
|
-
</Dimension>
|
851
|
-
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_L2M0T-2Theta-1'>
|
852
|
-
<Length symbol='L' powerNumerator='2'/>
|
853
|
-
<Mass symbol='M' powerNumerator='0'/>
|
854
|
-
<Time symbol='T' powerNumerator='-2'/>
|
855
|
-
<ThermodynamicTemperature symbol='Theta' powerNumerator='-1'/>
|
856
|
-
</Dimension>
|
857
|
-
</math>
|
858
|
-
OUTPUT
|
859
|
-
end
|
860
|
-
|
861
|
-
it "converts MathML to MatML + UnitsML" do
|
862
|
-
input = <<~INPUT
|
863
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
864
|
-
<mn>32</mn>
|
865
|
-
<mo>+</mo>
|
866
|
-
<mn>5</mn>
|
867
|
-
<mo>×</mo>
|
868
|
-
<mn>7</mn>
|
869
|
-
<mtext>unitsml(kg^-2)</mtext>
|
870
|
-
</math>
|
871
|
-
INPUT
|
872
|
-
output = <<~OUTPUT
|
873
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
874
|
-
<mn>32</mn>
|
875
|
-
<mo>+</mo>
|
876
|
-
<mn>5</mn>
|
877
|
-
<mo>×</mo>
|
878
|
-
<mn>7</mn>
|
879
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
880
|
-
<mrow xref='U_kg-2'>
|
881
|
-
<msup>
|
919
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_kg-2' dimensionURL='#D_M-2'>
|
920
|
+
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
921
|
+
<UnitName xml:lang='en'>kg^-2</UnitName>
|
922
|
+
<UnitSymbol type='HTML'>
|
923
|
+
kg
|
924
|
+
<sup>−2</sup>
|
925
|
+
</UnitSymbol>
|
926
|
+
<UnitSymbol type='MathML'>
|
927
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
882
928
|
<mrow>
|
883
|
-
<
|
929
|
+
<msup>
|
930
|
+
<mrow>
|
931
|
+
<mi mathvariant='normal'>kg</mi>
|
932
|
+
</mrow>
|
933
|
+
<mrow>
|
934
|
+
<mo>−</mo>
|
935
|
+
<mn>2</mn>
|
936
|
+
</mrow>
|
937
|
+
</msup>
|
884
938
|
</mrow>
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
900
|
-
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
905
|
-
|
906
|
-
|
907
|
-
|
908
|
-
</mrow>
|
909
|
-
</msup>
|
910
|
-
</mrow>
|
911
|
-
</math>
|
912
|
-
</UnitSymbol>
|
913
|
-
<RootUnits>
|
914
|
-
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-2'/>
|
915
|
-
</RootUnits>
|
916
|
-
</Unit>
|
917
|
-
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
918
|
-
<PrefixName xml:lang='en'>kilo</PrefixName>
|
919
|
-
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
920
|
-
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
921
|
-
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
922
|
-
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
923
|
-
</Prefix>
|
924
|
-
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_M-2'>
|
925
|
-
<Mass symbol='M' powerNumerator='-2'/>
|
926
|
-
</Dimension>
|
927
|
-
</math>
|
928
|
-
OUTPUT
|
929
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new().MathML2UnitsML(input).to_xml)).to be_equivalent_to xmlpp(output)
|
930
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new().MathML2UnitsML(Nokogiri::XML(input)).to_xml)).to be_equivalent_to xmlpp(output)
|
939
|
+
</math>
|
940
|
+
</UnitSymbol>
|
941
|
+
<RootUnits>
|
942
|
+
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-2'/>
|
943
|
+
</RootUnits>
|
944
|
+
</Unit>
|
945
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
946
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
947
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
948
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
949
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
950
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
951
|
+
</Prefix>
|
952
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_M-2'>
|
953
|
+
<Mass symbol='M' powerNumerator='-2'/>
|
954
|
+
</Dimension>
|
955
|
+
</math>
|
956
|
+
OUTPUT
|
957
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
958
|
+
.MathML2UnitsML(input).to_xml)).to be_equivalent_to xmlpp(output)
|
959
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
960
|
+
.MathML2UnitsML(Nokogiri::XML(input)).to_xml))
|
961
|
+
.to be_equivalent_to xmlpp(output)
|
931
962
|
end
|
932
963
|
|
933
964
|
it "raises error for illegal unit" do
|
934
|
-
|
935
|
-
|
965
|
+
input = <<~INPUT
|
966
|
+
12 "unitsml(que?)"
|
936
967
|
INPUT
|
968
|
+
expect { xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)) }
|
969
|
+
.to raise_error(Rsec::SyntaxError)
|
937
970
|
end
|
938
971
|
|
939
972
|
it "initialises multiplier" do
|
940
|
-
|
941
|
-
1 "unitsml(kg*s^-2)"
|
973
|
+
input = <<~INPUT
|
974
|
+
1 "unitsml(kg*s^-2)"
|
942
975
|
INPUT
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
950
|
-
|
951
|
-
|
952
|
-
|
953
|
-
|
954
|
-
|
955
|
-
|
956
|
-
|
957
|
-
|
958
|
-
|
959
|
-
|
960
|
-
|
961
|
-
|
962
|
-
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
982
|
-
|
983
|
-
|
984
|
-
|
985
|
-
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
993
|
-
|
994
|
-
|
995
|
-
|
996
|
-
|
997
|
-
|
998
|
-
|
999
|
-
|
1000
|
-
|
1001
|
-
|
1002
|
-
|
976
|
+
expect(xmlpp(Asciimath2UnitsML::Conv
|
977
|
+
.new(multiplier: "\u00d7")
|
978
|
+
.Asciimath2UnitsML(input))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
979
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
980
|
+
<mn>1</mn>
|
981
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
982
|
+
<mrow xref='U_kg.s-2'>
|
983
|
+
<mi mathvariant='normal'>kg</mi>
|
984
|
+
<mo>×</mo>
|
985
|
+
<msup>
|
986
|
+
<mrow>
|
987
|
+
<mi mathvariant='normal'>s</mi>
|
988
|
+
</mrow>
|
989
|
+
<mrow>
|
990
|
+
<mo>−</mo>
|
991
|
+
<mn>2</mn>
|
992
|
+
</mrow>
|
993
|
+
</msup>
|
994
|
+
</mrow>
|
995
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
996
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
997
|
+
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
998
|
+
<UnitSymbol type='HTML'>
|
999
|
+
kg×s
|
1000
|
+
<sup>−2</sup>
|
1001
|
+
</UnitSymbol>
|
1002
|
+
<UnitSymbol type='MathML'>
|
1003
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1004
|
+
<mrow>
|
1005
|
+
<mi mathvariant='normal'>kg</mi>
|
1006
|
+
<mo>×</mo>
|
1007
|
+
<msup>
|
1008
|
+
<mrow>
|
1009
|
+
<mi mathvariant='normal'>s</mi>
|
1010
|
+
</mrow>
|
1011
|
+
<mrow>
|
1012
|
+
<mo>−</mo>
|
1013
|
+
<mn>2</mn>
|
1014
|
+
</mrow>
|
1015
|
+
</msup>
|
1016
|
+
</mrow>
|
1017
|
+
</math>
|
1018
|
+
</UnitSymbol>
|
1019
|
+
<RootUnits>
|
1020
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
1021
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1022
|
+
</RootUnits>
|
1023
|
+
</Unit>
|
1024
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
1025
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
1026
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
1027
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
1028
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
1029
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
1030
|
+
</Prefix>
|
1031
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd37'>
|
1032
|
+
<Mass symbol='M' powerNumerator='1'/>
|
1033
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1034
|
+
</Dimension>
|
1035
|
+
</math>
|
1036
|
+
OUTPUT
|
1037
|
+
input = <<~INPUT
|
1038
|
+
1 "unitsml(kg*s^-2)"
|
1003
1039
|
INPUT
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
<
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
1040
|
+
expect(xmlpp(Asciimath2UnitsML::Conv
|
1041
|
+
.new(multiplier: :space)
|
1042
|
+
.Asciimath2UnitsML(input))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
1043
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1044
|
+
<mn>1</mn>
|
1045
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1046
|
+
<mrow xref='U_kg.s-2'>
|
1047
|
+
<mi mathvariant='normal'>kg</mi>
|
1048
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1049
|
+
<msup>
|
1050
|
+
<mrow>
|
1051
|
+
<mi mathvariant='normal'>s</mi>
|
1052
|
+
</mrow>
|
1053
|
+
<mrow>
|
1054
|
+
<mo>−</mo>
|
1055
|
+
<mn>2</mn>
|
1056
|
+
</mrow>
|
1057
|
+
</msup>
|
1017
1058
|
</mrow>
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
1022
|
-
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
1027
|
-
<UnitSymbol type='MathML'>
|
1028
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1029
|
-
<mrow>
|
1030
|
-
<mi mathvariant='normal'>kg</mi>
|
1031
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
1032
|
-
<msup>
|
1033
|
-
<mrow>
|
1034
|
-
<mi mathvariant='normal'>s</mi>
|
1035
|
-
</mrow>
|
1059
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
1060
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1061
|
+
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
1062
|
+
<UnitSymbol type='HTML'>
|
1063
|
+
kg s
|
1064
|
+
<sup>−2</sup>
|
1065
|
+
</UnitSymbol>
|
1066
|
+
<UnitSymbol type='MathML'>
|
1067
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1036
1068
|
<mrow>
|
1037
|
-
<
|
1038
|
-
<
|
1069
|
+
<mi mathvariant='normal'>kg</mi>
|
1070
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1071
|
+
<msup>
|
1072
|
+
<mrow>
|
1073
|
+
<mi mathvariant='normal'>s</mi>
|
1074
|
+
</mrow>
|
1075
|
+
<mrow>
|
1076
|
+
<mo>−</mo>
|
1077
|
+
<mn>2</mn>
|
1078
|
+
</mrow>
|
1079
|
+
</msup>
|
1039
1080
|
</mrow>
|
1040
|
-
</
|
1041
|
-
</
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new(multiplier: :nospace).Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
1063
|
-
1 "unitsml(kg*s^-2)"
|
1081
|
+
</math>
|
1082
|
+
</UnitSymbol>
|
1083
|
+
<RootUnits>
|
1084
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
1085
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1086
|
+
</RootUnits>
|
1087
|
+
</Unit>
|
1088
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
1089
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
1090
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
1091
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
1092
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
1093
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
1094
|
+
</Prefix>
|
1095
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd37'>
|
1096
|
+
<Mass symbol='M' powerNumerator='1'/>
|
1097
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1098
|
+
</Dimension>
|
1099
|
+
</math>
|
1100
|
+
OUTPUT
|
1101
|
+
input = <<~INPUT
|
1102
|
+
1 "unitsml(kg*s^-2)"
|
1064
1103
|
INPUT
|
1065
|
-
|
1066
|
-
|
1067
|
-
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1104
|
+
expect(xmlpp(Asciimath2UnitsML::Conv
|
1105
|
+
.new(multiplier: :nospace)
|
1106
|
+
.Asciimath2UnitsML(input))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
1107
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1108
|
+
<mn>1</mn>
|
1109
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1110
|
+
<mrow xref='U_kg.s-2'>
|
1111
|
+
<mi mathvariant='normal'>kg</mi>
|
1112
|
+
<mo>⁢</mo>
|
1113
|
+
<msup>
|
1114
|
+
<mrow>
|
1115
|
+
<mi mathvariant='normal'>s</mi>
|
1116
|
+
</mrow>
|
1117
|
+
<mrow>
|
1118
|
+
<mo>−</mo>
|
1119
|
+
<mn>2</mn>
|
1120
|
+
</mrow>
|
1121
|
+
</msup>
|
1122
|
+
</mrow>
|
1123
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
1124
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1125
|
+
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
1126
|
+
<UnitSymbol type='HTML'>
|
1127
|
+
kgs
|
1128
|
+
<sup>−2</sup>
|
1129
|
+
</UnitSymbol>
|
1130
|
+
<UnitSymbol type='MathML'>
|
1131
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1132
|
+
<mrow>
|
1133
|
+
<mi mathvariant='normal'>kg</mi>
|
1134
|
+
<mo>⁢</mo>
|
1135
|
+
<msup>
|
1136
|
+
<mrow>
|
1137
|
+
<mi mathvariant='normal'>s</mi>
|
1138
|
+
</mrow>
|
1139
|
+
<mrow>
|
1140
|
+
<mo>−</mo>
|
1141
|
+
<mn>2</mn>
|
1142
|
+
</mrow>
|
1143
|
+
</msup>
|
1144
|
+
</mrow>
|
1145
|
+
</math>
|
1146
|
+
</UnitSymbol>
|
1147
|
+
<RootUnits>
|
1148
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
1149
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1150
|
+
</RootUnits>
|
1151
|
+
</Unit>
|
1152
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
1153
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
1154
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
1155
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
1156
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
1157
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
1158
|
+
</Prefix>
|
1159
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd37'>
|
1160
|
+
<Mass symbol='M' powerNumerator='1'/>
|
1161
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1162
|
+
</Dimension>
|
1163
|
+
</math>
|
1164
|
+
OUTPUT
|
1123
1165
|
end
|
1124
1166
|
|
1125
1167
|
it "deals with dimension decomposition with like units" do
|
1126
|
-
|
1127
|
-
|
1128
|
-
INPUT
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1184
|
-
|
1185
|
-
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
|
1168
|
+
input = <<~INPUT
|
1169
|
+
9 "unitsml(mW*cm^(-2))"
|
1170
|
+
INPUT
|
1171
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
1172
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
1173
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1174
|
+
<mn>9</mn>
|
1175
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1176
|
+
<mrow xref='U_mW.cm-2'>
|
1177
|
+
<mi mathvariant='normal'>mW</mi>
|
1178
|
+
<mo>⋅</mo>
|
1179
|
+
<msup>
|
1180
|
+
<mrow>
|
1181
|
+
<mi mathvariant='normal'>cm</mi>
|
1182
|
+
</mrow>
|
1183
|
+
<mrow>
|
1184
|
+
<mo>−</mo>
|
1185
|
+
<mn>2</mn>
|
1186
|
+
</mrow>
|
1187
|
+
</msup>
|
1188
|
+
</mrow>
|
1189
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_mW.cm-2'>
|
1190
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1191
|
+
<UnitName xml:lang='en'>mW*cm^-2</UnitName>
|
1192
|
+
<UnitSymbol type='HTML'>
|
1193
|
+
mW⋅cm
|
1194
|
+
<sup>−2</sup>
|
1195
|
+
</UnitSymbol>
|
1196
|
+
<UnitSymbol type='MathML'>
|
1197
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1198
|
+
<mrow>
|
1199
|
+
<mi mathvariant='normal'>mW</mi>
|
1200
|
+
<mo>⋅</mo>
|
1201
|
+
<msup>
|
1202
|
+
<mrow>
|
1203
|
+
<mi mathvariant='normal'>cm</mi>
|
1204
|
+
</mrow>
|
1205
|
+
<mrow>
|
1206
|
+
<mo>−</mo>
|
1207
|
+
<mn>2</mn>
|
1208
|
+
</mrow>
|
1209
|
+
</msup>
|
1210
|
+
</mrow>
|
1211
|
+
</math>
|
1212
|
+
</UnitSymbol>
|
1213
|
+
<RootUnits>
|
1214
|
+
<EnumeratedRootUnit unit='watt' prefix='m'/>
|
1215
|
+
<EnumeratedRootUnit unit='meter' prefix='c' powerNumerator='-2'/>
|
1216
|
+
</RootUnits>
|
1217
|
+
</Unit>
|
1218
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
1219
|
+
<PrefixName xml:lang='en'>milli</PrefixName>
|
1220
|
+
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
1221
|
+
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
1222
|
+
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
1223
|
+
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
1224
|
+
</Prefix>
|
1225
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1226
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1227
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1228
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1229
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1230
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1231
|
+
</Prefix>
|
1232
|
+
</math>
|
1233
|
+
OUTPUT
|
1190
1234
|
end
|
1191
1235
|
|
1192
1236
|
it "deals with quantity input" do
|
1193
|
-
|
1194
|
-
|
1195
|
-
INPUT
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1199
|
-
|
1200
|
-
|
1201
|
-
|
1202
|
-
|
1203
|
-
|
1204
|
-
|
1205
|
-
|
1206
|
-
|
1207
|
-
|
1208
|
-
|
1209
|
-
|
1210
|
-
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
|
1215
|
-
|
1216
|
-
|
1217
|
-
|
1218
|
-
|
1219
|
-
|
1220
|
-
</
|
1221
|
-
|
1222
|
-
|
1237
|
+
input = <<~INPUT
|
1238
|
+
9 "unitsml(m, quantity: NISTq103)"
|
1239
|
+
INPUT
|
1240
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
1241
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
1242
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1243
|
+
<mn>9</mn>
|
1244
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1245
|
+
<mrow xref='U_NISTu1'>
|
1246
|
+
<mi mathvariant='normal'>m</mi>
|
1247
|
+
</mrow>
|
1248
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
1249
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1250
|
+
<UnitName xml:lang='en'>meter</UnitName>
|
1251
|
+
<UnitSymbol type='HTML'>m</UnitSymbol>
|
1252
|
+
<UnitSymbol type='MathML'>
|
1253
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1254
|
+
<mrow>
|
1255
|
+
<mi mathvariant='normal'>m</mi>
|
1256
|
+
</mrow>
|
1257
|
+
</math>
|
1258
|
+
</UnitSymbol>
|
1259
|
+
</Unit>
|
1260
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd1'>
|
1261
|
+
<Length symbol='L' powerNumerator='1'/>
|
1262
|
+
</Dimension>
|
1263
|
+
<Quantity xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTq103' dimensionURL='#NISTd1' quantityType='base'>
|
1264
|
+
<QuantityName xml:lang='en-US'>position vector</QuantityName>
|
1265
|
+
</Quantity>
|
1266
|
+
</math>
|
1267
|
+
OUTPUT
|
1268
|
+
end
|
1223
1269
|
|
1224
1270
|
it "deals with name input" do
|
1225
|
-
|
1226
|
-
|
1227
|
-
INPUT
|
1228
|
-
|
1229
|
-
|
1230
|
-
|
1231
|
-
|
1232
|
-
|
1233
|
-
|
1234
|
-
|
1235
|
-
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1247
|
-
|
1248
|
-
|
1249
|
-
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
|
1254
|
-
|
1255
|
-
|
1256
|
-
|
1257
|
-
|
1258
|
-
|
1259
|
-
|
1260
|
-
|
1261
|
-
|
1262
|
-
|
1263
|
-
|
1264
|
-
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1297
|
-
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
1302
|
-
9 "unitsml(m, symbol: La)" + 10 "unitsml(cm*s^-2, symbol: cm cdot s^-2)"
|
1303
|
-
INPUT
|
1304
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1305
|
-
<mn>9</mn>
|
1306
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
1307
|
-
<mrow xref='U_NISTu1'>
|
1308
|
-
<math>
|
1309
|
-
<mi mathvariant='normal'>L</mi>
|
1310
|
-
<mi mathvariant='normal'>a</mi>
|
1311
|
-
</math>
|
1312
|
-
</mrow>
|
1313
|
-
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
1314
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1315
|
-
<UnitName xml:lang='en'>meter</UnitName>
|
1316
|
-
<UnitSymbol type='HTML'>m</UnitSymbol>
|
1317
|
-
<UnitSymbol type='MathML'>
|
1318
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1319
|
-
<mrow>
|
1320
|
-
<mi mathvariant='normal'>m</mi>
|
1321
|
-
</mrow>
|
1322
|
-
</math>
|
1323
|
-
</UnitSymbol>
|
1324
|
-
</Unit>
|
1325
|
-
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd1'>
|
1326
|
-
<Length symbol='L' powerNumerator='1'/>
|
1327
|
-
</Dimension>
|
1328
|
-
<mo>+</mo>
|
1329
|
-
<mn>10</mn>
|
1330
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
1331
|
-
<mrow xref='U_cm.s-2'>
|
1332
|
-
<math>
|
1333
|
-
<mi mathvariant='normal'>c</mi>
|
1334
|
-
<mi mathvariant='normal'>m</mi>
|
1335
|
-
<mo>⋅</mo>
|
1336
|
-
<msup>
|
1337
|
-
<mrow>
|
1338
|
-
<mi mathvariant='normal'>s</mi>
|
1339
|
-
</mrow>
|
1340
|
-
<mrow>
|
1341
|
-
<mo>−</mo>
|
1342
|
-
</mrow>
|
1343
|
-
</msup>
|
1344
|
-
<mn>2</mn>
|
1345
|
-
</math>
|
1346
|
-
</mrow>
|
1347
|
-
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_cm.s-2' dimensionURL='#NISTd28'>
|
1348
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1349
|
-
<UnitName xml:lang='en'>cm*s^-2</UnitName>
|
1350
|
-
<UnitSymbol type='HTML'>
|
1351
|
-
cm⋅s
|
1352
|
-
<sup>−2</sup>
|
1353
|
-
</UnitSymbol>
|
1354
|
-
<UnitSymbol type='MathML'>
|
1355
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1356
|
-
<mrow>
|
1357
|
-
<mi mathvariant='normal'>cm</mi>
|
1358
|
-
<mo>⋅</mo>
|
1359
|
-
<msup>
|
1360
|
-
<mrow>
|
1361
|
-
<mi mathvariant='normal'>s</mi>
|
1362
|
-
</mrow>
|
1363
|
-
<mrow>
|
1364
|
-
<mo>−</mo>
|
1365
|
-
<mn>2</mn>
|
1366
|
-
</mrow>
|
1367
|
-
</msup>
|
1368
|
-
</mrow>
|
1369
|
-
</math>
|
1370
|
-
</UnitSymbol>
|
1371
|
-
<RootUnits>
|
1372
|
-
<EnumeratedRootUnit unit='meter' prefix='c'/>
|
1373
|
-
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1374
|
-
</RootUnits>
|
1375
|
-
</Unit>
|
1376
|
-
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1377
|
-
<PrefixName xml:lang='en'>centi</PrefixName>
|
1378
|
-
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1379
|
-
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1380
|
-
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1381
|
-
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1382
|
-
</Prefix>
|
1383
|
-
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd28'>
|
1384
|
-
<Length symbol='L' powerNumerator='1'/>
|
1385
|
-
<Time symbol='T' powerNumerator='-2'/>
|
1386
|
-
</Dimension>
|
1387
|
-
</math>
|
1388
|
-
OUTPUT
|
1389
|
-
end
|
1271
|
+
input = <<~INPUT
|
1272
|
+
9 "unitsml(cal_th/cm^2, name: langley)"
|
1273
|
+
INPUT
|
1274
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
1275
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
1276
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1277
|
+
<mn>9</mn>
|
1278
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1279
|
+
<mrow xref='U_cal_th/cm2'>
|
1280
|
+
<msub>
|
1281
|
+
<mrow>
|
1282
|
+
<mi mathvariant='normal'>cal</mi>
|
1283
|
+
</mrow>
|
1284
|
+
<mrow>
|
1285
|
+
<mi mathvariant='normal'>th</mi>
|
1286
|
+
</mrow>
|
1287
|
+
</msub>
|
1288
|
+
<mo>/</mo>
|
1289
|
+
<msup>
|
1290
|
+
<mrow>
|
1291
|
+
<mi mathvariant='normal'>cm</mi>
|
1292
|
+
</mrow>
|
1293
|
+
<mrow>
|
1294
|
+
<mn>2</mn>
|
1295
|
+
</mrow>
|
1296
|
+
</msup>
|
1297
|
+
</mrow>
|
1298
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_cal_th.cm-2'>
|
1299
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
1300
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1301
|
+
<UnitName xml:lang='en'>langley</UnitName>
|
1302
|
+
<UnitSymbol type='HTML'>
|
1303
|
+
cal
|
1304
|
+
<sub>th</sub>
|
1305
|
+
⋅cm
|
1306
|
+
<sup>−2</sup>
|
1307
|
+
</UnitSymbol>
|
1308
|
+
<UnitSymbol type='MathML'>
|
1309
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1310
|
+
<mrow>
|
1311
|
+
<msub>
|
1312
|
+
<mrow>
|
1313
|
+
<mi mathvariant='normal'>cal</mi>
|
1314
|
+
</mrow>
|
1315
|
+
<mrow>
|
1316
|
+
<mi mathvariant='normal'>th</mi>
|
1317
|
+
</mrow>
|
1318
|
+
</msub>
|
1319
|
+
<mo>⋅</mo>
|
1320
|
+
<msup>
|
1321
|
+
<mrow>
|
1322
|
+
<mi mathvariant='normal'>cm</mi>
|
1323
|
+
</mrow>
|
1324
|
+
<mrow>
|
1325
|
+
<mo>−</mo>
|
1326
|
+
<mn>2</mn>
|
1327
|
+
</mrow>
|
1328
|
+
</msup>
|
1329
|
+
</mrow>
|
1330
|
+
</math>
|
1331
|
+
</UnitSymbol>
|
1332
|
+
<RootUnits>
|
1333
|
+
<EnumeratedRootUnit unit='thermochemical calorie'/>
|
1334
|
+
<EnumeratedRootUnit unit='meter' prefix='c' powerNumerator='-2'/>
|
1335
|
+
</RootUnits>
|
1336
|
+
</Unit>
|
1337
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1338
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1339
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1340
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1341
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1342
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1343
|
+
</Prefix>
|
1344
|
+
</math>
|
1345
|
+
OUTPUT
|
1346
|
+
end
|
1390
1347
|
|
1391
|
-
|
1392
|
-
|
1393
|
-
|
1394
|
-
INPUT
|
1395
|
-
|
1396
|
-
|
1397
|
-
|
1398
|
-
|
1399
|
-
|
1400
|
-
|
1401
|
-
|
1402
|
-
|
1403
|
-
|
1404
|
-
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
|
1409
|
-
|
1410
|
-
|
1411
|
-
|
1412
|
-
|
1413
|
-
|
1414
|
-
|
1415
|
-
|
1416
|
-
|
1417
|
-
|
1418
|
-
|
1419
|
-
|
1420
|
-
|
1421
|
-
<
|
1422
|
-
<
|
1423
|
-
<
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1428
|
-
<mo>&#
|
1348
|
+
it "deals with symbol input" do
|
1349
|
+
input = <<~INPUT
|
1350
|
+
9 "unitsml(m, symbol: La)" + 10 "unitsml(cm*s^-2, symbol: cm cdot s^-2)"
|
1351
|
+
INPUT
|
1352
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
1353
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
1354
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1355
|
+
<mn>9</mn>
|
1356
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1357
|
+
<mrow xref='U_NISTu1'>
|
1358
|
+
<math>
|
1359
|
+
<mi mathvariant='normal'>L</mi>
|
1360
|
+
<mi mathvariant='normal'>a</mi>
|
1361
|
+
</math>
|
1362
|
+
</mrow>
|
1363
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
1364
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1365
|
+
<UnitName xml:lang='en'>meter</UnitName>
|
1366
|
+
<UnitSymbol type='HTML'>m</UnitSymbol>
|
1367
|
+
<UnitSymbol type='MathML'>
|
1368
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1369
|
+
<mrow>
|
1370
|
+
<mi mathvariant='normal'>m</mi>
|
1371
|
+
</mrow>
|
1372
|
+
</math>
|
1373
|
+
</UnitSymbol>
|
1374
|
+
</Unit>
|
1375
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd1'>
|
1376
|
+
<Length symbol='L' powerNumerator='1'/>
|
1377
|
+
</Dimension>
|
1378
|
+
<mo>+</mo>
|
1379
|
+
<mn>10</mn>
|
1380
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1381
|
+
<mrow xref='U_cm.s-2'>
|
1382
|
+
<math>
|
1383
|
+
<mi mathvariant='normal'>c</mi>
|
1384
|
+
<mi mathvariant='normal'>m</mi>
|
1385
|
+
<mo>⋅</mo>
|
1386
|
+
<msup>
|
1387
|
+
<mrow>
|
1388
|
+
<mi mathvariant='normal'>s</mi>
|
1389
|
+
</mrow>
|
1390
|
+
<mrow>
|
1391
|
+
<mo>−</mo>
|
1392
|
+
</mrow>
|
1393
|
+
</msup>
|
1429
1394
|
<mn>2</mn>
|
1430
|
-
</
|
1431
|
-
</
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
|
1437
|
-
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
|
1443
|
-
|
1444
|
-
|
1445
|
-
|
1446
|
-
|
1447
|
-
|
1448
|
-
|
1449
|
-
|
1450
|
-
|
1451
|
-
</
|
1452
|
-
|
1453
|
-
|
1395
|
+
</math>
|
1396
|
+
</mrow>
|
1397
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_cm.s-2' dimensionURL='#NISTd28'>
|
1398
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1399
|
+
<UnitName xml:lang='en'>cm*s^-2</UnitName>
|
1400
|
+
<UnitSymbol type='HTML'>
|
1401
|
+
cm⋅s
|
1402
|
+
<sup>−2</sup>
|
1403
|
+
</UnitSymbol>
|
1404
|
+
<UnitSymbol type='MathML'>
|
1405
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1406
|
+
<mrow>
|
1407
|
+
<mi mathvariant='normal'>cm</mi>
|
1408
|
+
<mo>⋅</mo>
|
1409
|
+
<msup>
|
1410
|
+
<mrow>
|
1411
|
+
<mi mathvariant='normal'>s</mi>
|
1412
|
+
</mrow>
|
1413
|
+
<mrow>
|
1414
|
+
<mo>−</mo>
|
1415
|
+
<mn>2</mn>
|
1416
|
+
</mrow>
|
1417
|
+
</msup>
|
1418
|
+
</mrow>
|
1419
|
+
</math>
|
1420
|
+
</UnitSymbol>
|
1421
|
+
<RootUnits>
|
1422
|
+
<EnumeratedRootUnit unit='meter' prefix='c'/>
|
1423
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1424
|
+
</RootUnits>
|
1425
|
+
</Unit>
|
1426
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1427
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1428
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1429
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1430
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1431
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1432
|
+
</Prefix>
|
1433
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd28'>
|
1434
|
+
<Length symbol='L' powerNumerator='1'/>
|
1435
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1436
|
+
</Dimension>
|
1437
|
+
</math>
|
1438
|
+
OUTPUT
|
1439
|
+
end
|
1440
|
+
|
1441
|
+
it "deals with multiplier input" do
|
1442
|
+
input = <<~INPUT
|
1443
|
+
10 "unitsml(cm*s^-2, multiplier: xx)"
|
1444
|
+
INPUT
|
1445
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
1446
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
1447
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1448
|
+
<mn>10</mn>
|
1449
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1450
|
+
<mrow xref='U_cm.s-2'>
|
1451
|
+
<mi mathvariant='normal'>cm</mi>
|
1452
|
+
<mo>xx</mo>
|
1453
|
+
<msup>
|
1454
|
+
<mrow>
|
1455
|
+
<mi mathvariant='normal'>s</mi>
|
1456
|
+
</mrow>
|
1457
|
+
<mrow>
|
1458
|
+
<mo>−</mo>
|
1459
|
+
<mn>2</mn>
|
1460
|
+
</mrow>
|
1461
|
+
</msup>
|
1462
|
+
</mrow>
|
1463
|
+
<Unit xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='U_cm.s-2' dimensionURL='#NISTd28'>
|
1464
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1465
|
+
<UnitName xml:lang='en'>cm*s^-2</UnitName>
|
1466
|
+
<UnitSymbol type='HTML'>
|
1467
|
+
cm⋅s
|
1468
|
+
<sup>−2</sup>
|
1469
|
+
</UnitSymbol>
|
1470
|
+
<UnitSymbol type='MathML'>
|
1471
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1472
|
+
<mrow>
|
1473
|
+
<mi mathvariant='normal'>cm</mi>
|
1474
|
+
<mo>⋅</mo>
|
1475
|
+
<msup>
|
1476
|
+
<mrow>
|
1477
|
+
<mi mathvariant='normal'>s</mi>
|
1478
|
+
</mrow>
|
1479
|
+
<mrow>
|
1480
|
+
<mo>−</mo>
|
1481
|
+
<mn>2</mn>
|
1482
|
+
</mrow>
|
1483
|
+
</msup>
|
1484
|
+
</mrow>
|
1485
|
+
</math>
|
1486
|
+
</UnitSymbol>
|
1487
|
+
<RootUnits>
|
1488
|
+
<EnumeratedRootUnit unit='meter' prefix='c'/>
|
1489
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1490
|
+
</RootUnits>
|
1491
|
+
</Unit>
|
1492
|
+
<Prefix xmlns='https://schema.unitsml.org/unitsml/1.0' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1493
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1494
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1495
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1496
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1497
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1498
|
+
</Prefix>
|
1499
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='NISTd28'>
|
1500
|
+
<Length symbol='L' powerNumerator='1'/>
|
1501
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1502
|
+
</Dimension>
|
1503
|
+
</math>
|
1504
|
+
OUTPUT
|
1505
|
+
end
|
1454
1506
|
|
1507
|
+
it "deals with dimensions" do
|
1508
|
+
input = <<~INPUT
|
1509
|
+
"unitsml(dim_Theta*dim_L^2)"
|
1510
|
+
INPUT
|
1511
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(input)))
|
1512
|
+
.to be_equivalent_to xmlpp(<<~OUTPUT)
|
1513
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1514
|
+
<mrow xref='U_dim_Theta.dim_L2'>
|
1515
|
+
<mi mathvariant='sans-serif'>Θ</mi>
|
1516
|
+
<mo>⋅</mo>
|
1517
|
+
<msup>
|
1518
|
+
<mrow>
|
1519
|
+
<mi mathvariant='sans-serif'>L</mi>
|
1520
|
+
</mrow>
|
1521
|
+
<mrow>
|
1522
|
+
<mn>2</mn>
|
1523
|
+
</mrow>
|
1524
|
+
</msup>
|
1525
|
+
</mrow>
|
1526
|
+
<Dimension xmlns='https://schema.unitsml.org/unitsml/1.0' xml:id='D_L2Theta'>
|
1527
|
+
<Length symbol='L' powerNumerator='2'/>
|
1528
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
|
1529
|
+
</Dimension>
|
1530
|
+
</math>
|
1531
|
+
OUTPUT
|
1532
|
+
end
|
1455
1533
|
end
|