erubis 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -5,8 +5,8 @@
5
5
  ###
6
6
  ### usage: inline-require [-h] [-I path[,path2,..]] script
7
7
  ###
8
- ### copyright(c) 2006 kuwata-lab all rights reserved.
9
- ### $Release: 2.1.0 $
8
+ ### copyright(c) 2006-2007 kuwata-lab all rights reserved.
9
+ ### $Release: 2.2.0 $
10
10
  ### $Rev: 2 $
11
11
  ###
12
12
 
@@ -0,0 +1,101 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: ERB</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">ERB</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ </td>
59
+ </tr>
60
+
61
+ </table>
62
+ </div>
63
+ <!-- banner header -->
64
+
65
+ <div id="bodyContent">
66
+
67
+
68
+
69
+ <div id="contextContent">
70
+
71
+
72
+
73
+ </div>
74
+
75
+
76
+ </div>
77
+
78
+
79
+ <!-- if includes -->
80
+
81
+ <div id="section">
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <!-- if method_list -->
91
+
92
+
93
+ </div>
94
+
95
+
96
+ <div id="validator-badges">
97
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
98
+ </div>
99
+
100
+ </body>
101
+ </html>
@@ -118,14 +118,14 @@
118
118
  <a href="../files/erubis/generator_rb.html">
119
119
  erubis/generator.rb
120
120
  </a>
121
- <br />
122
- <a href="../files/erubis/helper/rails_rb.html">
123
- erubis/helper/rails.rb
124
- </a>
125
121
  <br />
126
122
  <a href="../files/erubis/helper_rb.html">
127
123
  erubis/helper.rb
128
124
  </a>
125
+ <br />
126
+ <a href="../files/erubis/helpers/rails_helper_rb.html">
127
+ erubis/helpers/rails_helper.rb
128
+ </a>
129
129
  <br />
130
130
  <a href="../files/erubis/main_rb.html">
131
131
  erubis/main.rb
@@ -134,6 +134,10 @@
134
134
  <a href="../files/erubis/tiny_rb.html">
135
135
  erubis/tiny.rb
136
136
  </a>
137
+ <br />
138
+ <a href="../files/erubis_rb.html">
139
+ erubis.rb
140
+ </a>
137
141
  <br />
138
142
  </td>
139
143
  </tr>
@@ -150,8 +154,52 @@
150
154
 
151
155
  <div id="description">
152
156
  <p>
153
- $Rev: 35 $ $Release: 2.1.0 $ copyright(c) 2006 kuwata-lab all rights reserved.
157
+ an implementation of eRuby
154
158
  </p>
159
+ <p>
160
+ ex.
161
+ </p>
162
+ <pre>
163
+ input = &lt;&lt;'END'
164
+ &lt;ul&gt;
165
+ &lt;% for item in @list %&gt;
166
+ &lt;li&gt;&lt;%= item %&gt;
167
+ &lt;%== item %&gt;&lt;/li&gt;
168
+ &lt;% end %&gt;
169
+ &lt;/ul&gt;
170
+ END
171
+ list = ['&lt;aaa&gt;', 'b&amp;b', '&quot;ccc&quot;']
172
+ eruby = Erubis::Eruby.new(input)
173
+ puts &quot;--- code ---&quot;
174
+ puts eruby.src
175
+ puts &quot;--- result ---&quot;
176
+ context = Erubis::Context.new() # or new(:list=&gt;list)
177
+ context[:list] = list
178
+ puts eruby.evaluate(context)
179
+ </pre>
180
+ <p>
181
+ result:
182
+ </p>
183
+ <pre>
184
+ --- source ---
185
+ _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
186
+ '; for item in @list
187
+ _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
188
+ '; _buf &lt;&lt; ' '; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/li&gt;
189
+ '; end
190
+ _buf &lt;&lt; '&lt;/ul&gt;
191
+ ';
192
+ _buf.to_s
193
+ --- result ---
194
+ &lt;ul&gt;
195
+ &lt;li&gt;&lt;aaa&gt;
196
+ &amp;lt;aaa&amp;gt;&lt;/li&gt;
197
+ &lt;li&gt;b&amp;b
198
+ b&amp;amp;b&lt;/li&gt;
199
+ &lt;li&gt;&quot;ccc&quot;
200
+ &amp;quot;ccc&amp;quot;&lt;/li&gt;
201
+ &lt;/ul&gt;
202
+ </pre>
155
203
 
