unit_measurements 5.14.0 → 5.16.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 +4 -4
- data/CHANGELOG.md +17 -1
- data/Gemfile.lock +1 -1
- data/README.md +80 -90
- data/lib/unit_measurements/base.rb +1 -0
- data/lib/unit_measurements/extras/conversion_methods.rb +87 -0
- data/lib/unit_measurements/extras/numeric_methods.rb +24 -20
- data/lib/unit_measurements/measurement.rb +1 -0
- data/lib/unit_measurements/unit_groups/acceleration.rb +4 -0
- data/lib/unit_measurements/unit_groups/area.rb +4 -0
- data/lib/unit_measurements/unit_groups/density.rb +4 -0
- data/lib/unit_measurements/unit_groups/electric_charge.rb +4 -0
- data/lib/unit_measurements/unit_groups/electric_current.rb +4 -0
- data/lib/unit_measurements/unit_groups/energy.rb +4 -0
- data/lib/unit_measurements/unit_groups/force.rb +4 -0
- data/lib/unit_measurements/unit_groups/length.rb +4 -0
- data/lib/unit_measurements/unit_groups/power.rb +4 -0
- data/lib/unit_measurements/unit_groups/pressure.rb +4 -0
- data/lib/unit_measurements/unit_groups/temperature.rb +4 -0
- data/lib/unit_measurements/unit_groups/time.rb +4 -0
- data/lib/unit_measurements/unit_groups/volume.rb +4 -0
- data/lib/unit_measurements/unit_groups/weight.rb +4 -0
- data/lib/unit_measurements/version.rb +1 -1
- data/units.md +16 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcdf50759b2e50022f7dc5b4661a5ad149c781f0cc39f1f6f1c21825b8dec89d
|
4
|
+
data.tar.gz: 6ca3e101ab49cce3c7f6b6c177373cf70187e677135f9daee6ee33d7a8154bf2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 80b49c55971a01de943c2b7b5638debc16a49c9c68ee38bf84df62168a1d366fa80c12870cf483564350127b7bbc17cbb012e9947ecba7076699e4300458f248
|
7
|
+
data.tar.gz: c185e222fc88a2bc91ad232a004ef31e22669b16c4690eaefeff12b16e665d9cb6964f2504339fb0a70d0aa5f668fd085113a7232b9b08df93217f72f273bcd0
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,24 @@
|
|
1
|
+
## [5.16.0](https://github.com/shivam091/unit_measurements/compare/v5.15.0...v5.16.0) - 2023-12-13
|
2
|
+
|
3
|
+
### What's new
|
4
|
+
|
5
|
+
- Added planck units and their conversions.
|
6
|
+
|
7
|
+
----------
|
8
|
+
|
9
|
+
## [5.15.0](https://github.com/shivam091/unit_measurements/compare/v5.14.0...v5.15.0) - 2023-12-11
|
10
|
+
|
11
|
+
### What's new
|
12
|
+
|
13
|
+
- Added `.define_conversion_methods` method to define conversion helper methods for units.
|
14
|
+
|
15
|
+
----------
|
16
|
+
|
1
17
|
## [5.14.0](https://github.com/shivam091/unit_measurements/compare/v5.13.0...v5.14.0) - 2023-11-29
|
2
18
|
|
3
19
|
### What's new
|
4
20
|
|
5
|
-
- Added `.define_numeric_methods`
|
21
|
+
- Added `.define_numeric_methods` method to define numeric extension methods for units.
|
6
22
|
|
7
23
|
----------
|
8
24
|
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,7 @@ A library that encapsulate measurements and their units in Ruby.
|
|
9
9
|
[](https://codeclimate.com/github/shivam091/unit_measurements/test_coverage)
|
10
10
|
[](https://github.com/shivam091/unit_measurements/blob/main/LICENSE.md)
|
11
11
|
|
12
|
-
[Harshal V. Ladhe, Master of Computer Science.](https://shivam091.github.io)
|
12
|
+
**[Harshal V. Ladhe, Master of Computer Science.](https://shivam091.github.io)**
|
13
13
|
|
14
14
|
## Introduction
|
15
15
|
|
@@ -43,11 +43,11 @@ Users are advised to cross-verify conversions for their specific use cases._
|
|
43
43
|
|
44
44
|
## Minimum Requirements
|
45
45
|
|
46
|
-
* Ruby 3.2.2+ (https://www.ruby-lang.org/en/downloads/branches/)
|
46
|
+
* Ruby 3.2.2+ ([Download Ruby](https://www.ruby-lang.org/en/downloads/branches/))
|
47
47
|
|
48
48
|
## Installation
|
49
49
|
|
50
|
-
|
50
|
+
To use `unit_measurements` in your Rails application, add the following line to your Gemfile:
|
51
51
|
|
52
52
|
```ruby
|
53
53
|
gem "unit_measurements"
|
@@ -87,8 +87,7 @@ viz., `UnitMeasurements::Weight`, `UnitMeasurements::Length`, etc.
|
|
87
87
|
**Initialize a measurement:**
|
88
88
|
|
89
89
|
```ruby
|
90
|
-
UnitMeasurements::Length.new(1, "km")
|
91
|
-
#=> 1 km
|
90
|
+
UnitMeasurements::Length.new(1, "km") #=> 1 km
|
92
91
|
```
|
93
92
|
|
94
93
|
**Converting to other units:**
|
@@ -102,22 +101,19 @@ These methods provide `use_cache` parameter which defaults to `false` to indicat
|
|
102
101
|
You can use `#convert_to` as:
|
103
102
|
|
104
103
|
```ruby
|
105
|
-
UnitMeasurements::Length.new(1, "km").convert_to("m", use_cache: true)
|
106
|
-
#=> 1000.0 m
|
104
|
+
UnitMeasurements::Length.new(1, "km").convert_to("m", use_cache: true) #=> 1000.0 m
|
107
105
|
```
|
108
106
|
|
109
107
|
If you want to modify measurement object itself, you can use `#convert_to!` method as:
|
110
108
|
|
111
109
|
```ruby
|
112
|
-
UnitMeasurements::Length.new(1, "km").convert_to!("m")
|
113
|
-
#=> 1000.0 m
|
110
|
+
UnitMeasurements::Length.new(1, "km").convert_to!("m") #=> 1000.0 m
|
114
111
|
```
|
115
112
|
|
116
113
|
You can convert the measurement directly to the `primitive` unit of the unit group as:
|
117
114
|
|
118
115
|
```ruby
|
119
|
-
UnitMeasurements::Length.new(1, "cm").to_primitive
|
120
|
-
#=> 0.01 m
|
116
|
+
UnitMeasurements::Length.new(1, "cm").to_primitive #=> 0.01 m
|
121
117
|
```
|
122
118
|
|
123
119
|
Note: `#to_primitive` method is aliased as `#in_primitive` and `#as_primitive`.
|
@@ -127,8 +123,7 @@ Note: `#to_primitive` method is aliased as `#in_primitive` and `#as_primitive`.
|
|
127
123
|
This method provides `use_cache` parameter which defaults to `false` to indicate whether the caching of conversion factors should happen.
|
128
124
|
|
129
125
|
```ruby
|
130
|
-
UnitMeasurements::Length.parse("1 km")
|
131
|
-
#=> 1.0 km
|
126
|
+
UnitMeasurements::Length.parse("1 km") #=> 1.0 km
|
132
127
|
```
|
133
128
|
|
134
129
|
**Parse string that mentions quantity, source unit, and target unit:**
|
@@ -136,17 +131,14 @@ UnitMeasurements::Length.parse("1 km")
|
|
136
131
|
A source unit can be separated from the target unit using the `in`, `to`, or `as` operators.
|
137
132
|
|
138
133
|
```ruby
|
139
|
-
UnitMeasurements::Length.parse("1 km to m")
|
140
|
-
#=> 1000.0 m
|
134
|
+
UnitMeasurements::Length.parse("1 km to m") #=> 1000.0 m
|
141
135
|
```
|
142
136
|
|
143
137
|
**Parse scientific numbers, source unit, and (or) target unit:**
|
144
138
|
|
145
139
|
```ruby
|
146
|
-
UnitMeasurements::Length.parse("2e+2 km").convert_to("m")
|
147
|
-
#=> 200000.0 m
|
148
|
-
UnitMeasurements::Length.parse("2e+2 km to m")
|
149
|
-
#=> 200000.0 m
|
140
|
+
UnitMeasurements::Length.parse("2e+2 km").convert_to("m") #=> 200000.0 m
|
141
|
+
UnitMeasurements::Length.parse("2e+2 km to m") #=> 200000.0 m
|
150
142
|
```
|
151
143
|
You can check supported special characters for exponents
|
152
144
|
[here](https://shivam091.github.io/unit_measurements/UnitMeasurements/Normalizer.html).
|
@@ -154,19 +146,15 @@ You can check supported special characters for exponents
|
|
154
146
|
**Parse complex numbers, source unit, and (or) target unit:**
|
155
147
|
|
156
148
|
```ruby
|
157
|
-
UnitMeasurements::Length.parse("2+3i km").convert_to("m")
|
158
|
-
#=> 2000.0+3000.0i m
|
159
|
-
UnitMeasurements::Length.parse("2+3i km to m")
|
160
|
-
#=> 2000.0+3000.0i m
|
149
|
+
UnitMeasurements::Length.parse("2+3i km").convert_to("m") #=> 2000.0+3000.0i m
|
150
|
+
UnitMeasurements::Length.parse("2+3i km to m") #=> 2000.0+3000.0i m
|
161
151
|
```
|
162
152
|
|
163
153
|
**Parse fractional/mixed fractional numbers, source unit, and (or) target unit:**
|
164
154
|
|
165
155
|
```ruby
|
166
|
-
UnitMeasurements::Length.parse("2 ½ km").convert_to("m")
|
167
|
-
#=>
|
168
|
-
UnitMeasurements::Length.parse("2/3 km to m")
|
169
|
-
#=> 666.666666666667 m
|
156
|
+
UnitMeasurements::Length.parse("2 ½ km").convert_to("m") #=> 2500.0 m
|
157
|
+
UnitMeasurements::Length.parse("2/3 km to m") #=> 666.666666666667 m
|
170
158
|
```
|
171
159
|
|
172
160
|
You can check supported special characters for fractional notations
|
@@ -175,17 +163,14 @@ You can check supported special characters for fractional notations
|
|
175
163
|
**Parse ratios, source unit, and (or) target unit:**
|
176
164
|
|
177
165
|
```ruby
|
178
|
-
UnitMeasurements::Length.parse("1:2 km").convert_to("m")
|
179
|
-
#=> 500.0 m
|
180
|
-
UnitMeasurements::Length.parse("1:2 km to m")
|
181
|
-
#=> 500.0 m
|
166
|
+
UnitMeasurements::Length.parse("1:2 km").convert_to("m") #=> 500.0 m
|
167
|
+
UnitMeasurements::Length.parse("1:2 km to m") #=> 500.0 m
|
182
168
|
```
|
183
169
|
|
184
170
|
**Calculate the ratio between two units:**
|
185
171
|
|
186
172
|
```ruby
|
187
|
-
UnitMeasurements::Length.ratio("in", "ft")
|
188
|
-
#=> "12.0 in/ft"
|
173
|
+
UnitMeasurements::Length.ratio("in", "ft") #=> "12.0 in/ft"
|
189
174
|
```
|
190
175
|
|
191
176
|
**Formatting measurement:**
|
@@ -194,8 +179,7 @@ If you want to format the measurement to certain format, you can use `#to_fs` me
|
|
194
179
|
If format is not specified, it defaults to `"%.2<value>f %<unit>s"`.
|
195
180
|
|
196
181
|
```ruby
|
197
|
-
UnitMeasurements::Length.new(100, "m").to("in").to_fs("%.4<quantity>f %<unit>s")
|
198
|
-
#=> "3937.0079 in"
|
182
|
+
UnitMeasurements::Length.new(100, "m").to("in").to_fs("%.4<quantity>f %<unit>s") #=> "3937.0079 in"
|
199
183
|
```
|
200
184
|
|
201
185
|
You can check more about formatting along with their examples
|
@@ -205,26 +189,23 @@ You can check more about formatting along with their examples
|
|
205
189
|
|
206
190
|
```ruby
|
207
191
|
length = UnitMeasurements::Length.new(1, "km")
|
208
|
-
length.quantity
|
209
|
-
#=>
|
210
|
-
length.unit
|
211
|
-
#=> #<UnitMeasurements::Unit: km (kilometer, kilometers, kilometre, kilometres)>
|
192
|
+
length.quantity #=> 1
|
193
|
+
length.unit #=> #<UnitMeasurements::Unit: km (kilometer, kilometers, kilometre, kilometres)>
|
212
194
|
```
|
213
195
|
|
214
196
|
Unit object can be interrogated for a range of attributes:
|
215
197
|
|
216
198
|
```ruby
|
217
|
-
|
218
|
-
#=> #<Set: {"kilometer", "kilometers", "kilometre", "kilometres"}>
|
219
|
-
|
220
|
-
#=> 1000.0
|
199
|
+
# Alternative names for the unit.
|
200
|
+
length.unit.aliases #=> #<Set: {"kilometer", "kilometers", "kilometre", "kilometres"}>
|
201
|
+
# Conversion factor relative to primitive unit.
|
202
|
+
length.unit.conversion_factor #=> 1000.0
|
221
203
|
```
|
222
204
|
|
223
205
|
**See primitive unit of the unit group:**
|
224
206
|
|
225
207
|
```ruby
|
226
|
-
UnitMeasurements::Length.primitive
|
227
|
-
#=> #<UnitMeasurements::Unit: m (meter, meters, metre, metres)>
|
208
|
+
UnitMeasurements::Length.primitive #=> #<UnitMeasurements::Unit: m (meter, meters, metre, metres)>
|
228
209
|
```
|
229
210
|
|
230
211
|
**See all units of the unit group:**
|
@@ -237,8 +218,7 @@ UnitMeasurements::Length.units
|
|
237
218
|
**See names of all valid units of the unit group:**
|
238
219
|
|
239
220
|
```ruby
|
240
|
-
UnitMeasurements::Length.unit_names
|
241
|
-
#=> ["ft", "in", "m", "mi", "yd"]
|
221
|
+
UnitMeasurements::Length.unit_names #=> ["ft", "in", "m", "mi", "yd"]
|
242
222
|
```
|
243
223
|
|
244
224
|
**See all valid units of the unit group along with their aliases:**
|
@@ -251,8 +231,7 @@ UnitMeasurements::Length.unit_names_with_aliases
|
|
251
231
|
**See list of unit systems defined within the unit group:**
|
252
232
|
|
253
233
|
```ruby
|
254
|
-
UnitMeasurements::Length.systems
|
255
|
-
#=> ["metric", "imperial", "us_customary", "astronomical"]
|
234
|
+
UnitMeasurements::Length.systems #=> ["metric", "imperial", "us_customary", "astronomical"]
|
256
235
|
```
|
257
236
|
|
258
237
|
**See list of units within the unit system:**
|
@@ -269,34 +248,26 @@ UnitMeasurements::Length.units_for("metric")
|
|
269
248
|
**Finding units within the unit group:**
|
270
249
|
|
271
250
|
You can use `#unit_for` or `#unit_for!` (aliased as `#[]`) methods to find units
|
272
|
-
within the unit group. `#unit_for!` method returns an error if a unit is not
|
273
|
-
in the unit group.
|
251
|
+
within the unit group. `#unit_for!` method returns an error if a unit system is not defined within the unit group.
|
274
252
|
|
275
253
|
```ruby
|
276
|
-
UnitMeasurements::Length.unit_for("m")
|
277
|
-
|
278
|
-
UnitMeasurements::Length.unit_for("z")
|
279
|
-
#=> nil
|
280
|
-
UnitMeasurements::Length.unit_for!("z")
|
281
|
-
#=> Invalid unit: 'z'. (UnitMeasurements::UnitError)
|
254
|
+
UnitMeasurements::Length.unit_for("m") #=> #<UnitMeasurements::Unit: m (meter, meters, metre, metres)>
|
255
|
+
UnitMeasurements::Length.unit_for("z") #=> nil
|
256
|
+
UnitMeasurements::Length.unit_for!("z") #=> Invalid unit: 'z'. (UnitMeasurements::UnitError)
|
282
257
|
```
|
283
258
|
|
284
259
|
**Finding whether the unit is defined within the unit group:**
|
285
260
|
|
286
261
|
```ruby
|
287
|
-
UnitMeasurements::Length.defined?("m")
|
288
|
-
#=>
|
289
|
-
UnitMeasurements::Length.defined?("metre")
|
290
|
-
#=> false
|
262
|
+
UnitMeasurements::Length.defined?("m") #=> true
|
263
|
+
UnitMeasurements::Length.defined?("metre") #=> false
|
291
264
|
```
|
292
265
|
|
293
266
|
**Check if the unit is a valid unit or alias within the unit group:**
|
294
267
|
|
295
268
|
```ruby
|
296
|
-
UnitMeasurements::Length.unit_or_alias?("m")
|
297
|
-
#=> true
|
298
|
-
UnitMeasurements::Length.unit_or_alias?("metre")
|
299
|
-
#=> true
|
269
|
+
UnitMeasurements::Length.unit_or_alias?("m") #=> true
|
270
|
+
UnitMeasurements::Length.unit_or_alias?("metre") #=> true
|
300
271
|
```
|
301
272
|
|
302
273
|
**Clear cached data for the unit group:**
|
@@ -311,8 +282,7 @@ You have ability to compare the measurements with the same or different units wi
|
|
311
282
|
For example, comparing length with length will work, comparing a length with a area would fail.
|
312
283
|
|
313
284
|
```ruby
|
314
|
-
UnitMeasurements::Length.parse("1 km") != UnitMeasurements::Length.parse("1 m")
|
315
|
-
#=> true
|
285
|
+
UnitMeasurements::Length.parse("1 km") != UnitMeasurements::Length.parse("1 m") #=> true
|
316
286
|
```
|
317
287
|
|
318
288
|
You can check supported comparisons along with their examples
|
@@ -326,10 +296,8 @@ measurement by either other measurement with compatible unit or numeric value.
|
|
326
296
|
In cases of different units, the left hand side takes precedence.
|
327
297
|
|
328
298
|
```ruby
|
329
|
-
UnitMeasurements::Length.new(1, "km") + UnitMeasurements::Length.new(1, "m")
|
330
|
-
#=>
|
331
|
-
UnitMeasurements::Length.new(2, "km") * 2+2i
|
332
|
-
#=> 4+2i km
|
299
|
+
UnitMeasurements::Length.new(1, "km") + UnitMeasurements::Length.new(1, "m") #=> 1.001 km
|
300
|
+
UnitMeasurements::Length.new(2, "km") * 2+2i #=> 4+2i km
|
333
301
|
```
|
334
302
|
|
335
303
|
You can check supported arithmetic operations along with their examples
|
@@ -340,8 +308,7 @@ You can check supported arithmetic operations along with their examples
|
|
340
308
|
You can perform mathematical functions on the measurements.
|
341
309
|
|
342
310
|
```ruby
|
343
|
-
UnitMeasurements::Length.new(17.625, "m").round
|
344
|
-
# => 18 m
|
311
|
+
UnitMeasurements::Length.new(17.625, "m").round #=> 18 m
|
345
312
|
```
|
346
313
|
|
347
314
|
You can check supported mathematical functions along with their examples
|
@@ -353,8 +320,7 @@ You can convert measurement quantity directly to other numeric types viz.
|
|
353
320
|
`Integer`, `BigDecimal`, `Rational`, `Complex`, and `Float`.
|
354
321
|
|
355
322
|
```ruby
|
356
|
-
UnitMeasurements::Length.new(2.25567, "km").to_i
|
357
|
-
#=> 2 km
|
323
|
+
UnitMeasurements::Length.new(2.25567, "km").to_i #=> 2 km
|
358
324
|
```
|
359
325
|
|
360
326
|
You can check more about them along with their examples
|
@@ -484,13 +450,12 @@ Volume = UnitMeasurements::Volume
|
|
484
450
|
|
485
451
|
## Extras
|
486
452
|
|
487
|
-
### Numeric
|
453
|
+
### Numeric methods
|
488
454
|
|
489
|
-
The `.define_numeric_methods` method allows you to
|
490
|
-
manner similar to how `ActiveSupport::Duration` objects are created in Rails,
|
491
|
-
providing a familiar syntax and functionality.
|
455
|
+
The `.define_numeric_methods` method allows you to define numeric methods that help you to initialize measurements in a
|
456
|
+
manner similar to how `ActiveSupport::Duration` objects are created in Rails, providing a familiar syntax and functionality.
|
492
457
|
|
493
|
-
To define numeric
|
458
|
+
To define numeric methods for specific units within the unit group, use
|
494
459
|
the following syntax:
|
495
460
|
|
496
461
|
```ruby
|
@@ -500,21 +465,46 @@ UnitMeasurements::Length.define_numeric_methods("metre", "foot", "inch")
|
|
500
465
|
This will enable the usage of these units as methods to instantiate and use measurements:
|
501
466
|
|
502
467
|
```ruby
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
468
|
+
# Initialize a measurement
|
469
|
+
1.m #=> 1 m
|
470
|
+
5.feet #=> 5 ft
|
471
|
+
10.inches #=> 10 in
|
472
|
+
|
473
|
+
# Usage
|
474
|
+
## Equality comparison
|
475
|
+
1.foot == 12.inches #=> true
|
476
|
+
## Arithmetic operation
|
477
|
+
1.ft + 12.in #=> 2.0 ft
|
478
|
+
```
|
479
|
+
|
480
|
+
### Conversion methods
|
481
|
+
|
482
|
+
The `.define_conversion_methods` method allows you to define conversion methods that
|
483
|
+
help you to easily convert measurements to a different unit.
|
484
|
+
|
485
|
+
To define conversion methods for specific units within the unit group, use the following syntax:
|
486
|
+
|
487
|
+
```ruby
|
488
|
+
UnitMeasurements::Length.define_conversion_methods("metre", "foot", "inch")
|
489
|
+
```
|
490
|
+
|
491
|
+
This will enable you to convert units as:
|
492
|
+
|
493
|
+
```ruby
|
494
|
+
UnitMeasurements::Length.new(1, "ft").in_inches #=> 12.0 in
|
495
|
+
12.in.in_foot #=> 1.0 ft
|
508
496
|
```
|
509
497
|
|
510
498
|
## Contributing
|
511
499
|
|
512
|
-
|
513
|
-
|
500
|
+
Contributions to this project are welcomed! To contribute:
|
501
|
+
|
502
|
+
1. Fork this repository
|
503
|
+
2. Create a new branch (`git checkout -b my-new-feature`)
|
514
504
|
3. Commit your changes (`git commit -am "Add some feature"`)
|
515
|
-
4. Push to
|
516
|
-
5. Create new Pull Request
|
505
|
+
4. Push the changes to your branch (`git push origin my-new-feature`)
|
506
|
+
5. Create new **Pull Request**
|
517
507
|
|
518
508
|
## License
|
519
509
|
|
520
|
-
Copyright 2023 [Harshal V. LADHE](
|
510
|
+
Copyright 2023 [Harshal V. LADHE](https://shivam091.github.io), Released under the [MIT License](http://opensource.org/licenses/MIT).
|
@@ -152,6 +152,7 @@ end
|
|
152
152
|
|
153
153
|
# The following requires load various components of the unit measurements library.
|
154
154
|
require "unit_measurements/extras/numeric_methods"
|
155
|
+
require "unit_measurements/extras/conversion_methods"
|
155
156
|
|
156
157
|
require "unit_measurements/configuration"
|
157
158
|
require "unit_measurements/cache"
|
@@ -0,0 +1,87 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
# -*- frozen_string_literal: true -*-
|
3
|
+
# -*- warn_indent: true -*-
|
4
|
+
|
5
|
+
module UnitMeasurements
|
6
|
+
# This module provides functionality to define conversion methods for a list
|
7
|
+
# of units within a unit group. If units are empty, it defaults to defining
|
8
|
+
# methods for all units in the unit group. These methods allow easy conversion
|
9
|
+
# between different units within a given unit group.
|
10
|
+
#
|
11
|
+
# This module is included in the +Measurement+ class to allow defining conversion
|
12
|
+
# methods for specified units.
|
13
|
+
#
|
14
|
+
# @see Measurement
|
15
|
+
#
|
16
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
17
|
+
# @since 5.15.0
|
18
|
+
module ConversionMethods
|
19
|
+
# @scope class
|
20
|
+
# Defines conversion methods for specified +units+ within the unit group.
|
21
|
+
# If +units+ are empty, it defaults to defining methods for all units within
|
22
|
+
# the unit group.
|
23
|
+
#
|
24
|
+
# @example Define conversion methods for metres, centimetres, and millimetres:
|
25
|
+
# UnitMeasurements::Length.define_conversion_methods("metres", :cm, :mm)
|
26
|
+
#
|
27
|
+
# @example Define conversion methods for all units within the unit group:
|
28
|
+
# UnitMeasurements::Length.define_conversion_methods
|
29
|
+
#
|
30
|
+
# @param [Array<String|Symbol>, optional] units
|
31
|
+
# An array of units' names for which conversion methods need to be defined.
|
32
|
+
# If empty, methods will be defined for all units within the unit group.
|
33
|
+
#
|
34
|
+
# @return [Array<Unit>]
|
35
|
+
# An array of units for which the conversion methods were defined.
|
36
|
+
#
|
37
|
+
# @note
|
38
|
+
# This method defines a conversion methods specifically for units that contain
|
39
|
+
# alphabetic characters in their names.
|
40
|
+
#
|
41
|
+
# @see .define_conversion_method_for
|
42
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
43
|
+
# @since 5.15.0
|
44
|
+
def define_conversion_methods(*units)
|
45
|
+
unit_group = self
|
46
|
+
units = units.empty? ? unit_group.units : units
|
47
|
+
|
48
|
+
units.inject([]) do |units, unit|
|
49
|
+
units << define_conversion_method_for(unit, unit_group)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
# @private
|
56
|
+
# @scope class
|
57
|
+
# Defines conversion methods for a specific +unit+ within a +unit_group+.
|
58
|
+
# These methods are defined dynamically using +define_method+.
|
59
|
+
#
|
60
|
+
# @param [String|Symbol|Unit] unit
|
61
|
+
# The unit (or its name) for which the conversion methods need to be defined.
|
62
|
+
# @param [UnitGroup] unit_group The unit group to which the unit belongs.
|
63
|
+
#
|
64
|
+
# @return [Unit]
|
65
|
+
# The unit instance for which the conversion methods were defined.
|
66
|
+
#
|
67
|
+
# @see .define_conversion_methods
|
68
|
+
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
69
|
+
# @since 5.15.0
|
70
|
+
def define_conversion_method_for(unit, unit_group)
|
71
|
+
unit = unit.is_a?(Unit) ? unit : unit_group.unit_for!(unit)
|
72
|
+
|
73
|
+
unit.names.each do |method_name|
|
74
|
+
# Check if the name contains alphabetic characters
|
75
|
+
next unless method_name =~ /^[a-zA-Z]+$/
|
76
|
+
|
77
|
+
define_method("in_#{method_name}") do |use_cache: false|
|
78
|
+
convert_to(unit, use_cache: use_cache)
|
79
|
+
end
|
80
|
+
alias_method "to_#{method_name}", "in_#{method_name}"
|
81
|
+
alias_method "as_#{method_name}", "in_#{method_name}"
|
82
|
+
end
|
83
|
+
|
84
|
+
unit
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
@@ -3,12 +3,12 @@
|
|
3
3
|
# -*- warn_indent: true -*-
|
4
4
|
|
5
5
|
module UnitMeasurements
|
6
|
-
# This module provides methods to define +Numeric+
|
7
|
-
#
|
8
|
-
#
|
6
|
+
# This module provides methods to define +Numeric+ methods for a list of units
|
7
|
+
# within a unit group. If units are empty, it defaults to defining methods for
|
8
|
+
# all units in the unit group.
|
9
9
|
#
|
10
10
|
# This module is included in the +Measurement+ class to allow defining numeric
|
11
|
-
#
|
11
|
+
# methods for specified units.
|
12
12
|
#
|
13
13
|
# @see Measurement
|
14
14
|
#
|
@@ -16,23 +16,27 @@ module UnitMeasurements
|
|
16
16
|
# @since 5.14.0
|
17
17
|
module NumericMethods
|
18
18
|
# @scope class
|
19
|
-
# Defines +Numeric+
|
20
|
-
#
|
21
|
-
#
|
22
|
-
#
|
23
|
-
# @param [Array<String|Symbol>] units
|
24
|
-
# An array of units' names for which numeric methods need to be defined.
|
25
|
-
# If empty, methods will be defined for all units in the unit group.
|
26
|
-
#
|
27
|
-
# @return [Array<Unit>] An array of units for which methods are defined.
|
19
|
+
# Defines +Numeric+ methods for specified +units+ within the unit group. If
|
20
|
+
# +units+ are empty, it defaults to defining methods for all units within
|
21
|
+
# the unit group.
|
28
22
|
#
|
29
23
|
# @example Define numeric methods for metres, centimetres, and millimetres:
|
30
24
|
# UnitMeasurements::Length.define_numeric_methods("metres", :cm, :mm)
|
31
25
|
#
|
32
|
-
# @example Define numeric methods for all units
|
26
|
+
# @example Define numeric methods for all units within the unit group:
|
33
27
|
# UnitMeasurements::Length.define_numeric_methods
|
34
28
|
#
|
35
|
-
# @
|
29
|
+
# @param [Array<String|Symbol>, optional] units
|
30
|
+
# An array of units' names for which numeric methods need to be defined.
|
31
|
+
# If empty, methods will be defined for all units within the unit group.
|
32
|
+
#
|
33
|
+
# @return [Array<Unit>] An array of units for which numeric methods were defined.
|
34
|
+
#
|
35
|
+
# @note
|
36
|
+
# This method defines a numeric methods specifically for units that contain
|
37
|
+
# alphabetic characters in their names.
|
38
|
+
#
|
39
|
+
# @see .define_numeric_method_for
|
36
40
|
#
|
37
41
|
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
38
42
|
# @since 5.14.0
|
@@ -49,17 +53,17 @@ module UnitMeasurements
|
|
49
53
|
|
50
54
|
# @private
|
51
55
|
# @scope class
|
52
|
-
#
|
53
|
-
#
|
54
|
-
#
|
56
|
+
# Defines a numeric method for a specific +unit+ within a +unit_group+. The
|
57
|
+
# method is defined dynamically using +define_method+ and associates the unit
|
58
|
+
# with the numeric value.
|
55
59
|
#
|
56
60
|
# @param [String|Symbol|Unit] unit
|
57
|
-
# The unit for which the numeric method
|
61
|
+
# The unit (or its name) for which the numeric method needs to be defined.
|
58
62
|
# @param [UnitGroup] unit_group The unit group to which the unit belongs.
|
59
63
|
#
|
60
64
|
# @return [Unit] The unit instance for which the method was defined.
|
61
65
|
#
|
62
|
-
# @see
|
66
|
+
# @see .define_numeric_methods
|
63
67
|
#
|
64
68
|
# @author {Harshal V. Ladhe}[https://shivam091.github.io/]
|
65
69
|
# @since 5.14.0
|
@@ -32,4 +32,8 @@ UnitMeasurements::Acceleration = UnitMeasurements.build do
|
|
32
32
|
system :centimetre_gram_second do
|
33
33
|
unit "Gal", value: "1e-2 m/s²", aliases: ["gal", "galileo"]
|
34
34
|
end
|
35
|
+
|
36
|
+
system :planck_units do
|
37
|
+
unit "aₚ", value: "5.5608e+51 m/s²", aliases: ["planck acceleration", "quantum acceleration"]
|
38
|
+
end
|
35
39
|
end
|
@@ -36,6 +36,10 @@ UnitMeasurements::Area = UnitMeasurements.build do
|
|
36
36
|
unit "ch² (US)", value: "404.6873 m²", aliases: ["ch^2 (US)", "sq ch (US)", "square chain (US)", "square chains (US)"]
|
37
37
|
end
|
38
38
|
|
39
|
+
system :planck_units do
|
40
|
+
unit "Aₚ", value: "2.6121e-70 m²", aliases: ["planck area", "quantum area"]
|
41
|
+
end
|
42
|
+
|
39
43
|
unit "bd", value: "0.00774192 m²", aliases: ["board", "boards"]
|
40
44
|
unit "ro", value: "1/4 ac", aliases: ["rood"]
|
41
45
|
end
|
@@ -26,4 +26,8 @@ UnitMeasurements::Density = UnitMeasurements.build do
|
|
26
26
|
unit "slug/ft³", value: "515.3788184 kg/m³", aliases: ["slug/ft^3", "slug per cubic foot", "slugs per cubic foot"]
|
27
27
|
unit "slug/in³", value: "890574.582782 kg/m³", aliases: ["slug/in^3", "slug per cubic inch", "slugs per cubic inch"]
|
28
28
|
end
|
29
|
+
|
30
|
+
system :planck_units do
|
31
|
+
unit "ρₚ", value: "5.1550e+96 kg/m³", aliases: ["planck density", "quantum density"]
|
32
|
+
end
|
29
33
|
end
|
@@ -15,4 +15,8 @@ UnitMeasurements::ElectricCharge = UnitMeasurements.build do
|
|
15
15
|
unit "abC", value: "10 C", aliases: ["abcoulomb", "abcoulombs"]
|
16
16
|
unit "statC", value: "3.335641e-10 C", aliases: ["statcoulomb", "statcoulombs"]
|
17
17
|
end
|
18
|
+
|
19
|
+
system :planck_units do
|
20
|
+
unit "qₚ", value: "1.875545956e-18 C", aliases: ["planck length", "quantum length"]
|
21
|
+
end
|
18
22
|
end
|
@@ -14,4 +14,8 @@ UnitMeasurements::ElectricCurrent = UnitMeasurements.build do
|
|
14
14
|
unit "abA", value: "10 A", aliases: ["abampere", "abamperes"]
|
15
15
|
unit "statA", value: "3.33564e-10 A", aliases: ["statampere", "statamperes"]
|
16
16
|
end
|
17
|
+
|
18
|
+
system :planck_units do
|
19
|
+
unit "Iₚ", value: "3.4789e+25 A", aliases: ["planck current", "quantum current"]
|
20
|
+
end
|
17
21
|
end
|
@@ -46,6 +46,10 @@ UnitMeasurements::Energy = UnitMeasurements.build do
|
|
46
46
|
unit "hp⋅h", value: "2.685e+13 erg", aliases: ["hp*h", "horsepower-hour"]
|
47
47
|
end
|
48
48
|
|
49
|
+
system :planck_units do
|
50
|
+
unit "Eₚ", value: "1.9561e+9 J", aliases: ["planck energy", "quantum energy"]
|
51
|
+
end
|
52
|
+
|
49
53
|
unit "Ry", value: "2.179872e-18 J", aliases: ["rydberg"]
|
50
54
|
unit "Ha", value: "4.359744e-18 J", aliases: ["hartree", "atomic unit of energy"]
|
51
55
|
unit "boe", value: "5.86152 GJ", aliases: ["barrel of oil equivalent", "barrels of oil equivalent"]
|
@@ -43,4 +43,8 @@ UnitMeasurements::Force = UnitMeasurements.build do
|
|
43
43
|
unit "(lb⋅ft)/s²", value: "0.138254954376 N", aliases: ["(lb*ft)/s^2", "pound foot per second squared"]
|
44
44
|
unit "(lb⋅in)/s²", value: "0.011521246198 N", aliases: ["(lb*in)/s^2", "pound inch per second squared"]
|
45
45
|
end
|
46
|
+
|
47
|
+
system :planck_units do
|
48
|
+
unit "Fₚ", value: "1.2103e+44 N", aliases: ["planck force", "quantum force"]
|
49
|
+
end
|
46
50
|
end
|
@@ -56,4 +56,8 @@ UnitMeasurements::Length = UnitMeasurements.build do
|
|
56
56
|
unit "lm", value: "30 ld", aliases: ["light-month", "light-months"]
|
57
57
|
unit "ly", value: "365.25 ld", aliases: ["light-year", "light-years"]
|
58
58
|
end
|
59
|
+
|
60
|
+
system :planck_units do
|
61
|
+
unit "lₚ", value: "1.616255e-35 m", aliases: ["planck length", "quantum length"]
|
62
|
+
end
|
59
63
|
end
|
@@ -49,5 +49,9 @@ UnitMeasurements::Power = UnitMeasurements.build do
|
|
49
49
|
unit "erg/s", value: "1e-7 W", aliases: ["erg per second", "ergs per second"]
|
50
50
|
end
|
51
51
|
|
52
|
+
system :planck_units do
|
53
|
+
unit "Pₚ", value: "3.6283e+52 W", aliases: ["planck power", "quantum power"]
|
54
|
+
end
|
55
|
+
|
52
56
|
unit "lusec", value: "133.3224 μW", aliases: ["lusecs"]
|
53
57
|
end
|
@@ -56,4 +56,8 @@ UnitMeasurements::Pressure = UnitMeasurements.build do
|
|
56
56
|
system :gravitational_metric do
|
57
57
|
unit "at", value: "98066.5 Pa", aliases: ["technical atmosphere", "technical atmospheres"]
|
58
58
|
end
|
59
|
+
|
60
|
+
system :planck_units do
|
61
|
+
unit "Pₚ", value: "4.63309e+113 Pa", aliases: ["planck pressure", "quantum pressure"]
|
62
|
+
end
|
59
63
|
end
|
@@ -12,4 +12,8 @@ UnitMeasurements::Temperature = UnitMeasurements.build do
|
|
12
12
|
system :english_engineering do
|
13
13
|
unit "°R", value: "5/9 K", aliases: ["R", "°Ra", "Ra", "rankine"]
|
14
14
|
end
|
15
|
+
|
16
|
+
system :planck_units do
|
17
|
+
unit "Tₚ", value: "1.416784e+32 K", aliases: ["planck temperature", "quantum temperature"]
|
18
|
+
end
|
15
19
|
end
|
@@ -13,6 +13,10 @@ UnitMeasurements::Time = UnitMeasurements.build do
|
|
13
13
|
unit "min", value: "60 s", aliases: ["minute", "minutes"]
|
14
14
|
end
|
15
15
|
|
16
|
+
system :planck_units do
|
17
|
+
unit "tₚ", value: "5.391247e-44 s", aliases: ["planck time", "quantum time"]
|
18
|
+
end
|
19
|
+
|
16
20
|
unit "wk", value: "7 d", aliases: ["week", "weeks"]
|
17
21
|
unit "mo", value: "30.4167 d", aliases: ["month", "months"]
|
18
22
|
unit "yr", value: "365 d", aliases: ["y", "year", "years"]
|
@@ -45,4 +45,8 @@ UnitMeasurements::Weight = UnitMeasurements.build do
|
|
45
45
|
system :foot_pound_second do
|
46
46
|
unit "slug", value: "32.17404856 lb", aliases: ["slugs"]
|
47
47
|
end
|
48
|
+
|
49
|
+
system :planck_units do
|
50
|
+
unit "mₚ", value: "2.176434e-8 kg", aliases: ["planck mass", "quantum mass"]
|
51
|
+
end
|
48
52
|
end
|
data/units.md
CHANGED
@@ -49,6 +49,7 @@ These units are defined in `UnitMeasurements::Length`.
|
|
49
49
|
| 30 | lmin | light-minute, light-minutes |
|
50
50
|
| 31 | cb (M) | CBL. (M), cable length (M) |
|
51
51
|
| 32 | cb (US) | CBL. (US), cable length (US) |
|
52
|
+
| 33 | lₚ | planck length, quantum length |
|
52
53
|
|
53
54
|
## 2. Weight or mass
|
54
55
|
|
@@ -78,6 +79,7 @@ These units are defined in `UnitMeasurements::Weight`.
|
|
78
79
|
| 20 | cwt | hundredweight, long hundredweight, imperial hundredweight |
|
79
80
|
| 21 | slug | slugs |
|
80
81
|
| 22 | cwt (US) | hundredweight (US), short hundredweight |
|
82
|
+
| 23 | mₚ | planck mass, quantum mass |
|
81
83
|
|
82
84
|
## 3. Time or duration
|
83
85
|
|
@@ -96,6 +98,7 @@ These units are defined in `UnitMeasurements::Time`.
|
|
96
98
|
| 9 | qtr | quarter, quarters |
|
97
99
|
| 10 | dec | decade, decades |
|
98
100
|
| 11 | cent | century, centuries |
|
101
|
+
| 12 | tₚ | planck time, quantum time |
|
99
102
|
|
100
103
|
## 4. Amount of substance
|
101
104
|
|
@@ -116,6 +119,7 @@ These units are defined in `UnitMeasurements::ElectricCurrent`.
|
|
116
119
|
| 2 | abA | abampere, abamperes |
|
117
120
|
| 3 | Bi | biot, biots |
|
118
121
|
| 4 | statA | statampere, statamperes |
|
122
|
+
| 5 | Iₚ | planck current, quantum current |
|
119
123
|
|
120
124
|
## 6. Luminous intensity
|
121
125
|
|
@@ -134,6 +138,7 @@ These units are defined in `UnitMeasurements::Temperature`.
|
|
134
138
|
|:--|:--|:--|
|
135
139
|
| _1_ | _K*_ | _kelvin, kelvins_ |
|
136
140
|
| 2 | °R | R, °Ra, Ra, rankine |
|
141
|
+
| 3 | Tₚ | planck temperature, quantum temperature |
|
137
142
|
|
138
143
|
## 8. Area
|
139
144
|
|
@@ -161,6 +166,7 @@ These units are defined in `UnitMeasurements::Area`.
|
|
161
166
|
| 18 | ft² (US) | ft^2 (US), sq ft (US), square foot (US), square feet (US) |
|
162
167
|
| 19 | mi² (US) | mi^2 (US), sq mi (US), square mile (US), square miles (US) |
|
163
168
|
| 20 | ch² (US) | ch^2 (US), sq ch (US), square chain (US), square chains (US) |
|
169
|
+
| 21 | Aₚ | planck area, quantum area |
|
164
170
|
|
165
171
|
## 9. Volume & capacity
|
166
172
|
|
@@ -203,6 +209,7 @@ These units are defined in `UnitMeasurements::Volume`.
|
|
203
209
|
| 33 | ac⋅ft | acre-foot, acre-feet |
|
204
210
|
| 34 | ac⋅in | acre-inch, acre-inches |
|
205
211
|
| 35 | cd-ft | cord-foot, cord-feet |
|
212
|
+
| 36 | Vₚ | planck volume, quantum volume |
|
206
213
|
|
207
214
|
## 10. Density
|
208
215
|
|
@@ -223,6 +230,7 @@ These units are defined in `UnitMeasurements::Density`.
|
|
223
230
|
| 11 | lb/gal | pound per gallon, pounds per gallon |
|
224
231
|
| 12 | slug/ft³ | slug/ft^3, slug per cubic foot, slugs per cubic foot |
|
225
232
|
| 13 | slug/in³ | slug/in^3, slug per cubic inch, slugs per cubic inch |
|
233
|
+
| 14 | ρₚ | planck density, quantum density |
|
226
234
|
|
227
235
|
## 11. Quantity
|
228
236
|
|
@@ -302,7 +310,8 @@ These units are defined in `UnitMeasurements::Force`.
|
|
302
310
|
| 14 | kipf | kip, klbf, kip-force |
|
303
311
|
| 15 | (lb⋅m)/s² | (lb*m)/s^2, pound meter per second squared, pound metre per second squared |
|
304
312
|
| 16 | (lb⋅ft)/s² | (lb*ft)/s^2, pound foot per second squared |
|
305
|
-
| 17 | (lb⋅in)/s² | (lb
|
313
|
+
| 17 | (lb⋅in)/s² | (lb\*in)/s^2, pound inch per second squared |
|
314
|
+
| 18 | Fₚ | planck force, quantum force |
|
306
315
|
|
307
316
|
## 16. Velocity or speed
|
308
317
|
|
@@ -343,6 +352,7 @@ These units are defined in `UnitMeasurements::Acceleration`.
|
|
343
352
|
| 10 | mpm/s | mi/(min⋅s), mile per minute per second, miles per minute per second |
|
344
353
|
| 11 | mph/s | mi/(h⋅s), mile per hour per second, miles per hour per second |
|
345
354
|
| 12 | Kn/s | knot per second, knots per second |
|
355
|
+
| 13 | aₚ | planck acceleration, quantum acceleration |
|
346
356
|
|
347
357
|
## 18. Angular velocity or rotational speed
|
348
358
|
|
@@ -396,6 +406,7 @@ These units are defined in `UnitMeasurements::ElectricCharge`.
|
|
396
406
|
| 3 | statC | statcoulomb, statcoulombs |
|
397
407
|
| 4 | Fr | franklin, franklins |
|
398
408
|
| 5 | Fd | faraday, faradays |
|
409
|
+
| 6 | qₚ | planck charge, quantum charge |
|
399
410
|
|
400
411
|
## 22. Electrical capacitance
|
401
412
|
|
@@ -541,6 +552,7 @@ These units are defined in `UnitMeasurements::Pressure`.
|
|
541
552
|
| 25 | kgf/m² | kgf/m^2, kilogram-force per square metre, kilogramme-force per square metre |
|
542
553
|
| 26 | kgf/mm² | kgf/mm^2, kilogram-force per square millimetre, kilogramme-force per square millimetre |
|
543
554
|
| 27 | kgf/dm² | kgf/dm^2, kilogram-force per square decimetre, kilogramme-force per square decimetre |
|
555
|
+
| 28 | Pₚ | planck pressure, quantum pressure |
|
544
556
|
|
545
557
|
## 34. Torque or moment of force
|
546
558
|
|
@@ -639,7 +651,8 @@ These units are defined in `UnitMeasurements::Power`.
|
|
639
651
|
| 22 | lusec | lusecs |
|
640
652
|
| 23 | atm⋅ft³/s | atm*ft^3/s, atmosphere-cubic foot per second |
|
641
653
|
| 24 | atm⋅ft³/min | atm*ft^3/min, atmosphere-cubic foot per minute |
|
642
|
-
| 25 | atm⋅ft³/h | atm
|
654
|
+
| 25 | atm⋅ft³/h | atm\*ft^3/h, atmosphere-cubic foot per hour |
|
655
|
+
| 26 | Pₚ | planck power, quantum power |
|
643
656
|
|
644
657
|
## 40. Energy
|
645
658
|
|
@@ -671,6 +684,7 @@ These units are defined in `UnitMeasurements::Energy`.
|
|
671
684
|
| 22 | in⋅lbf | in\*lbf, in⋅lb, in\*lb, inch-pound force |
|
672
685
|
| 23 | ft⋅pdl | ft*pdl, foot-poundal |
|
673
686
|
| 24 | gal⋅atm | gal*atm, gallon-atmosphere |
|
687
|
+
| 25 | Eₚ | planck energy, quantum energy |
|
674
688
|
|
675
689
|
## 41. Dynamic viscosity
|
676
690
|
|
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.16.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
|
+
date: 2023-12-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -118,6 +118,7 @@ files:
|
|
118
118
|
- lib/unit_measurements/errors/primitive_unit_already_set_error.rb
|
119
119
|
- lib/unit_measurements/errors/unit_already_defined_error.rb
|
120
120
|
- lib/unit_measurements/errors/unit_error.rb
|
121
|
+
- lib/unit_measurements/extras/conversion_methods.rb
|
121
122
|
- lib/unit_measurements/extras/numeric_methods.rb
|
122
123
|
- lib/unit_measurements/formatter.rb
|
123
124
|
- lib/unit_measurements/math.rb
|