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.
Files changed (116) hide show
  1. data/ChangeLog +45 -18
  2. data/README.txt +80 -0
  3. data/benchmark/erubybench-lib.rb +189 -0
  4. data/benchmark/erubybench.rb +364 -0
  5. data/benchmark/erubybench.rhtml +61 -0
  6. data/benchmark/erubybench.yaml +61 -0
  7. data/bin/erubis +4 -180
  8. data/contrib/erubis +2297 -0
  9. data/contrib/inline-require +151 -0
  10. data/doc-api/classes/Erubis.html +236 -0
  11. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +175 -0
  12. data/doc-api/classes/Erubis/ArrayBufferEruby.html +120 -0
  13. data/doc-api/classes/Erubis/ArrayEnhancer.html +174 -0
  14. data/doc-api/classes/Erubis/ArrayEruby.html +120 -0
  15. data/doc-api/classes/Erubis/BiPatternEnhancer.html +212 -0
  16. data/doc-api/classes/Erubis/BiPatternEruby.html +120 -0
  17. data/doc-api/classes/Erubis/CommandOptionError.html +113 -0
  18. data/doc-api/classes/Erubis/Context.html +249 -0
  19. data/doc-api/classes/Erubis/Ec.html +399 -0
  20. data/doc-api/classes/Erubis/Ejava.html +366 -0
  21. data/doc-api/classes/Erubis/Ejavascript.html +390 -0
  22. data/doc-api/classes/Erubis/Engine.html +711 -0
  23. data/doc-api/classes/Erubis/Eperl.html +350 -0
  24. data/doc-api/classes/Erubis/Ephp.html +308 -0
  25. data/doc-api/classes/Erubis/ErubisError.html +117 -0
  26. data/doc-api/classes/Erubis/Eruby.html +310 -0
  27. data/doc-api/classes/Erubis/EscapeEnhancer.html +167 -0
  28. data/doc-api/classes/Erubis/EscapedEc.html +120 -0
  29. data/doc-api/classes/Erubis/EscapedEjava.html +120 -0
  30. data/doc-api/classes/Erubis/EscapedEjavascript.html +120 -0
  31. data/doc-api/classes/Erubis/EscapedEperl.html +120 -0
  32. data/doc-api/classes/Erubis/EscapedEphp.html +120 -0
  33. data/doc-api/classes/Erubis/EscapedEruby.html +127 -0
  34. data/doc-api/classes/Erubis/EscapedEscheme.html +120 -0
  35. data/doc-api/classes/Erubis/Escheme.html +389 -0
  36. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +264 -0
  37. data/doc-api/classes/Erubis/HeaderFooterEruby.html +120 -0
  38. data/doc-api/classes/Erubis/Main.html +318 -0
  39. data/doc-api/classes/Erubis/NoTextEnhancer.html +159 -0
  40. data/doc-api/classes/Erubis/NoTextEruby.html +120 -0
  41. data/doc-api/classes/Erubis/OptimizedEruby.html +445 -0
  42. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +163 -0
  43. data/doc-api/classes/Erubis/PercentLineEnhancer.html +174 -0
  44. data/doc-api/classes/Erubis/PercentLineEruby.html +120 -0
  45. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +212 -0
  46. data/doc-api/classes/Erubis/PrintEnabledEruby.html +120 -0
  47. data/doc-api/classes/Erubis/PrintOutEnhancer.html +244 -0
  48. data/doc-api/classes/Erubis/PrintOutEruby.html +120 -0
  49. data/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html +121 -0
  50. data/doc-api/classes/Erubis/SimplifiedEruby.html +120 -0
  51. data/doc-api/classes/Erubis/SimplifyEnhancer.html +185 -0
  52. data/doc-api/classes/Erubis/StdoutEnhancer.html +173 -0
  53. data/doc-api/classes/Erubis/StdoutEruby.html +120 -0
  54. data/doc-api/classes/Erubis/StdoutSimplifiedEruby.html +121 -0
  55. data/doc-api/classes/Erubis/StringBufferEnhancer.html +174 -0
  56. data/doc-api/classes/Erubis/StringBufferEruby.html +120 -0
  57. data/doc-api/classes/Erubis/StringIOEruby.html +120 -0
  58. data/doc-api/classes/Erubis/TinyEruby.html +305 -0
  59. data/doc-api/classes/Erubis/XmlEruby.html +130 -0
  60. data/doc-api/classes/Erubis/XmlHelper.html +193 -0
  61. data/doc-api/created.rid +1 -0
  62. data/doc-api/files/__/README_txt.html +214 -0
  63. data/doc-api/files/erubis/engine/ec_rb.html +115 -0
  64. data/doc-api/files/erubis/engine/ejava_rb.html +115 -0
  65. data/doc-api/files/erubis/engine/ejavascript_rb.html +115 -0
  66. data/doc-api/files/erubis/engine/enhanced_rb.html +115 -0
  67. data/doc-api/files/erubis/engine/eperl_rb.html +115 -0
  68. data/doc-api/files/erubis/engine/ephp_rb.html +115 -0
  69. data/doc-api/files/erubis/engine/eruby_rb.html +115 -0
  70. data/doc-api/files/erubis/engine/escheme_rb.html +115 -0
  71. data/doc-api/files/erubis/engine/optimized_rb.html +114 -0
  72. data/doc-api/files/erubis/engine_rb.html +114 -0
  73. data/doc-api/files/erubis/enhancer_rb.html +114 -0
  74. data/doc-api/files/erubis/helper_rb.html +107 -0
  75. data/doc-api/files/erubis/local-setting_rb.html +107 -0
  76. data/doc-api/files/erubis/main_rb.html +125 -0
  77. data/doc-api/files/erubis/tiny_rb.html +107 -0
  78. data/doc-api/files/erubis_rb.html +118 -0
  79. data/doc-api/fr_class_index.html +77 -0
  80. data/doc-api/fr_file_index.html +43 -0
  81. data/doc-api/fr_method_index.html +157 -0
  82. data/doc-api/index.html +24 -0
  83. data/doc-api/rdoc-style.css +208 -0
  84. data/doc/users-guide.html +1507 -375
  85. data/examples/Makefile +53 -0
  86. data/examples/example.ec +24 -0
  87. data/examples/example.ejava +41 -0
  88. data/examples/example.ejavascript +16 -0
  89. data/examples/example.eperl +16 -0
  90. data/examples/example.ephp +17 -0
  91. data/examples/example.eruby +15 -0
  92. data/examples/example.escheme +26 -0
  93. data/lib/erubis.rb +37 -269
  94. data/lib/erubis/engine.rb +260 -0
  95. data/lib/erubis/engine/ec.rb +106 -0
  96. data/lib/erubis/engine/ejava.rb +101 -0
  97. data/lib/erubis/engine/ejavascript.rb +104 -0
  98. data/lib/erubis/engine/enhanced.rb +102 -0
  99. data/lib/erubis/engine/eperl.rb +83 -0
  100. data/lib/erubis/engine/ephp.rb +84 -0
  101. data/lib/erubis/engine/eruby.rb +91 -0
  102. data/lib/erubis/engine/escheme.rb +96 -0
  103. data/lib/erubis/engine/optimized.rb +114 -0
  104. data/lib/erubis/enhancer.rb +487 -0
  105. data/lib/erubis/helper.rb +53 -0
  106. data/lib/erubis/local-setting.rb +10 -0
  107. data/lib/erubis/main.rb +368 -0
  108. data/lib/erubis/tiny.rb +65 -0
  109. data/test/assert-text-equal.rb +45 -0
  110. data/test/test-bin.rb +222 -45
  111. data/test/test-engines.rb +343 -0
  112. data/test/test-erubis.rb +836 -501
  113. data/test/test.rb +27 -0
  114. data/test/testutil.rb +86 -0
  115. metadata +131 -8
  116. data/README +0 -50
@@ -0,0 +1,53 @@
1
+ all = example.rb example.php example.c example.java example.scm example.pl example.js
2
+
3
+ all: $(all)
4
+
5
+ example.rb: example.eruby
6
+ erubis -l ruby example.eruby > example.rb
7
+
8
+
9
+ example.php: example.ephp
10
+ erubis -l php example.ephp > example.php
11
+
12
+ example.c: example.ec
13
+ erubis -l c example.ec > example.c
14
+
15
+ example.java: example.ejava
16
+ erubis -l java example.ejava > example.java
17
+
18
+ example.scm: example.escheme
19
+ erubis -l scheme --func=display example.escheme > example.scm
20
+ # erubis -l scheme example.escheme > example.scm
21
+
22
+ example.pl: example.eperl
23
+ erubis -l perl example.eperl > example.pl
24
+
25
+ example.js: example.ejavascript
26
+ erubis -l javascript example.ejavascript > example.js
27
+
28
+
29
+ ###----------
30
+
31
+ src = example.eruby example.ephp example.ec example.ejava example.escheme example.eperl example.ejavascript Makefile
32
+
33
+ clean:
34
+ rm -f `ruby -e 'puts(Dir.glob("*.*") - %w[$(src)])'`
35
+ # rm -f $(all)
36
+
37
+ compile: a.out example.class
38
+
39
+ a.out: example.c
40
+ cc example.c
41
+
42
+ example.class: example.java
43
+ jikes example.java
44
+
45
+ output: $(all) a.out example.class
46
+ erubis example.eruby > example.ruby.out
47
+ php example.php > example.php.out
48
+ ./a.out foo bar baz > example.c.out
49
+ java example > example.java.out
50
+ gosh example.scm > example.scm.out
51
+ # guile example.scm > example.scm.out
52
+ perl example.pl > example.pl.out
53
+
@@ -0,0 +1,24 @@
1
+ <%
2
+ #include <stdio.h>
3
+
4
+ int main(int argc, char *argv[])
5
+ {
6
+ int i;
7
+
8
+ %>
9
+ <p>Hello <%= "%s", argv[0] %>!</p>
10
+ <table>
11
+ <tbody>
12
+ <% for (i = 1; i < argc; i++) { %>
13
+ <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>">
14
+ <td><%= "%d", i %></td>
15
+ <td><%= "%s", argv[i] %></td>
16
+ </tr>
17
+ <% } %>
18
+ </tbody>
19
+ </table>
20
+ <%
21
+
22
+ return 0;
23
+ }
24
+ %>
@@ -0,0 +1,41 @@
1
+ <%
2
+ import java.util.*;
3
+
4
+ public class example {
5
+
6
+ public static void main(String[] args) {
7
+ String user = "Erubis";
8
+ String[] list = { "<aaa>", "b&b", "\"ccc\"" };
9
+ StringBuffer _buf = new StringBuffer();
10
+ %>
11
+ <p>Hello <%= user %>!</p>
12
+ <table>
13
+ <tbody>
14
+ <% for (int i = 0; i < list.length; i++) { %>
15
+ <tr bgcolor="<%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %>">
16
+ <td><%= i + 1 %></td>
17
+ <td><%== list[i] %></td>
18
+ </tr>
19
+ <% } %>
20
+ </tbody>
21
+ </table>
22
+ <%
23
+ System.out.print(_buf.toString());
24
+ }
25
+
26
+ public static String escape(String s) {
27
+ StringBuffer sb = new StringBuffer();
28
+ for (int i = 0; i < s.length(); i++) {
29
+ char ch = s.charAt(i);
30
+ switch (ch) {
31
+ case '<': sb.append("&lt;"); break;
32
+ case '>': sb.append("&gt;"); break;
33
+ case '&': sb.append("&amp;"); break;
34
+ case '"': sb.append("&quot;"); break;
35
+ default: sb.append(ch);
36
+ }
37
+ }
38
+ return sb.toString();
39
+ }
40
+ }
41
+ %>
@@ -0,0 +1,16 @@
1
+ <%
2
+ var user = 'Erubis';
3
+ var list = ['<aaa>', 'b&b', '"ccc"'];
4
+ %>
5
+ <p>Hello <%= user %>!</p>
6
+ <table>
7
+ <tbody>
8
+ <% var i; %>
9
+ <% for (i = 0; i < list.length; i++) { %>
10
+ <tr bgcolor="<%= i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
11
+ <td><%= i + 1 %></td>
12
+ <td><%= list[i] %></td>
13
+ </tr>
14
+ <% } %>
15
+ </tbody>
16
+ </table>
@@ -0,0 +1,16 @@
1
+ <%
2
+ my $user = 'Erubis';
3
+ my @list = ('<aaa>', 'b&b', '"ccc"');
4
+ %>
5
+ <p>Hello <%= $user %>!</p>
6
+ <table>
7
+ <tbody>
8
+ <% $i = 0; %>
9
+ <% for $item (@list) { %>
10
+ <tr bgcolor=<%= ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
11
+ <td><%= $i %></td>
12
+ <td><%= $item %></td>
13
+ </tr>
14
+ <% } %>
15
+ </tbody>
16
+ </table>
@@ -0,0 +1,17 @@
1
+ <%
2
+ $user = "World";
3
+ $list = array('<aaa>', 'b&b', '"ccc"');
4
+ %>
5
+ <p>Hello <%= $user %>!</p>
6
+ <table>
7
+ <tbody>
8
+ <% $i = 0 %>
9
+ <% foreach ($list as $item) { %>
10
+ <% $i++; %>
11
+ <tr bgcolor="<%= $i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
12
+ <td><%= $i %></td>
13
+ <td><%== $item %></td>
14
+ </tr>
15
+ <% } %>
16
+ </tbody>
17
+ </table>
@@ -0,0 +1,15 @@
1
+ <%
2
+ user = 'Erubis'
3
+ list = ['<aaa>', 'b&b', '"ccc"']
4
+ %>
5
+ <p>Hello <%= user %>!</p>
6
+ <table>
7
+ <tbody>
8
+ <% list.each_with_index do |item, i| %>
9
+ <tr bgcolor="<%= i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %>">
10
+ <td><%= i + 1 %></td>
11
+ <td><%== item %></td>
12
+ </tr>
13
+ <% end %>
14
+ </tbody>
15
+ </table>
@@ -0,0 +1,26 @@
1
+ <%
2
+ (let ((user "Erubis")
3
+ (items '("<aaa>" "b&b" "\"ccc\""))
4
+ (i 0))
5
+ %>
6
+ <p>Hello <%= user %>!</p>
7
+ <table>
8
+ <tbody>
9
+ <%
10
+ (for-each
11
+ (lambda (item)
12
+ (set! i (+ i 1))
13
+ %>
14
+ <tr bgcolor="<%= (if (= (modulo i 2) 0) "#FFCCCC" "#CCCCFF") %>">
15
+ <td><%= i %></td>
16
+ <td><%= item %></td>
17
+ </tr>
18
+ <%
19
+ ) ; lambda end
20
+ items) ; for-each end
21
+ %>
22
+ </tbody>
23
+ </table>
24
+ <%
25
+ ) ; let end
26
+ %>
@@ -1,6 +1,6 @@
1
1
  ##
2
- ## $Rev: 5 $
3
- ## $Release: 1.1.0 $
2
+ ## $Rev: 21 $
3
+ ## $Release: 2.0.0 $
4
4
  ## copyright(c) 2006 kuwata-lab all rights reserved.
5
5
  ##
6
6
 
@@ -9,294 +9,62 @@
9
9
  ##
10
10
  ## * class Eruby - normal eRuby class
11
11
  ## * class XmlEruby - eRuby class which escape '&<>"' into '&amp;&lt;&gt;&quot;'
12
- ## * module FastEnhancer - make eRuby faster
13
- ## * module StdoutEnhance - use $stdout instead of String as output
14
- ## * module PrintEnhance - enable to write print statement in <% ... %>
12
+ ## * module StdoutEnhancer - use $stdout instead of String as output
13
+ ## * module PrintEnhancer - enable to write print statement in <% ... %>
14
+ ## * class OptimizedEruby - optimized Eruby class faster than FastEruby
15
+ ## * class OptimizedXmlEruby - optimized XmlEruby class faster than FastXmlEruby
15
16
  ##
16
17
  ## example:
17
- ## list = ['<aaa>', 'b&b', '"ccc"']
18
- ## input = <<-END
18
+ ## input = <<'END'
19
19
  ## <ul>
20
- ## <% for item in list %>
20
+ ## <% for item in @list %>
21
21
  ## <li><%= item %>
22
22
  ## <%== item %></li>
23
23
  ## <% end %>
24
24
  ## </ul>
25
25
  ## END
26
- ## eruby = Erubis::XmlEruby.new(input)
26
+ ## list = ['<aaa>', 'b&b', '"ccc"']
27
+ ## eruby = Erubis::Eruby.new(input)
27
28
  ## puts "--- source ---"
28
29
  ## puts eruby.src
29
30
  ## puts "--- result ---"
30
- ## puts eruby.result(binding())
31
- ## # or puts eruby.evaluate(:list=>list)
31
+ ## puts eruby.evaluate(:list=>list)
32
+ ## # or puts eruby.result(binding())
32
33
  ##
33
34
  ## result:
34
35
  ## --- source ---
35
- ## _out = ""; _out << " <ul>\n"
36
+ ## _buf = ""; _buf << " <ul>\n"
36
37
  ## for item in list
37
- ## _out << " <li>"; _out << Erubis::XmlEruby.escape( item ); _out << "\n"
38
- ## _out << " "; _out << ( item ).to_s; _out << "</li>\n"
38
+ ## _buf << " <li>"; _buf << ( item ).to_s; _buf << "\n"
39
+ ## _buf << " "; _buf << Erubis::XmlEruby.escape( item ); _buf << "</li>\n"
39
40
  ## end
40
- ## _out << " </ul>\n"
41
- ## _out
41
+ ## _buf << " </ul>\n"
42
+ ## _buf
42
43
  ## --- result ---
43
44
  ## <ul>
44
- ## <li>&lt;aaa&gt;
45
- ## <aaa></li>
46
- ## <li>b&amp;b
47
- ## b&b</li>
48
- ## <li>&quot;ccc&quot;
49
- ## "ccc"</li>
45
+ ## <li><aaa>
46
+ ## &lt;aaa&gt;</li>
47
+ ## <li>b&b
48
+ ## b&amp;b</li>
49
+ ## <li>"ccc"
50
+ ## &quot;ccc&quot;</li>
50
51
  ## </ul>
51
52
  ##
52
53
 
53
- module Erubis
54
-
55
-
56
- ##
57
- ## base class
58
- ##
59
- class Eruby
60
-
61
- def initialize(input, options={})
62
- #@input = input
63
- @pattern = options[:pattern] || '<% %>'
64
- @filename = options[:filename]
65
- @trim = options[:trim] != false
66
- @src = compile(input)
67
- end
68
- attr_reader :src
69
- attr_accessor :filename
70
-
71
- def self.load_file(filename, options={})
72
- input = File.open(filename, 'rb') { |f| f.read }
73
- options[:filename] = filename
74
- eruby = self.new(input, options)
75
- return eruby
76
- end
77
-
78
- def result(binding=TOPLEVEL_BINDING)
79
- filename = @filename || '(erubis)'
80
- eval @src, binding, filename
81
- end
82
-
83
- def evaluate(_context={})
84
- _evalstr = ''
85
- _context.keys.each do |key|
86
- _evalstr << "#{key.to_s} = _context[#{key.inspect}]\n"
87
- end
88
- eval _evalstr
89
- return result(binding())
90
- end
91
-
92
- #private
93
-
94
- def compile(input)
95
- src = ""
96
- initialize_src(src)
97
- prefix, postfix = @pattern.split()
98
- regexp = /(.*?)(^[ \t]*)?#{prefix}(=+|\#)?(.*?)#{postfix}([ \t]*\r?\n)?/m
99
- input.scan(regexp) do |text, head_space, indicator, code, tail_space|
100
- ## * when '<%= %>', do nothing
101
- ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
102
- if indicator && indicator[0] == ?=
103
- flag_trim = false
104
- else
105
- flag_trim = @trim && head_space && tail_space
106
- end
107
- #flag_trim = @trim && !(indicator && indicator[0]==?=) && head_space && tail_space
108
- add_src_text(src, text)
109
- add_src_text(src, head_space) if !flag_trim && head_space
110
- if !indicator # <% %>
111
- code = "#{head_space}#{code}#{tail_space}" if flag_trim
112
- add_src_code(src, code)
113
- elsif indicator[0] == ?= # <%= %>
114
- add_src_expr(src, code, indicator)
115
- else # <%# %>
116
- n = code.count("\n")
117
- n += tail_space.count("\n") if tail_space
118
- add_src_code(src, "\n" * n)
119
- end
120
- add_src_text(src, tail_space) if !flag_trim && tail_space
121
- end
122
- rest = $' || input
123
- add_src_text(src, rest)
124
- finalize_src(src)
125
- return src
126
- end
127
-
128
- protected
129
-
130
- def initialize_src(src)
131
- src << "_out = ''; "
132
- end
133
-
134
- def add_src_text(src, text)
135
- #return if text.empty?
136
- text.each_line do |line|
137
- src << "_out << #{line.dump}" << (line[-1] == ?\n ? "\n" : "; ")
138
- end
139
- end
140
-
141
- def add_src_expr(src, code, indicator)
142
- src << "_out << (#{code}).to_s; "
143
- end
144
-
145
- def add_src_code(src, code)
146
- code.each_line { |line| src << line }
147
- src << "; " unless code[-1] == ?\n
148
- end
149
-
150
- def finalize_src(src)
151
- src << "_out\n"
152
- end
153
-
154
- end # end of class Eruby
155
-
156
-
157
- ##
158
- ## do sanitizing of <%= %>
159
- ##
160
- class XmlEruby < Eruby
161
-
162
- def self.escape(obj)
163
- str = obj.to_s.dup
164
- #str = obj.to_s
165
- #str = str.dup if obj.__id__ == str.__id__
166
- str.gsub!(/&/, '&amp;')
167
- str.gsub!(/</, '&lt;')
168
- str.gsub!(/>/, '&gt;')
169
- str.gsub!(/"/, '&quot;') #"
170
- return str
171
- end
172
-
173
- def add_src_expr(src, code, indicator)
174
- case indicator
175
- when '=' # <%= %>
176
- src << "_out << Erubis::XmlEruby.escape(#{code}); "
177
- when '==' # <%== %>
178
- super
179
- when '===' # <%=== %>
180
- code.strip!
181
- s = code.dump
182
- s.sub!(/\A"/, '')
183
- s.sub!(/"\z/, '')
184
- src << "$stderr.puts(\"** erubis: #{s} = \#{(#{code}).inspect}\"); "
185
- else
186
- # nothing
187
- end
188
- end
189
-
190
- end # end of class XmlEruby
191
-
192
-
193
- ##
194
- ## make Eruby faster
195
- ##
196
- module FastEnhancer
197
-
198
- def add_src_text(src, text)
199
- return if text.empty?
200
- #src << "_out << #{text.dump}" << (text[-1] == ?\n ? "\n" : "; ")
201
- src << "_out << #{text.dump}"
202
- n = text.count("\n")
203
- src << ("\n" * n)
204
- src << "; " if n == 0
205
- end
206
-
207
- end
208
-
209
-
210
- ##
211
- ## use $stdout instead of string
212
- ##
213
- module StdoutEnhancer
214
-
215
- def initialize_src(src)
216
- src << "_out = $stdout; "
217
- end
218
-
219
- def finalize_src(src)
220
- src << "nil\n"
221
- end
222
-
223
- end
224
-
225
-
226
- ##
227
- ## print function is available.
228
- ##
229
- ## Notice: use Eruby#evaluate() and don't use Eruby#result()
230
- ## to be enable print function.
231
- ##
232
- module PrintEnhancer
233
-
234
- def initialize_src(src)
235
- src << "@_out = _out = ''; "
236
- end
237
-
238
- def print(arg)
239
- @_out << arg.to_s
240
- end
241
-
242
- def result(binding=TOPLEVEL_BINDING)
243
- filename = @filename || '(erubis)'
244
- eval @src, binding, filename
245
- end
246
-
247
- end
248
-
249
-
250
- class FastEruby < Eruby
251
- include FastEnhancer
252
- end
253
-
254
-
255
- class StdoutEruby < Eruby
256
- include StdoutEnhancer
257
- end
258
-
259
-
260
- class PrintEruby < Eruby
261
- include PrintEnhancer
262
- end
263
-
264
-
265
- class FastXmlEruby < XmlEruby
266
- include FastEnhancer
267
- end
268
-
269
-
270
- class StdoutXmlEruby < XmlEruby
271
- include StdoutEnhancer
272
- end
273
-
274
-
275
- class PrintXmlEruby < XmlEruby
276
- include PrintEnhancer
277
- end
278
-
279
-
280
- end
281
-
282
-
283
- if __FILE__ == $0
284
54
 
285
- list = ['<aaa>', 'b&b', '"ccc"']
286
- input = <<-END
287
- <ul>
288
- <% for item in list %>
289
- <li><%= item %>
290
- <%== item %></li>
291
- <% end %>
292
- </ul>
293
- END
55
+ require 'erubis/engine'
56
+ require 'erubis/helper'
57
+ require 'erubis/enhancer'
58
+ #require 'erubis/tiny'
59
+ require 'erubis/engine/eruby'
60
+ #require 'erubis/engine/enhanced' # enhanced eruby engines
61
+ #require 'erubis/engine/optimized' # generates optimized ruby code
62
+ #require 'erubis/engine/ephp'
63
+ #require 'erubis/engine/ec'
64
+ #require 'erubis/engine/ejava'
65
+ #require 'erubis/engine/escheme'
66
+ #require 'erubis/engine/eperl'
67
+ #require 'erubis/engine/ejavascript'
294
68
 
295
- eruby = Erubis::XmlEruby.new(input)
296
- puts "--- source ---"
297
- puts eruby.src
298
- puts "--- result ---"
299
- #puts eruby.result(binding())
300
- puts eruby.evaluate(:list=>list)
301
69
 
302
- end
70
+ require 'erubis/local-setting'