erubis 2.3.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. data/{CHANGES → CHANGES.txt} +373 -3
  2. data/MIT-LICENSE +1 -1
  3. data/README.txt +6 -5
  4. data/benchmark/bench.rb +18 -11
  5. data/bin/erubis +3 -4
  6. data/contrib/erubis +3462 -5
  7. data/contrib/inline-require +54 -28
  8. data/doc/docstyle.css +25 -4
  9. data/doc/users-guide.html +814 -110
  10. data/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +209 -0
  11. data/doc-api/classes/ActionView.html +105 -0
  12. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +14 -14
  13. data/doc-api/classes/Erubis/ArrayEnhancer.html +16 -16
  14. data/doc-api/classes/Erubis/Basic/Converter.html +36 -31
  15. data/doc-api/classes/Erubis/BiPatternEnhancer.html +16 -13
  16. data/doc-api/classes/Erubis/CGenerator.html +70 -70
  17. data/doc-api/classes/Erubis/Context.html +49 -49
  18. data/doc-api/classes/Erubis/Converter.html +30 -29
  19. data/doc-api/classes/Erubis/CppGenerator.html +382 -0
  20. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
  21. data/doc-api/classes/Erubis/Ecpp.html +126 -0
  22. data/doc-api/classes/Erubis/Engine.html +46 -43
  23. data/doc-api/classes/Erubis/ErboutEnhancer.html +16 -16
  24. data/doc-api/classes/Erubis/EscapeEnhancer.html +7 -7
  25. data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
  26. data/doc-api/classes/Erubis/Evaluator.html +22 -22
  27. data/doc-api/classes/Erubis/Generator.html +70 -70
  28. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +18 -15
  29. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +787 -0
  30. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +213 -0
  31. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +103 -54
  32. data/doc-api/classes/Erubis/Helpers.html +6 -1
  33. data/doc-api/classes/Erubis/InterpolationEnhancer.html +42 -41
  34. data/doc-api/classes/Erubis/JavaGenerator.html +69 -69
  35. data/doc-api/classes/Erubis/JavascriptGenerator.html +79 -74
  36. data/doc-api/classes/Erubis/Main.html +49 -48
  37. data/doc-api/classes/Erubis/NoCodeEnhancer.html +35 -35
  38. data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
  39. data/doc-api/classes/Erubis/OptimizedEruby.html +7 -7
  40. data/doc-api/classes/Erubis/OptimizedGenerator.html +84 -84
  41. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +7 -7
  42. data/doc-api/classes/Erubis/PI/Converter.html +23 -22
  43. data/doc-api/classes/Erubis/PI/Ec.html +7 -7
  44. data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
  45. data/doc-api/classes/Erubis/PI/Ejava.html +7 -7
  46. data/doc-api/classes/Erubis/PI/Ejavascript.html +7 -7
  47. data/doc-api/classes/Erubis/PI/Eperl.html +7 -7
  48. data/doc-api/classes/Erubis/PI/Ephp.html +7 -7
  49. data/doc-api/classes/Erubis/PI/Eruby.html +6 -6
  50. data/doc-api/classes/Erubis/PI/Escheme.html +7 -7
  51. data/doc-api/classes/Erubis/PI/TinyEruby.html +28 -27
  52. data/doc-api/classes/Erubis/PI.html +1 -0
  53. data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -29
  54. data/doc-api/classes/Erubis/PerlGenerator.html +63 -63
  55. data/doc-api/classes/Erubis/PhpGenerator.html +63 -63
  56. data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
  57. data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
  58. data/doc-api/classes/Erubis/PreprocessingEruby.html +183 -0
  59. data/doc-api/classes/Erubis/PreprocessingHelper.html +212 -0
  60. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +23 -23
  61. data/doc-api/classes/Erubis/PrintOutEnhancer.html +38 -38
  62. data/doc-api/classes/Erubis/RubyEvaluator.html +59 -22
  63. data/doc-api/classes/Erubis/RubyGenerator.html +53 -52
  64. data/doc-api/classes/Erubis/SchemeGenerator.html +70 -70
  65. data/doc-api/classes/Erubis/SimplifyEnhancer.html +10 -9
  66. data/doc-api/classes/Erubis/StdoutEnhancer.html +3 -3
  67. data/doc-api/classes/Erubis/StringBufferEnhancer.html +16 -16
  68. data/doc-api/classes/Erubis/TinyEruby.html +33 -33
  69. data/doc-api/classes/Erubis/XmlHelper.html +80 -15
  70. data/doc-api/classes/Erubis.html +25 -1
  71. data/doc-api/classes/Kernel.html +155 -0
  72. data/doc-api/created.rid +1 -1
  73. data/doc-api/files/README_txt.html +8 -8
  74. data/doc-api/files/erubis/context_rb.html +2 -2
  75. data/doc-api/files/erubis/converter_rb.html +3 -3
  76. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  77. data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
  78. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  80. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  81. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  82. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  83. data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
  84. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  85. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  86. data/doc-api/files/erubis/engine_rb.html +2 -2
  87. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  88. data/doc-api/files/erubis/error_rb.html +2 -2
  89. data/doc-api/files/erubis/evaluator_rb.html +2 -2
  90. data/doc-api/files/erubis/generator_rb.html +3 -3
  91. data/doc-api/files/erubis/helper_rb.html +2 -2
  92. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +107 -0
  93. data/doc-api/files/erubis/helpers/rails_helper_rb.html +3 -2
  94. data/doc-api/files/erubis/local-setting_rb.html +2 -2
  95. data/doc-api/files/erubis/main_rb.html +4 -2
  96. data/doc-api/files/erubis/preprocessing_rb.html +114 -0
  97. data/doc-api/files/erubis/tiny_rb.html +2 -2
  98. data/doc-api/files/erubis/util_rb.html +107 -0
  99. data/doc-api/files/erubis_rb.html +2 -2
  100. data/doc-api/fr_class_index.html +13 -0
  101. data/doc-api/fr_file_index.html +4 -0
  102. data/doc-api/fr_method_index.html +237 -179
  103. data/examples/basic/Makefile +7 -2
  104. data/examples/basic/example.ecpp +33 -0
  105. data/lib/erubis/context.rb +2 -3
  106. data/lib/erubis/converter.rb +17 -11
  107. data/lib/erubis/engine/ec.rb +2 -3
  108. data/lib/erubis/engine/ecpp.rb +113 -0
  109. data/lib/erubis/engine/ejava.rb +9 -10
  110. data/lib/erubis/engine/ejavascript.rb +14 -9
  111. data/lib/erubis/engine/enhanced.rb +7 -3
  112. data/lib/erubis/engine/eperl.rb +2 -3
  113. data/lib/erubis/engine/ephp.rb +2 -3
  114. data/lib/erubis/engine/eruby.rb +8 -8
  115. data/lib/erubis/engine/escheme.rb +2 -3
  116. data/lib/erubis/engine/optimized.rb +2 -3
  117. data/lib/erubis/engine.rb +13 -11
  118. data/lib/erubis/enhancer.rb +101 -34
  119. data/lib/erubis/error.rb +2 -3
  120. data/lib/erubis/evaluator.rb +27 -10
  121. data/lib/erubis/generator.rb +3 -4
  122. data/lib/erubis/helper.rb +14 -3
  123. data/lib/erubis/helpers/rails_form_helper.rb +197 -0
  124. data/lib/erubis/helpers/rails_helper.rb +219 -77
  125. data/lib/erubis/local-setting.rb +2 -3
  126. data/lib/erubis/main.rb +85 -60
  127. data/lib/erubis/preprocessing.rb +58 -0
  128. data/lib/erubis/tiny.rb +9 -9
  129. data/lib/erubis/util.rb +22 -0
  130. data/lib/erubis.rb +4 -4
  131. data/test/assert-text-equal.rb +2 -3
  132. data/test/data/users-guide/bufvar-example.rb +10 -0
  133. data/test/data/users-guide/bufvar-example.result +17 -0
  134. data/test/data/users-guide/def_method.rb +14 -0
  135. data/test/data/users-guide/def_method.result +3 -0
  136. data/test/data/users-guide/example.ecpp +30 -0
  137. data/test/data/users-guide/example1.rb +1 -0
  138. data/test/data/users-guide/example_c.result +22 -19
  139. data/test/data/users-guide/fasteruby-example.rb +8 -0
  140. data/test/data/users-guide/fasteruby-example.result +18 -0
  141. data/test/data/users-guide/main_program1.rb +8 -0
  142. data/test/data/users-guide/main_program1.result +6 -0
  143. data/test/data/users-guide/main_program2.rb +8 -0
  144. data/test/data/users-guide/main_program2.result +6 -0
  145. data/test/data/users-guide/percentline-example.rhtml +3 -1
  146. data/test/data/users-guide/percentline_example.result +5 -3
  147. data/test/data/users-guide/prefixedline-example.rb +9 -0
  148. data/test/data/users-guide/prefixedline-example.rhtml +6 -0
  149. data/test/data/users-guide/prefixedline_example.result +9 -0
  150. data/test/data/users-guide/tail_260.result +4 -0
  151. data/test/data/users-guide/tailnewline.rhtml +3 -0
  152. data/test/data/users-guide/template1.rhtml +4 -0
  153. data/test/data/users-guide/template2.rhtml +4 -0
  154. data/test/test-engines.rb +88 -5
  155. data/test/test-enhancers.rb +83 -6
  156. data/test/test-erubis.rb +115 -11
  157. data/test/test-index-cgi.rb +191 -0
  158. data/test/test-main.rb +143 -31
  159. data/test/test-users-guide.rb +20 -3
  160. data/test/test.rb +18 -3
  161. data/test/testutil.rb +44 -8
  162. metadata +104 -67
  163. data/contrib/action_view_base_rb.patch +0 -23
