unit_measurements 3.4.0 → 3.4.1

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: c16d2a016d7466ccea3d40fe7b744247382183f133fc3403b074f3ddbae8b505
4
- data.tar.gz: fd36431d83356d79744aca40ca3233fabf6b832fcb0620360e39ec5dd3d16b7f
3
+ metadata.gz: a920d0b422e61335aa18dffae1fb490f2a9b737c9e8b0121919bd02504055a7f
4
+ data.tar.gz: 66efbf28071987b2391111599b5c3db35d845ca582315e906c447776b599c450
5
5
  SHA512:
6
- metadata.gz: 8887418323dc6a690bca7bae4bf5aa322709201122194f3d942edaf730b748b5005dddb780326e7b8227faed5b5123dd157079aa6e765b5ded7f7c9e5fb60456
7
- data.tar.gz: b17b43cb7faad800c2fde908c931ba93f6c04f1f47a222c9a93369d91f4b11defb45a091410adf5b59f4f023a50a4fcc6a31f0b0c1dcb3b6bffd655a6202ded0
6
+ metadata.gz: 3c61b41b2849f0c6d806effcc26a986692aca92bfffcc477e2f476363ed5a6fb5b47feb6ddb867c38491b668ad05a4e550488dc55d0582c79645a6c627506294
7
+ data.tar.gz: 4aa4dfef7b3839c6c98f204b3241587f0b1c4a49b0c5aa0c9d1d8587e50e9c469f9fcbdff2202eb95288beadbedf4c1144ffb1acde63c8b13919d60ad18a9e4f
data/CHANGELOG.md CHANGED
@@ -1,4 +1,16 @@
1
- ## [3.4.0](https://github.com/shivam091/unit_measurements/compare/v3.3.0...v3.4.0) - 2023-08-29
1
+ ## [3.4.1](https://github.com/shivam091/unit_measurements/compare/v3.4.0...v3.4.1) - 2023-08-29
2
+
3
+ ### What's changed
4
+
5
+ - Updated usage examples in readme.
6
+
7
+ ### What's removed
8
+
9
+ - Removed overridden `Measurement.name` method.
10
+
11
+ ----------
12
+
13
+ ## [3.4.0](https://github.com/shivam091/unit_measurements/compare/v3.3.0...v3.4.0) - 2023-08-28
2
14
 
3
15
  ### What's new
4
16
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unit_measurements (3.4.0)
4
+ unit_measurements (3.4.1)
5
5
  activesupport (~> 7.0)
6
6
 
7
7
  GEM
data/README.md CHANGED
@@ -24,10 +24,10 @@ The `unit_measurements` gem is designed to simplify the handling of units for sc
24
24
 
25
25
  ## Advantages
26
26
 
27
- 1. Provides easy conversion between units.
28
- 2. Built in support for various [unit groups](units.md).
29
- 3. Lightweight and easily extensible to include other units and conversions.
30
- 4. Can convert `complex`, `rational`, `fractions`, `exponents`, `scientific notations`, and `ratios`.
27
+ 1. It provides easy conversion between units.
28
+ 2. It is lightweight and easily extensible to include other units and conversions.
29
+ 2. It has built in support for various [unit groups](units.md).
30
+ 4. It can convert `complex`, `fractional`, `mixed fractional`, `scientific` numbers, and `ratios`.
31
31
 
32
32
  ## Disclaimer
33
33
 
@@ -57,205 +57,152 @@ Or otherwise simply install it yourself as:
57
57
 
58
58
  ## Usage
59
59
 
60
- The **`UnitMeasurements::Measurement`** class is responsible for conversion of quantity to various compatble units.
61
-
62
- Measurements can't be initialized or converted to other units directly with the `UnitMeasurements::Measurement` class,
63
- but rather with the unit group classes viz., `UnitMeasurements::Weight`, `UnitMeasurements::Length`, etc.
60
+ The **`UnitMeasurements::Measurement`** class is responsible for conversion of quantity to various compatible units
61
+ but it can't be directly initialized or converted to other units, but rather it is done with the unit group classes
62
+ viz., `UnitMeasurements::Weight`, `UnitMeasurements::Length`, etc.
64
63
 
