erubis 2.1.0 → 2.2.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 (118) hide show
  1. data/{ChangeLog → CHANGES} +139 -6
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +20 -5
  4. data/benchmark/erubybench.rb +465 -229
  5. data/benchmark/erubybench.rhtml +39 -15
  6. data/benchmark/erubybench.yaml +126 -46
  7. data/bin/erubis +2 -2
  8. data/bin/notext +3 -3
  9. data/contrib/action_view_base_rb.patch +23 -0
  10. data/contrib/erubis +466 -308
  11. data/contrib/inline-require +2 -2
  12. data/doc-api/classes/ERB.html +101 -0
  13. data/doc-api/classes/Erubis.html +59 -6
  14. data/doc-api/classes/Erubis/ArrayEnhancer.html +12 -12
  15. data/doc-api/classes/Erubis/Basic/Converter.html +61 -57
  16. data/doc-api/classes/Erubis/BiPatternEnhancer.html +14 -14
  17. data/doc-api/classes/Erubis/CGenerator.html +60 -60
  18. data/doc-api/classes/Erubis/Context.html +125 -29
  19. data/doc-api/classes/Erubis/Converter.html +73 -22
  20. data/doc-api/classes/Erubis/Engine.html +55 -39
  21. data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
  22. data/doc-api/classes/Erubis/Evaluator.html +19 -19
  23. data/doc-api/classes/Erubis/Generator.html +16 -10
  24. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
  25. data/doc-api/classes/Erubis/{Helper.html → Helpers.html} +5 -6
  26. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +296 -0
  27. data/doc-api/classes/Erubis/JavaGenerator.html +54 -54
  28. data/doc-api/classes/Erubis/JavascriptGenerator.html +60 -60
  29. data/doc-api/classes/Erubis/Main.html +42 -30
  30. data/doc-api/classes/Erubis/NoCodeEnhancer.html +5 -5
  31. data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
  32. data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
  33. data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
  34. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
  35. data/doc-api/classes/Erubis/PI/Converter.html +28 -81
  36. data/doc-api/classes/Erubis/PI/Ec.html +6 -6
  37. data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
  38. data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
  39. data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
  40. data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
  41. data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
  42. data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
  43. data/doc-api/classes/Erubis/PI/TinyEruby.html +66 -79
  44. data/doc-api/classes/Erubis/PercentLineEnhancer.html +8 -8
  45. data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
  46. data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
  47. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +21 -21
  48. data/doc-api/classes/Erubis/PrintOutEnhancer.html +30 -30
  49. data/doc-api/classes/Erubis/RubyEvaluator.html +12 -12
  50. data/doc-api/classes/Erubis/RubyGenerator.html +9 -9
  51. data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -6
  52. data/doc-api/classes/Erubis/StdoutEnhancer.html +12 -12
  53. data/doc-api/classes/Erubis/StringBufferEnhancer.html +13 -13
  54. data/doc-api/classes/Erubis/TinyEruby.html +56 -68
  55. data/doc-api/classes/Erubis/XmlHelper.html +20 -23
  56. data/doc-api/created.rid +1 -1
  57. data/doc-api/files/{__/README_txt.html → README_txt.html} +35 -20
  58. data/doc-api/files/erubis/context_rb.html +2 -2
  59. data/doc-api/files/erubis/converter_rb.html +2 -2
  60. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  61. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  62. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  63. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  64. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  65. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  66. data/doc-api/files/erubis/engine/eruby_rb.html +2 -3
  67. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  68. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  69. data/doc-api/files/erubis/engine_rb.html +2 -2
  70. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  71. data/doc-api/files/erubis/error_rb.html +2 -2
  72. data/doc-api/files/erubis/evaluator_rb.html +2 -2
  73. data/doc-api/files/erubis/generator_rb.html +2 -2
  74. data/doc-api/files/erubis/helper_rb.html +2 -2
  75. data/doc-api/files/erubis/{helper/rails_rb.html → helpers/rails_helper_rb.html} +6 -31
  76. data/doc-api/files/erubis/local-setting_rb.html +2 -2
  77. data/doc-api/files/erubis/main_rb.html +4 -2
  78. data/doc-api/files/erubis/tiny_rb.html +2 -2
  79. data/doc-api/files/erubis_rb.html +2 -2
  80. data/doc-api/fr_class_index.html +3 -3
  81. data/doc-api/fr_file_index.html +2 -2
  82. data/doc-api/fr_method_index.html +142 -147
  83. data/doc-api/index.html +1 -1
  84. data/doc/users-guide.html +387 -218
  85. data/lib/erubis.rb +21 -25
  86. data/lib/erubis/context.rb +34 -4
  87. data/lib/erubis/converter.rb +159 -115
  88. data/lib/erubis/engine.rb +29 -12
  89. data/lib/erubis/engine/ec.rb +2 -2
  90. data/lib/erubis/engine/ejava.rb +2 -2
  91. data/lib/erubis/engine/ejavascript.rb +2 -2
  92. data/lib/erubis/engine/enhanced.rb +2 -2
  93. data/lib/erubis/engine/eperl.rb +2 -2
  94. data/lib/erubis/engine/ephp.rb +2 -2
  95. data/lib/erubis/engine/eruby.rb +5 -6
  96. data/lib/erubis/engine/escheme.rb +2 -2
  97. data/lib/erubis/engine/optimized.rb +2 -2
  98. data/lib/erubis/enhancer.rb +33 -7
  99. data/lib/erubis/error.rb +2 -2
  100. data/lib/erubis/evaluator.rb +2 -2
  101. data/lib/erubis/generator.rb +6 -3
  102. data/lib/erubis/helper.rb +6 -23
  103. data/lib/erubis/helpers/rails_helper.rb +202 -0
  104. data/lib/erubis/local-setting.rb +4 -4
  105. data/lib/erubis/main.rb +90 -35
  106. data/lib/erubis/tiny.rb +57 -52
  107. data/test/assert-text-equal.rb +2 -2
  108. data/test/test-engines.rb +5 -5
  109. data/test/test-erubis.rb +173 -63
  110. data/test/test-main.rb +135 -27
  111. data/test/test-notext.rb +2 -2
  112. data/test/test.rb +2 -2
  113. data/test/testutil.rb +2 -2
  114. metadata +16 -16
  115. data/LGPL +0 -504
  116. data/doc-api/classes/Erubis/Helper/CachedRailsTemplate.html +0 -198
  117. data/doc-api/classes/Erubis/Helper/RailsTemplate.html +0 -366
  118. data/lib/erubis/helper/rails.rb +0 -159
