Class: Nanoc3::Filters::ERB

Inherits:
Nanoc3::Filter show all
Defined in:
lib/nanoc3/filters/erb.rb

Constant Summary

Constants inherited from Nanoc3::Filter

Nanoc3::Filter::TMP_BINARY_ITEMS_DIR

Instance Attribute Summary

Attributes inherited from Nanoc3::Filter

#assigns

Instance Method Summary collapse

Methods inherited from Nanoc3::Filter

#depend_on, #filename, from_binary?, #initialize, #output_filename, to_binary?, type

Methods included from PluginRegistry::PluginMethods

#identifier, #identifiers, #named, #register

Methods inherited from Context

#get_binding, #initialize

Constructor Details

This class inherits a constructor from Nanoc3::Filter

Instance Method Details

#run(content, params = {}) ⇒ String

Runs the content through [ERB](ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html).

Parameters:

  • content (String)

    The content to filter

  • params (Hash) (defaults to: {})

    a customizable set of options

Options Hash (params):

  • safe_level (Integer) — default: nil

    The safe level (‘$SAFE`) to use while running this filter

  • trim_mode (String) — default: nil

    The trim mode to use

Returns:

  • (String)

    The filtered content



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/nanoc3/filters/erb.rb', line 18

def run(content, params={})
  # Create context
  context = ::Nanoc3::Context.new(assigns)

  # Get binding
  proc = assigns[:content] ? lambda { assigns[:content] } : nil 
  assigns_binding = context.get_binding(&proc)

  # Get result
  safe_level = params[:safe_level]
  trim_mode = params[:trim_mode]
  erb = ::ERB.new(content, safe_level, trim_mode)
  erb.filename = filename
  erb.result(assigns_binding)
end