nanoc3 3.1.0a2 → 3.1.0a3

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.
Files changed (46) hide show
  1. data/LICENSE +1 -1
  2. data/NEWS.md +12 -2
  3. data/README.md +2 -0
  4. data/lib/nanoc3/base/code_snippet.rb +6 -2
  5. data/lib/nanoc3/base/compiler.rb +9 -6
  6. data/lib/nanoc3/base/compiler_dsl.rb +15 -9
  7. data/lib/nanoc3/base/data_source.rb +14 -14
  8. data/lib/nanoc3/base/dependency_tracker.rb +9 -9
  9. data/lib/nanoc3/base/directed_graph.rb +6 -7
  10. data/lib/nanoc3/base/errors.rb +48 -13
  11. data/lib/nanoc3/base/filter.rb +62 -16
  12. data/lib/nanoc3/base/item.rb +63 -20
  13. data/lib/nanoc3/base/item_rep.rb +117 -48
  14. data/lib/nanoc3/base/layout.rb +18 -5
  15. data/lib/nanoc3/base/notification_center.rb +8 -8
  16. data/lib/nanoc3/base/plugin_registry.rb +9 -9
  17. data/lib/nanoc3/base/rule.rb +8 -8
  18. data/lib/nanoc3/base/rule_context.rb +5 -5
  19. data/lib/nanoc3/base/site.rb +33 -29
  20. data/lib/nanoc3/cli/base.rb +1 -1
  21. data/lib/nanoc3/cli/commands/create_site.rb +12 -14
  22. data/lib/nanoc3/cli.rb +0 -1
  23. data/lib/nanoc3/data_sources/filesystem.rb +12 -2
  24. data/lib/nanoc3/data_sources/filesystem_unified.rb +22 -19
  25. data/lib/nanoc3/extra/auto_compiler.rb +12 -3
  26. data/lib/nanoc3/extra/chick.rb +12 -6
  27. data/lib/nanoc3/extra/deployers/rsync.rb +30 -27
  28. data/lib/nanoc3/extra/deployers.rb +0 -1
  29. data/lib/nanoc3/extra/file_proxy.rb +2 -15
  30. data/lib/nanoc3/extra/validators/links.rb +242 -0
  31. data/lib/nanoc3/extra/validators/w3c.rb +49 -25
  32. data/lib/nanoc3/extra/validators.rb +2 -2
  33. data/lib/nanoc3/extra/vcs.rb +1 -1
  34. data/lib/nanoc3/extra.rb +4 -1
  35. data/lib/nanoc3/helpers/blogging.rb +57 -29
  36. data/lib/nanoc3/helpers/breadcrumbs.rb +1 -1
  37. data/lib/nanoc3/helpers/capturing.rb +4 -2
  38. data/lib/nanoc3/helpers/filtering.rb +2 -1
  39. data/lib/nanoc3/helpers/link_to.rb +13 -6
  40. data/lib/nanoc3/helpers/rendering.rb +4 -3
  41. data/lib/nanoc3/helpers/tagging.rb +7 -6
  42. data/lib/nanoc3/helpers/text.rb +2 -2
  43. data/lib/nanoc3/tasks/validate.rake +62 -5
  44. data/lib/nanoc3.rb +2 -2
  45. metadata +23 -11
  46. data/lib/nanoc3/base/core_ext/enumerable.rb +0 -41
@@ -22,33 +22,71 @@ module Nanoc3
22
22
  # @return [Array<Nanoc3::ItemRep>] This item’s list of item reps
23
23
  attr_reader :reps
24
24
 
25
- # @return [String] This item's raw, uncompiled content
25
+ # @return [String] This item's raw, uncompiled content of this item (only
26
+ # available for textual items)
26
27
  attr_reader :raw_content
27
28
 
29
+ # @return [String] The filename pointing to the file containing this
30
+ # item’s content (only available for binary items)
31
+ attr_reader :raw_filename
32
+
28
33
  # @return [Nanoc3::Item, nil] The parent item of this item. This can be