@@ -95,7 +95,7 @@ code
95
95
  <h3 class="section-bar">Methods</h3>
96
96
 
97
97
  <div class="name-list">
98
- <a href="#M000178">add_expr_debug</a>&nbsp;&nbsp;
98
+ <a href="#M000173">add_expr_debug</a>&nbsp;&nbsp;
99
99
  </div>
100
100
  </div>
101
101
 
@@ -124,19 +124,19 @@ code
124
124
  <div id="methods">
125
125
  <h3 class="section-bar">Public Instance methods</h3>
126
126
 
127
- <div id="method-M000178" class="method-detail">
128
- <a name="M000178"></a>
127
+ <div id="method-M000173" class="method-detail">
128
+ <a name="M000173"></a>
129
129
 
130
130
  <div class="method-heading">
131
- <a href="#M000178" class="method-signature">
131
+ <a href="#M000173" class="method-signature">
132
132
  <span class="method-name">add_expr_debug</span><span class="method-args">(src, code)</span>
133
133
  </a>
134
134
  </div>
135
135
 
136
136
  <div class="method-description">
137
137
  <p><a class="source-toggle" href="#"
138
- onclick="toggleCode('M000178-source');return false;">[Source]</a></p>
139
- <div class="method-source-code" id="M000178-source">
138
+ onclick="toggleCode('M000173-source');return false;">[Source]</a></p>
139
+ <div class="method-source-code" id="M000173-source">
140
140
  <pre>
141
141
  <span class="ruby-comment cmt"># File erubis/engine/optimized.rb, line 121</span>
142
142
  <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>)
@@ -91,8 +91,6 @@ this class converts &#8217;&lt;?rb &#8230; ?&gt;&#8217; and
91
91
  <a href="#M000038">convert</a>&nbsp;&nbsp;
92
92
  <a href="#M000039">convert_input</a>&nbsp;&nbsp;
93
93
  <a href="#M000037">init_converter</a>&nbsp;&nbsp;
94
- <a href="#M000041">parse_exprs</a>&nbsp;&nbsp;
95
- <a href="#M000040">parse_stmts</a>&nbsp;&nbsp;
96
94
  </div>
97
95
  </div>
98
96
 
@@ -153,7 +151,7 @@ this class converts &#8217;&lt;?rb &#8230; ?&gt;&#8217; and
153
151
  onclick="toggleCode('M000038-source');return false;">[Source]</a></p>
154
152
  <div class="method-source-code" id="M000038-source">
155
153
  <pre>
156
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 181</span>
154
+ <span class="ruby-comment cmt"># File erubis/converter.rb, line 219</span>
157
155
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>)
158
156
  <span class="ruby-identifier">code</span> = <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">input</span>)
159
157
  <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@header</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@footer</span> <span class="ruby-operator">?</span> <span class="ruby-node">&quot;#{@header}#{code}#{@footer}&quot;</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">code</span>
@@ -177,12 +175,12 @@ this class converts &#8217;&lt;?rb &#8230; ?&gt;&#8217; and
177
175
  onclick="toggleCode('M000037-source');return false;">[Source]</a></p>
178
176
  <div class="method-source-code" id="M000037-source">
179
177
  <pre>
180
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 172</span>
178
+ <span class="ruby-comment cmt"># File erubis/converter.rb, line 210</span>
181
179
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
182
180
  <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">properties</span>)
183
- <span class="ruby-ivar">@trim</span> = <span class="ruby-operator">!</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>)
181
+ <span class="ruby-ivar">@trim</span> = <span class="ruby-identifier">properties</span>.<span class="ruby-identifier">fetch</span>(<span class="ruby-identifier">:trim</span>, <span class="ruby-keyword kw">true</span>)
184
182
  <span class="ruby-ivar">@pi</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:pi</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:pi</span>]
