erubis 1.1.0 → 2.0.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/ChangeLog +45 -18
- data/README.txt +80 -0
- data/benchmark/erubybench-lib.rb +189 -0
- data/benchmark/erubybench.rb +364 -0
- data/benchmark/erubybench.rhtml +61 -0
- data/benchmark/erubybench.yaml +61 -0
- data/bin/erubis +4 -180
- data/contrib/erubis +2297 -0
- data/contrib/inline-require +151 -0
- data/doc-api/classes/Erubis.html +236 -0
- data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +175 -0
- data/doc-api/classes/Erubis/ArrayBufferEruby.html +120 -0
- data/doc-api/classes/Erubis/ArrayEnhancer.html +174 -0
- data/doc-api/classes/Erubis/ArrayEruby.html +120 -0
- data/doc-api/classes/Erubis/BiPatternEnhancer.html +212 -0
- data/doc-api/classes/Erubis/BiPatternEruby.html +120 -0
- data/doc-api/classes/Erubis/CommandOptionError.html +113 -0
- data/doc-api/classes/Erubis/Context.html +249 -0
- data/doc-api/classes/Erubis/Ec.html +399 -0
- data/doc-api/classes/Erubis/Ejava.html +366 -0
- data/doc-api/classes/Erubis/Ejavascript.html +390 -0
- data/doc-api/classes/Erubis/Engine.html +711 -0
- data/doc-api/classes/Erubis/Eperl.html +350 -0
- data/doc-api/classes/Erubis/Ephp.html +308 -0
- data/doc-api/classes/Erubis/ErubisError.html +117 -0
- data/doc-api/classes/Erubis/Eruby.html +310 -0
- data/doc-api/classes/Erubis/EscapeEnhancer.html +167 -0
- data/doc-api/classes/Erubis/EscapedEc.html +120 -0
- data/doc-api/classes/Erubis/EscapedEjava.html +120 -0
- data/doc-api/classes/Erubis/EscapedEjavascript.html +120 -0
- data/doc-api/classes/Erubis/EscapedEperl.html +120 -0
- data/doc-api/classes/Erubis/EscapedEphp.html +120 -0
- data/doc-api/classes/Erubis/EscapedEruby.html +127 -0
- data/doc-api/classes/Erubis/EscapedEscheme.html +120 -0
- data/doc-api/classes/Erubis/Escheme.html +389 -0
- data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +264 -0
- data/doc-api/classes/Erubis/HeaderFooterEruby.html +120 -0
- data/doc-api/classes/Erubis/Main.html +318 -0
- data/doc-api/classes/Erubis/NoTextEnhancer.html +159 -0
- data/doc-api/classes/Erubis/NoTextEruby.html +120 -0
- data/doc-api/classes/Erubis/OptimizedEruby.html +445 -0
- data/doc-api/classes/Erubis/OptimizedXmlEruby.html +163 -0
- data/doc-api/classes/Erubis/PercentLineEnhancer.html +174 -0
- data/doc-api/classes/Erubis/PercentLineEruby.html +120 -0
- data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +212 -0
- data/doc-api/classes/Erubis/PrintEnabledEruby.html +120 -0
- data/doc-api/classes/Erubis/PrintOutEnhancer.html +244 -0
- data/doc-api/classes/Erubis/PrintOutEruby.html +120 -0
- data/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html +121 -0
- data/doc-api/classes/Erubis/SimplifiedEruby.html +120 -0
- data/doc-api/classes/Erubis/SimplifyEnhancer.html +185 -0
- data/doc-api/classes/Erubis/StdoutEnhancer.html +173 -0
- data/doc-api/classes/Erubis/StdoutEruby.html +120 -0
- data/doc-api/classes/Erubis/StdoutSimplifiedEruby.html +121 -0
- data/doc-api/classes/Erubis/StringBufferEnhancer.html +174 -0
- data/doc-api/classes/Erubis/StringBufferEruby.html +120 -0
- data/doc-api/classes/Erubis/StringIOEruby.html +120 -0
- data/doc-api/classes/Erubis/TinyEruby.html +305 -0
- data/doc-api/classes/Erubis/XmlEruby.html +130 -0
- data/doc-api/classes/Erubis/XmlHelper.html +193 -0
- data/doc-api/created.rid +1 -0
- data/doc-api/files/__/README_txt.html +214 -0
- data/doc-api/files/erubis/engine/ec_rb.html +115 -0
- data/doc-api/files/erubis/engine/ejava_rb.html +115 -0
- data/doc-api/files/erubis/engine/ejavascript_rb.html +115 -0
- data/doc-api/files/erubis/engine/enhanced_rb.html +115 -0
- data/doc-api/files/erubis/engine/eperl_rb.html +115 -0
- data/doc-api/files/erubis/engine/ephp_rb.html +115 -0
- data/doc-api/files/erubis/engine/eruby_rb.html +115 -0
- data/doc-api/files/erubis/engine/escheme_rb.html +115 -0
- data/doc-api/files/erubis/engine/optimized_rb.html +114 -0
- data/doc-api/files/erubis/engine_rb.html +114 -0
- data/doc-api/files/erubis/enhancer_rb.html +114 -0
- data/doc-api/files/erubis/helper_rb.html +107 -0
- data/doc-api/files/erubis/local-setting_rb.html +107 -0
- data/doc-api/files/erubis/main_rb.html +125 -0
- data/doc-api/files/erubis/tiny_rb.html +107 -0
- data/doc-api/files/erubis_rb.html +118 -0
- data/doc-api/fr_class_index.html +77 -0
- data/doc-api/fr_file_index.html +43 -0
- data/doc-api/fr_method_index.html +157 -0
- data/doc-api/index.html +24 -0
- data/doc-api/rdoc-style.css +208 -0
- data/doc/users-guide.html +1507 -375
- data/examples/Makefile +53 -0
- data/examples/example.ec +24 -0
- data/examples/example.ejava +41 -0
- data/examples/example.ejavascript +16 -0
- data/examples/example.eperl +16 -0
- data/examples/example.ephp +17 -0
- data/examples/example.eruby +15 -0
- data/examples/example.escheme +26 -0
- data/lib/erubis.rb +37 -269
- data/lib/erubis/engine.rb +260 -0
- data/lib/erubis/engine/ec.rb +106 -0
- data/lib/erubis/engine/ejava.rb +101 -0
- data/lib/erubis/engine/ejavascript.rb +104 -0
- data/lib/erubis/engine/enhanced.rb +102 -0
- data/lib/erubis/engine/eperl.rb +83 -0
- data/lib/erubis/engine/ephp.rb +84 -0
- data/lib/erubis/engine/eruby.rb +91 -0
- data/lib/erubis/engine/escheme.rb +96 -0
- data/lib/erubis/engine/optimized.rb +114 -0
- data/lib/erubis/enhancer.rb +487 -0
- data/lib/erubis/helper.rb +53 -0
- data/lib/erubis/local-setting.rb +10 -0
- data/lib/erubis/main.rb +368 -0
- data/lib/erubis/tiny.rb +65 -0
- data/test/assert-text-equal.rb +45 -0
- data/test/test-bin.rb +222 -45
- data/test/test-engines.rb +343 -0
- data/test/test-erubis.rb +836 -501
- data/test/test.rb +27 -0
- data/test/testutil.rb +86 -0
- metadata +131 -8
- data/README +0 -50
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
##
|
|
2
|
+
## $Rev: 21 $
|
|
3
|
+
## $Release: 2.0.0 $
|
|
4
|
+
## copyright(c) 2006 kuwata-lab all rights reserved.
|
|
5
|
+
##
|
|
6
|
+
|
|
7
|
+
require 'erubis/engine'
|
|
8
|
+
require 'erubis/enhancer'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
module Erubis
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
## engine for JavaScript
|
|
16
|
+
##
|
|
17
|
+
class Ejavascript < Engine
|
|
18
|
+
|
|
19
|
+
def self.supported_properties() # :nodoc:
|
|
20
|
+
list = super
|
|
21
|
+
#list << [:indent, '', "indent spaces (ex. ' ')"]
|
|
22
|
+
#list << [:buf, '_buf', "output buffer name"]
|
|
23
|
+
return list
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def initialize(input, properties={})
|
|
27
|
+
@indent = properties[:indent] || ''
|
|
28
|
+
@buf = properties[:out] || '_buf'
|
|
29
|
+
#@bufclass = properties[:outclass] || 'StringBuffer'
|
|
30
|
+
super
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def add_preamble(src)
|
|
34
|
+
src << "#{@indent}var #{@buf} = [];"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def escape_text(text)
|
|
38
|
+
@@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
|
|
39
|
+
return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
#--
|
|
43
|
+
#def escaped_expr(code)
|
|
44
|
+
# @escape ||= 'escape'
|
|
45
|
+
# return "#{@escape}(#{code.strip})"
|
|
46
|
+
#end
|
|
47
|
+
#++
|
|
48
|
+
|
|
49
|
+
def add_indent(src, indent)
|
|
50
|
+
src << (src.empty? || src[-1] == ?\n ? indent : ' ')
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def add_text(src, text)
|
|
54
|
+
return if text.empty?
|
|
55
|
+
add_indent(src, @indent)
|
|
56
|
+
src << @buf << '.push("'
|
|
57
|
+
s = escape_text(text)
|
|
58
|
+
if s[-1] == ?\n
|
|
59
|
+
s[-2, 2] = ''
|
|
60
|
+
src << s << "\");\n"
|
|
61
|
+
else
|
|
62
|
+
src << s << "\");"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def add_stmt(src, code)
|
|
67
|
+
src << code
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def add_expr_literal(src, code)
|
|
71
|
+
add_indent(src, @indent)
|
|
72
|
+
src << @buf << '.push(' << code.strip << ');'
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def add_expr_escaped(src, code)
|
|
76
|
+
add_indent(src, @indent)
|
|
77
|
+
src << @buf << '.push(' << escaped_expr(code) << ');'
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def add_expr_debug(src, code)
|
|
81
|
+
add_indent(src, @indent)
|
|
82
|
+
code.strip!
|
|
83
|
+
src << "alert(\"*** debug: #{code}=\"+(#{code}));"
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def add_postamble(src)
|
|
87
|
+
src << "\n" if src[-1] == ?;
|
|
88
|
+
src << @indent << 'document.write(' << @buf << ".join(\"\"));\n"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
class EscapedEjavascript < Ejavascript
|
|
95
|
+
include EscapeEnhancer
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
#class XmlEjavascript < Ejavascript
|
|
100
|
+
# include EscapeEnhancer
|
|
101
|
+
#end
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
end
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
##
|
|
2
|
+
## $Rev: 19 $
|
|
3
|
+
## $Release: 2.0.0 $
|
|
4
|
+
## copyright(c) 2006 kuwata-lab all rights reserved.
|
|
5
|
+
##
|
|
6
|
+
|
|
7
|
+
require 'erubis/enhancer'
|
|
8
|
+
require 'erubis/engine/eruby'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
module Erubis
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
#--
|
|
15
|
+
## moved to engine/ruby.rb
|
|
16
|
+
#class EscapedEruby < Eruby
|
|
17
|
+
# include EscapeEnhancer
|
|
18
|
+
#end
|
|
19
|
+
#++
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
#--
|
|
23
|
+
### (obsolete)
|
|
24
|
+
#class FastEruby < Eruby
|
|
25
|
+
# include FastEnhancer
|
|
26
|
+
#end
|
|
27
|
+
#++
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class StdoutEruby < Eruby
|
|
31
|
+
include StdoutEnhancer
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
class PrintOutEruby < Eruby
|
|
36
|
+
include PrintOutEnhancer
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
class PrintEnabledEruby < Eruby
|
|
41
|
+
include PrintEnabledEnhancer
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
class ArrayEruby < Eruby
|
|
46
|
+
include ArrayEnhancer
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
class ArrayBufferEruby < Eruby
|
|
51
|
+
include ArrayBufferEnhancer
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
class StringBufferEruby < Eruby
|
|
56
|
+
include StringBufferEnhancer
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
class StringIOEruby < Eruby
|
|
61
|
+
include StringIOEnhancer
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
class NoTextEruby < Eruby
|
|
66
|
+
include NoTextEnhancer
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class SimplifiedEruby < Eruby
|
|
71
|
+
include SimplifyEnhancer
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
class StdoutSimplifiedEruby < Eruby
|
|
76
|
+
include StdoutEnhancer
|
|
77
|
+
include SimplifyEnhancer
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class PrintOutSimplifiedEruby < Eruby
|
|
82
|
+
include PrintOutEnhancer
|
|
83
|
+
include SimplifyEnhancer
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
class BiPatternEruby < Eruby
|
|
88
|
+
include BiPatternEnhancer
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
class PercentLineEruby < Eruby
|
|
93
|
+
include PercentLineEnhancer
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
class HeaderFooterEruby < Eruby
|
|
98
|
+
include HeaderFooterEnhancer
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
end
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
##
|
|
2
|
+
## $Rev: 19 $
|
|
3
|
+
## $Release: 2.0.0 $
|
|
4
|
+
## copyright(c) 2006 kuwata-lab all rights reserved.
|
|
5
|
+
##
|
|
6
|
+
|
|
7
|
+
require 'erubis/engine'
|
|
8
|
+
require 'erubis/enhancer'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
module Erubis
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
## engine for Perl
|
|
16
|
+
##
|
|
17
|
+
class Eperl < Engine
|
|
18
|
+
|
|
19
|
+
def self.supported_properties() # :nodoc:
|
|
20
|
+
list = super
|
|
21
|
+
list << [:func, 'print', "function name"]
|
|
22
|
+
return list
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def initialize(input, properties={})
|
|
26
|
+
@func = properties[:func] || 'print'
|
|
27
|
+
super
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def add_preamble(src)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def escape_text(text)
|
|
34
|
+
return text.gsub!(/['\\]/, '\\\\\&') || text
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def add_text(src, text)
|
|
38
|
+
src << @func << "('" << escape_text(text) << "'); " unless text.empty?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
#--
|
|
42
|
+
#def escaped_expr(code)
|
|
43
|
+
# @escape ||= 'escape'
|
|
44
|
+
# return "escape(#{code.strip})"
|
|
45
|
+
#end
|
|
46
|
+
#++
|
|
47
|
+
|
|
48
|
+
def add_expr_literal(src, code)
|
|
49
|
+
src << @func << "(" << code.strip << "); "
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def add_expr_escaped(src, code)
|
|
53
|
+
src << @func << "(" << escaped_expr(code) << "); "
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def add_expr_debug(src, code)
|
|
57
|
+
code.strip!
|
|
58
|
+
s = code.gsub(/\'/, "\\'")
|
|
59
|
+
src << @func << "('*** debug: #{code}=', #{code}, \"\\n\");"
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def add_stmt(src, code)
|
|
63
|
+
src << code
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def add_postamble(src)
|
|
67
|
+
src << "\n" unless src[-1] == ?\n
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
class EscapedEperl < Eperl
|
|
74
|
+
include EscapeEnhancer
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
#class XmlEperl < Eperl
|
|
79
|
+
# include EscapeEnhancer
|
|
80
|
+
#end
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
end
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
##
|
|
2
|
+
## $Rev: 19 $
|
|
3
|
+
## $Release: 2.0.0 $
|
|
4
|
+
## copyright(c) 2006 kuwata-lab all rights reserved.
|
|
5
|
+
##
|
|
6
|
+
|
|
7
|
+
require 'erubis/engine'
|
|
8
|
+
require 'erubis/enhancer'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
module Erubis
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
## engine for PHP
|
|
16
|
+
##
|
|
17
|
+
class Ephp < Engine
|
|
18
|
+
|
|
19
|
+
def self.supported_properties() # :nodoc:
|
|
20
|
+
return super
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
#--
|
|
24
|
+
#def add_preamble(src)
|
|
25
|
+
#end
|
|
26
|
+
#++
|
|
27
|
+
|
|
28
|
+
def escape_text(text)
|
|
29
|
+
return text.gsub!(/<\?xml\b/, '<<?php ?>?xml') || text
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def add_text(src, text)
|
|
33
|
+
src << escape_text(text)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def escaped_expr(code)
|
|
37
|
+
@escape ||= 'htmlspecialchars'
|
|
38
|
+
return "#{@escape}(#{code.strip})"
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def add_expr_literal(src, code)
|
|
42
|
+
src << "<?php echo #{code.strip}; ?>"
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def add_expr_escaped(src, code)
|
|
46
|
+
src << "<?php echo #{escaped_expr(code)}; ?>"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def add_expr_debug(src, code)
|
|
50
|
+
code.strip!
|
|
51
|
+
s = code.gsub(/\'/, "\\'")
|
|
52
|
+
src << "<?php error_log('*** debug: #{s}='.(#{code}), 0); ?>"
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def add_stmt(src, code)
|
|
56
|
+
src << "<?php"
|
|
57
|
+
src << " " if code[0] != ?\ #
|
|
58
|
+
if code[-1] == ?\n
|
|
59
|
+
code.chomp!
|
|
60
|
+
src << code << "?>\n"
|
|
61
|
+
else
|
|
62
|
+
src << code << "?>"
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
#--
|
|
67
|
+
#def add_postamble(src)
|
|
68
|
+
#end
|
|
69
|
+
#++
|
|
70
|
+
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
class EscapedEphp < Ephp
|
|
75
|
+
include EscapeEnhancer
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
#class XmlEphp < Ephp
|
|
80
|
+
# include EscapeEnhancer
|
|
81
|
+
#end
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
##
|
|
2
|
+
## $Rev: 21 $
|
|
3
|
+
## $Release: 2.0.0 $
|
|
4
|
+
## copyright(c) 2006 kuwata-lab all rights reserved.
|
|
5
|
+
##
|
|
6
|
+
|
|
7
|
+
require 'erubis/engine'
|
|
8
|
+
require 'erubis/enhancer'
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
module Erubis
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
##
|
|
15
|
+
## engine for Ruby
|
|
16
|
+
##
|
|
17
|
+
class Eruby < Engine
|
|
18
|
+
#include StringBufferEnhancer
|
|
19
|
+
include ArrayBufferEnhancer
|
|
20
|
+
|
|
21
|
+
def self.supported_properties() # :nodoc:
|
|
22
|
+
return super
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def escape_text(text)
|
|
26
|
+
text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def escaped_expr(code)
|
|
30
|
+
@escape ||= "Erubis::XmlHelper.escape_xml"
|
|
31
|
+
return "#{@escape}(#{code})"
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
#--
|
|
35
|
+
#def add_preamble(src)
|
|
36
|
+
# src << "_buf = [];"
|
|
37
|
+
#end
|
|
38
|
+
#++
|
|
39
|
+
|
|
40
|
+
def add_text(src, text)
|
|
41
|
+
src << " _buf << '" << escape_text(text) << "';" unless text.empty?
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def add_stmt(src, code)
|
|
45
|
+
#src << code << ';'
|
|
46
|
+
src << code
|
|
47
|
+
src << ';' unless code[-1] == ?\n
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def add_expr_literal(src, code)
|
|
51
|
+
src << ' _buf << (' << code << ').to_s;'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def add_expr_escaped(src, code)
|
|
55
|
+
src << ' _buf << ' << escaped_expr(code) << ';'
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def add_expr_debug(src, code)
|
|
59
|
+
code.strip!
|
|
60
|
+
s = (code.dump =~ /\A"(.*)"\z/) && $1
|
|
61
|
+
src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
#--
|
|
65
|
+
#def add_postamble(src)
|
|
66
|
+
# src << "\n_buf.join\n"
|
|
67
|
+
#end
|
|
68
|
+
#++
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
##
|
|
74
|
+
## swtich '<%= %>' to escaped and '<%== %>' to not escaped
|
|
75
|
+
##
|
|
76
|
+
class EscapedEruby < Eruby
|
|
77
|
+
include EscapeEnhancer
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
##
|
|
82
|
+
## sanitize expression (<%= ... %>) by default
|
|
83
|
+
##
|
|
84
|
+
## this is equivalent to EscapedEruby and is prepared only for compatibility.
|
|
85
|
+
##
|
|
86
|
+
class XmlEruby < Eruby
|
|
87
|
+
include EscapeEnhancer
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
end
|