quantify 1.0.3 → 1.0.4

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.
Files changed (3) hide show
  1. data/README +105 -31
  2. data/lib/quantify/unit/compound_unit.rb +1 -1
  3. metadata +3 -3
data/README CHANGED
@@ -3,6 +3,83 @@ Licensed under the MIT license (See COPYING file for details)
3
3
  Author: Andrew Berkeley (andrew.berkeley.is@googlemail.com)
4
4
  Homepage: https://github.com/spatchcock/quantify
5
5
 
6
+ Quick introduction
7
+
8
+ # Quantity operations
9
+
10
+ 12.feet + 12.feet => "24.0 feet"
11
+
12
+ 6.m ** 2 => "36.0 m^2"
13
+
14
+ 100.km / 2.h => "50 kilometers per hour"
15
+
16
+ 5000.L.to_bbl => "31.4490528488754 barrels"
17
+
18
+ 1.5.lb.to_si.round(2) => "0.68 kg"
19
+
20
+ Unit.ratio :kg, :ton => "1.016047 kilograms per long ton"
21
+
22
+ # Note: these results are string representations of the actual objects
23
+ # which result from these operations, using the Quantity#to_s method which
24
+ # renders quantities using either the unit name or symbol.
25
+
26
+ # Handling units
27
+
28
+ Unit.ton.name => "long ton"
29
+
30
+ Unit.ton.label => "ton_uk"
31
+
32
+ Unit.ton.measures => "mass"
33
+
34
+ Unit.ton.alternatives :name => [ "kilogram",
35
+ "gram",
36
+ "carat",
37
+ "electron mass",
38
+ "grain",
39
+ "hundredweight long",
40
+ "hundredweight short",
41
+ "ounce",
42
+ "pennyweight",
43
+ "pound",
44
+ "short ton",
45
+ "stone",
46
+ "tonne",
47
+ "unified atomic mass" ]
48
+
49
+ Unit.ton.si_unit => 'kg'
50
+
51
+ Unit.ton.dimensions => <Quantify::Dimensions:0xb75467c8 ... >
52
+
53
+ Unit.ton.dimensions.describe => "mass"
54
+
55
+ Unit.ton.dimensions.mass => 1
56
+
57
+ Unit.ton.dimensions.length => nil
58
+
59
+
60
+ General introduction
61
+
62
+ Quantify represents physical quantities using the Quantify::Quantity class.
63
+
64
+ A Quantity object holds both a value (Numeric) and a unit (of the class
65
+ Quantify::Unit::Base), for example a Quantity object might represent 12 kgs
66
+ (value, 12; unit, kilogram).
67
+
68
+ Quantities can be manipulated and operated on, in all of the ways that might be
69
+ required for real physical quantities. Operations include, addition, subtraction,
70
+ multiplying and dividing by scalar values or other quantities, raising to powers,
71
+ converting into alternative unit representations (e.g. kgs to lbs, miles per hour
72
+ to metres per second), and rounding of values. Quantify handles the converting of
73
+ both values and units so that the result is a an accurate representation of the
74
+ operation. For example, multiplying 10 metres by 10 metres will result in a quanity
75
+ of square metres, whereas dividing, say, 10 metres by 2 seconds will result in a
76
+ quantity in metres per second.
77
+
78
+ In all cases the results of operations are a changes to the Quantity instance or
79
+ a new instance of a Quantity object. The new value or unit can be accessed using
80
+ the #value and #unit attributes, or the #to_s method which renders the quantity
81
+ in string form.
82
+
6
83
  There are several ways to initialize a quantity object
7
84
 
8
85
  mass = Quantity.new(100,:lb) => <Quantify::Quantity:0xb7332bbc ... >
@@ -30,62 +107,57 @@ Quantity object attributes
30
107
 
31
108
  Convert a quantity to a different unit
32
109
 
33
- energy = 100.kWh => <Quantify::Quantity:0xb7332bbc ... >
34
- energy.to_s(:name) => "100 kilowatt hours"
110
+ energy = 100.kWh => "100 kilowatt hours"
35
111
 
36
- energy = quantity.to_megajoules => <Quantify::Quantity:0xb7332bbc ... >
37
- energy.to_s => "360.0 MJ"
112
+ new_energy = energy.to_megajoules => "360.0 MJ"
38
113
 
39
- energy = quantity.to_MJ => <Quantify::Quantity:0xb7332bbc ... >
40
- energy.to_s => "360.0 MJ"
114
+ new_energy = energy.to_MJ => "360.0 MJ"
41
115
 