156
204
  </div>
157
205
 
@@ -179,7 +227,7 @@ Module <a href="Erubis/EscapeEnhancer.html" class="link">Erubis::EscapeEnhancer<
179
227
  Module <a href="Erubis/Evaluator.html" class="link">Erubis::Evaluator</a><br />
180
228
  Module <a href="Erubis/Generator.html" class="link">Erubis::Generator</a><br />
181
229
  Module <a href="Erubis/HeaderFooterEnhancer.html" class="link">Erubis::HeaderFooterEnhancer</a><br />
182
- Module <a href="Erubis/Helper.html" class="link">Erubis::Helper</a><br />
230
+ Module <a href="Erubis/Helpers.html" class="link">Erubis::Helpers</a><br />
183
231
  Module <a href="Erubis/JavaGenerator.html" class="link">Erubis::JavaGenerator</a><br />
184
232
  Module <a href="Erubis/JavascriptGenerator.html" class="link">Erubis::JavascriptGenerator</a><br />
185
233
  Module <a href="Erubis/NoCodeEnhancer.html" class="link">Erubis::NoCodeEnhancer</a><br />
@@ -255,6 +303,11 @@ Class <a href="Erubis/XmlEruby.html" class="link">Erubis::XmlEruby</a><br />
255
303
  <td>=</td>
256
304
  <td class="context-item-value">EscapedEjavascript</td>
257
305
  </tr>
306
+ <tr class="top-aligned-row context-row">
307
+ <td class="context-item-name">VERSION</td>
308
+ <td>=</td>
309
+ <td class="context-item-value">('$Release: 2.2.0 $' =~ /([.\d]+)/) &amp;&amp; $1</td>
310
+ </tr>
258
311
  </table>
259
312
  </div>
260
313
  </div>
@@ -89,8 +89,8 @@ 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="#M000155">add_postamble</a>&nbsp;&nbsp;
93
- <a href="#M000154">add_preamble</a>&nbsp;&nbsp;
92
+ <a href="#M000148">add_postamble</a>&nbsp;&nbsp;
93
+ <a href="#M000147">add_preamble</a>&nbsp;&nbsp;
94
94
  </div>
95
95
  </div>
96
96
 
@@ -112,19 +112,19 @@ this is only for <a href="Eruby.html">Eruby</a>.
112
112
  <div id="methods">
113
113
  <h3 class="section-bar">Public Instance methods</h3>
114
114
 
115
- <div id="method-M000155" class="method-detail">
116
- <a name="M000155"></a>
115
+ <div id="method-M000148" class="method-detail">
116
+ <a name="M000148"></a>
117
117
 
118
118
  <div class="method-heading">
119
- <a href="#M000155" class="method-signature">
119
+ <a href="#M000148" class="method-signature">
120
120
  <span class="method-name">add_postamble</span><span class="method-args">(src)</span>
121
121
  </a>
122
122
  </div>
123
123
 
124
124
  <div class="method-description">
125
125
  <p><a class="source-toggle" href="#"
126
- onclick="toggleCode('M000155-source');return false;">[Source]</a></p>
127
- <div class="method-source-code" id="M000155-source">
126
+ onclick="toggleCode('M000148-source');return false;">[Source]</a></p>
127
+ <div class="method-source-code" id="M000148-source">
128
128
  <pre>
129
129
  <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 169</span>
