From d735e2255ce102719cff1530fb6c138a76c62e4e Mon Sep 17 00:00:00 2001 From: makoto kuwata Date: Tue, 22 Feb 2011 19:45:09 +0900 Subject: [enhance] add new option ':bufname' to specify buffer variable name --- lib/erubis/engine/eruby.rb | 11 ++++++----- lib/erubis/enhancer.rb | 22 +++++++++++----------- test/test-engines.rb | 25 +++++++++++++++++++++++++ 3 files changed, 42 insertions(+), 16 deletions(-) diff --git a/lib/erubis/engine/eruby.rb b/lib/erubis/engine/eruby.rb index 20a74fc..63828be 100644 --- a/lib/erubis/engine/eruby.rb +++ b/lib/erubis/engine/eruby.rb @@ -21,6 +21,7 @@ module Erubis def init_generator(properties={}) super @escapefunc ||= "Erubis::XmlHelper.escape_xml" + @bufname = properties[:bufname] || "_buf" end def self.supported_properties() # :nodoc: @@ -37,12 +38,12 @@ module Erubis #-- #def add_preamble(src) - # src << "_buf = [];" + # src << "#{@bufname} = [];" #end #++ def add_text(src, text) - src << " _buf << '" << escape_text(text) << "';" unless text.empty? + src << " #{@bufname} << '" << escape_text(text) << "';" unless text.empty? end def add_stmt(src, code) @@ -52,11 +53,11 @@ module Erubis end def add_expr_literal(src, code) - src << ' _buf << (' << code << ').to_s;' + src << " #{@bufname} << (" << code << ').to_s;' end def add_expr_escaped(src, code) - src << ' _buf << ' << escaped_expr(code) << ';' + src << " #{@bufname} << " << escaped_expr(code) << ';' end def add_expr_debug(src, code) @@ -67,7 +68,7 @@ module Erubis #-- #def add_postamble(src) - # src << "\n_buf.join\n" + # src << "\n#{@bufname}.join\n" #end #++ diff --git a/lib/erubis/enhancer.rb b/lib/erubis/enhancer.rb index d9b22a3..b6864eb 100644 --- a/lib/erubis/enhancer.rb +++ b/lib/erubis/enhancer.rb @@ -67,7 +67,7 @@ module Erubis end def add_preamble(src) - src << "_buf = $stdout;" + src << "#{@bufname} = $stdout;" end def add_postamble(src) @@ -162,12 +162,12 @@ module Erubis end def add_preamble(src) - src << "_buf = [];" + src << "#{@bufname} = [];" end def add_postamble(src) src << "\n" unless src[-1] == ?\n - src << "_buf\n" + src << "#{@bufname}\n" end end @@ -208,12 +208,12 @@ module Erubis end def add_preamble(src) - src << "_buf = '';" + src << "#{@bufname} = '';" end def add_postamble(src) src << "\n" unless src[-1] == ?\n - src << "_buf.to_s\n" + src << "#{@bufname}.to_s\n" end end @@ -231,12 +231,12 @@ module Erubis end def add_preamble(src) - src << "_buf = StringIO.new;" + src << "#{@bufname} = StringIO.new;" end def add_postamble(src) src << "\n" unless src[-1] == ?\n - src << "_buf.string\n" + src << "#{@bufname}.string\n" end end @@ -254,12 +254,12 @@ module Erubis end def add_preamble(src) - src << "_erbout = _buf = '';" + src << "_erbout = #{@bufname} = '';" end def add_postamble(src) src << "\n" unless src[-1] == ?\n - src << "_buf.to_s\n" + src << "#{@bufname}.to_s\n" end end @@ -654,9 +654,9 @@ module Erubis #src << " _buf << %Q`" << text << "`;" if text[-1] == ?\n text[-1] = "\\n" - src << " _buf << %Q`" << text << "`\n" + src << " #{@bufname} << %Q`" << text << "`\n" else - src << " _buf << %Q`" << text << "`;" + src << " #{@bufname} << %Q`" << text << "`;" end end diff --git a/test/test-engines.rb b/test/test-engines.rb index 689daa6..b93f880 100644 --- a/test/test-engines.rb +++ b/test/test-engines.rb @@ -67,6 +67,31 @@ __END__ '; _buf.to_s ## +- name: ruby2_options + lang: ruby + class: Eruby + options: { :bufname: '@_out_buf' } + input: | + + <% for item in @items %> + + + + + <% end %> +
<%= i+1 %><%== list %>
+ expected: | + @_out_buf = ''; @_out_buf << ' + '; for item in @items + @_out_buf << ' + + + + '; end + @_out_buf << '
'; @_out_buf << ( i+1 ).to_s; @_out_buf << ''; @_out_buf << Erubis::XmlHelper.escape_xml( list ); @_out_buf << '
+ '; + @_out_buf.to_s +## - name: php1 lang: php class: Ephp -- cgit v1.2.1