185
- <span class="ruby-ivar">@embchar</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:embchar</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'@'</span>
183
+ <span class="ruby-ivar">@embchar</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:embchar</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'@'</span>
186
184
  <span class="ruby-ivar">@pattern</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:pattern</span>]
187
185
  <span class="ruby-ivar">@pattern</span> = <span class="ruby-value str">'&lt;% %&gt;'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pattern</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-comment cmt">#|| @pattern == true</span>
188
186
  <span class="ruby-keyword kw">end</span>
@@ -207,96 +205,45 @@ this class converts &#8217;&lt;?rb &#8230; ?&gt;&#8217; and
207
205
  onclick="toggleCode('M000039-source');return false;">[Source]</a></p>
208
206
  <div class="method-source-code" id="M000039-source">
209
207
  <pre>
210
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 188</span>
208
+ <span class="ruby-comment cmt"># File erubis/converter.rb, line 226</span>
211
209
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert_input</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">input</span>)
212
- <span class="ruby-identifier">parse_stmts</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">input</span>)
213
- <span class="ruby-comment cmt">#parse_stmts2(codebuf, input)</span>
214
- <span class="ruby-keyword kw">end</span>
215
- </pre>
216
- </div>
217
- </div>
218
- </div>
219
-
220
- <div id="method-M000041" class="method-detail">
221
- <a name="M000041"></a>
222
-
223
- <div class="method-heading">
224
- <a href="#M000041" class="method-signature">
225
- <span class="method-name">parse_exprs</span><span class="method-args">(codebuf, input)</span>
226
- </a>
227
- </div>
228
-
229
- <div class="method-description">
230
- <p><a class="source-toggle" href="#"
231
- onclick="toggleCode('M000041-source');return false;">[Source]</a></p>
232
- <div class="method-source-code" id="M000041-source">
233
- <pre>
234
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 216</span>
235
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_exprs</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">input</span>)
236
- <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@expr_pattern</span>
210
+ <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@regexp</span>
211
+ <span class="ruby-ivar">@pi</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">'e'</span>
237
212
  <span class="ruby-identifier">ch</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">escape</span>(<span class="ruby-ivar">@embchar</span>)
238
213
  <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pattern</span>
239
214
  <span class="ruby-identifier">left</span>, <span class="ruby-identifier">right</span> = <span class="ruby-ivar">@pattern</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">' '</span>)
240
- <span class="ruby-ivar">@expr_pattern</span> = <span class="ruby-node">/#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/</span>
215
+ <span class="ruby-ivar">@regexp</span> = <span class="ruby-node">/&lt;\?#{@pi}(?:-(\w+))?(\s.*?)\?&gt;([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/</span><span class="ruby-identifier">m</span>
241
216
  <span class="ruby-keyword kw">else</span>
242
- <span class="ruby-ivar">@expr_pattern</span> = <span class="ruby-node">/#{ch}(!*)?\{(.*?)\}#{ch}/</span>
217
+ <span class="ruby-ivar">@regexp</span> = <span class="ruby-node">/&lt;\?#{@pi}(?:-(\w+))?(\s.*?)\?&gt;([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}/</span><span class="ruby-identifier">m</span>
243
218
  <span class="ruby-keyword kw">end</span>
244
219
  <span class="ruby-keyword kw">end</span>
220
+ <span class="ruby-comment cmt">#</span>
221
+ <span class="ruby-identifier">is_bol</span> = <span class="ruby-keyword kw">true</span>
245
222
  <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
246
- <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-ivar">@expr_pattern</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">indicator1</span>, <span class="ruby-identifier">code1</span>, <span class="ruby-identifier">indicator2</span>, <span class="ruby-identifier">code2</span><span class="ruby-operator">|</span>
247
- <span class="ruby-identifier">indicator</span> = <span class="ruby-identifier">indicator1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">indicator2</span>
248
- <span class="ruby-identifier">code</span> = <span class="ruby-identifier">code1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">code2</span>
223
+ <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-ivar">@regexp</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pi_arg</span>, <span class="ruby-identifier">stmt</span>, <span class="ruby-identifier">rspace</span>,
224
+ <span class="ruby-identifier">indicator1</span>, <span class="ruby-identifier">expr1</span>, <span class="ruby-identifier">indicator2</span>, <span class="ruby-identifier">expr2</span><span class="ruby-operator">|</span>
249
225
  <span class="ruby-identifier">match</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
250
- <span class="ruby-identifier">index</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)
251
- <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">index</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">pos</span>]
226
+ <span class="ruby-identifier">len</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>) <span class="ruby-operator">-</span> <span class="ruby-identifier">pos</span>
227
+ <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">len</span>]
252
228
  <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
229
+ <span class="ruby-identifier">lspace</span> = <span class="ruby-identifier">stmt</span> <span class="ruby-value">? </span><span class="ruby-identifier">detect_spaces_at_bol</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">is_bol</span>) <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
230
+ <span class="ruby-identifier">is_bol</span> = <span class="ruby-identifier">stmt</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">rspace</span> <span class="ruby-value">? </span><span class="ruby-keyword kw">true</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">false</span>
253
231
  <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">text</span>) <span class="ruby-comment cmt"># unless text.empty?</span>