@@ -89,11 +89,11 @@ this is only for <a href="Eruby.html">Eruby</a>.
89
89
  <h3 class="section-bar">Methods</h3>
90
90
 
91
91
  <div class="name-list">
92
- <a href="#M000092">add_expr_escaped</a>&nbsp;&nbsp;
93
- <a href="#M000091">add_expr_literal</a>&nbsp;&nbsp;
94
- <a href="#M000093">add_postamble</a>&nbsp;&nbsp;
95
- <a href="#M000089">add_preamble</a>&nbsp;&nbsp;
96
- <a href="#M000090">add_text</a>&nbsp;&nbsp;
92
+ <a href="#M000183">add_expr_escaped</a>&nbsp;&nbsp;
93
+ <a href="#M000182">add_expr_literal</a>&nbsp;&nbsp;
94
+ <a href="#M000184">add_postamble</a>&nbsp;&nbsp;
95
+ <a href="#M000180">add_preamble</a>&nbsp;&nbsp;
96
+ <a href="#M000181">add_text</a>&nbsp;&nbsp;
97
97
  </div>
98
98
  </div>
99
99
 
@@ -115,67 +115,67 @@ this is only for <a href="Eruby.html">Eruby</a>.
115
115
  <div id="methods">
116
116
  <h3 class="section-bar">Public Instance methods</h3>