130
130
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_postamble</span>(<span class="ruby-identifier">src</span>)
@@ -136,19 +136,19 @@ this is only for <a href="Eruby.html">Eruby</a>.
136
136
  </div>
137
137
  </div>
138
138
 
139
- <div id="method-M000154" class="method-detail">
140
- <a name="M000154"></a>
139
+ <div id="method-M000147" class="method-detail">
140
+ <a name="M000147"></a>
141
141
 
142
142
  <div class="method-heading">
143
- <a href="#M000154" class="method-signature">
143
+ <a href="#M000147" class="method-signature">
144
144
  <span class="method-name">add_preamble</span><span class="method-args">(src)</span>
145
145
  </a>
146
146
  </div>
147
147
 
148
148
  <div class="method-description">
149
149
  <p><a class="source-toggle" href="#"
150
- onclick="toggleCode('M000154-source');return false;">[Source]</a></p>
151
- <div class="method-source-code" id="M000154-source">
150
+ onclick="toggleCode('M000147-source');return false;">[Source]</a></p>
151
+ <div class="method-source-code" id="M000147-source">
152
152
  <pre>
153
153
  <span class="ruby-comment cmt"># File erubis/enhancer.rb, line 165</span>
154
154
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_preamble</span>(<span class="ruby-identifier">src</span>)
@@ -86,10 +86,10 @@ basic converter which supports &#8217;&lt;% &#8230; %&gt;&#8217; notation.
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000057">add_expr</a>&nbsp;&nbsp;
90
- <a href="#M000056">convert_input</a>&nbsp;&nbsp;
91
- <a href="#M000054">init_converter</a>&nbsp;&nbsp;
92
- <a href="#M000055">pattern_regexp</a>&nbsp;&nbsp;
89
+ <a href="#M000054">add_expr</a>&nbsp;&nbsp;
90
+ <a href="#M000053">convert_input</a>&nbsp;&nbsp;
91
+ <a href="#M000051">init_converter</a>&nbsp;&nbsp;
92
+ <a href="#M000052">pattern_regexp</a>&nbsp;&nbsp;
93
93
  </div>
94
94
  </div>
95
95
 
@@ -116,10 +116,12 @@ basic converter which supports &#8217;&lt;% &#8230; %&gt;&#8217; notation.
116
116
  <tr class="top-aligned-row context-row">
117
117
  <td class="context-item-name">DEFAULT_REGEXP</td>
118
118
  <td>=</td>