65
64
  **Initialize a measurement:**
66
65
 
67
66
  ```ruby
68
- UnitMeasurements::Weight.new(1, :kg)
69
- #=> 1 kg
67
+ UnitMeasurements::Length.new(1, :km)
68
+ #=> 1 km
70
69
  ```
71
70
 
72
71
  **Converting to other units:**
73
72
 
74
- This gem allows you to convert among units of same unit group.
75
- You can convert measurement to other unit using `#convert_to`
76
- (aliased as `#to`, `#in`, and `as`) or `#convert_to!`
77
- (aliased as `#to!`, `#in!`, and `as!`) methods.
73
+ This gem allows you to convert among units of same unit group. You can convert measurement to other unit using `#convert_to`
74
+ (aliased as `#to`, `#in`, and `#as`) or `#convert_to!` (aliased as `#to!`, `#in!`, and `#as!`) methods.
78
75
 
79
76
  You can use `#convert_to` as:
80
77
 
81
78
  ```ruby
82
- UnitMeasurements::Weight.new(1, :kg).convert_to(:g)
83
- #=> 1000.0 g
79
+ UnitMeasurements::Length.new(1, :km).convert_to(:m)
80
+ #=> 1000.0 m
84
81
  ```
85
82
 
86
83
  If you want to modify measurement object itself, you can use `#convert_to!` method as:
87
84
 
88
85
  ```ruby
89
- UnitMeasurements::Weight.new(1, :kg).convert_to!(:g)
90
- #=> 1000.0 g
86
+ UnitMeasurements::Length.new(1, :km).convert_to!(:m)
87
+ #=> 1000.0 m
91
88
  ```
92
89
 
93
90
  You can also chain call of `#convert_to` and `#convert_to!` methods as:
94
91
 
95
92
  ```ruby
96
- UnitMeasurements::Weight.new(1, :kg).convert_to(:g).convert_to(:t).convert_to!(:q)
97
- #=> 0.01 q
93
+ UnitMeasurements::Length.new(100, :m).convert_to(:ft).convert_to!(:in)
94
+ #=> 3937.00787401574071916010498688 in
98
95
  ```
99
96
 
100
97
  **Parse string without having to split out the quantity and source unit:**
101
98
 
102
99
  ```ruby
103
- UnitMeasurements::Weight.parse("1 kg")
104
- #=> 1.0 kg
100
+ UnitMeasurements::Length.parse("1 km")
101
+ #=> 1.0 km
105
102
  ```
106
103
 
107
104
  **Parse string that mentions quantity, source unit, and target unit:**
108
105
 
109
- ```ruby
110
- UnitMeasurements::Weight.parse("1 kg to g")
111
- #=> 1000.0 g
112
- UnitMeasurements::Weight.parse("1 kg as g")
113
- #=> 1000.0 g
114
- UnitMeasurements::Weight.parse("1 kg in g")
115
- #=> 1000.0 g
116
- ```
117
-
118
- **Parse rational numbers, source unit, and (or) target unit:**
119
-
120
- ```ruby
121
- UnitMeasurements::Weight.new(Rational(2, 3), :kg).convert_to(:g)
122
- #=> 666.666666666667 g
123
- UnitMeasurements::Weight.new("2/3", :kg).convert_to(:g)
124
- #=> 666.666666666667 g
125
- UnitMeasurements::Weight.parse("2/3 kg").convert_to(:g)
126
- #=> 666.666666666667 g
127
- UnitMeasurements::Weight.parse("2/3 kg to g")
128
- #=> 666.666666666667 g
129
- ```
130
-
131
- **Parse complex numbers, source unit, and (or) target unit:**
106
+ A source unit can be separated from the target unit using the `in`, `to`, or `as` operators.
132
107
 
