asciimath2unitsml 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.rubocop.yml +14 -0
- data/README.adoc +4 -1
- data/asciimath2unitsml.gemspec +1 -1
- data/lib/asciimath2unitsml/conv.rb +48 -17
- data/lib/asciimath2unitsml/parse.rb +14 -22
- data/lib/asciimath2unitsml/render.rb +12 -5
- data/lib/asciimath2unitsml/unit.rb +1 -1
- data/lib/asciimath2unitsml/version.rb +1 -1
- data/lib/unitsdb/dimensions.yaml +31 -31
- data/lib/unitsdb/quantities.yaml +26 -19
- data/lib/unitsdb/units.yaml +27 -217
- data/lib/unitsdb_ruby/unitsdb.rb +1 -0
- data/spec/conv_spec.rb +339 -109
- metadata +8 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dfcf63b9b9f9f447f63f744608bb19423025756a5f174a123acb5fbecb2143a4
|
4
|
+
data.tar.gz: a45ba18eb0b8090ba886453bedf91ed18f531afc31061a90e9f33a6bc6e0085b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 61c26594d8ab5b4ab07439085ce23de798b8f4e38c0272790a60d64a247f10a19778e4d0cbdb37b9a3a79d6994a6a14ebf97c0dd031551366019ebe2905c5612
|
7
|
+
data.tar.gz: e60ff3e91ff37a31ac3d5ac0beccb30c5f05c9c9590e1cc0dd01915ff1c9b57520af1d11b14c1b718173d7258a41b318f67db4a509ccd3ed3b4af43501b50d87
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
.rubocop-https--*
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
# This project follows the Ribose OSS style guide.
|
2
|
+
# https://github.com/riboseinc/oss-guides
|
3
|
+
# All project-specific additions and overrides should be specified in this file.
|
4
|
+
inherit_from:
|
5
|
+
- https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
|
6
|
+
|
7
|
+
# local repo-specific modifications
|
8
|
+
|
9
|
+
AllCops:
|
10
|
+
DisplayCopNames: false
|
11
|
+
StyleGuideCopsOnly: false
|
12
|
+
TargetRubyVersion: 2.4
|
13
|
+
Rails:
|
14
|
+
Enabled: true
|
data/README.adoc
CHANGED
@@ -53,6 +53,8 @@ from UnitsDB. For example, `unitsml(cal_th/cm^2, name: langley)`.
|
|
53
53
|
The unit-string gives the canonical representation of the unit, but SYMBOL is what will be rendered.
|
54
54
|
For example, `unitsml(cal_th/cm^2, name: langley, symbol: La)`, or `unitsml(mm*s^-2, symbol: mm cdot s^-2)`.
|
55
55
|
(All variables in SYMBOL are rendered upright, as is the default for units.)
|
56
|
+
* `unitsml(unit-string, multiplier: SYMBOL)` provides an alternate symbol for the multiliper of
|
57
|
+
units. The options are an XML entity, or the values `space` or `nospace` (for which see discussion under _Usage_).
|
56
58
|
|
57
59
|
Standalone prefixes can be recognised by replacing the unit with hyphen; so `unitsml(p-)` corresponds
|
58
60
|
to the standalone prefix "pico" (and is rendered as "p").
|
@@ -230,7 +232,7 @@ This table can be generated (in Asciidoc format) through `Asciimath2UnitsML::Con
|
|
230
232
|
| ton | ton of TNT (energy equivalent): `ton_TNT` | ton of refrigeration (12 000 Btu_IT/h): `ton_refrigeration` | | | |
|
231
233
|
| tsp | teaspoon: `tsp` | teaspoon (FDA): `tsp_label` | | | |
|
232
234
|
| yd | yard: `yd` | yard (based on US survey foot): `yd_US_survey` | | | |
|
233
|
-
| &#
|
235
|
+
| ° | degree (degree of arc): `deg` | | | | |
|
234
236
|
| γ | gamma: `gamma` | | | | |
|
235
237
|
| μ | micron: `micron` | | | | |
|
236
238
|
| Ω | ohm: `Ohm` | | | | |
|
@@ -258,3 +260,4 @@ This table can be generated (in Asciidoc format) through `Asciimath2UnitsML::Con
|
|
258
260
|
| °R | degree Rankine: `degR` | | | | |
|
259
261
|
| ƛ~C~ | natural unit of length: `lambda-bar_C` | | | | |
|
260
262
|
|===
|
263
|
+
|
data/asciimath2unitsml.gemspec
CHANGED
@@ -57,7 +57,7 @@ Gem::Specification.new do |spec|
|
|
57
57
|
spec.add_development_dependency "guard-rspec", "~> 4.7"
|
58
58
|
spec.add_development_dependency "rake", "~> 12.0"
|
59
59
|
spec.add_development_dependency "rspec", "~> 3.6"
|
60
|
-
spec.add_development_dependency "rubocop", "
|
60
|
+
spec.add_development_dependency "rubocop", "~> 1.5.2"
|
61
61
|
spec.add_development_dependency "simplecov", "~> 0.15"
|
62
62
|
spec.add_development_dependency "timecop", "~> 0.9"
|
63
63
|
spec.add_development_dependency "rexml"
|
@@ -10,21 +10,25 @@ require_relative "unit"
|
|
10
10
|
|
11
11
|
module Asciimath2UnitsML
|
12
12
|
MATHML_NS = "http://www.w3.org/1998/Math/MathML".freeze
|
13
|
-
UNITSML_NS = "
|
13
|
+
UNITSML_NS = "https://schema.unitsml.org/unitsml/1.0".freeze
|
14
14
|
|
15
15
|
class Conv
|
16
16
|
def initialize(options = {})
|
17
|
-
@dimensions_id = read_yaml("../unitsdb/dimensions.yaml").
|
17
|
+
@dimensions_id = read_yaml("../unitsdb/dimensions.yaml").
|
18
|
+
each_with_object({}) do |(k, v), m|
|
18
19
|
m[k.to_s] = UnitsDB::Dimension.new(k, v)
|
19
20
|
end
|
20
|
-
@prefixes_id = read_yaml("../unitsdb/prefixes.yaml").
|
21
|
+
@prefixes_id = read_yaml("../unitsdb/prefixes.yaml").
|
22
|
+
each_with_object({}) do |(k, v), m|
|
21
23
|
m[k] = UnitsDB::Prefix.new(k, v)
|
22
24
|
end
|
23
25
|
@prefixes = flip_name_and_symbol(@prefixes_id)
|
24
|
-
@quantities = read_yaml("../unitsdb/quantities.yaml").
|
26
|
+
@quantities = read_yaml("../unitsdb/quantities.yaml").
|
27
|
+
each_with_object({}) do |(k, v), m|
|
25
28
|
m[k.to_s] = UnitsDB::Quantity.new(k, v)
|
26
29
|
end
|
27
|
-
@units_id = read_yaml("../unitsdb/units.yaml").
|
30
|
+
@units_id = read_yaml("../unitsdb/units.yaml").
|
31
|
+
each_with_object({}) do |(k, v), m|
|
28
32
|
m[k.to_s] = UnitsDB::Unit.new(k.to_s, v)
|
29
33
|
end
|
30
34
|
@units = flip_name_and_symbols(@units_id)
|
@@ -48,7 +52,7 @@ module Asciimath2UnitsML
|
|
48
52
|
<PrefixSymbol type="ASCII">#{@prefixes[p].ascii}</PrefixSymbol>
|
49
53
|
<PrefixSymbol type="unicode">#{@prefixes[p].unicode}</PrefixSymbol>
|
50
54
|
<PrefixSymbol type="LaTeX">#{@prefixes[p].latex}</PrefixSymbol>
|
51
|
-
<PrefixSymbol type="HTML">#{
|
55
|
+
<PrefixSymbol type="HTML">#{htmlent @prefixes[p].html}</PrefixSymbol>
|
52
56
|
</Prefix>
|
53
57
|
END
|
54
58
|
end.join("\n")
|
@@ -63,9 +67,26 @@ module Asciimath2UnitsML
|
|
63
67
|
END
|
64
68
|
end
|
65
69
|
|
70
|
+
U2D = {
|
71
|
+
"m" => { dimension: "Length", order: 1, symbol: "L" },
|
72
|
+
"g" => { dimension: "Mass", order: 2, symbol: "M" },
|
73
|
+
"kg" => { dimension: "Mass", order: 2, symbol: "M" },
|
74
|
+
"s" => { dimension: "Time", order: 3, symbol: "T" },
|
75
|
+
"A" => { dimension: "ElectricCurrent", order: 4, symbol: "I" },
|
76
|
+
"K" => { dimension: "ThermodynamicTemperature", order: 5,
|
77
|
+
symbol: "Theta" },
|
78
|
+
"degK" => { dimension: "ThermodynamicTemperature", order: 5,
|
79
|
+
symbol: "Theta" },
|
80
|
+
"mol" => { dimension: "AmountOfSubstance", order: 6, symbol: "N" },
|
81
|
+
"cd" => { dimension: "LuminousIntensity", order: 7, symbol: "J" },
|
82
|
+
"deg" => { dimension: "PlaneAngle", order: 8, symbol: "Phi" },
|
83
|
+
}.freeze
|
84
|
+
|
66
85
|
def units2dimensions(units)
|
67
86
|
norm = decompose_units(units)
|
68
|
-
return if norm.any?
|
87
|
+
return if norm.any? do |u|
|
88
|
+
u[:unit] == "unknown" || u[:prefix] == "unknown" || u[:unit].nil?
|
89
|
+
end
|
69
90
|
norm.map do |u|
|
70
91
|
{ dimension: U2D[u[:unit]][:dimension],
|
71
92
|
unit: u[:unit],
|
@@ -75,7 +96,8 @@ module Asciimath2UnitsML
|
|
75
96
|
end
|
76
97
|
|
77
98
|
def dimension1(u)
|
78
|
-
%(<#{u[:dimension]} symbol="#{u[:symbol]}"
|
99
|
+
%(<#{u[:dimension]} symbol="#{u[:symbol]}"
|
100
|
+
powerNumerator="#{float_to_display(u[:exponent])}"/>)
|
79
101
|
end
|
80
102
|
|
81
103
|
def dim_id(dims)
|
@@ -84,9 +106,11 @@ module Asciimath2UnitsML
|
|
84
106
|
dimsvector = %w(Length Mass Time ElectricCurrent ThermodynamicTemperature
|
85
107
|
AmountOfSubstance LuminousIntensity PlaneAngle)
|
86
108
|
.map { |h| dimhash.dig(h, :exponent) }.join(":")
|
87
|
-
id = @dimensions_id&.values&.select { |d| d.vector == dimsvector }&.
|
109
|
+
id = @dimensions_id&.values&.select { |d| d.vector == dimsvector }&.
|
110
|
+
first&.id and return id.to_s
|
88
111
|
"D_" + dims.map do |d|
|
89
|
-
U2D[d[:unit]][:symbol] +
|
112
|
+
U2D[d[:unit]][:symbol] +
|
113
|
+
(d[:exponent] == 1 ? "" : float_to_display(d[:exponent]))
|
90
114
|
end.join("")
|
91
115
|
end
|
92
116
|
|
@@ -98,9 +122,12 @@ module Asciimath2UnitsML
|
|
98
122
|
units.sort { |a, b| a[:unit] <=> b[:unit] }.each_with_object([]) do |k, m|
|
99
123
|
if m.empty? || m[-1][:unit] != k[:unit] then m << k
|
100
124
|
else
|
101
|
-
m[-1] = {
|
102
|
-
|
103
|
-
|
125
|
+
m[-1] = {
|
126
|
+
prefix: combine_prefixes(
|
127
|
+
@prefixes[m[-1][:prefix]], @prefixes[k[:prefix]]),
|
128
|
+
unit: m[-1][:unit],
|
129
|
+
exponent: (k[:exponent]&.to_f || 1) +
|
130
|
+
(m[-1][:exponent]&.to_f || 1) }
|
104
131
|
end
|
105
132
|
end
|
106
133
|
end
|
@@ -115,8 +142,10 @@ module Asciimath2UnitsML
|
|
115
142
|
{ prefix: u[:prefix], unit: "unknown", exponent: u[:exponent] }
|
116
143
|
else
|
117
144
|
@units[u[:unit]].si_derived_bases.each_with_object([]) do |k, m|
|
118
|
-
|
119
|
-
|
145
|
+
prefix = !k[:prefix].nil? && !k[:prefix].empty? ?
|
146
|
+
combine_prefixes(@prefixes_id[k[:prefix]], @prefixes[u[:prefix]]) :
|
147
|
+
u[:prefix]
|
148
|
+
m << { prefix: prefix,
|
120
149
|
unit: @units_id[k[:id]].symbolid,
|
121
150
|
exponent: (k[:power]&.to_i || 1) * (u[:exponent]&.to_f || 1) }
|
122
151
|
end
|
@@ -143,9 +172,11 @@ module Asciimath2UnitsML
|
|
143
172
|
end
|
144
173
|
|
145
174
|
def quantity(normtext, quantity)
|
146
|
-
return unless @units[normtext] && @units[normtext].quantities.size == 1 ||
|
175
|
+
return unless @units[normtext] && @units[normtext].quantities.size == 1 ||
|
176
|
+
@quantities[quantity]
|
147
177
|
id = quantity || @units[normtext].quantities.first
|
148
|
-
|
178
|
+
@units[normtext]&.dimension and
|
179
|
+
dim = %( dimensionURL="##{@units[normtext].dimension}")
|
149
180
|
<<~END
|
150
181
|
<Quantity xmlns='#{UNITSML_NS}' xml:id="#{id}"#{dim} quantityType="base">
|
151
182
|
#{quantityname(id)}
|
@@ -87,7 +87,7 @@ module Asciimath2UnitsML
|
|
87
87
|
prefix2 = /#{@prefixes.keys.select { |x| x.size == 2 }.join("|")}/.r
|
88
88
|
prefix1 = /#{@prefixes.keys.select { |x| x.size == 1 }.join("|")}/.r
|
89
89
|
unit_keys = @units.keys.reject do |k|
|
90
|
-
|
90
|
+
/\*|\^|\/|^1$/.match(k) || @units[k].prefixed
|
91
91
|
end.map { |k| Regexp.escape(k) }
|
92
92
|
unit1 = /#{unit_keys.sort_by(&:length).reverse.join("|")}/.r
|
93
93
|
exponent = /\^\(-?\d+\)/.r.map { |m| m.sub(/\^/, "").gsub(/[()]/, "") } |
|
@@ -123,11 +123,12 @@ module Asciimath2UnitsML
|
|
123
123
|
quantity = text[1..-1]&.select { |x| /^quantity:/.match(x) }&.first&.sub(/^quantity:\s*/, "")
|
124
124
|
name = text[1..-1]&.select { |x| /^name:/.match(x) }&.first&.sub(/^name:\s*/, "")
|
125
125
|
symbol = text[1..-1]&.select { |x| /^symbol:/.match(x) }&.first&.sub(/^symbol:\s*/, "")
|
126
|
+
multiplier = text[1..-1]&.select { |x| /^multiplier:/.match(x) }&.first&.sub(/^multiplier:\s*/, "")
|
126
127
|
normtext = units_only(units).each.map do |u|
|
127
128
|
exp = u[:exponent] && u[:exponent] != "1" ? "^#{u[:exponent]}" : ""
|
128
129
|
"#{u[:prefix]}#{u[:unit]}#{exp}"
|
129
130
|
end.join("*")
|
130
|
-
[units, text[0], normtext, quantity, name, symbol]
|
131
|
+
[units, text[0], normtext, quantity, name, symbol, multiplier]
|
131
132
|
end
|
132
133
|
|
133
134
|
def postprocess1(units)
|
@@ -143,19 +144,6 @@ module Asciimath2UnitsML
|
|
143
144
|
end
|
144
145
|
end
|
145
146
|
|
146
|
-
U2D = {
|
147
|
-
"m" => { dimension: "Length", order: 1, symbol: "L" },
|
148
|
-
"g" => { dimension: "Mass", order: 2, symbol: "M" },
|
149
|
-
"kg" => { dimension: "Mass", order: 2, symbol: "M" },
|
150
|
-
"s" => { dimension: "Time", order: 3, symbol: "T" },
|
151
|
-
"A" => { dimension: "ElectricCurrent", order: 4, symbol: "I" },
|
152
|
-
"K" => { dimension: "ThermodynamicTemperature", order: 5, symbol: "Theta" },
|
153
|
-
"degK" => { dimension: "ThermodynamicTemperature", order: 5, symbol: "Theta" },
|
154
|
-
"mol" => { dimension: "AmountOfSubstance", order: 6, symbol: "N" },
|
155
|
-
"cd" => { dimension: "LuminousIntensity", order: 7, symbol: "J" },
|
156
|
-
"deg" => { dimension: "PlaneAngle", order: 8, symbol: "Phi" },
|
157
|
-
}.freeze
|
158
|
-
|
159
147
|
def Asciimath2UnitsML(expression)
|
160
148
|
xml = Nokogiri::XML(asciimath2mathml(expression))
|
161
149
|
MathML2UnitsML(xml).to_xml
|
@@ -167,18 +155,22 @@ module Asciimath2UnitsML
|
|
167
155
|
xml.xpath(".//m:mtext", "m" => MATHML_NS).each do |x|
|
168
156
|
next unless %r{^unitsml\(.+\)$}.match(x.text)
|
169
157
|
text = x.text.sub(%r{^unitsml\((.+)\)$}m, "\\1")
|
170
|
-
units, origtext, normtext, quantity, name, symbol = parse(text)
|
171
|
-
rendering = symbol ? embeddedmathml(asciimath2mathml(symbol)) :
|
172
|
-
|
173
|
-
x.replace("#{
|
158
|
+
units, origtext, normtext, quantity, name, symbol, multiplier = parse(text)
|
159
|
+
rendering = symbol ? embeddedmathml(asciimath2mathml(symbol)) :
|
160
|
+
mathmlsymbol(units, false, multiplier)
|
161
|
+
x.replace("#{delimspace(rendering, x)}<mrow xref='#{unit_id(origtext)}'>#{rendering}</mrow>\n"\
|
174
162
|
"#{unitsml(units, origtext, normtext, quantity, name)}")
|
175
163
|
end
|
176
164
|
dedup_ids(xml)
|
177
165
|
end
|
178
166
|
|
179
|
-
|
180
|
-
|
181
|
-
|
167
|
+
# if previous sibling's last descendent non-whitespace is MathML and mn or mi, no space
|
168
|
+
def delimspace(rendering, elem)
|
169
|
+
prec_text_elem = elem.xpath("./preceding-sibling::*[namespace-uri() = '#{MATHML_NS}']/"\
|
170
|
+
"descendant::text()[normalize-space()!=''][last()]/parent::*").last
|
171
|
+
return "" if prec_text_elem.nil? || !%w(mn mi).include?(prec_text_elem&.name)
|
172
|
+
text = HTMLEntities.new.encode(Nokogiri::XML("<mrow>#{rendering}</mrow>").text.strip)
|
173
|
+
/\p{L}|\p{N}/.match(text) ?
|
182
174
|
"<mo rspace='thickmathspace'>⁢</mo>" : "<mo>⁢</mo>"
|
183
175
|
end
|
184
176
|
|
@@ -15,6 +15,11 @@ module Asciimath2UnitsML
|
|
15
15
|
@symbols[unit][style] || unit
|
16
16
|
end
|
17
17
|
|
18
|
+
def htmlent(x)
|
19
|
+
HTMLEntities.new.decode(x).split(/([<>&])/)
|
20
|
+
.map { |c| /[<>'"]/.match(c) ? c : HTMLEntities.new.encode(c, :hexadecimal) }.join
|
21
|
+
end
|
22
|
+
|
18
23
|
def htmlsymbol(units, normalise)
|
19
24
|
units.map do |u|
|
20
25
|
if u[:multiplier] then u[:multiplier] == "*" ? @multiplier[:html] : u[:multiplier]
|
@@ -37,11 +42,12 @@ module Asciimath2UnitsML
|
|
37
42
|
base
|
38
43
|
end
|
39
44
|
|
40
|
-
def mathmlsymbol(units, normalise)
|
45
|
+
def mathmlsymbol(units, normalise, multiplier = nil)
|
46
|
+
multiplier = multiplier ? "<mo>#{multiplier}</mo>" : @multiplier[:mathml]
|
41
47
|
exp = units.map do |u|
|
42
|
-
if u[:multiplier] then u[:multiplier] == "*" ?
|
48
|
+
if u[:multiplier] then u[:multiplier] == "*" ? multiplier : "<mo>#{u[:multiplier]}</mo>"
|
43
49
|
elsif u[:unit].nil? && u[:prefix]
|
44
|
-
%(<mi mathvariant='normal'>#{@prefixes[u[:prefix]].html}</mi>)
|
50
|
+
%(<mi mathvariant='normal'>#{htmlent(@prefixes[u[:prefix]].html)}</mi>)
|
45
51
|
else
|
46
52
|
mathmlsymbol1(u, normalise)
|
47
53
|
end
|
@@ -51,9 +57,10 @@ module Asciimath2UnitsML
|
|
51
57
|
def mathmlsymbol1(u, normalise)
|
52
58
|
base = render(normalise ? @units[u[:unit]].symbolid : u[:unit], :mathml)
|
53
59
|
if u[:prefix]
|
60
|
+
prefix = htmlent(@prefixes[u[:prefix]].html)
|
54
61
|
base = base.match(/<mi mathvariant='normal'>/) ?
|
55
|
-
base.sub(/<mi mathvariant='normal'>/, "<mi mathvariant='normal'>#{
|
56
|
-
"<mrow><mi mathvariant='normal'>#{
|
62
|
+
base.sub(/<mi mathvariant='normal'>/, "<mi mathvariant='normal'>#{prefix}") :
|
63
|
+
"<mrow><mi mathvariant='normal'>#{prefix}#{base}</mrow>"
|
57
64
|
end
|
58
65
|
mathmlsymbol_exponent(u, base)
|
59
66
|
end
|
@@ -7,7 +7,7 @@ module Asciimath2UnitsML
|
|
7
7
|
def unit_id(text)
|
8
8
|
text = text.gsub(/[()]/, "")
|
9
9
|
/-$/.match(text) and return @prefixes[text.sub(/-$/, "")].id
|
10
|
-
"U_" + (@units[text] ? @units[text].id : text.gsub(/\*/, ".").gsub(/\^/, ""))
|
10
|
+
"U_" + (@units[text] ? @units[text].id.gsub(/'/, "_") : text.gsub(/\*/, ".").gsub(/\^/, ""))
|
11
11
|
end
|
12
12
|
|
13
13
|
def unit(units, origtext, normtext, dims, name)
|
data/lib/unitsdb/dimensions.yaml
CHANGED
@@ -753,50 +753,50 @@ NISTd75:
|
|
753
753
|
powerNumerator: 1
|
754
754
|
symbol: I
|
755
755
|
|
756
|
-
NISTd85:
|
757
|
-
|
756
|
+
#NISTd85:
|
757
|
+
#dimensionless: true
|
758
758
|
|
759
|
-
NISTd84:
|
760
|
-
|
759
|
+
#NISTd84:
|
760
|
+
#dimensionless: true
|
761
761
|
|
762
|
-
NISTd87:
|
763
|
-
|
762
|
+
#NISTd87:
|
763
|
+
#dimensionless: true
|
764
764
|
|
765
|
-
NISTd86:
|
766
|
-
|
765
|
+
#NISTd86:
|
766
|
+
#dimensionless: true
|
767
767
|
|
768
|
-
NISTd81:
|
769
|
-
|
768
|
+
#NISTd81:
|
769
|
+
#dimensionless: true
|
770
770
|
|
771
771
|
NISTd80:
|
772
|
-
|
772
|
+
dimensionless: true
|
773
773
|
|
774
|
-
NISTd83:
|
775
|
-
|
774
|
+
#NISTd83:
|
775
|
+
#dimensionless: true
|
776
776
|
|
777
|
-
NISTd82:
|
778
|
-
|
777
|
+
#NISTd82:
|
778
|
+
#dimensionless: true
|
779
779
|
|
780
|
-
NISTd95:
|
781
|
-
|
780
|
+
#NISTd95:
|
781
|
+
#dimensionless: true
|
782
782
|
|
783
|
-
NISTd94:
|
784
|
-
|
783
|
+
#NISTd94:
|
784
|
+
#dimensionless: true
|
785
785
|
|
786
|
-
NISTd89:
|
787
|
-
|
786
|
+
#NISTd89:
|
787
|
+
#dimensionless: true
|
788
788
|
|
789
|
-
NISTd88:
|
790
|
-
|
789
|
+
#NISTd88:
|
790
|
+
#dimensionless: true
|
791
791
|
|
792
|
-
NISTd91:
|
793
|
-
|
792
|
+
#NISTd91:
|
793
|
+
#dimensionless: true
|
794
794
|
|
795
|
-
NISTd90:
|
796
|
-
|
795
|
+
#NISTd90:
|
796
|
+
#dimensionless: true
|
797
797
|
|
798
|
-
NISTd92:
|
799
|
-
|
798
|
+
#NISTd92:
|
799
|
+
#dimensionless: true
|
800
800
|
|
801
|
-
NISTd93:
|
802
|
-
|
801
|
+
#NISTd93:
|
802
|
+
#dimensionless: true
|
data/lib/unitsdb/quantities.yaml
CHANGED
@@ -1153,13 +1153,13 @@ NISTq88:
|
|
1153
1153
|
url: "#NISTu14.u10e-1/1"
|
1154
1154
|
|
1155
1155
|
NISTq111:
|
1156
|
-
dimension_url: "#
|
1156
|
+
dimension_url: "#NISTd80"
|
1157
1157
|
quantity_type: derived
|
1158
1158
|
quantity_name:
|
1159
1159
|
- rotation
|
1160
1160
|
unit_reference:
|
1161
1161
|
- name: one
|
1162
|
-
url: "#
|
1162
|
+
url: "#NISTu61"
|
1163
1163
|
|
1164
1164
|
NISTq112:
|
1165
1165
|
dimension_url: "#NISTd24"
|
@@ -1234,13 +1234,13 @@ NISTq118:
|
|
1234
1234
|
url: "#NISTu154"
|
1235
1235
|
|
1236
1236
|
NISTq121:
|
1237
|
-
dimension_url: "#
|
1237
|
+
dimension_url: "#NISTd80"
|
1238
1238
|
quantity_type: derived
|
1239
1239
|
quantity_name:
|
1240
1240
|
- logarithmic decrement
|
1241
1241
|
unit_reference:
|
1242
1242
|
- name: one
|
1243
|
-
url: "#
|
1243
|
+
url: "#NISTu61"
|
1244
1244
|
- name: neper
|
1245
1245
|
url: "#NISTu153"
|
1246
1246
|
|
@@ -1385,14 +1385,14 @@ NISTq124:
|
|
1385
1385
|
url: "#NISTu1e-1/1"
|
1386
1386
|
|
1387
1387
|
NISTq125:
|
1388
|
-
dimension_url: "#
|
1388
|
+
dimension_url: "#NISTd80"
|
1389
1389
|
quantity_type: derived
|
1390
1390
|
quantity_name:
|
1391
1391
|
- relative mass density
|
1392
1392
|
- relative density
|
1393
1393
|
unit_reference:
|
1394
1394
|
- name: one
|
1395
|
-
url: "#
|
1395
|
+
url: "#NISTu61"
|
1396
1396
|
|
1397
1397
|
NISTq122:
|
1398
1398
|
dimension_url: "#NISTd29"
|
@@ -1546,22 +1546,22 @@ NISTq71:
|
|
1546
1546
|
url: "#NISTu293"
|
1547
1547
|
|
1548
1548
|
NISTq137:
|
1549
|
-
dimension_url: "#
|
1549
|
+
dimension_url: "#NISTd80"
|
1550
1550
|
quantity_type: derived
|
1551
1551
|
quantity_name:
|
1552
1552
|
- shear strain
|
1553
1553
|
unit_reference:
|
1554
1554
|
- name: one
|
1555
|
-
url: "#
|
1555
|
+
url: "#NISTu61"
|
1556
1556
|
|
1557
1557
|
NISTq138:
|
1558
|
-
dimension_url: "#
|
1558
|
+
dimension_url: "#NISTd80"
|
1559
1559
|
quantity_type: derived
|
1560
1560
|
quantity_name:
|
1561
1561
|
- volume strain
|
1562
1562
|
unit_reference:
|
1563
1563
|
- name: one
|
1564
|
-
url: "#
|
1564
|
+
url: "#NISTu61"
|
1565
1565
|
|
1566
1566
|
NISTq139:
|
1567
1567
|
dimension_url: "#NISTd63"
|
@@ -1637,13 +1637,13 @@ NISTq135:
|
|
1637
1637
|
url: "#NISTu12"
|
1638
1638
|
|
1639
1639
|
NISTq136:
|
1640
|
-
dimension_url: "#
|
1640
|
+
dimension_url: "#NISTd80"
|
1641
1641
|
quantity_type: derived
|
1642
1642
|
quantity_name:
|
1643
1643
|
- linear strain
|
1644
1644
|
unit_reference:
|
1645
1645
|
- name: one
|
1646
|
-
url: "#
|
1646
|
+
url: "#NISTu61"
|
1647
1647
|
|
1648
1648
|
NISTq21:
|
1649
1649
|
dimension_url: "#NISTd16"
|
@@ -1672,13 +1672,13 @@ NISTq141:
|
|
1672
1672
|
url: "#NISTu12"
|
1673
1673
|
|
1674
1674
|
NISTq140:
|
1675
|
-
dimension_url: "#
|
1675
|
+
dimension_url: "#NISTd80"
|
1676
1676
|
quantity_type: derived
|
1677
1677
|
quantity_name:
|
1678
1678
|
- Poisson number
|
1679
1679
|
unit_reference:
|
1680
1680
|
- name: one
|
1681
|
-
url: "#
|
1681
|
+
url: "#NISTu61"
|
1682
1682
|
|
1683
1683
|
NISTq22:
|
1684
1684
|
dimension_url: "#NISTd17"
|
@@ -1840,13 +1840,13 @@ NISTq146:
|
|
1840
1840
|
url: "#NISTu209"
|
1841
1841
|
|
1842
1842
|
NISTq147:
|
1843
|
-
dimension_url: "#
|
1843
|
+
dimension_url: "#NISTd80"
|
1844
1844
|
quantity_type: derived
|
1845
1845
|
quantity_name:
|
1846
1846
|
- dynamic friction factor
|
1847
1847
|
unit_reference:
|
1848
1848
|
- name: one
|
1849
|
-
url: "#
|
1849
|
+
url: "#NISTu61"
|
1850
1850
|
|
1851
1851
|
NISTq144:
|
1852
1852
|
dimension_url: "#NISTd57"
|
@@ -2387,13 +2387,13 @@ NISTq95:
|
|
2387
2387
|
url: "#NISTu1"
|
2388
2388
|
|
2389
2389
|
NISTq94:
|
2390
|
-
dimension_url: "#
|
2390
|
+
dimension_url: "#NISTd80"
|
2391
2391
|
quantity_type: derived
|
2392
2392
|
quantity_name:
|
2393
2393
|
- relative permeability
|
2394
2394
|
unit_reference:
|
2395
2395
|
- name: one
|
2396
|
-
url: "#
|
2396
|
+
url: "#NISTu61"
|
2397
2397
|
|
2398
2398
|
NISTq97:
|
2399
2399
|
dimension_url: "#NISTd1"
|
@@ -2413,7 +2413,6 @@ NISTq96:
|
|
2413
2413
|
- name: meter
|
2414
2414
|
url: "#NISTu1"
|
2415
2415
|
|
2416
|
-
|
2417
2416
|
NISTq40:
|
2418
2417
|
dimension_url: "#NISTd25"
|
2419
2418
|
quantity_type: derived
|
@@ -2457,4 +2456,12 @@ NISTq1001:
|
|
2457
2456
|
- name: var
|
2458
2457
|
url: "#NISTu401"
|
2459
2458
|
|
2459
|
+
NISTq1002:
|
2460
|
+
dimension_url: "#NISTd80"
|
2461
|
+
quantity_type: derived
|
2462
|
+
quantity_name:
|
2463
|
+
- nil
|
2464
|
+
unit_reference:
|
2465
|
+
- name: one
|
2466
|
+
url: "#NISTu61"
|
2460
2467
|
|