117
117
 
118
- <div id="method-M000092" class="method-detail">
119
- <a name="M000092"></a>
118
+ <div id="method-M000183" class="method-detail">
119
+ <a name="M000183"></a>
120
120
 
121
121
  <div class="method-heading">
122
- <a href="#M000092" class="method-signature">
122
+ <a href="#M000183" class="method-signature">
123
123
  <span class="method-name">add_expr_escaped</span><span class="method-args">(src, code)</span>
124
124
  </a>
125
125
  </div>
126
126
 
127
127
  <div class="method-description">
128
128
  <p><a class="source-toggle" href="#"
129
- onclick="toggleCode('M000092-source');return false;">[Source]</a></p>
130
- <div class="method-source-code" id="M000092-source">
129
+ onclick="toggleCode('M000183-source');return false;">[Source]</a></p>
130
+ <div class="method-source-code" id="M000183-source">
131
131
  <pre>
132
- <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 103</span>
132
+ <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 102</span>
133
133
  <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>)
134
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' print '</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>
134
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; print #{escaped_expr(code)};&quot;</span>
135
135
  <span class="ruby-keyword kw">end</span>
136
136
  </pre>
137
137
  </div>
138
138
  </div>
139
139
  </div>
140
140
 
141
- <div id="method-M000091" class="method-detail">
142
- <a name="M000091"></a>
141
+ <div id="method-M000182" class="method-detail">
142
+ <a name="M000182"></a>
143
143
 
144
144
  <div class="method-heading">
145
- <a href="#M000091" class="method-signature">
145
+ <a href="#M000182" class="method-signature">
146
146
  <span class="method-name">add_expr_literal</span><span class="method-args">(src, code)</span>
147
147
  </a>
148
148
  </div>
149
149
 
150
150
  <div class="method-description">
151
151
  <p><a class="source-toggle" href="#"
152
- onclick="toggleCode('M000091-source');return false;">[Source]</a></p>
153
- <div class="method-source-code" id="M000091-source">
152
+ onclick="toggleCode('M000182-source');return false;">[Source]</a></p>
153
+ <div class="method-source-code" id="M000182-source">
154
154
  <pre>
155
- <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 99</span>
155
+ <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 98</span>
156
156
  <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>)
