asciimath2unitsml 0.2.4 → 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.
- checksums.yaml +4 -4
- data/.github/workflows/rake.yml +2 -23
- data/.gitignore +1 -0
- data/.hound.yml +5 -0
- data/.rubocop.yml +10 -0
- data/Gemfile +1 -1
- data/README.adoc +4 -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 +91 -61
- data/lib/asciimath2unitsml/parse.rb +74 -85
- data/lib/asciimath2unitsml/render.rb +24 -17
- data/lib/asciimath2unitsml/unit.rb +21 -17
- data/lib/asciimath2unitsml/validate.rb +57 -0
- data/lib/asciimath2unitsml/version.rb +1 -1
- data/lib/unitsdb_ruby/unitsdb.rb +21 -11
- data/spec/conv_spec.rb +1250 -986
- data/spec/spec_helper.rb +10 -10
- metadata +26 -22
@@ -7,7 +7,8 @@ module Asciimath2UnitsML
|
|
7
7
|
when :nospace
|
8
8
|
{ html: "", mathml: "<mo>⁢</mo>" }
|
9
9
|
else
|
10
|
-
{ html: HTMLEntities.new.encode(x),
|
10
|
+
{ html: HTMLEntities.new.encode(x),
|
11
|
+
mathml: "<mo>#{HTMLEntities.new.encode(x)}</mo>" }
|
11
12
|
end
|
12
13
|
end
|
13
14
|
|
@@ -15,18 +16,21 @@ module Asciimath2UnitsML
|
|
15
16
|
@symbols[unit][style] || unit
|
16
17
|
end
|
17
18
|
|
18
|
-
def htmlent(
|
19
|
-
HTMLEntities.new.decode(
|
20
|
-
|
19
|
+
def htmlent(xml)
|
20
|
+
HTMLEntities.new.decode(xml).split(/([<>&])/).map do |c|
|
21
|
+
/[<>'"]/.match?(c) ? c : HTMLEntities.new.encode(c, :hexadecimal)
|
22
|
+
end.join
|
21
23
|
end
|
22
24
|
|
23
25
|
def htmlsymbol(units, normalise)
|
24
26
|
units.map do |u|
|
25
|
-
if u[:multiplier]
|
27
|
+
if u[:multiplier]
|
28
|
+
u[:multiplier] == "*" ? @multiplier[:html] : u[:multiplier]
|
26
29
|
elsif u[:unit].nil? && u[:prefix]
|
27
30
|
@prefixes[u[:prefix]].html
|
28
31
|
else
|
29
|
-
base = (u[:prefix] || "") +
|
32
|
+
base = (u[:prefix] || "") +
|
33
|
+
render(normalise ? @units[u[:unit]].symbolid : u[:unit], :html)
|
30
34
|
htmlsymbol_exponent(u, base)
|
31
35
|
end
|
32
36
|
end.join("")
|
@@ -36,15 +40,17 @@ module Asciimath2UnitsML
|
|
36
40
|
if u[:display_exponent] == "0.5"
|
37
41
|
base = "√#{base}"
|
38
42
|
elsif u[:display_exponent]
|
39
|
-
exp = "<sup>#{u[:display_exponent].sub(/-/,
|
43
|
+
exp = "<sup>#{u[:display_exponent].sub(/-/, '−')}</sup>"
|
40
44
|
base += exp
|
41
45
|
end
|
42
46
|
base
|
43
47
|
end
|
44
48
|
|
45
|
-
def mathmlsymbol(units, normalise)
|
46
|
-
|
47
|
-
|
49
|
+
def mathmlsymbol(units, normalise, multiplier = nil)
|
50
|
+
multiplier = multiplier ? "<mo>#{multiplier}</mo>" : @multiplier[:mathml]
|
51
|
+
units.map do |u|
|
52
|
+
if u[:multiplier]
|
53
|
+
u[:multiplier] == "*" ? multiplier : "<mo>#{u[:multiplier]}</mo>"
|
48
54
|
elsif u[:unit].nil? && u[:prefix]
|
49
55
|
%(<mi mathvariant='normal'>#{htmlent(@prefixes[u[:prefix]].html)}</mi>)
|
50
56
|
else
|
@@ -64,20 +70,21 @@ module Asciimath2UnitsML
|
|
64
70
|
mathmlsymbol_exponent(u, base)
|
65
71
|
end
|
66
72
|
|
67
|
-
def mathmlsymbol_exponent(
|
68
|
-
if
|
73
|
+
def mathmlsymbol_exponent(unit, base)
|
74
|
+
if unit[:display_exponent] == "0.5"
|
69
75
|
base = "<msqrt>#{base}</msqrt>"
|
70
|
-
elsif
|
71
|
-
exp = "<mn>#{
|
76
|
+
elsif unit[:display_exponent]
|
77
|
+
exp = "<mn>#{unit[:display_exponent]}</mn>"
|
78
|
+
.sub(/<mn>-/, "<mo>−</mo><mn>")
|
72
79
|
base = "<msup><mrow>#{base}</mrow><mrow>#{exp}</mrow></msup>"
|
73
80
|
end
|
74
81
|
base
|
75
82
|
end
|
76
83
|
|
77
84
|
def mathmlsymbolwrap(units, normalise)
|
78
|
-
<<~
|
79
|
-
|
80
|
-
|
85
|
+
<<~XML
|
86
|
+
<math xmlns='#{MATHML_NS}'><mrow>#{mathmlsymbol(units, normalise)}</mrow></math>
|
87
|
+
XML
|
81
88
|
end
|
82
89
|
end
|
83
90
|
end
|
@@ -12,16 +12,17 @@ module Asciimath2UnitsML
|
|
12
12
|
|
13
13
|
def unit(units, origtext, normtext, dims, name)
|
14
14
|
return if units_only(units).any? { |x| x[:unit].nil? }
|
15
|
+
|
15
16
|
dimid = dim_id(dims)
|
16
17
|
norm_units = normalise_units(units)
|
17
|
-
<<~
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
18
|
+
<<~XML
|
19
|
+
<Unit xmlns='#{UNITSML_NS}' xml:id='#{unit_id(normtext)}'#{dimid ? " dimensionURL='##{dimid}'" : ""}>
|
20
|
+
#{unitsystem(units)}
|
21
|
+
#{unitname(norm_units, normtext, name)}
|
22
|
+
#{unitsymbol(norm_units)}
|
23
|
+
#{rootunits(units)}
|
24
|
+
</Unit>
|
25
|
+
XML
|
25
26
|
end
|
26
27
|
|
27
28
|
def normalise_units(units)
|
@@ -36,6 +37,7 @@ module Asciimath2UnitsML
|
|
36
37
|
# kg exception
|
37
38
|
def unitsystem(units)
|
38
39
|
return if units_only(units).any? { |x| x[:unit].nil? }
|
40
|
+
|
39
41
|
ret = []
|
40
42
|
units = units_only(units)
|
41
43
|
units.any? { |x| @units[x[:unit]].system_name != "SI" } and
|
@@ -43,7 +45,7 @@ module Asciimath2UnitsML
|
|
43
45
|
if units.any? { |x| @units[x[:unit]].system_name == "SI" }
|
44
46
|
base = units.size == 1 && @units[units[0][:unit]].system_type == "SI-base"
|
45
47
|
base = true if units.size == 1 && units[0][:unit] == "g" && units[0][:prefix] == "k"
|
46
|
-
ret << "<UnitSystem name='SI' type='#{base ?
|
48
|
+
ret << "<UnitSystem name='SI' type='#{base ? 'SI_base' : 'SI_derived'}' xml:lang='en-US'/>"
|
47
49
|
end
|
48
50
|
ret.join("\n")
|
49
51
|
end
|
@@ -59,23 +61,25 @@ module Asciimath2UnitsML
|
|
59
61
|
end
|
60
62
|
|
61
63
|
def unitsymbol(units)
|
62
|
-
<<~
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
<<~XML
|
65
|
+
<UnitSymbol type="HTML">#{htmlsymbol(units, true)}</UnitSymbol>
|
66
|
+
<UnitSymbol type="MathML">#{mathmlsymbolwrap(units, true)}</UnitSymbol>
|
67
|
+
XML
|
66
68
|
end
|
67
69
|
|
68
70
|
def rootunits(units)
|
69
71
|
return if units_only(units).any? { |x| x[:unit].nil? }
|
70
72
|
return if units.size == 1 && !units[0][:prefix]
|
73
|
+
|
71
74
|
exp = units_only(units).map do |u|
|
72
75
|
prefix = " prefix='#{u[:prefix]}'" if u[:prefix]
|
73
|
-
|
76
|
+
u[:exponent] && u[:exponent] != "1" and
|
77
|
+
exponent = " powerNumerator='#{u[:exponent]}'"
|
74
78
|
"<EnumeratedRootUnit unit='#{@units[u[:unit]].name}'#{prefix}#{exponent}/>"
|
75
79
|
end.join("\n")
|
76
|
-
<<~
|
77
|
-
|
78
|
-
|
80
|
+
<<~XML
|
81
|
+
<RootUnits>#{exp}</RootUnits>
|
82
|
+
XML
|
79
83
|
end
|
80
84
|
end
|
81
85
|
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Asciimath2UnitsML
|
2
|
+
class Conv
|
3
|
+
def validate_yaml(hash, path)
|
4
|
+
return hash if path == "../unitsdb/quantities.yaml"
|
5
|
+
return hash if path == "../unitsdb/dimensions.yaml"
|
6
|
+
|
7
|
+
hash.each_with_object({}) do |(k, v), m|
|
8
|
+
path == "../unitsdb/units.yaml" and validate_unit(v)
|
9
|
+
m = validate_symbols(m, v)
|
10
|
+
v[:unit_symbols]&.each { |s| validate_unit_symbol_cardinality(s, k) }
|
11
|
+
end
|
12
|
+
hash
|
13
|
+
end
|
14
|
+
|
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
|
+
end
|
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
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def validate_symbols(m, v)
|
27
|
+
symbol = symbol_key(v)
|
28
|
+
!symbol.nil? or
|
29
|
+
raise StandardError.new "No symbol provided for unit: #{v}"
|
30
|
+
Array(symbol)&.each do |s|
|
31
|
+
m[s] && s != "1" and
|
32
|
+
raise StandardError.new "symbol #{s} is not unique in #{v}: "\
|
33
|
+
"already used for #{m[s]}"
|
34
|
+
m[s] = v
|
35
|
+
end
|
36
|
+
m
|
37
|
+
end
|
38
|
+
|
39
|
+
def validate_unit_symbol_cardinality(sym, k)
|
40
|
+
return true if sym.nil?
|
41
|
+
|
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
|
+
end
|
47
|
+
|
48
|
+
def symbol_key(v)
|
49
|
+
symbol = v[:unit_symbols]&.each_with_object([]) do |s, m|
|
50
|
+
m << (s["id"] || s[:id])
|
51
|
+
end || v.dig(:symbol, :ascii) || v[:symbol] #|| v[:short]
|
52
|
+
!symbol.nil? && v[:unit_symbols] && !symbol.is_a?(Array) and
|
53
|
+
symbol = [symbol]
|
54
|
+
symbol
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/unitsdb_ruby/unitsdb.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module UnitsDB
|
2
2
|
class Dimension
|
3
|
-
attr_reader :id, :length, :mass, :time, :electric_current,
|
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
|
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
|
17
|
-
|
18
|
-
hash[:
|
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}
|
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
|
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,
|
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 =
|
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
|
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] } : [
|
171
|
+
@symbols ? @symbols.map { |s| s[:id] } : [@short]
|
162
172
|
end
|
163
173
|
end
|
164
174
|
end
|
data/spec/conv_spec.rb
CHANGED
@@ -2,623 +2,731 @@ 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
|
6
|
-
|
5
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
6
|
+
1 "unitsml(mm*s^-2)"
|
7
7
|
INPUT
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
<mrow>
|
17
|
-
<mi mathvariant='normal'>s</mi>
|
18
|
-
</mrow>
|
19
|
-
<mrow>
|
20
|
-
<mo>−</mo>
|
21
|
-
<mn>2</mn>
|
22
|
-
</mrow>
|
23
|
-
</msup>
|
24
|
-
</mrow>
|
25
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_mm.s-2' dimensionURL='#NISTd28'>
|
26
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
27
|
-
<UnitName xml:lang='en'>mm*s^-2</UnitName>
|
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'>
|
8
|
+
<?xml version='1.0'?>
|
9
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
10
|
+
<mn>1</mn>
|
11
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
12
|
+
<mrow xref='U_mm.s-2'>
|
13
|
+
<mi mathvariant='normal'>mm</mi>
|
14
|
+
<mo>⋅</mo>
|
15
|
+
<msup>
|
34
16
|
<mrow>
|
35
|
-
<mi mathvariant='normal'>
|
36
|
-
<mo>·</mo>
|
37
|
-
<msup>
|
38
|
-
<mrow>
|
39
|
-
<mi mathvariant='normal'>s</mi>
|
40
|
-
</mrow>
|
41
|
-
<mrow>
|
42
|
-
<mo>−</mo>
|
43
|
-
<mn>2</mn>
|
44
|
-
</mrow>
|
45
|
-
</msup>
|
17
|
+
<mi mathvariant='normal'>s</mi>
|
46
18
|
</mrow>
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
</
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
19
|
+
<mrow>
|
20
|
+
<mo>−</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⋅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>
|
41
|
+
<mrow>
|
42
|
+
<mo>−</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
|
-
|
70
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
71
|
-
|
69
|
+
it "deals with non-Ascii units and prefixes" do
|
70
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
71
|
+
1 "unitsml(um)"
|
72
72
|
INPUT
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
<mi mathvariant='normal'>µm</mi>
|
79
|
-
</mrow>
|
80
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_um' dimensionURL='#NISTd1'>
|
81
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
82
|
-
<UnitName xml:lang='en'>um</UnitName>
|
83
|
-
<UnitSymbol type='HTML'>um</UnitSymbol>
|
84
|
-
<UnitSymbol type='MathML'>
|
85
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
86
|
-
<mrow>
|
73
|
+
<?xml version='1.0'?>
|
74
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
75
|
+
<mn>1</mn>
|
76
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
77
|
+
<mrow xref='U_um'>
|
87
78
|
<mi mathvariant='normal'>µ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'>µ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'>μ</PrefixSymbol>
|
99
|
+
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
100
|
+
<PrefixSymbol type='HTML'>µ</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
|
-
|
91
|
-
|
92
|
-
<EnumeratedRootUnit unit='meter' prefix='u'/>
|
93
|
-
</RootUnits>
|
94
|
-
</Unit>
|
95
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-6' xml:id='NISTp10_-6'>
|
96
|
-
<PrefixName xml:lang='en'>micro</PrefixName>
|
97
|
-
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
98
|
-
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
99
|
-
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
100
|
-
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
101
|
-
</Prefix>
|
102
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
103
|
-
<Length symbol='L' powerNumerator='1'/>
|
104
|
-
</Dimension>
|
105
|
-
</math>
|
106
|
-
OUTPUT
|
107
|
-
end
|
106
|
+
OUTPUT
|
107
|
+
end
|
108
108
|
|
109
109
|
it "does not insert space before non-alphabetic units" do
|
110
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
111
|
-
|
112
|
-
INPUT
|
113
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
114
|
-
<mn>1</mn>
|
115
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
116
|
-
<mrow xref='U_NISTu5'>
|
117
|
-
<mi mathvariant='normal'>°K</mi>
|
118
|
-
</mrow>
|
119
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu5' dimensionURL='#NISTd5'>
|
120
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
121
|
-
<UnitName xml:lang='en'>kelvin</UnitName>
|
122
|
-
<UnitSymbol type='HTML'>K</UnitSymbol>
|
123
|
-
<UnitSymbol type='MathML'>
|
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
|
124
113
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
125
|
-
<
|
126
|
-
|
114
|
+
<mn>1</mn>
|
115
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
116
|
+
<mrow xref='U_NISTu5'>
|
117
|
+
<mi mathvariant='normal'>°K</mi>
|
127
118
|
</mrow>
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
<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>⁢</mo>
|
140
|
+
<mrow xref='U_NISTu147'>
|
150
141
|
<mi mathvariant='normal'>′</mi>
|
151
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'>′</UnitSymbol>
|
147
|
+
<UnitSymbol type='MathML'>
|
148
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
149
|
+
<mrow>
|
150
|
+
<mi mathvariant='normal'>′</mi>
|
151
|
+
</mrow>
|
152
|
+
</math>
|
153
|
+
</UnitSymbol>
|
154
|
+
</Unit>
|
155
|
+
<Dimension xmlns='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>θ</mi>
|
165
|
+
</mstyle>
|
166
|
+
<mo>=</mo>
|
167
|
+
<mi>s</mi>
|
168
|
+
<mo>/</mo>
|
169
|
+
<mi>r</mi>
|
170
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
171
|
+
<mrow xref='U_NISTu9'>
|
172
|
+
<mi mathvariant='normal'>rad</mi>
|
173
|
+
</mrow>
|
174
|
+
<Unit xmlns='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'>⁢</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>
|
152
220
|
</math>
|
153
|
-
|
154
|
-
|
155
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd9'>
|
156
|
-
<PlaneAngle symbol='Phi' powerNumerator='1'/>
|
157
|
-
</Dimension>
|
158
|
-
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq9' dimensionURL='#NISTd9' quantityType='base'>
|
159
|
-
<QuantityName xml:lang='en-US'>plane angle</QuantityName>
|
160
|
-
<QuantityName xml:lang='en-US'>angle</QuantityName>
|
161
|
-
</Quantity>
|
162
|
-
</math>
|
163
|
-
OUTPUT
|
164
|
-
end
|
221
|
+
OUTPUT
|
222
|
+
end
|
165
223
|
|
166
224
|
it "does not insert space before operators" do
|
167
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
168
|
-
|
169
|
-
INPUT
|
170
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
<mi mathvariant='normal'>kg</mi>
|
175
|
-
</mrow>
|
176
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu2' dimensionURL='#NISTd2'>
|
177
|
-
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
178
|
-
<UnitName xml:lang='en'>kilogram</UnitName>
|
179
|
-
<UnitSymbol type='HTML'>kg</UnitSymbol>
|
180
|
-
<UnitSymbol type='MathML'>
|
181
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
182
|
-
<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'>⁢</mo>
|
231
|
+
<mrow xref='U_NISTu2'>
|
183
232
|
<mi mathvariant='normal'>kg</mi>
|
184
233
|
</mrow>
|
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
|
-
<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>⋅</mo>
|
263
|
+
<mrow xref='U_NISTu1'>
|
215
264
|
<mi mathvariant='normal'>m</mi>
|
216
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>
|
217
281
|
</math>
|
218
|
-
|
219
|
-
</Unit>
|
220
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
221
|
-
<Length symbol='L' powerNumerator='1'/>
|
222
|
-
</Dimension>
|
223
|
-
</math>
|
224
|
-
OUTPUT
|
282
|
+
OUTPUT
|
225
283
|
end
|
226
284
|
|
227
285
|
it "deals with sqrt units" do
|
228
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
229
|
-
|
286
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
287
|
+
1 "unitsml(sqrt(Hz))"
|
230
288
|
INPUT
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
<msqrt>
|
236
|
-
<mi mathvariant='normal'>Hz</mi>
|
237
|
-
</msqrt>
|
238
|
-
</mrow>
|
239
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_Hz0.5' dimensionURL='#D_T-0.5'>
|
240
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
241
|
-
<UnitName xml:lang='en'>Hz^0.5</UnitName>
|
242
|
-
<UnitSymbol type='HTML'>√Hz</UnitSymbol>
|
243
|
-
<UnitSymbol type='MathML'>
|
244
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
245
|
-
<mrow>
|
289
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
290
|
+
<mn>1</mn>
|
291
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
292
|
+
<mrow xref='U_sqrtHz'>
|
246
293
|
<msqrt>
|
247
294
|
<mi mathvariant='normal'>Hz</mi>
|
248
295
|
</msqrt>
|
249
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'>√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>
|
250
314
|
</math>
|
251
|
-
</UnitSymbol>
|
252
|
-
</Unit>
|
253
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_T-0.5'>
|
254
|
-
<Time symbol='T' powerNumerator='-0.5'/>
|
255
|
-
</Dimension>
|
256
|
-
</math>
|
257
315
|
OUTPUT
|
258
316
|
end
|
259
317
|
|
260
318
|
it "deals with kg and g" do
|
261
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
262
|
-
|
319
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
320
|
+
1 "unitsml(kg)" + 1 "unitsml(g)"
|
263
321
|
INPUT
|
264
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
265
|
-
<mn>1</mn>
|
266
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
267
|
-
<mrow xref='U_NISTu2'>
|
268
|
-
<mi mathvariant='normal'>kg</mi>
|
269
|
-
</mrow>
|
270
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu2' dimensionURL='#NISTd2'>
|
271
|
-
<UnitSystem name='SI' type='SI_base' xml:lang='en-US'/>
|
272
|
-
<UnitName xml:lang='en'>kilogram</UnitName>
|
273
|
-
<UnitSymbol type='HTML'>kg</UnitSymbol>
|
274
|
-
<UnitSymbol type='MathML'>
|
275
322
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
276
|
-
<
|
323
|
+
<mn>1</mn>
|
324
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
325
|
+
<mrow xref='U_NISTu2'>
|
277
326
|
<mi mathvariant='normal'>kg</mi>
|
278
327
|
</mrow>
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
</
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
303
|
-
|
304
|
-
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
<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'>⁢</mo>
|
359
|
+
<mrow xref='U_NISTu27'>
|
311
360
|
<mi mathvariant='normal'>g</mi>
|
312
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>
|
313
374
|
</math>
|
314
|
-
</UnitSymbol>
|
315
|
-
</Unit>
|
316
|
-
</math>
|
317
375
|
OUTPUT
|
318
376
|
end
|
319
377
|
|
320
378
|
it "deals with non-metric" do
|
321
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
322
|
-
|
379
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
380
|
+
1 "unitsml(hp)"
|
323
381
|
INPUT
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
<mi mathvariant='normal'>hp</mi>
|
329
|
-
</mrow>
|
330
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu284'>
|
331
|
-
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
332
|
-
<UnitName xml:lang='en'>horsepower</UnitName>
|
333
|
-
<UnitSymbol type='HTML'>hp</UnitSymbol>
|
334
|
-
<UnitSymbol type='MathML'>
|
335
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
336
|
-
<mrow>
|
382
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
383
|
+
<mn>1</mn>
|
384
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
385
|
+
<mrow xref='U_NISTu284'>
|
337
386
|
<mi mathvariant='normal'>hp</mi>
|
338
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>
|
339
408
|
</math>
|
340
|
-
</UnitSymbol>
|
341
|
-
</Unit>
|
342
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd16'>
|
343
|
-
<Length symbol='L' powerNumerator='2'/>
|
344
|
-
<Mass symbol='M' powerNumerator='1'/>
|
345
|
-
<Time symbol='T' powerNumerator='-3'/>
|
346
|
-
</Dimension>
|
347
|
-
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq20' dimensionURL='#NISTd16' quantityType='base'>
|
348
|
-
<QuantityName xml:lang='en-US'>power</QuantityName>
|
349
|
-
</Quantity>
|
350
|
-
</math>
|
351
409
|
OUTPUT
|
352
410
|
end
|
353
411
|
|
354
412
|
it "deals with duplicate units" do
|
355
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
356
|
-
|
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)"
|
357
415
|
INPUT
|
358
|
-
|
359
|
-
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
<mrow>
|
366
|
-
<mi mathvariant='normal'>s</mi>
|
367
|
-
</mrow>
|
368
|
-
<mrow>
|
369
|
-
<mo>−</mo>
|
370
|
-
<mn>2</mn>
|
371
|
-
</mrow>
|
372
|
-
</msup>
|
373
|
-
</mrow>
|
374
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
375
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
376
|
-
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
377
|
-
<UnitSymbol type='HTML'>
|
378
|
-
kg·s
|
379
|
-
<sup>−2</sup>
|
380
|
-
</UnitSymbol>
|
381
|
-
<UnitSymbol type='MathML'>
|
382
|
-
<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'>⁢</mo>
|
419
|
+
<mrow xref='U_kg.s-2'>
|
420
|
+
<mi mathvariant='normal'>kg</mi>
|
421
|
+
<mo>⋅</mo>
|
422
|
+
<msup>
|
383
423
|
<mrow>
|
384
|
-
<mi mathvariant='normal'>
|
385
|
-
<mo>·</mo>
|
386
|
-
<msup>
|
387
|
-
<mrow>
|
388
|
-
<mi mathvariant='normal'>s</mi>
|
389
|
-
</mrow>
|
390
|
-
<mrow>
|
391
|
-
<mo>−</mo>
|
392
|
-
<mn>2</mn>
|
393
|
-
</mrow>
|
394
|
-
</msup>
|
424
|
+
<mi mathvariant='normal'>s</mi>
|
395
425
|
</mrow>
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
</
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
426
|
+
<mrow>
|
427
|
+
<mo>−</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⋅s
|
437
|
+
<sup>−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>⋅</mo>
|
444
|
+
<msup>
|
445
|
+
<mrow>
|
446
|
+
<mi mathvariant='normal'>s</mi>
|
447
|
+
</mrow>
|
448
|
+
<mrow>
|
449
|
+
<mo>−</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>×</mo>
|
473
|
+
<mn>9</mn>
|
474
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
475
|
+
<mrow xref='U_kg.s-2'>
|
476
|
+
<mi mathvariant='normal'>kg</mi>
|
477
|
+
<mo>⋅</mo>
|
478
|
+
<msup>
|
479
|
+
<mrow>
|
480
|
+
<mi mathvariant='normal'>s</mi>
|
481
|
+
</mrow>
|
482
|
+
<mrow>
|
483
|
+
<mo>−</mo>
|
484
|
+
<mn>2</mn>
|
485
|
+
</mrow>
|
486
|
+
</msup>
|
487
|
+
</mrow>
|
488
|
+
</math>
|
489
|
+
OUTPUT
|
490
|
+
end
|
491
|
+
|
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))"
|
495
|
+
INPUT
|
496
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
497
|
+
<mn>10</mn>
|
498
|
+
<mo rspace='thickmathspace'>⁢</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>⋅</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⋅kg
|
511
|
+
<sup>−1</sup>
|
512
|
+
⋅m
|
513
|
+
<sup>−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>⋅</mo>
|
520
|
+
<msup>
|
521
|
+
<mrow>
|
522
|
+
<mi mathvariant='normal'>kg</mi>
|
523
|
+
</mrow>
|
524
|
+
<mrow>
|
525
|
+
<mo>−</mo>
|
526
|
+
<mn>1</mn>
|
527
|
+
</mrow>
|
528
|
+
</msup>
|
529
|
+
<mo>⋅</mo>
|
530
|
+
<msup>
|
531
|
+
<mrow>
|
532
|
+
<mi mathvariant='normal'>m</mi>
|
533
|
+
</mrow>
|
534
|
+
<mrow>
|
535
|
+
<mo>−</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>
|
431
561
|
OUTPUT
|
432
562
|
end
|
433
563
|
|
434
564
|
it "deals with notational variants" do
|
435
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
436
|
-
|
437
|
-
INPUT
|
438
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
439
|
-
<mn>9</mn>
|
440
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
441
|
-
<mrow xref='U_NISTu5'>
|
442
|
-
<mi mathvariant='normal'>°K</mi>
|
443
|
-
</mrow>
|
444
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu5' dimensionURL='#NISTd5'>
|
445
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
446
|
-
<UnitName xml:lang='en'>kelvin</UnitName>
|
447
|
-
<UnitSymbol type='HTML'>K</UnitSymbol>
|
448
|
-
<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
|
449
568
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
450
|
-
<
|
569
|
+
<mn>9</mn>
|
570
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
571
|
+
<mrow xref='U_NISTu5'>
|
572
|
+
<mi mathvariant='normal'>°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'>⁢</mo>
|
595
|
+
<mrow xref='U_NISTu5'>
|
451
596
|
<mi mathvariant='normal'>K</mi>
|
452
597
|
</mrow>
|
453
598
|
</math>
|
454
|
-
|
455
|
-
</Unit>
|
456
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd5'>
|
457
|
-
<ThermodynamicTemperature symbol='Theta' powerNumerator='1'/>
|
458
|
-
</Dimension>
|
459
|
-
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq5' dimensionURL='#NISTd5' quantityType='base'>
|
460
|
-
<QuantityName xml:lang='en-US'>thermodynamic temperature</QuantityName>
|
461
|
-
</Quantity>
|
462
|
-
<mo>+</mo>
|
463
|
-
<mn>10</mn>
|
464
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
465
|
-
<mrow xref='U_NISTu5'>
|
466
|
-
<mi mathvariant='normal'>K</mi>
|
467
|
-
</mrow>
|
468
|
-
</math>
|
469
|
-
OUTPUT
|
599
|
+
OUTPUT
|
470
600
|
end
|
471
601
|
|
472
602
|
it "deals with prefixed units" do
|
473
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
474
|
-
|
475
|
-
INPUT
|
476
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
477
|
-
<mn>9</mn>
|
478
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
479
|
-
<mrow xref='U_NISTu362'>
|
480
|
-
<mi mathvariant='normal'>mbar</mi>
|
481
|
-
</mrow>
|
482
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu362'>
|
483
|
-
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
484
|
-
<UnitName xml:lang='en'>millibar</UnitName>
|
485
|
-
<UnitSymbol type='HTML'>mbar</UnitSymbol>
|
486
|
-
<UnitSymbol type='MathML'>
|
603
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
604
|
+
9 "unitsml(mbar)"
|
605
|
+
INPUT
|
487
606
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
488
|
-
<
|
607
|
+
<mn>9</mn>
|
608
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
609
|
+
<mrow xref='U_NISTu362'>
|
489
610
|
<mi mathvariant='normal'>mbar</mi>
|
490
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>
|
491
639
|
</math>
|
492
|
-
|
493
|
-
<RootUnits>
|
494
|
-
<EnumeratedRootUnit unit='bar' prefix='m'/>
|
495
|
-
</RootUnits>
|
496
|
-
</Unit>
|
497
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
498
|
-
<PrefixName xml:lang='en'>milli</PrefixName>
|
499
|
-
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
500
|
-
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
501
|
-
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
502
|
-
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
503
|
-
</Prefix>
|
504
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd14'>
|
505
|
-
<Length symbol='L' powerNumerator='-1'/>
|
506
|
-
<Mass symbol='M' powerNumerator='1'/>
|
507
|
-
<Time symbol='T' powerNumerator='-2'/>
|
508
|
-
</Dimension>
|
509
|
-
</math>
|
510
|
-
OUTPUT
|
640
|
+
OUTPUT
|
511
641
|
end
|
512
642
|
|
513
643
|
it "deals with standalone prefixes" do
|
514
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
515
|
-
|
644
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
645
|
+
"unitsml(p-)" "unitsml(da-)"
|
516
646
|
INPUT
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
</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'>⁢</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>
|
540
670
|
OUTPUT
|
541
671
|
end
|
542
672
|
|
543
673
|
it "deals with HTML entities in UnitsDB" do
|
544
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
545
|
-
|
546
|
-
INPUT
|
547
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
548
|
-
<mrow xref='NISTp10_-6'>
|
549
|
-
<mi mathvariant='normal'>µ</mi>
|
550
|
-
</mrow>
|
551
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-6' xml:id='NISTp10_-6'>
|
552
|
-
<PrefixName xml:lang='en'>micro</PrefixName>
|
553
|
-
<PrefixSymbol type='ASCII'>u</PrefixSymbol>
|
554
|
-
<PrefixSymbol type='unicode'>μ</PrefixSymbol>
|
555
|
-
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
556
|
-
<PrefixSymbol type='HTML'>µ</PrefixSymbol>
|
557
|
-
</Prefix>
|
558
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd2'>
|
559
|
-
<Mass symbol='M' powerNumerator='1'/>
|
560
|
-
</Dimension>
|
561
|
-
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq2' dimensionURL='#NISTd2' quantityType='base'>
|
562
|
-
<QuantityName xml:lang='en-US'>mass</QuantityName>
|
563
|
-
</Quantity>
|
564
|
-
<mo>+</mo>
|
565
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
566
|
-
<mrow xref='U_um'>
|
567
|
-
<mi mathvariant='normal'>µm</mi>
|
568
|
-
</mrow>
|
569
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_um' dimensionURL='#NISTd1'>
|
570
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
571
|
-
<UnitName xml:lang='en'>um</UnitName>
|
572
|
-
<UnitSymbol type='HTML'>um</UnitSymbol>
|
573
|
-
<UnitSymbol type='MathML'>
|
674
|
+
expect(xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
675
|
+
"unitsml(u-)" + "unitsml(um)"
|
676
|
+
INPUT
|
574
677
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
575
|
-
<mrow>
|
678
|
+
<mrow xref='NISTp10_-6'>
|
679
|
+
<mi mathvariant='normal'>µ</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'>μ</PrefixSymbol>
|
685
|
+
<PrefixSymbol type='LaTeX'>$mu$</PrefixSymbol>
|
686
|
+
<PrefixSymbol type='HTML'>µ</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'>
|
576
696
|
<mi mathvariant='normal'>µm</mi>
|
577
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'>µ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>
|
578
716
|
</math>
|
579
|
-
</UnitSymbol>
|
580
|
-
<RootUnits>
|
581
|
-
<EnumeratedRootUnit unit='meter' prefix='u'/>
|
582
|
-
</RootUnits>
|
583
|
-
</Unit>
|
584
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
585
|
-
<Length symbol='L' powerNumerator='1'/>
|
586
|
-
</Dimension>
|
587
|
-
</math>
|
588
717
|
OUTPUT
|
589
718
|
end
|
590
719
|
|
591
720
|
it "deals with units division" do
|
592
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
593
|
-
|
594
|
-
INPUT
|
595
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
596
|
-
|
597
|
-
|
598
|
-
|
599
|
-
<mi mathvariant='normal'>A</mi>
|
600
|
-
<mo>·</mo>
|
601
|
-
<msup>
|
602
|
-
<mrow>
|
603
|
-
<mi mathvariant='normal'>C</mi>
|
604
|
-
</mrow>
|
605
|
-
<mrow>
|
606
|
-
<mn>3</mn>
|
607
|
-
</mrow>
|
608
|
-
</msup>
|
609
|
-
</mrow>
|
610
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_A.C3' dimensionURL='#D_M3I4'>
|
611
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
612
|
-
<UnitName xml:lang='en'>A*C^3</UnitName>
|
613
|
-
<UnitSymbol type='HTML'>
|
614
|
-
A·C
|
615
|
-
<sup>3</sup>
|
616
|
-
</UnitSymbol>
|
617
|
-
<UnitSymbol type='MathML'>
|
618
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
619
|
-
<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'>⁢</mo>
|
727
|
+
<mrow xref='U_A.C3'>
|
620
728
|
<mi mathvariant='normal'>A</mi>
|
621
|
-
<mo>&#
|
729
|
+
<mo>⋅</mo>
|
622
730
|
<msup>
|
623
731
|
<mrow>
|
624
732
|
<mi mathvariant='normal'>C</mi>
|
@@ -628,145 +736,217 @@ INPUT
|
|
628
736
|
</mrow>
|
629
737
|
</msup>
|
630
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⋅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>⋅</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'>⁢</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>−</mo>
|
783
|
+
<mn>3</mn>
|
784
|
+
</mrow>
|
785
|
+
</msup>
|
786
|
+
</mrow>
|
787
|
+
<mo>+</mo>
|
788
|
+
<mn>2</mn>
|
789
|
+
<mo rspace='thickmathspace'>⁢</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>⋅</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⋅kg
|
802
|
+
<sup>−1</sup>
|
803
|
+
⋅K
|
804
|
+
<sup>−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>⋅</mo>
|
811
|
+
<msup>
|
812
|
+
<mrow>
|
813
|
+
<mi mathvariant='normal'>kg</mi>
|
814
|
+
</mrow>
|
815
|
+
<mrow>
|
816
|
+
<mo>−</mo>
|
817
|
+
<mn>1</mn>
|
818
|
+
</mrow>
|
819
|
+
</msup>
|
820
|
+
<mo>⋅</mo>
|
821
|
+
<msup>
|
822
|
+
<mrow>
|
823
|
+
<mi mathvariant='normal'>K</mi>
|
824
|
+
</mrow>
|
825
|
+
<mrow>
|
826
|
+
<mo>−</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>
|
631
857
|
</math>
|
632
|
-
|
633
|
-
<RootUnits>
|
634
|
-
<EnumeratedRootUnit unit='ampere'/>
|
635
|
-
<EnumeratedRootUnit unit='coulomb' powerNumerator='3'/>
|
636
|
-
</RootUnits>
|
637
|
-
</Unit>
|
638
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_M3I4'>
|
639
|
-
<Mass symbol='M' powerNumerator='3'/>
|
640
|
-
<ElectricCurrent symbol='I' powerNumerator='4'/>
|
641
|
-
</Dimension>
|
642
|
-
<mo>+</mo>
|
643
|
-
<mn>13</mn>
|
644
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
645
|
-
<mrow xref='U_A/C-3'>
|
646
|
-
<mi mathvariant='normal'>A</mi>
|
647
|
-
<mo>/</mo>
|
648
|
-
<msup>
|
649
|
-
<mrow>
|
650
|
-
<mi mathvariant='normal'>C</mi>
|
651
|
-
</mrow>
|
652
|
-
<mrow>
|
653
|
-
<mo>−</mo>
|
654
|
-
<mn>3</mn>
|
655
|
-
</mrow>
|
656
|
-
</msup>
|
657
|
-
</mrow>
|
658
|
-
</math>
|
659
|
-
OUTPUT
|
858
|
+
OUTPUT
|
660
859
|
end
|
661
860
|
|
662
861
|
it "converts MathML to MatML + UnitsML" do
|
663
862
|
input = <<~INPUT
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
</math>
|
863
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
864
|
+
<mn>32</mn>
|
865
|
+
<mo>+</mo>
|
866
|
+
<mn>5</mn>
|
867
|
+
<mo>×</mo>
|
868
|
+
<mn>7</mn>
|
869
|
+
<mtext>unitsml(kg^-2)</mtext>
|
870
|
+
</math>
|
672
871
|
INPUT
|
673
872
|
output = <<~OUTPUT
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
873
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
874
|
+
<mn>32</mn>
|
875
|
+
<mo>+</mo>
|
876
|
+
<mn>5</mn>
|
877
|
+
<mo>×</mo>
|
878
|
+
<mn>7</mn>
|
879
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
880
|
+
<mrow xref='U_kg-2'>
|
881
|
+
<msup>
|
882
|
+
<mrow>
|
883
|
+
<mi mathvariant='normal'>kg</mi>
|
884
|
+
</mrow>
|
885
|
+
<mrow>
|
886
|
+
<mo>−</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>−2</sup>
|
897
|
+
</UnitSymbol>
|
898
|
+
<UnitSymbol type='MathML'>
|
899
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
686
900
|
<mrow>
|
687
|
-
<
|
688
|
-
|
901
|
+
<msup>
|
902
|
+
<mrow>
|
903
|
+
<mi mathvariant='normal'>kg</mi>
|
904
|
+
</mrow>
|
905
|
+
<mrow>
|
906
|
+
<mo>−</mo>
|
907
|
+
<mn>2</mn>
|
908
|
+
</mrow>
|
909
|
+
</msup>
|
689
910
|
</mrow>
|
690
|
-
</
|
691
|
-
</
|
692
|
-
|
693
|
-
|
694
|
-
|
695
|
-
|
696
|
-
|
697
|
-
|
698
|
-
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
|
705
|
-
|
706
|
-
|
707
|
-
|
708
|
-
|
709
|
-
|
710
|
-
|
711
|
-
|
712
|
-
|
713
|
-
</UnitSymbol>
|
714
|
-
<RootUnits>
|
715
|
-
<EnumeratedRootUnit unit='gram' prefix='k' powerNumerator='-2'/>
|
716
|
-
</RootUnits>
|
717
|
-
</Unit>
|
718
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
719
|
-
<PrefixName xml:lang='en'>kilo</PrefixName>
|
720
|
-
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
721
|
-
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
722
|
-
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
723
|
-
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
724
|
-
</Prefix>
|
725
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='D_M-2'>
|
726
|
-
<Mass symbol='M' powerNumerator='-2'/>
|
727
|
-
</Dimension>
|
728
|
-
</math>
|
729
|
-
OUTPUT
|
730
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new().MathML2UnitsML(input).to_xml)).to be_equivalent_to xmlpp(output)
|
731
|
-
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)
|
732
934
|
end
|
733
935
|
|
734
936
|
it "raises error for illegal unit" do
|
735
|
-
expect{xmlpp(Asciimath2UnitsML::Conv.new
|
736
|
-
|
937
|
+
expect { xmlpp(Asciimath2UnitsML::Conv.new.Asciimath2UnitsML(<<~INPUT)) }.to raise_error(Rsec::SyntaxError)
|
938
|
+
12 "unitsml(que?)"
|
737
939
|
INPUT
|
738
940
|
end
|
739
941
|
|
740
942
|
it "initialises multiplier" do
|
741
943
|
expect(xmlpp(Asciimath2UnitsML::Conv.new(multiplier: "\u00d7").Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
742
|
-
1 "unitsml(kg*s^-2)"
|
944
|
+
1 "unitsml(kg*s^-2)"
|
743
945
|
INPUT
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
<mi mathvariant='normal'>kg</mi>
|
749
|
-
<mo>×</mo>
|
750
|
-
<msup>
|
751
|
-
<mrow>
|
752
|
-
<mi mathvariant='normal'>s</mi>
|
753
|
-
</mrow>
|
754
|
-
<mrow>
|
755
|
-
<mo>−</mo>
|
756
|
-
<mn>2</mn>
|
757
|
-
</mrow>
|
758
|
-
</msup>
|
759
|
-
</mrow>
|
760
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
761
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
762
|
-
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
763
|
-
<UnitSymbol type='HTML'>
|
764
|
-
kg×s
|
765
|
-
<sup>−2</sup>
|
766
|
-
</UnitSymbol>
|
767
|
-
<UnitSymbol type='MathML'>
|
768
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
769
|
-
<mrow>
|
946
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
947
|
+
<mn>1</mn>
|
948
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
949
|
+
<mrow xref='U_kg.s-2'>
|
770
950
|
<mi mathvariant='normal'>kg</mi>
|
771
951
|
<mo>×</mo>
|
772
952
|
<msup>
|
@@ -779,116 +959,116 @@ OUTPUT
|
|
779
959
|
</mrow>
|
780
960
|
</msup>
|
781
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×s
|
967
|
+
<sup>−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>×</mo>
|
974
|
+
<msup>
|
975
|
+
<mrow>
|
976
|
+
<mi mathvariant='normal'>s</mi>
|
977
|
+
</mrow>
|
978
|
+
<mrow>
|
979
|
+
<mo>−</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>
|
782
1002
|
</math>
|
783
|
-
</UnitSymbol>
|
784
|
-
<RootUnits>
|
785
|
-
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
786
|
-
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
787
|
-
</RootUnits>
|
788
|
-
</Unit>
|
789
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
790
|
-
<PrefixName xml:lang='en'>kilo</PrefixName>
|
791
|
-
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
792
|
-
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
793
|
-
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
794
|
-
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
795
|
-
</Prefix>
|
796
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
797
|
-
<Mass symbol='M' powerNumerator='1'/>
|
798
|
-
<Time symbol='T' powerNumerator='-2'/>
|
799
|
-
</Dimension>
|
800
|
-
</math>
|
801
1003
|
OUTPUT
|
802
1004
|
expect(xmlpp(Asciimath2UnitsML::Conv.new(multiplier: :space).Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
803
|
-
1 "unitsml(kg*s^-2)"
|
1005
|
+
1 "unitsml(kg*s^-2)"
|
804
1006
|
INPUT
|
805
|
-
|
806
|
-
|
807
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
808
|
-
<mrow xref='U_kg.s-2'>
|
809
|
-
<mi mathvariant='normal'>kg</mi>
|
1007
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1008
|
+
<mn>1</mn>
|
810
1009
|
<mo rspace='thickmathspace'>⁢</mo>
|
811
|
-
<
|
812
|
-
<
|
813
|
-
|
814
|
-
|
815
|
-
<mrow>
|
816
|
-
<mo>−</mo>
|
817
|
-
<mn>2</mn>
|
818
|
-
</mrow>
|
819
|
-
</msup>
|
820
|
-
</mrow>
|
821
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
822
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
823
|
-
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
824
|
-
<UnitSymbol type='HTML'>
|
825
|
-
kg s
|
826
|
-
<sup>−2</sup>
|
827
|
-
</UnitSymbol>
|
828
|
-
<UnitSymbol type='MathML'>
|
829
|
-
<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'>⁢</mo>
|
1013
|
+
<msup>
|
830
1014
|
<mrow>
|
831
|
-
<mi mathvariant='normal'>
|
832
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
833
|
-
<msup>
|
834
|
-
<mrow>
|
835
|
-
<mi mathvariant='normal'>s</mi>
|
836
|
-
</mrow>
|
837
|
-
<mrow>
|
838
|
-
<mo>−</mo>
|
839
|
-
<mn>2</mn>
|
840
|
-
</mrow>
|
841
|
-
</msup>
|
1015
|
+
<mi mathvariant='normal'>s</mi>
|
842
1016
|
</mrow>
|
843
|
-
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
</
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
1017
|
+
<mrow>
|
1018
|
+
<mo>−</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 s
|
1028
|
+
<sup>−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'>⁢</mo>
|
1035
|
+
<msup>
|
1036
|
+
<mrow>
|
1037
|
+
<mi mathvariant='normal'>s</mi>
|
1038
|
+
</mrow>
|
1039
|
+
<mrow>
|
1040
|
+
<mo>−</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>
|
862
1064
|
OUTPUT
|
863
1065
|
expect(xmlpp(Asciimath2UnitsML::Conv.new(multiplier: :nospace).Asciimath2UnitsML(<<~INPUT))).to be_equivalent_to xmlpp(<<~OUTPUT)
|
864
|
-
1 "unitsml(kg*s^-2)"
|
1066
|
+
1 "unitsml(kg*s^-2)"
|
865
1067
|
INPUT
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
<mi mathvariant='normal'>kg</mi>
|
871
|
-
<mo>⁢</mo>
|
872
|
-
<msup>
|
873
|
-
<mrow>
|
874
|
-
<mi mathvariant='normal'>s</mi>
|
875
|
-
</mrow>
|
876
|
-
<mrow>
|
877
|
-
<mo>−</mo>
|
878
|
-
<mn>2</mn>
|
879
|
-
</mrow>
|
880
|
-
</msup>
|
881
|
-
</mrow>
|
882
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_kg.s-2' dimensionURL='#NISTd37'>
|
883
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
884
|
-
<UnitName xml:lang='en'>kg*s^-2</UnitName>
|
885
|
-
<UnitSymbol type='HTML'>
|
886
|
-
kgs
|
887
|
-
<sup>−2</sup>
|
888
|
-
</UnitSymbol>
|
889
|
-
<UnitSymbol type='MathML'>
|
890
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
891
|
-
<mrow>
|
1068
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1069
|
+
<mn>1</mn>
|
1070
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1071
|
+
<mrow xref='U_kg.s-2'>
|
892
1072
|
<mi mathvariant='normal'>kg</mi>
|
893
1073
|
<mo>⁢</mo>
|
894
1074
|
<msup>
|
@@ -901,60 +1081,60 @@ OUTPUT
|
|
901
1081
|
</mrow>
|
902
1082
|
</msup>
|
903
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>−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>⁢</mo>
|
1096
|
+
<msup>
|
1097
|
+
<mrow>
|
1098
|
+
<mi mathvariant='normal'>s</mi>
|
1099
|
+
</mrow>
|
1100
|
+
<mrow>
|
1101
|
+
<mo>−</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>
|
904
1124
|
</math>
|
905
|
-
</UnitSymbol>
|
906
|
-
<RootUnits>
|
907
|
-
<EnumeratedRootUnit unit='gram' prefix='k'/>
|
908
|
-
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
909
|
-
</RootUnits>
|
910
|
-
</Unit>
|
911
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='3' xml:id='NISTp10_3'>
|
912
|
-
<PrefixName xml:lang='en'>kilo</PrefixName>
|
913
|
-
<PrefixSymbol type='ASCII'>k</PrefixSymbol>
|
914
|
-
<PrefixSymbol type='unicode'>k</PrefixSymbol>
|
915
|
-
<PrefixSymbol type='LaTeX'>k</PrefixSymbol>
|
916
|
-
<PrefixSymbol type='HTML'>k</PrefixSymbol>
|
917
|
-
</Prefix>
|
918
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd37'>
|
919
|
-
<Mass symbol='M' powerNumerator='1'/>
|
920
|
-
<Time symbol='T' powerNumerator='-2'/>
|
921
|
-
</Dimension>
|
922
|
-
</math>
|
923
1125
|
OUTPUT
|
924
1126
|
end
|
925
1127
|
|
926
1128
|
it "deals with dimension decomposition with like units" do
|
927
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
928
|
-
|
929
|
-
INPUT
|
930
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
931
|
-
|
932
|
-
|
933
|
-
|
934
|
-
<mi mathvariant='normal'>mW</mi>
|
935
|
-
<mo>·</mo>
|
936
|
-
<msup>
|
937
|
-
<mrow>
|
938
|
-
<mi mathvariant='normal'>cm</mi>
|
939
|
-
</mrow>
|
940
|
-
<mrow>
|
941
|
-
<mo>−</mo>
|
942
|
-
<mn>2</mn>
|
943
|
-
</mrow>
|
944
|
-
</msup>
|
945
|
-
</mrow>
|
946
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_mW.cm-2'>
|
947
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
948
|
-
<UnitName xml:lang='en'>mW*cm^-2</UnitName>
|
949
|
-
<UnitSymbol type='HTML'>
|
950
|
-
mW·cm
|
951
|
-
<sup>−2</sup>
|
952
|
-
</UnitSymbol>
|
953
|
-
<UnitSymbol type='MathML'>
|
954
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
955
|
-
<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'>⁢</mo>
|
1135
|
+
<mrow xref='U_mW.cm-2'>
|
956
1136
|
<mi mathvariant='normal'>mW</mi>
|
957
|
-
<mo>&#
|
1137
|
+
<mo>⋅</mo>
|
958
1138
|
<msup>
|
959
1139
|
<mrow>
|
960
1140
|
<mi mathvariant='normal'>cm</mi>
|
@@ -965,102 +1145,93 @@ INPUT
|
|
965
1145
|
</mrow>
|
966
1146
|
</msup>
|
967
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⋅cm
|
1153
|
+
<sup>−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>⋅</mo>
|
1160
|
+
<msup>
|
1161
|
+
<mrow>
|
1162
|
+
<mi mathvariant='normal'>cm</mi>
|
1163
|
+
</mrow>
|
1164
|
+
<mrow>
|
1165
|
+
<mo>−</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>
|
968
1191
|
</math>
|
969
|
-
|
970
|
-
<RootUnits>
|
971
|
-
<EnumeratedRootUnit unit='watt' prefix='m'/>
|
972
|
-
<EnumeratedRootUnit unit='meter' prefix='c' powerNumerator='-2'/>
|
973
|
-
</RootUnits>
|
974
|
-
</Unit>
|
975
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-3' xml:id='NISTp10_-3'>
|
976
|
-
<PrefixName xml:lang='en'>milli</PrefixName>
|
977
|
-
<PrefixSymbol type='ASCII'>m</PrefixSymbol>
|
978
|
-
<PrefixSymbol type='unicode'>m</PrefixSymbol>
|
979
|
-
<PrefixSymbol type='LaTeX'>m</PrefixSymbol>
|
980
|
-
<PrefixSymbol type='HTML'>m</PrefixSymbol>
|
981
|
-
</Prefix>
|
982
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
983
|
-
<PrefixName xml:lang='en'>centi</PrefixName>
|
984
|
-
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
985
|
-
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
986
|
-
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
987
|
-
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
988
|
-
</Prefix>
|
989
|
-
</math>
|
990
|
-
OUTPUT
|
1192
|
+
OUTPUT
|
991
1193
|
end
|
992
1194
|
|
993
1195
|
it "deals with quantity input" do
|
994
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
995
|
-
|
996
|
-
INPUT
|
997
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
998
|
-
<mn>9</mn>
|
999
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
1000
|
-
<mrow xref='U_NISTu1'>
|
1001
|
-
<mi mathvariant='normal'>m</mi>
|
1002
|
-
</mrow>
|
1003
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
1004
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1005
|
-
<UnitName xml:lang='en'>meter</UnitName>
|
1006
|
-
<UnitSymbol type='HTML'>m</UnitSymbol>
|
1007
|
-
<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
|
1008
1199
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1009
|
-
<
|
1200
|
+
<mn>9</mn>
|
1201
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1202
|
+
<mrow xref='U_NISTu1'>
|
1010
1203
|
<mi mathvariant='normal'>m</mi>
|
1011
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>
|
1012
1223
|
</math>
|
1013
|
-
|
1014
|
-
|
1015
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd1'>
|
1016
|
-
<Length symbol='L' powerNumerator='1'/>
|
1017
|
-
</Dimension>
|
1018
|
-
<Quantity xmlns='http://unitsml.nist.gov/2005' xml:id='NISTq103' dimensionURL='#NISTd1' quantityType='base'>
|
1019
|
-
<QuantityName xml:lang='en-US'>position vector</QuantityName>
|
1020
|
-
</Quantity>
|
1021
|
-
</math>
|
1022
|
-
OUTPUT
|
1023
|
-
end
|
1224
|
+
OUTPUT
|
1225
|
+
end
|
1024
1226
|
|
1025
1227
|
it "deals with name input" do
|
1026
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
1027
|
-
|
1028
|
-
INPUT
|
1029
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1030
|
-
|
1031
|
-
|
1032
|
-
|
1033
|
-
<msub>
|
1034
|
-
<mrow>
|
1035
|
-
<mi mathvariant='normal'>cal</mi>
|
1036
|
-
</mrow>
|
1037
|
-
<mrow>
|
1038
|
-
<mi mathvariant='normal'>th</mi>
|
1039
|
-
</mrow>
|
1040
|
-
</msub>
|
1041
|
-
<mo>/</mo>
|
1042
|
-
<msup>
|
1043
|
-
<mrow>
|
1044
|
-
<mi mathvariant='normal'>cm</mi>
|
1045
|
-
</mrow>
|
1046
|
-
<mrow>
|
1047
|
-
<mn>2</mn>
|
1048
|
-
</mrow>
|
1049
|
-
</msup>
|
1050
|
-
</mrow>
|
1051
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_cal_th.cm-2'>
|
1052
|
-
<UnitSystem name='not_SI' type='not_SI' xml:lang='en-US'/>
|
1053
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1054
|
-
<UnitName xml:lang='en'>langley</UnitName>
|
1055
|
-
<UnitSymbol type='HTML'>
|
1056
|
-
cal
|
1057
|
-
<sub>th</sub>
|
1058
|
-
·cm
|
1059
|
-
<sup>−2</sup>
|
1060
|
-
</UnitSymbol>
|
1061
|
-
<UnitSymbol type='MathML'>
|
1062
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1063
|
-
<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'>⁢</mo>
|
1234
|
+
<mrow xref='U_cal_th/cm2'>
|
1064
1235
|
<msub>
|
1065
1236
|
<mrow>
|
1066
1237
|
<mi mathvariant='normal'>cal</mi>
|
@@ -1069,125 +1240,218 @@ INPUT
|
|
1069
1240
|
<mi mathvariant='normal'>th</mi>
|
1070
1241
|
</mrow>
|
1071
1242
|
</msub>
|
1072
|
-
<mo
|
1243
|
+
<mo>/</mo>
|
1073
1244
|
<msup>
|
1074
1245
|
<mrow>
|
1075
1246
|
<mi mathvariant='normal'>cm</mi>
|
1076
1247
|
</mrow>
|
1077
1248
|
<mrow>
|
1078
|
-
<mo>−</mo>
|
1079
1249
|
<mn>2</mn>
|
1080
1250
|
</mrow>
|
1081
1251
|
</msup>
|
1082
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
|
+
⋅cm
|
1261
|
+
<sup>−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>⋅</mo>
|
1275
|
+
<msup>
|
1276
|
+
<mrow>
|
1277
|
+
<mi mathvariant='normal'>cm</mi>
|
1278
|
+
</mrow>
|
1279
|
+
<mrow>
|
1280
|
+
<mo>−</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>
|
1083
1299
|
</math>
|
1084
|
-
|
1085
|
-
|
1086
|
-
<EnumeratedRootUnit unit='thermochemical calorie'/>
|
1087
|
-
<EnumeratedRootUnit unit='meter' prefix='c' powerNumerator='-2'/>
|
1088
|
-
</RootUnits>
|
1089
|
-
</Unit>
|
1090
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1091
|
-
<PrefixName xml:lang='en'>centi</PrefixName>
|
1092
|
-
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1093
|
-
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1094
|
-
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1095
|
-
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1096
|
-
</Prefix>
|
1097
|
-
</math>
|
1098
|
-
OUTPUT
|
1099
|
-
end
|
1300
|
+
OUTPUT
|
1301
|
+
end
|
1100
1302
|
|
1101
|
-
|
1102
|
-
expect(xmlpp(Asciimath2UnitsML::Conv.new
|
1103
|
-
|
1104
|
-
INPUT
|
1105
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1106
|
-
<mn>9</mn>
|
1107
|
-
<mo rspace='thickmathspace'>⁢</mo>
|
1108
|
-
<mrow xref='U_NISTu1'>
|
1109
|
-
<math>
|
1110
|
-
<mi mathvariant='normal'>L</mi>
|
1111
|
-
<mi mathvariant='normal'>a</mi>
|
1112
|
-
</math>
|
1113
|
-
</mrow>
|
1114
|
-
<Unit xmlns='http://unitsml.nist.gov/2005' xml:id='U_NISTu1' dimensionURL='#NISTd1'>
|
1115
|
-
<UnitSystem name='SI' type='SI_derived' xml:lang='en-US'/>
|
1116
|
-
<UnitName xml:lang='en'>meter</UnitName>
|
1117
|
-
<UnitSymbol type='HTML'>m</UnitSymbol>
|
1118
|
-
<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
|
1119
1307
|
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1120
|
-
<
|
1121
|
-
|
1308
|
+
<mn>9</mn>
|
1309
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1310
|
+
<mrow xref='U_NISTu1'>
|
1311
|
+
<math>
|
1312
|
+
<mi mathvariant='normal'>L</mi>
|
1313
|
+
<mi mathvariant='normal'>a</mi>
|
1314
|
+
</math>
|
1122
1315
|
</mrow>
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
<
|
1139
|
-
|
1140
|
-
|
1141
|
-
<mrow>
|
1142
|
-
<
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
|
1151
|
-
|
1152
|
-
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1157
|
-
<mrow>
|
1158
|
-
<mi mathvariant='normal'>cm</mi>
|
1159
|
-
<mo>·</mo>
|
1160
|
-
<msup>
|
1161
|
-
<mrow>
|
1162
|
-
<mi mathvariant='normal'>s</mi>
|
1163
|
-
</mrow>
|
1164
|
-
<mrow>
|
1165
|
-
<mo>−</mo>
|
1166
|
-
<mn>2</mn>
|
1167
|
-
</mrow>
|
1168
|
-
</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'>⁢</mo>
|
1334
|
+
<mrow xref='U_cm.s-2'>
|
1335
|
+
<math>
|
1336
|
+
<mi mathvariant='normal'>c</mi>
|
1337
|
+
<mi mathvariant='normal'>m</mi>
|
1338
|
+
<mo>⋅</mo>
|
1339
|
+
<msup>
|
1340
|
+
<mrow>
|
1341
|
+
<mi mathvariant='normal'>s</mi>
|
1342
|
+
</mrow>
|
1343
|
+
<mrow>
|
1344
|
+
<mo>−</mo>
|
1345
|
+
</mrow>
|
1346
|
+
</msup>
|
1347
|
+
<mn>2</mn>
|
1348
|
+
</math>
|
1169
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⋅s
|
1355
|
+
<sup>−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>⋅</mo>
|
1362
|
+
<msup>
|
1363
|
+
<mrow>
|
1364
|
+
<mi mathvariant='normal'>s</mi>
|
1365
|
+
</mrow>
|
1366
|
+
<mrow>
|
1367
|
+
<mo>−</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>
|
1170
1390
|
</math>
|
1171
|
-
|
1172
|
-
|
1173
|
-
<EnumeratedRootUnit unit='meter' prefix='c'/>
|
1174
|
-
<EnumeratedRootUnit unit='second' powerNumerator='-2'/>
|
1175
|
-
</RootUnits>
|
1176
|
-
</Unit>
|
1177
|
-
<Prefix xmlns='http://unitsml.nist.gov/2005' prefixBase='10' prefixPower='-2' xml:id='NISTp10_-2'>
|
1178
|
-
<PrefixName xml:lang='en'>centi</PrefixName>
|
1179
|
-
<PrefixSymbol type='ASCII'>c</PrefixSymbol>
|
1180
|
-
<PrefixSymbol type='unicode'>c</PrefixSymbol>
|
1181
|
-
<PrefixSymbol type='LaTeX'>c</PrefixSymbol>
|
1182
|
-
<PrefixSymbol type='HTML'>c</PrefixSymbol>
|
1183
|
-
</Prefix>
|
1184
|
-
<Dimension xmlns='http://unitsml.nist.gov/2005' xml:id='NISTd28'>
|
1185
|
-
<Length symbol='L' powerNumerator='1'/>
|
1186
|
-
<Time symbol='T' powerNumerator='-2'/>
|
1187
|
-
</Dimension>
|
1188
|
-
</math>
|
1189
|
-
OUTPUT
|
1190
|
-
end
|
1191
|
-
|
1391
|
+
OUTPUT
|
1392
|
+
end
|
1192
1393
|
|
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
|
1398
|
+
<math xmlns='http://www.w3.org/1998/Math/MathML'>
|
1399
|
+
<mn>10</mn>
|
1400
|
+
<mo rspace='thickmathspace'>⁢</mo>
|
1401
|
+
<mrow xref='U_cm.s-2'>
|
1402
|
+
<mi mathvariant='normal'>cm</mi>
|
1403
|
+
<mo>xx</mo>
|
1404
|
+
<msup>
|
1405
|
+
<mrow>
|
1406
|
+
<mi mathvariant='normal'>s</mi>
|
1407
|
+
</mrow>
|
1408
|
+
<mrow>
|
1409
|
+
<mo>−</mo>
|
1410
|
+
<mn>2</mn>
|
1411
|
+
</mrow>
|
1412
|
+
</msup>
|
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⋅s
|
1419
|
+
<sup>−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>⋅</mo>
|
1426
|
+
<msup>
|
1427
|
+
<mrow>
|
1428
|
+
<mi mathvariant='normal'>s</mi>
|
1429
|
+
</mrow>
|
1430
|
+
<mrow>
|
1431
|
+
<mo>−</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>
|
1454
|
+
</math>
|
1455
|
+
OUTPUT
|
1456
|
+
end
|
1193
1457
|
end
|