29
- # nil even for non-root items.
34
+ # nil even for non-root items.
30
35
  attr_accessor :parent
31
36
 
32
37
  # @return [Array<Nanoc3::Item>] The child items of this item
33
38
  attr_accessor :children
34
39
 
35
40
  # @return [Boolean] Whether or not this item is outdated because of its
36
- # dependencies are outdated
41
+ # dependencies are outdated
37
42
  attr_accessor :outdated_due_to_dependencies
38
43
  alias_method :outdated_due_to_dependencies?, :outdated_due_to_dependencies
39
44
 
40
- # @param [String] raw_content The uncompiled item content.
45
+ # Creates a new item with the given content or filename, attributes and
46
+ # identifier.
47
+ #
48
+ # Note that the API in 3.1 has changed a bit since 3.0; the API remains
49
+ # backwards compatible, however. Passing the modification time as the 4th
50
+ # parameter is deprecated; pass it as the `:mtime` method option instead.
51
+ #
52
+ # @param [String] raw_content_or_raw_filename The uncompiled item content
53
+ # (if it is a textual item) or the path to the filename containing the
54
+ # content (if it is a binary item).
41
55
  #
42
56
  # @param [Hash] attributes A hash containing this item's attributes.
43
57
  #
44
58
  # @param [String] identifier This item's identifier.
45
59
  #
46
- # @param [String, nil] mtime The time when this item was last modified.
47
- def initialize(raw_content, attributes, identifier, mtime=nil)
48
- @raw_content = raw_content
60
+ # @param [Time, Hash, nil] params_or_mtime Extra parameters for the item,
61
+ # or the time when this item was last modified (deprecated).
62
+ #
63
+ # @option params_or_mtime [Time, nil] :mtime (nil) The time when this item
64
+ # was last modified
65
+ #
66
+ # @option params_or_mtime [Symbol, nil] :binary (true) Whether or not this
67
+ # item is binary
68
+ def initialize(raw_content_or_raw_filename, attributes, identifier, params_or_mtime=nil)
69
+ # Get params and mtime
70
+ # TODO [in nanoc 4.0] clean this up
71
+ if params_or_mtime.nil? || params_or_mtime.is_a?(Time)
72
+ params = {}
73
+ @mtime = params_or_mtime
74
+ elsif params_or_mtime.is_a?(Hash)
75
+ params = params_or_mtime
76
+ @mtime = params[:mtime]
77
+ end
78
+
79
+ # Get type and raw content or raw filename
80
+ @is_binary = params.has_key?(:binary) ? params[:binary] : true
81
+ if @is_binary
82
+ @raw_filename = raw_content_or_raw_filename
83
+ else
84
+ @raw_content = raw_content_or_raw_filename
85
+ end
86
+
87
+ # Get rest of params
49
88
  @attributes = attributes.symbolize_keys
50
89
  @identifier = identifier.cleaned_identifier
51
- @mtime = mtime
52
90
 
53
91
  @parent = nil
54
92
  @children = []
@@ -61,7 +99,7 @@ module Nanoc3
61
99
  # @param [Symbol] rep_name The name of the representation to return
62
100
  #
63
101
  # @return [Nanoc3::ItemRep] The representation with the given name
64
- def rep(rep_name)
102
+ def rep_named(rep_name)
65
103
  @reps.find { |r| r.name == rep_name }
66
104
  end
67
105
 
@@ -70,17 +108,17 @@ module Nanoc3
70
108
  # content easier.
71
109
  #
72
110
  # @option params [String] :rep (:default) The name of the representation
73
- # from which the compiled content should be fetched. By default, the
74
- # compiled content will be fetched from the default representation.
111
+ # from which the compiled content should be fetched. By default, the
112
+ # compiled content will be fetched from the default representation.
75
113
  #
76
114
  # @option params [String] :snapshot (:last) The name of the snapshot from
