asciimath2unitsml 0.2.0 → 0.2.5
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/README.adoc +20 -1
- data/lib/asciimath2unitsml/conv.rb +28 -8
- data/lib/asciimath2unitsml/parse.rb +31 -20
- data/lib/asciimath2unitsml/render.rb +47 -16
- data/lib/asciimath2unitsml/unit.rb +5 -2
- data/lib/asciimath2unitsml/version.rb +1 -1
- data/lib/unitsdb/dimensions.yaml +31 -31
- data/lib/unitsdb/quantities.yaml +47 -19
- data/lib/unitsdb/units.yaml +96 -216
- data/lib/unitsdb_ruby/unitsdb.rb +1 -0
- data/spec/conv_spec.rb +510 -4
- metadata +2 -2
data/lib/unitsdb_ruby/unitsdb.rb
CHANGED
@@ -135,6 +135,7 @@ module UnitsDB
|
|
135
135
|
@root = hash[:root_units][:enumerated_root_units]
|
136
136
|
hash[:quantity_reference] and @quantities = hash[:quantity_reference].map { |x| x[:url].sub(/^#/, "") }
|
137
137
|
hash[:si_derived_bases] and @si_derived_bases = hash[:si_derived_bases]
|
138
|
+
@prefixed = (hash[:prefixed] == true)
|
138
139
|
rescue
|
139
140
|
raise StandardError.new "Parse fail on Unit #{id}: #{hash}"
|
140
141
|
end
|
data/spec/conv_spec.rb
CHANGED
@@ -66,7 +66,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
66
66
|
OUTPUT
|
67
67
|
end
|
68
68
|
|
69
|
-
|
69
|
+
it "deals with non-Ascii units and prefixes" do
|
70
70
|
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
71
71
|
1 "unitsml(um)"
|
72
72
|
INPUT
|
@@ -75,7 +75,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
75
75
|
<mn>1</mn>
|
76
76
|
<mo rspace='thickmathspace'>⁢</mo>
|
77
77
|
<mrow xref='U_um'>
|
78
|
-
<mi mathvariant='normal'
|
78
|
+
<mi mathvariant='normal'>µm</mi>
|
79
79
|
</mrow>
|
80
80
|
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_um' dimensionURL='#NISTd1'>
|
81
81
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
@@ -84,7 +84,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
84
84
|
<UnitSymbol type='MathML'>
|
85
85
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
86
86
|
<mrow>
|
87
|
-
<mi mathvariant='normal'
|
87
|
+
<mi mathvariant='normal'>µm</mi>
|
88
88
|
</mrow>
|
89
89
|
</math>
|
90
90
|
</UnitSymbol>
|
@@ -97,7 +97,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
97
97
|
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
98
98
|
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
99
99
|
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
100
|
-
<PrefixSymbol type='HTML'
|
100
|
+
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
101
101
|
</Prefix>
|
102
102
|
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
103
103
|
<Length symbol='L' powerNumerator='1'/>
|
@@ -106,6 +106,215 @@ RSpec.describe Asciimath2UnitsML do
|
|
106
106
|
OUTPUT
|
107
107
|
end
|
108
108
|
|
109
|
+
it "does not insert space before non-alphabetic units" do
|
110
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
111
|
+
1 "unitsml(degK)" + 1 "unitsml(prime)" + ii(theta) = s//r "unitsml(rad)" + 10^(12) "unitsml(Hz)"
|
112
|
+
INPUT
|
113
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
114
|
+
<mn>1</mn>
|
115
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
116
|
+
<mrow xref='U_NISTu5'>
|
117
|
+
<mi mathvariant='normal'>°K</mi>
|
118
|
+
</mrow>
|
119
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu5' dimensionURL='#NISTd5'>
|
120
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
121
|
+
<UnitName xml:lang='en'>kelvin</UnitName>
|
122
|
+
<UnitSymbol type='HTML'>K</UnitSymbol>
|
123
|
+
<UnitSymbol type='MathML'>
|
124
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
125
|
+
<mrow>
|
126
|
+
<mi mathvariant='normal'>K</mi>
|
127
|
+
</mrow>
|
128
|
+
</math>
|
129
|
+
</UnitSymbol>
|
130
|
+
</Unit>
|
131
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd5'>
|
132
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
|
133
|
+
</Dimension>
|
134
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq5' dimensionURL='#NISTd5' quantityType='base'>
|
135
|
+
<QuantityName xml:lang='en-US'>thermodynamic temperature</QuantityName>
|
136
|
+
</Quantity>
|
137
|
+
<mo>+</mo>
|
138
|
+
<mn>1</mn>
|
139
|
+
<mo>⁢</mo>
|
140
|
+
<mrow xref='U_NISTu147'>
|
141
|
+
<mi mathvariant='normal'>′</mi>
|
142
|
+
</mrow>
|
143
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu147'>
|
144
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
145
|
+
<UnitName xml:lang='en'>minute (minute of arc)</UnitName>
|
146
|
+
<UnitSymbol type='HTML'>′</UnitSymbol>
|
147
|
+
<UnitSymbol type='MathML'>
|
148
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
149
|
+
<mrow>
|
150
|
+
<mi mathvariant='normal'>′</mi>
|
151
|
+
</mrow>
|
152
|
+
</math>
|
153
|
+
</UnitSymbol>
|
154
|
+
</Unit>
|
155
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd9'>
|
156
|
+
<PlaneAngle symbol='Phi' powerNumerator='1'/>
|
157
|
+
</Dimension>
|
158
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq9' dimensionURL='#NISTd9' quantityType='base'>
|
159
|
+
<QuantityName xml:lang='en-US'>plane angle</QuantityName>
|
160
|
+
<QuantityName xml:lang='en-US'>angle</QuantityName>
|
161
|
+
</Quantity>
|
162
|
+
<mo>+</mo>
|
163
|
+
<mstyle mathvariant='italic'>
|
164
|
+
<mi>θ</mi>
|
165
|
+
</mstyle>
|
166
|
+
<mo>=</mo>
|
167
|
+
<mi>s</mi>
|
168
|
+
<mo>/</mo>
|
169
|
+
<mi>r</mi>
|
170
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
171
|
+
<mrow xref='U_NISTu9'>
|
172
|
+
<mi mathvariant='normal'>rad</mi>
|
173
|
+
</mrow>
|
174
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu9' dimensionURL='#D_L0'>
|
175
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
176
|
+
<UnitName xml:lang='en'>radian</UnitName>
|
177
|
+
<UnitSymbol type='HTML'>rad</UnitSymbol>
|
178
|
+
<UnitSymbol type='MathML'>
|
179
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
180
|
+
<mrow>
|
181
|
+
<mi mathvariant='normal'>rad</mi>
|
182
|
+
</mrow>
|
183
|
+
</math>
|
184
|
+
</UnitSymbol>
|
185
|
+
</Unit>
|
186
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_L0'>
|
187
|
+
<Length symbol='L' powerNumerator='0'/>
|
188
|
+
</Dimension>
|
189
|
+
<mo>+</mo>
|
190
|
+
<msup>
|
191
|
+
<mrow>
|
192
|
+
<mn>10</mn>
|
193
|
+
</mrow>
|
194
|
+
<mrow>
|
195
|
+
<mn>12</mn>
|
196
|
+
</mrow>
|
197
|
+
</msup>
|
198
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
199
|
+
<mrow xref='U_NISTu31'>
|
200
|
+
<mi mathvariant='normal'>Hz</mi>
|
201
|
+
</mrow>
|
202
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu31' dimensionURL='#NISTd24'>
|
203
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
204
|
+
<UnitName xml:lang='en'>hertz</UnitName>
|
205
|
+
<UnitSymbol type='HTML'>Hz</UnitSymbol>
|
206
|
+
<UnitSymbol type='MathML'>
|
207
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
208
|
+
<mrow>
|
209
|
+
<mi mathvariant='normal'>Hz</mi>
|
210
|
+
</mrow>
|
211
|
+
</math>
|
212
|
+
</UnitSymbol>
|
213
|
+
</Unit>
|
214
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd24'>
|
215
|
+
<Time symbol='T' powerNumerator='-1'/>
|
216
|
+
</Dimension>
|
217
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq45' dimensionURL='#NISTd24' quantityType='base'>
|
218
|
+
<QuantityName xml:lang='en-US'>frequency</QuantityName>
|
219
|
+
</Quantity>
|
220
|
+
</math>
|
221
|
+
OUTPUT
|
222
|
+
end
|
223
|
+
|
224
|
+
it "does not insert space before operators" do
|
225
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
226
|
+
8 "unitsml(kg)" cdot "unitsml(m)"
|
227
|
+
INPUT
|
228
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
229
|
+
<mn>8</mn>
|
230
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
231
|
+
<mrow xref='U_NISTu2'>
|
232
|
+
<mi mathvariant='normal'>kg</mi>
|
233
|
+
</mrow>
|
234
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu2' dimensionURL='#NISTd2'>
|
235
|
+
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
236
|
+
<UnitName xml:lang='en'>kilogram</UnitName>
|
237
|
+
<UnitSymbol type='HTML'>kg</UnitSymbol>
|
238
|
+
<UnitSymbol type='MathML'>
|
239
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
240
|
+
<mrow>
|
241
|
+
<mi mathvariant='normal'>kg</mi>
|
242
|
+
</mrow>
|
243
|
+
</math>
|
244
|
+
</UnitSymbol>
|
245
|
+
<RootUnits>
|
246
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
247
|
+
</RootUnits>
|
248
|
+
</Unit>
|
249
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
250
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
251
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
252
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
253
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
254
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
255
|
+
</Prefix>
|
256
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd2'>
|
257
|
+
<Mass symbol='M' powerNumerator='1'/>
|
258
|
+
</Dimension>
|
259
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
260
|
+
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
261
|
+
</Quantity>
|
262
|
+
<mo>⋅</mo>
|
263
|
+
<mrow xref='U_NISTu1'>
|
264
|
+
<mi mathvariant='normal'>m</mi>
|
265
|
+
</mrow>
|
266
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
267
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
268
|
+
<UnitName xml:lang='en'>meter</UnitName>
|
269
|
+
<UnitSymbol type='HTML'>m</UnitSymbol>
|
270
|
+
<UnitSymbol type='MathML'>
|
271
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
272
|
+
<mrow>
|
273
|
+
<mi mathvariant='normal'>m</mi>
|
274
|
+
</mrow>
|
275
|
+
</math>
|
276
|
+
</UnitSymbol>
|
277
|
+
</Unit>
|
278
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
279
|
+
<Length symbol='L' powerNumerator='1'/>
|
280
|
+
</Dimension>
|
281
|
+
</math>
|
282
|
+
OUTPUT
|
283
|
+
end
|
284
|
+
|
285
|
+
it "deals with sqrt units" do
|
286
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
287
|
+
1 "unitsml(sqrt(Hz))"
|
288
|
+
INPUT
|
289
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
290
|
+
<mn>1</mn>
|
291
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
292
|
+
<mrow xref='U_sqrtHz'>
|
293
|
+
<msqrt>
|
294
|
+
<mi mathvariant='normal'>Hz</mi>
|
295
|
+
</msqrt>
|
296
|
+
</mrow>
|
297
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_Hz0.5' dimensionURL='#D_T-0.5'>
|
298
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
299
|
+
<UnitName xml:lang='en'>Hz^0.5</UnitName>
|
300
|
+
<UnitSymbol type='HTML'>√Hz</UnitSymbol>
|
301
|
+
<UnitSymbol type='MathML'>
|
302
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
303
|
+
<mrow>
|
304
|
+
<msqrt>
|
305
|
+
<mi mathvariant='normal'>Hz</mi>
|
306
|
+
</msqrt>
|
307
|
+
</mrow>
|
308
|
+
</math>
|
309
|
+
</UnitSymbol>
|
310
|
+
</Unit>
|
311
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_T-0.5'>
|
312
|
+
<Time symbol='T' powerNumerator='-0.5'/>
|
313
|
+
</Dimension>
|
314
|
+
</math>
|
315
|
+
OUTPUT
|
316
|
+
end
|
317
|
+
|
109
318
|
it "deals with kg and g" do
|
110
319
|
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
111
320
|
1 "unitsml(kg)" + 1 "unitsml(g)"
|
@@ -359,6 +568,82 @@ INPUT
|
|
359
568
|
OUTPUT
|
360
569
|
end
|
361
570
|
|
571
|
+
it "deals with standalone prefixes" do
|
572
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
573
|
+
"unitsml(p-)" "unitsml(da-)"
|
574
|
+
INPUT
|
575
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
576
|
+
<mrow xref='NISTp10_-12'>
|
577
|
+
<mi mathvariant='normal'>p</mi>
|
578
|
+
</mrow>
|
579
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-12' xml:id='NISTp10_-12'>
|
580
|
+
<PrefixName xml:lang='en'>pico</PrefixName>
|
581
|
+
<PrefixSymbol type='ASCII'>p</PrefixSymbol>
|
582
|
+
<PrefixSymbol type='unicode'>p</PrefixSymbol>
|
583
|
+
<PrefixSymbol type='LaTeX'>p</PrefixSymbol>
|
584
|
+
<PrefixSymbol type='HTML'>p</PrefixSymbol>
|
585
|
+
</Prefix>
|
586
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
587
|
+
<mrow xref='NISTp10_1'>
|
588
|
+
<mi mathvariant='normal'>da</mi>
|
589
|
+
</mrow>
|
590
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='1' xml:id='NISTp10_1'>
|
591
|
+
<PrefixName xml:lang='en'>deka</PrefixName>
|
592
|
+
<PrefixSymbol type='ASCII'>da</PrefixSymbol>
|
593
|
+
<PrefixSymbol type='unicode'>da</PrefixSymbol>
|
594
|
+
<PrefixSymbol type='LaTeX'>da</PrefixSymbol>
|
595
|
+
<PrefixSymbol type='HTML'>da</PrefixSymbol>
|
596
|
+
</Prefix>
|
597
|
+
</math>
|
598
|
+
OUTPUT
|
599
|
+
end
|
600
|
+
|
601
|
+
it "deals with HTML entities in UnitsDB" do
|
602
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
603
|
+
"unitsml(u-)" + "unitsml(um)"
|
604
|
+
INPUT
|
605
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
606
|
+
<mrow xref='NISTp10_-6'>
|
607
|
+
<mi mathvariant='normal'>µ</mi>
|
608
|
+
</mrow>
|
609
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-6' xml:id='NISTp10_-6'>
|
610
|
+
<PrefixName xml:lang='en'>micro</PrefixName>
|
611
|
+
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
612
|
+
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
613
|
+
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
614
|
+
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
615
|
+
</Prefix>
|
616
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd2'>
|
617
|
+
<Mass symbol='M' powerNumerator='1'/>
|
618
|
+
</Dimension>
|
619
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
620
|
+
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
621
|
+
</Quantity>
|
622
|
+
<mo>+</mo>
|
623
|
+
<mrow xref='U_um'>
|
624
|
+
<mi mathvariant='normal'>µm</mi>
|
625
|
+
</mrow>
|
626
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_um' dimensionURL='#NISTd1'>
|
627
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
628
|
+
<UnitName xml:lang='en'>um</UnitName>
|
629
|
+
<UnitSymbol type='HTML'>um</UnitSymbol>
|
630
|
+
<UnitSymbol type='MathML'>
|
631
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
632
|
+
<mrow>
|
633
|
+
<mi mathvariant='normal'>µm</mi>
|
634
|
+
</mrow>
|
635
|
+
</math>
|
636
|
+
</UnitSymbol>
|
637
|
+
<RootUnits>
|
638
|
+
<EnumeratedRootUnit unit='meter' prefix='u'/>
|
639
|
+
</RootUnits>
|
640
|
+
</Unit>
|
641
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
642
|
+
<Length symbol='L' powerNumerator='1'/>
|
643
|
+
</Dimension>
|
644
|
+
</math>
|
645
|
+
OUTPUT
|
646
|
+
end
|
362
647
|
|
363
648
|
it "deals with units division" do
|
364
649
|
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
@@ -695,6 +980,73 @@ OUTPUT
|
|
695
980
|
OUTPUT
|
696
981
|
end
|
697
982
|
|
983
|
+
it "deals with dimension decomposition with like units" do
|
984
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
985
|
+
9 "unitsml(mW*cm^(-2))"
|
986
|
+
INPUT
|
987
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
988
|
+
<mn>9</mn>
|
989
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
990
|
+
<mrow xref='U_mW.cm-2'>
|
991
|
+
<mi mathvariant='normal'>mW</mi>
|
992
|
+
<mo>·</mo>
|
993
|
+
<msup>
|
994
|
+
<mrow>
|
995
|
+
<mi mathvariant='normal'>cm</mi>
|
996
|
+
</mrow>
|
997
|
+
<mrow>
|
998
|
+
<mo>−</mo>
|
999
|
+
<mn>2</mn>
|
1000
|
+
</mrow>
|
1001
|
+
</msup>
|
1002
|
+
</mrow>
|
1003
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_mW.cm-2'>
|
1004
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1005
|
+
<UnitName xml:lang='en'>mW*cm^-2</UnitName>
|
1006
|
+
<UnitSymbol type='HTML'>
|
1007
|
+
mW·cm
|
1008
|
+
<sup>−2</sup>
|
1009
|
+
</UnitSymbol>
|
1010
|
+
<UnitSymbol type='MathML'>
|
1011
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1012
|
+
<mrow>
|
1013
|
+
<mi mathvariant='normal'>mW</mi>
|
1014
|
+
<mo>·</mo>
|
1015
|
+
<msup>
|
1016
|
+
<mrow>
|
1017
|
+
<mi mathvariant='normal'>cm</mi>
|
1018
|
+
</mrow>
|
1019
|
+
<mrow>
|
1020
|
+
<mo>−</mo>
|
1021
|
+
<mn>2</mn>
|
1022
|
+
</mrow>
|
1023
|
+
</msup>
|
1024
|
+
</mrow>
|
1025
|
+
</math>
|
1026
|
+
</UnitSymbol>
|
1027
|
+
<RootUnits>
|
1028
|
+
<EnumeratedRootUnit unit='watt' prefix='m'/>
|
1029
|
+
<EnumeratedRootUnit unit='meter' prefix='c' powerNumerator='-2'/>
|
1030
|
+
</RootUnits>
|
1031
|
+
</Unit>
|
1032
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
1033
|
+
<PrefixName xml:lang='en'>milli</PrefixName>
|
1034
|
+
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
1035
|
+
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
1036
|
+
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
1037
|
+
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
1038
|
+
</Prefix>
|
1039
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1040
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1041
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1042
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1043
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1044
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1045
|
+
</Prefix>
|
1046
|
+
</math>
|
1047
|
+
OUTPUT
|
1048
|
+
end
|
1049
|
+
|
698
1050
|
it "deals with quantity input" do
|
699
1051
|
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
700
1052
|
9 "unitsml(m, quantity: NISTq103)"
|
@@ -803,5 +1155,159 @@ INPUT
|
|
803
1155
|
OUTPUT
|
804
1156
|
end
|
805
1157
|
|
1158
|
+
it "deals with symbol input" do
|
1159
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
1160
|
+
9 "unitsml(m, symbol: La)" + 10 "unitsml(cm*s^-2, symbol: cm cdot s^-2)"
|
1161
|
+
INPUT
|
1162
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1163
|
+
<mn>9</mn>
|
1164
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1165
|
+
<mrow xref='U_NISTu1'>
|
1166
|
+
<math>
|
1167
|
+
<mi mathvariant='normal'>L</mi>
|
1168
|
+
<mi mathvariant='normal'>a</mi>
|
1169
|
+
</math>
|
1170
|
+
</mrow>
|
1171
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
1172
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1173
|
+
<UnitName xml:lang='en'>meter</UnitName>
|
1174
|
+
<UnitSymbol type='HTML'>m</UnitSymbol>
|
1175
|
+
<UnitSymbol type='MathML'>
|
1176
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1177
|
+
<mrow>
|
1178
|
+
<mi mathvariant='normal'>m</mi>
|
1179
|
+
</mrow>
|
1180
|
+
</math>
|
1181
|
+
</UnitSymbol>
|
1182
|
+
</Unit>
|
1183
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
1184
|
+
<Length symbol='L' powerNumerator='1'/>
|
1185
|
+
</Dimension>
|
1186
|
+
<mo>+</mo>
|
1187
|
+
<mn>10</mn>
|
1188
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1189
|
+
<mrow xref='U_cm.s-2'>
|
1190
|
+
<math>
|
1191
|
+
<mi mathvariant='normal'>c</mi>
|
1192
|
+
<mi mathvariant='normal'>m</mi>
|
1193
|
+
<mo>⋅</mo>
|
1194
|
+
<msup>
|
1195
|
+
<mrow>
|
1196
|
+
<mi mathvariant='normal'>s</mi>
|
1197
|
+
</mrow>
|
1198
|
+
<mrow>
|
1199
|
+
<mo>−</mo>
|
1200
|
+
</mrow>
|
1201
|
+
</msup>
|
1202
|
+
<mn>2</mn>
|
1203
|
+
</math>
|
1204
|
+
</mrow>
|
1205
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_cm.s-2' dimensionURL='#NISTd28'>
|
1206
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1207
|
+
<UnitName xml:lang='en'>cm*s^-2</UnitName>
|
1208
|
+
<UnitSymbol type='HTML'>
|
1209
|
+
cm·s
|
1210
|
+
<sup>−2</sup>
|
1211
|
+
</UnitSymbol>
|
1212
|
+
<UnitSymbol type='MathML'>
|
1213
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1214
|
+
<mrow>
|
1215
|
+
<mi mathvariant='normal'>cm</mi>
|
1216
|
+
<mo>·</mo>
|
1217
|
+
<msup>
|
1218
|
+
<mrow>
|
1219
|
+
<mi mathvariant='normal'>s</mi>
|
1220
|
+
</mrow>
|
1221
|
+
<mrow>
|
1222
|
+
<mo>−</mo>
|
1223
|
+
<mn>2</mn>
|
1224
|
+
</mrow>
|
1225
|
+
</msup>
|
1226
|
+
</mrow>
|
1227
|
+
</math>
|
1228
|
+
</UnitSymbol>
|
1229
|
+
<RootUnits>
|
1230
|
+
<EnumeratedRootUnit unit='meter' prefix='c'/>
|
1231
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1232
|
+
</RootUnits>
|
1233
|
+
</Unit>
|
1234
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1235
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1236
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1237
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1238
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1239
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1240
|
+
</Prefix>
|
1241
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd28'>
|
1242
|
+
<Length symbol='L' powerNumerator='1'/>
|
1243
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1244
|
+
</Dimension>
|
1245
|
+
</math>
|
1246
|
+
OUTPUT
|
1247
|
+
end
|
1248
|
+
|
1249
|
+
it "deals with multiplier input" do
|
1250
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
1251
|
+
10 "unitsml(cm*s^-2, multiplier: xx)"
|
1252
|
+
INPUT
|
1253
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1254
|
+
<mn>10</mn>
|
1255
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1256
|
+
<mrow xref='U_cm.s-2'>
|
1257
|
+
<mi mathvariant='normal'>cm</mi>
|
1258
|
+
<mo>xx</mo>
|
1259
|
+
<msup>
|
1260
|
+
<mrow>
|
1261
|
+
<mi mathvariant='normal'>s</mi>
|
1262
|
+
</mrow>
|
1263
|
+
<mrow>
|
1264
|
+
<mo>−</mo>
|
1265
|
+
<mn>2</mn>
|
1266
|
+
</mrow>
|
1267
|
+
</msup>
|
1268
|
+
</mrow>
|
1269
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_cm.s-2' dimensionURL='#NISTd28'>
|
1270
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1271
|
+
<UnitName xml:lang='en'>cm*s^-2</UnitName>
|
1272
|
+
<UnitSymbol type='HTML'>
|
1273
|
+
cm·s
|
1274
|
+
<sup>−2</sup>
|
1275
|
+
</UnitSymbol>
|
1276
|
+
<UnitSymbol type='MathML'>
|
1277
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1278
|
+
<mrow>
|
1279
|
+
<mi mathvariant='normal'>cm</mi>
|
1280
|
+
<mo>·</mo>
|
1281
|
+
<msup>
|
1282
|
+
<mrow>
|
1283
|
+
<mi mathvariant='normal'>s</mi>
|
1284
|
+
</mrow>
|
1285
|
+
<mrow>
|
1286
|
+
<mo>−</mo>
|
1287
|
+
<mn>2</mn>
|
1288
|
+
</mrow>
|
1289
|
+
</msup>
|
1290
|
+
</mrow>
|
1291
|
+
</math>
|
1292
|
+
</UnitSymbol>
|
1293
|
+
<RootUnits>
|
1294
|
+
<EnumeratedRootUnit unit='meter' prefix='c'/>
|
1295
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1296
|
+
</RootUnits>
|
1297
|
+
</Unit>
|
1298
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1299
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1300
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1301
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1302
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1303
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1304
|
+
</Prefix>
|
1305
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd28'>
|
1306
|
+
<Length symbol='L' powerNumerator='1'/>
|
1307
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1308
|
+
</Dimension>
|
1309
|
+
</math>
|
1310
|
+
OUTPUT
|
1311
|
+
end
|
806
1312
|
|
807
1313
|
end
|