class Nanoc::RuleDSL::RuleContext

Provides a context in which compilation and routing rules can be executed. It provides access to the item representation that is being compiled or routed.

@api private

Public Class Methods

new(rep:, site:, executor:, view_context:) click to toggle source

@param [Nanoc::Int::ItemRep] rep @param [Nanoc::Int::Site] site @param [Nanoc::Int::Executor, Nanoc::RuleDSL::RecordingExecutor] executor @param [Nanoc::ViewContext] view_context

Calls superclass method Nanoc::Int::Context.new
# File lib/nanoc/rule_dsl/rule_context.rb, line 12
def initialize(rep,, site,, executor,, view_context))
  @_executor = executor

  super({
    item: Nanoc::ItemWithoutRepsView.new(rep.item, view_context),
    rep: Nanoc::ItemRepView.new(rep, view_context),
    item_rep: Nanoc::ItemRepView.new(rep, view_context),
    items: Nanoc::ItemCollectionWithoutRepsView.new(site.items, view_context),
    layouts: Nanoc::LayoutCollectionView.new(site.layouts, view_context),
    config: Nanoc::ConfigView.new(site.config, view_context),
    site: Nanoc::SiteView.new(site, view_context),
  })
end

Public Instance Methods

filter(filter_name, filter_args = {}) click to toggle source

Filters the current representation (calls {Nanoc::Int::ItemRep#filter} with the given arguments on the rep).

@see Nanoc::Int::ItemRep#filter

@param [Symbol] filter_name The name of the filter to run the item

representations' content through

@param [Hash] filter_args The filter arguments that should be passed to

the filter's #run method

@return [void]

# File lib/nanoc/rule_dsl/rule_context.rb, line 38
def filter(filter_name, filter_args = {})
  @_executor.filter(rep.unwrap, filter_name, filter_args)
end
layout(layout_identifier, extra_filter_args = nil) click to toggle source

Layouts the current representation (calls {Nanoc::Int::ItemRep#layout} with the given arguments on the rep).

@see Nanoc::Int::ItemRep#layout

@param [String] layout_identifier The identifier of the layout the item

should be laid out with

@return [void]

# File lib/nanoc/rule_dsl/rule_context.rb, line 51
def layout(layout_identifier, extra_filter_args = nil)
  @_executor.layout(rep.unwrap, layout_identifier, extra_filter_args)
end
snapshot(snapshot_name, path: nil) click to toggle source

Creates a snapshot of the current compiled item content. Calls {Nanoc::Int::ItemRep#snapshot} with the given arguments on the rep.

@see Nanoc::Int::ItemRep#snapshot

@param [Symbol] snapshot_name The name of the snapshot to create

@param [String, nil] path

@return [void]

# File lib/nanoc/rule_dsl/rule_context.rb, line 65
def snapshot(snapshot_name, path: nil)
  @_executor.snapshot(rep.unwrap, snapshot_name, path: path)
end
write(path) click to toggle source

Creates a snapshot named :last the current compiled item content, with the given path. This is a convenience method for {#snapshot}.

@see snapshot

@param [String] path

@return [void]

# File lib/nanoc/rule_dsl/rule_context.rb, line 77
def write(path)
  snapshot(:last, path: path)
end