unit_measurements 3.8.0 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|