unit_measurements 4.11.0 → 5.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 +20 -0
- data/Gemfile.lock +1 -1
- data/README.md +45 -7
- data/lib/unit_measurements/measurement.rb +12 -3
- data/lib/unit_measurements/unit.rb +40 -25
- data/lib/unit_measurements/unit_group.rb +63 -0
- data/lib/unit_measurements/unit_group_builder.rb +12 -4
- data/lib/unit_measurements/unit_groups/area.rb +7 -0
- data/lib/unit_measurements/unit_groups/information_entropy.rb +2 -2
- data/lib/unit_measurements/unit_groups/volume.rb +10 -0
- data/lib/unit_measurements/version.rb +1 -1
- data/units.md +26 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a7a4305ab13c8d9d8d52eaf7c9e4646757dc8eee71af5ec8314f6a2b702f929
|
4
|
+
data.tar.gz: 9cb9fc75b29f7745278ca27ce32fce621a29427e6e08202590eec52ff90c4e66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 46ddf50754159eb8dcaf4f753378fe19f912ac0d8316ecdd959b23620ed7ca2ef1a1122ce0a35d0a33bd0d643fbe7e6572a83348ca2faf3ab6815ce64c61e9d4
|
7
|
+
data.tar.gz: 9b84900e75d14377ebe58e8a21d75aaca6ae1329ce2be56768a7f24f4476782e27d8312fa65045c7398d6c67eb78ff2b01ea5b6da2263e53899eb21f015cb246
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,23 @@
|
|
1
|
+
## [5.0.0](https://github.com/shivam091/unit_measurements/compare/v4.12.0...v5.0.0) - 2023-10-18
|
2
|
+
|
3
|
+
### What's new
|
4
|
+
|
5
|
+
- Added support to add binary SI prefixes for the unit.
|
6
|
+
- Added support to convert the measurement to a `primitive` unit of the unit group.
|
7
|
+
- Added methods `UnitGroup#units_for` and `UnitGroup#units_for!` to find units within
|
8
|
+
the specified unit system.
|
9
|
+
|
10
|
+
----------
|
11
|
+
|
12
|
+
## [4.12.0](https://github.com/shivam091/unit_measurements/compare/v4.11.0...v4.12.0) - 2023-10-16
|
13
|
+
|
14
|
+
### What's new
|
15
|
+
|
16
|
+
- Added new units in `area` (are, barn, hectare, acre, square chain, square furlong, square rod) unit group.
|
17
|
+
- Added new units in `volume` (cup, quart, gill, pint, gallon, barrel, teaspoon, tablespoon, fluid ounce) unit group.
|
18
|
+
|
19
|
+
----------
|
20
|
+
|
1
21
|
## [4.11.0](https://github.com/shivam091/unit_measurements/compare/v4.10.0...v4.11.0) - 2023-10-15
|
2
22
|
|
3
23
|
### What's new
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -88,6 +88,13 @@ UnitMeasurements::Length.new(1, "km").convert_to!("m")
|
|
88
88
|
#=> 1000.0 m
|
89
89
|
```
|
90
90
|
|
91
|
+
You can convert the measurement directly to the `primitive` unit of the unit group as:
|
92
|
+
|
93
|
+
```ruby
|
94
|
+
UnitMeasurements::Length.new(1, "cm").convert_to("primitive")
|
95
|
+
#=> 0.01 m
|
96
|
+
```
|
97
|
+
|
91
98
|
You can also chain call of `#convert_to` and `#convert_to!` methods as:
|
92
99
|
|
93
100
|
```ruby
|
@@ -215,11 +222,22 @@ UnitMeasurements::Length.unit_names_with_aliases
|
|
215
222
|
#=> ["\"", "'", "feet", "foot", "ft", "in", "inch", "inches", "m", "meter", "meters", "metre", "metres", "mi", "mile", "miles", "yard", "yards", "yd"]
|
216
223
|
```
|
217
224
|
|
225
|
+
**See list of units within the unit system:**
|
226
|
+
|
227
|
+
You can use `#units_for` or `#units_for!` methods to find units within the unit system.
|
228
|
+
`#units_for!` method returns an error if there are no units associated with specified
|
229
|
+
unit system.
|
230
|
+
|
231
|
+
```ruby
|
232
|
+
UnitMeasurements::Length.units_for("metric")
|
233
|
+
#=> [#<UnitMeasurements::Unit: m (meter, meters, metre, metres)>, ...]
|
234
|
+
```
|
235
|
+
|
218
236
|
**Finding units within the unit group:**
|
219
237
|
|
220
|
-
You can use `#unit_for` or `#unit_for!` (aliased as `#[]`) to find units
|
221
|
-
the unit group. `#unit_for!` method returns error if a unit is not present
|
222
|
-
unit group.
|
238
|
+
You can use `#unit_for` or `#unit_for!` (aliased as `#[]`) methods to find units
|
239
|
+
within the unit group. `#unit_for!` method returns an error if a unit is not present
|
240
|
+
in the unit group.
|
223
241
|
|
224
242
|
```ruby
|
225
243
|
UnitMeasurements::Length.unit_for("m")
|
@@ -309,10 +327,14 @@ You can check more about them along with their examples
|
|
309
327
|
|
310
328
|
The **`UnitMeasurements::Unit`** class is used to represent the units for a measurement.
|
311
329
|
|
312
|
-
###
|
330
|
+
### SI prefixed units
|
331
|
+
|
332
|
+
There is support for SI prefixed units through the use of `si_unit` method.
|
333
|
+
Units declared through it will have automatic support for all decimal SI prefixes.
|
334
|
+
This method takes `add_binary_prefixes` parameter which can be set to true, if the
|
335
|
+
unit supports binary SI prefixes along with decimal SI prefixes.
|
313
336
|
|
314
|
-
|
315
|
-
Units declared through it will have automatic support for all decimal prefixes:
|
337
|
+
#### Decimal SI prefixes
|
316
338
|
|
317
339
|
| Multiplying Factor | SI Prefix | Scientific Notation |
|
318
340
|
| ----------------------------------------- | ---------- | ------------------- |
|
@@ -341,6 +363,19 @@ Units declared through it will have automatic support for all decimal prefixes:
|
|
341
363
|
| 0.000 000 000 000 000 000 000 000 001 | ronto (r) | 10^-27 |
|
342
364
|
| 0.000 000 000 000 000 000 000 000 000 001 | quecto (q) | 10^-30 |
|
343
365
|
|
366
|
+
#### Binary SI prefixes
|
367
|
+
|
368
|
+
| Multiplying Factor | SI Prefix | Scientific Notation |
|
369
|
+
| --------------------------------- | --------- | ------------------- |
|
370
|
+
| 1 024 | kibi (Ki) | 2^10 |
|
371
|
+
| 1 048 576 | mebi (Mi) | 2^20 |
|
372
|
+
| 1 073 741 824 | gibi (Gi) | 2^30 |
|
373
|
+
| 1 099 511 627 776 | tebi (Ti) | 2^40 |
|
374
|
+
| 1 125 899 906 842 624 | pebi (Pi) | 2^50 |
|
375
|
+
| 1 152 921 504 606 846 976 | exbi (Ei) | 2^60 |
|
376
|
+
| 1 180 591 620 717 411 303 424 | zebi (Zi) | 2^70 |
|
377
|
+
| 1 208 925 819 614 629 174 706 176 | yobi (Yi) | 2^80 |
|
378
|
+
|
344
379
|
### Bundled units
|
345
380
|
|
346
381
|
There are tons of units that are bundled in `unit_measurements`. You can check them out
|
@@ -396,9 +431,12 @@ UnitMeasurements::Time = UnitMeasurements.build do
|
|
396
431
|
|
397
432
|
# Group units by the unit system (optional).
|
398
433
|
system :metric do
|
399
|
-
#
|
434
|
+
# This will add unit `m` along with all decimal SI prefixes.
|
400
435
|
si_unit "s", aliases: ["second", "seconds"]
|
401
436
|
|
437
|
+
# This will add unit `B` along with all binary & decimal SI prefixes.
|
438
|
+
si_unit "B", aliases: ["byte", "bytes"], add_binary_prefixes: true
|
439
|
+
|
402
440
|
# Add units to the group, along with their conversion multipliers.
|
403
441
|
unit "min", value: "60 s", aliases: ["hour", "hours"]
|
404
442
|
|
@@ -101,7 +101,12 @@ module UnitMeasurements
|
|
101
101
|
# UnitMeasurements::Length.new(1, "m").convert_to("cm")
|
102
102
|
# => 100.0 cm
|
103
103
|
#
|
104
|
-
#
|
104
|
+
# UnitMeasurements::Length.new(1, "cm").convert_to("primitive")
|
105
|
+
# => 0.01 m
|
106
|
+
#
|
107
|
+
# @param [String|Symbol] target_unit
|
108
|
+
# The target unit for conversion. Specifing +primitive+ will convert the
|
109
|
+
# measurement to a primitive unit of the unit group.
|
105
110
|
#
|
106
111
|
# @return [Measurement]
|
107
112
|
# A new +Measurement+ instance with the converted +quantity+ and
|
@@ -110,7 +115,11 @@ module UnitMeasurements
|
|
110
115
|
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
111
116
|
# @since 1.0.0
|
112
117
|
def convert_to(target_unit)
|
113
|
-
target_unit =
|
118
|
+
target_unit = if target_unit.to_s.eql?("primitive")
|
119
|
+
self.class.unit_group.primitive
|
120
|
+
else
|
121
|
+
unit_from_unit_or_name!(target_unit)
|
122
|
+
end
|
114
123
|
|
115
124
|
return self if target_unit == unit
|
116
125
|
|
@@ -188,7 +197,7 @@ module UnitMeasurements
|
|
188
197
|
# Methods delegated from the unit group.
|
189
198
|
def_delegators :unit_group, :primitive, :units, :unit_names, :unit_with_name_and_aliases,
|
190
199
|
:unit_names_with_aliases, :unit_for, :unit_for!, :defined?,
|
191
|
-
:unit_or_alias?, :[]
|
200
|
+
:unit_or_alias?, :[], :units_for, :units_for!
|
192
201
|
|
193
202
|
# Parses an input string and returns a +Measurement+ instance depending on
|
194
203
|
# the input string. This method first normalizes the +input+ internally,
|
@@ -57,7 +57,7 @@ module UnitMeasurements
|
|
57
57
|
@name = name.to_s.freeze
|
58
58
|
@value = value
|
59
59
|
@aliases = Set.new(aliases.map(&:to_s).sort.map(&:freeze)).freeze
|
60
|
-
@system = system
|
60
|
+
@system = system.to_s
|
61
61
|
@unit_group = unit_group
|
62
62
|
end
|
63
63
|
|
@@ -147,35 +147,50 @@ module UnitMeasurements
|
|
147
147
|
|
148
148
|
private
|
149
149
|
|
150
|
+
# Binary prefixes for SI units.
|
151
|
+
#
|
152
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
153
|
+
# @since 5.0.0
|
154
|
+
SI_BINARY_PREFIXES = [
|
155
|
+
["Ki", %w[kibi], 2.pow(10)],
|
156
|
+
["Mi", %w[mebi], 2.pow(20)],
|
157
|
+
["Gi", %w[gibi], 2.pow(30)],
|
158
|
+
["Ti", %w[tebi], 2.pow(40)],
|
159
|
+
["Pi", %w[pebi], 2.pow(50)],
|
160
|
+
["Ei", %w[exbi], 2.pow(60)],
|
161
|
+
["Zi", %w[zebi], 2.pow(70)],
|
162
|
+
["Yi", %w[yobi], 2.pow(80)],
|
163
|
+
].map(&:freeze).freeze
|
164
|
+
|
150
165
|
# Decimal prefixes for SI units.
|
151
166
|
#
|
152
167
|
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
153
168
|
# @since 1.0.0
|
154
169
|
SI_DECIMAL_PREFIXES = [
|
155
|
-
["q", %w
|
156
|
-
["r", %w
|
157
|
-
["y", %w
|
158
|
-
["z", %w
|
159
|
-
["a", %w
|
160
|
-
["f", %w
|
161
|
-
["p", %w
|
162
|
-
["n", %w
|
163
|
-
["μ", %w
|
164
|
-
["m", %w
|
165
|
-
["c", %w
|
166
|
-
["d", %w
|
167
|
-
["da", %w
|
168
|
-
["h", %w
|
169
|
-
["k", %w
|
170
|
-
["M", %w
|
171
|
-
["G", %w
|
172
|
-
["T", %w
|
173
|
-
["P", %w
|
174
|
-
["E", %w
|
175
|
-
["Z", %w
|
176
|
-
["Y", %w
|
177
|
-
["R", %w
|
178
|
-
["Q", %w
|
170
|
+
["q", %w[quecto], 1e-30],
|
171
|
+
["r", %w[ronto], 1e-27],
|
172
|
+
["y", %w[yocto], 1e-24],
|
173
|
+
["z", %w[zepto], 1e-21],
|
174
|
+
["a", %w[atto], 1e-18],
|
175
|
+
["f", %w[femto], 1e-15],
|
176
|
+
["p", %w[pico], 1e-12],
|
177
|
+
["n", %w[nano], 1e-9],
|
178
|
+
["μ", %w[micro], 1e-6],
|
179
|
+
["m", %w[milli], 1e-3],
|
180
|
+
["c", %w[centi], 1e-2],
|
181
|
+
["d", %w[deci], 1e-1],
|
182
|
+
["da", %w[deca deka], 1e+1],
|
183
|
+
["h", %w[hecto], 1e+2],
|
184
|
+
["k", %w[kilo], 1e+3],
|
185
|
+
["M", %w[mega], 1e+6],
|
186
|
+
["G", %w[giga], 1e+9],
|
187
|
+
["T", %w[tera], 1e+12],
|
188
|
+
["P", %w[peta], 1e+15],
|
189
|
+
["E", %w[exa], 1e+18],
|
190
|
+
["Z", %w[zetta], 1e+21],
|
191
|
+
["Y", %w[yotta], 1e+24],
|
192
|
+
["R", %w[ronna], 1e+27],
|
193
|
+
["Q", %w[quetta], 1e+30]
|
179
194
|
].map(&:freeze).freeze
|
180
195
|
|
181
196
|
# Parses tokens and returns a +conversion value+ and the +unit+.
|
@@ -167,6 +167,69 @@ module UnitMeasurements
|
|
167
167
|
!!unit_for(name)
|
168
168
|
end
|
169
169
|
|
170
|
+
# Returns an array of units associated with a specified +unit_system+.
|
171
|
+
#
|
172
|
+
# This method takes a unit system name as an argument and filters the units
|
173
|
+
# in the unit group to return only those units that belong to the specified
|
174
|
+
# unit system. It then returns an array containing these filtered units.
|
175
|
+
#
|
176
|
+
# @example
|
177
|
+
# UnitMeasurements::Length.units_for("metric")
|
178
|
+
# => [#<UnitMeasurements::Unit: m (meter, meters, metre, metres)>]
|
179
|
+
#
|
180
|
+
# UnitMeasurements::Length.units_for("imperial")
|
181
|
+
# => [#<UnitMeasurements::Unit: in (", inch, inches)>, ...]
|
182
|
+
#
|
183
|
+
# UnitMeasurements::Length.units_for("troy")
|
184
|
+
# => []
|
185
|
+
#
|
186
|
+
# @param [String|Symbol] system_name
|
187
|
+
# The name of the unit system to retrieve units for.
|
188
|
+
#
|
189
|
+
# @return [Array<Unit>]
|
190
|
+
# An array of +Unit+ instances associated with the specified unit system.
|
191
|
+
#
|
192
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
193
|
+
# @since 5.0.0
|
194
|
+
def units_for(system_name)
|
195
|
+
units.select { |unit| unit.system.to_s == system_name.to_s }
|
196
|
+
end
|
197
|
+
|
198
|
+
# This method works same as +units_for+ method but it raises an error if
|
199
|
+
# there are no units associated with the +system_name+.
|
200
|
+
#
|
201
|
+
# @example
|
202
|
+
# UnitMeasurements::Length.units_for!("metric")
|
203
|
+
# => [#<UnitMeasurements::Unit: m (meter, meters, metre, metres)>]
|
204
|
+
#
|
205
|
+
# UnitMeasurements::Length.units_for!("imperial")
|
206
|
+
# => [#<UnitMeasurements::Unit: in (", inch, inches)>, ...]
|
207
|
+
#
|
208
|
+
# UnitMeasurements::Length.units_for!("troy")
|
209
|
+
# => Invalid unit system 'troy' within the unit group. (UnitMeasurements::BaseError)
|
210
|
+
#
|
211
|
+
# @param [String|Symbol] system_name
|
212
|
+
# The name of the unit system to retrieve units for.
|
213
|
+
#
|
214
|
+
# @return [Array<Unit>]
|
215
|
+
# An array of +Unit+ instances associated with the specified unit system.
|
216
|
+
#
|
217
|
+
# @raise [BaseError]
|
218
|
+
# If there are no units associated with the provided +system_name+.
|
219
|
+
#
|
220
|
+
# @see units_for
|
221
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
222
|
+
# @since 5.0.0
|
223
|
+
def units_for!(system_name)
|
224
|
+
system_units = units_for(system_name)
|
225
|
+
|
226
|
+
unless system_units.any?
|
227
|
+
raise BaseError, "Invalid unit system '#{system_name}' within the unit group."
|
228
|
+
end
|
229
|
+
|
230
|
+
system_units
|
231
|
+
end
|
232
|
+
|
170
233
|
private
|
171
234
|
|
172
235
|
# @private
|
@@ -56,6 +56,9 @@ module UnitMeasurements
|
|
56
56
|
#
|
57
57
|
# @param [String|Symbol] name The name of the unit.
|
58
58
|
# @param [Numeric|String] value The conversion value of the unit.
|
59
|
+
# @param [TrueClass|FalseClass] add_binary_prefixes
|
60
|
+
# Whether the unit supports binary SI prefixes along with decimal SI
|
61
|
+
# prefixes.
|
59
62
|
# @param [Array<String|Symbol>, optional] aliases An array of alternative names for the unit.
|
60
63
|
#
|
61
64
|
# @return [Array<Unit>] An array of +Unit+ instances.
|
@@ -63,8 +66,8 @@ module UnitMeasurements
|
|
63
66
|
# @see #build_si_units
|
64
67
|
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
65
68
|
# @since 1.0.0
|
66
|
-
def si_unit(name, value: 1.0, aliases: [])
|
67
|
-
@units += build_si_units(name, value: value, aliases: aliases)
|
69
|
+
def si_unit(name, value: 1.0, add_binary_prefixes: false, aliases: [])
|
70
|
+
@units += build_si_units(name, value: value, add_binary_prefixes: add_binary_prefixes, aliases: aliases)
|
68
71
|
end
|
69
72
|
|
70
73
|
# Constructs and returns a +UnitGroup+ object based on the units defined
|
@@ -133,6 +136,9 @@ module UnitMeasurements
|
|
133
136
|
#
|
134
137
|
# @param [String|Symbol] name The name of the unit.
|
135
138
|
# @param [Numeric|String] value The conversion value of the unit.
|
139
|
+
# @param [TrueClass|FalseClass] add_binary_prefixes
|
140
|
+
# Whether the unit supports binary SI prefixes along with decimal SI
|
141
|
+
# prefixes.
|
136
142
|
# @param [Array<String|Symbol>, optional] aliases
|
137
143
|
# An array of alternative names for the unit.
|
138
144
|
#
|
@@ -141,10 +147,12 @@ module UnitMeasurements
|
|
141
147
|
# @see #build_unit
|
142
148
|
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
143
149
|
# @since 1.0.0
|
144
|
-
def build_si_units(name, value:, aliases:)
|
150
|
+
def build_si_units(name, value:, add_binary_prefixes:, aliases:)
|
145
151
|
si_units = [build_unit(name, value: value, aliases: aliases)]
|
146
152
|
|
147
|
-
Unit::SI_DECIMAL_PREFIXES
|
153
|
+
si_prefixes = add_binary_prefixes ? (Unit::SI_DECIMAL_PREFIXES + Unit::SI_BINARY_PREFIXES) : Unit::SI_DECIMAL_PREFIXES
|
154
|
+
|
155
|
+
si_prefixes.each do |short_prefix, long_prefix, multiplier|
|
148
156
|
si_aliases = long_prefix.product(aliases.to_a).flat_map do |prefix, unit|
|
149
157
|
aliases.map { |alias_unit| prefix + alias_unit.to_s }
|
150
158
|
end
|
@@ -6,14 +6,21 @@ UnitMeasurements::Area = UnitMeasurements.build do
|
|
6
6
|
primitive "m²"
|
7
7
|
|
8
8
|
system :metric do
|
9
|
+
unit "a", value: "100 m²", aliases: ["are", "ares"]
|
10
|
+
unit "b", value: "1e-28 m²", aliases: ["barn", "barns"]
|
9
11
|
unit "m²", aliases: ["m^2", "sq m", "square meter", "square meters", "square metre", "square metres"]
|
12
|
+
unit "ha", value: "10000 m²", aliases: ["hectare", "hectares"]
|
10
13
|
unit "km²", value: "1e+6 m²", aliases: ["km^2", "sq km", "square kilometer", "square kilometers", "square kilometre", "square kilometres"]
|
11
14
|
end
|
12
15
|
|
13
16
|
system :imperial do
|
17
|
+
unit "ac", value: "4046.8564224 m²", aliases: ["acre", "acres"]
|
14
18
|
unit "in²", value: "0.00064516 m²", aliases: ["in^2", "sq in", "square inch", "square inches"]
|
15
19
|
unit "ft²", value: "144 in²", aliases: ["ft^2", "sq ft", "square foot", "square feet"]
|
16
20
|
unit "yd²", value: "9 ft²", aliases: ["yd^2", "sq yd", "square yard", "square yards"]
|
17
21
|
unit "mi²", value: "3097600 yd²", aliases: ["mi^2", "sq mi", "square mile", "square miles"]
|
22
|
+
unit "ch²", value: "484 yd²", aliases: ["ch^2", "sq ch", "square chain", "square chains"]
|
23
|
+
unit "fur²", value: "48400 yd²", aliases: ["fur^2", "sq fur", "square furlong", "square furlongs"]
|
24
|
+
unit "rod²", value: "272 1/4 ft²", aliases: ["rod^2", "sq rod", "square rod", "square rods"]
|
18
25
|
end
|
19
26
|
end
|
@@ -5,8 +5,8 @@
|
|
5
5
|
UnitMeasurements::InformationEntropy = UnitMeasurements.build do
|
6
6
|
primitive "nat"
|
7
7
|
|
8
|
-
si_unit "b", value: "1 Sh", aliases: ["bit", "bits"]
|
9
|
-
si_unit "B", value: [2.pow(3), "b"], aliases: ["byte", "bytes"]
|
8
|
+
si_unit "b", value: "1 Sh", aliases: ["bit", "bits"], add_binary_prefixes: true
|
9
|
+
si_unit "B", value: [2.pow(3), "b"], aliases: ["byte", "bytes"], add_binary_prefixes: true
|
10
10
|
|
11
11
|
unit "Sh", value: [Math.log(2), "nat"], aliases: ["shannon", "shannons"]
|
12
12
|
unit "nat", aliases: ["nit", "nepit", "natural unit of information"]
|
@@ -20,5 +20,15 @@ UnitMeasurements::Volume = UnitMeasurements.build do
|
|
20
20
|
unit "ft³", value: "1728 in³", aliases: ["ft^3", "cu ft", "cubic foot", "cubic feet"]
|
21
21
|
unit "yd³", value: "27 ft³", aliases: ["yd^3", "cu yd", "cubic yard", "cubic yards"]
|
22
22
|
unit "mi³", value: "5451776000 yd³", aliases: ["mi^3", "cu mi", "cubic mile", "cubic miles"]
|
23
|
+
|
24
|
+
unit "c", value: "284.130625e-6 m³", aliases: ["cup", "cups"]
|
25
|
+
unit "qt", value: "0.0011365225 m³", aliases: ["quart", "quarts"]
|
26
|
+
unit "gi", value: "1/2 c", aliases: ["gill", "gills"]
|
27
|
+
unit "pt", value: "1/8 gal", aliases: ["pint", "pints"]
|
28
|
+
unit "gal", value: "4.54609 dm³", aliases: ["gallon", "gallons"]
|
29
|
+
unit "bbl", value: "36 gal", aliases: ["barrel", "barrels"]
|
30
|
+
unit "tsp", value: "1/24 gi", aliases: ["teaspoon", "teaspoons"]
|
31
|
+
unit "tbsp", value: "3 tsp", aliases: ["tbs", "tablespoon", "tablespoons"]
|
32
|
+
unit "floz", value: "1/160 gal", aliases: ["fluid ounce", "fluid ounces"]
|
23
33
|
end
|
24
34
|
end
|
data/units.md
CHANGED
@@ -4,8 +4,10 @@ As there are lots of units bundled with `unit_measurements`, we recommend you to
|
|
4
4
|
bundled units before converting your measurements.
|
5
5
|
|
6
6
|
**Notes:**
|
7
|
-
1. Unit names suffixed with `*` support all [SI prefixes](README.md#
|
8
|
-
2.
|
7
|
+
1. Unit names suffixed with `*` support all [Decimal SI prefixes](README.md#decimal-si-prefixes).
|
8
|
+
2. Unit names suffixed with `**` support all [Decimal SI prefixes](README.md#decimal-si-prefixes)
|
9
|
+
and [Binary SI prefixes](README.md#binary-si-prefixes).
|
10
|
+
3. Primitive unit of the unit group is in _emphasised typeface_.
|
9
11
|
|
10
12
|
## 1. Length/Distance
|
11
13
|
|
@@ -111,10 +113,17 @@ These units are defined in `UnitMeasurements::Area`.
|
|
111
113
|
|:--|:--|:--|
|
112
114
|
| _1_ | _m²_ | _m^2, sq m, square meter, square meters, square metre, square metres_ |
|
113
115
|
| 2 | km² | km^2, sq km, square kilometer, square kilometers, square kilometre, square kilometres |
|
114
|
-
| 3 |
|
115
|
-
| 4 |
|
116
|
-
| 5 |
|
117
|
-
| 6 |
|
116
|
+
| 3 | a | are, ares |
|
117
|
+
| 4 | b | barn, barns |
|
118
|
+
| 5 | ha | hectare, hectares |
|
119
|
+
| 6 | ac | acre, acres |
|
120
|
+
| 7 | in² | in^2, sq in, square inch, square inches |
|
121
|
+
| 8 | ft² | ft^2, sq ft, square foot, square feet |
|
122
|
+
| 9 | yd² | yd^2, sq yd, square yard, square yards |
|
123
|
+
| 10 | mi² | mi^2, sq mi, square mile, square miles |
|
124
|
+
| 11 | ch² | ch^2, sq ch, square chain, square chains |
|
125
|
+
| 12 | fur² | fur^2, sq fur, square furlong, square furlongs |
|
126
|
+
| 13 | rod² | rod^2, sq rod, square rod, square rods |
|
118
127
|
|
119
128
|
## 9. Volume
|
120
129
|
|
@@ -132,6 +141,15 @@ These units are defined in `UnitMeasurements::Volume`.
|
|
132
141
|
| 8 | ft³ | ft^3, cu ft, cubic foot, cubic feet |
|
133
142
|
| 9 | yd³ | yd^3, cu yd, cubic yard, cubic yards |
|
134
143
|
| 10 | mi³ | mi^3, cu mi, cubic mile, cubic miles |
|
144
|
+
| 11 | c | cup, cups |
|
145
|
+
| 12 | qt | quart, quarts |
|
146
|
+
| 13 | gi | gill, gills |
|
147
|
+
| 14 | pt | pint, pints |
|
148
|
+
| 15 | gal | gallon, gallons |
|
149
|
+
| 16 | bbl | barrel, barrels |
|
150
|
+
| 17 | tsp | teaspoon, teaspoons |
|
151
|
+
| 18 | tbsp | tbs, tablespoon, tablespoons |
|
152
|
+
| 19 | floz | fluid ounce, fluid ounces |
|
135
153
|
|
136
154
|
## 10. Density
|
137
155
|
|
@@ -578,8 +596,8 @@ These units are defined in `UnitMeasurements::InformationEntropy`.
|
|
578
596
|
|
579
597
|
| # | Name | Aliases |
|
580
598
|
|:--|:--|:--|
|
581
|
-
| 1 | b
|
582
|
-
| 2 | B
|
599
|
+
| 1 | b*\* | bit, bits |
|
600
|
+
| 2 | B*\* | byte, bytes |
|
583
601
|
| 3 | Sh | shannon, shannons |
|
584
602
|
| _4_ | _nat_ | _nit, nepit, natural unit of information_ |
|
585
603
|
| 5 | nybl | nibble, nibbles, nybble, nyble |
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: unit_measurements
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Harshal LADHE
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|