unit_measurements 1.1.0 → 1.2.0

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