77
- # which to fetch the compiled content. By default, the fully compiled
78
- # content will be fetched, with all filters and layouts applied--not the
79
- # pre-layout content.
115
+ # which to fetch the compiled content. By default, the fully compiled
116
+ # content will be fetched, with all filters and layouts applied--not the
117
+ # pre-layout content.
80
118
  #
81
119
  # @return [String] The compiled content of the given rep (or the default
82
- # rep if no rep is specified) at the given snapshot (or the default
83
- # snapshot if no snapshot is specified)
120
+ # rep if no rep is specified) at the given snapshot (or the default
121
+ # snapshot if no snapshot is specified)
84
122
  def compiled_content(params={})
85
123
  # Get rep
86
124
  rep_name = params[:rep] || :default
@@ -98,11 +136,11 @@ module Nanoc3
98
136
  # method that makes fetching the path of a rep easier.
99
137
  #
100
138
  # @option params [String] :rep (:default) The name of the representation
101
- # from which the path should be fetched. By default, the path will be
102
- # fetched from the default representation.
139
+ # from which the path should be fetched. By default, the path will be
140
+ # fetched from the default representation.
103
141
  #
104
142
  # @return [String] The path of the given rep ( or the default rep if no
105
- # rep is specified)
143
+ # rep is specified)
106
144
  def path(params={})
107
145
  rep_name = params[:rep] || :default
108
146
 
@@ -138,6 +176,11 @@ module Nanoc3
138
176
  @attributes[key] = value
139
177
  end
140
178
 
179
+ # @return [Boolean] True if the item is binary; false if it is not
180
+ def binary?
181
+ !!@is_binary
182
+ end
183
+
141
184
  # Determines whether this item (or rather, its reps) is outdated and
142
185
  # should be recompiled (or rather, its reps should be recompiled).
143
186
  #
@@ -147,7 +190,7 @@ module Nanoc3
147
190
  end
148
191
 
149
192
  def inspect
150
- "<#{self.class}:0x#{self.object_id.to_s(16)} identifier=#{self.identifier}>"
193
+ "<#{self.class}:0x#{self.object_id.to_s(16)} identifier=#{self.identifier} binary?=#{self.binary?}>"
151
194
  end
152
195
 
153
196
  end
@@ -27,46 +27,45 @@ module Nanoc3
27
27
  attr_reader :name
28
28
 
29
29
  # @return [Boolean] true if this rep is forced to be dirty (e.g. because
30
- # of the `--force` commandline option); false otherwise
30
+ # of the `--force` commandline option); false otherwise
31
31
  attr_accessor :force_outdated
32
32
 
33
33
  # @return [Boolean] true if this rep’s output file has changed since the
34
- # last time it was compiled; false otherwise
34
+ # last time it was compiled; false otherwise
35
35
  attr_accessor :modified
36
36
  alias_method :modified?, :modified
37
37
 
38
38
  # @return [Boolean] true if this rep’s output file was created during the
39
- # current or last compilation session; false otherwise
39
+ # current or last compilation session; false otherwise
40
40
  attr_accessor :created
41
41
  alias_method :created?, :created
42
42
 
43
- # @return [Boolean] true if this representation has already been
44
- # compiled during the current or last compilation session; false
45
- # otherwise
43
+ # @return [Boolean] true if this representation has already been compiled
44
+ # during the current or last compilation session; false otherwise
46
45
  attr_accessor :compiled
47
46
  alias_method :compiled?, :compiled
48
47
 
49
48
  # @return [Boolean] true if this representation’s compiled content has
50
- # been written during the current or last compilation session; false
51
- # otherwise
49
+ # been written during the current or last compilation session; false
50
+ # otherwise
52
51
  attr_reader :written
53
52
  alias_method :written?, :written
54
53
 
55
54
  # @return [String] The item rep's path, as used when being linked to. It
56
- # starts with a slash and it is relative to the output directory. It
57
- # does not include the path to the output directory. It will not include
58
- # the filename if the filename is an index filename.
55
+ # starts with a slash and it is relative to the output directory. It does
56
+ # not include the path to the output directory. It will not include the
57
+ # filename if the filename is an index filename.
59
58
  attr_accessor :path