254
- <span class="ruby-identifier">add_pi_expr</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">indicator</span>)
255
- <span class="ruby-keyword kw">end</span>
256
- <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">$'</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">input</span>
257
- <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">rest</span>)
258
- <span class="ruby-keyword kw">end</span>
259
- </pre>
260
- </div>
261
- </div>
262
- </div>
263
-
264
- <div id="method-M000040" class="method-detail">
265
- <a name="M000040"></a>
266
-
267
- <div class="method-heading">
268
- <a href="#M000040" class="method-signature">
269
- <span class="method-name">parse_stmts</span><span class="method-args">(codebuf, input)</span>
270
- </a>
271
- </div>
272
-
273
- <div class="method-description">
274
- <p><a class="source-toggle" href="#"
275
- onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
276
- <div class="method-source-code" id="M000040-source">
277
- <pre>
278
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 193</span>
279
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse_stmts</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">input</span>)
280
- <span class="ruby-comment cmt">#regexp = pattern_regexp(@pattern)</span>
281
- <span class="ruby-ivar">@pi</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">'e'</span>
282
- <span class="ruby-ivar">@stmt_pattern</span> <span class="ruby-operator">||=</span> <span class="ruby-node">/(^[ \t]*)?&lt;\?#{@pi}(?:-(\w+))?(\s.*?)\?&gt;([ \t]*\r?\n)?/</span><span class="ruby-identifier">m</span>
283
- <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
284
- <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-ivar">@stmt_pattern</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">lspace</span>, <span class="ruby-identifier">pi_arg</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">rspace</span><span class="ruby-operator">|</span>
285
- <span class="ruby-identifier">match</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
286
- <span class="ruby-identifier">index</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)
287
- <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">index</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">pos</span>]
288
- <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
289
- <span class="ruby-identifier">parse_exprs</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">text</span>) <span class="ruby-comment cmt"># unless text.empty?</span>
290
- <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>
291
- <span class="ruby-identifier">add_pi_stmt</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-node">&quot;#{lspace}#{code}#{rspace}&quot;</span>, <span class="ruby-identifier">pi_arg</span>)
232
+ <span class="ruby-comment cmt">#</span>
233
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stmt</span>
234
+ <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>
235
+ <span class="ruby-identifier">add_pi_stmt</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-node">&quot;#{lspace}#{stmt}#{rspace}&quot;</span>, <span class="ruby-identifier">pi_arg</span>)
236
+ <span class="ruby-keyword kw">else</span>
237
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
238
+ <span class="ruby-identifier">add_pi_stmt</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">stmt</span>, <span class="ruby-identifier">pi_arg</span>)
239
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
240
+ <span class="ruby-keyword kw">end</span>
292
241
  <span class="ruby-keyword kw">else</span>
293
- <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">lspace</span>)
294
- <span class="ruby-identifier">add_pi_stmt</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">pi_arg</span>)
295
- <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">rspace</span>)
242
+ <span class="ruby-identifier">add_pi_expr</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">expr1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">expr2</span>, <span class="ruby-identifier">indicator1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">indicator2</span>)
296
243
  <span class="ruby-keyword kw">end</span>
297
244
  <span class="ruby-keyword kw">end</span>
298
245
  <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">$'</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">input</span>
299
- <span class="ruby-identifier">parse_exprs</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">rest</span>)
246
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">codebuf</span>, <span class="ruby-identifier">rest</span>)
300
247
  <span class="ruby-keyword kw">end</span>
301
248
  </pre>
302
249
  </div>
@@ -98,7 +98,7 @@ end
98
98
  <h3 class="section-bar">Methods</h3>
99
99
 
100
100
  <div class="name-list">
101
- <a href="#M000051">init_converter</a>&nbsp;&nbsp;
101
+ <a href="#M000048">init_converter</a>&nbsp;&nbsp;
102
102
  </div>
103
103
  </div>
104
104
 
@@ -127,19 +127,19 @@ end
127
127
  <div id="methods">
128
128
  <h3 class="section-bar">Public Instance methods</h3>
129
129
 
130
- <div id="method-M000051" class="method-detail">
131
- <a name="M000051"></a>
130
+ <div id="method-M000048" class="method-detail">
131
+ <a name="M000048"></a>
132
132
 
133
133
  <div class="method-heading">
134
- <a href="#M000051" class="method-signature">
134
+ <a href="#M000048" class="method-signature">
135
135
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
136
136
  </a>
137
137
  </div>
138
138
 
139
139
  <div class="method-description">
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000051-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000051-source">
141
+ onclick="toggleCode('M000048-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000048-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File erubis/engine/ec.rb, line 110</span>
145
145
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
@@ -98,7 +98,7 @@ end
98
98
  <h3 class="section-bar">Methods</h3>
99
99
 
100
100
  <div class="name-list">
101
- <a href="#M000043">init_converter</a>&nbsp;&nbsp;
101
+ <a href="#M000041">init_converter</a>&nbsp;&nbsp;
102
102
  </div>
103
103
  </div>
104
104
 
@@ -127,19 +127,19 @@ end
127
127
  <div id="methods">
