gravitheque 0.3.0 → 0.4.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.
data/.travis.yml CHANGED
@@ -5,7 +5,4 @@ rvm:
5
5
 
6
6
  script: bin/test
7
7
 
8
- env:
9
- - JRUBY_OPTS="--1.9"
10
-
11
8
  bundler_args: --without development documentation mac
data/README.md CHANGED
@@ -47,13 +47,35 @@ guard start --clear
47
47
  ```ruby
48
48
  require "calculators/alcohol"
49
49
 
50
- Calculate.alcohol_by_volume 12, 4
51
- Calculate.alcohol_by_volume 1.055, 1.012, :specific_gravity
52
- Calculate.alcohol_by_volume 16.4, 8.2, :brix
53
-
54
- Calculate.alcohol_by_weight 12, 4
55
- Calculate.alcohol_by_weight 1.055, 1.012, :specific_gravity
56
- Calculate.alcohol_by_weight 16.4, 8.2, :brix
50
+ Calculate.alcohol_by_volume({
51
+ original: 12,
52
+ terminal: 4,
53
+ })
54
+
55
+ Calculate.alcohol_by_volume({
56
+ original: 1.055,
57
+ terminal: 1.012
58
+ }, :specific_gravity)
59
+
60
+ Calculate.alcohol_by_volume({
61
+ original: 16.4,
62
+ terminal: 8.2
63
+ }, :brix)
64
+
65
+ Calculate.alcohol_by_weight({
66
+ original: 12,
67
+ terminal: 4,
68
+ })
69
+
70
+ Calculate.alcohol_by_weight({
71
+ original: 1.055,
72
+ terminal: 1.012
73
+ }, :specific_gravity)
74
+
75
+ Calculate.alcohol_by_weight({
76
+ original: 16.4,
77
+ terminal: 8.2
78
+ }, :brix)
57
79
  ```
58
80
 
59
81
  ### Calories
@@ -61,17 +83,50 @@ Calculate.alcohol_by_weight 16.4, 8.2, :brix
61
83
  ```ruby
62
84
  require "calculators/calories"
63
85
 
64
- Calculate.calories_from_alcohol 12, 4
65
- Calculate.calories_from_alcohol 1.055, 1.012, :specific_gravity
66
- Calculate.calories_from_alcohol 16.4, 8.2, :brix
67
-
68
- Calculate.calories_from_extract 12, 4
69
- Calculate.calories_from_extract 1.055, 1.012, :specific_gravity
70
- Calculate.calories_from_extract 16.4, 8.2, :brix
71
-
72
- Calculate.calories_per_serving 12, 4
73
- Calculate.calories_per_serving 1.055, 1.012, :specific_gravity
74
- Calculate.calories_per_serving 16.4, 8.2, :brix
86
+ Calculate.calories_from_alcohol({
87
+ original: 12,
88
+ terminal: 4,
89
+ })
90
+
91
+ Calculate.calories_from_alcohol({
92
+ original: 1.055,
93
+ terminal: 1.012
94
+ }, :specific_gravity)
95
+
96
+ Calculate.calories_from_alcohol({
97
+ original: 16.4,
98
+ terminal: 8.2
99
+ }, :brix)
100
+
101
+ Calculate.calories_from_extract({
102
+ original: 12,
103
+ terminal: 4,
104
+ })
105
+
106
+ Calculate.calories_from_extract({
107
+ original: 1.055,
108
+ terminal: 1.012
109
+ }, :specific_gravity)
110
+
111
+ Calculate.calories_from_extract({
112
+ original: 16.4,
113
+ terminal: 8.2
114
+ }, :brix)
115
+
116
+ Calculate.calories_per_serving({
117
+ original: 12,
118
+ terminal: 4,
119
+ })
120
+
121
+ Calculate.calories_per_serving({
122
+ original: 1.055,
123
+ terminal: 1.012
124
+ }, :specific_gravity)
125
+
126
+ Calculate.calories_per_serving({
127
+ original: 16.4,
128
+ terminal: 8.2
129
+ }, :brix)
75
130
  ```
