unit_measurements 3.8.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +26 -2
- data/Gemfile.lock +1 -1
- data/README.md +68 -80
- data/lib/unit_measurements/arithmetic.rb +4 -4
- data/lib/unit_measurements/base.rb +2 -3
- data/lib/unit_measurements/comparison.rb +2 -1
- data/lib/unit_measurements/conversion.rb +5 -5
- data/lib/unit_measurements/errors/primitive_unit_already_set_error.rb +11 -0
- data/lib/unit_measurements/formatter.rb +2 -2
- data/lib/unit_measurements/math.rb +5 -5
- data/lib/unit_measurements/measurement.rb +5 -11
- data/lib/unit_measurements/normalizer.rb +21 -28
- data/lib/unit_measurements/unit.rb +8 -5
- data/lib/unit_measurements/unit_group.rb +41 -7
- data/lib/unit_measurements/unit_group_builder.rb +10 -27
- data/lib/unit_measurements/unit_groups/acceleration.rb +8 -6
- data/lib/unit_measurements/unit_groups/all.rb +6 -6
- data/lib/unit_measurements/unit_groups/amount_of_substance.rb +4 -4
- data/lib/unit_measurements/unit_groups/angular_acceleration.rb +5 -5
- data/lib/unit_measurements/unit_groups/angular_velocity.rb +14 -14
- data/lib/unit_measurements/unit_groups/area.rb +8 -10
- data/lib/unit_measurements/unit_groups/density.rb +7 -8
- data/lib/unit_measurements/unit_groups/electric_charge.rb +7 -9
- data/lib/unit_measurements/unit_groups/electric_conductance.rb +18 -0
- data/lib/unit_measurements/unit_groups/electric_current.rb +6 -8
- data/lib/unit_measurements/unit_groups/electric_potential.rb +19 -0
- data/lib/unit_measurements/unit_groups/electrical_capacitance.rb +18 -0
- data/lib/unit_measurements/unit_groups/electrical_elastance.rb +13 -0
- data/lib/unit_measurements/unit_groups/electrical_inductance.rb +18 -0
- data/lib/unit_measurements/unit_groups/electrical_resistance.rb +19 -0
- data/lib/unit_measurements/unit_groups/force.rb +9 -11
- data/lib/unit_measurements/unit_groups/length.rb +7 -9
- data/lib/unit_measurements/unit_groups/luminous_intensity.rb +4 -4
- data/lib/unit_measurements/unit_groups/magnetic_field.rb +4 -4
- data/lib/unit_measurements/unit_groups/magnetic_flux.rb +6 -7
- data/lib/unit_measurements/unit_groups/magnetic_induction.rb +4 -6
- data/lib/unit_measurements/unit_groups/plane_angle.rb +11 -10
- data/lib/unit_measurements/unit_groups/quantity.rb +7 -5
- data/lib/unit_measurements/unit_groups/solid_angle.rb +7 -7
- data/lib/unit_measurements/unit_groups/sound_level.rb +4 -4
- data/lib/unit_measurements/unit_groups/temperature.rb +4 -4
- data/lib/unit_measurements/unit_groups/time.rb +13 -12
- data/lib/unit_measurements/unit_groups/velocity.rb +12 -16
- data/lib/unit_measurements/unit_groups/volume.rb +12 -14
- data/lib/unit_measurements/unit_groups/weight.rb +5 -5
- data/lib/unit_measurements/version.rb +1 -1
- data/units.md +72 -72
- metadata +9 -10
- data/lib/unit_measurements/unit_groups/capacitance.rb +0 -19
- data/lib/unit_measurements/unit_groups/conductance.rb +0 -19
- data/lib/unit_measurements/unit_groups/elastance.rb +0 -12
- data/lib/unit_measurements/unit_groups/inductance.rb +0 -19
- data/lib/unit_measurements/unit_groups/resistance.rb +0 -20
- data/lib/unit_measurements/unit_groups/voltage.rb +0 -21
- data/lib/unit_measurements/unit_methods.rb +0 -45
- data/lib/unit_measurements/unit_system.rb +0 -29
@@ -4,6 +4,21 @@
|
|
4
4
|
|
5
5
|
module UnitMeasurements
|
6
6
|
class Normalizer
|
7
|
+
EXPONENTS_SYMBOLS = {
|
8
|
+
"⁰" => "0",
|
9
|
+
"¹" => "1",
|
10
|
+
"²" => "2",
|
11
|
+
"³" => "3",
|
12
|
+
"⁴" => "4",
|
13
|
+
"⁵" => "5",
|
14
|
+
"⁶" => "6",
|
15
|
+
"⁷" => "7",
|
16
|
+
"⁸" => "8",
|
17
|
+
"⁹" => "9",
|
18
|
+
"⁺" => "+",
|
19
|
+
"⁻" => "-",
|
20
|
+
}.freeze
|
21
|
+
|
7
22
|
FRACTIONS_SYMBOLS = {
|
8
23
|
"¼" => "1/4",
|
9
24
|
"½" => "1/2",
|
@@ -24,46 +39,24 @@ module UnitMeasurements
|
|
24
39
|
"⅑" => "1/9",
|
25
40
|
"⅒" => "1/10",
|
26
41
|
"↉" => "0/3",
|
27
|
-
"⁄" => "/"
|
28
42
|
}.freeze
|
29
43
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
"²" => "2",
|
34
|
-
"³" => "3",
|
35
|
-
"⁴" => "4",
|
36
|
-
"⁵" => "5",
|
37
|
-
"⁶" => "6",
|
38
|
-
"⁷" => "7",
|
39
|
-
"⁸" => "8",
|
40
|
-
"⁹" => "9",
|
41
|
-
"⁺" => "+",
|
42
|
-
"⁻" => "-",
|
43
|
-
}
|
44
|
-
|
45
|
-
FRACTION_REGEX = /(#{FRACTIONS_SYMBOLS.keys.join("|")})/
|
46
|
-
EXPONENT_REGEX = /([\d]+[Ee]?[+-]?)(#{EXPONENTS_SYMBOLS.keys.join("|")})/
|
47
|
-
RATIO_REGEX = /([\d]+):([\d]+)/
|
44
|
+
EXPONENT_REGEX = /([\d]+[Ee]?[+-]?)(#{EXPONENTS_SYMBOLS.keys.join("|")})/.freeze
|
45
|
+
FRACTION_REGEX = /(#{FRACTIONS_SYMBOLS.keys.join("|")})/.freeze
|
46
|
+
RATIO_REGEX = /([\d]+):([\d]+)/.freeze
|
48
47
|
|
49
48
|
class << self
|
50
49
|
def normalize(string)
|
51
50
|
string.dup.tap do |str|
|
52
|
-
if str =~ Regexp.new(FRACTION_REGEX)
|
53
|
-
FRACTIONS_SYMBOLS.each do |search, replace|
|
54
|
-
str.gsub!(search) { " #{replace}" }
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
51
|
if str =~ Regexp.new(EXPONENT_REGEX)
|
59
52
|
EXPONENTS_SYMBOLS.each do |search, replace|
|
60
53
|
str.gsub!(search) { "#{replace}" }
|
61
54
|
end
|
62
55
|
end
|
63
56
|
|
64
|
-
|
65
|
-
|
66
|
-
|
57
|
+
str.gsub!(FRACTION_REGEX) { " #{FRACTIONS_SYMBOLS[$1]}" }
|
58
|
+
|
59
|
+
str.gsub!(RATIO_REGEX) { "#{$1.to_i}/#{$2.to_i}" }
|
67
60
|
|
68
61
|
str.strip!
|
69
62
|
end
|
@@ -6,20 +6,22 @@ require "set"
|
|
6
6
|
|
7
7
|
module UnitMeasurements
|
8
8
|
class Unit
|
9
|
-
attr_reader :name, :value, :aliases, :unit_group
|
9
|
+
attr_reader :name, :value, :aliases, :system, :unit_group
|
10
10
|
|
11
|
-
def initialize(name, value:, aliases:, unit_group: nil)
|
11
|
+
def initialize(name, value:, aliases:, system:, unit_group: nil)
|
12
12
|
@name = name.to_s.freeze
|
13
13
|
@value = value
|
14
|
-
@aliases = Set.new(aliases.
|
14
|
+
@aliases = Set.new(aliases.map(&:to_s).sort.map(&:freeze)).freeze
|
15
|
+
@system = system
|
15
16
|
@unit_group = unit_group
|
16
17
|
end
|
17
18
|
|
18
|
-
def with(name: nil, value: nil, aliases: nil, unit_group: nil)
|
19
|
+
def with(name: nil, value: nil, aliases: nil, system: nil, unit_group: nil)
|
19
20
|
self.class.new(
|
20
21
|
(name || self.name),
|
21
22
|
value: (value || self.value),
|
22
23
|
aliases: (aliases || self.aliases),
|
24
|
+
system: (system || self.system),
|
23
25
|
unit_group: (unit_group || self.unit_group)
|
24
26
|
)
|
25
27
|
end
|
@@ -42,12 +44,13 @@ module UnitMeasurements
|
|
42
44
|
|
43
45
|
measurement_value, measurement_unit = parse_value(value)
|
44
46
|
conversion_factor = unit_group.unit_for!(measurement_unit).conversion_factor
|
47
|
+
|
45
48
|
conversion_factor * measurement_value
|
46
49
|
end
|
47
50
|
|
48
51
|
private
|
49
52
|
|
50
|
-
|
53
|
+
SI_DECIMAL_PREFIXES = [
|
51
54
|
["q", %w(quecto), 1e-30],
|
52
55
|
["r", %w(ronto), 1e-27],
|
53
56
|
["y", %w(yocto), 1e-24],
|
@@ -4,17 +4,51 @@
|
|
4
4
|
|
5
5
|
module UnitMeasurements
|
6
6
|
class UnitGroup
|
7
|
-
|
7
|
+
attr_reader :primitive, :units
|
8
8
|
|
9
|
-
|
10
|
-
|
11
|
-
def initialize(units, systems)
|
9
|
+
def initialize(primitive, units)
|
12
10
|
@units = units.map { |unit| unit.with(unit_group: self) }
|
13
|
-
@
|
11
|
+
@primitive = unit_for!(primitive) if primitive
|
12
|
+
end
|
13
|
+
|
14
|
+
def unit_for(name)
|
15
|
+
unit_name_to_unit(name)
|
16
|
+
end
|
17
|
+
|
18
|
+
def unit_for!(name)
|
19
|
+
unit = unit_for(name)
|
20
|
+
raise UnitError, name unless unit
|
21
|
+
|
22
|
+
unit
|
23
|
+
end
|
24
|
+
alias_method :[], :unit_for!
|
25
|
+
|
26
|
+
def unit_with_name_and_aliases
|
27
|
+
units.each_with_object({}) do |unit, hash|
|
28
|
+
unit.names.each { |name| hash[name.to_s] = unit }
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def unit_names
|
33
|
+
units.map(&:name).sort
|
34
|
+
end
|
35
|
+
|
36
|
+
def unit_names_with_aliases
|
37
|
+
units.flat_map(&:names).sort
|
38
|
+
end
|
39
|
+
|
40
|
+
def unit_name_to_unit(name)
|
41
|
+
unit_with_name_and_aliases[name.to_s]
|
42
|
+
end
|
43
|
+
|
44
|
+
def defined?(name)
|
45
|
+
unit = unit_for(name)
|
46
|
+
|
47
|
+
unit ? unit.name == name.to_s : false
|
14
48
|
end
|
15
49
|
|
16
|
-
def
|
17
|
-
|
50
|
+
def unit_or_alias?(name)
|
51
|
+
!!unit_for(name)
|
18
52
|
end
|
19
53
|
end
|
20
54
|
end
|
@@ -7,7 +7,7 @@ module UnitMeasurements
|
|
7
7
|
attr_reader :units
|
8
8
|
|
9
9
|
def initialize
|
10
|
-
@units
|
10
|
+
@units = []
|
11
11
|
end
|
12
12
|
|
13
13
|
def unit(name, value: 1.0, aliases: [])
|
@@ -19,19 +19,20 @@ module UnitMeasurements
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def build
|
22
|
-
UnitGroup.new(@
|
22
|
+
UnitGroup.new(@primitive, @units)
|
23
23
|
end
|
24
24
|
|
25
25
|
def system(system_name, &block)
|
26
|
-
@
|
26
|
+
@system = system_name
|
27
27
|
instance_eval(&block) if block_given?
|
28
|
-
@current_system.set_primitive(@current_primitive) if @current_primitive
|
29
28
|
ensure
|
30
|
-
@
|
29
|
+
@system = nil
|
31
30
|
end
|
32
31
|
|
33
32
|
def primitive(primitive)
|
34
|
-
|
33
|
+
raise PrimitiveUnitAlreadySetError if @primitive
|
34
|
+
|
35
|
+
@primitive = primitive
|
35
36
|
end
|
36
37
|
|
37
38
|
private
|
@@ -39,7 +40,7 @@ module UnitMeasurements
|
|
39
40
|
def build_si_units(name, value:, aliases:)
|
40
41
|
si_units = [build_unit(name, value: value, aliases: aliases)]
|
41
42
|
|
42
|
-
Unit::
|
43
|
+
Unit::SI_DECIMAL_PREFIXES.each do |short_prefix, long_prefix, multiplier|
|
43
44
|
si_aliases = long_prefix.product(aliases.to_a).flat_map do |prefix, unit|
|
44
45
|
aliases.map { |alias_unit| prefix + alias_unit.to_s }
|
45
46
|
end
|
@@ -50,9 +51,8 @@ module UnitMeasurements
|
|
50
51
|
end
|
51
52
|
|
52
53
|
def build_unit(name, value:, aliases:)
|
53
|
-
unit = Unit.new(name, value: value, aliases: aliases)
|
54
|
+
unit = Unit.new(name, value: value, aliases: aliases, system: @system)
|
54
55
|
check_for_duplicate_unit_names!(unit)
|
55
|
-
add_unit_to_system(unit)
|
56
56
|
|
57
57
|
unit
|
58
58
|
end
|
@@ -61,25 +61,8 @@ module UnitMeasurements
|
|
61
61
|
names = @units.flat_map(&:names)
|
62
62
|
|
63
63
|
if names.any? { |name| unit.names.include?(name) }
|
64
|
-
raise UnitAlreadyDefinedError
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
def find_system(name)
|
69
|
-
@systems.find { |system| system.name.to_s == name.to_s }
|
70
|
-
end
|
71
|
-
|
72
|
-
def find_or_create_system(system_name)
|
73
|
-
system = find_system(system_name)
|
74
|
-
unless system
|
75
|
-
system = UnitSystem.new(system_name)
|
76
|
-
@systems << system
|
64
|
+
raise UnitAlreadyDefinedError, unit.name
|
77
65
|
end
|
78
|
-
system
|
79
|
-
end
|
80
|
-
|
81
|
-
def add_unit_to_system(unit)
|
82
|
-
@current_system.add_unit(unit) if @current_system
|
83
66
|
end
|
84
67
|
end
|
85
68
|
end
|
@@ -3,19 +3,21 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::Acceleration = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :"m/s²"
|
6
|
+
primitive "m/s²"
|
8
7
|
|
9
|
-
|
8
|
+
system :metric do
|
9
|
+
si_unit "m/s²", aliases: ["m/s^2", "m·s⁻²", "meter per second squared", "meters per second squared", "metre per second squared", "metres per second squared"]
|
10
10
|
end
|
11
11
|
|
12
12
|
system :imperial do
|
13
|
-
unit
|
13
|
+
unit "in/s²", value: "0.0254 m/s²", aliases: ["in/s^2", "in·s⁻²", "inch per second squared", "inches per second squared"]
|
14
14
|
end
|
15
15
|
|
16
16
|
system :foot_pound_second do
|
17
|
-
unit
|
17
|
+
unit "ft/s²", value: "0.3048 m/s²", aliases: ["ft/s^2", "ft·s⁻²", "foot per second squared", "feet per second squared"]
|
18
18
|
end
|
19
19
|
|
20
|
-
|
20
|
+
system :meteorology_aviation_maritime do
|
21
|
+
unit "Kn/s", value: "0.5144444 m/s²", aliases: ["knot per second", "knots per second"]
|
22
|
+
end
|
21
23
|
end
|
@@ -22,16 +22,16 @@ require_relative "acceleration"
|
|
22
22
|
require_relative "angular_velocity"
|
23
23
|
require_relative "angular_acceleration"
|
24
24
|
require_relative "force"
|
25
|
-
require_relative "
|
25
|
+
require_relative "electric_potential"
|
26
26
|
require_relative "electric_charge"
|
27
|
-
require_relative "
|
28
|
-
require_relative "
|
29
|
-
require_relative "
|
30
|
-
require_relative "
|
27
|
+
require_relative "electric_conductance"
|
28
|
+
require_relative "electrical_capacitance"
|
29
|
+
require_relative "electrical_elastance"
|
30
|
+
require_relative "electrical_resistance"
|
31
|
+
require_relative "electrical_inductance"
|
31
32
|
require_relative "magnetic_flux"
|
32
33
|
require_relative "magnetic_induction"
|
33
34
|
require_relative "magnetic_field"
|
34
|
-
require_relative "inductance"
|
35
35
|
|
36
36
|
## Other units
|
37
37
|
|
@@ -3,11 +3,11 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::AmountOfSubstance = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :mol
|
6
|
+
primitive "mol"
|
8
7
|
|
9
|
-
|
8
|
+
system :metric do
|
9
|
+
si_unit "mol", aliases: ["mole", "moles"]
|
10
10
|
end
|
11
11
|
|
12
|
-
unit
|
12
|
+
unit "NA", value: "1.6605389210322e-24 mol", aliases: ["avogadro constant"]
|
13
13
|
end
|
@@ -3,12 +3,12 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::AngularAcceleration = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :"rad/s²"
|
6
|
+
primitive "rad/s²"
|
8
7
|
|
9
|
-
|
10
|
-
|
8
|
+
system :metric do
|
9
|
+
si_unit "rad/s²", aliases: ["rad/s^2", "rad·s⁻²", "radian per second squared", "radians per second squared"]
|
10
|
+
unit "gon/s²", value: [(Math::PI / 200), "rad/s²"], aliases: ["gon/s^2", "ᵍ/s²", "gon·s⁻²", "gradian per second squared", "gradians per second squared"]
|
11
11
|
end
|
12
12
|
|
13
|
-
unit
|
13
|
+
unit "deg/s²", value: [(Math::PI / 180), "rad/s²"], aliases: ["deg/s^2", "°/s²", "deg·s⁻²", "degree per second squared", "degrees per second squared"]
|
14
14
|
end
|
@@ -3,23 +3,23 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::AngularVelocity = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :"rad/s"
|
6
|
+
primitive "rad/s"
|
8
7
|
|
9
|
-
|
10
|
-
unit
|
11
|
-
unit
|
8
|
+
system :metric do
|
9
|
+
unit "rad/s", aliases: ["rad·s⁻¹", "radian per second", "radians per second"]
|
10
|
+
unit "rad/min", value: "1/60 rad/s", aliases: ["rad·min⁻¹", "radian per minute", "radians per minute"]
|
11
|
+
unit "rad/h", value: "1/60 rad/min", aliases: ["rad·h⁻¹", "radian per hour", "radians per hour"]
|
12
12
|
|
13
|
-
unit
|
14
|
-
unit
|
15
|
-
unit
|
13
|
+
unit "gon/s", value: [(Math::PI / 200), "rad/s"], aliases: ["ᵍ/s", "gon·s⁻¹", "gradian per second", "gradians per second"]
|
14
|
+
unit "gon/min", value: "1/60 gon/s", aliases: ["ᵍ/min", "gon·min⁻¹", "gradian per minute", "gradians per minute"]
|
15
|
+
unit "gon/h", value: "1/60 gon/min", aliases: ["ᵍ/h", "gon·h⁻¹", "gradian per hour", "gradians per hour"]
|
16
16
|
end
|
17
17
|
|
18
|
-
unit
|
19
|
-
unit
|
20
|
-
unit
|
18
|
+
unit "deg/s", value: [(Math::PI / 180), "rad/s"], aliases: ["°/s", "deg·s⁻¹", "degree per second", "degrees per second"]
|
19
|
+
unit "deg/min", value: "1/60 deg/s", aliases: ["°/min", "deg·min⁻¹", "degree per minute", "degrees per minute"]
|
20
|
+
unit "deg/h", value: "1/60 deg/min", aliases: ["°/h", "deg·h⁻¹", "degree per hour", "degrees per hour"]
|
21
21
|
|
22
|
-
unit
|
23
|
-
unit
|
24
|
-
unit
|
22
|
+
unit "rev/s", value: "360 deg/s", aliases: ["rev·s⁻¹", "revolution per second", "revolutions per second"]
|
23
|
+
unit "rev/min", value: "1/60 rev/s", aliases: ["rev·min⁻¹", "revolution per minute", "revolutions per minute"]
|
24
|
+
unit "rev/h", value: "1/60 rev/min", aliases: ["rev·h⁻¹", "revolution per hour", "revolutions per hour"]
|
25
25
|
end
|
@@ -3,19 +3,17 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::Area = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :m²
|
6
|
+
primitive "m²"
|
8
7
|
|
9
|
-
|
10
|
-
unit
|
8
|
+
system :metric do
|
9
|
+
unit "m²", aliases: ["m^2", "sq m", "square meter", "square meters", "square metre", "square metres"]
|
10
|
+
unit "km²", value: "1e+6 m²", aliases: ["km^2", "sq km", "square kilometer", "square kilometers", "square kilometre", "square kilometres"]
|
11
11
|
end
|
12
12
|
|
13
13
|
system :imperial do
|
14
|
-
|
15
|
-
|
16
|
-
unit
|
17
|
-
unit
|
18
|
-
unit :yd², value: "9 ft²", aliases: [:"yd^2", :"sq yd", :"square yard", :"square yards"]
|
19
|
-
unit :mi², value: "3097600 yd²", aliases: [:"mi^2", :"sq mi", :"square mile", :"square miles"]
|
14
|
+
unit "in²", value: "0.00064516 m²", aliases: ["in^2", "sq in", "square inch", "square inches"]
|
15
|
+
unit "ft²", value: "144 in²", aliases: ["ft^2", "sq ft", "square foot", "square feet"]
|
16
|
+
unit "yd²", value: "9 ft²", aliases: ["yd^2", "sq yd", "square yard", "square yards"]
|
17
|
+
unit "mi²", value: "3097600 yd²", aliases: ["mi^2", "sq mi", "square mile", "square miles"]
|
20
18
|
end
|
21
19
|
end
|
@@ -3,15 +3,14 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::Density = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :"g/m³"
|
8
|
-
|
9
|
-
unit :"g/m³", aliases: [:"g/m^3", :"g·m⁻³", :"gram per cubic meter", :"grams per cubic meter", :"gramme per cubic metre", :"grammes per cubic metre"]
|
6
|
+
primitive "kg/m³"
|
10
7
|
|
11
|
-
|
12
|
-
unit
|
8
|
+
system :metric do
|
9
|
+
unit "g/m³", aliases: ["g/m^3", "g·m⁻³", "gram per cubic meter", "grams per cubic meter", "gramme per cubic metre", "grammes per cubic metre"]
|
10
|
+
unit "kg/m³", value: "1000 g/m³", aliases: ["kg/m^3", "kg·m⁻³", "kilogram per cubic meter", "kilograms per cubic meter", "kilogramme per cubic metre", "kilogrammes per cubic metre"]
|
13
11
|
|
14
|
-
unit
|
15
|
-
unit
|
12
|
+
unit "g/l", value: "1 kg/m³", aliases: ["g·l⁻¹", "gram per liter", "grams per liter", "gramme per litre", "grammes per litre"]
|
13
|
+
unit "g/ml", value: "1000 g/l", aliases: ["g·ml⁻¹", "gram per milliliter", "grams per milliliter", "gramme per millilitre", "grammes per millilitre"]
|
14
|
+
unit "kg/l", value: "1e+6 g/m³", aliases: ["kg·l⁻¹", "kilogram per liter", "kilograms per liter", "kilogramme per litre", "kilogrammes per litre"]
|
16
15
|
end
|
17
16
|
end
|
@@ -3,18 +3,16 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::ElectricCharge = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :C
|
6
|
+
primitive "C"
|
8
7
|
|
9
|
-
|
8
|
+
system :metric do
|
9
|
+
si_unit "C", aliases: ["coulomb", "coulombs"]
|
10
10
|
end
|
11
11
|
|
12
12
|
system :centimetre_gram_second do
|
13
|
-
|
14
|
-
|
15
|
-
unit
|
16
|
-
unit
|
17
|
-
unit :abC, value: "10 C", aliases: [:abcoulomb, :abcoulombs]
|
18
|
-
unit :statC, value: "3.335641e-10 C", aliases: [:statcoulomb, :statcoulombs]
|
13
|
+
unit "Fr", value: "3.335641e-10 C", aliases: ["franklin", "franklins"]
|
14
|
+
unit "Fd", value: "96485.3377164 C", aliases: ["faraday", "faradays"]
|
15
|
+
unit "abC", value: "10 C", aliases: ["abcoulomb", "abcoulombs"]
|
16
|
+
unit "statC", value: "3.335641e-10 C", aliases: ["statcoulomb", "statcoulombs"]
|
19
17
|
end
|
20
18
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
UnitMeasurements::ElectricConductance = UnitMeasurements.build do
|
6
|
+
primitive "S"
|
7
|
+
|
8
|
+
system :metric do
|
9
|
+
si_unit "S", aliases: ["℧", "Ω⁻¹", "siemens", "mho", "mhos"]
|
10
|
+
|
11
|
+
unit "A/V", value: "1 S", aliases: ["A·V⁻¹", "amp/volt", "amps/volt", "ampere/volt", "amperes/volt", "ampere per volt", "amperes per volt"]
|
12
|
+
end
|
13
|
+
|
14
|
+
system :centimetre_gram_second do
|
15
|
+
unit "abS", value: "1e+9 S", aliases: ["ab℧", "absiemens", "abmho", "abmhos"]
|
16
|
+
unit "statS", value: "1.112347e-12 S", aliases: ["stat℧", "statsiemens", "statmho", "statmhos"]
|
17
|
+
end
|
18
|
+
end
|
@@ -3,17 +3,15 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
UnitMeasurements::ElectricCurrent = UnitMeasurements.build do
|
6
|
-
|
7
|
-
primitive :A
|
6
|
+
primitive "A"
|
8
7
|
|
9
|
-
|
8
|
+
system :metric do
|
9
|
+
si_unit "A", aliases: ["amp", "ampere", "amperes"]
|
10
10
|
end
|
11
11
|
|
12
12
|
system :centimetre_gram_second do
|
13
|
-
|
14
|
-
|
15
|
-
unit
|
16
|
-
unit :abA, value: "10 A", aliases: [:abampere, :abamperes]
|
17
|
-
unit :statA, value: "3.33564e-10 A", aliases: [:statampere, :statamperes]
|
13
|
+
unit "Bi", value: "10 A", aliases: ["biot", "biots"]
|
14
|
+
unit "abA", value: "10 A", aliases: ["abampere", "abamperes"]
|
15
|
+
unit "statA", value: "3.33564e-10 A", aliases: ["statampere", "statamperes"]
|
18
16
|
end
|
19
17
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
UnitMeasurements::ElectricPotential = UnitMeasurements.build do
|
6
|
+
primitive "V"
|
7
|
+
|
8
|
+
system :metric do
|
9
|
+
si_unit "V", aliases: ["volt", "volts"]
|
10
|
+
|
11
|
+
unit "W/A", value: "1 V", aliases: ["W·A⁻¹", "watt per ampere", "watts per ampere"]
|
12
|
+
unit "J/C", value: "1 V", aliases: ["J·C⁻¹", "joule per coulomb", "joules per coulomb"]
|
13
|
+
end
|
14
|
+
|
15
|
+
system :centimetre_gram_second do
|
16
|
+
unit "abV", value: "1e-8 V", aliases: ["abvolt", "abvolts"]
|
17
|
+
unit "statV", value: "299.792458 V", aliases: ["statvolt", "statvolts"]
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
UnitMeasurements::ElectricalCapacitance = UnitMeasurements.build do
|
6
|
+
primitive "F"
|
7
|
+
|
8
|
+
system :metric do
|
9
|
+
si_unit "F", aliases: ["farad", "farads"]
|
10
|
+
|
11
|
+
unit "C/V", value: "1 F", aliases: ["C·V⁻¹", "coulomb/volt", "coulombs/volt", "coulomb per volt", "coulombs per volt"]
|
12
|
+
end
|
13
|
+
|
14
|
+
system :centimetre_gram_second do
|
15
|
+
unit "abF", value: "1e+9 F", aliases: ["abfarad", "abfarads"]
|
16
|
+
unit "statF", value: "1.1127e-12 F", aliases: ["statfarad", "statfarads"]
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
UnitMeasurements::ElectricalElastance = UnitMeasurements.build do
|
6
|
+
primitive "D"
|
7
|
+
|
8
|
+
system :metric do
|
9
|
+
si_unit "D", aliases: ["F⁻¹", "daraf", "darafs", "reciprocal farad", "reciprocal farads"]
|
10
|
+
|
11
|
+
unit "V/C", value: "1 D", aliases: ["V·C⁻¹", "volt/coulomb", "volts/coulomb", "volt per coulomb", "volts per coulomb"]
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
UnitMeasurements::ElectricalInductance = UnitMeasurements.build do
|
6
|
+
primitive "H"
|
7
|
+
|
8
|
+
system :metric do
|
9
|
+
si_unit "H", aliases: ["henry", "henries"]
|
10
|
+
|
11
|
+
unit "Wb/A", value: "1 H", aliases: ["Wb·A⁻¹", "weber per ampere", "webers per ampere"]
|
12
|
+
end
|
13
|
+
|
14
|
+
system :centimetre_gram_second do
|
15
|
+
unit "abH", value: "1e-9 H", aliases: ["abhenry", "abhenries"]
|
16
|
+
unit "statH", value: "8.98755178736818e+11 H", aliases: ["stathenry", "stathenries"]
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
UnitMeasurements::ElectricalResistance = UnitMeasurements.build do
|
6
|
+
primitive "Ω"
|
7
|
+
|
8
|
+
system :metric do
|
9
|
+
si_unit "Ω", aliases: ["ω", "ohm", "ohms", "reciprocal siemens"]
|
10
|
+
|
11
|
+
unit "S", value: "1 Ω", aliases: ["siemens", "mho", "mhos"]
|
12
|
+
unit "V/A", value: "1 Ω", aliases: ["V·A⁻¹", "volt/amp", "volts/amp", "volt/ampere", "volts/ampere", "volt per ampere", "volts per ampere"]
|
13
|
+
end
|
14
|
+
|
15
|
+
system :centimetre_gram_second do
|
16
|
+
unit "abΩ", value: "1e-9 Ω", aliases: ["abω", "abohm", "abohms"]
|
17
|
+
unit "statΩ", value: "8.98755178737e+11 Ω", aliases: ["statω", "statohm", "statohms"]
|
18
|
+
end
|
19
|
+
end
|