60
59
 
61
60
  # @return [String] The item rep's raw path. It is relative to the current
62
- # working directory and includes the path to the output directory. It
63
- # also includes the filename, even if it is an index filename.
61
+ # working directory and includes the path to the output directory. It also
62
+ # includes the filename, even if it is an index filename.
64
63
  attr_accessor :raw_path
65
64
 
66
65
  # Creates a new item representation for the given item.
67
66
  #
68
67
  # @param [Nanoc3::Item] item The item to which the new representation will
69
- # belong.
68
+ # belong.
70
69
  #
71
70
  # @param [Symbol] name The unique name for the new item representation.
72
71
  def initialize(item, name)
@@ -74,12 +73,19 @@ module Nanoc3
74
73
  @item = item
75
74
  @name = name
76
75
 
77
- # Initialize content
78
- @content = {
79
- :raw => @item.raw_content,
80
- :last => @item.raw_content,
81
- :pre => @item.raw_content
82
- }
76
+ # Initialize content and filenames
77
+ if @item.binary?
78
+ @filenames = {
79
+ :raw => @item.raw_filename,
80
+ :last => @item.raw_filename
81
+ }
82
+ else
83
+ @content = {
84
+ :raw => @item.raw_content,
85
+ :last => @item.raw_content,
86
+ :pre => @item.raw_content
87
+ }
88
+ end
83
89
  @old_content = nil
84
90
 
85
91
  # Reset flags
@@ -91,7 +97,7 @@ module Nanoc3
91
97
  end
92
98
 
93
99
  # @return [Boolean] true if this item rep's output file is outdated and
94
- # must be regenerated, false otherwise
100
+ # must be regenerated, false otherwise
95
101
  def outdated?
96
102
  # Outdated if we don't know
97
103
  return true if @item.mtime.nil?
@@ -131,26 +137,40 @@ module Nanoc3
131
137
  end
132
138
 
133
139
  # @return [Hash] The assignments that should be available when compiling
134
- # the content.
140
+ # the content.
135
141
  def assigns
136
- {
137
- :content => @content[:last],
142
+ if item.binary?
143
+ content_or_filename_assigns = { :filename => @filenames[:last] }
144
+ else
145
+ content_or_filename_assigns = { :content => @content[:last] }
146
+ end
147
+
148
+ content_or_filename_assigns.merge({
138
149
  :item => self.item,
139
150
  :item_rep => self,
140
151
  :items => self.item.site.items,
141
152
  :layouts => self.item.site.layouts,
142
153
  :config => self.item.site.config,
143
154
  :site => self.item.site
144
- }
155
+ })
145
156
  end
146
157
 
147
158
  # Returns the compiled content from a given snapshot.
148
159
  #
149
- # @option params [String] :snapshot The name of the snapshot from
150
- # which to fetch the compiled content. By default, the returned compiled
151
- # content will be the content compiled right before the first layout
152
- # call (if any).
160
+ # @option params [String] :snapshot The name of the snapshot from which to
161
+ # fetch the compiled content. By default, the returned compiled content
162
+ # will be the content compiled right before the first layout call (if
163
+ # any).
164
+ #
165
+ # @return [String] The compiled content at the given snapshot (or the
166
+ # default snapshot if no snapshot is specified)
153
167
  def compiled_content(params={})
168
+ # Check whether content can be fetched
169
+ # TODO get proper exception
170
+ if @item.binary?
171
+ raise RuntimeError, "attempted to fetch compiled content from a binary item"
172
+ end
173
+
154
174
  # Notify
155
175
  Nanoc3::NotificationCenter.post(:visit_started, self.item)
156
176
  Nanoc3::NotificationCenter.post(:visit_ended, self.item)
@@ -186,10 +206,10 @@ module Nanoc3
186
206
  # (see {Nanoc3::CompilerDSL#compile}).
187
207
  #
