erubis 2.6.6 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. data/CHANGES.txt +79 -3
  2. data/MIT-LICENSE +1 -1
  3. data/README.txt +2 -2
  4. data/benchmark/bench.rb +2 -2
  5. data/bin/erubis +2 -2
  6. data/contrib/erubis +293 -155
  7. data/contrib/inline-require +2 -2
  8. data/doc-api/classes/Erubis.html +10 -1
  9. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +12 -12
  10. data/doc-api/classes/Erubis/ArrayEnhancer.html +14 -14
  11. data/doc-api/classes/Erubis/Basic/Converter.html +24 -24
  12. data/doc-api/classes/Erubis/BiPatternEnhancer.html +12 -12
  13. data/doc-api/classes/Erubis/CGenerator.html +60 -60
  14. data/doc-api/classes/Erubis/Context.html +42 -42
  15. data/doc-api/classes/Erubis/Converter.html +27 -27
  16. data/doc-api/classes/Erubis/CppGenerator.html +382 -0
  17. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
  18. data/doc-api/classes/Erubis/Ecpp.html +126 -0
  19. data/doc-api/classes/Erubis/Engine.html +36 -36
  20. data/doc-api/classes/Erubis/ErboutEnhancer.html +14 -14
  21. data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
  22. data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
  23. data/doc-api/classes/Erubis/Evaluator.html +19 -19
  24. data/doc-api/classes/Erubis/Generator.html +60 -60
  25. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
  26. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +150 -150
  27. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +49 -49
  28. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +24 -24
  29. data/doc-api/classes/Erubis/InterpolationEnhancer.html +38 -39
  30. data/doc-api/classes/Erubis/JavaGenerator.html +60 -60
  31. data/doc-api/classes/Erubis/JavascriptGenerator.html +66 -66
  32. data/doc-api/classes/Erubis/Main.html +22 -22
  33. data/doc-api/classes/Erubis/NoCodeEnhancer.html +30 -30
  34. data/doc-api/classes/Erubis/NoTextEnhancer.html +6 -6
  35. data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
  36. data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
  37. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
  38. data/doc-api/classes/Erubis/PI.html +1 -0
  39. data/doc-api/classes/Erubis/PI/Converter.html +18 -18
  40. data/doc-api/classes/Erubis/PI/Ec.html +6 -6
  41. data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
  42. data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
  43. data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
  44. data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
  45. data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
  46. data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
  47. data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
  48. data/doc-api/classes/Erubis/PI/TinyEruby.html +24 -24
  49. data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -34
  50. data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
  51. data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
  52. data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
  53. data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
  54. data/doc-api/classes/Erubis/PreprocessingEruby.html +12 -12
  55. data/doc-api/classes/Erubis/PreprocessingHelper.html +22 -22
  56. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +20 -20
  57. data/doc-api/classes/Erubis/PrintOutEnhancer.html +33 -33
  58. data/doc-api/classes/Erubis/RubyEvaluator.html +18 -18
  59. data/doc-api/classes/Erubis/RubyGenerator.html +59 -58
  60. data/doc-api/classes/Erubis/SchemeGenerator.html +60 -60
  61. data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -7
  62. data/doc-api/classes/Erubis/StdoutEnhancer.html +13 -13
  63. data/doc-api/classes/Erubis/StringBufferEnhancer.html +14 -14
  64. data/doc-api/classes/Erubis/TinyEruby.html +24 -24
  65. data/doc-api/classes/Erubis/XmlHelper.html +30 -30
  66. data/doc-api/classes/Kernel.html +155 -0
  67. data/doc-api/created.rid +1 -1
  68. data/doc-api/files/README_txt.html +3 -3
  69. data/doc-api/files/erubis/context_rb.html +1 -1
  70. data/doc-api/files/erubis/converter_rb.html +3 -3
  71. data/doc-api/files/erubis/engine/ec_rb.html +1 -1
  72. data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
  73. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  74. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  75. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  76. data/doc-api/files/erubis/engine/eperl_rb.html +1 -1
  77. data/doc-api/files/erubis/engine/ephp_rb.html +1 -1
  78. data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/escheme_rb.html +1 -1
  80. data/doc-api/files/erubis/engine/optimized_rb.html +1 -1
  81. data/doc-api/files/erubis/engine_rb.html +2 -2
  82. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  83. data/doc-api/files/erubis/error_rb.html +1 -1
  84. data/doc-api/files/erubis/evaluator_rb.html +1 -1
  85. data/doc-api/files/erubis/generator_rb.html +3 -3
  86. data/doc-api/files/erubis/helper_rb.html +1 -1
  87. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +1 -1
  88. data/doc-api/files/erubis/helpers/rails_helper_rb.html +1 -1
  89. data/doc-api/files/erubis/local-setting_rb.html +1 -1
  90. data/doc-api/files/erubis/main_rb.html +4 -2
  91. data/doc-api/files/erubis/preprocessing_rb.html +1 -1
  92. data/doc-api/files/erubis/tiny_rb.html +1 -1
  93. data/doc-api/files/erubis/util_rb.html +107 -0
  94. data/doc-api/files/erubis_rb.html +2 -2
  95. data/doc-api/fr_class_index.html +7 -0
  96. data/doc-api/fr_file_index.html +2 -0
  97. data/doc-api/fr_method_index.html +237 -223
  98. data/doc/docstyle.css +25 -4
  99. data/doc/users-guide.html +286 -21
  100. data/examples/basic/Makefile +7 -2
  101. data/examples/basic/example.ecpp +33 -0
  102. data/lib/erubis.rb +4 -3
  103. data/lib/erubis/context.rb +2 -2
  104. data/lib/erubis/converter.rb +3 -3
  105. data/lib/erubis/engine.rb +8 -8
  106. data/lib/erubis/engine/ec.rb +2 -2
  107. data/lib/erubis/engine/ecpp.rb +113 -0
  108. data/lib/erubis/engine/ejava.rb +9 -9
  109. data/lib/erubis/engine/ejavascript.rb +9 -9
  110. data/lib/erubis/engine/enhanced.rb +7 -2
  111. data/lib/erubis/engine/eperl.rb +2 -2
  112. data/lib/erubis/engine/ephp.rb +2 -2
  113. data/lib/erubis/engine/eruby.rb +8 -7
  114. data/lib/erubis/engine/escheme.rb +2 -2
  115. data/lib/erubis/engine/optimized.rb +2 -2
  116. data/lib/erubis/enhancer.rb +70 -27
  117. data/lib/erubis/error.rb +2 -2
  118. data/lib/erubis/evaluator.rb +2 -2
  119. data/lib/erubis/generator.rb +3 -3
  120. data/lib/erubis/helper.rb +2 -2
  121. data/lib/erubis/helpers/rails_form_helper.rb +2 -2
  122. data/lib/erubis/helpers/rails_helper.rb +2 -2
  123. data/lib/erubis/local-setting.rb +2 -2
  124. data/lib/erubis/main.rb +31 -4
  125. data/lib/erubis/preprocessing.rb +2 -2
  126. data/lib/erubis/tiny.rb +2 -2
  127. data/lib/erubis/util.rb +22 -0
  128. data/test/assert-text-equal.rb +2 -2
  129. data/test/data/users-guide/bufvar-example.rb +10 -0
  130. data/test/data/users-guide/bufvar-example.result +17 -0
  131. data/test/data/users-guide/example.ecpp +30 -0
  132. data/test/data/users-guide/example_c.result +22 -19
  133. data/test/data/users-guide/fasteruby-example.rb +8 -0
  134. data/test/data/users-guide/fasteruby-example.result +18 -0
  135. data/test/data/users-guide/percentline-example.rhtml +3 -1
  136. data/test/data/users-guide/percentline_example.result +5 -3
  137. data/test/data/users-guide/prefixedline-example.rb +9 -0
  138. data/test/data/users-guide/prefixedline-example.rhtml +6 -0
  139. data/test/data/users-guide/prefixedline_example.result +9 -0
  140. data/test/test-engines.rb +58 -2
  141. data/test/test-enhancers.rb +51 -2
  142. data/test/test-erubis.rb +14 -10
  143. data/test/test-index-cgi.rb +191 -0
  144. data/test/test-main.rb +35 -4
  145. data/test/test-users-guide.rb +18 -2
  146. data/test/test.rb +18 -2
  147. data/test/testutil.rb +22 -7
  148. metadata +30 -24
