gravitheque 0.4.0 → 0.5.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 +1 -0
- data/Gemfile +6 -3
- data/Guardfile +3 -3
- data/README.md +10 -311
- data/bin/test +38 -1
- data/gravitheque.gemspec +1 -1
- data/lib/alcohol.rb +35 -0
- data/lib/calories.rb +52 -0
- data/lib/hops.rb +140 -0
- data/lib/mash.rb +57 -0
- data/lib/numbers.rb +201 -0
- data/lib/yeast.rb +50 -0
- data/test/helper.rb +3 -0
- data/test/test_alcohol.rb +14 -0
- data/test/test_calories.rb +18 -0
- data/test/test_hops.rb +68 -0
- data/test/test_mash.rb +30 -0
- data/test/test_numbers.rb +68 -0
- data/test/test_yeast.rb +47 -0
- metadata +22 -34
- data/lib/calculators.rb +0 -6
- data/lib/calculators/alcohol.rb +0 -71
- data/lib/calculators/calories.rb +0 -115
- data/lib/calculators/hops.rb +0 -257
- data/lib/calculators/mash.rb +0 -82
- data/lib/calculators/yeast.rb +0 -71
- data/lib/conversions.rb +0 -8
- data/lib/conversions/extract.rb +0 -99
- data/lib/conversions/mass.rb +0 -47
- data/lib/conversions/temperature.rb +0 -25
- data/lib/conversions/volume.rb +0 -47
- data/lib/gravitheque.rb +0 -2
- data/test/calculators/test_alcohol.rb +0 -58
- data/test/calculators/test_calories.rb +0 -89
- data/test/calculators/test_hops.rb +0 -257
- data/test/calculators/test_mash.rb +0 -71
- data/test/calculators/test_yeast.rb +0 -149
- data/test/conversions/test_extract.rb +0 -32
- data/test/conversions/test_mass.rb +0 -22
- data/test/conversions/test_temperature.rb +0 -18
- data/test/conversions/test_volume.rb +0 -22
- data/test/test_helper.rb +0 -25
data/lib/calculators/calories.rb
DELETED
@@ -1,115 +0,0 @@
|
|
1
|
-
require "conversions/extract"
|
2
|
-
|
3
|
-
module Calculate
|
4
|
-
|
5
|
-
# Calculates calories derived from alcohol content.
|
6
|
-
# Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
|
7
|
-
#
|
8
|
-
# @example
|
9
|
-
# Calculate.calories_from_alcohol({ original: 17.5, terminal: 3.2 })
|
10
|
-
#
|
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
|
22
|
-
# @param [Symbol] unit the unit used to measure extract
|
23
|
-
# @return [Fixnum] the total calories from alcohol per 500ml
|
24
|
-
def self.calories_from_alcohol extract, units = :plato
|
25
|
-
original = extract[:original]
|
26
|
-
terminal = extract[:terminal]
|
27
|
-
|
28
|
-
unless units == :specific_gravity
|
29
|
-
case units
|
30
|
-
when :brix
|
31
|
-
original = Convert.brix_to_specific_gravity extract[:original]
|
32
|
-
terminal = Convert.terminal_brix_to_terminal_gravity extract[:original], extract[:terminal]
|
33
|
-
when :plato
|
34
|
-
original = Convert.plato_to_specific_gravity extract[:original]
|
35
|
-
terminal = Convert.plato_to_specific_gravity extract[:terminal]
|
36
|
-
else
|
37
|
-
raise ArgumentError, "#{units} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
calories = (1881.22 * terminal) *
|
42
|
-
((original - terminal) /
|
43
|
-
(1.775 - original))
|
44
|
-
|
45
|
-
(calories + (calories * 0.33)).round
|
46
|
-
end
|
47
|
-
|
48
|
-
# Calculates calories derived from extract.
|
49
|
-
# Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
|
50
|
-
#
|
51
|
-
# @example
|
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)
|
58
|
-
#
|
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
|
65
|
-
# @param [Symbol] unit the unit used to measure extract
|
66
|
-
# @return [Fixnum] the total calories from extract per 500ml
|
67
|
-
def self.calories_from_extract extract, units = :plato
|
68
|
-
original = extract[:original]
|
69
|
-
terminal = extract[:terminal]
|
70
|
-
|
71
|
-
unless units == :specific_gravity
|
72
|
-
case units
|
73
|
-
when :brix
|
74
|
-
original = Convert.brix_to_specific_gravity extract[:original]
|
75
|
-
terminal = Convert.terminal_brix_to_terminal_gravity extract[:original], extract[:terminal]
|
76
|
-
when :plato
|
77
|
-
original = Convert.plato_to_specific_gravity extract[:original]
|
78
|
-
terminal = Convert.plato_to_specific_gravity extract[:terminal]
|
79
|
-
else
|
80
|
-
raise ArgumentError, "#{units} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
calories = 3550.0 * terminal *
|
85
|
-
((0.1808 * original) +
|
86
|
-
(0.8192 * terminal) - 1.0004)
|
87
|
-
|
88
|
-
(calories + (calories * 0.33)).round
|
89
|
-
end
|
90
|
-
|
91
|
-
# Calculates calories per serving.
|
92
|
-
# Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
|
93
|
-
#
|
94
|
-
# @example
|
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)
|
106
|
-
#
|
107
|
-
# @param [Hash] extract the original and terminal extract levels
|
108
|
-
# @param [Symbol] unit the unit used to measure extract
|
109
|
-
# @return [Fixnum] the total calories per 500ml
|
110
|
-
def self.calories_per_serving extract, units = :plato
|
111
|
-
(calories_from_alcohol extract, units) +
|
112
|
-
(calories_from_extract extract, units)
|
113
|
-
end
|
114
|
-
|
115
|
-
end
|
data/lib/calculators/hops.rb
DELETED
@@ -1,257 +0,0 @@
|
|
1
|
-
require "conversions/extract"
|
2
|
-
require "conversions/mass"
|
3
|
-
require "conversions/volume"
|
4
|
-
|
5
|
-
module Calculate
|
6
|
-
|
7
|
-
# Calculates hop utilization.
|
8
|
-
# Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
|
9
|
-
#
|
10
|
-
# @example
|
11
|
-
# Calculate.hop_utilization({ at: 20, extract: 12 })
|
12
|
-
# Calculate.hop_utilization({ at: 20, extract: 12 }, :brix)
|
13
|
-
# Calculate.hop_utilization({ at: 20, extract: 12 }, :specific_gravity)
|
14
|
-
#
|
15
|
-
# @param [Hash] data the extract level and time added
|
16
|
-
# @param [Symbol] unit the unit used to measure extract
|
17
|
-
# @return [Float] hop utilization
|
18
|
-
def self.hop_utilization data, units = :plato
|
19
|
-
unless units == :specific_gravity
|
20
|
-
data[:extract] = case units
|
21
|
-
when :brix then Convert.brix_to_specific_gravity data[:extract]
|
22
|
-
when :plato then Convert.plato_to_specific_gravity data[:extract]
|
23
|
-
else raise ArgumentError, "#{units} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
((hop_extract_adjustment data[:extract], :specific_gravity) *
|
28
|
-
((hop_boil_time_adjustment data[:at]) / 4.15)).round 2
|
29
|
-
end
|
30
|
-
|
31
|
-
# Calculates IBUs for hop addition.
|
32
|
-
# Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
|
33
|
-
# Supported mass units are `:grams` and `:ounces`. Default: `:grams`
|
34
|
-
# Supported volume units are `:gallons` and `:liters`. Default: `:liters`
|
35
|
-
#
|
36
|
-
# @example
|
37
|
-
# Calculate.ibus({
|
38
|
-
# alpha: 12.4,
|
39
|
-
# at: 90,
|
40
|
-
# extract: 15,
|
41
|
-
# mass: 56,
|
42
|
-
# volume: 20
|
43
|
-
# })
|
44
|
-
#
|
45
|
-
# Calculate.ibus({
|
46
|
-
# alpha: 6.5,
|
47
|
-
# at: 60,
|
48
|
-
# extract: 18.5,
|
49
|
-
# mass: 30,
|
50
|
-
# volume: 40
|
51
|
-
# }, { extract: :brix })
|
52
|
-
#
|
53
|
-
# Calculate.ibus({
|
54
|
-
# alpha: 8,
|
55
|
-
# at: 30,
|
56
|
-
# extract: 1.055,
|
57
|
-
# mass: 3,
|
58
|
-
# volume: 5
|
59
|
-
# }, { extract: :specific_gravity, mass: :ounces, volume: :gallons })
|
60
|
-
#
|
61
|
-
# @param [Hash] data data required to calculate IBUs; `extract`, `alpha`, `at`, `mass`, `volume`
|
62
|
-
# @param [Hash] units used to change default units for `extract`, `volume` and `mass`
|
63
|
-
# @return [Fixnum] IBUs from hop addition
|
64
|
-
def self.ibus data, units = {}
|
65
|
-
units.merge!(extract: :plato) unless units[:extract]
|
66
|
-
units.merge!(mass: :grams) unless units[:mass]
|
67
|
-
units.merge!(volume: :liters) unless units[:volume]
|
68
|
-
|
69
|
-
unless units[:extract] == :specific_gravity
|
70
|
-
data[:extract] = case units[:extract]
|
71
|
-
when :brix then Convert.brix_to_specific_gravity data[:extract]
|
72
|
-
when :plato then Convert.plato_to_specific_gravity data[:extract]
|
73
|
-
else raise ArgumentError, "#{units[:extract]} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
|
74
|
-
end
|
75
|
-
end
|
76
|
-
|
77
|
-
unless units[:mass] == :grams
|
78
|
-
data[:mass] = case units[:mass]
|
79
|
-
when :ounces then Convert.ounces_to_grams data[:mass]
|
80
|
-
else raise ArgumentError, "#{units[:mass]} is an unknown unit of mass. Use :grams or :ounces"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
unless units[:volume] == :liters
|
85
|
-
data[:volume] = case units[:volume]
|
86
|
-
when :gallons then Convert.gallons_to_liters data[:volume]
|
87
|
-
else raise ArgumentError, "#{units[:volume]} is an unknown unit of volume. Use :gallons or :liters"
|
88
|
-
end
|
89
|
-
end
|
90
|
-
|
91
|
-
(hop_extract_adjustment(data[:extract], :specific_gravity) *
|
92
|
-
hop_boil_time_adjustment(data[:at]) * (data[:alpha] / 100) *
|
93
|
-
data[:mass] * 1000 / (data[:volume] * 4.15)).round
|
94
|
-
end
|
95
|
-
|
96
|
-
# Calculates hop mass required to achieve specific IBUs.
|
97
|
-
# Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
|
98
|
-
# Supported volume units are `:gallons` and `:liters`. Default: `:liters`
|
99
|
-
#
|
100
|
-
# @example
|
101
|
-
# Calculate.hop_mass_required({
|
102
|
-
# alpha: 13.5,
|
103
|
-
# at: 60,
|
104
|
-
# extract: 16,
|
105
|
-
# ibus: 25,
|
106
|
-
# volume: 20
|
107
|
-
# })
|
108
|
-
#
|
109
|
-
# Calculate.hop_mass_required({
|
110
|
-
# alpha: 3.2,
|
111
|
-
# at: 15,
|
112
|
-
# extract: 14.5,
|
113
|
-
# ibus: 15,
|
114
|
-
# volume: 20
|
115
|
-
# }, { extract: :brix })
|
116
|
-
#
|
117
|
-
# Calculate.hop_mass_required({
|
118
|
-
# alpha: 12.4,
|
119
|
-
# at: 90,
|
120
|
-
# extract: 1.05,
|
121
|
-
# ibus: 100,
|
122
|
-
# volume: 10
|
123
|
-
# }, { extract: :specific_gravity, volume: :gallons })
|
124
|
-
#
|
125
|
-
# @param [Hash] data data required to calculate hop mass required; `extract`, `ibus`, `alpha`, `at`, `volume`
|
126
|
-
# @param [Hash] units used to change default units for `extract` and `volume`
|
127
|
-
# @return [Float] hop mass required to achieve specific IBUs
|
128
|
-
def self.hop_mass_required data, units = {}
|
129
|
-
units.merge!(extract: :plato) unless units[:extract]
|
130
|
-
units.merge!(mass: :grams) unless units[:mass]
|
131
|
-
units.merge!(volume: :liters) unless units[:volume]
|
132
|
-
|
133
|
-
unless units[:extract] == :specific_gravity
|
134
|
-
data[:extract] = case units[:extract]
|
135
|
-
when :brix then Convert.brix_to_specific_gravity data[:extract]
|
136
|
-
when :plato then Convert.plato_to_specific_gravity data[:extract]
|
137
|
-
else raise ArgumentError, "#{units[:extract]} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
unless units[:volume] == :liters
|
142
|
-
data[:volume] = case units[:volume]
|
143
|
-
when :gallons then Convert.gallons_to_liters data[:volume]
|
144
|
-
else raise ArgumentError, "#{units[:volume]} is an unknown unit of volume. Use :gallons or :liters"
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
mass = ((data[:volume] * data[:ibus]) /
|
149
|
-
(hop_utilization({extract: data[:extract], at: data[:at]}, :specific_gravity) *
|
150
|
-
data[:alpha] * 10))
|
151
|
-
|
152
|
-
units[:mass] == :grams ? mass.round : Convert.grams_to_ounces(mass).round(1)
|
153
|
-
end
|
154
|
-
|
155
|
-
# Calculate milliliters of HopShot required to achieve specific IBUs.
|
156
|
-
# Supported extract units are `:brix`, `:plato` and `:specific_gravity`. Default: `:plato`
|
157
|
-
# Supported volume units are `:gallons` and `:liters`. Default: `:liters`
|
158
|
-
#
|
159
|
-
# @example
|
160
|
-
# Calculate.hopshot_required({
|
161
|
-
# alpha: 13.5,
|
162
|
-
# at: 60,
|
163
|
-
# extract: 16,
|
164
|
-
# ibus: 25,
|
165
|
-
# volume: 20
|
166
|
-
# })
|
167
|
-
#
|
168
|
-
# Calculate.hopshot_required({
|
169
|
-
# alpha: 3.2,
|
170
|
-
# at: 15,
|
171
|
-
# extract: 14.5,
|
172
|
-
# ibus: 15,
|
173
|
-
# volume: 20
|
174
|
-
# }, { extract: :brix })
|
175
|
-
#
|
176
|
-
# Calculate.hopshot_required({
|
177
|
-
# alpha: 12.4,
|
178
|
-
# at: 90,
|
179
|
-
# extract: 1.05,
|
180
|
-
# ibus: 100,
|
181
|
-
# volume: 10
|
182
|
-
# }, { extract: :specific_gravity, volume: :gallons })
|
183
|
-
#
|
184
|
-
# @param [Hash] data data required to calculate hop mass required; `extract`, `ibus`, `at`, `volume`
|
185
|
-
# @param [Hash] units used to change default units for `extract` and `volume`
|
186
|
-
# @return [Float] milliliters of HopShot required to achieve specific IBUs
|
187
|
-
def self.hopshot_required data, units = {}
|
188
|
-
units.merge!(extract: :plato) unless units[:extract]
|
189
|
-
units.merge!(volume: :liters) unless units[:volume]
|
190
|
-
|
191
|
-
unless units[:extract] == :specific_gravity
|
192
|
-
data[:extract] = case units[:extract]
|
193
|
-
when :brix then Convert.brix_to_specific_gravity data[:extract]
|
194
|
-
when :plato then Convert.plato_to_specific_gravity data[:extract]
|
195
|
-
else raise ArgumentError, "#{units[:extract]} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
unless units[:volume] == :liters
|
200
|
-
data[:volume] = case units[:volume]
|
201
|
-
when :gallons then Convert.gallons_to_liters data[:volume]
|
202
|
-
else raise ArgumentError, "#{units[:volume]} is an unknown unit of volume. Use :liters or :gallons"
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
unadjusted_amount = (data[:ibus] / 10.0) * (data[:volume] / 19.0)
|
207
|
-
hopshot_required = unadjusted_amount
|
208
|
-
|
209
|
-
if data[:extract] >= 1.08 && data[:extract] < 1.1
|
210
|
-
hopshot_required = unadjusted_amount + (unadjusted_amount * 0.1)
|
211
|
-
elsif data[:extract] >= 1.1 && data[:extract] < 1.15
|
212
|
-
hopshot_required = unadjusted_amount + (unadjusted_amount * 0.2)
|
213
|
-
elsif data[:extract] >= 1.15
|
214
|
-
hopshot_required = unadjusted_amount + (unadjusted_amount * 0.3)
|
215
|
-
end
|
216
|
-
|
217
|
-
if data[:at] >= 90
|
218
|
-
hopshot_required = hopshot_required - (unadjusted_amount * 0.1)
|
219
|
-
end
|
220
|
-
|
221
|
-
hopshot_required.round 1
|
222
|
-
end
|
223
|
-
|
224
|
-
# Calculate hop boil time adjustment.
|
225
|
-
#
|
226
|
-
# @example
|
227
|
-
# Calculate.hop_boil_time_adjustment 60
|
228
|
-
# Calculate.hop_boil_time_adjustment 15
|
229
|
-
#
|
230
|
-
# @param [Fixnum] at boil time remaining when hop addition is made
|
231
|
-
# @return [Float] boil time adjustment
|
232
|
-
def self.hop_boil_time_adjustment at
|
233
|
-
(1 - Math.exp(-0.04 * at)).round 2
|
234
|
-
end
|
235
|
-
|
236
|
-
# Calculate hop extract adjustment.
|
237
|
-
#
|
238
|
-
# @example
|
239
|
-
# Calculate.hop_extract_adjustment 12
|
240
|
-
# Calculate.hop_extract_adjustment 14.2, :brix
|
241
|
-
# Calculate.hop_extract_adjustment 1.065, :specific_gravity
|
242
|
-
#
|
243
|
-
# @param [Float] extract extract level when hop addition is made
|
244
|
-
# @return [Float] extract adjustment
|
245
|
-
def self.hop_extract_adjustment extract, units = :plato
|
246
|
-
unless units == :specific_gravity
|
247
|
-
extract = case units
|
248
|
-
when :brix then Convert.brix_to_specific_gravity extract
|
249
|
-
when :plato then Convert.plato_to_specific_gravity extract
|
250
|
-
else raise ArgumentError, "#{units} is an unknown unit of extract. Use :brix, :plato or :specific_gravity"
|
251
|
-
end
|
252
|
-
end
|
253
|
-
|
254
|
-
(1.65 * 0.000125 ** (extract - 1)).round 2
|
255
|
-
end
|
256
|
-
|
257
|
-
end
|
data/lib/calculators/mash.rb
DELETED
@@ -1,82 +0,0 @@
|
|
1
|
-
module Calculate
|
2
|
-
|
3
|
-
# Calculates temperature of strike water for dough in.
|
4
|
-
# Supported units are `:metric` and `:us`. Default: `:metric`
|
5
|
-
#
|
6
|
-
# @example
|
7
|
-
# Calculate.strike_temperature({
|
8
|
-
# ratio: 1.5,
|
9
|
-
# initial: 20,
|
10
|
-
# target: 75
|
11
|
-
# })
|
12
|
-
#
|
13
|
-
# Calculate.strike_temperature({
|
14
|
-
# ratio: 1.25,
|
15
|
-
# initial: 65,
|
16
|
-
# target: 154
|
17
|
-
# }, :us)
|
18
|
-
#
|
19
|
-
# Calculate.strike_temperature({
|
20
|
-
# ratio: 1.5,
|
21
|
-
# initial: 60,
|
22
|
-
# target: 150,
|
23
|
-
# loss: 1.015
|
24
|
-
# }, :us)
|
25
|
-
#
|
26
|
-
# @param [Hash] data data required to calculate hop mass required; `ratio`, `initial`, `target`
|
27
|
-
# @param [Symbol] units the unit used to measure temperature
|
28
|
-
# @return [Fixnum] strike water temperature
|
29
|
-
def self.strike_temperature data, units = :metric
|
30
|
-
constant = case units
|
31
|
-
when :metric then 0.41
|
32
|
-
when :us then 0.2
|
33
|
-
else raise ArgumentError, "#{units} is an unknown unit of measures. Use :metric or :us"
|
34
|
-
end
|
35
|
-
|
36
|
-
data.merge!(loss: 1) unless data[:loss]
|
37
|
-
|
38
|
-
(((constant / data[:ratio]) *
|
39
|
-
(data[:target] - data[:initial]) +
|
40
|
-
data[:target]) * data[:loss]).round
|
41
|
-
end
|
42
|
-
|
43
|
-
# Calculates volume of boiling infusion water needed to increase mash temperature.
|
44
|
-
# Supported units are `:metric` and `:us`. Default: `:metric`
|
45
|
-
#
|
46
|
-
# @example
|
47
|
-
# Calculate.infusion_volume({
|
48
|
-
# ratio: 1,
|
49
|
-
# initial: 40,
|
50
|
-
# target: 60,
|
51
|
-
# mass: 3.6,
|
52
|
-
# volume: 3.6
|
53
|
-
# })
|
54
|
-
#
|
55
|
-
# Calculate.infusion_volume({
|
56
|
-
# ratio: 1,
|
57
|
-
# initial: 104,
|
58
|
-
# target: 140,
|
59
|
-
# mass: 8,
|
60
|
-
# volume: 8
|
61
|
-
# }, :us)
|
62
|
-
#
|
63
|
-
# @param [Hash] data data required to calculate infusion volume; `ratio`, `initial`, `target`, `mass`, `volume`
|
64
|
-
# @param [Symbol] units the unit used for measurements
|
65
|
-
# @return [Fixnum] infusion water volume
|
66
|
-
def self.infusion_volume data, units = :metric
|
67
|
-
case units
|
68
|
-
when :metric
|
69
|
-
boiling = 100
|
70
|
-
constant = 0.41
|
71
|
-
when :us
|
72
|
-
boiling = 212
|
73
|
-
constant = 0.2
|
74
|
-
else raise ArgumentError, "#{units} is an unknown unit of measures. Use :metric or :us"
|
75
|
-
end
|
76
|
-
|
77
|
-
((data[:target] - data[:initial]) *
|
78
|
-
((constant * data[:mass]) + data[:volume]) /
|
79
|
-
(boiling - data[:target])).round 1
|
80
|
-
end
|
81
|
-
|
82
|
-
end
|