Sha256: ddf55890a686c668332a68dbfea24c0721f7bb3a76683b1abe7300f72c9c556a

Contents?: true

Size: 1.43 KB

Versions: 3

Compression:

Stored size: 1.43 KB

Contents

require 'deas/template_engine'
require 'erubis'

require 'deas-erubis/version'
require 'deas-erubis/source'

module Deas::Erubis

  class TemplateEngine < Deas::TemplateEngine

    DEFAULT_HANDLER_LOCAL = 'view'.freeze
    DEFAULT_LOGGER_LOCAL  = 'logger'.freeze

    def erb_source
      @erb_source ||= Source.new(self.source_path, {
        :eruby          => self.opts['eruby'],
        :cache          => self.opts['cache'],
        :deas_source    => self.opts['deas_template_source'],
        :default_locals => { self.erb_logger_local => self.logger }
      })
    end

    def erb_handler_local
      @erb_handler_local ||= (self.opts['handler_local'] || DEFAULT_HANDLER_LOCAL)
    end

    def erb_logger_local
      @erb_logger_local ||= (self.opts['logger_local'] || DEFAULT_LOGGER_LOCAL)
    end

    # render the template including the handler as a local
    def render(template_name, view_handler, locals, &content)
      self.erb_source.render(template_name, render_locals(view_handler, locals), &content)
    end

    # render the template against the given locals
    def partial(template_name, locals, &content)
      self.erb_source.render(template_name, locals, &content)
    end

    def compile(template_name, compiled_content)
      self.erb_source.compile(template_name, compiled_content)
    end

    private

    def render_locals(view_handler, locals)
      { self.erb_handler_local => view_handler }.merge(locals)
    end

  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
deas-erubis-0.3.0 lib/deas-erubis.rb
deas-erubis-0.2.0 lib/deas-erubis.rb
deas-erubis-0.1.0 lib/deas-erubis.rb