diff --git a/lib/temple/generators.rb b/lib/temple/generators.rb index 53ba465..9572bce 100644 --- a/lib/temple/generators.rb +++ b/lib/temple/generators.rb @@ -80,11 +80,6 @@ def initialize(options = {}) @compiling = false end - def capture_generator - @capture_generator ||= - @options[:capture_generator] || Temple::Generators::StringBuffer - end - def compile(exp) if @compiling type, *args = exp @@ -99,29 +94,31 @@ def compile(exp) end end - def buffer(str = '') - @options[:buffer] + str + def on_multi(*exp) + exp.map { |e| compile(e) }.join(' ; ') end - def concat(str) - buffer " << (#{str})" + def on_newline + "\n" end - # Sensible defaults + def on_capture(name, block) + capture_generator.new(:buffer => name).compile(block) + end - def preamble; '' end - def postamble; '' end + protected - def on_multi(*exp) - exp.map { |e| compile(e) }.join(" ; ") + def capture_generator + @capture_generator ||= + @options[:capture_generator] || Temple::Generators::StringBuffer end - def on_newline - "\n" + def buffer + @options[:buffer] end - def on_capture(name, block) - capture_generator.new(:buffer => name).compile(block) + def concat(str) + "#{buffer} << (#{str})" end end @@ -135,8 +132,8 @@ def on_capture(name, block) # end # _buf.join class ArrayBuffer < Generator - def preamble; buffer " = []" end - def postamble; "#{buffer} = #{buffer}.join" end + def preamble; "#{buffer} = []" end + def postamble; "#{buffer} = #{buffer}.join" end def on_static(text) concat(text.inspect) @@ -166,7 +163,7 @@ def postamble; buffer; end # end # _buf class StringBuffer < Array - def preamble; buffer " = ''" end + def preamble; "#{buffer} = ''" end def on_dynamic(code) concat(code) + '.to_s' @@ -174,4 +171,3 @@ def on_dynamic(code) end end end - diff --git a/test/test_generator.rb b/test/test_generator.rb index ad7470e..b2d1b10 100644 --- a/test/test_generator.rb +++ b/test/test_generator.rb @@ -3,7 +3,7 @@ class TestTempleGenerator < Test::Unit::TestCase class Simple < Temple::Generators::Generator def preamble - buffer " = BUFFER" + "#{buffer} = BUFFER" end def postamble