128
128
  <h3 class="section-bar">Public Instance methods</h3>
129
129
 
130
- <div id="method-M000043" class="method-detail">
131
- <a name="M000043"></a>
130
+ <div id="method-M000041" class="method-detail">
131
+ <a name="M000041"></a>
132
132
 
133
133
  <div class="method-heading">
134
- <a href="#M000043" class="method-signature">
134
+ <a href="#M000041" class="method-signature">
135
135
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
136
136
  </a>
137
137
  </div>
138
138
 
139
139
  <div class="method-description">
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000043-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000043-source">
141
+ onclick="toggleCode('M000041-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000041-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File erubis/engine/ejava.rb, line 104</span>
145
145
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
@@ -98,7 +98,7 @@ end
98
98
  <h3 class="section-bar">Methods</h3>
99
99
 
100
100
  <div class="name-list">
101
- <a href="#M000042">init_converter</a>&nbsp;&nbsp;
101
+ <a href="#M000040">init_converter</a>&nbsp;&nbsp;
102
102
  </div>
103
103
  </div>
104
104
 
@@ -127,19 +127,19 @@ end
127
127
  <div id="methods">
128
128
  <h3 class="section-bar">Public Instance methods</h3>
129
129
 
130
- <div id="method-M000042" class="method-detail">
131
- <a name="M000042"></a>
130
+ <div id="method-M000040" class="method-detail">
131
+ <a name="M000040"></a>
132
132
 
133
133
  <div class="method-heading">
134
- <a href="#M000042" class="method-signature">
134
+ <a href="#M000040" class="method-signature">
135
135
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
136
136
  </a>
137
137
  </div>
138
138
 
139
139
  <div class="method-description">
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000042-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000042-source">
141
+ onclick="toggleCode('M000040-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000040-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File erubis/engine/ejavascript.rb, line 106</span>
145
145
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
@@ -98,7 +98,7 @@ end
98
98
  <h3 class="section-bar">Methods</h3>
99
99
 
100
100
  <div class="name-list">
101
- <a href="#M000050">init_converter</a>&nbsp;&nbsp;
101
+ <a href="#M000047">init_converter</a>&nbsp;&nbsp;
102
102
  </div>
103
103
  </div>
104
104
 
@@ -127,19 +127,19 @@ end
127
127
  <div id="methods">
128
128
  <h3 class="section-bar">Public Instance methods</h3>
129
129
 
130
- <div id="method-M000050" class="method-detail">
131
- <a name="M000050"></a>
130
+ <div id="method-M000047" class="method-detail">
131
+ <a name="M000047"></a>
132
132
 
133
133
  <div class="method-heading">
134
- <a href="#M000050" class="method-signature">
134
+ <a href="#M000047" class="method-signature">
135
135
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
136
136
  </a>
137
137
  </div>
138
138
 
139
139
  <div class="method-description">
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000050-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000050-source">
141
+ onclick="toggleCode('M000047-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000047-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File erubis/engine/eperl.rb, line 88</span>
145
145
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
@@ -98,7 +98,7 @@ end
98
98
  <h3 class="section-bar">Methods</h3>
99
99
 
100
100
  <div class="name-list">
101
- <a href="#M000044">init_converter</a>&nbsp;&nbsp;
101
+ <a href="#M000042">init_converter</a>&nbsp;&nbsp;
102
102
  </div>
103
103
  </div>
104
104
 
@@ -127,19 +127,19 @@ end
127
127
  <div id="methods">
128
128
  <h3 class="section-bar">Public Instance methods</h3>
129
129
 
130
- <div id="method-M000044" class="method-detail">
131
- <a name="M000044"></a>
130
+ <div id="method-M000042" class="method-detail">
131
+ <a name="M000042"></a>
132
132
 
133
133
  <div class="method-heading">
134
- <a href="#M000044" class="method-signature">
134
+ <a href="#M000042" class="method-signature">
135
135
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
136
136
  </a>
137
137
  </div>
138
138
 
139
139
  <div class="method-description">
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000044-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000044-source">
141
+ onclick="toggleCode('M000042-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000042-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File erubis/engine/ephp.rb, line 92</span>
145
145
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
@@ -86,7 +86,7 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000052">init_converter</a>&nbsp;&nbsp;
89
+ <a href="#M000049">init_converter</a>&nbsp;&nbsp;
90
90
  </div>
91
91
  </div>
92
92
 
@@ -116,21 +116,21 @@
116
116
  <div id="methods">
117
117
  <h3 class="section-bar">Public Instance methods</h3>
118
118
 
119
- <div id="method-M000052" class="method-detail">
120
- <a name="M000052"></a>
119
+ <div id="method-M000049" class="method-detail">
120
+ <a name="M000049"></a>
121
121
 
122
122
  <div class="method-heading">
123
- <a href="#M000052" class="method-signature">
123
+ <a href="#M000049" class="method-signature">
124
124
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
125
125
  </a>
126
126
  </div>
127
127
 
128
128
  <div class="method-description">
129
129
  <p><a class="source-toggle" href="#"