119
- <td class="context-item-value">/(^[ \t]*)?&lt;%(=+|\#)?(.*?)-?%&gt;([ \t]*\r?\n)?/m</td>
119
+ <td class="context-item-value">pattern_regexp('&lt;% %&gt;')</td>
120
120
  <td width="3em">&nbsp;</td>
121
121
  <td class="context-item-desc">
122
122
  DEFAULT_REGEXP = /(.*?)(^[ \t]*)?&lt;%(=+|\#)?(.*?)-?%&gt;([ \t]*\r?\n)?/m
123
+ DEFAULT_REGEXP = /(^[ \t]*)?&lt;%(=+|\#)?(.*?)-?%&gt;([ \t]*\r?\n)?/m
124
+ DEFAULT_REGEXP = /&lt;%(=+|\#)?(.*?)-?%&gt;([ \t]*\r?\n)?/m
123
125
 
124
126
  </td>
125
127
  </tr>
@@ -154,11 +156,11 @@ DEFAULT_REGEXP = /(.*?)(^[ \t]*)?&lt;%(=+|\#)?(.*?)-?%&gt;([ \t]*\r?\n)?/m
154
156
  <div id="methods">
155
157
  <h3 class="section-bar">Public Instance methods</h3>
156
158
 
157
- <div id="method-M000057" class="method-detail">
158
- <a name="M000057"></a>
159
+ <div id="method-M000054" class="method-detail">
160
+ <a name="M000054"></a>
159
161
 
160
162
  <div class="method-heading">
161
- <a href="#M000057" class="method-signature">
163
+ <a href="#M000054" class="method-signature">
162
164
  <span class="method-name">add_expr</span><span class="method-args">(src, code, indicator)</span>
163
165
  </a>
164
166
  </div>
@@ -168,10 +170,10 @@ DEFAULT_REGEXP = /(.*?)(^[ \t]*)?&lt;%(=+|\#)?(.*?)-?%&gt;([ \t]*\r?\n)?/m
168
170
  add expression code to src
169
171
  </p>
170
172
  <p><a class="source-toggle" href="#"
171
- onclick="toggleCode('M000057-source');return false;">[Source]</a></p>
172
- <div class="method-source-code" id="M000057-source">
173
+ onclick="toggleCode('M000054-source');return false;">[Source]</a></p>
174
+ <div class="method-source-code" id="M000054-source">
173
175
  <pre>
174
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 133</span>
176
+ <span class="ruby-comment cmt"># File erubis/converter.rb, line 171</span>
175
177
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">indicator</span>)
176
178
  <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">indicator</span>
177
179
  <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'='</span>
@@ -187,53 +189,58 @@ add expression code to src
187
189
  </div>
188
190
  </div>
189
191
 
190
- <div id="method-M000056" class="method-detail">
191
- <a name="M000056"></a>
192
+ <div id="method-M000053" class="method-detail">
193
+ <a name="M000053"></a>
192
194
 
193
195
  <div class="method-heading">
194
- <a href="#M000056" class="method-signature">
196
+ <a href="#M000053" class="method-signature">
195
197
  <span class="method-name">convert_input</span><span class="method-args">(src, input)</span>
196
198
  </a>
197
199
  </div>
198
200
 
199
201
  <div class="method-description">
200
202
  <p><a class="source-toggle" href="#"
201
- onclick="toggleCode('M000056-source');return false;">[Source]</a></p>
202
- <div class="method-source-code" id="M000056-source">
203
+ onclick="toggleCode('M000053-source');return false;">[Source]</a></p>
204
+ <div class="method-source-code" id="M000053-source">
203
205
  <pre>
204
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 94</span>
206
+ <span class="ruby-comment cmt"># File erubis/converter.rb, line 127</span>
205
207
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert_input</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">input</span>)
206
- <span class="ruby-identifier">regexp</span> = <span class="ruby-identifier">pattern_regexp</span>(<span class="ruby-ivar">@pattern</span>)
208
+ <span class="ruby-identifier">pat</span> = <span class="ruby-ivar">@pattern</span>
209
+ <span class="ruby-identifier">regexp</span> = <span class="ruby-identifier">pat</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">pat</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;% %&gt;'</span> <span class="ruby-operator">?</span> <span class="ruby-constant">DEFAULT_REGEXP</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">pattern_regexp</span>(<span class="ruby-identifier">pat</span>)
207
210
  <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
208
- <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">regexp</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">lspace</span>, <span class="ruby-identifier">indicator</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">rspace</span><span class="ruby-operator">|</span>
211
+ <span class="ruby-identifier">is_bol</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-comment cmt"># is beginning of line</span>
212
+ <span class="ruby-identifier">input</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">regexp</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">indicator</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">rspace</span><span class="ruby-operator">|</span>
209
213
  <span class="ruby-identifier">match</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>()
210
- <span class="ruby-identifier">index</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)
211
- <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>]
212
- <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
213
- <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">text</span>)
214
+ <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>
215
+ <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">len</span>]
216
+ <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
217
+ <span class="ruby-identifier">ch</span> = <span class="ruby-identifier">indicator</span> <span class="ruby-value">? </span><span class="ruby-identifier">indicator</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
218
+ <span class="ruby-identifier">lspace</span> = <span class="ruby-identifier">ch</span> <span class="ruby-operator">==</span> <span class="ruby-value">?=</span> <span class="ruby-operator">?</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">detect_spaces_at_bol</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">is_bol</span>)
219
+ <span class="ruby-identifier">is_bol</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>
220
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">text</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
214
221
  <span class="ruby-comment cmt">## * when '&lt;%= %&gt;', do nothing</span>
215
222
  <span class="ruby-comment cmt">## * when '&lt;% %&gt;' or '&lt;%# %&gt;', delete spaces iff only spaces are around '&lt;% %&gt;'</span>
216
- <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">indicator</span> <span class="ruby-comment cmt"># &lt;% %&gt;</span>
223
+ <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ch</span> <span class="ruby-operator">==</span> <span class="ruby-value">?=</span> <span class="ruby-comment cmt"># &lt;%= %&gt;</span>
224
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
225
+ <span class="ruby-identifier">add_expr</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">indicator</span>)
226
+ <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
227
+ <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">ch</span> <span class="ruby-operator">==</span> <span class="ruby-value">?\#</span> <span class="ruby-comment cmt"># &lt;%# %&gt;</span>
228
+ <span class="ruby-identifier">n</span> = <span class="ruby-identifier">code</span>.<span class="ruby-identifier">count</span>(<span class="ruby-value str">&quot;\n&quot;</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">rspace</span> <span class="ruby-value">? </span><span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>)
217
229
  <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>
218
- <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-node">&quot;#{lspace}#{code}#{rspace}&quot;</span>)
230
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">n</span>)
219
231
  <span class="ruby-keyword kw">else</span>
220
232
  <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
221
- <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
233
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">n</span>)
222
234
  <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
223
235
  <span class="ruby-keyword kw">end</span>
224
- <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">indicator</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\#</span> <span class="ruby-comment cmt"># &lt;%# %&gt;</span>
225
- <span class="ruby-identifier">n</span> = <span class="ruby-identifier">code</span>.<span class="ruby-identifier">count</span>(<span class="ruby-value str">&quot;\n&quot;</span>) <span class="ruby-operator">+</span> (<span class="ruby-identifier">rspace</span> <span class="ruby-value">? </span><span class="ruby-value">1</span> <span class="ruby-operator">:</span> <span class="ruby-value">0</span>)
236
+ <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># &lt;% %&gt;</span>
226
237
  <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>
227
- <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">n</span>)
238
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-node">&quot;#{lspace}#{code}#{rspace}&quot;</span>)
228
239
  <span class="ruby-keyword kw">else</span>
229
240
  <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
230
- <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">*</span> <span class="ruby-identifier">n</span>)
241
+ <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
231
242
  <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
232
243
  <span class="ruby-keyword kw">end</span>
233
- <span class="ruby-keyword kw">else</span> <span class="ruby-comment cmt"># &lt;%= %&gt;</span>
234
- <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">lspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">lspace</span>
235
- <span class="ruby-identifier">add_expr</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>, <span class="ruby-identifier">indicator</span>)
236
- <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">rspace</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rspace</span>
237
244
  <span class="ruby-keyword kw">end</span>
238
245
  <span class="ruby-keyword kw">end</span>
239
246
  <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">$'</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">input</span> <span class="ruby-comment cmt"># add input when no matched</span>
@@ -244,25 +251,25 @@ add expression code to src
244
251
  </div>
245
252
  </div>
246
253
 
247
- <div id="method-M000054" class="method-detail">
248
- <a name="M000054"></a>
254
+ <div id="method-M000051" class="method-detail">
255
+ <a name="M000051"></a>
249
256
 
250
257
  <div class="method-heading">
251
- <a href="#M000054" class="method-signature">
258
+ <a href="#M000051" class="method-signature">
252
259
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
253
260
  </a>
254
261
  </div>
255
262
 
256
263
  <div class="method-description">
257
264
  <p><a class="source-toggle" href="#"
258
- onclick="toggleCode('M000054-source');return false;">[Source]</a></p>
259
- <div class="method-source-code" id="M000054-source">
265
+ onclick="toggleCode('M000051-source');return false;">[Source]</a></p>
266
+ <div class="method-source-code" id="M000051-source">
260
267
  <pre>
261
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 73</span>
268
+ <span class="ruby-comment cmt"># File erubis/converter.rb, line 103</span>
262
269
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
263
270
  <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">properties</span>)
264
- <span class="ruby-ivar">@pattern</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:pattern</span>]
265
- <span class="ruby-ivar">@trim</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:trim</span>] <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">false</span>
271
+ <span class="ruby-ivar">@pattern</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:pattern</span>]
272
+ <span class="ruby-ivar">@trim</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:trim</span>] <span class="ruby-operator">!=</span> <span class="ruby-keyword kw">false</span>
266
273
  <span class="ruby-keyword kw">end</span>
