cakery 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/cakery.rb +30 -6
- data/lib/cakery/version.rb +1 -1
- data/spec/bake_spec.rb +92 -13
- 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: a5f2fd85093c1a2c603484a085d84a4d6cd437aa
|
4
|
+
data.tar.gz: 2b20adf0352b472af21526c5b3b26a9178a9fea4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 050f3a305833d10fe29ad2035a7b3841f9b4f102baa93f79bddbe63fc232eed2322f2f4b5b665f97ab5b4e3f6e85744de2dbc8f8b25342473ecf6e336d62032b
|
7
|
+
data.tar.gz: 8f4578d6be1061b15d0b94998e37477aa49a1b75dca9d03e7ca1166f81a47db2fff49f39d92a3424aecdd5c6dbf65882c1f148d7e1d53e0583617f19de1a1dd9
|
data/lib/cakery.rb
CHANGED
@@ -28,12 +28,12 @@ module Cakery
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def method_missing name, *args, &block
|
31
|
-
if name =~ /=/
|
32
|
-
name = ('@'+name.to_s.gsub(/=/, "")).to_sym
|
33
|
-
self.instance_variable_set(name, args.first)
|
34
|
-
else
|
31
|
+
#if name =~ /=/
|
32
|
+
#name = ('@'+name.to_s.gsub(/=/, "")).to_sym
|
33
|
+
#self.instance_variable_set(name, args.first)
|
34
|
+
#else
|
35
35
|
return CakeERBContextTwoClauseHelper.new(self, name)
|
36
|
-
end
|
36
|
+
#end
|
37
37
|
end
|
38
38
|
|
39
39
|
def get_binding
|
@@ -50,6 +50,31 @@ module Cakery
|
|
50
50
|
@macros = []
|
51
51
|
end
|
52
52
|
|
53
|
+
def <(e)
|
54
|
+
vname = ('@'+@name.to_s.gsub(/=/, "")).to_sym
|
55
|
+
out = ""
|
56
|
+
|
57
|
+
#Append all files or it's a macro class
|
58
|
+
if e.class == String
|
59
|
+
out = e
|
60
|
+
|
61
|
+
#Run through each macro and run it in the reverse
|
62
|
+
#order that we put it in so that
|
63
|
+
#r.var << MyMacroA << MyMacroB << "./directory" will execute first MyMacroB and then MyMacroA
|
64
|
+
while macro = @macros.pop
|
65
|
+
out = macro.new.process(out)
|
66
|
+
end
|
67
|
+
|
68
|
+
@erb_context.instance_variable_set(vname, "") unless @erb_context.instance_variable_defined?(vname)
|
69
|
+
v = @erb_context.instance_variable_get(vname)
|
70
|
+
out = "\n" + out unless v == ""
|
71
|
+
v += out
|
72
|
+
@erb_context.instance_variable_set(vname, v)
|
73
|
+
else
|
74
|
+
raise "< operator needs a string, you passed #{e.inspect}"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
53
78
|
def <<(e)
|
54
79
|
vname = ('@'+@name.to_s.gsub(/=/, "")).to_sym
|
55
80
|
out = ""
|
@@ -72,7 +97,6 @@ module Cakery
|
|
72
97
|
v = @erb_context.instance_variable_get(vname)
|
73
98
|
v += out
|
74
99
|
@erb_context.instance_variable_set(vname, v)
|
75
|
-
|
76
100
|
else
|
77
101
|
#Assume it's a macro, save it onto the stack
|
78
102
|
@macros << e
|
data/lib/cakery/version.rb
CHANGED
data/spec/bake_spec.rb
CHANGED
@@ -28,14 +28,13 @@ RSpec.describe "Baking" do
|
|
28
28
|
secret = SecureRandom.hex
|
29
29
|
|
30
30
|
c = Cakery.new(cp) do |r|
|
31
|
-
r.secret
|
31
|
+
r.secret < secret
|
32
32
|
end
|
33
33
|
|
34
34
|
c.bake
|
35
35
|
expect(c.src).to eq("#{secret}\n")
|
36
36
|
end
|
37
37
|
|
38
|
-
|
39
38
|
it "can use a directory append" do
|
40
39
|
cp = cakery_path "test2"
|
41
40
|
|
@@ -106,6 +105,38 @@ RSpec.describe "Baking" do
|
|
106
105
|
expect(c.src).to eq("goodbye world 1\ngoodbye world 2\n\n")
|
107
106
|
end
|
108
107
|
|
108
|
+
it "supports macros via <" do
|
109
|
+
cp = cakery_path "test4"
|
110
|
+
|
111
|
+
class MyMacro < Cakery::Macro
|
112
|
+
def process str
|
113
|
+
out = ""
|
114
|
+
str.split("\n").each do |line|
|
115
|
+
if line =~ /hello/
|
116
|
+
out += line.gsub(/hello/, "goodbye")
|
117
|
+
else
|
118
|
+
out += line
|
119
|
+
end
|
120
|
+
|
121
|
+
out += "\n"
|
122
|
+
end
|
123
|
+
out
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
c = Cakery.new(cp) do |r|
|
128
|
+
r.secret << MyMacro < "hello world 1\ngoodbye world 2\n"
|
129
|
+
end
|
130
|
+
|
131
|
+
cd_proj "test4" do
|
132
|
+
c.bake
|
133
|
+
end
|
134
|
+
|
135
|
+
#Started out with hello world 1, goodbye world 2 -> goodbye world 1, goodbye world 2
|
136
|
+
expect(c.src).to eq("goodbye world 1\ngoodbye world 2\n\n")
|
137
|
+
end
|
138
|
+
|
139
|
+
|
109
140
|
#it "supports stacked macros" do
|
110
141
|
#cp = cakery_path "test4"
|
111
142
|
|
@@ -139,17 +170,65 @@ RSpec.describe "Baking" do
|
|
139
170
|
#expect(c.src).to eq("fuck_you world 1\nfuck_you world 2\n\n")
|
140
171
|
#end
|
141
172
|
|
142
|
-
|
143
|
-
|
173
|
+
it "supports stacked macros" do
|
174
|
+
cp = cakery_path "test4"
|
144
175
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
176
|
+
class MyMacro < Cakery::Macro
|
177
|
+
def process str
|
178
|
+
out = ""
|
179
|
+
str.split("\n").each do |line|
|
180
|
+
if line =~ /hello/
|
181
|
+
out += line.gsub(/hello/, "goodbye")
|
182
|
+
elsif line =~ /goodbye/
|
183
|
+
out += line.gsub(/goodbye/, "fuck_you")
|
184
|
+
else
|
185
|
+
out += line
|
186
|
+
end
|
187
|
+
|
188
|
+
out += "\n"
|
189
|
+
end
|
190
|
+
out
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
c = Cakery.new(cp) do |r|
|
195
|
+
r.secret << MyMacro << MyMacro < "hello world 1\ngoodbye world 2\n\n"
|
196
|
+
end
|
197
|
+
|
198
|
+
cd_proj "test4" do
|
199
|
+
c.bake
|
200
|
+
end
|
201
|
+
|
202
|
+
#Started out with hello world 1, goodbye world 2 -> goodbye world 1, goodbye world 2
|
203
|
+
expect(c.src).to eq("fuck_you world 1\nfuck_you world 2\n\n")
|
204
|
+
end
|
205
|
+
|
206
|
+
it "supports two dir sources to one variable" do
|
207
|
+
cp = cakery_path "test5"
|
208
|
+
|
209
|
+
c = Cakery.new(cp) do |r|
|
210
|
+
r.secret << "./secret1/*"
|
211
|
+
r.secret << "./secret2/*"
|
212
|
+
end
|
213
|
+
|
214
|
+
cd_proj "test5" do
|
215
|
+
c.bake
|
216
|
+
end
|
217
|
+
expect(c.src).to eq("hello world\ngoodbye world\n\n")
|
218
|
+
end
|
219
|
+
|
220
|
+
it "supports two string sources to one variable" do
|
221
|
+
cp = cakery_path "test5"
|
222
|
+
|
223
|
+
c = Cakery.new(cp) do |r|
|
224
|
+
r.secret < "hello"
|
225
|
+
r.secret < "world"
|
226
|
+
end
|
227
|
+
|
228
|
+
cd_proj "test5" do
|
229
|
+
c.bake
|
230
|
+
end
|
231
|
+
expect(c.src).to eq("hello\nworld\n")
|
232
|
+
end
|
149
233
|
|
150
|
-
#cd_proj "test5" do
|
151
|
-
#c.bake
|
152
|
-
#end
|
153
|
-
#expect(c.src).to eq("hello world\ngoodbye world\n\n")
|
154
|
-
#end
|
155
234
|
end
|