130
- onclick="toggleCode('M000052-source');return false;">[Source]</a></p>
131
- <div class="method-source-code" id="M000052-source">
130
+ onclick="toggleCode('M000049-source');return false;">[Source]</a></p>
131
+ <div class="method-source-code" id="M000049-source">
132
132
  <pre>
133
- <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 110</span>
133
+ <span class="ruby-comment cmt"># File erubis/engine/eruby.rb, line 109</span>
134
134
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
135
135
  <span class="ruby-ivar">@pi</span> = <span class="ruby-value str">'rb'</span>
136
136
  <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">properties</span>)
@@ -98,7 +98,7 @@ end
98
98
  <h3 class="section-bar">Methods</h3>
99
99
 
100
100
  <div class="name-list">
101
- <a href="#M000053">init_converter</a>&nbsp;&nbsp;
101
+ <a href="#M000050">init_converter</a>&nbsp;&nbsp;
102
102
  </div>
103
103
  </div>
104
104
 
@@ -127,19 +127,19 @@ end
127
127
  <div id="methods">
128
128
  <h3 class="section-bar">Public Instance methods</h3>
129
129
 
130
- <div id="method-M000053" class="method-detail">
131
- <a name="M000053"></a>
130
+ <div id="method-M000050" class="method-detail">
131
+ <a name="M000050"></a>
132
132
 
133
133
  <div class="method-heading">
134
- <a href="#M000053" class="method-signature">
134
+ <a href="#M000050" class="method-signature">
135
135
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
136
136
  </a>
137
137
  </div>
138
138
 
139
139
  <div class="method-description">
140
140
  <p><a class="source-toggle" href="#"
141
- onclick="toggleCode('M000053-source');return false;">[Source]</a></p>
142
- <div class="method-source-code" id="M000053-source">
141
+ onclick="toggleCode('M000050-source');return false;">[Source]</a></p>
142
+ <div class="method-source-code" id="M000050-source">
143
143
  <pre>
144
144
  <span class="ruby-comment cmt"># File erubis/engine/escheme.rb, line 107</span>
145
145
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
@@ -86,11 +86,10 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000046">convert</a>&nbsp;&nbsp;
90
- <a href="#M000047">escape_text</a>&nbsp;&nbsp;
91
- <a href="#M000049">evaluate</a>&nbsp;&nbsp;
92
- <a href="#M000045">new</a>&nbsp;&nbsp;
93
- <a href="#M000048">result</a>&nbsp;&nbsp;
89
+ <a href="#M000044">convert</a>&nbsp;&nbsp;
90
+ <a href="#M000046">evaluate</a>&nbsp;&nbsp;
91
+ <a href="#M000043">new</a>&nbsp;&nbsp;
92
+ <a href="#M000045">result</a>&nbsp;&nbsp;
94
93
  </div>
95
94
  </div>
96
95
 
@@ -110,7 +109,7 @@
110
109
  <tr class="top-aligned-row context-row">
111
110
  <td class="context-item-name">EMBEDDED_PATTERN</td>
112
111
  <td>=</td>
113
- <td class="context-item-value">/(^[ \t]*)?&lt;\?rb(\s.*?)\?&gt;([ \t]*\r?\n)?|\$(!*)?\{(.*?)\}/</td>
112
+ <td class="context-item-value">/(^[ \t]*)?&lt;\?rb(\s.*?)\?&gt;([ \t]*\r?\n)?|@(!+)?\{(.*?)\}@/m</td>
114
113
  </tr>
115
114
  </table>
116
115
  </div>
@@ -138,21 +137,21 @@
138
137
  <div id="methods">
139
138
  <h3 class="section-bar">Public Class methods</h3>
140
139
 
141
- <div id="method-M000045" class="method-detail">
142
- <a name="M000045"></a>
140
+ <div id="method-M000043" class="method-detail">
141
+ <a name="M000043"></a>
143
142
 
144
143
  <div class="method-heading">
145
- <a href="#M000045" class="method-signature">
144
+ <a href="#M000043" class="method-signature">
146
145
  <span class="method-name">new</span><span class="method-args">(input=nil, options={})</span>
147
146
  </a>
148
147
  </div>
149
148
 
150
149
  <div class="method-description">
151
150
  <p><a class="source-toggle" href="#"
152
- onclick="toggleCode('M000045-source');return false;">[Source]</a></p>
153
- <div class="method-source-code" id="M000045-source">
151
+ onclick="toggleCode('M000043-source');return false;">[Source]</a></p>
152
+ <div class="method-source-code" id="M000043-source">
154
153
  <pre>
155
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 77</span>
154
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 80</span>
156
155
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">input</span>=<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">options</span>={})
157
156
  <span class="ruby-ivar">@escape</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">:escape</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'Erubis::XmlHelper.escape_xml'</span>
158
157
  <span class="ruby-ivar">@src</span> = <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">input</span>
@@ -164,51 +163,53 @@
164
163
 
165
164
  <h3 class="section-bar">Public Instance methods</h3>
166
165
 
167
- <div id="method-M000046" class="method-detail">
168
- <a name="M000046"></a>
166
+ <div id="method-M000044" class="method-detail">
167
+ <a name="M000044"></a>
169
168
 
170
169
  <div class="method-heading">