@@ -1,4 +1,4 @@
1
- all = example.rb example.php example.c example.java example.scm example.pl example.js
1
+ all = example.rb example.php example.c example.cpp example.java example.scm example.pl example.js
2
2
 
3
3
  all: $(all)
4
4
 
@@ -12,6 +12,9 @@ example.php: example.ephp
12
12
  example.c: example.ec
13
13
  erubis -bl c example.ec > example.c
14
14
 
15
+ example.cpp: example.ecpp
16
+ erubis -bl cpp example.ecpp > example.cpp
17
+
15
18
  example.java: example.ejava
16
19
  erubis -bl java example.ejava > example.java
17
20
 
@@ -28,7 +31,7 @@ example.js: example.ejs
28
31
 
29
32
  ###----------
30
33
 
31
- src = example.eruby example.ephp example.ec example.ejava example.escheme example.eperl example.ejs Makefile
34
+ src = example.eruby example.ephp example.ec example.ecpp example.ejava example.escheme example.eperl example.ejs Makefile
32
35
 
33
36
  clean:
34
37
  rm -f `ruby -e 'puts(Dir.glob("*.*") - %w[$(src)])'`
@@ -38,6 +41,7 @@ compile: example.bin example.class
38
41
 
39
42
  example.bin: example.c
40
43
  cc -o example.bin example.c