188
208
  # @param [Symbol] filter_name The name of the filter to run the item
189
- # representations' content through
209
+ # representations' content through
190
210
  #
191
211
  # @param [Hash] filter_args The filter arguments that should be passed to
192
- # the filter's #run method
212
+ # the filter's #run method
193
213
  #
194
214
  # @return [void]
195
215
  def filter(filter_name, filter_args={})
@@ -198,13 +218,25 @@ module Nanoc3
198
218
  raise Nanoc3::Errors::UnknownFilter.new(filter_name) if klass.nil?
199
219
  filter = klass.new(assigns)
200
220
 
221
+ # Check whether filter can be applied
222
+ if klass.binary? && !item.binary?
223
+ raise Nanoc3::Errors::CannotUseBinaryFilter.new(self, klass)
224
+ elsif !klass.binary? && item.binary?
225
+ raise Nanoc3::Errors::CannotUseTextualFilter.new(self, klass)
226
+ end
227
+
201
228
  # Run filter
202
229
  Nanoc3::NotificationCenter.post(:filtering_started, self, filter_name)
203
- @content[:last] = filter.run(@content[:last], filter_args)
230
+ if item.binary?
231
+ filter.run(@filenames[:last], filter_args)
232
+ @filenames[:last] = filter.output_filename
233
+ else
234
+ @content[:last] = filter.run(@content[:last], filter_args)
235
+ end
204
236
  Nanoc3::NotificationCenter.post(:filtering_ended, self, filter_name)
205
237
 
206
238
  # Create snapshot
207
- snapshot(@content[:post] ? :post : :pre)
239
+ snapshot(@content[:post] ? :post : :pre) unless item.binary?
208
240
  end
209
241
 
210
242
  # Lays out the item using the given layout. This method will replace the
@@ -214,11 +246,14 @@ module Nanoc3
214
246
  # This method is supposed to be called only in a compilation rule block
215
247
  # (see {Nanoc3::CompilerDSL#compile}).
216
248
  #
217
- # @param [String] layout_identifier The identifier of the layout the ite
218
- # should be laid out with
249
+ # @param [String] layout_identifier The identifier of the layout the item
250
+ # should be laid out with
219
251
  #
220
252
  # @return [void]
221
253
  def layout(layout_identifier)
254
+ # Check whether item can be laid out
255
+ raise Nanoc3::Errors::CannotLayoutBinaryItem.new(self) if item.binary?
256
+
222
257
  # Create "pre" snapshot
223
258
  snapshot(:pre) unless @content[:pre]
224
259
 
@@ -243,7 +278,8 @@ module Nanoc3
243
278
  #
244
279
  # @return [void]
245
280
  def snapshot(snapshot_name)
246
- @content[snapshot_name] = @content[:last]
281
+ target = @item.binary? ? @filenames : @content
282
+ target[snapshot_name] = target[:last]
247
283
  end
248
284
 
249
285
  # Writes the item rep's compiled content to the rep's output file.
@@ -259,17 +295,34 @@ module Nanoc3
259
295
  # Check if file will be created
260
296
  @created = !File.file?(self.raw_path)
261
297
 
262
- # Remember old content
263
- if File.file?(self.raw_path)
264
- @old_content = File.read(self.raw_path)
265
- end
298
+ if @item.binary?
299
+ # Calculate hash of old content
300
+ if File.file?(self.raw_path)
301
+ hash_old = hash(self.raw_path)
302
+ size_old = File.size(self.raw_path)
303
+ end
304
+
305
+ # Copy
306
+ FileUtils.cp(@filenames[:last], self.raw_path)
307
+ @written = true
308
+
309
+ # Check if file was modified
310
+ size_new = File.size(self.raw_path)
311
+ hash_new = hash(self.raw_path) if size_old == size_new
312
+ @modified = (size_old != size_new || hash_old != hash_new)
313
+ else
314
+ # Remember old content
315
+ if File.file?(self.raw_path)
316
+ @old_content = File.read(self.raw_path)
317
+ end
266
318
 
