Module: Angelo::Tilt::ERB

Defined in:
lib/angelo/tilt/erb.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(base) ⇒ Object

hrm, sneaky



10
11
12
# File 'lib/angelo/tilt/erb.rb', line 10

def self.included base
  base.extend ClassMethods
end

Instance Method Details

#erb(view, opts = {locals: {}}) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'lib/angelo/tilt/erb.rb', line 53

def erb view, opts = {locals: {}}
  locals = Hash === opts[:locals] ? opts[:locals] : {}
  render = case view
           when String
             ->{ view }
           when Symbol
             ->{self.class.templates[view].render self, locals}
           end
  case opts[:layout]
  when false
    render[]
  when Symbol
    if lt = self.class.layout_templates[opts[:layout]]
      lt.render self, locals, &render
    else
      raise ArgumentError.new "unknown layout - :#{opts[:layout]}"
    end
  else
    if self.class.default_layout
      self.class.default_layout.render self, locals, &render
    else
      render[]
    end
  end
end