157
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' print(('</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">').to_s);'</span>
157
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; print((#{code}).to_s);&quot;</span>
158
158
  <span class="ruby-keyword kw">end</span>
159
159
  </pre>
160
160
  </div>
161
161
  </div>
162
162
  </div>
163
163
 
164
- <div id="method-M000093" class="method-detail">
165
- <a name="M000093"></a>
164
+ <div id="method-M000184" class="method-detail">
165
+ <a name="M000184"></a>
166
166
 
167
167
  <div class="method-heading">
168
- <a href="#M000093" class="method-signature">
168
+ <a href="#M000184" class="method-signature">
169
169
  <span class="method-name">add_postamble</span><span class="method-args">(src)</span>
170
170
  </a>
171
171
  </div>
172
172
 
173
173
  <div class="method-description">
174
174
  <p><a class="source-toggle" href="#"
175
- onclick="toggleCode('M000093-source');return false;">[Source]</a></p>
176
- <div class="method-source-code" id="M000093-source">
175
+ onclick="toggleCode('M000184-source');return false;">[Source]</a></p>
176
+ <div class="method-source-code" id="M000184-source">
177
177
  <pre>
178
- <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 107</span>
178
+ <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 106</span>
179
179
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_postamble</span>(<span class="ruby-identifier">src</span>)
180
180
  <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">unless</span> <span class="ruby-identifier">src</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span>
181
181
  <span class="ruby-keyword kw">end</span>
@@ -184,21 +184,21 @@ this is only for <a href="Eruby.html">Eruby</a>.
184
184
  </div>
185
185
  </div>
186
186
 
187
- <div id="method-M000089" class="method-detail">
188
- <a name="M000089"></a>
187
+ <div id="method-M000180" class="method-detail">
188
+ <a name="M000180"></a>
189
189
 
190
190
  <div class="method-heading">
191
- <a href="#M000089" class="method-signature">
191
+ <a href="#M000180" class="method-signature">
192
192
  <span class="method-name">add_preamble</span><span class="method-args">(src)</span>
193
193
  </a>
194
194
  </div>
195
195
 
196
196
  <div class="method-description">
197
197
  <p><a class="source-toggle" href="#"
198
- onclick="toggleCode('M000089-source');return false;">[Source]</a></p>
199
- <div class="method-source-code" id="M000089-source">
198
+ onclick="toggleCode('M000180-source');return false;">[Source]</a></p>
199
+ <div class="method-source-code" id="M000180-source">
200
200
  <pre>
201
- <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 92</span>
201
+ <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 91</span>
202
202
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_preamble</span>(<span class="ruby-identifier">src</span>)
203
203
  <span class="ruby-keyword kw">end</span>
204
204
  </pre>
@@ -206,23 +206,23 @@ this is only for <a href="Eruby.html">Eruby</a>.
206
206
  </div>
207
207
  </div>
208
208
 
209
- <div id="method-M000090" class="method-detail">
210
- <a name="M000090"></a>
209
+ <div id="method-M000181" class="method-detail">
210
+ <a name="M000181"></a>
211
211
 
212
212
  <div class="method-heading">
213
- <a href="#M000090" class="method-signature">
213
+ <a href="#M000181" class="method-signature">
214
214
  <span class="method-name">add_text</span><span class="method-args">(src, text)</span>
215
215
  </a>
216
216
  </div>
217
217
 
218
218
  <div class="method-description">
219
219
  <p><a class="source-toggle" href="#"
220
- onclick="toggleCode('M000090-source');return false;">[Source]</a></p>
221
- <div class="method-source-code" id="M000090-source">
220
+ onclick="toggleCode('M000181-source');return false;">[Source]</a></p>
221
+ <div class="method-source-code" id="M000181-source">
222
222
  <pre>
223
- <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 95</span>
223
+ <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 94</span>
224
224
  <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>)
225
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; print '&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
225
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; print '#{escape_text(text)}';&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
226
226
  <span class="ruby-keyword kw">end</span>
227
227
  </pre>
228
228
  </div>
@@ -86,8 +86,9 @@ evaluator for Ruby
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000158">evaluate</a>&nbsp;&nbsp;
90
- <a href="#M000157">result</a>&nbsp;&nbsp;
89
+ <a href="#M000210">def_method</a>&nbsp;&nbsp;
90
+ <a href="#M000209">evaluate</a>&nbsp;&nbsp;
91
+ <a href="#M000208">result</a>&nbsp;&nbsp;
91
92
  </div>
92
93
  </div>
93
94
 
@@ -116,12 +117,40 @@ evaluator for Ruby
116
117
  <div id="methods">
117
118
  <h3 class="section-bar">Public Instance methods</h3>
118
119
 
119
- <div id="method-M000158" class="method-detail">
120
- <a name="M000158"></a>
120
+ <div id="method-M000210" class="method-detail">
121
+ <a name="M000210"></a>
121
122
 
122
123
  <div class="method-heading">
123
- <a href="#M000158" class="method-signature">
124
- <span class="method-name">evaluate</span><span class="method-args">(context=Context.new)</span>
124
+ <a href="#M000210" class="method-signature">
125
+ <span class="method-name">def_method</span><span class="method-args">(object, method_name, filename=nil)</span>
126
+ </a>
127
+ </div>
128
+
129
+ <div class="method-description">
130
+ <p>
131
+ if object is an Class or Module then define instance method to it, else
132
+ define singleton method to it.
133
+ </p>
134
+ <p><a class="source-toggle" href="#"
135
+ onclick="toggleCode('M000210-source');return false;">[Source]</a></p>
136
+ <div class="method-source-code" id="M000210-source">
137
+ <pre>
138
+ <span class="ruby-comment cmt"># File erubis/evaluator.rb, line 79</span>
139
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">def_method</span>(<span class="ruby-identifier">object</span>, <span class="ruby-identifier">method_name</span>, <span class="ruby-identifier">filename</span>=<span class="ruby-keyword kw">nil</span>)
140
+ <span class="ruby-identifier">m</span> = <span class="ruby-identifier">object</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Module</span>) <span class="ruby-operator">?</span> <span class="ruby-identifier">:module_eval</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">:instance_eval</span>
141
+ <span class="ruby-identifier">object</span>.<span class="ruby-identifier">__send__</span>(<span class="ruby-identifier">m</span>, <span class="ruby-node">&quot;def #{method_name}; #{@src}; end&quot;</span>, <span class="ruby-identifier">filename</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@filename</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'(erubis)'</span>)
142
+ <span class="ruby-keyword kw">end</span>
143
+ </pre>
144
+ </div>
145
+ </div>
146
+ </div>
147
+
148
+ <div id="method-M000209" class="method-detail">
149
+ <a name="M000209"></a>
150
+
151
+ <div class="method-heading">
152
+ <a href="#M000209" class="method-signature">
153
+ <span class="method-name">evaluate</span><span class="method-args">(_context=Context.new)</span>
125
154
  </a>
126
155
  </div>
127
156
 
@@ -130,24 +159,27 @@ evaluator for Ruby
130
159
  invoke context.instance_eval(@src)
131
160
  </p>
132
161
  <p><a class="source-toggle" href="#"
133
- onclick="toggleCode('M000158-source');return false;">[Source]</a></p>
134
- <div class="method-source-code" id="M000158-source">
162
+ onclick="toggleCode('M000209-source');return false;">[Source]</a></p>
163
+ <div class="method-source-code" id="M000209-source">
135
164
  <pre>
136
- <span class="ruby-comment cmt"># File erubis/evaluator.rb, line 63</span>
137
- <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>)
138
- <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>)
139
- <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>))
165
+ <span class="ruby-comment cmt"># File erubis/evaluator.rb, line 69</span>
166
+ <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>)
167
+ <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>)
168
+ <span class="ruby-comment cmt">#return _context.instance_eval(@src, @filename || '(erubis)')</span>
169
+ <span class="ruby-comment cmt">#@_proc ||= eval(&quot;proc { #{@src} }&quot;, Erubis::EMPTY_BINDING, @filename || '(erubis)')</span>
170
+ <span class="ruby-ivar">@_proc</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">eval</span>(<span class="ruby-node">&quot;proc { #{@src} }&quot;</span>, <span class="ruby-identifier">binding</span>(), <span class="ruby-ivar">@filename</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'(erubis)'</span>)
171
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">_context</span>.<span class="ruby-identifier">instance_eval</span>(<span class="ruby-operator">&amp;</span><span class="ruby-ivar">@_proc</span>)
140
172
  <span class="ruby-keyword kw">end</span>
