Class: InlineTemplates::BufferWrapper
Class Method Summary
collapse
Instance Method Summary
collapse
Methods inherited from BlankObject
drop_methods, make_blank
Constructor Details
#initialize(object, buffer) ⇒ BufferWrapper
Returns a new instance of BufferWrapper.
5
6
7
8
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 5
def initialize(object, buffer)
@object = object
@buffer = buffer
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object
17
18
19
20
21
22
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 17
def method_missing(name, *args, &block)
args.map! &BufferWrapper.method(:unwrap)
block = BufferWrapper.create_proxy_proc(block, @buffer) unless block.nil?
BufferWrapper.wrap @object.__send__(name, *args, &block), @buffer
end
|
Class Method Details
.create_proxy_proc(nested, buffer) ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 44
def self.create_proxy_proc(nested, buffer)
original_self = self
proc do |*args, &block|
unless @_inlinetemplates_context.nil?
::Kernel.puts "OH! block in context!"
end
args.map! { |arg| BufferWrapper.wrap arg, buffer }
block = BufferWrapper.create_proxy_proc(block, buffer) unless block.nil?
if self.equal? original_self
nested.call *args, &block
else
buffer.inlinetemplates_instance_exec self, *args, &nested
end
end
end
|
.unwrap(obj) ⇒ Object
36
37
38
39
40
41
42
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 36
def self.unwrap(obj)
if obj.respond_to? :__inline_templates_object
obj.__inline_templates_object
else
obj
end
end
|
.wrap(result, buffer) ⇒ Object
28
29
30
31
32
33
34
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 28
def self.wrap(result, buffer)
if result.class == ::NilClass || result.class == ::TrueClass || result.class == ::FalseClass
result
else
BufferWrapper.new(self.unwrap(result), buffer)
end
end
|
Instance Method Details
#__inline_templates_object ⇒ Object
10
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 10
def __inline_templates_object; @object; end
|
#respond_to_missing?(name, include_private = false) ⇒ Boolean
24
25
26
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 24
def respond_to_missing?(name, include_private = false)
@object.respond_to?(name, include_private)
end
|
#~ ⇒ Object
12
13
14
15
|
# File 'lib/inline_templates/buffer_wrapper.rb', line 12
def ~
@buffer.inlinetemplates_append @object
@object
end
|