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,390 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Erubis::Ejavascript</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Erubis::Ejavascript</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/erubis/engine/ejavascript_rb.html">
59
+ erubis/engine/ejavascript.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ <a href="Engine.html">
69
+ Engine
70
+ </a>
71
+ </td>
72
+ </tr>
73
+ </table>
74
+ </div>
75
+ <!-- banner header -->
76
+
77
+ <div id="bodyContent">
78
+
79
+
80
+
81
+ <div id="contextContent">
82
+
83
+ <div id="description">
84
+ <p>
85
+ engine for JavaScript
86
+ </p>
87
+
88
+ </div>
89
+
90
+
91
+ </div>
92
+
93
+ <div id="method-list">
94
+ <h3 class="section-bar">Methods</h3>
95
+
96
+ <div class="name-list">
97
+ <a href="#M000036">add_expr_debug</a>&nbsp;&nbsp;
98
+ <a href="#M000035">add_expr_escaped</a>&nbsp;&nbsp;
99
+ <a href="#M000034">add_expr_literal</a>&nbsp;&nbsp;
100
+ <a href="#M000031">add_indent</a>&nbsp;&nbsp;
101
+ <a href="#M000037">add_postamble</a>&nbsp;&nbsp;
102
+ <a href="#M000029">add_preamble</a>&nbsp;&nbsp;
103
+ <a href="#M000033">add_stmt</a>&nbsp;&nbsp;
104
+ <a href="#M000032">add_text</a>&nbsp;&nbsp;
105
+ <a href="#M000030">escape_text</a>&nbsp;&nbsp;
106
+ <a href="#M000028">new</a>&nbsp;&nbsp;
107
+ </div>
108
+ </div>
109
+
110
+ </div>
111
+
112
+
113
+ <!-- if includes -->
114
+
115
+ <div id="section">
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+ <!-- if method_list -->
125
+ <div id="methods">
126
+ <h3 class="section-bar">Public Class methods</h3>
127
+
128
+ <div id="method-M000028" class="method-detail">
129
+ <a name="M000028"></a>
130
+
131
+ <div class="method-heading">
132
+ <a href="#M000028" class="method-signature">
133
+ <span class="method-name">new</span><span class="method-args">(input, properties={})</span>
134
+ </a>
135
+ </div>
136
+
137
+ <div class="method-description">
138
+ <p><a class="source-toggle" href="#"
139
+ onclick="toggleCode('M000028-source');return false;">[Source]</a></p>
140
+ <div class="method-source-code" id="M000028-source">
141
+ <pre>
142
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 26</span>
143
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">properties</span>={})
144
+ <span class="ruby-ivar">@indent</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:indent</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>
145
+ <span class="ruby-ivar">@buf</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:out</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'_buf'</span>
146
+ <span class="ruby-comment cmt">#@bufclass = properties[:outclass] || 'StringBuffer'</span>
147
+ <span class="ruby-keyword kw">super</span>
148
+ <span class="ruby-keyword kw">end</span>
149
+ </pre>
150
+ </div>
151
+ </div>
152
+ </div>
153
+
154
+ <h3 class="section-bar">Public Instance methods</h3>
155
+
156
+ <div id="method-M000036" class="method-detail">
157
+ <a name="M000036"></a>
158
+
159
+ <div class="method-heading">
160
+ <a href="#M000036" class="method-signature">
161
+ <span class="method-name">add_expr_debug</span><span class="method-args">(src, code)</span>
162
+ </a>
163
+ </div>
164
+
165
+ <div class="method-description">
166
+ <p><a class="source-toggle" href="#"
167
+ onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
168
+ <div class="method-source-code" id="M000036-source">
169
+ <pre>
170
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 80</span>
171
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_debug</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
172
+ <span class="ruby-identifier">add_indent</span>(<span class="ruby-identifier">src</span>, <span class="ruby-ivar">@indent</span>)
173
+ <span class="ruby-identifier">code</span>.<span class="ruby-identifier">strip!</span>
174
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;alert(\&quot;*** debug: #{code}=\&quot;+(#{code}));&quot;</span>
175
+ <span class="ruby-keyword kw">end</span>
176
+ </pre>
177
+ </div>
178
+ </div>
179
+ </div>
180
+
181
+ <div id="method-M000035" class="method-detail">
182
+ <a name="M000035"></a>
183
+
184
+ <div class="method-heading">
185
+ <a href="#M000035" class="method-signature">
186
+ <span class="method-name">add_expr_escaped</span><span class="method-args">(src, code)</span>
187
+ </a>
188
+ </div>
189
+
190
+ <div class="method-description">
191
+ <p><a class="source-toggle" href="#"
192
+ onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
193
+ <div class="method-source-code" id="M000035-source">
194
+ <pre>
195
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 75</span>
196
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_escaped</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
197
+ <span class="ruby-identifier">add_indent</span>(<span class="ruby-identifier">src</span>, <span class="ruby-ivar">@indent</span>)
198
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'.push('</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">escaped_expr</span>(<span class="ruby-identifier">code</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">');'</span>
199
+ <span class="ruby-keyword kw">end</span>
200
+ </pre>
201
+ </div>
202
+ </div>
203
+ </div>
204
+
205
+ <div id="method-M000034" class="method-detail">
206
+ <a name="M000034"></a>
207
+
208
+ <div class="method-heading">
209
+ <a href="#M000034" class="method-signature">
210
+ <span class="method-name">add_expr_literal</span><span class="method-args">(src, code)</span>
211
+ </a>
212
+ </div>
213
+
214
+ <div class="method-description">
215
+ <p><a class="source-toggle" href="#"
216
+ onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
217
+ <div class="method-source-code" id="M000034-source">
218
+ <pre>
219
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 70</span>
220
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_literal</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
221
+ <span class="ruby-identifier">add_indent</span>(<span class="ruby-identifier">src</span>, <span class="ruby-ivar">@indent</span>)
222
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'.push('</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span>.<span class="ruby-identifier">strip</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">');'</span>
223
+ <span class="ruby-keyword kw">end</span>
224
+ </pre>
225
+ </div>
226
+ </div>
227
+ </div>
228
+
229
+ <div id="method-M000031" class="method-detail">
230
+ <a name="M000031"></a>
231
+
232
+ <div class="method-heading">
233
+ <a href="#M000031" class="method-signature">
234
+ <span class="method-name">add_indent</span><span class="method-args">(src, indent)</span>
235
+ </a>
236
+ </div>
237
+
238
+ <div class="method-description">
239
+ <p><a class="source-toggle" href="#"
240
+ onclick="toggleCode('M000031-source');return false;">[Source]</a></p>
241
+ <div class="method-source-code" id="M000031-source">
242
+ <pre>
243
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 49</span>
244
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_indent</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">indent</span>)
245
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">src</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">src</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">indent</span> <span class="ruby-operator">:</span> <span class="ruby-value str">' '</span>)
246
+ <span class="ruby-keyword kw">end</span>
247
+ </pre>
248
+ </div>
249
+ </div>
250
+ </div>
251
+
252
+ <div id="method-M000037" class="method-detail">
253
+ <a name="M000037"></a>
254
+
255
+ <div class="method-heading">
256
+ <a href="#M000037" class="method-signature">
257
+ <span class="method-name">add_postamble</span><span class="method-args">(src)</span>
258
+ </a>
259
+ </div>
260
+
261
+ <div class="method-description">
262
+ <p><a class="source-toggle" href="#"
263
+ onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
264
+ <div class="method-source-code" id="M000037-source">
265
+ <pre>
266
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 86</span>
267
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_postamble</span>(<span class="ruby-identifier">src</span>)
268
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">src</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?;</span>
269
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@indent</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'document.write('</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;.join(\&quot;\&quot;));\n&quot;</span>
270
+ <span class="ruby-keyword kw">end</span>
271
+ </pre>
272
+ </div>
273
+ </div>
274
+ </div>
275
+
276
+ <div id="method-M000029" class="method-detail">
277
+ <a name="M000029"></a>
278
+
279
+ <div class="method-heading">
280
+ <a href="#M000029" class="method-signature">
281
+ <span class="method-name">add_preamble</span><span class="method-args">(src)</span>
282
+ </a>
283
+ </div>
284
+
285
+ <div class="method-description">
286
+ <p><a class="source-toggle" href="#"
287
+ onclick="toggleCode('M000029-source');return false;">[Source]</a></p>
288
+ <div class="method-source-code" id="M000029-source">
289
+ <pre>
290
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 33</span>
291
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_preamble</span>(<span class="ruby-identifier">src</span>)
292
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{@indent}var #{@buf} = [];&quot;</span>
293
+ <span class="ruby-keyword kw">end</span>
294
+ </pre>
295
+ </div>
296
+ </div>
297
+ </div>
298
+
299
+ <div id="method-M000033" class="method-detail">
300
+ <a name="M000033"></a>
301
+
302
+ <div class="method-heading">
303
+ <a href="#M000033" class="method-signature">
304
+ <span class="method-name">add_stmt</span><span class="method-args">(src, code)</span>
305
+ </a>
306
+ </div>
307
+
308
+ <div class="method-description">
309
+ <p><a class="source-toggle" href="#"
310
+ onclick="toggleCode('M000033-source');return false;">[Source]</a></p>
311
+ <div class="method-source-code" id="M000033-source">
312
+ <pre>
313
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 66</span>
314
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
315
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span>
316
+ <span class="ruby-keyword kw">end</span>
317
+ </pre>
318
+ </div>
319
+ </div>
320
+ </div>
321
+
322
+ <div id="method-M000032" class="method-detail">
323
+ <a name="M000032"></a>
324
+
325
+ <div class="method-heading">
326
+ <a href="#M000032" class="method-signature">
327
+ <span class="method-name">add_text</span><span class="method-args">(src, text)</span>
328
+ </a>
329
+ </div>
330
+
331
+ <div class="method-description">
332
+ <p><a class="source-toggle" href="#"
333
+ onclick="toggleCode('M000032-source');return false;">[Source]</a></p>
334
+ <div class="method-source-code" id="M000032-source">
335
+ <pre>
336
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 53</span>
337
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">text</span>)
338
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
339
+ <span class="ruby-identifier">add_indent</span>(<span class="ruby-identifier">src</span>, <span class="ruby-ivar">@indent</span>)
340
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@buf</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'.push(&quot;'</span>
341
+ <span class="ruby-identifier">s</span> = <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>)
342
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">s</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span>
343
+ <span class="ruby-identifier">s</span>[<span class="ruby-value">-2</span>, <span class="ruby-value">2</span>] = <span class="ruby-value str">''</span>
344
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\&quot;);\n&quot;</span>
345
+ <span class="ruby-keyword kw">else</span>
346
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\&quot;);&quot;</span>
347
+ <span class="ruby-keyword kw">end</span>
348
+ <span class="ruby-keyword kw">end</span>
349
+ </pre>
350
+ </div>
351
+ </div>
352
+ </div>
353
+
354
+ <div id="method-M000030" class="method-detail">
355
+ <a name="M000030"></a>
356
+
357
+ <div class="method-heading">
358
+ <a href="#M000030" class="method-signature">
359
+ <span class="method-name">escape_text</span><span class="method-args">(text)</span>
360
+ </a>
361
+ </div>
362
+
363
+ <div class="method-description">
364
+ <p><a class="source-toggle" href="#"
365
+ onclick="toggleCode('M000030-source');return false;">[Source]</a></p>
366
+ <div class="method-source-code" id="M000030-source">
367
+ <pre>
368
+ <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 37</span>
369
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>)
370
+ <span class="ruby-ivar">@@table_</span> <span class="ruby-operator">||=</span> { <span class="ruby-value str">&quot;\r&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\r&quot;</span>, <span class="ruby-value str">&quot;\n&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\n\\\n&quot;</span>, <span class="ruby-value str">&quot;\t&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\t&quot;</span>, <span class="ruby-value str">'&quot;'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">'\\&quot;'</span>, <span class="ruby-value str">&quot;\\&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\\\&quot;</span> }
371
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/[\r\n\t&quot;\\]/</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@@table_</span>[<span class="ruby-identifier">m</span>] } <span class="ruby-operator">||</span> <span class="ruby-identifier">text</span>
372
+ <span class="ruby-keyword kw">end</span>
373
+ </pre>
374
+ </div>
375
+ </div>
376
+ </div>
377
+
378
+
379
+ </div>
380
+
381
+
382
+ </div>
383
+
384
+
385
+ <div id="validator-badges">
386
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
387
+ </div>
388
+
389
+ </body>
390
+ </html>
@@ -0,0 +1,711 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Class: Erubis::Engine</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Class</strong></td>
53
+ <td class="class-name-in-header">Erubis::Engine</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/erubis/engine_rb.html">
59
+ erubis/engine.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ <tr class="top-aligned-row">
66
+ <td><strong>Parent:</strong></td>
67
+ <td>
68
+ Object
69
+ </td>
70
+ </tr>
71
+ </table>
72
+ </div>
73
+ <!-- banner header -->
74
+
75
+ <div id="bodyContent">
76
+
77
+
78
+
79
+ <div id="contextContent">
80
+
81
+ <div id="description">
82
+ <dl>
83
+ <dt>abstract</dt><dd>base engine class
84
+
85
+ </dd>
86
+ </dl>
87
+
88
+ </div>
89
+
90
+
91
+ </div>
92
+
93
+ <div id="method-list">
94
+ <h3 class="section-bar">Methods</h3>
95
+
96
+ <div class="name-list">
97
+ <a href="#M000071">add_expr</a>&nbsp;&nbsp;
98
+ <a href="#M000074">add_expr_debug</a>&nbsp;&nbsp;
99
+ <a href="#M000073">add_expr_escaped</a>&nbsp;&nbsp;
100
+ <a href="#M000072">add_expr_literal</a>&nbsp;&nbsp;
101
+ <a href="#M000075">add_postamble</a>&nbsp;&nbsp;
102
+ <a href="#M000068">add_preamble</a>&nbsp;&nbsp;
103
+ <a href="#M000070">add_stmt</a>&nbsp;&nbsp;
104
+ <a href="#M000069">add_text</a>&nbsp;&nbsp;
105
+ <a href="#M000064">compile</a>&nbsp;&nbsp;
106
+ <a href="#M000065">compile!</a>&nbsp;&nbsp;
107
+ <a href="#M000066">escape_text</a>&nbsp;&nbsp;
108
+ <a href="#M000067">escaped_expr</a>&nbsp;&nbsp;
109
+ <a href="#M000062">evaluate</a>&nbsp;&nbsp;
110
+ <a href="#M000060">load_file</a>&nbsp;&nbsp;
111
+ <a href="#M000059">new</a>&nbsp;&nbsp;
112
+ <a href="#M000063">pattern_regexp</a>&nbsp;&nbsp;
113
+ <a href="#M000061">result</a>&nbsp;&nbsp;
114
+ </div>
115
+ </div>
116
+
117
+ </div>
118
+
119
+
120
+ <!-- if includes -->
121
+
122
+ <div id="section">
123
+
124
+
125
+ <div id="constants-list">
126
+ <h3 class="section-bar">Constants</h3>
127
+
128
+ <div class="name-list">
129
+ <table summary="Constants">
130
+ <tr class="top-aligned-row context-row">
131
+ <td class="context-item-name">DEFAULT_REGEXP</td>
132
+ <td>=</td>
133
+ <td class="context-item-value">/(.*?)(^[ \t]*)?&lt;%(=+|\#)?(.*?)-?%&gt;([ \t]*\r?\n)?/m</td>
134
+ </tr>
135
+ </table>
136
+ </div>
137
+ </div>
138
+
139
+
140
+
141
+ <div id="attribute-list">
142
+ <h3 class="section-bar">Attributes</h3>
143
+
144
+ <div class="name-list">
145
+ <table>
146
+ <tr class="top-aligned-row context-row">
147
+ <td class="context-item-name">filename</td>
148
+ <td class="context-item-value">&nbsp;[RW]&nbsp;</td>
149
+ <td class="context-item-desc"></td>
150
+ </tr>
151
+ <tr class="top-aligned-row context-row">
152
+ <td class="context-item-name">src</td>
153
+ <td class="context-item-value">&nbsp;[R]&nbsp;</td>
154
+ <td class="context-item-desc"></td>
155
+ </tr>
156
+ </table>
157
+ </div>
158
+ </div>
159
+
160
+
161
+
162
+ <!-- if method_list -->
163
+ <div id="methods">
164
+ <h3 class="section-bar">Public Class methods</h3>
165
+
166
+ <div id="method-M000060" class="method-detail">
167
+ <a name="M000060"></a>
168
+
169
+ <div class="method-heading">
170
+ <a href="#M000060" class="method-signature">
171
+ <span class="method-name">load_file</span><span class="method-args">(filename, properties={})</span>
172
+ </a>
173
+ </div>
174
+
175
+ <div class="method-description">
176
+ <p>
177
+ load file and create engine object
178
+ </p>
179
+ <p><a class="source-toggle" href="#"
180
+ onclick="toggleCode('M000060-source');return false;">[Source]</a></p>
181
+ <div class="method-source-code" id="M000060-source">
182
+ <pre>
183
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 93</span>
184
+ <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">load_file</span>(<span class="ruby-identifier">filename</span>, <span class="ruby-identifier">properties</span>={})
185
+ <span class="ruby-identifier">input</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">filename</span>, <span class="ruby-value str">'rb'</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">f</span><span class="ruby-operator">|</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">read</span> }
186
+ <span class="ruby-identifier">input</span>.<span class="ruby-identifier">untaint</span> <span class="ruby-comment cmt"># is it ok?</span>
187
+ <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:filename</span>] = <span class="ruby-identifier">filename</span>
188
+ <span class="ruby-identifier">engine</span> = <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">properties</span>)
189
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">engine</span>
190
+ <span class="ruby-keyword kw">end</span>
191
+ </pre>
192
+ </div>
193
+ </div>
194
+ </div>
195
+
196
+ <div id="method-M000059" class="method-detail">
197
+ <a name="M000059"></a>
198
+
199
+ <div class="method-heading">
200
+ <a href="#M000059" class="method-signature">
201
+ <span class="method-name">new</span><span class="method-args">(input, properties={})</span>
202
+ </a>
203
+ </div>
204
+
205
+ <div class="method-description">
206
+ <p><a class="source-toggle" href="#"
207
+ onclick="toggleCode('M000059-source');return false;">[Source]</a></p>
208
+ <div class="method-source-code" id="M000059-source">
209
+ <pre>
210
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 79</span>
211
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">input</span>, <span class="ruby-identifier">properties</span>={})
212
+ <span class="ruby-comment cmt">#@input = input</span>
213
+ <span class="ruby-ivar">@pattern</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:pattern</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'&lt;% %&gt;'</span>
214
+ <span class="ruby-ivar">@filename</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:filename</span>]
215
+ <span class="ruby-ivar">@trim</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:trim</span>] <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">false</span>
216
+ <span class="ruby-ivar">@preamble</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:preamble</span>]
217
+ <span class="ruby-ivar">@postamble</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:postamble</span>]
218
+ <span class="ruby-ivar">@escape</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:escape</span>]
219
+ <span class="ruby-ivar">@src</span> = <span class="ruby-identifier">compile</span>(<span class="ruby-identifier">input</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">input</span>
220
+ <span class="ruby-keyword kw">end</span>
221
+ </pre>
222
+ </div>
223
+ </div>
224
+ </div>
225
+
226
+ <h3 class="section-bar">Public Instance methods</h3>
227
+
228
+ <div id="method-M000064" class="method-detail">
229
+ <a name="M000064"></a>
230
+
231
+ <div class="method-heading">
232
+ <a href="#M000064" class="method-signature">
233
+ <span class="method-name">compile</span><span class="method-args">(input)</span>
234
+ </a>
235
+ </div>
236
+
237
+ <div class="method-description">
238
+ <p>
239
+ compile input string into target language
240
+ </p>
241
+ <p><a class="source-toggle" href="#"
242
+ onclick="toggleCode('M000064-source');return false;">[Source]</a></p>
243
+ <div class="method-source-code" id="M000064-source">
244
+ <pre>
245
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 132</span>
246
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">compile</span>(<span class="ruby-identifier">input</span>)
247
+ <span class="ruby-identifier">src</span> = <span class="ruby-value str">&quot;&quot;</span>
248
+ <span class="ruby-ivar">@preamble</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-value">? </span><span class="ruby-identifier">add_preamble</span>(<span class="ruby-identifier">src</span>) <span class="ruby-operator">:</span> (<span class="ruby-ivar">@preamble</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@preamble</span>))
249
+ <span class="ruby-identifier">regexp</span> = <span class="ruby-identifier">pattern_regexp</span>(<span class="ruby-ivar">@pattern</span>)
250
+ <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">regexp</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">text</span>, <span class="ruby-identifier">lspace</span>, <span class="ruby-identifier">indicator</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">rspace</span><span class="ruby-operator">|</span>
251
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">text</span>)
252
+ <span class="ruby-comment cmt">## * when '&lt;%= %&gt;', do nothing</span>
253
+ <span class="ruby-comment cmt">## * when '&lt;% %&gt;' or '&lt;%# %&gt;', delete spaces iff only spaces are around '&lt;% %&gt;'</span>
254
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">indicator</span> <span class="ruby-comment cmt"># &lt;% %&gt;</span>
255
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@trim</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">lspace</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">rspace</span>
256
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-node">&quot;#{lspace}#{code}#{rspace}&quot;</span>)
257
+ <span class="ruby-keyword kw">else</span>
258
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
259
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
260
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
261
+ <span class="ruby-keyword kw">end</span>
262
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">indicator</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\#</span> <span class="ruby-comment cmt"># &lt;%# %&gt;</span>
263
+ <span class="ruby-identifier">n</span> = <span class="ruby-identifier">code</span>.<span class="ruby-identifier">count</span>(<span class="ruby-value str">&quot;\n&quot;</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">rspace</span> <span class="ruby-value">? </span><span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>)
264
+ <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@trim</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">lspace</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">rspace</span>
265
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">n</span>)
266
+ <span class="ruby-keyword kw">else</span>
267
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
268
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">n</span>)
269
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
270
+ <span class="ruby-keyword kw">end</span>
271
+ <span class="ruby-comment cmt">#flag_trim = @trim &amp;&amp; lspace &amp;&amp; rspace</span>
272
+ <span class="ruby-comment cmt">#add_text(src, lspace) if !flag_trim &amp;&amp; lspace</span>
273
+ <span class="ruby-comment cmt">#n = code.count(&quot;\n&quot;) + (rspace ? 1 : 0)</span>
274
+ <span class="ruby-comment cmt">#add_stmt(src, &quot;\n&quot; * n)</span>
275
+ <span class="ruby-comment cmt">#add_text(src, rspace) if !flag_trim &amp;&amp; rspace</span>
276
+ <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># &lt;%= %&gt;</span>
277
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
278
+ <span class="ruby-identifier">add_expr</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">indicator</span>)
279
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
280
+ <span class="ruby-keyword kw">end</span>
281
+ <span class="ruby-comment cmt">#if indicator &amp;&amp; indicator[0] == ?=</span>
282
+ <span class="ruby-comment cmt"># flag_trim = false</span>
283
+ <span class="ruby-comment cmt">#else</span>
284
+ <span class="ruby-comment cmt"># flag_trim = @trim &amp;&amp; lspace &amp;&amp; rspace</span>
285
+ <span class="ruby-comment cmt">#end</span>
286
+ <span class="ruby-comment cmt">##flag_trim = @trim &amp;&amp; !(indicator &amp;&amp; indicator[0]==?=) &amp;&amp; lspace &amp;&amp; rspace</span>
287
+ <span class="ruby-comment cmt">#add_text(src, text)</span>
288
+ <span class="ruby-comment cmt">#add_text(src, lspace) if !flag_trim &amp;&amp; lspace</span>
289
+ <span class="ruby-comment cmt">#if !indicator # &lt;% %&gt;</span>
290
+ <span class="ruby-comment cmt"># code = &quot;#{lspace}#{code}#{rspace}&quot; if flag_trim</span>
291
+ <span class="ruby-comment cmt"># add_stmt(src, code)</span>
292
+ <span class="ruby-comment cmt">#elsif indicator[0] == ?\# # &lt;%# %&gt;</span>
293
+ <span class="ruby-comment cmt"># n = code.count(&quot;\n&quot;) + (rspace ? 1 : 0)</span>
294
+ <span class="ruby-comment cmt"># add_stmt(src, &quot;\n&quot; * n)</span>
295
+ <span class="ruby-comment cmt">#else # &lt;%= %&gt;</span>
296
+ <span class="ruby-comment cmt"># add_expr(src, code, indicator)</span>
297
+ <span class="ruby-comment cmt">#end</span>
298
+ <span class="ruby-comment cmt">#add_text(src, rspace) if !flag_trim &amp;&amp; rspace</span>
299
+ <span class="ruby-keyword kw">end</span>
300
+ <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">$'</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">input</span> <span class="ruby-comment cmt"># add input when no matched</span>
301
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rest</span>)
302
+ <span class="ruby-ivar">@postamble</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-value">? </span><span class="ruby-identifier">add_postamble</span>(<span class="ruby-identifier">src</span>) <span class="ruby-operator">:</span> (<span class="ruby-ivar">@postamble</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@postamble</span>))
303
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">src</span>
304
+ <span class="ruby-keyword kw">end</span>
305
+ </pre>
306
+ </div>
307
+ </div>
308
+ </div>
309
+
310
+ <div id="method-M000065" class="method-detail">
311
+ <a name="M000065"></a>
312
+
313
+ <div class="method-heading">
314
+ <a href="#M000065" class="method-signature">
315
+ <span class="method-name">compile!</span><span class="method-args">(input)</span>
316
+ </a>
317
+ </div>
318
+
319
+ <div class="method-description">
320
+ <p>
321
+ compile input string and set it to @src
322
+ </p>
323
+ <p><a class="source-toggle" href="#"
324
+ onclick="toggleCode('M000065-source');return false;">[Source]</a></p>
325
+ <div class="method-source-code" id="M000065-source">
326
+ <pre>
327
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 193</span>
328
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">compile!</span>(<span class="ruby-identifier">input</span>)
329
+ <span class="ruby-ivar">@src</span> = <span class="ruby-identifier">compile</span>(<span class="ruby-identifier">input</span>)
330
+ <span class="ruby-keyword kw">end</span>
331
+ </pre>
332
+ </div>
333
+ </div>
334
+ </div>
335
+
336
+ <div id="method-M000062" class="method-detail">
337
+ <a name="M000062"></a>
338
+
339
+ <div class="method-heading">
340
+ <a href="#M000062" class="method-signature">
341
+ <span class="method-name">evaluate</span><span class="method-args">(context=Context.new)</span>
342
+ </a>
343
+ </div>
344
+
345
+ <div class="method-description">
346
+ <p>
347
+ call context.instance_eval(@src)
348
+ </p>
349
+ <p><a class="source-toggle" href="#"
350
+ onclick="toggleCode('M000062-source');return false;">[Source]</a></p>
351
+ <div class="method-source-code" id="M000062-source">
352
+ <pre>
353
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 113</span>
354
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">evaluate</span>(<span class="ruby-identifier">context</span>=<span class="ruby-constant">Context</span>.<span class="ruby-identifier">new</span>)
355
+ <span class="ruby-identifier">context</span> = <span class="ruby-constant">Context</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">context</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">context</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
356
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">context</span>.<span class="ruby-identifier">instance_eval</span>(<span class="ruby-ivar">@src</span>, (<span class="ruby-ivar">@filename</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'(erubis)'</span>))
357
+ <span class="ruby-keyword kw">end</span>
358
+ </pre>
359
+ </div>
360
+ </div>
361
+ </div>
362
+
363
+ <div id="method-M000061" class="method-detail">
364
+ <a name="M000061"></a>
365
+
366
+ <div class="method-heading">
367
+ <a href="#M000061" class="method-signature">
368
+ <span class="method-name">result</span><span class="method-args">(_binding_or_hash=TOPLEVEL_BINDING)</span>
369
+ </a>
370
+ </div>
371
+
372
+ <div class="method-description">
373
+ <p>
374
+ eval(@src) with binding
375
+ </p>
376
+ <p><a class="source-toggle" href="#"
377
+ onclick="toggleCode('M000061-source');return false;">[Source]</a></p>
378
+ <div class="method-source-code" id="M000061-source">
379
+ <pre>
380
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 102</span>
381
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>(<span class="ruby-identifier">_binding_or_hash</span>=<span class="ruby-constant">TOPLEVEL_BINDING</span>)
382
+ <span class="ruby-identifier">_arg</span> = <span class="ruby-identifier">_binding_or_hash</span>
383
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">_arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Hash</span>)
384
+ <span class="ruby-comment cmt">## load _context data as local variables by eval</span>
385
+ <span class="ruby-identifier">eval</span> <span class="ruby-identifier">_arg</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">inject</span>(<span class="ruby-value str">&quot;&quot;</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span>, <span class="ruby-identifier">k</span><span class="ruby-operator">|</span> <span class="ruby-identifier">s</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{k.to_s} = _arg[#{k.inspect}];&quot;</span> }
386
+ <span class="ruby-identifier">_arg</span> = <span class="ruby-identifier">binding</span>()
387
+ <span class="ruby-keyword kw">end</span>
388
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">eval</span>(<span class="ruby-ivar">@src</span>, <span class="ruby-identifier">_arg</span>, (<span class="ruby-ivar">@filename</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'(erubis)'</span>))
389
+ <span class="ruby-keyword kw">end</span>
390
+ </pre>
391
+ </div>
392
+ </div>
393
+ </div>
394
+
395
+ <h3 class="section-bar">Protected Instance methods</h3>
396
+
397
+ <div id="method-M000071" class="method-detail">
398
+ <a name="M000071"></a>
399
+
400
+ <div class="method-heading">
401
+ <a href="#M000071" class="method-signature">
402
+ <span class="method-name">add_expr</span><span class="method-args">(src, code, indicator)</span>
403
+ </a>
404
+ </div>
405
+
406
+ <div class="method-description">
407
+ <p>
408
+ add expression code to src
409
+ </p>
410
+ <p><a class="source-toggle" href="#"
411
+ onclick="toggleCode('M000071-source');return false;">[Source]</a></p>
412
+ <div class="method-source-code" id="M000071-source">
413
+ <pre>
414
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 226</span>
415
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">indicator</span>)
416
+ <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">indicator</span>
417
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'='</span>
418
+ <span class="ruby-identifier">add_expr_literal</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
419
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'=='</span>
420
+ <span class="ruby-identifier">add_expr_escaped</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
421
+ <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'==='</span>
422
+ <span class="ruby-identifier">add_expr_debug</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
423
+ <span class="ruby-keyword kw">end</span>
424
+ <span class="ruby-keyword kw">end</span>
425
+ </pre>
426
+ </div>
427
+ </div>
428
+ </div>
429
+
430
+ <div id="method-M000074" class="method-detail">
431
+ <a name="M000074"></a>
432
+
433
+ <div class="method-heading">
434
+ <a href="#M000074" class="method-signature">
435
+ <span class="method-name">add_expr_debug</span><span class="method-args">(src, code)</span>
436
+ </a>
437
+ </div>
438
+
439
+ <div class="method-description">
440
+ <p>
441
+ .[empty] add expression code to src for debug. this is called by <a
442
+ href="Engine.html#M000071">add_expr</a>().
443
+ </p>
444
+ <p><a class="source-toggle" href="#"
445
+ onclick="toggleCode('M000074-source');return false;">[Source]</a></p>
446
+ <div class="method-source-code" id="M000074-source">
447
+ <pre>
448
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 248</span>
449
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_debug</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
450
+ <span class="ruby-comment cmt"># empty</span>
451
+ <span class="ruby-keyword kw">end</span>
452
+ </pre>
453
+ </div>
454
+ </div>
455
+ </div>
456
+
457
+ <div id="method-M000073" class="method-detail">
458
+ <a name="M000073"></a>
459
+
460
+ <div class="method-heading">
461
+ <a href="#M000073" class="method-signature">
462
+ <span class="method-name">add_expr_escaped</span><span class="method-args">(src, code)</span>
463
+ </a>
464
+ </div>
465
+
466
+ <div class="method-description">
467
+ <p>
468
+ .[abstract] add escaped expression code to src. this is called by <a
469
+ href="Engine.html#M000071">add_expr</a>().
470
+ </p>
471
+ <p><a class="source-toggle" href="#"
472
+ onclick="toggleCode('M000073-source');return false;">[Source]</a></p>
473
+ <div class="method-source-code" id="M000073-source">
474
+ <pre>
475
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 243</span>
476
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_escaped</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
477
+ <span class="ruby-identifier">not_implemented</span>
478
+ <span class="ruby-keyword kw">end</span>
479
+ </pre>
480
+ </div>
481
+ </div>
482
+ </div>
483
+
484
+ <div id="method-M000072" class="method-detail">
485
+ <a name="M000072"></a>
486
+
487
+ <div class="method-heading">
488
+ <a href="#M000072" class="method-signature">
489
+ <span class="method-name">add_expr_literal</span><span class="method-args">(src, code)</span>
490
+ </a>
491
+ </div>
492
+
493
+ <div class="method-description">
494
+ <p>
495
+ .[abstract] add expression literal code to src. this is called by <a
496
+ href="Engine.html#M000071">add_expr</a>().
497
+ </p>
498
+ <p><a class="source-toggle" href="#"
499
+ onclick="toggleCode('M000072-source');return false;">[Source]</a></p>
500
+ <div class="method-source-code" id="M000072-source">
501
+ <pre>
502
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 238</span>
503
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_literal</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
504
+ <span class="ruby-identifier">not_implemented</span>
505
+ <span class="ruby-keyword kw">end</span>
506
+ </pre>
507
+ </div>
508
+ </div>
509
+ </div>
510
+
511
+ <div id="method-M000075" class="method-detail">
512
+ <a name="M000075"></a>
513
+
514
+ <div class="method-heading">
515
+ <a href="#M000075" class="method-signature">
516
+ <span class="method-name">add_postamble</span><span class="method-args">(src)</span>
517
+ </a>
518
+ </div>
519
+
520
+ <div class="method-description">
521
+ <p>
522
+ .[empty] add @postamble to src
523
+ </p>
524
+ <p><a class="source-toggle" href="#"
525
+ onclick="toggleCode('M000075-source');return false;">[Source]</a></p>
526
+ <div class="method-source-code" id="M000075-source">
527
+ <pre>
528
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 253</span>
529
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_postamble</span>(<span class="ruby-identifier">src</span>)
530
+ <span class="ruby-comment cmt"># empty</span>
531
+ <span class="ruby-keyword kw">end</span>
532
+ </pre>
533
+ </div>
534
+ </div>
535
+ </div>
536
+
537
+ <div id="method-M000068" class="method-detail">
538
+ <a name="M000068"></a>
539
+
540
+ <div class="method-heading">
541
+ <a href="#M000068" class="method-signature">
542
+ <span class="method-name">add_preamble</span><span class="method-args">(src)</span>
543
+ </a>
544
+ </div>
545
+
546
+ <div class="method-description">
547
+ <p>
548
+ .[empty] add @preamble to src
549
+ </p>
550
+ <p><a class="source-toggle" href="#"
551
+ onclick="toggleCode('M000068-source');return false;">[Source]</a></p>
552
+ <div class="method-source-code" id="M000068-source">
553
+ <pre>
554
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 211</span>
555
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_preamble</span>(<span class="ruby-identifier">src</span>)
556
+ <span class="ruby-comment cmt"># empty</span>
557
+ <span class="ruby-keyword kw">end</span>
558
+ </pre>
559
+ </div>
560
+ </div>
561
+ </div>
562
+
563
+ <div id="method-M000070" class="method-detail">
564
+ <a name="M000070"></a>
565
+
566
+ <div class="method-heading">
567
+ <a href="#M000070" class="method-signature">
568
+ <span class="method-name">add_stmt</span><span class="method-args">(src, code)</span>
569
+ </a>
570
+ </div>
571
+
572
+ <div class="method-description">
573
+ <p>
574
+ .[abstract] add statement code to src
575
+ </p>
576
+ <p><a class="source-toggle" href="#"
577
+ onclick="toggleCode('M000070-source');return false;">[Source]</a></p>
578
+ <div class="method-source-code" id="M000070-source">
579
+ <pre>
580
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 221</span>
581
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
582
+ <span class="ruby-identifier">not_implemented</span>
583
+ <span class="ruby-keyword kw">end</span>
584
+ </pre>
585
+ </div>
586
+ </div>
587
+ </div>
588
+
589
+ <div id="method-M000069" class="method-detail">
590
+ <a name="M000069"></a>
591
+
592
+ <div class="method-heading">
593
+ <a href="#M000069" class="method-signature">
594
+ <span class="method-name">add_text</span><span class="method-args">(src, text)</span>
595
+ </a>
596
+ </div>
597
+
598
+ <div class="method-description">
599
+ <p>
600
+ .[abstract] add text string to src
601
+ </p>
602
+ <p><a class="source-toggle" href="#"
603
+ onclick="toggleCode('M000069-source');return false;">[Source]</a></p>
604
+ <div class="method-source-code" id="M000069-source">
605
+ <pre>
606
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 216</span>
607
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">text</span>)
608
+ <span class="ruby-identifier">not_implemented</span>
609
+ <span class="ruby-keyword kw">end</span>
610
+ </pre>
611
+ </div>
612
+ </div>
613
+ </div>
614
+
615
+ <div id="method-M000066" class="method-detail">
616
+ <a name="M000066"></a>
617
+
618
+ <div class="method-heading">
619
+ <a href="#M000066" class="method-signature">
620
+ <span class="method-name">escape_text</span><span class="method-args">(text)</span>
621
+ </a>
622
+ </div>
623
+
624
+ <div class="method-description">
625
+ <p>
626
+ escape text string
627
+ </p>
628
+ <p><a class="source-toggle" href="#"
629
+ onclick="toggleCode('M000066-source');return false;">[Source]</a></p>
630
+ <div class="method-source-code" id="M000066-source">
631
+ <pre>
632
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 200</span>
633
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>)
634
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">text</span>
635
+ <span class="ruby-keyword kw">end</span>
636
+ </pre>
637
+ </div>
638
+ </div>
639
+ </div>
640
+
641
+ <div id="method-M000067" class="method-detail">
642
+ <a name="M000067"></a>
643
+
644
+ <div class="method-heading">
645
+ <a href="#M000067" class="method-signature">
646
+ <span class="method-name">escaped_expr</span><span class="method-args">(code)</span>
647
+ </a>
648
+ </div>
649
+
650
+ <div class="method-description">
651
+ <p>
652
+ return escaped expression code
653
+ </p>
654
+ <p><a class="source-toggle" href="#"
655
+ onclick="toggleCode('M000067-source');return false;">[Source]</a></p>
656
+ <div class="method-source-code" id="M000067-source">
657
+ <pre>
658
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 205</span>
659
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escaped_expr</span>(<span class="ruby-identifier">code</span>)
660
+ <span class="ruby-ivar">@escape</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">'escape'</span>
661
+ <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{@escape}(#{code.strip})&quot;</span>
662
+ <span class="ruby-keyword kw">end</span>
663
+ </pre>
664
+ </div>
665
+ </div>
666
+ </div>
667
+
668
+ <div id="method-M000063" class="method-detail">
669
+ <a name="M000063"></a>
670
+
671
+ <div class="method-heading">
672
+ <a href="#M000063" class="method-signature">
673
+ <span class="method-name">pattern_regexp</span><span class="method-args">(pattern=@pattern)</span>
674
+ </a>
675
+ </div>
676
+
677
+ <div class="method-description">
678
+ <p>
679
+ return regexp of pattern to parse eRuby script
680
+ </p>
681
+ <p><a class="source-toggle" href="#"
682
+ onclick="toggleCode('M000063-source');return false;">[Source]</a></p>
683
+ <div class="method-source-code" id="M000063-source">
684
+ <pre>
685
+ <span class="ruby-comment cmt"># File erubis/engine.rb, line 121</span>
686
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pattern_regexp</span>(<span class="ruby-identifier">pattern</span>=<span class="ruby-ivar">@pattern</span>)
687
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;% %&gt;'</span>
688
+ <span class="ruby-keyword kw">return</span> <span class="ruby-constant">DEFAULT_REGEXP</span>
689
+ <span class="ruby-keyword kw">else</span>
690
+ <span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">postfix</span> = <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">split</span>()
691
+ <span class="ruby-keyword kw">return</span> <span class="ruby-node">/(.*?)(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/</span><span class="ruby-identifier">m</span>
692
+ <span class="ruby-keyword kw">end</span>
693
+ <span class="ruby-keyword kw">end</span>
694
+ </pre>
695
+ </div>
696
+ </div>
697
+ </div>
698
+
699
+
700
+ </div>
701
+
702
+
703
+ </div>
704
+
705
+
706
+ <div id="validator-badges">
707
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
708
+ </div>
709
+
710
+ </body>
711
+ </html>