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