Sha256: f2cd941037adff57ed1f21927fd6058ff8311c306f928b24689d1ab617a12c8e

Contents?: true

Size: 1.53 KB

Versions: 8

Compression:

Stored size: 1.53 KB

Contents

require 'much-plugin'
require 'deas-erubis/source'

module Deas; end
module Deas::Erubis

  module TemplateHelpers
    include MuchPlugin

    plugin_included{ include Methods }

    module Methods

      def partial(name, locals = nil)
        source_partial(@default_source, name, locals)
      end

      def capture_partial(name, locals = nil, &c)
        source_capture_partial(@default_source, name, locals, &c)
      end

      def source_partial(source, name, locals = nil)
        source.partial(name, locals || {})
      end

      def source_capture_partial(source, name, locals = nil, &c)
        _erb_buffer source.partial(name, locals || {}, &Proc.new{ _erb_capture(&c) })
      end

      private

      def _erb_capture(&content)
        begin
          # copy original buffer state
          orig_buf_value = _erb_bufvar
          instance_variable_set(_erb_bufvar_name, "\n")

          # evaluate the given content
          result = instance_eval(&content)
          new_buf_value = _erb_bufvar

          # return result if nothing buffered; otherwise return what was buffered
          new_buf_value == "\n" ? "\n#{result}" : new_buf_value
        ensure
          # reset buffer to original state
          instance_variable_set(_erb_bufvar_name, orig_buf_value)
        end
      end

      def _erb_buffer(content)
        _erb_bufvar << content
      end

      def _erb_bufvar
        instance_variable_get(_erb_bufvar_name)
      end

      def _erb_bufvar_name
        Deas::Erubis::Source::BUFVAR_NAME
      end

    end

  end

end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
deas-erubis-0.5.7 lib/deas-erubis/template_helpers.rb
deas-erubis-0.5.6 lib/deas-erubis/template_helpers.rb
deas-erubis-0.5.5 lib/deas-erubis/template_helpers.rb
deas-erubis-0.5.4 lib/deas-erubis/template_helpers.rb
deas-erubis-0.5.3 lib/deas-erubis/template_helpers.rb
deas-erubis-0.5.2 lib/deas-erubis/template_helpers.rb
deas-erubis-0.5.1 lib/deas-erubis/template_helpers.rb
deas-erubis-0.5.0 lib/deas-erubis/template_helpers.rb