141
173
  </pre>
142
174
  </div>
143
175
  </div>
144
176
  </div>
145
177
 
146
- <div id="method-M000157" class="method-detail">
147
- <a name="M000157"></a>
178
+ <div id="method-M000208" class="method-detail">
179
+ <a name="M000208"></a>
148
180
 
149
181
  <div class="method-heading">
150
- <a href="#M000157" class="method-signature">
182
+ <a href="#M000208" class="method-signature">
151
183
  <span class="method-name">result</span><span class="method-args">(_binding_or_hash=TOPLEVEL_BINDING)</span>
152
184
  </a>
153
185
  </div>
@@ -157,18 +189,23 @@ invoke context.instance_eval(@src)
157
189
  eval(@src) with binding object
158
190
  </p>
159
191
  <p><a class="source-toggle" href="#"
160
- onclick="toggleCode('M000157-source');return false;">[Source]</a></p>
161
- <div class="method-source-code" id="M000157-source">
192
+ onclick="toggleCode('M000208-source');return false;">[Source]</a></p>
193
+ <div class="method-source-code" id="M000208-source">
162
194
  <pre>
163
- <span class="ruby-comment cmt"># File erubis/evaluator.rb, line 52</span>
195
+ <span class="ruby-comment cmt"># File erubis/evaluator.rb, line 53</span>
164
196
  <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>)
