Sha256: e4ea3062c2157fa099900715b460634aa4f5a77c898940650f72f75b4b79e076
Contents?: true
Size: 1.24 KB
Versions: 4
Compression:
Stored size: 1.24 KB
Contents
require 'deas-erbtags/tag' module Deas::ErbTags module Capture def self.included(receiver) receiver.class_eval{ include Tag, Methods } end module Methods def erb_outvar_name self.sinatra_call.settings.erb[:outvar] end def erb_outvar instance_variable_get(self.erb_outvar_name) end def capture(content) self.erb_outvar << "#{content}\n" end def capture_tag(name, *args, &content) opts = args.last.kind_of?(::Hash) ? args.pop : {} outvar = self.erb_outvar_name captured_content = begin orig_outvar = self.erb_outvar instance_variable_set(outvar, "\n") result = instance_eval(&content) if !content.nil? if instance_variable_get(outvar) == "\n" "\n#{result}" else instance_variable_get(outvar) end ensure instance_variable_set(outvar, orig_outvar) end self.capture tag(name, "#{captured_content}\n", opts) end def capture_render(*args, &block) self.capture self.render(*args, &block) end def capture_partial(*args, &block) self.capture self.partial(*args, &block) end end end end
Version data entries
4 entries across 4 versions & 1 rubygems