unit_measurements 5.10.0 → 5.11.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 +9 -0
- data/Gemfile.lock +1 -1
- data/README.md +14 -0
- data/lib/unit_measurements/measurement.rb +35 -1
- data/lib/unit_measurements/unit_group.rb +16 -0
- data/lib/unit_measurements/version.rb +1 -1
- 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: ca26bc8965c93c692a72e788ab2577f2bad297909372a72d3cc2fec93a45b5bd
|
4
|
+
data.tar.gz: 581d716cb56cf59c89eeb69d01095c4c0c14054006dc6bb0822580e3d6750ffd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ed994225ecb853f8ce577e0b53a863b0f091980ee33f054b50f69d156ad0a7e393a4a59d962d665aa52fa6cdc077f19f42bc27d0b1d8e7413f359dbde8e6a9fb
|
7
|
+
data.tar.gz: 889e45c784390c89a46079067ca9493253e638b1117ee88c16c5ab2ed60db89a855a11bf487f2a6536b1729a2704983fbfcb5fa60959a2b8eed79dae4957d920
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## [5.11.0](https://github.com/shivam091/unit_measurements/compare/v5.10.0...v5.11.0) - 2023-11-11
|
2
|
+
|
3
|
+
### What's new
|
4
|
+
|
5
|
+
- Added `#systems` method to return unit systems within the unit group.
|
6
|
+
- Added `#ratio` method to calculate the ratio between two units.
|
7
|
+
|
8
|
+
----------
|
9
|
+
|
1
10
|
## [5.10.0](https://github.com/shivam091/unit_measurements/compare/v5.9.0...v5.10.0) - 2023-11-09
|
2
11
|
|
3
12
|
### What's new
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -179,6 +179,13 @@ UnitMeasurements::Length.parse("1:2 km to m")
|
|
179
179
|
#=> 500.0 m
|
180
180
|
```
|
181
181
|
|
182
|
+
**Calculate the ratio between two units:**
|
183
|
+
|
184
|
+
```ruby
|
185
|
+
UnitMeasurements::Length.ratio("in", "ft")
|
186
|
+
#=> "12.0 in/ft"
|
187
|
+
```
|
188
|
+
|
182
189
|
**Formatting measurement:**
|
183
190
|
|
184
191
|
If you want to format the measurement to certain format, you can use `#to_fs` method.
|
@@ -239,6 +246,13 @@ UnitMeasurements::Length.unit_names_with_aliases
|
|
239
246
|
#=> ["\"", "'", "feet", "foot", "ft", "in", "inch", "inches", "m", "meter", "meters", "metre", "metres", "mi", "mile", "miles", "yard", "yards", "yd"]
|
240
247
|
```
|
241
248
|
|
249
|
+
**See list of unit systems defined within the unit group:**
|
250
|
+
|
251
|
+
```ruby
|
252
|
+
UnitMeasurements::Length.systems
|
253
|
+
#=> ["metric", "imperial", "us_customary", "astronomical"]
|
254
|
+
```
|
255
|
+
|
242
256
|
**See list of units within the unit system:**
|
243
257
|
|
244
258
|
You can use `#units_for` or `#units_for!` methods to find units within the unit system.
|
@@ -243,7 +243,7 @@ module UnitMeasurements
|
|
243
243
|
def_delegators :unit_group, :primitive, :units, :cache_file, :unit_names,
|
244
244
|
:unit_with_name_and_aliases, :unit_names_with_aliases,
|
245
245
|
:unit_for, :unit_for!, :defined?, :unit_or_alias?, :[],
|
246
|
-
:units_for, :units_for
|
246
|
+
:units_for, :units_for!, :systems
|
247
247
|
|
248
248
|
# Parses an input string and returns a +Measurement+ instance depending on
|
249
249
|
# the input string. This method first normalizes the +input+ internally,
|
@@ -368,6 +368,40 @@ module UnitMeasurements
|
|
368
368
|
cached.clear_cache
|
369
369
|
end
|
370
370
|
|
371
|
+
# Calculates the ratio between two units.
|
372
|
+
#
|
373
|
+
# This method takes a source unit and a target unit, and returns the ratio
|
374
|
+
# between them as a string representation.
|
375
|
+
#
|
376
|
+
# @example Calculating the ratio between 'in' and 'ft':
|
377
|
+
# UnitMeasurements::Length.ratio("in", "ft")
|
378
|
+
# => "12.0 in/ft"
|
379
|
+
#
|
380
|
+
# UnitMeasurements::Length.ratio(UnitMeasurements::Length.unit_for("in"), "ft")
|
381
|
+
# => "12.0 in/ft"
|
382
|
+
#
|
383
|
+
# @param [Unit|String|Symbol] source_unit
|
384
|
+
# The source unit for the ratio calculation.
|
385
|
+
# @param [Unit|String|Symbol] target_unit
|
386
|
+
# The target unit for the ratio calculation.
|
387
|
+
#
|
388
|
+
# @return [String] The ratio between the source and target units.
|
389
|
+
#
|
390
|
+
# @raise [UnitError]
|
391
|
+
# If either the source unit or the target unit is not found in the unit group.
|
392
|
+
#
|
393
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
394
|
+
# @since 5.11.0
|
395
|
+
def ratio(source_unit, target_unit)
|
396
|
+
source_unit = source_unit.is_a?(Unit) ? source_unit : unit_for!(source_unit)
|
397
|
+
target_unit = target_unit.is_a?(Unit) ? target_unit : unit_for!(target_unit)
|
398
|
+
|
399
|
+
source_quantity = 1
|
400
|
+
target_quantity = new(source_quantity, target_unit).convert_to(source_unit).quantity
|
401
|
+
|
402
|
+
"#{target_quantity} #{source_unit}/#{target_unit}"
|
403
|
+
end
|
404
|
+
|
371
405
|
private
|
372
406
|
|
373
407
|
# @private
|
@@ -247,6 +247,22 @@ module UnitMeasurements
|
|
247
247
|
system_units
|
248
248
|
end
|
249
249
|
|
250
|
+
# Returns an array of unit system names defined within the unit group.
|
251
|
+
#
|
252
|
+
# It scans through the units and compiles a list of unique system names.
|
253
|
+
#
|
254
|
+
# @example
|
255
|
+
# UnitMeasurements::Length.systems
|
256
|
+
# => ["metric", "imperial", "us_customary", "astronomical"]
|
257
|
+
#
|
258
|
+
# @return [Array<String>] An array of unit system names.
|
259
|
+
#
|
260
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
261
|
+
# @since 5.11.0
|
262
|
+
def systems
|
263
|
+
units.map { _1.system }.uniq
|
264
|
+
end
|
265
|
+
|
250
266
|
private
|
251
267
|
|
252
268
|
# @private
|
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: 5.
|
4
|
+
version: 5.11.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-11-
|
11
|
+
date: 2023-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|