gumdrop 0.6.3 → 0.6.4
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog.md +6 -0
- data/lib/gumdrop/callbacks.rb +4 -1
- data/lib/gumdrop/content.rb +5 -2
- data/lib/gumdrop/site.rb +46 -17
- data/lib/gumdrop/version.rb +1 -1
- data/lib/gumdrop.rb +5 -0
- metadata +2 -2
data/ChangeLog.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
# v0.6.4
|
2
|
+
- Callbacks are cleared on each `Site#rescan()` to prevent duplicates.
|
3
|
+
- Callback blocks are called with `site` as the parameter.
|
4
|
+
- Added `Gumdrop.change_log`.
|
5
|
+
- Added on_before* event for scan, generate, and render.
|
6
|
+
|
1
7
|
# v0.6.3
|
2
8
|
- Added `generated` flag to Content object
|
3
9
|
- Added `config` to Generator context
|
data/lib/gumdrop/callbacks.rb
CHANGED
@@ -9,12 +9,15 @@ module Gumdrop
|
|
9
9
|
if block
|
10
10
|
@_#{name} = [] if @_#{name}.nil?
|
11
11
|
@_#{name} << block
|
12
|
-
elsif @_#{name}
|
12
|
+
elsif @_#{name} and !@_#{name}.nil?
|
13
13
|
@_#{name}.each do |cb|
|
14
14
|
cb.call(*args)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
18
|
+
def clear_#{name}()
|
19
|
+
@_#{name} = nil
|
20
|
+
end
|
18
21
|
EOF
|
19
22
|
end
|
20
23
|
end
|
data/lib/gumdrop/content.rb
CHANGED
@@ -46,7 +46,6 @@ module Gumdrop
|
|
46
46
|
context.reset_data 'current_depth'=>@level, 'current_slug'=>@slug, 'page'=>self, 'layout'=>default_layout, 'params'=>self.params
|
47
47
|
end
|
48
48
|
context.set_content self, locals
|
49
|
-
@site.report " Rendering: #{@uri}", :warning
|
50
49
|
content= @template.render(context)
|
51
50
|
return content if ignore_layout
|
52
51
|
layout= context.get_template()
|
@@ -59,7 +58,7 @@ module Gumdrop
|
|
59
58
|
|
60
59
|
def renderTo(context, output_path, filters=[], opts={})
|
61
60
|
return copyTo(output_path, opts) unless useLayout?
|
62
|
-
|
61
|
+
@site.report " Rendering: #{@uri}", :warning
|
63
62
|
output= render(context)
|
64
63
|
filters.each {|f| output= f.call(output, self) }
|
65
64
|
File.open output_path, 'w' do |f|
|
@@ -93,6 +92,10 @@ module Gumdrop
|
|
93
92
|
def useLayout?
|
94
93
|
!@template.nil?
|
95
94
|
end
|
95
|
+
|
96
|
+
def ignore?
|
97
|
+
@ignored
|
98
|
+
end
|
96
99
|
|
97
100
|
def to_s
|
98
101
|
@uri
|
data/lib/gumdrop/site.rb
CHANGED
@@ -36,8 +36,11 @@ module Gumdrop
|
|
36
36
|
extend Callbacks
|
37
37
|
|
38
38
|
callbacks :on_start,
|
39
|
+
:on_before_scan,
|
39
40
|
:on_scan,
|
41
|
+
:on_before_generate,
|
40
42
|
:on_generate,
|
43
|
+
:on_before_render,
|
41
44
|
:on_render,
|
42
45
|
:on_end
|
43
46
|
|
@@ -49,7 +52,9 @@ module Gumdrop
|
|
49
52
|
reset_all()
|
50
53
|
end
|
51
54
|
|
52
|
-
def contents(
|
55
|
+
def contents(*args)
|
56
|
+
opts= args.extract_options!
|
57
|
+
pattern= args[0] || nil
|
53
58
|
if pattern.nil?
|
54
59
|
if opts[:as] == :hash
|
55
60
|
@node_tree
|
@@ -71,29 +76,22 @@ module Gumdrop
|
|
71
76
|
end
|
72
77
|
end
|
73
78
|
|
74
|
-
def scan
|
75
|
-
build_tree()
|
76
|
-
on_scan()
|
77
|
-
run_generators()
|
78
|
-
on_generate()
|
79
|
-
@last_run= Time.now
|
80
|
-
self
|
81
|
-
end
|
82
|
-
|
83
79
|
def rescan
|
80
|
+
on_start(self)
|
84
81
|
reset_all()
|
85
82
|
scan()
|
86
83
|
@last_run= Time.now
|
84
|
+
# TODO: should on_before_render and on_render be called for rescan()?
|
85
|
+
on_end(self)
|
87
86
|
self
|
88
87
|
end
|
89
88
|
|
90
89
|
def build
|
91
|
-
on_start()
|
90
|
+
on_start(self)
|
92
91
|
scan()
|
93
92
|
render()
|
94
|
-
on_render()
|
95
93
|
@last_run= Time.now
|
96
|
-
on_end()
|
94
|
+
on_end(self)
|
97
95
|
self
|
98
96
|
end
|
99
97
|
|
@@ -119,6 +117,13 @@ module Gumdrop
|
|
119
117
|
|
120
118
|
private
|
121
119
|
|
120
|
+
def scan
|
121
|
+
build_tree()
|
122
|
+
run_generators()
|
123
|
+
self
|
124
|
+
end
|
125
|
+
|
126
|
+
|
122
127
|
def reset_all
|
123
128
|
@content_filters = []
|
124
129
|
@blacklist = []
|
@@ -132,6 +137,15 @@ module Gumdrop
|
|
132
137
|
|
133
138
|
@config = Gumdrop::Config.new DEFAULT_OPTIONS
|
134
139
|
|
140
|
+
clear_on_start()
|
141
|
+
clear_on_before_scan()
|
142
|
+
clear_on_scan()
|
143
|
+
clear_on_before_generate()
|
144
|
+
clear_on_generate()
|
145
|
+
clear_on_before_render()
|
146
|
+
clear_on_render()
|
147
|
+
clear_on_end()
|
148
|
+
|
135
149
|
load_sitefile()
|
136
150
|
|
137
151
|
@data_path = get_expanded_path(@config.data_dir)
|
@@ -148,6 +162,7 @@ module Gumdrop
|
|
148
162
|
@log = Logger.new @config.log, 'daily'
|
149
163
|
rescue
|
150
164
|
@log = Logger.new STDOUT
|
165
|
+
report "Using STDOUT for logging because of exception: #{ $! }"
|
151
166
|
end
|
152
167
|
@log.formatter = proc do |severity, datetime, progname, msg|
|
153
168
|
"#{datetime}: #{msg}\n"
|
@@ -164,13 +179,14 @@ module Gumdrop
|
|
164
179
|
|
165
180
|
def load_sitefile
|
166
181
|
source= File.read( @sitefile )
|
167
|
-
dsl =
|
182
|
+
dsl = Sitefile.new self
|
168
183
|
dsl.instance_eval source
|
169
184
|
dsl
|
170
185
|
end
|
171
186
|
|
172
187
|
def build_tree
|
173
188
|
report "[Scanning from #{src_path}]", :info
|
189
|
+
on_before_scan(self)
|
174
190
|
# Report blacklists and greylists
|
175
191
|
blacklist.each do |path|
|
176
192
|
report " blacklist: #{path}", :info
|
@@ -178,7 +194,6 @@ module Gumdrop
|
|
178
194
|
greylist.each do |path|
|
179
195
|
report " greylist: #{path}", :info
|
180
196
|
end
|
181
|
-
|
182
197
|
# Scan Filesystem
|
183
198
|
Dir.glob("#{src_path}/**/*", File::FNM_DOTMATCH).each do |path|
|
184
199
|
unless File.directory? path or @config.ignore.include?( File.basename(path) )
|
@@ -209,21 +224,25 @@ module Gumdrop
|
|
209
224
|
end
|
210
225
|
end
|
211
226
|
end
|
227
|
+
on_scan(self)
|
212
228
|
end
|
213
229
|
|
214
230
|
def run_generators
|
215
231
|
report "[Executing Generators]", :info
|
232
|
+
on_before_generate(self)
|
216
233
|
generators.each_pair do |path, generator|
|
217
234
|
generator.execute()
|
218
235
|
end
|
236
|
+
on_generate(self)
|
219
237
|
end
|
220
238
|
|
221
239
|
def render
|
222
240
|
unless opts[:dry_run]
|
223
241
|
report "[Compiling to #{@out_path}]", :info
|
242
|
+
on_before_render(self)
|
224
243
|
@node_tree.keys.sort.each do |path|
|
225
244
|
node= @node_tree[path]
|
226
|
-
unless node.
|
245
|
+
unless node.ignore?
|
227
246
|
output_path= File.join(@out_path, node.to_s)
|
228
247
|
FileUtils.mkdir_p File.dirname(output_path)
|
229
248
|
node.renderTo render_context, output_path, content_filters
|
@@ -231,6 +250,7 @@ module Gumdrop
|
|
231
250
|
report " -ignoring: #{node.to_s}", :info
|
232
251
|
end
|
233
252
|
end
|
253
|
+
on_render(self)
|
234
254
|
end
|
235
255
|
end
|
236
256
|
|
@@ -240,7 +260,7 @@ module Gumdrop
|
|
240
260
|
end
|
241
261
|
end
|
242
262
|
|
243
|
-
class
|
263
|
+
class Sitefile
|
244
264
|
|
245
265
|
def initialize(site)
|
246
266
|
@site= site
|
@@ -282,12 +302,21 @@ module Gumdrop
|
|
282
302
|
def on_start(&block)
|
283
303
|
@site.on_start &block
|
284
304
|
end
|
305
|
+
def on_before_scan(&block)
|
306
|
+
@site.on_before_scan &block
|
307
|
+
end
|
285
308
|
def on_scan(&block)
|
286
309
|
@site.on_scan &block
|
287
310
|
end
|
311
|
+
def on_before_generate(&block)
|
312
|
+
@site.on_before_generate &block
|
313
|
+
end
|
288
314
|
def on_generate(&block)
|
289
315
|
@site.on_generate &block
|
290
316
|
end
|
317
|
+
def on_before_render(&block)
|
318
|
+
@site.on_before_render &block
|
319
|
+
end
|
291
320
|
def on_render(&block)
|
292
321
|
@site.on_render &block
|
293
322
|
end
|
data/lib/gumdrop/version.rb
CHANGED
data/lib/gumdrop.rb
CHANGED