76
131
 
77
132
  ### Hops
@@ -79,21 +134,92 @@ Calculate.calories_per_serving 16.4, 8.2, :brix
79
134
  ```ruby
80
135
  require "calculators/hops"
81
136
 
82
- Calculate.hop_utilization 15, 45
83
- Calculate.hop_utilization 1.055, 60, :specific_gravity
84
- Calculate.hop_utilization 12, 15, :brix
85
-
86
- Calculate.hop_mass_required({ :ibus => 50, :extract => 12, :at => 30, :alpha => 10, :volume => 20 })
87
- Calculate.hop_mass_required({ :ibus => 15, :extract => 14.5, :at => 15, :alpha => 3.2, :volume => 20 }, { :extract => :brix })
88
- Calculate.hop_mass_required({ :ibus => 100, :extract => 1.05, :at => 90, :alpha => 12.4, :volume => 10 }, { :extract => :specific_gravity, :volume => :gallons })
89
-
90
- Calculate.hopshot_required({ :ibus => 40, :extract => 18, :at => 60, :volume => 20 })
91
- Calculate.hopshot_required({ :ibus => 40, :extract => 14.5, :at => 60, :volume => 20 }, { :extract => :brix })
92
- Calculate.hopshot_required({ :ibus => 40, :extract => 1.085, :at => 60, :volume => 10.5 }, { :extract => :specific_gravity, :volume => :gallons })
93
-
94
- Calculate.ibus({ :extract => 15, :at => 60, :alpha => 6.5, :mass => 56, :volume => 20 })
95
- Calculate.ibus({ :extract => 18.5, :at => 60, :alpha => 6.5, :mass => 56, :volume => 20 }, { :extract => :brix })
96
- Calculate.ibus({ :extract => 1.055, :at => 60, :alpha => 6.5, :mass => 2, :volume => 5 }, { :extract => :specific_gravity, :mass => :ounces, :volume => :gallons })
137
+ Calculate.hop_utilization({
138
+ extract: 15,
139
+ at: 45
140
+ })
141
+
142
+ Calculate.hop_utilization({
143
+ extract: 1.055,
144
+ at: 60
145
+ }, :specific_gravity)
146
+
147
+ Calculate.hop_utilization({
148
+ extract: 12,
149
+ at: 15
150
+ }, :brix)
151
+
152
+ Calculate.hop_mass_required({
153
+ alpha: 13.5,
154
+ at: 60,
155
+ extract: 16,
156
+ ibus: 25,
157
+ volume: 20
158
+ })
159
+
160
+ Calculate.hop_mass_required({
161
+ alpha: 3.2,
162
+ at: 15,
163
+ extract: 14.5,
164
+ ibus: 15,
165
+ volume: 20
166
+ }, { extract: :brix })
167
+
168
+ Calculate.hop_mass_required({
169
+ alpha: 12.4,
170
+ at: 90,
171
+ extract: 1.05,
172
+ ibus: 100,
173
+ volume: 10
174
+ }, { extract: :specific_gravity, volume: :gallons })
175
+
176
+ Calculate.hopshot_required({
177
+ alpha: 13.5,
178
+ at: 60,
179
+ extract: 16,
180
+ ibus: 25,
181
+ volume: 20
182
+ })
183
+
184
+ Calculate.hopshot_required({
185
+ alpha: 3.2,
186
+ at: 15,
187
+ extract: 14.5,
188
+ ibus: 15,
189
+ volume: 20
190
+ }, { extract: :brix })
191
+
192
+ Calculate.hopshot_required({
193
+ alpha: 12.4,
194
+ at: 90,
195
+ extract: 1.05,
196
+ ibus: 100,
197
+ volume: 10
198
+ }, { extract: :specific_gravity, volume: :gallons })
199
+
200
+ Calculate.ibus({
201
+ alpha: 12.4,
202
+ at: 90,
203
+ extract: 15,
204
+ mass: 56,
205
+ volume: 20
206
+ })
207
+
208
+ Calculate.ibus({
209
+ alpha: 6.5,
210
+ at: 60,
211
+ extract: 18.5,
212
+ mass: 30,
213
+ volume: 40
214
+ }, { extract: :brix })
215
+
216
+ Calculate.ibus({
217
+ alpha: 8,
218
+ at: 30,
219
+ extract: 1.055,
220
+ mass: 3,
221
+ volume: 5
222
+ }, { extract: :specific_gravity, mass: :ounces, volume: :gallons })
97
223
  ```
