unit_measurements 5.11.1 → 5.12.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: 299b2e4f1e3ebfedd82a18f0010b1aef87e464a00b17bb0fdccbd3d1d1d43807
4
- data.tar.gz: a80df705e041ae39d0008e8f4e58b792850fc0b5cd74c4983846e02a371b7216
3
+ metadata.gz: e01978467f274548e8cf792d9b7bfe26ab85155a2c099482cb8b4017641ed900
4
+ data.tar.gz: d09990112a19291527059e822906a802a051541b654babad13e97110c5557dea
5
5
  SHA512:
6
- metadata.gz: 5c01c9a8d9b7fd6f3315b8befea0d852cb3e9c8ba8b2866975f60055c697f5fbb8af8fb7844f94144ca1b3919107bc8fb4570945974a1a62568febe1d665cd61
7
- data.tar.gz: 880f955b5cf1ff30c51247ed3338a68ed78b4a9d416d9f7a594ca377b403749f5c3fad8b1515c56b2cf5b2656ddaa7b4759bad8ca38e8b383043b12b1853b597
6
+ metadata.gz: 0faa94f0a962f19134ff58276c6c876a30a81817172039c4261eaa9a15eeb61dd7047f61b96168c2115c4ba40711fee42cb4ceb832c6e6640bd9c8e7e0f4343b
7
+ data.tar.gz: d9213995299feeb51dda98cc4dbbd3bd76f6c4782a8e04b9612cc7f3134b192c74aa80b027779c1b8c862358a84a8c40469753a086ceb94fd5b5ee2b8d33e973
data/CHANGELOG.md CHANGED
@@ -1,3 +1,16 @@
1
+ ## [5.12.0](https://github.com/shivam091/unit_measurements/compare/v5.11.1...v5.12.0) - 2023-11-25
2
+
3
+ ### What's new
4
+
5
+ - Added `MissingPrimitiveUnitError` error if user tries to convert measurement to
6
+ the primitive unit but it's not set for the unit group.
7
+ - Aliased `#+` method as `#add`.
8
+ - Aliased `#-` method as `#subtract`.
9
+ - Aliased `#*` method as `#times` and `#multiply`.
10
+ - Aliased `#/` method as `#divide`.
11
+
12
+ ----------
13
+
1
14
  ## [5.11.1](https://github.com/shivam091/unit_measurements/compare/v5.11.0...v5.11.1) - 2023-11-16
2
15
 
3
16
  ### What's changed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unit_measurements (5.11.1)
4
+ unit_measurements (5.12.0)
5
5
  activesupport (~> 7.0)
6
6
 
7
7
  GEM
@@ -41,6 +41,7 @@ module UnitMeasurements
41
41
  def +(other)
42
42
  arithmetic_operation(other, :+)
43
43
  end
44
+ alias_method :add, :+
44
45
 
45
46
  # Subtracts the quantity of the other measurement or a numeric value from the
46
47
  # quantity of the current measurement.
@@ -62,6 +63,7 @@ module UnitMeasurements
62
63
  def -(other)
63
64
  arithmetic_operation(other, :-)
64
65
  end
66
+ alias_method :subtract, :-
65
67
 
66
68
  # Multiplies the quantity of the current measurement by the quantity of the
67
69
  # other measurement or a numeric value.
@@ -84,6 +86,8 @@ module UnitMeasurements
84
86
  arithmetic_operation(other, :*)
85
87
  end
86
88
  alias_method :scale, :*
89
+ alias_method :times, :*
90
+ alias_method :multiply, :*
87
91
 
88
92
  # Divides the quantity of the current measurement by the quantity of the other
89
93
  # measurement or a numeric value.
@@ -105,6 +109,7 @@ module UnitMeasurements
105
109
  def /(other)
106
110
  arithmetic_operation(other, :/)
107
111
  end
112
+ alias_method :divide, :/
108
113
 
109
114
  # Raises the quantity of the current measurement to the power of the quantity of
110
115
  # the other measurement or numeric value.
@@ -16,10 +16,13 @@ require "unit_measurements/version"
16
16
  module UnitMeasurements
