asciimath2unitsml 0.1.2 → 0.2.3
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 -6
- data/asciimath2unitsml.gemspec +24 -2
- data/lib/asciimath2unitsml.rb +1 -0
- data/lib/asciimath2unitsml/conv.rb +117 -139
- data/lib/asciimath2unitsml/parse.rb +147 -35
- 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 +10077 -1715
- data/lib/unitsdb_ruby/unitsdb.rb +164 -0
- data/spec/conv_spec.rb +732 -97
- metadata +23 -2
|
@@ -0,0 +1,164 @@
|
|
|
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
|
+
@prefixed = (hash[:prefixed] == true)
|
|
139
|
+
rescue
|
|
140
|
+
raise StandardError.new "Parse fail on Unit #{id}: #{hash}"
|
|
141
|
+
end
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def system_name
|
|
145
|
+
@unit_system[:name]
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def system_type
|
|
149
|
+
@unit_system[:type]
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def name
|
|
153
|
+
@names.first
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def symbolid
|
|
157
|
+
@symbols ? @symbols.first[:id] : @short
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def symbolids
|
|
161
|
+
@symbols ? @symbols.map { |s| s[:id] } : [ @short ]
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
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,36 @@ 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
|
|
247
599
|
end
|
|
248
600
|
|
|
249
601
|
it "converts MathML to MatML + UnitsML" do
|
|
@@ -298,10 +650,16 @@ RSpec.describe Asciimath2UnitsML do
|
|
|
298
650
|
</mrow>
|
|
299
651
|
</math>
|
|
300
652
|
</UnitSymbol>
|
|
653
|
+
<RootUnits>
|
|
654
|
+
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-2'/>
|
|
655
|
+
</RootUnits>
|
|
301
656
|
</Unit>
|
|
302
657
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
|
303
658
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
|
304
659
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
|
660
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
|
661
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
|
662
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
|
305
663
|
</Prefix>
|
|
306
664
|
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_M-2'>
|
|
307
665
|
<Mass symbol='M' powerNumerator='-2'/>
|
|
@@ -338,7 +696,7 @@ OUTPUT
|
|
|
338
696
|
</mrow>
|
|
339
697
|
</msup>
|
|
340
698
|
</mrow>
|
|
341
|
-
<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'>
|
|
342
700
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
|
343
701
|
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
|
344
702
|
<UnitSymbol type='HTML'>
|
|
@@ -370,8 +728,11 @@ OUTPUT
|
|
|
370
728
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
|
371
729
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
|
372
730
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
|
731
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
|
732
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
|
733
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
|
373
734
|
</Prefix>
|
|
374
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
|
735
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
|
375
736
|
<Mass symbol='M' powerNumerator='1'/>
|
|
376
737
|
<Time symbol='T' powerNumerator='-2'/>
|
|
377
738
|
</Dimension>
|
|
@@ -396,7 +757,7 @@ OUTPUT
|
|
|
396
757
|
</mrow>
|
|
397
758
|
</msup>
|
|
398
759
|
</mrow>
|
|
399
|
-
<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'>
|
|
400
761
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
|
401
762
|
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
|
402
763
|
<UnitSymbol type='HTML'>
|
|
@@ -428,8 +789,11 @@ OUTPUT
|
|
|
428
789
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
|
429
790
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
|
430
791
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
|
792
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
|
793
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
|
794
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
|
431
795
|
</Prefix>
|
|
432
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
|
796
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
|
433
797
|
<Mass symbol='M' powerNumerator='1'/>
|
|
434
798
|
<Time symbol='T' powerNumerator='-2'/>
|
|
435
799
|
</Dimension>
|
|
@@ -454,7 +818,7 @@ OUTPUT
|
|
|
454
818
|
</mrow>
|
|
455
819
|
</msup>
|
|
456
820
|
</mrow>
|
|
457
|
-
<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'>
|
|
458
822
|
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
|
459
823
|
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
|
460
824
|
<UnitSymbol type='HTML'>
|
|
@@ -486,12 +850,283 @@ OUTPUT
|
|
|
486
850
|
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
|
487
851
|
<PrefixName xml:lang='en'>kilo</PrefixName>
|
|
488
852
|
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
|
853
|
+
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
|
854
|
+
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
|
855
|
+
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
|
489
856
|
</Prefix>
|
|
490
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='
|
|
857
|
+
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
|
491
858
|
<Mass symbol='M' powerNumerator='1'/>
|
|
492
859
|
<Time symbol='T' powerNumerator='-2'/>
|
|
493
860
|
</Dimension>
|
|
494
861
|
</math>
|
|
495
862
|
OUTPUT
|
|
496
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
|
+
|
|
497
1132
|
end
|