44
+ g++ -o example.bin2 example.cpp
41
45
 
42
46
  example.class: example.java
43
47
  jikes example.java
@@ -46,6 +50,7 @@ output: $(all) example.bin example.class
46
50
  erubis example.eruby > example.ruby.out
47
51
  php example.php > example.php.out
48
52
  ./example.bin '<aaa>' 'b&b' '"ccc"' > example.c.out
53
+ ./example.bin2 '<aaa>' 'b&b' '"ccc"' > example.cpp.out
49
54
  java example > example.javexample.bin
50
55
  gosh example.scm > example.scm.out
51
56
  # guile example.scm > example.scm.out
@@ -0,0 +1,33 @@
1
+ <%
2
+ #include <string>
3
+ #include <iostream>
4
+ #include <sstream>
5
+
6
+ int main(int argc, char *argv[])
7
+ {
8
+ int i;
9
+ std::stringstream _buf;
10
+
11
+ %>
12
+ <html>
13
+ <body>
14
+ <p>Hello <%= argv[0] %>!</p>
15
+ <table>
16
+ <tbody>
17
+ <% for (i = 1; i < argc; i++) { %>
18
+ <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>">
19
+ <td><%= i %></td>
20
+ <td><%= argv[i] %></td>
21
+ </tr>
22
+ <% } %>
23
+ </tbody>
24
+ </table>
25
+ </body>
26
+ </html>
27
+ <%
28
+
29
+ std::string _output = _buf.str();
30
+ std::cout << _output;
31
+ return 0;
32
+ }
33
+ %>
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  ##
@@ -47,7 +47,7 @@
47
47
 
48
48
 
49
49
  module Erubis
50
- VERSION = ('$Release: 2.6.6 $' =~ /([.\d]+)/) && $1
50
+ VERSION = ('$Release: 2.7.0 $' =~ /([.\d]+)/) && $1
51
51
  end
52
52
 
53
53
  require 'erubis/engine'
@@ -56,6 +56,7 @@ require 'erubis/engine'
56
56
  #require 'erubis/evaluator'
57
57
  #require 'erubis/error'
58
58
  #require 'erubis/context'
59
+ #requier 'erubis/util'
59
60
  require 'erubis/helper'