267
- # Write
268
- File.open(self.raw_path, 'w') { |io| io.write(@content[:last]) }
269
- @written = true
319
+ # Write
320
+ File.open(self.raw_path, 'w') { |io| io.write(@content[:last]) }
321
+ @written = true
270
322
 
271
- # Check if file was modified
272
- @modified = File.read(self.raw_path) != @old_content
323
+ # Check if file was modified
324
+ @modified = File.read(self.raw_path) != @old_content
325
+ end
273
326
  end
274
327
 
275
328
  # Creates and returns a diff between the compiled content before the
@@ -277,9 +330,13 @@ module Nanoc3
277
330
  # compilation session.
278
331
  #
279
332
  # @return [String, nil] The difference between the old and new compiled
280
- # content in `diff(1)` format, or nil if there is no previous compiled
281
- # content
333
+ # content in `diff(1)` format, or nil if there is no previous compiled
334
+ # content
282
335
  def diff
336
+ # Check if content can be diffed
337
+ # TODO allow binary diffs
338
+ return nil if @item.binary?
339
+
283
340
  # Check if old content exists
284
341
  if @old_content.nil? or self.raw_path.nil?
285
342
  nil
@@ -289,7 +346,7 @@ module Nanoc3
289
346
  end
290
347
 
291
348
  def inspect
292
- "<#{self.class}:0x#{self.object_id.to_s(16)} name=#{self.name} item.identifier=#{self.item.identifier}>"
349
+ "<#{self.class}:0x#{self.object_id.to_s(16)} name=#{self.name} item.identifier=#{self.item.identifier} item.binary?=#{@item.binary?}>"
293
350
  end
294
351
 
295
352
  private
@@ -342,6 +399,18 @@ module Nanoc3
342
399
  nil
343
400
  end
344
401
 
402
+ # Returns a hash of the given filename
403
+ def hash(filename)
404
+ digest = Digest::SHA1.new
405
+ File.open(filename, 'r') do |io|
406
+ until io.eof
407
+ data = io.readpartial(2**10)
408
+ digest.update(data)
409
+ end
410
+ end
411
+ digest.hexdigest
412
+ end
413
+
345
414
  end
346
415
 
347
416
  end
@@ -16,7 +16,7 @@ module Nanoc3
16
16
  attr_reader :attributes
17
17
 
18
18
  # @return [String] This layout's identifier, starting and ending with a
19
- # slash
19
+ # slash
20
20
  attr_accessor :identifier
21
21
 
22
22
  # @return [Time] The time when this layout was last modified
@@ -24,18 +24,31 @@ module Nanoc3
24
24
 
25
25
  # Creates a new layout.
26
26
  #
27
- # @param [String] content The raw content of this layout.
27
+ # @param [String] raw_content The raw content of this layout.
28
28
  #
29
29
  # @param [Hash] attributes A hash containing this layout's attributes.
30
30
  #
31
31
  # @param [String] identifier This layout's identifier.
32
32
  #
33
- # @param [Time, nil] mtime The time when this layout was last modified.
34
- def initialize(raw_content, attributes, identifier, mtime=nil)
33
+ # @param [Time, Hash, nil] params_or_mtime Extra parameters for the
34
+ # layout, or the time when this layout was last modified (deprecated).
35
+ #
36
+ # @option params_or_mtime [Time, nil] :mtime (nil) The time when this
37
+ # layout was last modified
38
+ def initialize(raw_content, attributes, identifier, params_or_mtime=nil)
39
+ # Get params and mtime
40
+ # TODO [in nanoc 4.0] clean this up
41
+ if params_or_mtime.nil? || params_or_mtime.is_a?(Time)
42
+ params = {}
43
+ @mtime = params_or_mtime
44
+ elsif params_or_mtime.is_a?(Hash)
45
+ params = params_or_mtime
46
+ @mtime = params[:mtime]
47
+ end
48
+
35
49
  @raw_content = raw_content