165
197
  <span class="ruby-identifier">_arg</span> = <span class="ruby-identifier">_binding_or_hash</span>
166
198
  <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>)
167
- <span class="ruby-comment cmt">## load _context data as local variables by eval</span>
168
- <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> }
169
- <span class="ruby-identifier">_arg</span> = <span class="ruby-identifier">binding</span>()
199
+ <span class="ruby-identifier">_b</span> = <span class="ruby-identifier">binding</span>()
200
+ <span class="ruby-identifier">eval</span> <span class="ruby-identifier">_arg</span>.<span class="ruby-identifier">collect</span>{<span class="ruby-operator">|</span><span class="ruby-identifier">k</span>,<span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-node">&quot;#{k} = _arg[#{k.inspect}]; &quot;</span>}.<span class="ruby-identifier">join</span>, <span class="ruby-identifier">_b</span>
201
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">_arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Binding</span>)
202
+ <span class="ruby-identifier">_b</span> = <span class="ruby-identifier">_arg</span>
203
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">_arg</span>.<span class="ruby-identifier">nil?</span>
204
+ <span class="ruby-identifier">_b</span> = <span class="ruby-identifier">binding</span>()
205
+ <span class="ruby-keyword kw">else</span>
206
+ <span class="ruby-identifier">raise</span> <span class="ruby-constant">ArgumentError</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{self.class.name}#result(): argument should be Binding or Hash but passed #{_arg.class.name} object.&quot;</span>)
170
207
  <span class="ruby-keyword kw">end</span>
171
- <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>))
208
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">eval</span>(<span class="ruby-ivar">@src</span>, <span class="ruby-identifier">_b</span>, (<span class="ruby-ivar">@filename</span> <span class="ruby-operator">||</span> <span class="ruby-value str">'(erubis'</span>))
172
209
  <span class="ruby-keyword kw">end</span>
173
210
  </pre>
174
211
  </div>
@@ -86,14 +86,14 @@ code generator for Ruby
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000041">add_expr_debug</a>&nbsp;&nbsp;
90
- <a href="#M000040">add_expr_escaped</a>&nbsp;&nbsp;
91
- <a href="#M000039">add_expr_literal</a>&nbsp;&nbsp;
92
- <a href="#M000038">add_stmt</a>&nbsp;&nbsp;
93
- <a href="#M000037">add_text</a>&nbsp;&nbsp;
94
- <a href="#M000035">escape_text</a>&nbsp;&nbsp;
95
- <a href="#M000036">escaped_expr</a>&nbsp;&nbsp;
96
- <a href="#M000034">init_generator</a>&nbsp;&nbsp;
89
+ <a href="#M000121">add_expr_debug</a>&nbsp;&nbsp;
90
+ <a href="#M000120">add_expr_escaped</a>&nbsp;&nbsp;
91
+ <a href="#M000119">add_expr_literal</a>&nbsp;&nbsp;
92
+ <a href="#M000118">add_stmt</a>&nbsp;&nbsp;
93
+ <a href="#M000117">add_text</a>&nbsp;&nbsp;
94
+ <a href="#M000115">escape_text</a>&nbsp;&nbsp;
95
+ <a href="#M000116">escaped_expr</a>&nbsp;&nbsp;
96
+ <a href="#M000114">init_generator</a>&nbsp;&nbsp;
97
97
  </div>
98
98
  </div>
99
99
 
@@ -123,19 +123,19 @@ code generator for Ruby
123
123
  <div id="methods">
124
124
  <h3 class="section-bar">Public Instance methods</h3>
125
125
 
126
- <div id="method-M000041" class="method-detail">
127
- <a name="M000041"></a>
126
+ <div id="method-M000121" class="method-detail">
127
+ <a name="M000121"></a>
128
128
 
