gravitheque 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,4 +1,5 @@
1
1
  rvm:
2
+ - 1.9.2
2
3
  - 1.9.3
3
4
  - jruby-head
4
5
  - rbx-19mode
data/Gemfile CHANGED
@@ -1,13 +1,14 @@
1
1
  source :rubygems
2
2
 
3
3
  group :development do
4
- gem "guard-minitest"
4
+ gem "guard-minitest-decisiv"
5
5
  gem "guard-yard"
6
6
  end
7
7
 
8
8
  group :documentation do
9
9
  gem "github-markup"
10
- gem "redcarpet", "~> 1.0"
10
+ gem "redcarpet"
11
+ gem "yard", :platforms => [:mri, :jruby], :group => :test
11
12
  end
12
13
 
13
14
  group :mac do
@@ -16,6 +17,8 @@ group :mac do
16
17
  end
17
18
 
18
19
  group :test do
20
+ gem "minitest"
21
+ gem "reek"
22
+ gem "ruby2ruby", "~> 1.2.0" # Reek needs the older version
19
23
  gem "simplecov", :platforms => [:mri, :jruby]
20
- gem "yard", :platforms => [:mri, :jruby]
21
24
  end
data/Guardfile CHANGED
@@ -1,7 +1,7 @@
1
1
  guard "minitest" do
2
- watch(%r|^test/(.*)\/test_(.*)\.rb|)
3
- watch(%r|^lib/(.*)\/(.*)\.rb|) { |m| "test/#{m[1]}/test_#{m[2]}.rb" }
4
- watch(%r|^test/test_helper\.rb|) { "test" }
2
+ watch(%r|^test/test_(.*)\.rb|)
3
+ watch(%r|^lib/(.*)\.rb|) { |m| "test/test_#{m[1]}.rb" }
4
+ watch(%r|^test/helper\.rb|) { "test" }
5
5
  end
6
6
 
7
7
  guard "yard" do
data/README.md CHANGED
@@ -6,7 +6,8 @@ application are particularly useful right now.**
6
6
  A collection of [open source][oss] tools for brewers. It can be used as
7
7
  a [web application][web], interactively through IRB or as a [library][lib] to
8
8
  build your own brewing application. For use as a library refer to the full
9
- [documentation][doc].
9
+ [documentation][doc]. Submit bug reports and feature requests to the
10
+ [issue tracker][iss].
10
11
 
11
12
  ## Installation
12
13
 
@@ -14,11 +15,13 @@ build your own brewing application. For use as a library refer to the full
14
15
  gem install gravitheque
15
16
  ```
16
17
 
17
- To use the Gravitheque library nothing more than a compatible Ruby 1.9.3
18
+ To use the Gravitheque library nothing more than a compatible Ruby 1.9
18
19
  implementation is required. It may work on older and newer versions but only by
19
- coincidence; refer to the [build logs][trv] to see which Rubies are supported.
20
+ coincidence; refer to the [build logs][tci] to see which Rubies are supported.
20
21
 
21
- ### Development
22
+ ## Development
23
+
24
+ **If you plan to send pull requests please work in a branch**.
22
25
 
23
26
  ```bash
24
27
  git clone git://github.com/johnmuhl/gravitheque.git
@@ -34,319 +37,15 @@ bundle install
34
37
  # bundle install --without mac
35
38
  ```
36
39
 
37
- Now use [Guard][grd] to run tests and update documentation automatically.
40
+ Now use Guard to run tests and update documentation automatically.
38
41
 
39
42
  ```bash
40
43
  guard start --clear
