unit_measurements 2.6.2 → 3.0.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: 5d98e7586a633b58cedcc99e781acb073c11ff72d76fdc38fef41e8c8d845d80
4
- data.tar.gz: 5021c9cb06916cad76a1882694dbea4a363cd26b5378d2429ad1ba4d4ad7b6ef
3
+ metadata.gz: b48c60ef57c1c3c3da286747f91effb58b512a5c827c1867ca6266446ff25722
4
+ data.tar.gz: 68e0a02544ba31a167ba99ebe94ba44e10876a3fb8922a65bae740becb770d22
5
5
  SHA512:
6
- metadata.gz: 5bcc7575bd131b9287278e49e65c6718545d0d5361ca66a0c2a5100ad3aa9ca6b319eaac4eac47cd068b11ef0a325592ad99b1758eb2d00e3cd56b5ae5284867
7
- data.tar.gz: ec28a588d149670874e64a136159e26beecc0ef01b154657d6c0b72ef940dac9aa9b37991a5392b9f4c18395c07d4d65036e74a48f254844e8f1441493be927e
6
+ metadata.gz: bef997801950b327b2665be18acb6836598606a28860945a7486dfd50afb5583e43b0fee050c50e3955272c88de6cf933131c9fa6e0e760e4ced83a59d68b164
7
+ data.tar.gz: '09c708ffbc5fa6f74dd30e5b0feee871826b15508bdec4de5c84b75246712a0379d5266f1685defa6fb6b161ef3d14b25f28422fb70c8e3c0f3e13b775612b5b'
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## [3.0.0](https://github.com/shivam091/unit_measurements/compare/v2.6.2...v3.0.0) - 2023-08-25
2
+
3
+ ### What's new
4
+
5
+ - Added method `Measurement.name` to get humanized name of the unit group.
6
+ - Raised `BaseError` in `Measurement.unit_group`.
7
+ - Added aliases `in`, `as`, `in!`, `as` for `convert_to` and `convert_to!` methods.
8
+
9
+ ### What's changed
10
+
11
+ - Moved LICENSE to markdown file.
12
+ - Replaced `$LOAD_PATH` by shorthand `$:`
13
+ - Replaced `base` method by `unit`.
14
+
15
+ ----------
16
+
1
17
  ## [2.6.2](https://github.com/shivam091/unit_measurements/compare/v2.6.1...v2.6.2) - 2023-08-25
2
18
 
3
19
  ### What's changed
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- unit_measurements (2.6.2)
4
+ unit_measurements (3.0.0)
5
5
  activesupport (~> 7.0)
6
6
 
7
7
  GEM
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2023 Harshal LADHE
3
+ **Copyright (c) 2023 Harshal LADHE**
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -72,8 +72,9 @@ UnitMeasurements::Weight.new(1, :kg)
72
72
  **Converting to other units:**
73
73
 
74
74
  This gem allows you to convert among units of same unit group.
75
- You can convert measurement to other unit using `#convert_to` (aliased as `#to`)
76
- or `#convert_to!` (aliased as `#to!`) methods.
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.
77
78
 
78
79
  You can use `#convert_to` as:
79
80
 
@@ -243,6 +244,13 @@ weight.unit
243
244
  #=> #<UnitMeasurements::Unit: kg (kilogram, kilogramme, kilogrammes, kilograms)>
244
245
  ```
245
246
 
247
+ **See humanized name of the unit group:**
248
+
249
+ ```ruby
250
+ UnitMeasurements::Weight.name
251
+ #=> weight
252
+ ```
253
+
246
254
  **See all units of the unit group:**
247
255
 
248
256
  ```ruby
