Class: Webgen::ContentProcessor::Erubis

Inherits:
Object
  • Object
show all
Includes:
WebsiteAccess
Defined in:
lib/webgen/contentprocessor/erubis.rb

Overview

Processes embedded Ruby statements with the erubis library.

Instance Method Summary collapse

Methods included from WebsiteAccess

included, website

Instance Method Details

#call(context) ⇒ Object

Process the Ruby statements embedded in the content of context.



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/webgen/contentprocessor/erubis.rb', line 9

def call(context)
  require 'erubis'
  # including Erubis because of problem with resolving Erubis::XmlHelper et al
  self.class.class_eval "include ::Erubis"

  node = context.content_node
  ref_node = context.ref_node
  dest_node = context.dest_node

  options = website.config['contentprocessor.erubis.options']
  if context[:block]
    use_pi = context[:block].options['erubis_use_pi']
    context[:block].options.select {|k,v| k =~ /^erubis_/}.
      each {|k,v| options[k.sub(/^erubis_/, '').to_sym] = v }
  end
  erubis = if (!use_pi.nil? && use_pi) || (use_pi.nil? && website.config['contentprocessor.erubis.use_pi'])
                ::Erubis::PI::Eruby.new(context.content, options)
              else
                ::Erubis::Eruby.new(context.content, options)
              end
  erubis.filename = context.ref_node.absolute_lcn
  context.content = erubis.result(binding)
  context
rescue Exception => e
  raise RuntimeError, "Erubis processing failed in <#{context.ref_node.absolute_lcn}>: #{e.message}", e.backtrace
end