class Erubi::CaptureBlockEngine
An engine class that supports capturing blocks via the <%=
and <%==
tags:
<%= upcase_form do %> <%= 'foo' %> <% end %>
Where upcase_form
is defined like:
def upcase_form(&block) "<form>#{@bufvar.capture(&block).upcase}</form>" end
With output being:
<form> FOO </form>
This requires using a string subclass as the buffer value, provided by the CaptureBlockEngine::Buffer
class.
This engine does not support the :escapefunc option. To change the escaping function, use a subclass of CaptureBlockEngine::Buffer
and override the #| method.
This engine does not support the :chain_appends option, and ignores it if present.
Public Class Methods
new(input, properties={})
click to toggle source
Calls superclass method
Erubi::Engine::new
# File lib/erubi/capture_block.rb 69 def initialize(input, properties={}) 70 properties = Hash[properties] 71 properties[:bufval] ||= '::Erubi::CaptureBlockEngine::Buffer.new' 72 properties[:chain_appends] = false 73 super 74 end
Private Instance Methods
add_expression_op(op, code)
click to toggle source
# File lib/erubi/capture_block.rb 86 def add_expression_op(op, code) 87 check = /\A\s*\z/.send(MATCH_METHOD, code) ? "''" : '' 88 with_buffer{@src << op << check << code} 89 end
add_expression_result(code)
click to toggle source
# File lib/erubi/capture_block.rb 78 def add_expression_result(code) 79 add_expression_op(' <<= ', code) 80 end
add_expression_result_escaped(code)
click to toggle source
# File lib/erubi/capture_block.rb 82 def add_expression_result_escaped(code) 83 add_expression_op(' |= ', code) 84 end