133
108
  ```ruby
134
- UnitMeasurements::Weight.new(Complex(2, 3), :kg).convert_to(:g)
135
- #=> 2000.0+3000.0i g
136
- UnitMeasurements::Weight.new("2+3i", :kg).convert_to(:g)
137
- #=> 2000.0+3000.0i g
138
- UnitMeasurements::Weight.parse("2+3i kg").convert_to(:g)
139
- #=> 2000.0+3000.0i g
140
- UnitMeasurements::Weight.parse("2+3i kg to g")
141
- #=> 2000.0+3000.0i g
109
+ UnitMeasurements::Length.parse("1 km to m")
110
+ #=> 1000.0 m
142
111
  ```
143
112
 
144
113
  **Parse scientific numbers, source unit, and (or) target unit:**
145
114
 
146
115
  ```ruby
147
- UnitMeasurements::Weight.new(BigDecimal(2), :kg).convert_to(:g)
148
- #=> 2000.0 g
149
- UnitMeasurements::Weight.new(0.2e1, :kg).convert_to(:g)
150
- #=> 2000.0 g
151
- UnitMeasurements::Weight.parse("0.2e1 kg").convert_to(:g)
152
- #=> 2000.0 g
153
- UnitMeasurements::Weight.parse("0.2e1 kg to g")
154
- #=> 2000.0 g
116
+ UnitMeasurements::Length.new(BigDecimal(2), :km).convert_to(:m)
117
+ #=> 20000.0 m
118
+ UnitMeasurements::Length.new("2e+2", :km).convert_to(:m)
119
+ #=> 200000.0 m
120
+ UnitMeasurements::Length.parse("2e² km").convert_to(:m)
121
+ #=> 200000.0 m
122
+ UnitMeasurements::Length.parse("2e+2 km to m")
123
+ #=> 200000.0 m
124
+ UnitMeasurements::Length.parse("2e⁻² km to m")
125
+ #=> 20.0 m
155
126
  ```
156
127
 
157
- **Parse ratios, source unit, and (or) target unit:**
158
-
159
- ```ruby
160
- UnitMeasurements::Weight.new("1:2", :kg).convert_to(:g)
161
- #=> 500.0 g
162
- UnitMeasurements::Weight.parse("1:2 kg").convert_to(:g)
163
- #=> 500.0 g
164
- UnitMeasurements::Weight.parse("1:2 kg to g")
165
- #=> 500.0 g
166
- ```
128
+ Supported special characters for exponents are `⁰`, `¹`, `²`, `³`, `⁴`, `⁵`, `⁶`, `⁷`, `⁸`, `⁹`, `⁺`, `⁻`.
167
129
 
168
- **Parse fractional notations, source unit, and (or) target unit:**
130
+ **Parse complex numbers, source unit, and (or) target unit:**
169
131
 
170
132
  ```ruby
171
- UnitMeasurements::Weight.new("1/2", :kg).convert_to(:g)
172
- #=> 500.0 g
173
- UnitMeasurements::Weight.parse("1/2 kg").convert_to(:g)
174
- #=> 500.0 g
175
- UnitMeasurements::Weight.parse("1/2 kg to g")
176
- #=> 500.0 g
177
- UnitMeasurements::Weight.new("½", :kg).convert_to(:g)
178
- #=> 500.0 g
179
- UnitMeasurements::Weight.parse("½ kg").convert_to(:g)
180
- #=> 500.0 g
181
- UnitMeasurements::Weight.parse("½ kg to g")
182
- #=> 500.0 g
133
+ UnitMeasurements::Length.new(Complex(2, 3), :km).convert_to(:m)
134
+ #=> 2000.0+3000.0i m
135
+ UnitMeasurements::Length.new("2+3i", :km).convert_to(:m)
136
+ #=> 2000.0+3000.0i m
137
+ UnitMeasurements::Length.parse("2+3i km").convert_to(:m)
138
+ #=> 2000.0+3000.0i m
139
+ UnitMeasurements::Length.parse("2+3i km to m")
140
+ #=> 2000.0+3000.0i m
183
141
  ```
184
142
 
185
- **Parse mixed fractional notations, source unit, and (or) target unit:**
143
+ **Parse fractional/mixed fractional numbers, source unit, and (or) target unit:**
186
144
 