171
- <a href="#M000046" class="method-signature">
170
+ <a href="#M000044" class="method-signature">
172
171
  <span class="method-name">convert</span><span class="method-args">(input)</span>
173
172
  </a>
174
173
  </div>
175
174
 
176
175
  <div class="method-description">
177
176
  <p><a class="source-toggle" href="#"
178
- onclick="toggleCode('M000046-source');return false;">[Source]</a></p>
179
- <div class="method-source-code" id="M000046-source">
177
+ onclick="toggleCode('M000044-source');return false;">[Source]</a></p>
178
+ <div class="method-source-code" id="M000044-source">
180
179
  <pre>
181
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 86</span>
180
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 89</span>
182
181
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>)
183
- <span class="ruby-identifier">src</span> = <span class="ruby-value str">&quot;_buf = [];&quot;</span> <span class="ruby-comment cmt"># preamble</span>
182
+ <span class="ruby-identifier">src</span> = <span class="ruby-value str">&quot;_buf = '';&quot;</span> <span class="ruby-comment cmt"># preamble</span>
184
183
  <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
185
- <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-constant">EMBEDDED_PATTERN</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">lspace</span>, <span class="ruby-identifier">stmtcode</span>, <span class="ruby-identifier">rspace</span>, <span class="ruby-identifier">indicator</span>, <span class="ruby-identifier">exprcode</span><span class="ruby-operator">|</span>
184
+ <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-constant">EMBEDDED_PATTERN</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">lspace</span>, <span class="ruby-identifier">stmt</span>, <span class="ruby-identifier">rspace</span>, <span class="ruby-identifier">indicator</span>, <span class="ruby-identifier">expr</span><span class="ruby-operator">|</span>
186
185
  <span class="ruby-identifier">match</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
187
- <span class="ruby-identifier">index</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)
188
- <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">index</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">pos</span>]
186
+ <span class="ruby-identifier">len</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>) <span class="ruby-operator">-</span> <span class="ruby-identifier">pos</span>
187
+ <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">len</span>]
189
188
  <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
190
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stmtcode</span> <span class="ruby-comment cmt"># &lt;?rb ... ?&gt;</span>
191
- <span class="ruby-identifier">code</span> = <span class="ruby-identifier">stmtcode</span>
192
- <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>
189
+ <span class="ruby-comment cmt">#src &lt;&lt; &quot; _buf &lt;&lt; '&quot; &lt;&lt; escape_text(text) &lt;&lt; &quot;';&quot;</span>
190
+ <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/['\\]/</span>, <span class="ruby-value str">'\\\\\&amp;'</span>)
191
+ <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">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>
192
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stmt</span> <span class="ruby-comment cmt"># &lt;?rb ... ?&gt;</span>
193
193
  <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">rspace</span>
194
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{lspace}#{code}#{rspace}&quot;</span>
194
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{lspace}#{stmt}#{rspace}&quot;</span>
195
195
  <span class="ruby-keyword kw">else</span>
196
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; _buf &lt;&lt; '#{lspace}';&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
197
- <span class="ruby-identifier">src</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">&quot;;&quot;</span>
198
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; _buf &lt;&lt; '#{rspace}';&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
196
+ <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">lspace</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
197
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stmt</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;;&quot;</span>
198
+ <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">rspace</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
199
199
  <span class="ruby-keyword kw">end</span>
200
200
  <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># ${...}, $!{...}</span>
201
- <span class="ruby-identifier">code</span> = <span class="ruby-identifier">exprcode</span>
202
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">indicator</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">indicator</span>.<span class="ruby-identifier">empty?</span>
203
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; _buf &lt;&lt; #{@escape}(&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">&quot;);&quot;</span>
201
+ <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">indicator</span>
202
+ <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-ivar">@escape</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;(&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">expr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;);&quot;</span>
204
203
  <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">indicator</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'!'</span>
205
- <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">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;).to_s;&quot;</span>
204
+ <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">expr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;).to_s;&quot;</span>
206
205
  <span class="ruby-keyword kw">end</span>
207
206
  <span class="ruby-keyword kw">end</span>
208
207
  <span class="ruby-keyword kw">end</span>
209
208
  <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">$'</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">input</span>