@@ -467,31 +475,23 @@ gem "unit_measurements", require: ["unit_measurements/base", "unit_measurements/
467
475
  ### Building new unit groups
468
476
 
469
477
  This library provides simpler way to build your own unit groups. To build new unit group,
470
- use `UnitMeasurements.build` in order to define base units and conversion units within it:
478
+ use `UnitMeasurements.build` in order to define units within it:
471
479
 
472
- If you build unit using `base` method, base unit automatically gets set for the unit group.
480
+ If the unit is supporting [si prefixes](#si-units-support), you can use `si_unit` method to build it.
481
+ If you build unit using `si_unit`, the unit will be added along with all SI prefixes for it.
473
482
 
474
483
  ```ruby
475
484
  UnitMeasurements::Time = UnitMeasurements.build do
476
- # Add a base unit to the group.
477
- base :s, aliases: [:second, :seconds]
478
-
479
- # Add other units to the group, along with their conversion multipliers against
480
- # base unit.
481
- unit :min, value: 60.0, aliases: [:minute, :minutes]
485
+ unit :s, aliases: [:second, :seconds]
482
486
 
483
- # You can also specify conversion string if it's converted against a unit other
484
- # than the unit group's base unit.
485
- unit :h, value: "60 min", aliases: [:hour, :hours]
487
+ # Add units to the group, along with their conversion multipliers.
488
+ unit :min, value: "60 s", aliases: [:hour, :hours]
486
489
 
487
490
  # You can also specify unit value as an array.
488
- unit :d, value: [24, :h], aliases: [:day, :days]
491
+ unit :h, value: [60, :min], aliases: [:day, :days]
489
492
  end
490
493
  ```
491
494
 
492
- If the unit is supporting [si prefixes](#si-units-support), you can use `si_unit` method to build it.
493
- If you build unit using `si_unit`, Base unit is automatically added to the group along with all SI prefixes for it.
494
-
495
495
  ```ruby
496
496
  UnitMeasurements::Time = UnitMeasurements.build do
497
497
  # Add a SI unit to the unit group
@@ -501,7 +501,7 @@ UnitMeasurements::Time = UnitMeasurements.build do
501
501
  end
502
502
  ```
503
503
 
504
- All units allow aliases, as long as they are unique. Unit symbol can be used to
504
+ All units allow aliases, as long as they are unique. Unit names can be used to
505
505
  define the unit as long as it is unique. All unit names are case sensitive.
506
506
 
507
507
  ### Namespaces
@@ -32,6 +32,8 @@ module UnitMeasurements
32
32
  self.class.new((quantity * conversion_factor), target_unit)
33
33
  end
34
34
  alias_method :to, :convert_to
35
+ alias_method :in, :convert_to
36
+ alias_method :as, :convert_to
35
37
 
36
38
  def convert_to!(target_unit)
37
39
  measurement = convert_to(target_unit)
@@ -40,6 +42,8 @@ module UnitMeasurements
40
42
  self
41
43
  end
42
44
  alias_method :to!, :convert_to!
45
+ alias_method :in!, :convert_to!
46
+ alias_method :as!, :convert_to!
43
47
 
44
48
  def inspect(dump: false)
45
49
  return super() if dump
@@ -64,7 +68,7 @@ module UnitMeasurements
64
68
  extend Forwardable
65
69
 
66
70
  def unit_group
67
- raise "`Measurement` does not have a `unit_group` object. You cannot directly use `Measurement`. Instead, build a new unit group by calling `UnitMeasurements.build`."
71
+ raise BaseError, "`Measurement` does not have a `unit_group` object. You cannot directly use `Measurement`. Instead, build a new unit group by calling `UnitMeasurements.build`."
68
72
  end
69
73
 
70
74
  def_delegators :unit_group, :units, :unit_names, :unit_with_name_and_aliases,
@@ -78,6 +82,10 @@ module UnitMeasurements
78
82
  target ? _parse(source).convert_to(target) : _parse(source)
79
83
  end
80
84
 
85
+ def name
86
+ to_s.split("::").last.underscore.humanize.downcase
87
+ end
88
+
81
89
  private
82
90
 
83
91
  def _parse(string)
@@ -10,10 +10,6 @@ module UnitMeasurements
10
10
  @units = []
11
11
  end
12
12
 
13
- def base(name, aliases: [])
14
- @units << build_unit(name, value: 1.0, aliases: aliases)
15
- end
16
-
17
13
  def unit(name, value: 1.0, aliases: [])
18
14
  @units << build_unit(name, value: value, aliases: aliases)
19
15
  end
@@ -3,7 +3,7 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  UnitMeasurements::Area = UnitMeasurements.build do
6
- base :m², aliases: [:"m^2", :"sq m", :"square meter", :"square meters", :"square metre", :"square metres"]
6
+ unit :m², aliases: [:"m^2", :"sq m", :"square meter", :"square meters", :"square metre", :"square metres"]
7
7
 
8
8
  unit :km², value: "1e+6 m²", aliases: [:"km^2", :"sq km", :"square kilometer", :"square kilometers", :"square kilometre", :"square kilometres"]
9
9
  unit :in², value: "0.00064516 m²", aliases: [:"in^2", :"sq in", :"square inch", :"square inches"]
@@ -3,7 +3,7 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  UnitMeasurements::Density = UnitMeasurements.build do
6
- base :"g/m³", aliases: [:"g/m^3", :"g·m⁻³", :"gram per cubic meter", :"grams per cubic meter", :"gramme per cubic metre", :"grammes per cubic metre"]
6
+ unit :"g/m³", aliases: [:"g/m^3", :"g·m⁻³", :"gram per cubic meter", :"grams per cubic meter", :"gramme per cubic metre", :"grammes per cubic metre"]
7
7
 
8
8
  unit :"g/l", value: "1 kg/m³", aliases: [:"g·l⁻¹", :"gram per liter", :"grams per liter", :"gramme per litre", :"grammes per litre"]
9
9
  unit :"g/ml", value: "1000 g/l", aliases: [:"g·ml⁻¹", :"gram per milliliter", :"grams per milliliter", :"gramme per millilitre", :"grammes per millilitre"]
@@ -3,7 +3,7 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  UnitMeasurements::Quantity = UnitMeasurements.build do
6
- base :pc, aliases: [:pcs, :piece, :pieces]
6
+ unit :pc, aliases: [:pcs, :piece, :pieces]
7
7
 
8
8
  unit :pr, value: "2 pc", aliases: [:pair, :pairs]
9
9
  unit :dz, value: "6 pr", aliases: [:doz, :dozen, :dozens]
@@ -3,5 +3,5 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  module UnitMeasurements
6
- VERSION = "2.6.2"
6
+ VERSION = "3.0.0"
7
7
  end
@@ -3,7 +3,7 @@
3
3
  # -*- warn_indent: true -*-
4
4
 
5
5
  lib = File.expand_path("../lib", __FILE__)
6
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
+ $:.unshift(lib) unless $:.include?(lib)
7
7
 
8
8
  require "unit_measurements/version"
9
9
 
data/units.md CHANGED
@@ -4,8 +4,7 @@ As there are lots of units bundled with `unit_measurements`, we recommend you to
4
4
  bundled units before converting your measurements.
5
5
 
6
6
  **Notes:**
7
- 1. Base unit for each unit group is highlighted.
8
- 2. Unit names suffixed with `*` support all [SI prefixes](README.md#si-units-support).
7
+ 1. Unit names suffixed with `*` support all [SI prefixes](README.md#si-units-support).
9
8
 
10
9
  Below are the units which are bundled in the unit_measurements.
11
10
 
@@ -15,7 +14,7 @@ These units are defined in `UnitMeasurements::Length`.
15
14
 
16
15
  | # | Name | Aliases |
17
16
  |:--|:--|:--|
18
- | **1** | **m\*** | **meter, metre, meters, metres** |
17
+ | 1 | m* | meter, metre, meters, metres |
19
18
  | 2 | in | ", inch, inches |
20
19
  | 3 | ft | ', foot, feet |
21
20
  | 4 | yd | yard, yards |
@@ -27,7 +26,7 @@ These units are defined in `UnitMeasurements::Weight`.
27
26
 
28
27
  | # | Name | Aliases |
29
28
  |--|--|--|
30
- | **1** | **g\*** | **gram, grams, gramme, grammes** |
29
+ | 1 | g* | gram, grams, gramme, grammes |
31
30
  | 2 | q | quintal, quintals |
32
31
  | 3 | t | tonne, tonnes, metric tonne, metric tonnes |
33
32
 
@@ -37,7 +36,7 @@ These units are defined in `UnitMeasurements::Time`.
37
36
 
38
37
  | # | Name | Aliases |
39
38
  |:--|:--|:--|
40
- | **1** | **s\*** | **sec, second, seconds** |
39
+ | 1 | s* | sec, second, seconds |
41
40
  | 2 | h | hr, hour, hours |
42
41
  | 3 | d | day, days |
43
42
  | 4 | wk | week, weeks |
@@ -55,7 +54,7 @@ These units are defined in `UnitMeasurements::AmountOfSubstance`.
55
54
 
56
55
  | # | Name | Aliases |
57
56
  |:--|:--|:--|
58
- | **1** | **mol\*** | **mole, moles** |
57
+ | 1 | mol* | mole, moles |
59
58
  | 2 | NA | avogadro constant |
60
59
 
61
60
  ## 5. Electric current
@@ -64,7 +63,7 @@ These units are defined in `UnitMeasurements::ElectricCurrent`.
64
63
 
65
64
  | # | Name | Aliases |
66
65
  |:--|:--|:--|
67
- | **1** | **A\*** | **amp, ampere, amperes** |
66
+ | 1 | A* | amp, ampere, amperes |
68
67
  | 2 | abA | abampere, abamperes |
69
68
  | 3 | Bi | biot, biots |
70
69
  | 4 | statA | statampere, statamperes |
@@ -75,7 +74,7 @@ These units are defined in `UnitMeasurements::LuminousIntensity`.
75
74
 
76
75
  | # | Name | Aliases |
77
76
  |:--|:--|:--|
78
- | **1** | **cd\*** | **candela, candelas** |
77
+ | 1 | cd* | candela, candelas |
79
78
  | 2 | hk | hefnerkerze |
80
79
 
81
80
  ## 7. Temperature
@@ -84,7 +83,7 @@ These units are defined in `UnitMeasurements::Temperature`.
84
83
 
85
84
  | # | Name | Aliases |
86
85
  |:--|:--|:--|
87
- | **1** | **K\*** | **kelvin, kelvins** |
86
+ | 1 | K* | kelvin, kelvins |
88
87
  | 2 | °R | R, °Ra, Ra, rankine |
89
88
 
90
89
  ## 8. Area
@@ -93,7 +92,7 @@ These units are defined in `UnitMeasurements::Area`.
93
92
 
94
93
  | # | Name | Aliases |
95
94
  |:--|:--|:--|
96
- | **1** | **m²** | **m^2, sq m, square meter, square meters, square metre, square metres** |
95
+ | 1 | m² | m^2, sq m, square meter, square meters, square metre, square metres |
97
96
  | 2 | km² | km^2, sq km, square kilometer, square kilometers, square kilometre, square kilometres |
98
97
  | 3 | in² | in^2, sq in, square inch, square inches |
99
98
  | 4 | ft² | ft^2, sq ft, square foot, square feet |
@@ -106,7 +105,7 @@ These units are defined in `UnitMeasurements::Volume`.
106
105
 
107
106
  | # | Name | Aliases |
108
107
  |:--|:--|:--|
109
- | **1** | **l\*** | **liter, litre, liters, litres** |
108
+ | 1 | l* | liter, litre, liters, litres |
110
109
  | 2 | m³ | m^3, cu m, cubic meter, cubic meters, cubic metre, cubic metres |
111
110
  | 3 | mm³ | mm^3, cu mm, cubic millimeter, cubic millimeters, cubic millimetre, cubic millimetres |
112
111
  | 4 | cm³ | cm^3, cu cm, cubic centimeter, cubic centimeters, cubic centimetre, cubic centimetres |
@@ -123,7 +122,7 @@ These units are defined in `UnitMeasurements::Density`.
123
122
 
124
123
  | # | Name | Aliases |
125
124
  |:--|:--|:--|
126
- | **1** | **g/m³** | **g/m^3, g·m⁻³, gram per cubic meter, grams per cubic meter, gramme per cubic metre, grammes per cubic metre** |
125
+ | 1 | g/m³ | g/m^3, g·m⁻³, gram per cubic meter, grams per cubic meter, gramme per cubic metre, grammes per cubic metre |
127
126
  | 2 | kg/m³ | kg/m^3, kg·m⁻³, kilogram per cubic meter, kilograms per cubic meter, kilogramme per cubic metre, kilogrammes per cubic metre |
128
127
  | 3 | g/l | g·l⁻¹, gram per liter, grams per liter, gramme per litre, grammes per litre |
129
128
  | 4 | g/ml | g·ml⁻¹, gram per milliliter, grams per milliliter, gramme per millilitre, grammes per millilitre |
@@ -135,7 +134,7 @@ These units are defined in `UnitMeasurements::Quantity`.
135
134
 
136
135
  | # | Name | Aliases |
137
136
  |:--|:--|:--|
138
- | **1** | **pc** | **pcs, piece, pieces** |
137
+ | 1 | pc | pcs, piece, pieces |
139
138
  | 2 | pr | pair, pairs |
140
139
  | 3 | gr | gross, grosses |
141
140
  | 4 | dz | doz, dozen, dozens |
@@ -147,7 +146,7 @@ These units are defined in `UnitMeasurements::SoundLevel`.
147
146
 
148
147
  | # | Name | Aliases |
149
148
  |:--|:--|:--|
150
- | **1** | **B\*** | **bel, bels** |
149
+ | 1 | B* | bel, bels |
151
150
  | 2 | Np | neper, nepers |
152
151
 
153
152
  ## 13. Plane angle
@@ -156,7 +155,7 @@ These units are defined in `UnitMeasurements::PlaneAngle`.
156
155
 
157
156
  | # | Name | Aliases |
158
157
  |:--|:--|:--|
159
- | **1** | **rad\*** | **radian, radians** |
158
+ | 1 | rad* | radian, radians |
160
159
  | 2 | deg | °, degree, degrees |
161
160
  | 3 | gon | ᵍ, grad, gradian, gradians |
162
161
  | 4 | cir | circle, circles |
@@ -172,7 +171,7 @@ These units are defined in `UnitMeasurements::SolidAngle`.
172
171
 
173
172
  | # | Name | Aliases |
174
173
  |:--|:--|:--|
175
- | **1** | **sr\*** | **steradian, steradians** |
174
+ | 1 | sr* | steradian, steradians |
176
175
  | 2 | sp | spat, spats |
177
176
  | 3 | deg² | (°)², sq °, square degree, square degrees |
178
177
  | 4 | arcmin² | (′)², sq ′, square arcminute, square arcminutes |
@@ -184,7 +183,7 @@ These units are defined in `UnitMeasurements::Force`.
184
183
 
185
184
  | # | Name | Aliases |
186
185
  |:--|:--|:--|
187
- | **1** | **N\*** | **newton, newtons** |
186
+ | 1 | N* | newton, newtons |
188
187
  | 2 | tf | tonne-force |
189
188
  | 3 | dyn | dyne, dynes |
190
189
  | 4 | kgf | kilogram-force, kilogramme-force |
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: unit_measurements
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.6.2
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harshal LADHE
@@ -99,7 +99,7 @@ files:
99
99
  - CHANGELOG.md
100
100
  - Gemfile
101
101
  - Gemfile.lock
102
- - LICENSE
102
+ - LICENSE.md
103
103
  - README.md
104
104
  - Rakefile
105
105
  - lib/unit_measurements.rb