187
145
  ```ruby
188
- UnitMeasurements::Weight.new("2 1/2", :kg).convert_to(:g)
189
- #=> 2500.0 g
190
- UnitMeasurements::Weight.parse("2 1/2 kg").convert_to(:g)
191
- #=> 2500.0 g
192
- UnitMeasurements::Weight.parse("2 1/2 kg to g")
193
- #=> 2500.0 g
194
- UnitMeasurements::Weight.new("2 ½", :kg).convert_to(:g)
195
- #=> 2500.0 g
196
- UnitMeasurements::Weight.parse("2 ½ kg").convert_to(:g)
197
- #=> 2500.0 g
198
- UnitMeasurements::Weight.parse("2 ½ kg to g")
199
- #=> 2500.0 g
146
+ UnitMeasurements::Length.new(Rational(2, 3), :km).convert_to(:m)
147
+ #=> 666.666666666667 m
148
+ UnitMeasurements::Length.new("2/3", :km).convert_to(:m)
149
+ #=> 666.666666666667 m
150
+ UnitMeasurements::Length.new("½", :km).convert_to(:m)
151
+ #=> 500.0 m
152
+ UnitMeasurements::Length.parse("2 ½ km").convert_to(:m)
153
+ #=> 2500.0 m
154
+ UnitMeasurements::Length.parse("2/3 km").convert_to(:m)
155
+ #=> 666.666666666667 m
156
+ UnitMeasurements::Length.parse("2/3 km to m")
157
+ #=> 666.666666666667 m
158
+ UnitMeasurements::Length.parse("2 1/2 km").convert_to(:m)
159
+ #=> 2500.0 m
160
+ UnitMeasurements::Length.parse("2 ½ km to m")
161
+ #=> 2500.0 m
200
162
  ```
201
163
 
202
164
  Supported special characters for fractional notations are `¼`, `½`, `¾`, `⅓`, `⅔`, `⅕`, `⅖`, `⅗`, `⅘`, `⅙`, `⅚`, `⅐`, `⅛`, `⅜`, `⅝`, `⅞`, `⅑`, `⅒`, `↉`, `⁄`.
203
165
 
204
- **Parse exponents, source unit, and (or) target unit:**
166
+ **Parse ratios, source unit, and (or) target unit:**
205
167
 
206
168
  ```ruby
207
- UnitMeasurements::Weight.new("2e+2", :kg).convert_to(:g)
208
- #=> 200000.0 g
209
- UnitMeasurements::Weight.parse("2e² kg").convert_to(:g)
210
- #=> 200000.0 g
211
- UnitMeasurements::Weight.parse("2e+2 kg to g")
212
- #=> 200000.0 g
213
- UnitMeasurements::Weight.new("2e⁺²", :kg).convert_to(:g)
214
- #=> 200000.0 g
215
- UnitMeasurements::Weight.parse("2e⁺2 kg").convert_to(:g)
216
- #=> 200000.0 g
217
- UnitMeasurements::Weight.parse("2e⁻² kg to g")
218
- #=> 20.0 g
169
+ UnitMeasurements::Length.new("1:2", :km).convert_to(:m)
170
+ #=> 500.0 m
171
+ UnitMeasurements::Length.parse("1:2 km").convert_to(:m)
172
+ #=> 500.0 m
173
+ UnitMeasurements::Length.parse("1:2 km to m")
174
+ #=> 500.0 m
219
175
  ```
220
176
 
221
- Supported special characters for exponents are `⁰`, `¹`, `²`, `³`, `⁴`, `⁵`, `⁶`, `⁷`, `⁸`, `⁹`, `⁺`, `⁻`.
222
-
223
177
  **Formatting measurement:**
224
178
 
225
179
  If you want to format measurement to certain format, you can use `#format` method.
226
180
  If format is not specified, it defaults to `"%.2<value>f %<unit>s"`.
227
181
 
