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