36
50
  @attributes = attributes.symbolize_keys
37
51
  @identifier = identifier.cleaned_identifier
38
- @mtime = mtime
39
52
  end
40
53
 
41
54
  # Requests the attribute with the given key.
@@ -17,12 +17,12 @@ module Nanoc3
17
17
  # the notification with the given name is received.
18
18
  #
19
19
  # @param [String, Symbol] name The name of the notification that will
20
- # cause the given block to be called.
20
+ # cause the given block to be called.
21
21
  #
22
22
  # @param [String, Symbol, nil] id An identifier for the block. This is
23
- # only used to be able to remove the block (using the remove method)
24
- # later. Can be nil, but this is not recommended because it prevents
25
- # the given notification block from being unregistered.
23
+ # only used to be able to remove the block (using the remove method)
24
+ # later. Can be nil, but this is not recommended because it prevents
25
+ # the given notification block from being unregistered.
26
26
  #
27
27
  # @yield [*args] Will be executed with the arguments passed to {.post}
28
28
  #
@@ -37,10 +37,10 @@ module Nanoc3
37
37
  # Posts a notification with the given name and the given arguments.
38
38
  #
39
39
  # @param [String, Symbol] name The name of the notification that should
40
- # be posted.
40
+ # be posted.
41
41
  #
42
42
  # @param args Arguments that wil be passed to the blocks handling the
43
- # notification.
43
+ # notification.
44
44
  #
45
45
  # @return [void]
46
46
  def post(name, *args)
@@ -57,10 +57,10 @@ module Nanoc3
57
57
  # posted.
58
58
  #
59
59
  # @param [String, Symbol] name The name of the notification that should
60
- # no longer be registered.
60
+ # no longer be registered.
61
61
  #
62
62
  # @param [String, Symbol] id The identifier of the block that should be
63
- # removed.
63
+ # removed.
64
64
  #
65
65
  # @return [void]
66
66
  def remove(name, id)
@@ -15,7 +15,7 @@ module Nanoc3
15
15
  # Sets the identifiers for this plugin.
16
16
  #
17
17
  # @param [Array<Symbol>] identifier A list of identifiers to assign to
18
- # this plugin.
18
+ # this plugin.
19
19
  #
20
20
  # @return [void]
21
21
  def identifiers(*identifiers)
@@ -34,10 +34,10 @@ module Nanoc3
34
34
  # Registers the given class as a plugin with the given identifier.
35
35
  #
36
36
  # @param [Class, String] class_or_name The class to register, or a
37
- # string containing the class name to register.
37
+ # string containing the class name to register.
38
38
  #
39
39
  # @param [Array<Symbol>] identifiers A list of identifiers to assign to
40
- # this plugin.
40
+ # this plugin.
41
41
  #
42
42
  # @return [void]
43
43
  def register(class_or_name, *identifiers)
@@ -79,15 +79,15 @@ module Nanoc3
79
79
  # Registers the given class as a plugin.
80
80
  #
81
81
  # @param [Class] superclass The superclass of the plugin. For example:
82
- # {Nanoc3::Filter}, {Nanoc3::Extra::VCS}.
82
+ # {Nanoc3::Filter}, {Nanoc3::Extra::VCS}.
83
83
  #
84
84
  # @param [Class, String] class_or_name The class to register. This can be
85
- # a string, in which case it will be automatically converted to a proper
86
- # class at lookup. For example: `Nanoc3::Filters::ERB`,
87
- # `"Nanoc3::Filters::Haml"`.
85
+ # a string, in which case it will be automatically converted to a proper
86
+ # class at lookup. For example: `Nanoc3::Filters::ERB`,
87
+ # `"Nanoc3::Filters::Haml"`.
88
88
  #
89
89
  # @param [Symbol] identifiers One or more symbols identifying the class.
90
- # For example: `:haml`, :`erb`.
90
+ # For example: `:haml`, :`erb`.
91
91
  #
92
92
  # @return [void]