228
182
  ```ruby
229
- UnitMeasurements::Weight.parse("2 kg").to(:st).format
230
- #=> "0.31 st"
231
- UnitMeasurements::Weight.parse("2 kg").to(:st).format("%.4<quantity>f %<unit>s")
232
- #=> "0.3149 st"
233
- UnitMeasurements::Weight.parse("2 kg").to(:st).format("%.4<quantity>f")
234
- #=> "0.3149"
183
+ UnitMeasurements::Length.new(100, :m).to(:in).format
184
+ #=> "3937.01 in"
185
+ UnitMeasurements::Length.new(100, :m).to(:in).format("%.4<quantity>f %<unit>s")
186
+ #=> "3937.0079 in"
187
+ UnitMeasurements::Length.new(100, :m).to(:in).format("%.4<quantity>f")
188
+ #=> "3937.0079"
235
189
  ```
236
190
 
237
191
  **Extract the unit and the quantity from measurement:**
238
192
 
239
193
  ```ruby
240
- weight = UnitMeasurements::Weight.new(1, :kg)
241
- weight.quantity
194
+ length = UnitMeasurements::Length.new(1, :km)
195
+ length.quantity
242
196
  #=> 1
243
- weight.unit
244
- #=> #<UnitMeasurements::Unit: kg (kilogram, kilogramme, kilogrammes, kilograms)>
245
- ```
246
-
247
- **See humanized name of the unit group:**
248
-
249
- ```ruby
250
- UnitMeasurements::Weight.name
251
- #=> weight
197
+ length.unit
198
+ #=> #<UnitMeasurements::Unit: km (kilometer, kilometers, kilometre, kilometres)>
252
199
  ```
253
200
 
254
201
  **See all unit systems defined in the unit group:**
255
202
 
256
203
  ```ruby
257
204
  UnitMeasurements::Length.systems
258
- #=> [#<UnitMeasurements::UnitSystem:0x00007fa1a46d11c0 @name=:metric, @primitive=#<UnitMeasurements::Unit: m (meter, meters, metre, metres)>, @units=[]>]
205
+ #=> [#<UnitMeasurements::UnitSystem:0x00007fa1a46d11c0 @name=:metric, @primitive=#<UnitMeasurements::Unit: m (meter, meters, metre, metres)>, @units=[]>, ...]
259
206
  ```
260
207
 
261
208
  **Finding unit system within the unit group:**
@@ -268,31 +215,28 @@ UnitMeasurements::Length.system_for(:imperial)
268
215
  # @units=[#<UnitMeasurements::Unit: in (", inch, inches)>, #<UnitMeasurements::Unit: ft (', feet, foot)>, ...]>
269
216
  ```
270
217
 
218
+ **_Note: The `UnitMeasurements::UnitGroup` and `UnitMeasurements::UnitSystem` instances share the same set of methods for unit handling.
219
+ You can use these methods interchangeably between the two classes._**
220
+
271
221
  **See all units of the unit group/unit system:**
272
222
 
273
223
  ```ruby
274
- UnitMeasurements::Weight.units
275
- #=> [#<UnitMeasurements::Unit: g (gram, gramme, grammes, grams)>, ..., ...]
276
- UnitMeasurements::Length.system_for(:imperial).units
277
- #=> [#<UnitMeasurements::Unit: in (", inch, inches)>, #<UnitMeasurements::Unit: ft (', feet, foot)>, ...]
224
+ UnitMeasurements::Length.units
225
+ #=> [#<UnitMeasurements::Unit: m (meter, meters, metre, metres)>, ..., ...]
278
226
  ```
279
227
 
280
228
  **See names of all valid units of the unit group/unit system:**
281
229
 
282
230
  ```ruby
283
- UnitMeasurements::Weight.unit_names
284
- #=> ["g", "kg", "lb", "oz", ...]
285
- UnitMeasurements::Length.system_for(:imperial).unit_names
286
- #=> ["ft", "in", "mi", "yd"]
231
+ UnitMeasurements::Length.unit_names
232
+ #=> ["m", "km", "mi", "ft", "in", "yd", ...]
287
233
  ```
288
234
 
289
235
  **See all valid units of the unit group/unit system along with their aliases:**
290
236
 
291
237
  ```ruby
