gumdrop 0.6.3 → 0.6.4
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/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