unit_measurements 1.1.0 → 1.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24b2504d7feb77f54138260f7e0947bd86e00225dbe3c6d9e575da3050a24eeb
4
- data.tar.gz: 7d9b84113fbf2a2cd5ca1c5a46467296b15f1bf1016c1775b854098245998cee
3
+ metadata.gz: 330be281aba063532010cf47f1e0065c35390510749002f368ff3139a22e6b5c
4
+ data.tar.gz: 26a8aa9db580205a117b11a8b653a5c609d1972be7b3eb76e2b91ec20f02b7be
5
5
  SHA512:
6
- metadata.gz: b5fc7c6e1b2b580fcd5477941e239e8d06a79416b90a7c36145f8d50d32c40c7430b83273038b2974ec51df90673e46672207f8d8ae975c31e99b3612cd3b446
7
- data.tar.gz: 7730a9813366e4b36dbf98873a575cf89a33963ee998da6c84d7e6b5fd7c7f5c197530e23f1acaeb2a44e339667f9665d7e3bc62c5164579df06765e01426d85
6
+ metadata.gz: 2d67ddc3a66baec5ce04878b046541dd7b9f3d8da65a18fcf84179f4178c467b3e2276f1a236e22caac9d170815d6529be842fdac2ac45aed79e48b32d136de7
7
+ data.tar.gz: 331afbfc4616fd9cbccf13ed6c3d01266ba6fd49e9fe4ae06c9f8ed311210a77381056d0037415b4fc4c48477a5fcda48d2d64397c8df3888bcacf1b965c79c8
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ ## [1.2.0](https://github.com/shivam091/unit_measurements/compare/v1.1.0...v1.2.0) - 2023-08-15
2
+
3
+ ### What's new
4
+
5
+ - Added support to specify unit value as an `array` of number and unit. viz.,
6
+
7
+ ----------
8
+
1
9
  ## [1.1.0](https://github.com/shivam091/unit_measurements/compare/v1.0.0...v1.1.0) - 2023-08-14
2
10
 
3
11
  ### What's new
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unit_measurements (1.1.0)
4
+ unit_measurements (1.2.0)
5
5
  activesupport (~> 7.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -399,6 +399,9 @@ UnitMeasurements::Time = UnitMeasurements.build do
399
399
  # You can also specify conversion string if it's converted against a unit other
400
400
  # than the unit group's base unit.
401
401
  unit :h, value: "60 min", aliases: [:hour, :hours]
402
+
403
+ # You can also specify unit value as an array.
404
+ unit :d, value: [24, :h], aliases: [:day, :days]
402
405
  end
403
406
  ```
404
407
 
@@ -38,13 +38,11 @@ module UnitMeasurements
38
38
  end
39
39
 
40
40
  def conversion_factor
41
- if value.is_a?(String)
42
- measurement_value, measurement_unit = Parser.parse(value)
43
- conversion_factor = unit_group.unit_for!(measurement_unit).conversion_factor
44
- conversion_factor * measurement_value
45
- else
46
- value
47
- end
41
+ return value if value.is_a?(Numeric)
42
+
43
+ measurement_value, measurement_unit = parse_value(value)
44
+ conversion_factor = unit_group.unit_for!(measurement_unit).conversion_factor
45
+ conversion_factor * measurement_value
48
46
  end
49
47
 
50
48
  private
@@ -75,5 +73,17 @@ module UnitMeasurements
75
73
  ["R", %w(ronna), 1e+27],
76
74
  ["Q", %w(quetta), 1e+30]
77
75
  ].map(&:freeze).freeze
76
+
77
+ def parse_value(tokens)
78
+ case tokens
79
+ when String
80
+ tokens = Parser.parse(value)
81
+ when Array
82
+ raise BaseError, "Cannot parse [number, unit] formatted tokens from #{tokens}." unless tokens.size == 2
83
+ else
84
+ raise BaseError, "Value of the unit must be defined as string or array, but received #{tokens}"
85
+ end
86
+ [tokens[0].to_r, tokens[1].freeze]
87
+ end
78
88
  end
79
89
  end
@@ -3,5 +3,5 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module UnitMeasurements
6
- VERSION = "1.1.0"
6
+ VERSION = "1.2.0"
7
7
  end
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: 1.1.0
4
+ version: 1.2.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-09-14 00:00:00.000000000 Z
11
+ date: 2023-09-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport