asciimath2unitsml 0.1.1 → 0.2.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 +53 -0
- data/.gitmodules +4 -0
- data/README.adoc +163 -5
- data/asciimath2unitsml.gemspec +24 -2
- data/lib/asciimath2unitsml.rb +1 -0
- data/lib/asciimath2unitsml/conv.rb +117 -128
- data/lib/asciimath2unitsml/parse.rb +168 -32
- data/lib/asciimath2unitsml/render.rb +83 -0
- data/lib/asciimath2unitsml/unit.rb +81 -0
- data/lib/asciimath2unitsml/version.rb +1 -1
- data/lib/unitsdb/dimensions.yaml +802 -0
- data/lib/unitsdb/prefixes.yaml +154 -27
- data/lib/unitsdb/quantities.yaml +2274 -440
- data/lib/unitsdb/unit_systems.yaml +16 -0
- data/lib/unitsdb/units.yaml +10073 -1715
- data/lib/unitsdb_ruby/unitsdb.rb +163 -0
- data/spec/conv_spec.rb +798 -97
- metadata +23 -2
@@ -0,0 +1,163 @@
|
|
1
|
+
module UnitsDB
|
2
|
+
class Dimension
|
3
|
+
attr_reader :id, :length, :mass, :time, :electric_current, :thermodynamic_temperature,
|
4
|
+
:amount_of_substance, :luminous_intensity, :plane_angle, :dimensionless
|
5
|
+
|
6
|
+
def initialize(id, hash)
|
7
|
+
begin
|
8
|
+
@id = id
|
9
|
+
@dimensionless = hash[:dimensionless]
|
10
|
+
hash[:length] and @length = hash[:length][:powerNumerator].to_i
|
11
|
+
hash[:mass] and @mass = hash[:mass][:powerNumerator].to_i
|
12
|
+
hash[:time] and @time = hash[:time][:powerNumerator].to_i
|
13
|
+
hash[:electric_current] and @electric_current = hash[:electric_current][:powerNumerator].to_i
|
14
|
+
hash[:thermodynamic_temperature] and
|
15
|
+
@thermodynamic_temperature = hash[:thermodynamic_temperature][:powerNumerator].to_i
|
16
|
+
hash[:amount_of_substance] and @amount_of_substance = hash[:amount_of_substance][:powerNumerator].to_i
|
17
|
+
hash[:luminous_intensity] and @luminous_intensity = hash[:luminous_intensity][:powerNumerator].to_i
|
18
|
+
hash[:plane_angle] and @plane_angle = hash[:plane_angle][:powerNumerator].to_i
|
19
|
+
rescue
|
20
|
+
raise StandardError.new "Parse fail on Dimension #{id}: #{hash}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def keys
|
25
|
+
ret = []
|
26
|
+
@length and ret << "Length"
|
27
|
+
@mass and ret << "Mass"
|
28
|
+
@time and ret << "Time"
|
29
|
+
@electric_current and ret << "ElectricCurrent"
|
30
|
+
@thermodynamic_temperature and ret << "ThermodynamicTemperature"
|
31
|
+
@amount_of_substance and ret << "AmountOfSubstance"
|
32
|
+
@luminous_intensity and ret << "LuminousIntensity"
|
33
|
+
@plane_angle and ret << "PlaneAngle"
|
34
|
+
ret
|
35
|
+
end
|
36
|
+
|
37
|
+
def exponent(key)
|
38
|
+
case key
|
39
|
+
when "Length" then @length
|
40
|
+
when "Mass" then @mass
|
41
|
+
when "Time" then @time
|
42
|
+
when "ElectricCurrent" then @electric_current
|
43
|
+
when "ThermodynamicTemperature" then @thermodynamic_temperature
|
44
|
+
when "AmountOfSubstance" then @amount_of_substance
|
45
|
+
when "LuminousIntensity" then @luminous_intensity
|
46
|
+
when "PlaneAngle" then @plane_angle
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def vector
|
51
|
+
"#{@length}:#{@mass}:#{@time}:#{@electric_current}:#{@thermodynamic_temperature}:#{@amount_of_substance}:"\
|
52
|
+
"#{@luminous_intensity}:#{@plane_angle}"
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
class Prefix
|
57
|
+
attr_reader :id, :name, :base, :power, :symbol
|
58
|
+
|
59
|
+
def initialize(id, hash)
|
60
|
+
begin
|
61
|
+
@id = id
|
62
|
+
@name = hash[:name]
|
63
|
+
@base = hash[:base]
|
64
|
+
@power = hash[:power]
|
65
|
+
@symbol = hash[:symbol] # always is a hash
|
66
|
+
rescue
|
67
|
+
raise StandardError.new "Parse fail on Prefix #{id}: #{hash}"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def ascii
|
72
|
+
@symbol[:ascii]
|
73
|
+
end
|
74
|
+
|
75
|
+
def symbolid
|
76
|
+
@symbol[:ascii]
|
77
|
+
end
|
78
|
+
|
79
|
+
def html
|
80
|
+
@symbol[:html]
|
81
|
+
end
|
82
|
+
|
83
|
+
def mathml
|
84
|
+
@symbol[:html]
|
85
|
+
end
|
86
|
+
|
87
|
+
def latex
|
88
|
+
@symbol[:latex]
|
89
|
+
end
|
90
|
+
|
91
|
+
def unicode
|
92
|
+
@symbol[:unicode]
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
class Quantity
|
97
|
+
attr_reader :id, :dimension, :type, :names, :units
|
98
|
+
|
99
|
+
def initialize(id, hash)
|
100
|
+
begin
|
101
|
+
@id = id
|
102
|
+
@dimension = hash[:dimension_url].sub(/^#/, "")
|
103
|
+
@type = hash[:quantity_type]
|
104
|
+
hash[:quantity_name] and @names = hash[:quantity_name]
|
105
|
+
hash[:unit_reference] and @units = hash[:unit_reference].map { |x| x[:url].sub(/^#/, "") }
|
106
|
+
rescue
|
107
|
+
raise StandardError.new "Parse fail on Quantity #{id}: #{hash}"
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def name
|
112
|
+
@names&.first
|
113
|
+
end
|
114
|
+
|
115
|
+
def unit
|
116
|
+
@units&.first
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
class Unit
|
121
|
+
attr_reader :id, :dimension, :short, :root, :unit_system, :names, :symbols, :symbols_hash, :root_units, :quantities,
|
122
|
+
:si_derived_bases, :prefixed
|
123
|
+
|
124
|
+
def initialize(id, hash)
|
125
|
+
begin
|
126
|
+
@id = id
|
127
|
+
@short = short
|
128
|
+
@dimension = hash[:dimension_url].sub(/^#/, "")
|
129
|
+
hash[:short] && !hash[:short].empty? and @short = hash[:short]
|
130
|
+
@unit_system = hash[:unit_system]
|
131
|
+
@names = hash[:unit_name]
|
132
|
+
@symbols_hash = hash[:unit_symbols]&.each_with_object({}) { |h, m| m[h[:id]] = h } || {}
|
133
|
+
@symbols = hash[:unit_symbols]
|
134
|
+
hash[:root_units] and hash[:root_units][:enumerated_root_units] and
|
135
|
+
@root = hash[:root_units][:enumerated_root_units]
|
136
|
+
hash[:quantity_reference] and @quantities = hash[:quantity_reference].map { |x| x[:url].sub(/^#/, "") }
|
137
|
+
hash[:si_derived_bases] and @si_derived_bases = hash[:si_derived_bases]
|
138
|
+
rescue
|
139
|
+
raise StandardError.new "Parse fail on Unit #{id}: #{hash}"
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def system_name
|
144
|
+
@unit_system[:name]
|
145
|
+
end
|
146
|
+
|
147
|
+
def system_type
|
148
|
+
@unit_system[:type]
|
149
|
+
end
|
150
|
+
|
151
|
+
def name
|
152
|
+
@names.first
|
153
|
+
end
|
154
|
+
|
155
|
+
def symbolid
|
156
|
+
@symbols ? @symbols.first[:id] : @short
|
157
|
+
end
|
158
|
+
|
159
|
+
def symbolids
|
160
|
+
@symbols ? @symbols.map { |s| s[:id] } : [ @short ]
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
data/spec/conv_spec.rb
CHANGED
@@ -3,19 +3,18 @@ require "spec_helper"
|
|
3
3
|
RSpec.describe Asciimath2UnitsML do
|
4
4
|
it "converts an AsciiMath string to MathML + UnitsML" do
|
5
5
|
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
6
|
-
|
6
|
+
1 "unitsml(mm*s^-2)"
|
7
7
|
INPUT
|
8
|
-
|
9
|
-
|
10
|
-
<
|
11
|
-
<mn>5</mn>
|
12
|
-
<mo>×</mo>
|
13
|
-
<mn>7</mn>
|
8
|
+
<?xml version='1.0'?>
|
9
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
10
|
+
<mn>1</mn>
|
14
11
|
<mo rspace='thickmathspace'>⁢</mo>
|
15
|
-
<mrow xref='
|
12
|
+
<mrow xref='U_mm.s-2'>
|
13
|
+
<mi mathvariant='normal'>mm</mi>
|
14
|
+
<mo>·</mo>
|
16
15
|
<msup>
|
17
16
|
<mrow>
|
18
|
-
<mi mathvariant='normal'>
|
17
|
+
<mi mathvariant='normal'>s</mi>
|
19
18
|
</mrow>
|
20
19
|
<mrow>
|
21
20
|
<mo>−</mo>
|
@@ -23,19 +22,21 @@ RSpec.describe Asciimath2UnitsML do
|
|
23
22
|
</mrow>
|
24
23
|
</msup>
|
25
24
|
</mrow>
|
26
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='
|
27
|
-
<UnitSystem name='SI' type='
|
28
|
-
<UnitName xml:lang='en'>
|
25
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_mm.s-2' dimensionURL='#NISTd28'>
|
26
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
27
|
+
<UnitName xml:lang='en'>mm*s^-2</UnitName>
|
29
28
|
<UnitSymbol type='HTML'>
|
30
|
-
|
29
|
+
mm·s
|
31
30
|
<sup>−2</sup>
|
32
31
|
</UnitSymbol>
|
33
32
|
<UnitSymbol type='MathML'>
|
34
33
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
35
34
|
<mrow>
|
35
|
+
<mi mathvariant='normal'>mm</mi>
|
36
|
+
<mo>·</mo>
|
36
37
|
<msup>
|
37
38
|
<mrow>
|
38
|
-
<mi mathvariant='normal'>
|
39
|
+
<mi mathvariant='normal'>s</mi>
|
39
40
|
</mrow>
|
40
41
|
<mrow>
|
41
42
|
<mo>−</mo>
|
@@ -45,22 +46,202 @@ RSpec.describe Asciimath2UnitsML do
|
|
45
46
|
</mrow>
|
46
47
|
</math>
|
47
48
|
</UnitSymbol>
|
49
|
+
<RootUnits>
|
50
|
+
<EnumeratedRootUnit unit='meter' prefix='m'/>
|
51
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
52
|
+
</RootUnits>
|
53
|
+
</Unit>
|
54
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
55
|
+
<PrefixName xml:lang='en'>milli</PrefixName>
|
56
|
+
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
57
|
+
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
58
|
+
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
59
|
+
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
60
|
+
</Prefix>
|
61
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd28'>
|
62
|
+
<Length symbol='L' powerNumerator='1'/>
|
63
|
+
<Time symbol='T' powerNumerator='-2'/>
|
64
|
+
</Dimension>
|
65
|
+
</math>
|
66
|
+
OUTPUT
|
67
|
+
end
|
68
|
+
|
69
|
+
it "deals with non-Ascii units and prefixes" do
|
70
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
71
|
+
1 "unitsml(um)"
|
72
|
+
INPUT
|
73
|
+
<?xml version='1.0'?>
|
74
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
75
|
+
<mn>1</mn>
|
76
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
77
|
+
<mrow xref='U_um'>
|
78
|
+
<mi mathvariant='normal'>µm</mi>
|
79
|
+
</mrow>
|
80
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_um' dimensionURL='#NISTd1'>
|
81
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
82
|
+
<UnitName xml:lang='en'>um</UnitName>
|
83
|
+
<UnitSymbol type='HTML'>um</UnitSymbol>
|
84
|
+
<UnitSymbol type='MathML'>
|
85
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
86
|
+
<mrow>
|
87
|
+
<mi mathvariant='normal'>µm</mi>
|
88
|
+
</mrow>
|
89
|
+
</math>
|
90
|
+
</UnitSymbol>
|
91
|
+
<RootUnits>
|
92
|
+
<EnumeratedRootUnit unit='meter' prefix='u'/>
|
93
|
+
</RootUnits>
|
94
|
+
</Unit>
|
95
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-6' xml:id='NISTp10_-6'>
|
96
|
+
<PrefixName xml:lang='en'>micro</PrefixName>
|
97
|
+
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
98
|
+
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
99
|
+
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
100
|
+
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
101
|
+
</Prefix>
|
102
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
103
|
+
<Length symbol='L' powerNumerator='1'/>
|
104
|
+
</Dimension>
|
105
|
+
</math>
|
106
|
+
OUTPUT
|
107
|
+
end
|
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)"
|
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
|
+
</math>
|
163
|
+
OUTPUT
|
164
|
+
end
|
165
|
+
|
166
|
+
it "deals with sqrt units" do
|
167
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
168
|
+
1 "unitsml(sqrt(Hz))"
|
169
|
+
INPUT
|
170
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
171
|
+
<mn>1</mn>
|
172
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
173
|
+
<mrow xref='U_sqrtHz'>
|
174
|
+
<msqrt>
|
175
|
+
<mi mathvariant='normal'>Hz</mi>
|
176
|
+
</msqrt>
|
177
|
+
</mrow>
|
178
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_Hz0.5' dimensionURL='#D_T-0.5'>
|
179
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
180
|
+
<UnitName xml:lang='en'>Hz^0.5</UnitName>
|
181
|
+
<UnitSymbol type='HTML'>√Hz</UnitSymbol>
|
182
|
+
<UnitSymbol type='MathML'>
|
183
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
184
|
+
<mrow>
|
185
|
+
<msqrt>
|
186
|
+
<mi mathvariant='normal'>Hz</mi>
|
187
|
+
</msqrt>
|
188
|
+
</mrow>
|
189
|
+
</math>
|
190
|
+
</UnitSymbol>
|
191
|
+
</Unit>
|
192
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_T-0.5'>
|
193
|
+
<Time symbol='T' powerNumerator='-0.5'/>
|
194
|
+
</Dimension>
|
195
|
+
</math>
|
196
|
+
OUTPUT
|
197
|
+
end
|
198
|
+
|
199
|
+
it "deals with kg and g" do
|
200
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
201
|
+
1 "unitsml(kg)" + 1 "unitsml(g)"
|
202
|
+
INPUT
|
203
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
204
|
+
<mn>1</mn>
|
205
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
206
|
+
<mrow xref='U_NISTu2'>
|
207
|
+
<mi mathvariant='normal'>kg</mi>
|
208
|
+
</mrow>
|
209
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu2' dimensionURL='#NISTd2'>
|
210
|
+
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
211
|
+
<UnitName xml:lang='en'>kilogram</UnitName>
|
212
|
+
<UnitSymbol type='HTML'>kg</UnitSymbol>
|
213
|
+
<UnitSymbol type='MathML'>
|
214
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
215
|
+
<mrow>
|
216
|
+
<mi mathvariant='normal'>kg</mi>
|
217
|
+
</mrow>
|
218
|
+
</math>
|
219
|
+
</UnitSymbol>
|
220
|
+
<RootUnits>
|
221
|
+
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
222
|
+
</RootUnits>
|
48
223
|
</Unit>
|
49
224
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
50
225
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
51
226
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
227
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
228
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
229
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
52
230
|
</Prefix>
|
53
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
54
|
-
<Mass symbol='M' powerNumerator='
|
231
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd2'>
|
232
|
+
<Mass symbol='M' powerNumerator='1'/>
|
55
233
|
</Dimension>
|
56
|
-
<
|
57
|
-
|
234
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
235
|
+
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
236
|
+
</Quantity>
|
237
|
+
<mo>+</mo>
|
238
|
+
<mn>1</mn>
|
58
239
|
<mo rspace='thickmathspace'>⁢</mo>
|
59
240
|
<mrow xref='U_NISTu27'>
|
60
241
|
<mi mathvariant='normal'>g</mi>
|
61
242
|
</mrow>
|
62
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu27' dimensionURL='#
|
63
|
-
<UnitSystem name='SI' type='
|
243
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu27' dimensionURL='#NISTd2'>
|
244
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
64
245
|
<UnitName xml:lang='en'>gram</UnitName>
|
65
246
|
<UnitSymbol type='HTML'>g</UnitSymbol>
|
66
247
|
<UnitSymbol type='MathML'>
|
@@ -71,10 +252,49 @@ RSpec.describe Asciimath2UnitsML do
|
|
71
252
|
</math>
|
72
253
|
</UnitSymbol>
|
73
254
|
</Unit>
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
255
|
+
</math>
|
256
|
+
OUTPUT
|
257
|
+
end
|
258
|
+
|
259
|
+
it "deals with non-metric" do
|
260
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
261
|
+
1 "unitsml(hp)"
|
262
|
+
INPUT
|
263
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
264
|
+
<mn>1</mn>
|
265
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
266
|
+
<mrow xref='U_NISTu284'>
|
267
|
+
<mi mathvariant='normal'>hp</mi>
|
268
|
+
</mrow>
|
269
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu284'>
|
270
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
271
|
+
<UnitName xml:lang='en'>horsepower</UnitName>
|
272
|
+
<UnitSymbol type='HTML'>hp</UnitSymbol>
|
273
|
+
<UnitSymbol type='MathML'>
|
274
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
275
|
+
<mrow>
|
276
|
+
<mi mathvariant='normal'>hp</mi>
|
277
|
+
</mrow>
|
278
|
+
</math>
|
279
|
+
</UnitSymbol>
|
280
|
+
</Unit>
|
281
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd16'>
|
282
|
+
<Length symbol='L' powerNumerator='2'/>
|
283
|
+
<Mass symbol='M' powerNumerator='1'/>
|
284
|
+
<Time symbol='T' powerNumerator='-3'/>
|
285
|
+
</Dimension>
|
286
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq20' dimensionURL='#NISTd16' quantityType='base'>
|
287
|
+
<QuantityName xml:lang='en-US'>power</QuantityName>
|
288
|
+
</Quantity>
|
289
|
+
</math>
|
290
|
+
OUTPUT
|
291
|
+
end
|
292
|
+
|
293
|
+
it "deals with duplicate units" do
|
294
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
295
|
+
1 "unitsml(kg*s^-2)" xx 9 "unitsml(kg*s^-2)"
|
296
|
+
INPUT
|
297
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
78
298
|
<mn>1</mn>
|
79
299
|
<mo rspace='thickmathspace'>⁢</mo>
|
80
300
|
<mrow xref='U_kg.s-2'>
|
@@ -90,7 +310,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
90
310
|
</mrow>
|
91
311
|
</msup>
|
92
312
|
</mrow>
|
93
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#
|
313
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
94
314
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
95
315
|
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
96
316
|
<UnitSymbol type='HTML'>
|
@@ -122,16 +342,19 @@ RSpec.describe Asciimath2UnitsML do
|
|
122
342
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
123
343
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
124
344
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
345
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
346
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
347
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
125
348
|
</Prefix>
|
126
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
349
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
127
350
|
<Mass symbol='M' powerNumerator='1'/>
|
128
351
|
<Time symbol='T' powerNumerator='-2'/>
|
129
352
|
</Dimension>
|
130
353
|
<mo>×</mo>
|
131
|
-
<mn>
|
354
|
+
<mn>9</mn>
|
132
355
|
<mo rspace='thickmathspace'>⁢</mo>
|
133
|
-
<mrow xref='
|
134
|
-
<mi mathvariant='normal'>
|
356
|
+
<mrow xref='U_kg.s-2'>
|
357
|
+
<mi mathvariant='normal'>kg</mi>
|
135
358
|
<mo>·</mo>
|
136
359
|
<msup>
|
137
360
|
<mrow>
|
@@ -143,43 +366,177 @@ RSpec.describe Asciimath2UnitsML do
|
|
143
366
|
</mrow>
|
144
367
|
</msup>
|
145
368
|
</mrow>
|
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
|
-
|
369
|
+
</math>
|
370
|
+
OUTPUT
|
371
|
+
end
|
372
|
+
|
373
|
+
it "deals with notational variants" do
|
374
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
375
|
+
9 "unitsml(degK)" + 10 "unitsml(K)"
|
376
|
+
INPUT
|
377
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
378
|
+
<mn>9</mn>
|
379
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
380
|
+
<mrow xref='U_NISTu5'>
|
381
|
+
<mi mathvariant='normal'>°K</mi>
|
382
|
+
</mrow>
|
383
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu5' dimensionURL='#NISTd5'>
|
384
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
385
|
+
<UnitName xml:lang='en'>kelvin</UnitName>
|
386
|
+
<UnitSymbol type='HTML'>K</UnitSymbol>
|
387
|
+
<UnitSymbol type='MathML'>
|
388
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
389
|
+
<mrow>
|
390
|
+
<mi mathvariant='normal'>K</mi>
|
391
|
+
</mrow>
|
392
|
+
</math>
|
393
|
+
</UnitSymbol>
|
394
|
+
</Unit>
|
395
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd5'>
|
396
|
+
<ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
|
397
|
+
</Dimension>
|
398
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq5' dimensionURL='#NISTd5' quantityType='base'>
|
399
|
+
<QuantityName xml:lang='en-US'>thermodynamic temperature</QuantityName>
|
400
|
+
</Quantity>
|
401
|
+
<mo>+</mo>
|
402
|
+
<mn>10</mn>
|
403
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
404
|
+
<mrow xref='U_NISTu5'>
|
405
|
+
<mi mathvariant='normal'>K</mi>
|
406
|
+
</mrow>
|
407
|
+
</math>
|
408
|
+
OUTPUT
|
409
|
+
end
|
410
|
+
|
411
|
+
it "deals with prefixed units" do
|
412
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
413
|
+
9 "unitsml(mbar)"
|
414
|
+
INPUT
|
415
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
416
|
+
<mn>9</mn>
|
417
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
418
|
+
<mrow xref='U_NISTu362'>
|
419
|
+
<mi mathvariant='normal'>mbar</mi>
|
420
|
+
</mrow>
|
421
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu362'>
|
422
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
423
|
+
<UnitName xml:lang='en'>millibar</UnitName>
|
424
|
+
<UnitSymbol type='HTML'>mbar</UnitSymbol>
|
425
|
+
<UnitSymbol type='MathML'>
|
426
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
427
|
+
<mrow>
|
428
|
+
<mi mathvariant='normal'>mbar</mi>
|
429
|
+
</mrow>
|
430
|
+
</math>
|
431
|
+
</UnitSymbol>
|
432
|
+
<RootUnits>
|
433
|
+
<EnumeratedRootUnit unit='bar' prefix='m'/>
|
434
|
+
</RootUnits>
|
435
|
+
</Unit>
|
436
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
437
|
+
<PrefixName xml:lang='en'>milli</PrefixName>
|
438
|
+
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
439
|
+
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
440
|
+
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
441
|
+
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
442
|
+
</Prefix>
|
443
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd14'>
|
444
|
+
<Length symbol='L' powerNumerator='-1'/>
|
445
|
+
<Mass symbol='M' powerNumerator='1'/>
|
446
|
+
<Time symbol='T' powerNumerator='-2'/>
|
447
|
+
</Dimension>
|
448
|
+
</math>
|
449
|
+
OUTPUT
|
450
|
+
end
|
451
|
+
|
452
|
+
it "deals with standalone prefixes" do
|
453
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
454
|
+
"unitsml(p-)" "unitsml(da-)"
|
455
|
+
INPUT
|
456
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
457
|
+
<mrow xref='NISTp10_-12'>
|
458
|
+
<mi mathvariant='normal'>p</mi>
|
459
|
+
</mrow>
|
460
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-12' xml:id='NISTp10_-12'>
|
461
|
+
<PrefixName xml:lang='en'>pico</PrefixName>
|
462
|
+
<PrefixSymbol type='ASCII'>p</PrefixSymbol>
|
463
|
+
<PrefixSymbol type='unicode'>p</PrefixSymbol>
|
464
|
+
<PrefixSymbol type='LaTeX'>p</PrefixSymbol>
|
465
|
+
<PrefixSymbol type='HTML'>p</PrefixSymbol>
|
466
|
+
</Prefix>
|
467
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
468
|
+
<mrow xref='NISTp10_1'>
|
469
|
+
<mi mathvariant='normal'>da</mi>
|
470
|
+
</mrow>
|
471
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='1' xml:id='NISTp10_1'>
|
472
|
+
<PrefixName xml:lang='en'>deka</PrefixName>
|
473
|
+
<PrefixSymbol type='ASCII'>da</PrefixSymbol>
|
474
|
+
<PrefixSymbol type='unicode'>da</PrefixSymbol>
|
475
|
+
<PrefixSymbol type='LaTeX'>da</PrefixSymbol>
|
476
|
+
<PrefixSymbol type='HTML'>da</PrefixSymbol>
|
477
|
+
</Prefix>
|
478
|
+
</math>
|
479
|
+
OUTPUT
|
480
|
+
end
|
481
|
+
|
482
|
+
it "deals with HTML entities in UnitsDB" do
|
483
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
484
|
+
"unitsml(u-)" + "unitsml(um)"
|
485
|
+
INPUT
|
486
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
487
|
+
<mrow xref='NISTp10_-6'>
|
488
|
+
<mi mathvariant='normal'>µ</mi>
|
489
|
+
</mrow>
|
490
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-6' xml:id='NISTp10_-6'>
|
491
|
+
<PrefixName xml:lang='en'>micro</PrefixName>
|
492
|
+
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
493
|
+
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
494
|
+
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
495
|
+
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
496
|
+
</Prefix>
|
497
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd2'>
|
498
|
+
<Mass symbol='M' powerNumerator='1'/>
|
499
|
+
</Dimension>
|
500
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
501
|
+
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
502
|
+
</Quantity>
|
503
|
+
<mo>+</mo>
|
504
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
505
|
+
<mrow xref='U_um'>
|
506
|
+
<mi mathvariant='normal'>µm</mi>
|
507
|
+
</mrow>
|
508
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_um' dimensionURL='#NISTd1'>
|
509
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
510
|
+
<UnitName xml:lang='en'>um</UnitName>
|
511
|
+
<UnitSymbol type='HTML'>um</UnitSymbol>
|
512
|
+
<UnitSymbol type='MathML'>
|
513
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
514
|
+
<mrow>
|
515
|
+
<mi mathvariant='normal'>µm</mi>
|
516
|
+
</mrow>
|
517
|
+
</math>
|
518
|
+
</UnitSymbol>
|
519
|
+
<RootUnits>
|
520
|
+
<EnumeratedRootUnit unit='meter' prefix='u'/>
|
521
|
+
</RootUnits>
|
522
|
+
</Unit>
|
523
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
524
|
+
<Length symbol='L' powerNumerator='1'/>
|
525
|
+
</Dimension>
|
526
|
+
</math>
|
527
|
+
OUTPUT
|
528
|
+
end
|
529
|
+
|
530
|
+
it "deals with units division" do
|
531
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
532
|
+
9 "unitsml(A*C^3)" + 13 "unitsml(A/C^-3)"
|
533
|
+
INPUT
|
534
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
180
535
|
<mn>9</mn>
|
181
536
|
<mo rspace='thickmathspace'>⁢</mo>
|
182
|
-
<mrow xref='
|
537
|
+
<mrow xref='U_A.C3'>
|
538
|
+
<mi mathvariant='normal'>A</mi>
|
539
|
+
<mo>·</mo>
|
183
540
|
<msup>
|
184
541
|
<mrow>
|
185
542
|
<mi mathvariant='normal'>C</mi>
|
@@ -188,20 +545,19 @@ RSpec.describe Asciimath2UnitsML do
|
|
188
545
|
<mn>3</mn>
|
189
546
|
</mrow>
|
190
547
|
</msup>
|
191
|
-
<mo>·</mo>
|
192
|
-
<mi mathvariant='normal'>A</mi>
|
193
548
|
</mrow>
|
194
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='
|
549
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_A.C3' dimensionURL='#D_M3I4'>
|
195
550
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
196
|
-
<UnitName xml:lang='en'>C^3
|
551
|
+
<UnitName xml:lang='en'>A*C^3</UnitName>
|
197
552
|
<UnitSymbol type='HTML'>
|
198
|
-
C
|
553
|
+
A·C
|
199
554
|
<sup>3</sup>
|
200
|
-
·A
|
201
555
|
</UnitSymbol>
|
202
556
|
<UnitSymbol type='MathML'>
|
203
557
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
204
558
|
<mrow>
|
559
|
+
<mi mathvariant='normal'>A</mi>
|
560
|
+
<mo>·</mo>
|
205
561
|
<msup>
|
206
562
|
<mrow>
|
207
563
|
<mi mathvariant='normal'>C</mi>
|
@@ -210,40 +566,108 @@ RSpec.describe Asciimath2UnitsML do
|
|
210
566
|
<mn>3</mn>
|
211
567
|
</mrow>
|
212
568
|
</msup>
|
213
|
-
<mo>·</mo>
|
214
|
-
<mi mathvariant='normal'>A</mi>
|
215
569
|
</mrow>
|
216
570
|
</math>
|
217
571
|
</UnitSymbol>
|
218
572
|
<RootUnits>
|
219
|
-
<EnumeratedRootUnit unit='coulomb' powerNumerator='3'/>
|
220
573
|
<EnumeratedRootUnit unit='ampere'/>
|
574
|
+
<EnumeratedRootUnit unit='coulomb' powerNumerator='3'/>
|
221
575
|
</RootUnits>
|
222
576
|
</Unit>
|
223
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
224
|
-
<
|
577
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_M3I4'>
|
578
|
+
<Mass symbol='M' powerNumerator='3'/>
|
225
579
|
<ElectricCurrent symbol='I' powerNumerator='4'/>
|
226
580
|
</Dimension>
|
227
581
|
<mo>+</mo>
|
228
|
-
<mn>
|
582
|
+
<mn>13</mn>
|
229
583
|
<mo rspace='thickmathspace'>⁢</mo>
|
230
|
-
<mrow xref='
|
231
|
-
<mi mathvariant='normal'>
|
584
|
+
<mrow xref='U_A/C-3'>
|
585
|
+
<mi mathvariant='normal'>A</mi>
|
586
|
+
<mo>/</mo>
|
587
|
+
<msup>
|
588
|
+
<mrow>
|
589
|
+
<mi mathvariant='normal'>C</mi>
|
590
|
+
</mrow>
|
591
|
+
<mrow>
|
592
|
+
<mo>−</mo>
|
593
|
+
<mn>3</mn>
|
594
|
+
</mrow>
|
595
|
+
</msup>
|
232
596
|
</mrow>
|
233
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu284'>
|
234
|
-
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
235
|
-
<UnitName xml:lang='en'>horsepower</UnitName>
|
236
|
-
<UnitSymbol type='HTML'>hp</UnitSymbol>
|
237
|
-
<UnitSymbol type='MathML'>
|
238
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
239
|
-
<mrow>
|
240
|
-
<mi mathvariant='normal'>hp</mi>
|
241
|
-
</mrow>
|
242
|
-
</math>
|
243
|
-
</UnitSymbol>
|
244
|
-
</Unit>
|
245
597
|
</math>
|
246
|
-
|
598
|
+
OUTPUT
|
599
|
+
end
|
600
|
+
|
601
|
+
it "converts MathML to MatML + UnitsML" do
|
602
|
+
input = <<~INPUT
|
603
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
604
|
+
<mn>32</mn>
|
605
|
+
<mo>+</mo>
|
606
|
+
<mn>5</mn>
|
607
|
+
<mo>×</mo>
|
608
|
+
<mn>7</mn>
|
609
|
+
<mtext>unitsml(kg^-2)</mtext>
|
610
|
+
</math>
|
611
|
+
INPUT
|
612
|
+
output = <<~OUTPUT
|
613
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
614
|
+
<mn>32</mn>
|
615
|
+
<mo>+</mo>
|
616
|
+
<mn>5</mn>
|
617
|
+
<mo>×</mo>
|
618
|
+
<mn>7</mn>
|
619
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
620
|
+
<mrow xref='U_kg-2'>
|
621
|
+
<msup>
|
622
|
+
<mrow>
|
623
|
+
<mi mathvariant='normal'>kg</mi>
|
624
|
+
</mrow>
|
625
|
+
<mrow>
|
626
|
+
<mo>−</mo>
|
627
|
+
<mn>2</mn>
|
628
|
+
</mrow>
|
629
|
+
</msup>
|
630
|
+
</mrow>
|
631
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg-2' dimensionURL='#D_M-2'>
|
632
|
+
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
633
|
+
<UnitName xml:lang='en'>kg^-2</UnitName>
|
634
|
+
<UnitSymbol type='HTML'>
|
635
|
+
kg
|
636
|
+
<sup>−2</sup>
|
637
|
+
</UnitSymbol>
|
638
|
+
<UnitSymbol type='MathML'>
|
639
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
640
|
+
<mrow>
|
641
|
+
<msup>
|
642
|
+
<mrow>
|
643
|
+
<mi mathvariant='normal'>kg</mi>
|
644
|
+
</mrow>
|
645
|
+
<mrow>
|
646
|
+
<mo>−</mo>
|
647
|
+
<mn>2</mn>
|
648
|
+
</mrow>
|
649
|
+
</msup>
|
650
|
+
</mrow>
|
651
|
+
</math>
|
652
|
+
</UnitSymbol>
|
653
|
+
<RootUnits>
|
654
|
+
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-2'/>
|
655
|
+
</RootUnits>
|
656
|
+
</Unit>
|
657
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
658
|
+
<PrefixName xml:lang='en'>kilo</PrefixName>
|
659
|
+
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
660
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
661
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
662
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
663
|
+
</Prefix>
|
664
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_M-2'>
|
665
|
+
<Mass symbol='M' powerNumerator='-2'/>
|
666
|
+
</Dimension>
|
667
|
+
</math>
|
668
|
+
OUTPUT
|
669
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().MathML2UnitsML(input).to_xml)).to be_equivalent_to xmlpp(output)
|
670
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().MathML2UnitsML(Nokogiri::XML(input)).to_xml)).to be_equivalent_to xmlpp(output)
|
247
671
|
end
|
248
672
|
|
249
673
|
it "raises error for illegal unit" do
|
@@ -272,7 +696,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
272
696
|
</mrow>
|
273
697
|
</msup>
|
274
698
|
</mrow>
|
275
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#
|
699
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
276
700
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
277
701
|
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
278
702
|
<UnitSymbol type='HTML'>
|
@@ -304,8 +728,11 @@ RSpec.describe Asciimath2UnitsML do
|
|
304
728
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
305
729
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
306
730
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
731
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
732
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
733
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
307
734
|
</Prefix>
|
308
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
735
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
309
736
|
<Mass symbol='M' powerNumerator='1'/>
|
310
737
|
<Time symbol='T' powerNumerator='-2'/>
|
311
738
|
</Dimension>
|
@@ -330,7 +757,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
330
757
|
</mrow>
|
331
758
|
</msup>
|
332
759
|
</mrow>
|
333
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#
|
760
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
334
761
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
335
762
|
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
336
763
|
<UnitSymbol type='HTML'>
|
@@ -362,8 +789,11 @@ RSpec.describe Asciimath2UnitsML do
|
|
362
789
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
363
790
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
364
791
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
792
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
793
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
794
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
365
795
|
</Prefix>
|
366
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
796
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
367
797
|
<Mass symbol='M' powerNumerator='1'/>
|
368
798
|
<Time symbol='T' powerNumerator='-2'/>
|
369
799
|
</Dimension>
|
@@ -388,7 +818,7 @@ RSpec.describe Asciimath2UnitsML do
|
|
388
818
|
</mrow>
|
389
819
|
</msup>
|
390
820
|
</mrow>
|
391
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#
|
821
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
392
822
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
393
823
|
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
394
824
|
<UnitSymbol type='HTML'>
|
@@ -420,12 +850,283 @@ RSpec.describe Asciimath2UnitsML do
|
|
420
850
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
421
851
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
422
852
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
853
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
854
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
855
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
423
856
|
</Prefix>
|
424
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
857
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
425
858
|
<Mass symbol='M' powerNumerator='1'/>
|
426
859
|
<Time symbol='T' powerNumerator='-2'/>
|
427
860
|
</Dimension>
|
428
861
|
</math>
|
429
862
|
OUTPUT
|
430
863
|
end
|
864
|
+
|
865
|
+
it "deals with dimension decomposition with like units" do
|
866
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
867
|
+
9 "unitsml(mW*cm^(-2))"
|
868
|
+
INPUT
|
869
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
870
|
+
<mn>9</mn>
|
871
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
872
|
+
<mrow xref='U_mW.cm-2'>
|
873
|
+
<mi mathvariant='normal'>mW</mi>
|
874
|
+
<mo>·</mo>
|
875
|
+
<msup>
|
876
|
+
<mrow>
|
877
|
+
<mi mathvariant='normal'>cm</mi>
|
878
|
+
</mrow>
|
879
|
+
<mrow>
|
880
|
+
<mo>−</mo>
|
881
|
+
<mn>2</mn>
|
882
|
+
</mrow>
|
883
|
+
</msup>
|
884
|
+
</mrow>
|
885
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_mW.cm-2'>
|
886
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
887
|
+
<UnitName xml:lang='en'>mW*cm^-2</UnitName>
|
888
|
+
<UnitSymbol type='HTML'>
|
889
|
+
mW·cm
|
890
|
+
<sup>−2</sup>
|
891
|
+
</UnitSymbol>
|
892
|
+
<UnitSymbol type='MathML'>
|
893
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
894
|
+
<mrow>
|
895
|
+
<mi mathvariant='normal'>mW</mi>
|
896
|
+
<mo>·</mo>
|
897
|
+
<msup>
|
898
|
+
<mrow>
|
899
|
+
<mi mathvariant='normal'>cm</mi>
|
900
|
+
</mrow>
|
901
|
+
<mrow>
|
902
|
+
<mo>−</mo>
|
903
|
+
<mn>2</mn>
|
904
|
+
</mrow>
|
905
|
+
</msup>
|
906
|
+
</mrow>
|
907
|
+
</math>
|
908
|
+
</UnitSymbol>
|
909
|
+
<RootUnits>
|
910
|
+
<EnumeratedRootUnit unit='watt' prefix='m'/>
|
911
|
+
<EnumeratedRootUnit unit='meter' prefix='c' powerNumerator='-2'/>
|
912
|
+
</RootUnits>
|
913
|
+
</Unit>
|
914
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
915
|
+
<PrefixName xml:lang='en'>milli</PrefixName>
|
916
|
+
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
917
|
+
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
918
|
+
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
919
|
+
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
920
|
+
</Prefix>
|
921
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
922
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
923
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
924
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
925
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
926
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
927
|
+
</Prefix>
|
928
|
+
</math>
|
929
|
+
OUTPUT
|
930
|
+
end
|
931
|
+
|
932
|
+
it "deals with quantity input" do
|
933
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
934
|
+
9 "unitsml(m, quantity: NISTq103)"
|
935
|
+
INPUT
|
936
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
937
|
+
<mn>9</mn>
|
938
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
939
|
+
<mrow xref='U_NISTu1'>
|
940
|
+
<mi mathvariant='normal'>m</mi>
|
941
|
+
</mrow>
|
942
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
943
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
944
|
+
<UnitName xml:lang='en'>meter</UnitName>
|
945
|
+
<UnitSymbol type='HTML'>m</UnitSymbol>
|
946
|
+
<UnitSymbol type='MathML'>
|
947
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
948
|
+
<mrow>
|
949
|
+
<mi mathvariant='normal'>m</mi>
|
950
|
+
</mrow>
|
951
|
+
</math>
|
952
|
+
</UnitSymbol>
|
953
|
+
</Unit>
|
954
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
955
|
+
<Length symbol='L' powerNumerator='1'/>
|
956
|
+
</Dimension>
|
957
|
+
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq103' dimensionURL='#NISTd1' quantityType='base'>
|
958
|
+
<QuantityName xml:lang='en-US'>position vector</QuantityName>
|
959
|
+
</Quantity>
|
960
|
+
</math>
|
961
|
+
OUTPUT
|
962
|
+
end
|
963
|
+
|
964
|
+
it "deals with name input" do
|
965
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
966
|
+
9 "unitsml(cal_th/cm^2, name: langley)"
|
967
|
+
INPUT
|
968
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
969
|
+
<mn>9</mn>
|
970
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
971
|
+
<mrow xref='U_cal_th/cm2'>
|
972
|
+
<msub>
|
973
|
+
<mrow>
|
974
|
+
<mi mathvariant='normal'>cal</mi>
|
975
|
+
</mrow>
|
976
|
+
<mrow>
|
977
|
+
<mi mathvariant='normal'>th</mi>
|
978
|
+
</mrow>
|
979
|
+
</msub>
|
980
|
+
<mo>/</mo>
|
981
|
+
<msup>
|
982
|
+
<mrow>
|
983
|
+
<mi mathvariant='normal'>cm</mi>
|
984
|
+
</mrow>
|
985
|
+
<mrow>
|
986
|
+
<mn>2</mn>
|
987
|
+
</mrow>
|
988
|
+
</msup>
|
989
|
+
</mrow>
|
990
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_cal_th.cm-2'>
|
991
|
+
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
992
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
993
|
+
<UnitName xml:lang='en'>langley</UnitName>
|
994
|
+
<UnitSymbol type='HTML'>
|
995
|
+
cal
|
996
|
+
<sub>th</sub>
|
997
|
+
·cm
|
998
|
+
<sup>−2</sup>
|
999
|
+
</UnitSymbol>
|
1000
|
+
<UnitSymbol type='MathML'>
|
1001
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1002
|
+
<mrow>
|
1003
|
+
<msub>
|
1004
|
+
<mrow>
|
1005
|
+
<mi mathvariant='normal'>cal</mi>
|
1006
|
+
</mrow>
|
1007
|
+
<mrow>
|
1008
|
+
<mi mathvariant='normal'>th</mi>
|
1009
|
+
</mrow>
|
1010
|
+
</msub>
|
1011
|
+
<mo>·</mo>
|
1012
|
+
<msup>
|
1013
|
+
<mrow>
|
1014
|
+
<mi mathvariant='normal'>cm</mi>
|
1015
|
+
</mrow>
|
1016
|
+
<mrow>
|
1017
|
+
<mo>−</mo>
|
1018
|
+
<mn>2</mn>
|
1019
|
+
</mrow>
|
1020
|
+
</msup>
|
1021
|
+
</mrow>
|
1022
|
+
</math>
|
1023
|
+
</UnitSymbol>
|
1024
|
+
<RootUnits>
|
1025
|
+
<EnumeratedRootUnit unit='thermochemical calorie'/>
|
1026
|
+
<EnumeratedRootUnit unit='meter' prefix='c' powerNumerator='-2'/>
|
1027
|
+
</RootUnits>
|
1028
|
+
</Unit>
|
1029
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1030
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1031
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1032
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1033
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1034
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1035
|
+
</Prefix>
|
1036
|
+
</math>
|
1037
|
+
OUTPUT
|
1038
|
+
end
|
1039
|
+
|
1040
|
+
it "deals with symbol input" do
|
1041
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new().Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
1042
|
+
9 "unitsml(m, symbol: La)" + 10 "unitsml(cm*s^-2, symbol: cm cdot s^-2)"
|
1043
|
+
INPUT
|
1044
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1045
|
+
<mn>9</mn>
|
1046
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1047
|
+
<mrow xref='U_NISTu1'>
|
1048
|
+
<math>
|
1049
|
+
<mi mathvariant='normal'>L</mi>
|
1050
|
+
<mi mathvariant='normal'>a</mi>
|
1051
|
+
</math>
|
1052
|
+
</mrow>
|
1053
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
1054
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1055
|
+
<UnitName xml:lang='en'>meter</UnitName>
|
1056
|
+
<UnitSymbol type='HTML'>m</UnitSymbol>
|
1057
|
+
<UnitSymbol type='MathML'>
|
1058
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1059
|
+
<mrow>
|
1060
|
+
<mi mathvariant='normal'>m</mi>
|
1061
|
+
</mrow>
|
1062
|
+
</math>
|
1063
|
+
</UnitSymbol>
|
1064
|
+
</Unit>
|
1065
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
1066
|
+
<Length symbol='L' powerNumerator='1'/>
|
1067
|
+
</Dimension>
|
1068
|
+
<mo>+</mo>
|
1069
|
+
<mn>10</mn>
|
1070
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1071
|
+
<mrow xref='U_cm.s-2'>
|
1072
|
+
<math>
|
1073
|
+
<mi mathvariant='normal'>c</mi>
|
1074
|
+
<mi mathvariant='normal'>m</mi>
|
1075
|
+
<mo>⋅</mo>
|
1076
|
+
<msup>
|
1077
|
+
<mrow>
|
1078
|
+
<mi mathvariant='normal'>s</mi>
|
1079
|
+
</mrow>
|
1080
|
+
<mrow>
|
1081
|
+
<mo>−</mo>
|
1082
|
+
</mrow>
|
1083
|
+
</msup>
|
1084
|
+
<mn>2</mn>
|
1085
|
+
</math>
|
1086
|
+
</mrow>
|
1087
|
+
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_cm.s-2' dimensionURL='#NISTd28'>
|
1088
|
+
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1089
|
+
<UnitName xml:lang='en'>cm*s^-2</UnitName>
|
1090
|
+
<UnitSymbol type='HTML'>
|
1091
|
+
cm·s
|
1092
|
+
<sup>−2</sup>
|
1093
|
+
</UnitSymbol>
|
1094
|
+
<UnitSymbol type='MathML'>
|
1095
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1096
|
+
<mrow>
|
1097
|
+
<mi mathvariant='normal'>cm</mi>
|
1098
|
+
<mo>·</mo>
|
1099
|
+
<msup>
|
1100
|
+
<mrow>
|
1101
|
+
<mi mathvariant='normal'>s</mi>
|
1102
|
+
</mrow>
|
1103
|
+
<mrow>
|
1104
|
+
<mo>−</mo>
|
1105
|
+
<mn>2</mn>
|
1106
|
+
</mrow>
|
1107
|
+
</msup>
|
1108
|
+
</mrow>
|
1109
|
+
</math>
|
1110
|
+
</UnitSymbol>
|
1111
|
+
<RootUnits>
|
1112
|
+
<EnumeratedRootUnit unit='meter' prefix='c'/>
|
1113
|
+
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1114
|
+
</RootUnits>
|
1115
|
+
</Unit>
|
1116
|
+
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1117
|
+
<PrefixName xml:lang='en'>centi</PrefixName>
|
1118
|
+
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1119
|
+
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1120
|
+
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1121
|
+
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1122
|
+
</Prefix>
|
1123
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd28'>
|
1124
|
+
<Length symbol='L' powerNumerator='1'/>
|
1125
|
+
<Time symbol='T' powerNumerator='-2'/>
|
1126
|
+
</Dimension>
|
1127
|
+
</math>
|
1128
|
+
OUTPUT
|
1129
|
+
end
|
1130
|
+
|
1131
|
+
|
431
1132
|
end
|