60
61
  require 'erubis/enhancer'
61
62
  #require 'erubis/tiny'
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
 
@@ -1,9 +1,9 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
- require 'abstract'
6
+ require 'erubis/util'
7
7
 
8
8
  module Erubis
9
9
 
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
 
@@ -48,17 +48,17 @@ module Erubis
48
48
  def self.load_file(filename, properties={})
49
49
  cachename = properties[:cachename] || (filename + '.cache')
50
50
  properties[:filename] = filename
51
- if test(?f, cachename) && File.mtime(filename) <= File.mtime(cachename)
51
+ timestamp = File.mtime(filename)
52
+ if test(?f, cachename) && timestamp == File.mtime(cachename)
52
53
  engine = self.new(nil, properties)
53
54
  engine.src = File.read(cachename)
54
55
  else
55
56
  input = File.open(filename, 'rb') {|f| f.read }
56
57
  engine = self.new(input, properties)
57
- File.open(cachename, 'wb') do |f|
58
- f.flock(File::LOCK_EX)
59
- f.write(engine.src)
60
- f.flush()
61
- end
58
+ tmpname = cachename + rand().to_s[1,8]
59
+ File.open(tmpname, 'wb') {|f| f.write(engine.src) }
60
+ File.rename(tmpname, cachename)
61
+ File.utime(timestamp, timestamp, cachename)
62
62
  end
63
63
  engine.src.untaint # ok?
64
64
  return engine
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/engine'
@@ -0,0 +1,113 @@
1
+ ##
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
+ ##
5
+
6
+ require 'erubis/engine'
7
+ require 'erubis/enhancer'
8
+
9
+
10
+ module Erubis
11
+
12
+
13
+ module CppGenerator
14
+ include Generator
15
+
16
+ def self.supported_properties() # :nodoc:
17
+ return [
18
+ [:indent, '', "indent spaces (ex. ' ')"],
19
+ [:bufvar, '_buf', "buffer variable name"],
20
+ ]
21
+ end
22
+
23
+ def init_generator(properties={})
24
+ super
25
+ @escapefunc ||= "escape"
26
+ @indent = properties[:indent] || ''
27
+ @bufvar = properties[:bufvar] || '_buf'
28
+ end
29
+
30
+ def add_preamble(src)
31
+ src << "#line 1 \"#{self.filename}\"\n" if self.filename
32
+ end
33
+
34
+ def escape_text(text)
35
+ @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
36
+ text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] }
37
+ return text
38
+ end
39
+
40
+ def escaped_expr(code)
41
+ return "#{@escapefunc}(#{code.strip})"
42
+ end
43
+
44
+ def add_text(src, text)
45
+ return if text.empty?
46
+ src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
47
+ src << "_buf << "
48
+ i = 0
49
+ text.each_line do |line|
50
+ src << "\n" << @indent << " " if i > 0
51
+ i += 1
52
+ src << '"' << escape_text(line) << '"'
53
+ end
54
+ src << ";" #<< (text[-1] == ?\n ? "\n" : "")
55
+ src << "\n" if text[-1] == ?\n
56
+ end
57
+
58
+ def add_stmt(src, code)
59
+ src << code
60
+ end
61
+
62
+ def add_expr_literal(src, code)
63
+ src << @indent if src.empty? || src[-1] == ?\n
64
+ src << " _buf << (" << code.strip << ");"
65
+ end
66
+
67
+ def add_expr_escaped(src, code)
68
+ src << @indent if src.empty? || src[-1] == ?\n
69
+ src << ' ' << escaped_expr(code) << ';'
70
+ end
71
+
72
+ def add_expr_debug(src, code)
73
+ code.strip!
74
+ src << @indent if src.empty? || src[-1] == ?\n
75
+ src << " std::cerr << \"*** debug: #{code.gsub(/(")/, '\\\&')}=\" << (#{code});"
76
+ end
77
+
78
+ def add_postamble(src)
79
+ # empty
80
+ end
81
+
82
+ end
83
+
84
+
85
+ ##
86
+ ## engine for C
87
+ ##
88
+ class Ecpp < Basic::Engine
89
+ include CppGenerator
90
+ end
91
+
92
+
93
+ class EscapedEcpp < Ecpp
94
+ include EscapeEnhancer
95
+ end
96
+
97
+
98
+ #class XmlEcpp < Ecpp
99
+ # include EscapeEnhancer
100
+ #end
101
+
102
+ class PI::Ecpp < PI::Engine
103
+ include CppGenerator
104
+
105
+ def init_converter(properties={})
106
+ @pi = 'cpp'
107
+ super(properties)
108
+ end
109
+
110
+ end
111
+
112
+
113
+ end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/engine'
@@ -16,7 +16,7 @@ module Erubis
16
16
  def self.supported_properties() # :nodoc:
17
17
  return [
18
18
  [:indent, '', "indent spaces (ex. ' ')"],
19
- [:buf, '_buf', "output buffer name"],
19
+ [:bufvar, '_buf', "output buffer variable name"],
20
20
  [:bufclass, 'StringBuffer', "output buffer class (ex. 'StringBuilder')"],
21
21
  ]
22
22
  end
@@ -25,12 +25,12 @@ module Erubis
25
25
  super
26
26
  @escapefunc ||= 'escape'
27
27
  @indent = properties[:indent] || ''
28
- @buf = properties[:buf] || '_buf'
28
+ @bufvar = properties[:bufvar] || '_buf'
29
29
  @bufclass = properties[:bufclass] || 'StringBuffer'
30
30
  end
31
31
 
32
32
  def add_preamble(src)
33
- src << "#{@indent}#{@bufclass} #{@buf} = new #{@bufclass}();"
33
+ src << "#{@indent}#{@bufclass} #{@bufvar} = new #{@bufclass}();"
34
34
  end
35
35
 
36
36
  def escape_text(text)
@@ -41,7 +41,7 @@ module Erubis
41
41
  def add_text(src, text)
42
42
  return if text.empty?
43
43
  src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
44
- src << @buf << ".append("
44
+ src << @bufvar << ".append("
45
45
  i = 0
46
46
  text.each_line do |line|
47
47
  src << "\n" << @indent << ' + ' if i > 0
@@ -58,7 +58,7 @@ module Erubis
58
58
  def add_expr_literal(src, code)
59
59
  src << @indent if src.empty? || src[-1] == ?\n
60
60
  code.strip!
61
- src << " #{@buf}.append(#{code});"
61
+ src << " #{@bufvar}.append(#{code});"
62
62
  end
63
63
 
64
64
  def add_expr_escaped(src, code)
@@ -73,8 +73,8 @@ module Erubis
73
73
 
74
74
  def add_postamble(src)
75
75
  src << "\n" if src[-1] == ?;
76
- src << @indent << "return " << @buf << ".toString();\n"
77
- #src << @indent << "System.out.print(" << @buf << ".toString());\n"
76
+ src << @indent << "return " << @bufvar << ".toString();\n"
77
+ #src << @indent << "System.out.print(" << @bufvar << ".toString());\n"
78
78
  end
79
79
 
80
80
  end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/engine'
@@ -16,7 +16,7 @@ module Erubis
16
16
  def self.supported_properties() # :nodoc:
17
17
  list = []
18
18
  #list << [:indent, '', "indent spaces (ex. ' ')"]
19
- #list << [:buf, '_buf', "output buffer name"]
19
+ #list << [:bufvar, '_buf', "output buffer variable name"]
20
20
  list << [:docwrite, true, "use 'document.write()' when true"]
21
21
  return list
22
22
  end
@@ -25,12 +25,12 @@ module Erubis
25
25
  super
26
26
  @escapefunc ||= 'escape'
27
27
  @indent = properties[:indent] || ''
28
- @buf = properties[:out] || '_buf'
28
+ @bufvar = properties[:bufvar] || '_buf'
29
29
  @docwrite = properties[:docwrite] != false # '!= false' will be removed in the next release
30
30
  end
