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.
- data/CHANGES.txt +79 -3
- data/MIT-LICENSE +1 -1
- data/README.txt +2 -2
- data/benchmark/bench.rb +2 -2
- data/bin/erubis +2 -2
- data/contrib/erubis +293 -155
- data/contrib/inline-require +2 -2
- data/doc-api/classes/Erubis.html +10 -1
- data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +12 -12
- data/doc-api/classes/Erubis/ArrayEnhancer.html +14 -14
- data/doc-api/classes/Erubis/Basic/Converter.html +24 -24
- data/doc-api/classes/Erubis/BiPatternEnhancer.html +12 -12
- data/doc-api/classes/Erubis/CGenerator.html +60 -60
- data/doc-api/classes/Erubis/Context.html +42 -42
- data/doc-api/classes/Erubis/Converter.html +27 -27
- data/doc-api/classes/Erubis/CppGenerator.html +382 -0
- data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
- data/doc-api/classes/Erubis/Ecpp.html +126 -0
- data/doc-api/classes/Erubis/Engine.html +36 -36
- data/doc-api/classes/Erubis/ErboutEnhancer.html +14 -14
- data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
- data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
- data/doc-api/classes/Erubis/Evaluator.html +19 -19
- data/doc-api/classes/Erubis/Generator.html +60 -60
- data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
- data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +150 -150
- data/doc-api/classes/Erubis/Helpers/RailsHelper.html +49 -49
- data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +24 -24
- data/doc-api/classes/Erubis/InterpolationEnhancer.html +38 -39
- data/doc-api/classes/Erubis/JavaGenerator.html +60 -60
- data/doc-api/classes/Erubis/JavascriptGenerator.html +66 -66
- data/doc-api/classes/Erubis/Main.html +22 -22
- data/doc-api/classes/Erubis/NoCodeEnhancer.html +30 -30
- data/doc-api/classes/Erubis/NoTextEnhancer.html +6 -6
- data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
- data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
- data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
- data/doc-api/classes/Erubis/PI.html +1 -0
- data/doc-api/classes/Erubis/PI/Converter.html +18 -18
- data/doc-api/classes/Erubis/PI/Ec.html +6 -6
- data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
- data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
- data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
- data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
- data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
- data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
- data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
- data/doc-api/classes/Erubis/PI/TinyEruby.html +24 -24
- data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -34
- data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
- data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
- data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
- data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
- data/doc-api/classes/Erubis/PreprocessingEruby.html +12 -12
- data/doc-api/classes/Erubis/PreprocessingHelper.html +22 -22
- data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +20 -20
- data/doc-api/classes/Erubis/PrintOutEnhancer.html +33 -33
- data/doc-api/classes/Erubis/RubyEvaluator.html +18 -18
- data/doc-api/classes/Erubis/RubyGenerator.html +59 -58
- data/doc-api/classes/Erubis/SchemeGenerator.html +60 -60
- data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -7
- data/doc-api/classes/Erubis/StdoutEnhancer.html +13 -13
- data/doc-api/classes/Erubis/StringBufferEnhancer.html +14 -14
- data/doc-api/classes/Erubis/TinyEruby.html +24 -24
- data/doc-api/classes/Erubis/XmlHelper.html +30 -30
- data/doc-api/classes/Kernel.html +155 -0
- data/doc-api/created.rid +1 -1
- data/doc-api/files/README_txt.html +3 -3
- data/doc-api/files/erubis/context_rb.html +1 -1
- data/doc-api/files/erubis/converter_rb.html +3 -3
- data/doc-api/files/erubis/engine/ec_rb.html +1 -1
- data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
- data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
- data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
- data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
- data/doc-api/files/erubis/engine/eperl_rb.html +1 -1
- data/doc-api/files/erubis/engine/ephp_rb.html +1 -1
- data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
- data/doc-api/files/erubis/engine/escheme_rb.html +1 -1
- data/doc-api/files/erubis/engine/optimized_rb.html +1 -1
- data/doc-api/files/erubis/engine_rb.html +2 -2
- data/doc-api/files/erubis/enhancer_rb.html +2 -2
- data/doc-api/files/erubis/error_rb.html +1 -1
- data/doc-api/files/erubis/evaluator_rb.html +1 -1
- data/doc-api/files/erubis/generator_rb.html +3 -3
- data/doc-api/files/erubis/helper_rb.html +1 -1
- data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +1 -1
- data/doc-api/files/erubis/helpers/rails_helper_rb.html +1 -1
- data/doc-api/files/erubis/local-setting_rb.html +1 -1
- data/doc-api/files/erubis/main_rb.html +4 -2
- data/doc-api/files/erubis/preprocessing_rb.html +1 -1
- data/doc-api/files/erubis/tiny_rb.html +1 -1
- data/doc-api/files/erubis/util_rb.html +107 -0
- data/doc-api/files/erubis_rb.html +2 -2
- data/doc-api/fr_class_index.html +7 -0
- data/doc-api/fr_file_index.html +2 -0
- data/doc-api/fr_method_index.html +237 -223
- data/doc/docstyle.css +25 -4
- data/doc/users-guide.html +286 -21
- data/examples/basic/Makefile +7 -2
- data/examples/basic/example.ecpp +33 -0
- data/lib/erubis.rb +4 -3
- data/lib/erubis/context.rb +2 -2
- data/lib/erubis/converter.rb +3 -3
- data/lib/erubis/engine.rb +8 -8
- data/lib/erubis/engine/ec.rb +2 -2
- data/lib/erubis/engine/ecpp.rb +113 -0
- data/lib/erubis/engine/ejava.rb +9 -9
- data/lib/erubis/engine/ejavascript.rb +9 -9
- data/lib/erubis/engine/enhanced.rb +7 -2
- data/lib/erubis/engine/eperl.rb +2 -2
- data/lib/erubis/engine/ephp.rb +2 -2
- data/lib/erubis/engine/eruby.rb +8 -7
- data/lib/erubis/engine/escheme.rb +2 -2
- data/lib/erubis/engine/optimized.rb +2 -2
- data/lib/erubis/enhancer.rb +70 -27
- data/lib/erubis/error.rb +2 -2
- data/lib/erubis/evaluator.rb +2 -2
- data/lib/erubis/generator.rb +3 -3
- data/lib/erubis/helper.rb +2 -2
- data/lib/erubis/helpers/rails_form_helper.rb +2 -2
- data/lib/erubis/helpers/rails_helper.rb +2 -2
- data/lib/erubis/local-setting.rb +2 -2
- data/lib/erubis/main.rb +31 -4
- data/lib/erubis/preprocessing.rb +2 -2
- data/lib/erubis/tiny.rb +2 -2
- data/lib/erubis/util.rb +22 -0
- data/test/assert-text-equal.rb +2 -2
- data/test/data/users-guide/bufvar-example.rb +10 -0
- data/test/data/users-guide/bufvar-example.result +17 -0
- data/test/data/users-guide/example.ecpp +30 -0
- data/test/data/users-guide/example_c.result +22 -19
- data/test/data/users-guide/fasteruby-example.rb +8 -0
- data/test/data/users-guide/fasteruby-example.result +18 -0
- data/test/data/users-guide/percentline-example.rhtml +3 -1
- data/test/data/users-guide/percentline_example.result +5 -3
- data/test/data/users-guide/prefixedline-example.rb +9 -0
- data/test/data/users-guide/prefixedline-example.rhtml +6 -0
- data/test/data/users-guide/prefixedline_example.result +9 -0
- data/test/test-engines.rb +58 -2
- data/test/test-enhancers.rb +51 -2
- data/test/test-erubis.rb +14 -10
- data/test/test-index-cgi.rb +191 -0
- data/test/test-main.rb +35 -4
- data/test/test-users-guide.rb +18 -2
- data/test/test.rb +18 -2
- data/test/testutil.rb +22 -7
- metadata +30 -24
data/examples/basic/Makefile
CHANGED
@@ -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
|
+
%>
|
data/lib/erubis.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
##
|
2
|
-
## $Release: 2.
|
3
|
-
## copyright(c) 2006-
|
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.
|
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'
|
data/lib/erubis/context.rb
CHANGED
data/lib/erubis/converter.rb
CHANGED
data/lib/erubis/engine.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
##
|
2
|
-
## $Release: 2.
|
3
|
-
## copyright(c) 2006-
|
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
|
-
|
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
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
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
|
data/lib/erubis/engine/ec.rb
CHANGED
@@ -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
|
data/lib/erubis/engine/ejava.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
##
|
2
|
-
## $Release: 2.
|
3
|
-
## copyright(c) 2006-
|
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
|
-
[:
|
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
|
-
@
|
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} #{@
|
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 << @
|
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 << " #{@
|
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 " << @
|
77
|
-
#src << @indent << "System.out.print(" << @
|
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.
|
3
|
-
## copyright(c) 2006-
|
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 << [:
|
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
|
-
@
|
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 #{@
|
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 << @
|
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 << "#{@
|
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(' << @
|
81
|
+
src << @indent << 'document.write(' << @bufvar << ".join(\"\"));\n"
|
82
82
|
else
|
83
|
-
src << @indent << @
|
83
|
+
src << @indent << @bufvar << ".join(\"\");\n"
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
##
|
2
|
-
## $Release: 2.
|
3
|
-
## copyright(c) 2006-
|
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
|
data/lib/erubis/engine/eperl.rb
CHANGED
data/lib/erubis/engine/ephp.rb
CHANGED
data/lib/erubis/engine/eruby.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
##
|
2
|
-
## $Release: 2.
|
3
|
-
## copyright(c) 2006-
|
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 << "
|
41
|
+
# src << "#{@bufvar} = [];"
|
41
42
|
#end
|
42
43
|
#++
|
43
44
|
|
44
45
|
def add_text(src, text)
|
45
|
-
src << "
|
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 <<
|
56
|
+
src << " #{@bufvar} << (" << code << ').to_s;'
|
56
57
|
end
|
57
58
|
|
58
59
|
def add_expr_escaped(src, code)
|
59
|
-
src <<
|
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 << "\
|
71
|
+
# src << "\n#{@bufvar}.join\n"
|
71
72
|
#end
|
72
73
|
#++
|
73
74
|
|