42
- energy = quantity.to(:MJ) => <Quantify::Quantity:0xb7332bbc ... >
43
- energy.to_s => "360.0 MJ"
116
+ new_energy = energy.to(:MJ) => "360.0 MJ"
44
117
 
45
118
  # Initialize a unit object and pass as conversion argument
46
119
  unit = Unit.MJ => <Quantify::Unit::SI:0xb75c9718 ... >
47
- energy = quantity.to(unit) => <Quantify::Quantity:0xb7332bbc ... >
48
- energy.to_s => "360.0 MJ"
120
+ new_energy = energy.to(unit) => "360.0 MJ"
49
121
 
50
- # Single line conversion of litres to barrels, returning only the value
51
- 5000.L.to_bbl.value => 31.4490528488754
122
+ # Note: all of the above results are string representations of the actual
123
+ # objects which result from these operations.
52
124
 
53
125
  Convert the units of a quantity with a compound unit
54
126
 
55
- speed = 70.mi/1.h => <Quantify::Quantity:0xb7332bbc ... >
56
- speed.to_s => "70.0 mi h^-1"
127
+ speed = 70.mi/1.h => "70.0 mi h^-1"
57
128
 
58
- speed_in_kms = speed.to_km => <Quantify::Quantity:0xb7332bbc ... >
59
- speed_in_kms.to_s => "112.65408 km h^-1"
129
+ speed_in_kms = speed.to_km => "112.65408 km h^-1"
60
130
 
61
- speed_in_mins = speed_in_kms.to_min => <Quantify::Quantity:0xb7332bbc ... >
62
- speed_in_mins.to_s => "1.877568 km min^-1"
131
+ speed_in_mins = speed_in_kms.to_min => "1.877568 km min^-1"
132
+
133
+ # Note: all of the above results are string representations of the actual
134
+ # objects which result from these operations.
63
135
 
64
136
  Convert a quantity to the corresponding SI unit
65
137
 
66
- energy = 100.kWh => <Quantify::Quantity:0xb7332bbc ... >
67
- energy.to_s => "100 kWh"
68
- si = quantity.to_si => <Quantify::Quantity:0x4j4j9sbc ... >
69
- si.to_s => "360000000.0 J"
138
+ energy = 100.kWh => "100 kWh"
139
+ si = quantity.to_si => "360000000.0 J"
140
+
141
+ # Note: all of the above results are string representations of the actual
142
+ # objects which result from these operations.
70
143
 
71
144
  Operate on a quantity
72
145
 
73
- mass = 10.kg * 3 => <Quantify::Quantity:0xb7332bbc ... >
74
- mass.to_s => 30.0 kg
146
+ mass = 10.kg * 3 => "30.0 kg"
75
147
 
76
- distance = 100.light_years / 20 => <Quantify::Quantity:0xb7332bbc ... >
77
- distance.to_s => 5.0 ly
148
+ distance = 100.light_years / 20 => "5.0 ly"
78
149
 
79
- area = 10.m * 10.m => <Quantify::Quantity:0xb7332bbc ... >
80
- area.to_s :name => 100.0 square metres
150
+ area = 10.m * 10.m => "100.0 square metres"
81
151
 
82
- speed = 250.mi / 3.h => <Quantify::Quantity:0xb7332bbc ... >
83
- speed.to_s(:name) => 83.3333333333333 miles per hour
152
+ speed = 250.mi / 3.h => "83.3333333333333 miles per hour"
84
153
 
85
154
  speed = 70.mi/1.h => <Quantify::Quantity:0xb7332bbc ... >
86
155
  time = 0.5.h => <Quantify::Quantity:3xf3472hjc ... >
87
156
  distance = speed * time => <Quantify::Quantity:7d7f8g9d5g ... >
88
- distance.to_s => 35.0 mi
157
+ distance.to_s => "35.0 mi"
158
+
159
+ # Note: all of the above results are string representations of the actual
160
+ # objects which result from these operations.
89
161
 
90
162
  Additional operations
91
163
  The result of quantity operations is commonly a new quantity with a compound unit.
@@ -165,3 +237,5 @@ Initialize a unit object
165
237
  square = last_unit ** 2 => <Quantify::Unit::Compound:0xb446f12f ... >
166
238
  square.symbol => 'm^2'
167
239
  square.measures => 'area'
240
+
241
+
@@ -318,4 +318,4 @@ module Quantify
318
318
 
319
319
  end
320
320
  end
321
- end
321
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: quantify
3
3
  version: !ruby/object:Gem::Version
4
- hash: 17
4
+ hash: 31
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 0
9
- - 3
10
- version: 1.0.3
9
+ - 4
10
+ version: 1.0.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Berkeley