93
93
  def register(superclass, class_or_name, *identifiers)
@@ -122,7 +122,7 @@ module Nanoc3
122
122
  # Returns a list of all plugins. The returned list of plugins is an array
123
123
  # with array elements in the following format:
124
124
  #
125
- # { :class => ..., :superclass => ..., :identifiers => ... }
125
+ # { :class => ..., :superclass => ..., :identifiers => ... }
126
126
  #
127
127
  # @return [Array<Hash>] A list of all plugins in the format described
128
128
  def all
@@ -6,12 +6,12 @@ module Nanoc3
6
6
  class Rule
7
7
 
8
8
  # @return [Regexp] The regex that determines which items this rule can be
9
- # applied to. This rule can be applied to items with a identifier
10
- # matching this regex.
9
+ # applied to. This rule can be applied to items with a identifier matching
10
+ # this regex.
11
11
  attr_reader :identifier_regex
12
12
 
13
13
  # @return [Symbol] The name of the representation that will be compiled
14
- # using this rule
14
+ # using this rule
15
15
  attr_reader :rep_name
16
16
 
17
17
  # Creates a new item compilation rule with the given identifier regex,
@@ -19,13 +19,13 @@ module Nanoc3
19
19
  # item rep as its argument.
20
20
  #
21
21
  # @param [Regexp] identifier_regex A regular expression that will be used
22
- # to determine whether this rule is applicable to certain items.
22
+ # to determine whether this rule is applicable to certain items.
23
23
  #
24
24
  # @param [String, Symbol] rep_name The name of the item representation
25
- # where this rule can be applied to
25
+ # where this rule can be applied to
26
26
  #
27
27
  # @param [Proc] block A block that will be called when matching items are
28
- # compiled
28
+ # compiled
29
29
  def initialize(identifier_regex, rep_name, block)
30
30
  @identifier_regex = identifier_regex
31
31
  @rep_name = rep_name.to_sym
@@ -36,7 +36,7 @@ module Nanoc3
36
36
  # @param [Nanoc3::Item] item The item to check
37
37
  #
38
38
  # @return [Boolean] true if this rule can be applied to the given item
39
- # rep, false otherwise
39
+ # rep, false otherwise
40
40
  def applicable_to?(item)
41
41
  item.identifier =~ @identifier_regex
42
42
  end
@@ -44,7 +44,7 @@ module Nanoc3
44
44
  # Applies this rule to the given item rep.
45
45
  #
46
46
  # @param [Nanoc3::ItemRep] rep The item representation where this rule
47
- # should be applied to
47
+ # should be applied to
48
48
  #
49
49
  # @return [void]
50
50
  def apply_to(rep)
@@ -17,7 +17,7 @@ module Nanoc3
17
17
  # Creates a new rule context for the given iterm representation.
18
18
  #
19
19
  # @param [Nanoc3::ItemRep] rep The item representation for which to create
20
- # a new rule context.
20
+ # a new rule context.
21
21
  def initialize(rep)
22
22
  item = rep.item
23
23
  site = item.site
@@ -41,10 +41,10 @@ module Nanoc3
41
41
  # @see Nanoc3::ItemRep#filter
42
42
  #
43
43
  # @param [Symbol] filter_name The name of the filter to run the item
44
- # representations' content through
44
+ # representations' content through
45
45
  #
46
46
  # @param [Hash] filter_args The filter arguments that should be passed to
47
- # the filter's #run method
47
+ # the filter's #run method
48
48
  #
49
49
  # @return [void]
50
50
  def filter(filter_name, filter_args={})
@@ -56,8 +56,8 @@ module Nanoc3
56
56
  #
57
57
  # @see Nanoc3::ItemRep#layout
58
58
  #
59
- # @param [String] layout_identifier The identifier of the layout the ite
60
- # should be laid out with
59
+ # @param [String] layout_identifier The identifier of the layout the item
60
+ # should be laid out with
61
61
  #
62
62
  # @return [void]
63
63
  def layout(layout_identifier)