bread_calculator 0.2.1 → 0.3.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.
- checksums.yaml +4 -4
- data/README.md +35 -9
- data/bin/bread-calc +9 -0
- data/bread_calculator.gemspec +1 -1
- data/lib/bread_calculator.rb +35 -0
- data/spec/bread_calculator_spec.rb +4 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6959568a142ec9660ea66a80839a34762e0282ee
|
4
|
+
data.tar.gz: 4b89277648b629fd0920eab943eadffa56d6e01f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6bb8d52aa6d48efbaf602ac3d56c85ed5ad71f30e0723cf681f77c3204671356b0e5093ca2f2865ea7d48b43acdc9b97a19dcf9463fc036c8427035340566a4
|
7
|
+
data.tar.gz: e541c41118bb3086b7b7789a973feb6942b90aa7c3e0cf65768f7df1701c5e124789a55c036b530792bff3a603a89f098dedcfc50506ded7f3bc1a239d357277
|
data/README.md
CHANGED
@@ -9,11 +9,11 @@ Installation
|
|
9
9
|
or, if you want the latest and the greatest,
|
10
10
|
or if you want the man page installed:
|
11
11
|
|
12
|
-
|
13
|
-
cd bread-calculator
|
14
|
-
rake install
|
12
|
+
git clone https://github.com/bread-calculator
|
13
|
+
cd bread-calculator
|
14
|
+
rake install
|
15
15
|
|
16
|
-
(use sudo as necessary)
|
16
|
+
(use `sudo` as necessary)
|
17
17
|
|
18
18
|
Runtime Requirements
|
19
19
|
---------
|
@@ -104,6 +104,9 @@ print this help</p>
|
|
104
104
|
<p style="margin-left:11%; margin-top: 1em"><b>--summary</b>
|
105
105
|
print a baker’s percentage summary</p>
|
106
106
|
|
107
|
+
<p style="margin-left:11%; margin-top: 1em"><b>--html</b>
|
108
|
+
print recipe as html.</p>
|
109
|
+
|
107
110
|
|
108
111
|
<p style="margin-left:11%; margin-top: 1em"><b>--weight</b>
|
109
112
|
print the weight</p>
|
@@ -144,18 +147,41 @@ delimited by one or more blank lines.</p>
|
|
144
147
|
|
145
148
|
<p style="margin-left:11%; margin-top: 1em">Any line in a
|
146
149
|
step starting with a space or a blank is an ingredient,
|
147
|
-
consisting of quantity, units, and the ingredient
|
148
|
-
|
149
|
-
|
150
|
-
|
150
|
+
consisting of quantity, units, and the ingredient
|
151
|
+
itself.</p>
|
152
|
+
|
153
|
+
|
154
|
+
<p style="margin-left:11%; margin-top: 1em"><b>bread-calc</b>
|
155
|
+
will attempt to guess at the type of ingredient, but you can
|
156
|
+
always force it by including one of the words
|
157
|
+
’flour’, ’liquid’, or
|
151
158
|
’additive’ in the line.</p>
|
152
159
|
|
160
|
+
<p style="margin-left:11%; margin-top: 1em">Here is a brief
|
161
|
+
example (note that github displays the indenting
|
162
|
+
incorrectly):</p>
|
163
|
+
|
164
|
+
<p style="margin-left:17%; margin-top: 1em">name: imaginary
|
165
|
+
bread <br>
|
166
|
+
notes: This is a silly fake bread recipe <br>
|
167
|
+
makes: 1 bad loaf <br>
|
168
|
+
This line will become part of the notes <br>
|
169
|
+
--------------------- <br>
|
170
|
+
Mix:</p>
|
171
|
+
|
172
|
+
<p style="margin-left:23%;">500 g flour <br>
|
173
|
+
300 g water</p>
|
174
|
+
|
175
|
+
<p style="margin-left:17%; margin-top: 1em">Bake at
|
176
|
+
375°</p>
|
177
|
+
|
153
178
|
<h2>SEE ALSO
|
154
179
|
<a name="SEE ALSO"></a>
|
155
180
|
</h2>
|
156
181
|
|
157
182
|
|
158
|
-
<p style="margin-left:11%; margin-top: 1em"><
|
183
|
+
<p style="margin-left:11%; margin-top: 1em"><b>ruby(1)</b>
|
184
|
+
<i><br>
|
159
185
|
http://en.wikipedia.org/wiki/Baker%27s_percentage <br>
|
160
186
|
http://rubygems.org/gems/bread_calculator</i></p>
|
161
187
|
|
data/bin/bread-calc
CHANGED
@@ -3,12 +3,19 @@
|
|
3
3
|
require 'bread_calculator'
|
4
4
|
#require "#{File.dirname(__FILE__)}/../lib/bread_calculator"
|
5
5
|
|
6
|
+
def htm_header
|
7
|
+
puts '<head>'
|
8
|
+
puts ' <meta charset="UTF-8">'
|
9
|
+
puts '</head>'
|
10
|
+
end
|
11
|
+
|
6
12
|
def help status=true
|
7
13
|
puts <<EOF
|
8
14
|
USAGE: bread-calc [OPTIONS] [FILE]
|
9
15
|
where OPTIONS are any of:
|
10
16
|
--help
|
11
17
|
--summary
|
18
|
+
--html
|
12
19
|
--weight
|
13
20
|
--scale-by FACTOR
|
14
21
|
|
@@ -29,6 +36,7 @@ end
|
|
29
36
|
loop { case ARGV[0]
|
30
37
|
when /--help/ then @help = 'help' ; ARGV.shift; break
|
31
38
|
when /--summary/ then @get = 'r.summary'; ARGV.shift
|
39
|
+
when /--html/ then @get = 'r.to_html'; ARGV.shift
|
32
40
|
when /--weight/ then @get = 'r.weight'; ARGV.shift
|
33
41
|
#.to_f protects against 'no .<digit> floating literal anymore' for .33
|
34
42
|
when /--scale-by/ then ARGV.shift; @get = "r.scale_by #{ARGV.shift.to_f}"
|
@@ -41,5 +49,6 @@ help if @help
|
|
41
49
|
|
42
50
|
parser = BreadCalculator::Parser.new
|
43
51
|
r = parser.parse ARGF.file
|
52
|
+
htm_header if @get.include? 'html'
|
44
53
|
puts eval("#{@get}")
|
45
54
|
|
data/bread_calculator.gemspec
CHANGED
data/lib/bread_calculator.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
|
4
4
|
module BreadCalculator
|
5
5
|
|
6
|
+
require 'cgi'
|
7
|
+
|
6
8
|
##
|
7
9
|
# This class represents an ingredient in a Recipe
|
8
10
|
|
@@ -52,6 +54,14 @@ module BreadCalculator
|
|
52
54
|
f_quantity = sprintf "%.#{precision}f", @quantity
|
53
55
|
"\t#{f_quantity} #{@units} #{@name}\n"
|
54
56
|
end
|
57
|
+
|
58
|
+
##
|
59
|
+
# Print ingredient as an html unordered list item
|
60
|
+
|
61
|
+
def to_html
|
62
|
+
" <li>#{CGI.escapeHTML(self.to_s.strip.chomp)}</li>\n"
|
63
|
+
end
|
64
|
+
|
55
65
|
end
|
56
66
|
|
57
67
|
##
|
@@ -94,6 +104,19 @@ module BreadCalculator
|
|
94
104
|
out << "\n"
|
95
105
|
out
|
96
106
|
end
|
107
|
+
|
108
|
+
##
|
109
|
+
# Print Step as an html paragraph
|
110
|
+
|
111
|
+
def to_html
|
112
|
+
out = "<p>\n"
|
113
|
+
self.techniques.each do |t|
|
114
|
+
tmp = t.is_a?(Ingredient) ? t.to_html : "#{CGI.escapeHTML(t.chomp)}"
|
115
|
+
out << tmp
|
116
|
+
end
|
117
|
+
out << "\n</p>\n"
|
118
|
+
out
|
119
|
+
end
|
97
120
|
end
|
98
121
|
|
99
122
|
##
|
@@ -205,6 +228,18 @@ module BreadCalculator
|
|
205
228
|
out
|
206
229
|
end
|
207
230
|
|
231
|
+
##
|
232
|
+
# Print recipe as html.
|
233
|
+
# It is the caller's responsibility to provide appropriate headers, etc.
|
234
|
+
|
235
|
+
def to_html
|
236
|
+
out = ''
|
237
|
+
self.metadata.each{|k,v| out << "<p>\n<b>#{k}</b>: #{v}\n</p>\n"}
|
238
|
+
out << "--------------------\n"
|
239
|
+
self.steps.each{|s| out << s.to_html }
|
240
|
+
out
|
241
|
+
end
|
242
|
+
|
208
243
|
end
|
209
244
|
|
210
245
|
##
|