Module: Nanoc3::Helpers::Filtering

Includes:
Capturing
Defined in:
lib/nanoc3/helpers/filtering.rb

Overview

Provides functionality for filtering parts of an item or a layout.

Instance Method Summary collapse

Methods included from Capturing

#capture, #content_for

Instance Method Details

#filter(filter_name, arguments = {}, &block) ⇒ void

This method returns an undefined value.

Filters the content in the given block and outputs it. This function does not return anything; instead, the filtered contents is directly appended to the output buffer (‘_erbout`).

This function has been tested with ERB and Haml. Other filters may not work correctly.

Examples:

Running a filter on a part of an item or layout


<p>Lorem ipsum dolor sit amet...</p>
<% filter :rubypants do %>
  <p>Consectetur adipisicing elit...</p>
<% end %>

Parameters:

  • filter_name (Symbol)

    The name of the filter to run on the contents of the block

  • argument (Hash)

    Arguments to pass to the filter

Raises:



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/nanoc3/helpers/filtering.rb', line 31

def filter(filter_name, arguments={}, &block)
  # Capture block
  data = capture(&block)

  # Find filter
  klass = Nanoc3::Filter.named(filter_name)
  raise Nanoc3::Errors::UnknownFilter.new(filter_name) if klass.nil?
  filter = klass.new(@item_rep.assigns)

  # Filter captured data
  filtered_data = filter.run(data, arguments)

  # Append filtered data to buffer
  buffer = eval('_erbout', block.binding)
  buffer << filtered_data
end