210
- <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">rest</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;';&quot;</span>
211
- <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n_buf.join\n&quot;</span> <span class="ruby-comment cmt"># postamble</span>
209
+ <span class="ruby-comment cmt">#src &lt;&lt; &quot; _buf &lt;&lt; '&quot; &lt;&lt; escape_text(rest) &lt;&lt; &quot;';&quot;</span>
210
+ <span class="ruby-identifier">rest</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/['\\]/</span>, <span class="ruby-value str">'\\\\\&amp;'</span>)
211
+ <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">rest</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">rest</span>.<span class="ruby-identifier">empty?</span>
212
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n_buf.to_s\n&quot;</span> <span class="ruby-comment cmt"># postamble</span>
212
213
  <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">src</span>
213
214
  <span class="ruby-keyword kw">end</span>
214
215
  </pre>
@@ -216,74 +217,60 @@
216
217
  </div>
217
218
  </div>
218
219
 
219
- <div id="method-M000047" class="method-detail">
220
- <a name="M000047"></a>
220
+ <div id="method-M000046" class="method-detail">
221
+ <a name="M000046"></a>
221
222
 
222
223
  <div class="method-heading">
223
- <a href="#M000047" class="method-signature">
224
- <span class="method-name">escape_text</span><span class="method-args">(text)</span>
224
+ <a href="#M000046" class="method-signature">
225
+ <span class="method-name">evaluate</span><span class="method-args">(_context=Object.new)</span>
225
226
  </a>
226
227
  </div>
227
228
 
228
229
  <div class="method-description">
229
230
  <p><a class="source-toggle" href="#"
230
- onclick="toggleCode('M000047-source');return false;">[Source]</a></p>
231
- <div class="method-source-code" id="M000047-source">
231
+ onclick="toggleCode('M000046-source');return false;">[Source]</a></p>
232
+ <div class="method-source-code" id="M000046-source">
232
233
  <pre>
233
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 119</span>
234
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>)
235
- <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/['\\]/</span>, <span class="ruby-value str">'\\\\\&amp;'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">text</span>
234
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 132</span>
235
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">evaluate</span>(<span class="ruby-identifier">_context</span>=<span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>)
236
+ <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>)
237
+ <span class="ruby-identifier">_obj</span> = <span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>
238
+ <span class="ruby-identifier">_context</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</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-identifier">_obj</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-node">&quot;@#{k}&quot;</span>, <span class="ruby-identifier">v</span>) <span class="ruby-keyword kw">end</span>
239
+ <span class="ruby-identifier">_context</span> = <span class="ruby-identifier">_obj</span>
240
+ <span class="ruby-keyword kw">end</span>
241
+ <span class="ruby-identifier">_context</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-ivar">@src</span>
236
242
  <span class="ruby-keyword kw">end</span>
237
243
  </pre>
238
244
  </div>
239
245
  </div>
240
246
  </div>
241
247
 
242
- <div id="method-M000049" class="method-detail">
243
- <a name="M000049"></a>
248
+ <div id="method-M000045" class="method-detail">
249
+ <a name="M000045"></a>
244
250
 
245
251
  <div class="method-heading">
246
- <a href="#M000049" class="method-signature">
247
- <span class="method-name">evaluate</span><span class="method-args">(context=Object.new)</span>
252
+ <a href="#M000045" class="method-signature">
253
+ <span class="method-name">result</span><span class="method-args">(_binding=TOPLEVEL_BINDING)</span>
248
254
  </a>
249
255
  </div>
250
256
 
251
257
  <div class="method-description">
252
- <p><a class="source-toggle" href="#"
253
- onclick="toggleCode('M000049-source');return false;">[Source]</a></p>
254
- <div class="method-source-code" id="M000049-source">
258
+ <p>
259
+ def escape_text(text)
260
+ </p>
255
261
  <pre>
256
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 127</span>
257
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">evaluate</span>(<span class="ruby-identifier">context</span>=<span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>)
258
- <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>)
259
- <span class="ruby-identifier">obj</span> = <span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>
260
- <span class="ruby-identifier">context</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</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-identifier">obj</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-node">&quot;@#{k}&quot;</span>, <span class="ruby-identifier">v</span>) <span class="ruby-keyword kw">end</span>
261
- <span class="ruby-identifier">context</span> = <span class="ruby-identifier">obj</span>
262
- <span class="ruby-keyword kw">end</span>
263
- <span class="ruby-identifier">context</span>.<span class="ruby-identifier">instance_eval</span> <span class="ruby-ivar">@src</span>
264
- <span class="ruby-keyword kw">end</span>
262
+ return text.gsub!(/['\\]/, '\\\\\&amp;') || text
265
263
  </pre>
266
- </div>
267
- </div>
268
- </div>
269
-
270
- <div id="method-M000048" class="method-detail">
271
- <a name="M000048"></a>
272
-
273
- <div class="method-heading">
274
- <a href="#M000048" class="method-signature">
275
- <span class="method-name">result</span><span class="method-args">(binding=TOPLEVEL_BINDING)</span>
276
- </a>
277
- </div>
278
-
279
- <div class="method-description">
264
+ <p>
265
+ end
266
+ </p>
280
267
  <p><a class="source-toggle" href="#"
281
- onclick="toggleCode('M000048-source');return false;">[Source]</a></p>
282
- <div class="method-source-code" id="M000048-source">
268
+ onclick="toggleCode('M000045-source');return false;">[Source]</a></p>
269
+ <div class="method-source-code" id="M000045-source">
283
270
  <pre>
284
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 123</span>
285
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>(<span class="ruby-identifier">binding</span>=<span class="ruby-constant">TOPLEVEL_BINDING</span>)
286
- <span class="ruby-identifier">eval</span> <span class="ruby-ivar">@src</span>, <span class="ruby-identifier">binding</span>
271
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 128</span>
272
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>(<span class="ruby-identifier">_binding</span>=<span class="ruby-constant">TOPLEVEL_BINDING</span>)
273
+ <span class="ruby-identifier">eval</span> <span class="ruby-ivar">@src</span>, <span class="ruby-identifier">_binding</span>
287
274
  <span class="ruby-keyword kw">end</span>
288
275
  </pre>
289
276
  </div>