lib/deas/template_source.rb in deas-0.28.0 vs lib/deas/template_source.rb in deas-0.29.0

- old
+ new

@@ -12,12 +12,13 @@ attr_reader :path, :engines def initialize(path, logger = nil) @path = path.to_s @default_opts = { - 'source_path' => @path, - 'logger' => logger || Deas::NullLogger.new + 'source_path' => @path, + 'logger' => logger || Deas::NullLogger.new, + 'deas_template_source' => self } @engines = Hash.new{ |h,k| Deas::NullTemplateEngine.new(@default_opts) } end def engine(input_ext, engine_class, registered_opts = nil) @@ -31,19 +32,19 @@ def engine_for?(template_name) @engines.keys.include?(get_template_ext(template_name)) end - def render(template_name, view_handler, locals) - get_engine(template_name).render(template_name, view_handler, locals) + def render(template_name, view_handler, locals, &content) + [ view_handler.class.layouts, + template_name + ].flatten.reverse.inject(content) do |render_proc, name| + proc{ get_engine(name).render(name, view_handler, locals, &render_proc) } + end.call end - def partial(template_name, locals) - get_engine(template_name).partial(template_name, locals) - end - - def capture_partial(template_name, locals, &content) - get_engine(template_name).capture_partial(template_name, locals, &content) + def partial(template_name, locals, &content) + get_engine(template_name).partial(template_name, locals, &content) end private def get_engine(template_name)