98
224
 
99
225
  ### Mash
@@ -101,11 +227,33 @@ Calculate.ibus({ :extract => 1.055, :at => 60, :alpha => 6.5, :mass => 2, :volum
101
227
  ```ruby
102
228
  require "calculators/mash"
103
229
 
104
- Calculate.strike_temperature 1.5, 20, 75
105
- Calculate.strike_temperature 1.25, 65, 154, :us
106
-
107
- Calculate.infusion_volume 1, 40, 60, 3.6, 3.6
108
- Calculate.infusion_volume 1, 104, 140, 8, 8, :us
230
+ Calculate.strike_temperature({
231
+ ratio: 1.5,
232
+ initial: 20,
233
+ target: 75
234
+ })
235
+
236
+ Calculate.strike_temperature({
237
+ ratio: 1.25,
238
+ initial: 65,
239
+ target: 154
240
+ }, :us)
241
+
242
+ Calculate.infusion_volume({
243
+ ratio: 1,
244
+ initial: 40,
245
+ target: 60,
246
+ mass: 3.6,
247
+ volume: 3.6
248
+ })
249
+
250
+ Calculate.infusion_volume({
251
+ ratio: 1,
252
+ initial: 104,
253
+ target: 140,
254
+ mass: 8,
255
+ volume: 8
256
+ }, :us)
109
257
  ```
110
258
 
111
259
  ### Yeast
@@ -113,11 +261,30 @@ Calculate.infusion_volume 1, 104, 140, 8, 8, :us
113
261
  ```ruby
114
262
  require "calculators/yeast"
115
263
 
116
- Calculate.yeast_cells_required 16.5, 19
117
- Calculate.yeast_cells_required 15.75, 5.25, { :volume => :gallons }
118
- Calculate.yeast_cells_required 1.055, 55, { :extract => :specific_gravity }
119
- Calculate.yeast_cells_required 18, 20, { :type => :hybrid }
120
- Calculate.yeast_cells_required 21.5, 10.5, { :volume => :gallons, :extract => :brix, :type => :lager }
264
+ Calculate.yeast_cells_required({
265
+ extract: 16.5,
266
+ volume: 19
267
+ })
268
+
269
+ Calculate.yeast_cells_required({
270
+ extract: 15.75,
271
+ volume: 5.25
272
+ }, { volume: :gallons })
273
+
274
+ Calculate.yeast_cells_required({
275
+ extract: 1.055,
276
+ volume: 55
277
+ }, { extract: :specific_gravity })
278
+
279
+ Calculate.yeast_cells_required({
280
+ extract: 18,
281
+ volume: 20
282
+ }, { type: :hybrid })
283
+
284
+ Calculate.yeast_cells_required({
285
+ extract: 21.5,
286
+ volume: 10.5
287
+ }, { volume: :gallons, extract: :brix, type: :lager })
121
288
  ```
122
289
 
123
290
  ## Conversions
data/bin/test CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
+ system "clear" unless ENV["CI"]
4
+
3
5
  tests = Dir.glob "test/**/*.rb"
4
6
  tests.each { |test| require File.expand_path test }
5
7
 
data/gravitheque.gemspec CHANGED
@@ -11,5 +11,5 @@ Gem::Specification.new do |gem|
11
11
  gem.test_files = `git ls-files -- test/*`.split("\n")
12
12
  gem.name = "gravitheque"
13
13
  gem.require_paths = ["lib"]
14
- gem.version = "0.3.0"
14
+ gem.version = "0.4.0"
15
15
  end
@@ -3,34 +3,41 @@ require "conversions/extract"
3
3
  module Calculate
4
4
 
5
5
  # Calculates alcohol by weight given original and terminal extract levels.
6
- # Set the `unit` option for extract levels that are not degrees Plato.
7
- # Other supported units are `:specific_gravity` and `:brix`.
6
+ # Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
8
7
  #
9
8
  # @example
10
- # Calculate.alcohol_by_weight 17.5, 3.2
11
- # Calculate.alcohol_by_weight 1.055, 1.010, :specific_gravity
12
- # Calculate.alcohol_by_weight 15.2, 7.8, :brix
9
+ # Calculate.alcohol_by_weight({ original: 17.5, terminal: 3.2 })
13
10
  #
14
- # @param [Float] original the original extract level
15
- # @param [Float] terminal the terminal extract level
11
+ # Calculate.alcohol_by_weight({
12
+ # original: 1.055,
13
+ # terminal: 1.010
14
+ # }, :specific_gravity)
15
+ #
16
+ # Calculate.alcohol_by_weight({
17
+ # original: 15.2,
18
+ # terminal: 7.8
19
+ # }, :brix)
20
+ #
21
+ # @param [Hash] extract the original and terminal extract levels
16
22
  # @param [Symbol] unit the unit used to measure extract
17
23
  # @return [Float] the alcohol content by weight
18
- def self.alcohol_by_weight original, terminal, unit = :plato
19
- original = original.to_f
20
- terminal = terminal.to_f
24
+ def self.alcohol_by_weight extract, units = :plato
25
+ original = extract[:original]
26
+ terminal = extract[:terminal]
21
27
 
22
- unless unit == :plato
23
- case unit
28
+ unless units == :plato
29
+ case units
24
30
  when :specific_gravity
25
- original = Convert.specific_gravity_to_plato original
26
- terminal = Convert.specific_gravity_to_plato terminal
31
+ original = Convert.specific_gravity_to_plato(extract[:original])
32
+ terminal = Convert.specific_gravity_to_plato(extract[:terminal])
27
33
  when :brix
28
- og = Convert.brix_to_specific_gravity original
29
- tg = Convert.terminal_brix_to_terminal_gravity original, terminal
30
- original = Convert.specific_gravity_to_plato og
31
- terminal = Convert.specific_gravity_to_plato tg
34
+ original = Convert.specific_gravity_to_plato(
35
+ Convert.brix_to_specific_gravity(extract[:original]))
36
+ terminal = Convert.specific_gravity_to_plato(
37
+ Convert.terminal_brix_to_terminal_gravity(
38
+ extract[:original], extract[:terminal]))
32
39
  else
33
- raise ArgumentError, "#{unit} is not recogized as a unit of measure"
40
+ raise ArgumentError, "#{units} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
34
41
  end
35
42
  end
36
43
 
@@ -39,20 +46,26 @@ module Calculate
39
46
  end
40
47
 
41
48
  # Calculates alcohol by volume given original and terminal extract levels.
42
- # Set the `unit` option for extract levels that are not degrees Plato.
43
- # Other supported units are `:specific_gravity` and `:brix`.
49
+ # Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
44
50
  #
45
51
  # @example
46
- # Calculate.alcohol_by_volume 17.5, 3.2
47
- # Calculate.alcohol_by_volume 1.055, 1.010, :specific_gravity
48
- # Calculate.alcohol_by_volume 15.2, 7.8, :brix
52
+ # Calculate.alcohol_by_volume({ original: 17.5, terminal: 3.2 })
53
+ #
54
+ # Calculate.alcohol_by_volume({
55
+ # original: 1.055,
56
+ # terminal: 1.010
57
+ # }, :specific_gravity)
58
+ #
59
+ # Calculate.alcohol_by_volume({
60
+ # original: 15.2,
61
+ # terminal: 7.8
62
+ # }, :brix)
49
63
  #
50
- # @param [Float] original the original extract level
51
- # @param [Float] terminal the terminal extract level
64
+ # @param [Hash] extract the original and terminal extract levels
52
65
  # @param [Symbol] unit the unit used to measure extract
53
66
  # @return [Float] the alcohol content by volume
54
- def self.alcohol_by_volume original, terminal, unit = :plato
55
- ((alcohol_by_weight original, terminal, unit) / 0.793573).round 1
67
+ def self.alcohol_by_volume extract, units = :plato
68
+ ((alcohol_by_weight extract, units) / 0.793573).round 1
56
69
  end
57
70
 
58
71
  end
@@ -3,32 +3,38 @@ require "conversions/extract"
3
3
  module Calculate
4
4
 
5
5
  # Calculates calories derived from alcohol content.
6
- # Set the `unit` option for extract levels that are not degrees Plato.
7
- # Other supported units are `:specific_gravity` and `:brix`.
6
+ # Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
8
7
  #
9
8
  # @example
10
- # Calculate.calories_from_alcohol 17.5, 3.2
11
- # Calculate.calories_from_alcohol 1.055, 1.010, :specific_gravity
12
- # Calculate.calories_from_alcohol 15.2, 7.8, :brix
9
+ # Calculate.calories_from_alcohol({ original: 17.5, terminal: 3.2 })
13
10
  #
14
- # @param [Float] original the original extract level
15
- # @param [Float] terminal the terminal extract level
11
+ # Calculate.calories_from_alcohol({
12
+ # original: 1.055,
13
+ # terminal: 1.010
14
+ # }, :specific_gravity)
15
+ #
16
+ # Calculate.calories_from_alcohol({
17
+ # original: 15.2,
18
+ # terminal: 7.8
19
+ # }, :brix)
20
+ #
21
+ # @param [Hash] extract the original and terminal extract levels
16
22
  # @param [Symbol] unit the unit used to measure extract
17
23
  # @return [Fixnum] the total calories from alcohol per 500ml
18
- def self.calories_from_alcohol original, terminal, unit = :plato
19
- original = original.to_f
20
- terminal = terminal.to_f
24
+ def self.calories_from_alcohol extract, units = :plato
25
+ original = extract[:original]
26
+ terminal = extract[:terminal]
21
27
 
22
- unless unit == :specific_gravity
23
- case unit
28
+ unless units == :specific_gravity
29
+ case units
24
30
  when :brix
25
- original = Convert.brix_to_specific_gravity original
26
- terminal = Convert.terminal_brix_to_terminal_gravity original, terminal
31
+ original = Convert.brix_to_specific_gravity extract[:original]
32
+ terminal = Convert.terminal_brix_to_terminal_gravity extract[:original], extract[:terminal]
27
33
  when :plato
28
- original = Convert.plato_to_specific_gravity original
29
- terminal = Convert.plato_to_specific_gravity terminal
34
+ original = Convert.plato_to_specific_gravity extract[:original]
35
+ terminal = Convert.plato_to_specific_gravity extract[:terminal]
30
36
  else
31
- raise ArgumentError, "#{unit} is not recogized as a unit of measure"
37
+ raise ArgumentError, "#{units} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
32
38
  end
33
39
  end
34
40
 
@@ -40,32 +46,38 @@ module Calculate
40
46
  end
41
47
 
42
48
  # Calculates calories derived from extract.
43
- # Set the `unit` option for extract levels that are not degrees Plato.
44
- # Other supported units are `:specific_gravity` and `:brix`.
49
+ # Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
45
50
  #
46
51
  # @example
47
- # Calculate.calories_from_extract 17.5, 3.2
48
- # Calculate.calories_from_extract 1.055, 1.010, :specific_gravity
49
- # Calculate.calories_from_extract 15.2, 7.8, :brix
52
+ # Calculate.calories_from_extract({ original: 17.5, terminal: 3.2 })
53
+ #
54
+ # Calculate.calories_from_extract({
55
+ # original: 1.055,
56
+ # terminal: 1.010
57
+ # }, :specific_gravity)
50
58
  #
51
- # @param [Float] original the original extract level
52
- # @param [Float] terminal the terminal extract level
59
+ # Calculate.calories_from_extract({
60
+ # original: 15.2,
61
+ # terminal: 7.8
62
+ # }, :brix)
63
+ #
64
+ # @param [Hash] extract the original and terminal extract levels
53
65
  # @param [Symbol] unit the unit used to measure extract
54
66
  # @return [Fixnum] the total calories from extract per 500ml
55
- def self.calories_from_extract original, terminal, unit = :plato
56
- original = original.to_f
57
- terminal = terminal.to_f
67
+ def self.calories_from_extract extract, units = :plato
68
+ original = extract[:original]
69
+ terminal = extract[:terminal]
58
70
 
59
- unless unit == :specific_gravity
60
- case unit
71
+ unless units == :specific_gravity
72
+ case units
61
73
  when :brix
62
- original = Convert.brix_to_specific_gravity original
63
- terminal = Convert.terminal_brix_to_terminal_gravity original, terminal
74
+ original = Convert.brix_to_specific_gravity extract[:original]
75
+ terminal = Convert.terminal_brix_to_terminal_gravity extract[:original], extract[:terminal]
64
76
  when :plato
65
- original = Convert.plato_to_specific_gravity original
66
- terminal = Convert.plato_to_specific_gravity terminal
77
+ original = Convert.plato_to_specific_gravity extract[:original]
78
+ terminal = Convert.plato_to_specific_gravity extract[:terminal]
67
79
  else
68
- raise ArgumentError, "#{unit} is not recogized as a unit of measure"
80
+ raise ArgumentError, "#{units} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
69
81
  end
70
82
  end
71
83
 
@@ -76,22 +88,28 @@ module Calculate
76
88
  (calories + (calories * 0.33)).round
77
89
  end
78
90
 
79
- # Calculates total calories per serving.
80
- # Set the `unit` option for extract levels that are not degrees Plato.
81
- # Other supported units are `:specific_gravity` and `:brix`.
91
+ # Calculates calories per serving.
92
+ # Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
82
93
  #
83
94
  # @example
84
- # Calculate.calories_per_serving 17.5, 3.2
85
- # Calculate.calories_per_serving 1.055, 1.010, :specific_gravity
86
- # Calculate.calories_per_serving 15.2, 7.8, :brix
95
+ # Calculate.calories_per_serving({ original: 17.5, terminal: 3.2 })
96
+ #
97
+ # Calculate.calories_per_serving({
98
+ # original: 1.055,
99
+ # terminal: 1.010
100
+ # }, :specific_gravity)
101
+ #
102
+ # Calculate.calories_per_serving({
103
+ # original: 15.2,
104
+ # terminal: 7.8
105
+ # }, :brix)
87
106
  #
88
- # @param [Float] original the original extract level
89
- # @param [Float] terminal the terminal extract level
107
+ # @param [Hash] extract the original and terminal extract levels
90
108
  # @param [Symbol] unit the unit used to measure extract
91
109
  # @return [Fixnum] the total calories per 500ml
92
- def self.calories_per_serving original, terminal, unit = :plato
93
- (calories_from_alcohol original, terminal, unit) +
94
- (calories_from_extract original, terminal, unit)
110
+ def self.calories_per_serving extract, units = :plato
111
+ (calories_from_alcohol extract, units) +
112
+ (calories_from_extract extract, units)
95
113
  end
96
114
 
97
115
  end