Class: InlineTemplates::RenderingContext

Inherits:
BlankObject show all
Defined in:
lib/inline_templates/rendering_context.rb

Instance Method Summary collapse

Methods inherited from BlankObject

drop_methods, make_blank

Constructor Details

#initialize(context, locals, builder, view = nil) ⇒ RenderingContext

Returns a new instance of RenderingContext.



5
6
7
8
9
10
11
12
13
14
# File 'lib/inline_templates/rendering_context.rb', line 5

def initialize(context, locals, builder, view = nil)
  @_inlinetemplates_context = context
  @_inlinetemplates_locals = locals
  @_inlinetemplates_builder = builder
  @_inlinetemplates_view = view || context

  context.instance_variables.each do |var|
    instance_variable_set var, BufferWrapper.wrap(context.instance_variable_get(var), self)
  end
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args, &block) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/inline_templates/rendering_context.rb', line 32

def method_missing(name, *args, &block)
  args.map! &BufferWrapper.method(:unwrap)
  block = BufferWrapper.create_proxy_proc(block, self) unless block.nil?

  if @_inlinetemplates_locals.include?(name) && args.length == 0
    result = @_inlinetemplates_locals[name]
 
  elsif @_inlinetemplates_context.respond_to?(name, true)
    result = @_inlinetemplates_context.__send__ name, *args, &block
 
  elsif @_inlinetemplates_builder.can_build?(name)
    result = @_inlinetemplates_builder.build @_inlinetemplates_view, name, *args, &block
 
  else
    super
  end
 
  BufferWrapper.wrap result, self
end

Instance Method Details

#h(obj) ⇒ Object



20
21
22
# File 'lib/inline_templates/rendering_context.rb', line 20

def h(obj)
  BufferWrapper.wrap obj.to_s.html_safe, self
end

#inlinetemplates_append(obj) ⇒ Object



24
25
26
# File 'lib/inline_templates/rendering_context.rb', line 24

def inlinetemplates_append(obj)
  @_inlinetemplates_view.output_buffer.append = obj
end

#inlinetemplates_instance_exec(new_self, *args, &block) ⇒ Object



28
29
30
# File 'lib/inline_templates/rendering_context.rb', line 28

def inlinetemplates_instance_exec(new_self, *args, &block)
  RenderingContext.new(new_self, @_inlinetemplates_locals, @_inlinetemplates_builder, @_inlinetemplates_view).instance_exec(*args, &block)
end

#t(obj) ⇒ Object



16
17
18
# File 'lib/inline_templates/rendering_context.rb', line 16

def t(obj)
  BufferWrapper.wrap obj.to_s, self
end