267
274
  </pre>
268
275
  </div>
@@ -271,12 +278,12 @@ add expression code to src
271
278
 
272
279
  <h3 class="section-bar">Protected Instance methods</h3>
273
280
 
274
- <div id="method-M000055" class="method-detail">
275
- <a name="M000055"></a>
281
+ <div id="method-M000052" class="method-detail">
282
+ <a name="M000052"></a>
276
283
 
277
284
  <div class="method-heading">
278
- <a href="#M000055" class="method-signature">
279
- <span class="method-name">pattern_regexp</span><span class="method-args">(pattern=@pattern)</span>
285
+ <a href="#M000052" class="method-signature">
286
+ <span class="method-name">pattern_regexp</span><span class="method-args">(pattern)</span>
280
287
  </a>
281
288
  </div>
282
289
 
@@ -285,18 +292,15 @@ add expression code to src
285
292
  return regexp of pattern to parse eRuby script
286
293
  </p>
287
294
  <p><a class="source-toggle" href="#"
288
- onclick="toggleCode('M000055-source');return false;">[Source]</a></p>
289
- <div class="method-source-code" id="M000055-source">
295
+ onclick="toggleCode('M000052-source');return false;">[Source]</a></p>
296
+ <div class="method-source-code" id="M000052-source">
290
297
  <pre>