292
- UnitMeasurements::Weight.unit_names_with_aliases
293
- #=> ["g", "gram", "gramme", "grammes", "grams", "kg", "kilogram", "kilogramme", "kilogrammes", "kilograms", "lb", "ounce", "ounces", "oz", "pound", "pounds", ...]
294
- UnitMeasurements::Length.system_for(:imperial).unit_names_with_aliases
295
- #=> ["feet", "foot", "ft", "in", "inch", "inches", "mi", "mile", "miles", "yard", "yards", "yd"]
238
+ UnitMeasurements::Length.unit_names_with_aliases
239
+ #=> ["g", "meter", "metre", "meters", "metres", "km", "kilometer", "kilometre", "kilometers", "kilometres", "in", "inch", "inches", "yd", "yard", "yards", ...]
296
240
  ```
297
241
 
298
242
  **Finding units within the unit group/unit system:**
@@ -302,50 +246,31 @@ the unit group. `#unit_for!` method returns error if a unit is not present in th
302
246
  unit group.
303
247
 
304
248
  ```ruby
305
- UnitMeasurements::Weight.unit_for(:g)
306
- #=> #<UnitMeasurements::Unit: g (gram, gramme, grammes, grams)>
307
- UnitMeasurements::Weight.unit_for(:z)
249
+ UnitMeasurements::Length.unit_for(:m)
250
+ #=> #<UnitMeasurements::Unit: m (meter, meters, metre, metres)>
251
+ UnitMeasurements::Length.unit_for(:z)
308
252
  #=> nil
309
- UnitMeasurements::Weight.unit_for!(:g)
310
- #=> #<UnitMeasurements::Unit: g (gram, gramme, grammes, grams)>
311
- UnitMeasurements::Weight.unit_for!(:z)
253
+ UnitMeasurements::Length.unit_for!(:m)
254
+ #=> #<UnitMeasurements::Unit: m (meter, meters, metre, metres)>
255
+ UnitMeasurements::Length.unit_for!(:z)
312
256
  #=> Invalid unit: 'z'. (UnitMeasurements::UnitError)
313
-
314
- UnitMeasurements::Length.system_for(:imperial).unit_for(:in)
315
- #=> #<UnitMeasurements::Unit: in (", inch, inches)>
316
- UnitMeasurements::Length.system_for(:imperial).unit_for(:m)
317
- #=> nil
318
- UnitMeasurements::Length.system_for(:imperial).unit_for!(:in)
319
- #=> #<UnitMeasurements::Unit: in (", inch, inches)>
320
- UnitMeasurements::Length.system_for(:imperial).unit_for!(:m)
321
- #=> Invalid unit: 'm'. (UnitMeasurements::UnitError)
322
257
  ```
323
258
 
324
259
  **Finding whether the unit is defined within the unit group/unit system:**
325
260
 
326
261
  ```ruby
327
- UnitMeasurements::Weight.defined?(:g)
262
+ UnitMeasurements::Length.defined?(:m)
328
263
  #=> true
329
- UnitMeasurements::Weight.defined?(:gramme)
330
- #=> false
331
-
332
- UnitMeasurements::Length.system_for(:metric).defined?(:m)
333
- #=> true
334
- UnitMeasurements::Length.system_for(:metric).defined?(:in)
264
+ UnitMeasurements::Length.defined?(:metre)
335
265
  #=> false
336
266
  ```
337
267
 
338
268
  **Check if the unit is a valid unit or alias within the unit group/unit system:**
339
269
 
340
270
  ```ruby
341
- UnitMeasurements::Weight.unit_or_alias?(:g)
342
- #=> true
343
- UnitMeasurements::Weight.unit_or_alias?(:gramme)
344
- #=> true
345
-
346
- UnitMeasurements::Length.system_for(:metric).unit_or_alias?(:m)
271
+ UnitMeasurements::Length.unit_or_alias?(:m)
347
272
  #=> true
348
- UnitMeasurements::Length.system_for(:metric).unit_or_alias?(:metre)
273
+ UnitMeasurements::Length.unit_or_alias?(:metre)
349
274
  #=> true
350
275
  ```
351
276
 
