Class: Nanoc::Filters::XSL Private

Inherits:
Nanoc::Filter
  • Object
show all
Defined in:
lib/nanoc/filters/xsl.rb

This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.

Instance Method Summary collapse

Instance Method Details

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

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.

Runs the item content through an [XSLT](www.w3.org/TR/xslt) stylesheet using [Nokogiri](nokogiri.org/).

This filter can only be run for layouts, because it will need both the XML to convert (= the item content) as well as the XSLT stylesheet (= the layout content).

Additional parameters can be passed to the layout call. These parameters will be turned into ‘xsl:param` elements.

Examples:

Invoking the filter as a layout


compile '/reports/*/' do
  layout 'xsl-report'
end

layout 'xsl-report', :xsl, :awesome => 'definitely'

Parameters:

  • _content (String)

    Ignored. As the filter can be run only as a layout, the value of the ‘:content` parameter passed to the class at initialization is used as the content to transform.

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

    The parameters that will be stored in corresponding ‘xsl:param` elements.

Returns:

  • (String)

    The transformed content



38
39
40
41
42
43
44
45
46
47
# File 'lib/nanoc/filters/xsl.rb', line 38

def run(_content, params = {})
  if assigns[:layout].nil?
    raise 'The XSL filter can only be run as a layout'
  end

  xml = ::Nokogiri::XML(assigns[:content])
  xsl = ::Nokogiri::XSLT(assigns[:layout].raw_content)

  xsl.apply_to(xml, ::Nokogiri::XSLT.quote_params(params))
end