291
- <span class="ruby-comment cmt"># File erubis/converter.rb, line 83</span>
292
- <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pattern_regexp</span>(<span class="ruby-identifier">pattern</span>=<span class="ruby-ivar">@pattern</span>)
293
- <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">pattern</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;% %&gt;'</span>
294
- <span class="ruby-keyword kw">return</span> <span class="ruby-constant">DEFAULT_REGEXP</span>
295
- <span class="ruby-keyword kw">else</span>
296
- <span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">postfix</span> = <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">split</span>()
297
- <span class="ruby-comment cmt">#return /(.*?)(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/m</span>
298
- <span class="ruby-keyword kw">return</span> <span class="ruby-node">/(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/</span><span class="ruby-identifier">m</span>
299
- <span class="ruby-keyword kw">end</span>
298
+ <span class="ruby-comment cmt"># File erubis/converter.rb, line 112</span>
299
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pattern_regexp</span>(<span class="ruby-identifier">pattern</span>)
300
+ <span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">postfix</span> = <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">split</span>() <span class="ruby-comment cmt"># '&lt;% %&gt;' =&gt; '&lt;%', '%&gt;'</span>
301
+ <span class="ruby-comment cmt">#return /(.*?)(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/m</span>
302
+ <span class="ruby-comment cmt">#return /(^[ \t]*)?#{prefix}(=+|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/m</span>
303
+ <span class="ruby-keyword kw">return</span> <span class="ruby-node">/#{prefix}(=+|-|\#)?(.*?)-?#{postfix}([ \t]*\r?\n)?/</span><span class="ruby-identifier">m</span>
300
304
  <span class="ruby-keyword kw">end</span>
301
305
  </pre>
302
306
  </div>