@@ -353,29 +278,22 @@ UnitMeasurements::Length.system_for(:metric).unit_or_alias?(:metre)
353
278
 
354
279
  You have ability to compare the measurements with the same or different units within the same unit group.
355
280
  For example, comparing weight with weight will work, comparing a weight with a area would fail.
281
+ Supported comparisons and methods are `==`, `!=`, `<`, `>`, `<=`, `>=`, `between?`, and `clamp`.
356
282
 
357
283
  ```ruby
358
- UnitMeasurements::Weight.new(1, "kg") == UnitMeasurements::Weight.new(1, :kg)
284
+ UnitMeasurements::Length.new(1, "km") == UnitMeasurements::Length.new(1, :km)
359
285
  #=> true
360
- UnitMeasurements::Weight.parse("1 kg") == UnitMeasurements::Weight.parse("1000 g")
361
- #=> true
362
- UnitMeasurements::Weight.parse("1 kg") != UnitMeasurements::Weight.parse("1 g")
363
- #=> true
364
- UnitMeasurements::Weight.parse("1 kg") <= UnitMeasurements::Weight.parse("0.5 kg")
286
+ UnitMeasurements::Length.parse("1 km") <= UnitMeasurements::Length.parse("0.5 km")
365
287
  #=> false
366
- UnitMeasurements::Weight.parse("1 kg") >= UnitMeasurements::Weight.parse("0.5 kg")
367
- #=> true
368
288
  UnitMeasurements::Length.new(1, :ft).between?(UnitMeasurements::Length.new(12, :in), UnitMeasurements::Length.new(24, :in))
369
289
  #=> true
370
- UnitMeasurements::Length.new(1, :ft).clamp(UnitMeasurements::Length.new(13, :in), UnitMeasurements::Length.new(24, :in))
371
- #=> 13 in
372
290
  ```
373
291
 
374
292
  ### Arithmetic
375
293
 
376
294
  You have ability to perform arithmetic operations on measurements with the same or
377
295
  different units within a same unit group. You can perform arithmetic operations on
378
- measurement by either other compatible measurement or number.
296
+ measurement by either other measurement with compatible unit or number.
379
297
  In cases of different units, the left hand side takes precedence:
380
298
 
381
299
  **Methods:**
@@ -385,14 +303,14 @@ In cases of different units, the left hand side takes precedence:
385
303
  4. `#/` - Divides the measurement quantity by other measurement quantity or number.
386
304
 
387
305
  ```ruby
388
- UnitMeasurements::Weight.new(1, :kg) + UnitMeasurements::Weight.new(1, :g)
389
- #=> 1.001 kg
390
- UnitMeasurements::Weight.new(2, :kg) - 1
391
- #=> 1 kg
392
- UnitMeasurements::Weight.new(2, :kg) * 2
393
- #=> 4 kg
394
- UnitMeasurements::Weight.new(4, :kg) / UnitMeasurements::Weight.new(2, :kg)
395
- #=> 2 kg
306
+ UnitMeasurements::Length.new(1, :km) + UnitMeasurements::Length.new(1, :m)
307
+ #=> 1.001 km
308
+ UnitMeasurements::Length.new(2, :km) - 1
309
+ #=> 1 km
310
+ UnitMeasurements::Length.new(2, :km) * 2
311
+ #=> 4 km
312
+ UnitMeasurements::Length.new(4, :km) / UnitMeasurements::Length.new(2, :km)
313
+ #=> 2 km
396
314
  ```
397
315
 
398
316
  ### Math
@@ -406,8 +324,8 @@ You can perform mathematical operations on the measurements.
406
324
  4. `#ceil` - Rounds quantity of the measurement to next higher integer.
407
325
 
408
326
  ```ruby
409
- UnitMeasurements::Weight.new(1, :g).convert_to(:st).round(4)
410
- #=> 0.0002 st
327
+ UnitMeasurements::Length.new(1, :m).to(:in).round(4)
328
+ #=> 39.3701 in
411
329
  UnitMeasurements::Length.new(-17.625, :m).abs
412
330
  #=> 17.625 m
413
331
  UnitMeasurements::Length.new(17.625, :m).floor
@@ -422,16 +340,16 @@ You can convert measurement quantity directly to other numeric types viz.
422
340
  `Integer`, `BigDecimal`, `Rational`, `Complex`, and `Float`.
423
341
 
424
342
  ```ruby
