Class: ERB::OpenTemplate

Inherits:
Object show all
Defined in:
lib/standard/facets/erb.rb

Overview

OpenTemplate

The Erb OpenTemplate provides a quick and convenient way to create a clean rendering space with the desired responses.

Ruby 1.8.6 or less can't handle object scope methods with blocks.

TODO: This might make a good addon library. Just add require 'erb' to the erb_result method? Call it OpenResponse?

Instance Method Summary collapse

Constructor Details

#initialize(*objs_ioc) ⇒ OpenTemplate


21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/standard/facets/erb.rb', line 21

def initialize(*objs_ioc)
  ioc = Hash===objs_ioc.last ? objs_ioc.pop : {}
  objs = objs_ioc

  mods = []

  objs.each do |obj|
    mod = Module.new
    obj.public_methods.each do |m|
      mod.module_eval do
        #define_method(m){ |*a,&b| obj.__send__(m,*a,&b) }
        define_method(m, &obj.method(m).to_proc)
      end
    end
    mods << mod
  end

  mod = Module.new
  ioc.each do |k,v|
    mod.module_eval do
      define_method(k){ v }
    end
  end
  mods << mod

  extend *mods.reverse
end

Instance Method Details

#erb_result(str) ⇒ Object


50
51
52
# File 'lib/standard/facets/erb.rb', line 50

def erb_result(str)
  ERB.new(str).result(binding)
end