129
129
  <div class="method-heading">
130
- <a href="#M000041" class="method-signature">
130
+ <a href="#M000121" class="method-signature">
131
131
  <span class="method-name">add_expr_debug</span><span class="method-args">(src, code)</span>
132
132
  </a>
133
133
  </div>
134
134
 
135
135
  <div class="method-description">
136
136
  <p><a class="source-toggle" href="#"
137
- onclick="toggleCode('M000041-source');return false;">[Source]</a></p>
138
- <div class="method-source-code" id="M000041-source">
137
+ onclick="toggleCode('M000121-source');return false;">[Source]</a></p>
138
+ <div class="method-source-code" id="M000121-source">
139
139
  <pre>
140
140
  <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 63</span>
141
141
  <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>)
@@ -148,65 +148,65 @@ code generator for Ruby
148
148
  </div>
149
149
  </div>
150
150
 
151
- <div id="method-M000040" class="method-detail">
152
- <a name="M000040"></a>
151
+ <div id="method-M000120" class="method-detail">
152
+ <a name="M000120"></a>
153
153
 
154
154
  <div class="method-heading">
155
- <a href="#M000040" class="method-signature">
155
+ <a href="#M000120" class="method-signature">
156
156
  <span class="method-name">add_expr_escaped</span><span class="method-args">(src, code)</span>
157
157
  </a>
158
158
  </div>
159
159
 
160
160
  <div class="method-description">
161
161
  <p><a class="source-toggle" href="#"
162
- onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
163
- <div class="method-source-code" id="M000040-source">
162
+ onclick="toggleCode('M000120-source');return false;">[Source]</a></p>
163
+ <div class="method-source-code" id="M000120-source">
164
164
  <pre>
165
165
  <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 59</span>
166
166
  <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>)
167
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' _buf &lt;&lt; '</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>
167
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; #{@bufvar} &lt;&lt; &quot;</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>
168
168
  <span class="ruby-keyword kw">end</span>
169
169
  </pre>
170
170
  </div>
171
171
  </div>
172
172
  </div>
173
173
 
174
- <div id="method-M000039" class="method-detail">
175
- <a name="M000039"></a>
174
+ <div id="method-M000119" class="method-detail">
175
+ <a name="M000119"></a>
176
176
 
177
177
  <div class="method-heading">
178
- <a href="#M000039" class="method-signature">
178
+ <a href="#M000119" class="method-signature">
179
179
  <span class="method-name">add_expr_literal</span><span class="method-args">(src, code)</span>
180
180
  </a>
181
181
  </div>
182
182
 
183
183
  <div class="method-description">
184
184
  <p><a class="source-toggle" href="#"
185
- onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
186
- <div class="method-source-code" id="M000039-source">
185
+ onclick="toggleCode('M000119-source');return false;">[Source]</a></p>
186
+ <div class="method-source-code" id="M000119-source">
187
187
  <pre>
188
188
  <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 55</span>
189
189
  <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>)
190
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' _buf &lt;&lt; ('</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">').to_s;'</span>
190
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; #{@bufvar} &lt;&lt; (&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">').to_s;'</span>
191
191
  <span class="ruby-keyword kw">end</span>
192
192
  </pre>
193
193
  </div>
194
194
  </div>
195
195
  </div>
196
196
 
197
- <div id="method-M000038" class="method-detail">
198
- <a name="M000038"></a>
197
+ <div id="method-M000118" class="method-detail">
198
+ <a name="M000118"></a>
199
199
 
200
200
  <div class="method-heading">
201
- <a href="#M000038" class="method-signature">
201
+ <a href="#M000118" class="method-signature">
202
202
  <span class="method-name">add_stmt</span><span class="method-args">(src, code)</span>
203
203
  </a>
204
204
  </div>
205
205
 
206
206
  <div class="method-description">
207
207
  <p><a class="source-toggle" href="#"
208
- onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
209
- <div class="method-source-code" id="M000038-source">
208
+ onclick="toggleCode('M000118-source');return false;">[Source]</a></p>
209
+ <div class="method-source-code" id="M000118-source">
210
210
  <pre>
211
211
  <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 49</span>
212
212
  <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>)
@@ -219,42 +219,42 @@ code generator for Ruby
219
219
  </div>
220
220
  </div>
221
221
 
222
- <div id="method-M000037" class="method-detail">
223
- <a name="M000037"></a>
222
+ <div id="method-M000117" class="method-detail">
223
+ <a name="M000117"></a>
224
224
 
225
225
  <div class="method-heading">
