gravitheque 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
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