Class: Nanoc3::CompilerDSL
- Inherits:
-
Object
- Object
- Nanoc3::CompilerDSL
- Defined in:
- lib/nanoc3/base/compilation/compiler_dsl.rb
Overview
Contains methods that will be executed by the site’s ‘Rules` file.
Instance Method Summary collapse
-
#compile(identifier, params = {}) { ... } ⇒ void
Creates a compilation rule for all items whose identifier match the given identifier, which may either be a string containing the * wildcard, or a regular expression.
-
#initialize(rules_collection, config) ⇒ CompilerDSL
constructor
private
Creates a new compiler DSL for the given collection of rules.
-
#layout(identifier, filter_name, params = {}) ⇒ void
Creates a layout rule for all layouts whose identifier match the given identifier, which may either be a string containing the * wildcard, or a regular expression.
-
#passthrough(identifier, params = {}) ⇒ void
Creates a pair of compilation and routing rules that indicate that the specified item(s) should be copied to the output folder as-is.
-
#preprocess { ... } ⇒ void
Creates a preprocessor block that will be executed after all data is loaded, but before the site is compiled.
-
#route(identifier, params = {}) { ... } ⇒ void
Creates a routing rule for all items whose identifier match the given identifier, which may either be a string containing the ‘*` wildcard, or a regular expression.
Constructor Details
#initialize(rules_collection, config) ⇒ CompilerDSL
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Creates a new compiler DSL for the given collection of rules.
16 17 18 19 |
# File 'lib/nanoc3/base/compilation/compiler_dsl.rb', line 16 def initialize(rules_collection, config) @rules_collection = rules_collection @config = config end |
Instance Method Details
#compile(identifier, params = {}) { ... } ⇒ void
This method returns an undefined value.
Creates a compilation rule for all items whose identifier match the given identifier, which may either be a string containing the * wildcard, or a regular expression.
This rule will be applicable to reps with a name equal to ‘:default`; this can be changed by giving an explicit `:rep` parameter.
An item rep will be compiled by calling the given block and passing the rep as a block argument.
63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/nanoc3/base/compilation/compiler_dsl.rb', line 63 def compile(identifier, params={}, &block) # Require block raise ArgumentError.new("#compile requires a block") unless block_given? # Get rep name rep_name = params[:rep] || :default # Create rule rule = Rule.new(identifier_to_regex(identifier), rep_name, block) @rules_collection.add_item_compilation_rule(rule) end |
#layout(identifier, filter_name, params = {}) ⇒ void
This method returns an undefined value.
Creates a layout rule for all layouts whose identifier match the given identifier, which may either be a string containing the * wildcard, or a regular expression. The layouts matching the identifier will be filtered using the filter specified in the second argument. The params hash contains filter arguments that will be passed to the filter.
144 145 146 |
# File 'lib/nanoc3/base/compilation/compiler_dsl.rb', line 144 def layout(identifier, filter_name, params={}) @rules_collection.layout_filter_mapping[identifier_to_regex(identifier)] = [ filter_name, params ] end |
#passthrough(identifier, params = {}) ⇒ void
This method returns an undefined value.
Creates a pair of compilation and routing rules that indicate that the specified item(s) should be copied to the output folder as-is. The items are selected using an identifier, which may either be a string containing the ‘*` wildcard, or a regular expression.
This meta-rule will be applicable to reps with a name equal to ‘:default`; this can be changed by giving an explicit `:rep` parameter.
173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/nanoc3/base/compilation/compiler_dsl.rb', line 173 def passthrough(identifier, params={}) # Require no block raise ArgumentError.new("#passthrough does not require a block") if block_given? # Get rep name rep_name = params[:rep] || :default # Create compilation rule compilation_block = proc { } compilation_rule = Rule.new(identifier_to_regex(identifier), rep_name, compilation_block) @rules_collection.add_item_compilation_rule(compilation_rule, :before) # Create routing rule routing_block = proc do item.identifier.chop + '.' + item[:extension] end routing_rule = Rule.new(identifier_to_regex(identifier), rep_name, routing_block) @rules_collection.add_item_routing_rule(routing_rule, :before) end |
#preprocess { ... } ⇒ void
This method returns an undefined value.
Creates a preprocessor block that will be executed after all data is loaded, but before the site is compiled.
27 28 29 |
# File 'lib/nanoc3/base/compilation/compiler_dsl.rb', line 27 def preprocess(&block) @rules_collection.preprocessor = block end |
#route(identifier, params = {}) { ... } ⇒ void
This method returns an undefined value.
Creates a routing rule for all items whose identifier match the given identifier, which may either be a string containing the ‘*` wildcard, or a regular expression.
This rule will be applicable to reps with a name equal to ‘:default`; this can be changed by giving an explicit `:rep` parameter.
The path of an item rep will be determined by calling the given block and passing the rep as a block argument.
107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/nanoc3/base/compilation/compiler_dsl.rb', line 107 def route(identifier, params={}, &block) # Require block raise ArgumentError.new("#route requires a block") unless block_given? # Get rep name rep_name = params[:rep] || :default snapshot_name = params[:snapshot] || :last # Create rule rule = Rule.new(identifier_to_regex(identifier), rep_name, block, :snapshot_name => snapshot_name) @rules_collection.add_item_routing_rule(rule) end |