17
17
  # This is the base class for custom errors in the +UnitMeasurements+ module.
18
18
  #
19
+ # @see UnitError
19
20
  # @see ParseError
20
- # @see PrimitiveUnitAlreadySetError
21
+ # @see BlankUnitError
22
+ # @see BlankQuantityError
21
23
  # @see UnitAlreadyDefinedError
22
- # @see UnitError
24
+ # @see MissingPrimitiveUnitError
25
+ # @see PrimitiveUnitAlreadySetError
23
26
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
24
27
  # @since 1.1.0
25
28
  class BaseError < StandardError; end
@@ -168,3 +171,4 @@ require "unit_measurements/errors/unit_already_defined_error"
168
171
  require "unit_measurements/errors/primitive_unit_already_set_error"
169
172
  require "unit_measurements/errors/blank_quantity_error"
170
173
  require "unit_measurements/errors/blank_unit_error"
174
+ require "unit_measurements/errors/missing_primitive_unit_error"
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # -*- frozen_string_literal: true -*-
3
+ # -*- warn_indent: true -*-
4
+
5
+ module UnitMeasurements
6
+ # The +UnitMeasurements::MissingPrimitiveUnitError+ class represents an error
7
+ # that occurs when the primitive unit is not set for a unit group.
8
+ #
9
+ # This error is raised when a user attempts to convert a measurement to the
10
+ # primitive unit of a unit group that does not have a primitive unit defined.
11
+ #
12
+ # @see BaseError
13
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
14
+ # @since 5.12.0
15
+ class MissingPrimitiveUnitError < BaseError
16
+ # Initializes a new +MissingPrimitiveUnitError+ instance.
17
+ #
18
+ # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
19
+ # @since 5.12.0
20
+ def initialize
21
+ super("The primitive unit is not set for the unit group.")
22
+ end
23
+ end
24
+ end
@@ -147,11 +147,17 @@ module UnitMeasurements
147
147
  # A new +Measurement+ instance with the converted +quantity+ and
148
148
  # +target unit+.
149
149
  #
150
+ # @raise [MissingPrimitiveUnitError]
151
+ # if primitive unit is not set for the unit group.
152
+ #
150
153
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
151
154
  # @since 1.0.0
152
155
  def convert_to(target_unit, use_cache: false)
153
156
  target_unit = if target_unit.to_s.eql?("primitive")
154
- self.class.unit_group.primitive
157
+ primitive_unit = self.class.primitive
158
+
159
+ raise MissingPrimitiveUnitError if primitive_unit.nil?
160
+ primitive_unit
155
161
  else
156
162
  unit_from_unit_or_name!(target_unit)
157
163
  end
@@ -474,7 +480,7 @@ module UnitMeasurements
474
480
  # @author {Harshal V. Ladhe}[https://shivam091.github.io/]
475
481
  # @since 1.0.0
476
482
  def unit_from_unit_or_name!(value)
477
- value.is_a?(Unit) ? value : self.class.send(:unit_group).unit_for!(value)
483
+ value.is_a?(Unit) ? value : self.class.unit_for!(value)
478
484
  end
479
485
 
480
486
  # Calculates the conversion factor between the current unit and the target
@@ -4,5 +4,5 @@
4
4
 
5
5
  module UnitMeasurements
6
6
  # Current stable version.
7
- VERSION = "5.11.1"
7
+ VERSION = "5.12.0"
8
8
  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: 5.11.1
4
+ version: 5.12.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-16 00:00:00.000000000 Z
11
+ date: 2023-11-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -113,6 +113,7 @@ files:
113
113
  - lib/unit_measurements/conversion.rb
114
114
  - lib/unit_measurements/errors/blank_quantity_error.rb
115
115
  - lib/unit_measurements/errors/blank_unit_error.rb
116
+ - lib/unit_measurements/errors/missing_primitive_unit_error.rb
116
117
  - lib/unit_measurements/errors/parse_error.rb
117
118
  - lib/unit_measurements/errors/primitive_unit_already_set_error.rb
118
119
  - lib/unit_measurements/errors/unit_already_defined_error.rb