226
- <a href="#M000037" class="method-signature">
226
+ <a href="#M000117" class="method-signature">
227
227
  <span class="method-name">add_text</span><span class="method-args">(src, text)</span>
228
228
  </a>
229
229
  </div>
230
230
 
231
231
  <div class="method-description">
232
232
  <p><a class="source-toggle" href="#"
233
- onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
234
- <div class="method-source-code" id="M000037-source">
233
+ onclick="toggleCode('M000117-source');return false;">[Source]</a></p>
234
+ <div class="method-source-code" id="M000117-source">
235
235
  <pre>
236
236
  <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 45</span>
237
237
  <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>)
238
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; _buf &lt;&lt; '&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
238
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; #{@bufvar} &lt;&lt; '&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
239
239
  <span class="ruby-keyword kw">end</span>
240
240
  </pre>
241
241
  </div>
242
242
  </div>
243
243
  </div>
244
244
 
245
- <div id="method-M000035" class="method-detail">
246
- <a name="M000035"></a>
245
+ <div id="method-M000115" class="method-detail">
246
+ <a name="M000115"></a>
247
247
 
248
248
  <div class="method-heading">
249
- <a href="#M000035" class="method-signature">
249
+ <a href="#M000115" class="method-signature">
250
250
  <span class="method-name">escape_text</span><span class="method-args">(text)</span>
251
251
  </a>
252
252
  </div>
253
253
 
254
254
  <div class="method-description">
255
255
  <p><a class="source-toggle" href="#"
256
- onclick="toggleCode('M000035-source');return false;">[Source]</a></p>
257
- <div class="method-source-code" id="M000035-source">
256
+ onclick="toggleCode('M000115-source');return false;">[Source]</a></p>
257
+ <div class="method-source-code" id="M000115-source">
258
258
  <pre>
259
259
  <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 31</span>
260
260
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>)
@@ -265,19 +265,19 @@ code generator for Ruby
265
265
  </div>
266
266
  </div>
267
267
 
268
- <div id="method-M000036" class="method-detail">
269
- <a name="M000036"></a>
268
+ <div id="method-M000116" class="method-detail">
269
+ <a name="M000116"></a>
270
270
 
271
271
  <div class="method-heading">
272
- <a href="#M000036" class="method-signature">
272
+ <a href="#M000116" class="method-signature">
273
273
  <span class="method-name">escaped_expr</span><span class="method-args">(code)</span>
274
274
  </a>
275
275
  </div>
276
276
 
277
277
  <div class="method-description">
278
278
  <p><a class="source-toggle" href="#"
279
- onclick="toggleCode('M000036-source');return false;">[Source]</a></p>
280
- <div class="method-source-code" id="M000036-source">
279
+ onclick="toggleCode('M000116-source');return false;">[Source]</a></p>
280
+ <div class="method-source-code" id="M000116-source">
281
281
  <pre>
282
282
  <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 35</span>
283
283
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escaped_expr</span>(<span class="ruby-identifier">code</span>)
@@ -288,24 +288,25 @@ code generator for Ruby
288
288
  </div>
289
289
  </div>
290
290
 
291
- <div id="method-M000034" class="method-detail">
292
- <a name="M000034"></a>
291
+ <div id="method-M000114" class="method-detail">
292
+ <a name="M000114"></a>
293
293
 
294
294
  <div class="method-heading">
295
- <a href="#M000034" class="method-signature">
295
+ <a href="#M000114" class="method-signature">
296
296
  <span class="method-name">init_generator</span><span class="method-args">(properties={})</span>
297
297
  </a>
298
298
  </div>
299
299
 
300
300
  <div class="method-description">
301
301
  <p><a class="source-toggle" href="#"
302
- onclick="toggleCode('M000034-source');return false;">[Source]</a></p>
303
- <div class="method-source-code" id="M000034-source">
302
+ onclick="toggleCode('M000114-source');return false;">[Source]</a></p>
303
+ <div class="method-source-code" id="M000114-source">
304
304
  <pre>
305
- <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 22</span>
305
+ <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 21</span>
306
306
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_generator</span>(<span class="ruby-identifier">properties</span>={})
307
307
  <span class="ruby-keyword kw">super</span>
308
308
  <span class="ruby-ivar">@escapefunc</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">&quot;Erubis::XmlHelper.escape_xml&quot;</span>
309
+ <span class="ruby-ivar">@bufvar</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:bufvar</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">&quot;_buf&quot;</span>
309
310
  <span class="ruby-keyword kw">end</span>
310
311
  </pre>
311
312
  </div>