425
- UnitMeasurements::Weight.new(2.25567, :kg).to_i
426
- #=> 2 kg
427
- UnitMeasurements::Weight.new(2.25567, :kg).to_f
428
- #=> 2.25567 kg
429
- UnitMeasurements::Weight.new(2.25567, :kg).to_r
430
- #=> 225567/100000 kg
431
- UnitMeasurements::Weight.new(2.25567, :kg).to_d
432
- #=> 2.25567 kg
433
- UnitMeasurements::Weight.new(2.25567, :kg).to_c
434
- #=> 2.25567+0i kg
343
+ UnitMeasurements::Length.new(2.25567, :km).to_i
344
+ #=> 2 km
345
+ UnitMeasurements::Length.new(2.25567, :km).to_f
346
+ #=> 2.25567 km
347
+ UnitMeasurements::Length.new(2.25567, :km).to_r
348
+ #=> 225567/100000 km
349
+ UnitMeasurements::Length.new(2.25567, :km).to_d
350
+ #=> 2.25567 km
351
+ UnitMeasurements::Length.new(2.25567, :km).to_c
352
+ #=> 2.25567+0i km
435
353
  ```
436
354
 
437
355
  ## Units
@@ -501,8 +419,6 @@ gem "unit_measurements", require: "unit_measurements/base"
501
419
  require "unit_measurements/base"
502
420
 
503
421
  require "unit_measurements/unit_groups/length"
504
- require "unit_measurements/unit_groups/weight"
505
- require "unit_measurements/unit_groups/volume"
506
422
  ```
507
423
 
508
424
  or
@@ -514,10 +430,7 @@ gem "unit_measurements", require: ["unit_measurements/base", "unit_measurements/
514
430
  ### Building new unit groups
515
431
 
516
432
  This library provides simpler way to build your own unit groups. To build new unit group,
517
- use `UnitMeasurements.build` in order to define units within it:
518
-
519
- If the unit is supporting [si prefixes](#si-units-support), you can use `si_unit` method to build it.
520
- If you build unit using `si_unit`, the unit will be added along with all SI prefixes for it.
433
+ use `UnitMeasurements.build` method in order to define units and unit systems within it:
521
434
 
522
435
  For convenience, you also have ability to group units by the unit system and set primitive unit for each unit system using `system` and `primitive` methods.
523
436
 
@@ -528,7 +441,7 @@ UnitMeasurements::Time = UnitMeasurements.build do
528
441
  # Set primitive unit for the unit system.
529
442
  primitive :s
530
443
 
531
- # Add a SI unit to the unit group
444
+ # Add a SI unit to the unit group.
532
445
  si_unit :s, aliases: [:second, :seconds]
533
446
 
534
447
  # Add units to the group, along with their conversion multipliers.
@@ -540,7 +453,7 @@ UnitMeasurements::Time = UnitMeasurements.build do
540
453
  end
541
454
  ```
542
455
 
543
- All units allow aliases, as long as they are unique. Unit names can be used to
456
+ All units allow aliases, as long as they are unique. Unit name can be used to
544
457
  define the unit as long as it is unique. All unit names are case sensitive.
545
458
 
546
459
  ### Namespaces
@@ -82,10 +82,6 @@ module UnitMeasurements
82
82
  target ? _parse(source).convert_to(target) : _parse(source)
83
83
  end
84
84
 
85
- def name
86
- to_s.split("::").last.underscore.humanize.downcase
87
- end
88
-
89
85
  private
90
86
 
91
87
  def _parse(string)
@@ -3,5 +3,5 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module UnitMeasurements
6
- VERSION = "3.4.0"
6
+ VERSION = "3.4.1"
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: 3.4.0
4
+ version: 3.4.1
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-28 00:00:00.000000000 Z
11
+ date: 2023-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport