module MasterView module Directives # outputs a block around the text tags, if left bracket count is higher than right # assume that the end is a right bracket otherwise use end # class Block < MasterView::DirectiveBase metadata :priority => 'MediumHigh', :category => 'erb', :description => 'Expands to the equivalent rhtml (erb) block code around the element' event :before_stag do count_left_brackets = attr_value.scan( /\{/ ).size count_right_brackets = attr_value.scan( /\}/ ).size @end_block = (count_left_brackets > count_right_brackets) ? '}' : 'end' render erb_eval(attr_value) end event :after_etag do render erb_eval(@end_block) end end end end