31
31
 
32
32
  def add_preamble(src)
33
- src << "#{@indent}var #{@buf} = [];"
33
+ src << "#{@indent}var #{@bufvar} = [];"
34
34
  end
35
35
 
36
36
  def escape_text(text)
@@ -45,7 +45,7 @@ module Erubis
45
45
  def add_text(src, text)
46
46
  return if text.empty?
47
47
  add_indent(src, @indent)
48
- src << @buf << '.push("'
48
+ src << @bufvar << '.push("'
49
49
  s = escape_text(text)
50
50
  if s[-1] == ?\n
51
51
  s[-2, 2] = ''
@@ -62,7 +62,7 @@ module Erubis
62
62
  def add_expr_literal(src, code)
63
63
  add_indent(src, @indent)
64
64
  code.strip!
65
- src << "#{@buf}.push(#{code});"
65
+ src << "#{@bufvar}.push(#{code});"
66
66
  end
67
67
 
68
68
  def add_expr_escaped(src, code)
@@ -78,9 +78,9 @@ module Erubis
78
78
  def add_postamble(src)
79
79
  src << "\n" if src[-1] == ?;
80
80
  if @docwrite
81
- src << @indent << 'document.write(' << @buf << ".join(\"\"));\n"
81
+ src << @indent << 'document.write(' << @bufvar << ".join(\"\"));\n"
82
82
  else
83
- src << @indent << @buf << ".join(\"\");\n"
83
+ src << @indent << @bufvar << ".join(\"\");\n"
84
84
  end
85
85
  end
86
86
 
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/enhancer'
@@ -103,6 +103,11 @@ module Erubis
103
103
  end
104
104
 
105
105
 
106
+ class PrefixedLineEruby < Eruby
107
+ include PrefixedLineEnhancer
108
+ end
109
+
110
+
106
111
  class HeaderFooterEruby < Eruby
107
112
  include HeaderFooterEnhancer
108
113
  end
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/engine'
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/engine'
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Release: 2.6.6 $
3
- ## copyright(c) 2006-2010 kuwata-lab.com all rights reserved.
2
+ ## $Release: 2.7.0 $
3
+ ## copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
4
4
  ##
5
5
 
6
6
  require 'erubis/engine'
@@ -21,6 +21,7 @@ module Erubis
21
21
  def init_generator(properties={})
22
22
  super
23
23
  @escapefunc ||= "Erubis::XmlHelper.escape_xml"
24
+ @bufvar = properties[:bufvar] || "_buf"
24
25
  end
25
26
 
26
27
  def self.supported_properties() # :nodoc:
@@ -37,12 +38,12 @@ module Erubis
37
38
 
38
39
  #--
39
40
  #def add_preamble(src)
40
- # src << "_buf = [];"
41
+ # src << "#{@bufvar} = [];"
41
42
  #end
42
43
  #++
43
44
 
44
45
  def add_text(src, text)
45
- src << " _buf << '" << escape_text(text) << "';" unless text.empty?
46
+ src << " #{@bufvar} << '" << escape_text(text) << "';" unless text.empty?
46
47
  end
47
48
 
48
49
  def add_stmt(src, code)
@@ -52,11 +53,11 @@ module Erubis
52
53
  end
53
54
 
54
55
  def add_expr_literal(src, code)
55
- src << ' _buf << (' << code << ').to_s;'
56
+ src << " #{@bufvar} << (" << code << ').to_s;'
56
57
  end
57
58
 
58
59
  def add_expr_escaped(src, code)
59
- src << ' _buf << ' << escaped_expr(code) << ';'
60
+ src << " #{@bufvar} << " << escaped_expr(code) << ';'
60
61
  end
61
62
 
62
63
  def add_expr_debug(src, code)
@@ -67,7 +68,7 @@ module Erubis
67
68
 
68
69
  #--
69
70
  #def add_postamble(src)
70
- # src << "\n_buf.join\n"
71
+ # src << "\n#{@bufvar}.join\n"
71
72
  #end
72
73
  #++
73
74