41
44
  ```
42
45
 
43
- ## Calculators
44
-
45
- ### Alcohol
46
-
47
- ```ruby
48
- require "calculators/alcohol"
49
-
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)
79
- ```
80
-
81
- ### Calories
82
-
83
- ```ruby
84
- require "calculators/calories"
85
-
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)
130
- ```
131
-
132
- ### Hops
133
-
134
- ```ruby
135
- require "calculators/hops"
136
-
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 })
223
- ```
224
-
225
- ### Mash
226
-
227
- ```ruby
228
- require "calculators/mash"
229
-
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)
257
- ```
258
-
259
- ### Yeast
260
-
261
- ```ruby
262
- require "calculators/yeast"
263
-
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 })
288
- ```
289
-
290
- ## Conversions
291
-
292
- ### Extract
293
-
294
- ```ruby
295
- require "conversions/extract"
296
-
297
- Convert.brix_to_specific_gravity 14.2
298
-
299
- Convert.terminal_brix_to_terminal_gravity 16.2, 7.8
300
-
301
- Convert.plato_to_specific_gravity 16
302
-
303
- Convert.specific_gravity_to_plato 1.055
304
-
305
- Convert.specific_gravity_to_temperature_corrected_gravity 1.045, 160
306
- Convert.specific_gravity_to_temperature_corrected_gravity 1.028, 50, :celsius
307
- ```
308
-
309
- ### Mass
310
-
311
- ```ruby
312
- require "conversions/mass"
313
-
314
- Convert.grams_to_ounces 30
315
-
316
- Convert.ounces_to_grams 3
317
-
318
- Convert.kilograms_to_pounds 15
319
-
320
- Convert.pounds_to_kilograms 8
321
- ```
322
-
323
- ### Temperature
324
-
325
- ```ruby
326
- require "conversions/temperature"
327
-
328
- Convert.celsius_to_fahrenheit 25
329
-
330
- Convert.farhenheit_to_celsius 154
331
- ```
332
-
333
- ### Volumes
334
-
335
- ```ruby
336
- require "conversions/volumes"
337
-
338
- Convert.gallons_to_liters 8
339
-
340
- Convert.liters_to_gallons 23
341
-
342
- Convert.liters_to_quarts 5
343
-
344
- Convert.quarts_to_liters 11
345
- ```
346
-
347
46
  [doc]: http://rubydoc.info/gems/gravitheque
348
- [grd]: https://github.com/guard/guard
47
+ [iss]: https://github.com/johnmuhl/gravitheque/issues
349
48
  [lib]: http://rubygems.org/gems/gravitheque
350
49
  [oss]: https://github.com/johnmuhl/gravitheque
351
- [trv]: http://travis-ci.org/johnmuhl/gravitheque
50
+ [tci]: http://travis-ci.org/johnmuhl/gravitheque
352
51
  [web]: http://gravitheque.herokuapp.com/
data/bin/test CHANGED
@@ -2,7 +2,44 @@
2
2
 
3
3
  system "clear" unless ENV["CI"]
4
4
 
5
- tests = Dir.glob "test/**/*.rb"
5
+ unless RUBY_ENGINE == "rbx"
6
+ # No Coverage module on Rubinius
7
+ require "simplecov"
8
+
9
+ class SimpleCov::Formatter::NoHTMLFormatter
10
+ def format result
11
+ puts "\n#{result.covered_percent.round}% test coverage"
12
+ end
13
+ end
14
+
15
+ SimpleCov.start do
16
+ @formatter = ENV["CI"] ? SimpleCov::Formatter::NoHTMLFormatter :
17
+ SimpleCov::Formatter::HTMLFormatter
18
+ end
19
+
20
+ # YARD crashes on Rubinius
21
+ yard_stats = `yard stats --list-undoc 2>&1`
22
+ if yard_stats =~ /100.00%/
23
+ puts "100% documentation coverage\n\n"
24
+ else
25
+ puts yard_stats
26
+ end
27
+ end
28
+
29
+ # SimpleCov requires you load it before your code
30
+ require "./test/helper"
31
+
32
+ tests = Dir.glob "test/test_*.rb"
6
33
  tests.each { |test| require File.expand_path test }
7
34
 
8
35
  MiniTest::Unit.autorun
36
+
37
+ unless RUBY_ENGINE == "jruby"
38
+ # Reek throws weird errors on JRuby
39
+ reek_stats = `reek --quiet lib/**`
40
+ if reek_stats.empty?
41
+ puts "100% reek free\n\n"
42
+ else
43
+ puts "#{reek_stats}\n"
44
+ end
45
+ end
@@ -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.4.0"
14
+ gem.version = "0.5.0"
15
15
  end
@@ -0,0 +1,35 @@
1
+ # Calculate the alcohol content of beer
2
+ module Alcohol
3
+
4
+ # Calculates alcohol by weight
5
+ #
6
+ # @note
7
+ # Extract must be measured in Plato
8
+ #
9
+ # @example
10
+ # Alcohol.by_weight 15, 3
11
+ #
12
+ # @param [Float] original original Plato
13
+ # @param [Float] terminal terminal Plato
14
+ # @return [Float] alcohol content by weight
15
+ def self.by_weight original, terminal
16
+ ((original - ((0.1808 * original) + (0.8192 * terminal))) /
17
+ (2.0665 - (0.010665 * original))).round 1
18
+ end
19
+
20
+ # Calculates alcohol by volume
21
+ #
22
+ # @note
23
+ # Extract must be measured in Plato
24
+ #
25
+ # @example
26
+ # Alcohol.by_volume 17.5, 3.2
27
+ #
28
+ # @param [Float] original original Plato
29
+ # @param [Float] terminal terminal Plato
30
+ # @return [Float] alcohol content by volume
31
+ def self.by_volume original, terminal
32
+ ((by_weight original, terminal) / 0.793573).round 1
33
+ end
34
+
35
+ end