erubis 2.6.6 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. data/CHANGES.txt +79 -3
  2. data/MIT-LICENSE +1 -1
  3. data/README.txt +2 -2
  4. data/benchmark/bench.rb +2 -2
  5. data/bin/erubis +2 -2
  6. data/contrib/erubis +293 -155
  7. data/contrib/inline-require +2 -2
  8. data/doc-api/classes/Erubis.html +10 -1
  9. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +12 -12
  10. data/doc-api/classes/Erubis/ArrayEnhancer.html +14 -14
  11. data/doc-api/classes/Erubis/Basic/Converter.html +24 -24
  12. data/doc-api/classes/Erubis/BiPatternEnhancer.html +12 -12
  13. data/doc-api/classes/Erubis/CGenerator.html +60 -60
  14. data/doc-api/classes/Erubis/Context.html +42 -42
  15. data/doc-api/classes/Erubis/Converter.html +27 -27
  16. data/doc-api/classes/Erubis/CppGenerator.html +382 -0
  17. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
  18. data/doc-api/classes/Erubis/Ecpp.html +126 -0
  19. data/doc-api/classes/Erubis/Engine.html +36 -36
  20. data/doc-api/classes/Erubis/ErboutEnhancer.html +14 -14
  21. data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
  22. data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
  23. data/doc-api/classes/Erubis/Evaluator.html +19 -19
  24. data/doc-api/classes/Erubis/Generator.html +60 -60
  25. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
  26. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +150 -150
  27. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +49 -49
  28. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +24 -24
  29. data/doc-api/classes/Erubis/InterpolationEnhancer.html +38 -39
  30. data/doc-api/classes/Erubis/JavaGenerator.html +60 -60
  31. data/doc-api/classes/Erubis/JavascriptGenerator.html +66 -66
  32. data/doc-api/classes/Erubis/Main.html +22 -22
  33. data/doc-api/classes/Erubis/NoCodeEnhancer.html +30 -30
  34. data/doc-api/classes/Erubis/NoTextEnhancer.html +6 -6
  35. data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
  36. data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
  37. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
  38. data/doc-api/classes/Erubis/PI.html +1 -0
  39. data/doc-api/classes/Erubis/PI/Converter.html +18 -18
  40. data/doc-api/classes/Erubis/PI/Ec.html +6 -6
  41. data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
  42. data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
  43. data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
  44. data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
  45. data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
  46. data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
  47. data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
  48. data/doc-api/classes/Erubis/PI/TinyEruby.html +24 -24
  49. data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -34
  50. data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
  51. data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
  52. data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
  53. data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
  54. data/doc-api/classes/Erubis/PreprocessingEruby.html +12 -12
  55. data/doc-api/classes/Erubis/PreprocessingHelper.html +22 -22
  56. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +20 -20
  57. data/doc-api/classes/Erubis/PrintOutEnhancer.html +33 -33
  58. data/doc-api/classes/Erubis/RubyEvaluator.html +18 -18
  59. data/doc-api/classes/Erubis/RubyGenerator.html +59 -58
  60. data/doc-api/classes/Erubis/SchemeGenerator.html +60 -60
  61. data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -7
  62. data/doc-api/classes/Erubis/StdoutEnhancer.html +13 -13
  63. data/doc-api/classes/Erubis/StringBufferEnhancer.html +14 -14
  64. data/doc-api/classes/Erubis/TinyEruby.html +24 -24
  65. data/doc-api/classes/Erubis/XmlHelper.html +30 -30
  66. data/doc-api/classes/Kernel.html +155 -0
  67. data/doc-api/created.rid +1 -1
  68. data/doc-api/files/README_txt.html +3 -3
  69. data/doc-api/files/erubis/context_rb.html +1 -1
  70. data/doc-api/files/erubis/converter_rb.html +3 -3
  71. data/doc-api/files/erubis/engine/ec_rb.html +1 -1
  72. data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
  73. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  74. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  75. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  76. data/doc-api/files/erubis/engine/eperl_rb.html +1 -1
  77. data/doc-api/files/erubis/engine/ephp_rb.html +1 -1
  78. data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/escheme_rb.html +1 -1
  80. data/doc-api/files/erubis/engine/optimized_rb.html +1 -1
  81. data/doc-api/files/erubis/engine_rb.html +2 -2
  82. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  83. data/doc-api/files/erubis/error_rb.html +1 -1
  84. data/doc-api/files/erubis/evaluator_rb.html +1 -1
  85. data/doc-api/files/erubis/generator_rb.html +3 -3
  86. data/doc-api/files/erubis/helper_rb.html +1 -1
  87. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +1 -1
  88. data/doc-api/files/erubis/helpers/rails_helper_rb.html +1 -1
  89. data/doc-api/files/erubis/local-setting_rb.html +1 -1
  90. data/doc-api/files/erubis/main_rb.html +4 -2
  91. data/doc-api/files/erubis/preprocessing_rb.html +1 -1
  92. data/doc-api/files/erubis/tiny_rb.html +1 -1
  93. data/doc-api/files/erubis/util_rb.html +107 -0
  94. data/doc-api/files/erubis_rb.html +2 -2
  95. data/doc-api/fr_class_index.html +7 -0
  96. data/doc-api/fr_file_index.html +2 -0
  97. data/doc-api/fr_method_index.html +237 -223
  98. data/doc/docstyle.css +25 -4
  99. data/doc/users-guide.html +286 -21
  100. data/examples/basic/Makefile +7 -2
  101. data/examples/basic/example.ecpp +33 -0
  102. data/lib/erubis.rb +4 -3
  103. data/lib/erubis/context.rb +2 -2
  104. data/lib/erubis/converter.rb +3 -3
  105. data/lib/erubis/engine.rb +8 -8
  106. data/lib/erubis/engine/ec.rb +2 -2
  107. data/lib/erubis/engine/ecpp.rb +113 -0
  108. data/lib/erubis/engine/ejava.rb +9 -9
  109. data/lib/erubis/engine/ejavascript.rb +9 -9
  110. data/lib/erubis/engine/enhanced.rb +7 -2
  111. data/lib/erubis/engine/eperl.rb +2 -2
  112. data/lib/erubis/engine/ephp.rb +2 -2
  113. data/lib/erubis/engine/eruby.rb +8 -7
  114. data/lib/erubis/engine/escheme.rb +2 -2
  115. data/lib/erubis/engine/optimized.rb +2 -2
  116. data/lib/erubis/enhancer.rb +70 -27
  117. data/lib/erubis/error.rb +2 -2
  118. data/lib/erubis/evaluator.rb +2 -2
  119. data/lib/erubis/generator.rb +3 -3
  120. data/lib/erubis/helper.rb +2 -2
  121. data/lib/erubis/helpers/rails_form_helper.rb +2 -2
  122. data/lib/erubis/helpers/rails_helper.rb +2 -2
  123. data/lib/erubis/local-setting.rb +2 -2
  124. data/lib/erubis/main.rb +31 -4
  125. data/lib/erubis/preprocessing.rb +2 -2
  126. data/lib/erubis/tiny.rb +2 -2
  127. data/lib/erubis/util.rb +22 -0
  128. data/test/assert-text-equal.rb +2 -2
  129. data/test/data/users-guide/bufvar-example.rb +10 -0
  130. data/test/data/users-guide/bufvar-example.result +17 -0
  131. data/test/data/users-guide/example.ecpp +30 -0
  132. data/test/data/users-guide/example_c.result +22 -19
  133. data/test/data/users-guide/fasteruby-example.rb +8 -0
  134. data/test/data/users-guide/fasteruby-example.result +18 -0
  135. data/test/data/users-guide/percentline-example.rhtml +3 -1
  136. data/test/data/users-guide/percentline_example.result +5 -3
  137. data/test/data/users-guide/prefixedline-example.rb +9 -0
  138. data/test/data/users-guide/prefixedline-example.rhtml +6 -0
  139. data/test/data/users-guide/prefixedline_example.result +9 -0
  140. data/test/test-engines.rb +58 -2
  141. data/test/test-enhancers.rb +51 -2
  142. data/test/test-erubis.rb +14 -10
  143. data/test/test-index-cgi.rb +191 -0
  144. data/test/test-main.rb +35 -4
  145. data/test/test-users-guide.rb +18 -2
  146. data/test/test.rb +18 -2
  147. data/test/testutil.rb +22 -7
  148. metadata +30 -24
@@ -112,13 +112,13 @@ ex.
112
112
  <h3 class="section-bar">Methods</h3>
113
113
 
114
114
  <div class="name-list">
115
- <a href="#M000219">[]</a>&nbsp;&nbsp;
116
- <a href="#M000220">[]=</a>&nbsp;&nbsp;
117
- <a href="#M000222">each</a>&nbsp;&nbsp;
118
- <a href="#M000221">keys</a>&nbsp;&nbsp;
119
- <a href="#M000218">new</a>&nbsp;&nbsp;
120
- <a href="#M000223">to_hash</a>&nbsp;&nbsp;
121
- <a href="#M000224">update</a>&nbsp;&nbsp;
115
+ <a href="#M000232">[]</a>&nbsp;&nbsp;
116
+ <a href="#M000233">[]=</a>&nbsp;&nbsp;
117
+ <a href="#M000235">each</a>&nbsp;&nbsp;
118
+ <a href="#M000234">keys</a>&nbsp;&nbsp;
119
+ <a href="#M000231">new</a>&nbsp;&nbsp;
120
+ <a href="#M000236">to_hash</a>&nbsp;&nbsp;
121
+ <a href="#M000237">update</a>&nbsp;&nbsp;
122
122
  </div>
123
123
  </div>
124
124
 
@@ -147,19 +147,19 @@ ex.
147
147
  <div id="methods">
148
148
  <h3 class="section-bar">Public Class methods</h3>
149
149
 
150
- <div id="method-M000218" class="method-detail">
151
- <a name="M000218"></a>
150
+ <div id="method-M000231" class="method-detail">
151
+ <a name="M000231"></a>
152
152
 
153
153
  <div class="method-heading">
154
- <a href="#M000218" class="method-signature">
154
+ <a href="#M000231" class="method-signature">
155
155
  <span class="method-name">new</span><span class="method-args">(hash=nil)</span>
156
156
  </a>
157
157
  </div>
158
158
 
159
159
  <div class="method-description">
160
160
  <p><a class="source-toggle" href="#"
161
- onclick="toggleCode('M000218-source');return false;">[Source]</a></p>
162
- <div class="method-source-code" id="M000218-source">
161
+ onclick="toggleCode('M000231-source');return false;">[Source]</a></p>
162
+ <div class="method-source-code" id="M000231-source">
163
163
  <pre>
164
164
  <span class="ruby-comment cmt"># File erubis/context.rb, line 33</span>
165
165
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">hash</span>=<span class="ruby-keyword kw">nil</span>)
@@ -174,19 +174,19 @@ ex.
174
174
 
175
175
  <h3 class="section-bar">Public Instance methods</h3>
176
176
 
177
- <div id="method-M000219" class="method-detail">
178
- <a name="M000219"></a>
177
+ <div id="method-M000232" class="method-detail">
178
+ <a name="M000232"></a>
179
179
 
180
180
  <div class="method-heading">
181
- <a href="#M000219" class="method-signature">
181
+ <a href="#M000232" class="method-signature">
182
182
  <span class="method-name">[]</span><span class="method-args">(key)</span>
183
183
  </a>
184
184
  </div>
185
185
 
186
186
  <div class="method-description">
187
187
  <p><a class="source-toggle" href="#"
188
- onclick="toggleCode('M000219-source');return false;">[Source]</a></p>
189
- <div class="method-source-code" id="M000219-source">
188
+ onclick="toggleCode('M000232-source');return false;">[Source]</a></p>
189
+ <div class="method-source-code" id="M000232-source">
190
190
  <pre>
191
191
  <span class="ruby-comment cmt"># File erubis/context.rb, line 39</span>
192
192
  <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">key</span>)
@@ -197,19 +197,19 @@ ex.
197
197
  </div>
198
198
  </div>
199
199
 
200
- <div id="method-M000220" class="method-detail">
201
- <a name="M000220"></a>
200
+ <div id="method-M000233" class="method-detail">
201
+ <a name="M000233"></a>
202
202
 
203
203
  <div class="method-heading">
204
- <a href="#M000220" class="method-signature">
204
+ <a href="#M000233" class="method-signature">
205
205
  <span class="method-name">[]=</span><span class="method-args">(key, value)</span>
206
206
  </a>
207
207
  </div>
208
208
 
209
209
  <div class="method-description">
210
210
  <p><a class="source-toggle" href="#"
211
- onclick="toggleCode('M000220-source');return false;">[Source]</a></p>
212
- <div class="method-source-code" id="M000220-source">
211
+ onclick="toggleCode('M000233-source');return false;">[Source]</a></p>
212
+ <div class="method-source-code" id="M000233-source">
213
213
  <pre>
214
214
  <span class="ruby-comment cmt"># File erubis/context.rb, line 43</span>
215
215
  <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]=</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">value</span>)
@@ -220,19 +220,19 @@ ex.
220
220
  </div>
221
221
  </div>
222
222
 
223
- <div id="method-M000222" class="method-detail">
224
- <a name="M000222"></a>
223
+ <div id="method-M000235" class="method-detail">
224
+ <a name="M000235"></a>
225
225
 
226
226
  <div class="method-heading">
227
- <a href="#M000222" class="method-signature">
227
+ <a href="#M000235" class="method-signature">
228
228
  <span class="method-name">each</span><span class="method-args">() {|key, value| ...}</span>
229
229
  </a>
230
230
  </div>
231
231
 
232
232
  <div class="method-description">
233
233
  <p><a class="source-toggle" href="#"
234
- onclick="toggleCode('M000222-source');return false;">[Source]</a></p>
235
- <div class="method-source-code" id="M000222-source">
234
+ onclick="toggleCode('M000235-source');return false;">[Source]</a></p>
235
+ <div class="method-source-code" id="M000235-source">
236
236
  <pre>
237
237
  <span class="ruby-comment cmt"># File erubis/context.rb, line 51</span>
238
238
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
@@ -247,19 +247,19 @@ ex.
247
247
  </div>
248
248
  </div>
249
249
 
250
- <div id="method-M000221" class="method-detail">
251
- <a name="M000221"></a>
250
+ <div id="method-M000234" class="method-detail">
251
+ <a name="M000234"></a>
252
252
 
253
253
  <div class="method-heading">
254
- <a href="#M000221" class="method-signature">
254
+ <a href="#M000234" class="method-signature">
255
255
  <span class="method-name">keys</span><span class="method-args">()</span>
256
256
  </a>
257
257
  </div>
258
258
 
259
259
  <div class="method-description">
260
260
  <p><a class="source-toggle" href="#"
261
- onclick="toggleCode('M000221-source');return false;">[Source]</a></p>
262
- <div class="method-source-code" id="M000221-source">
261
+ onclick="toggleCode('M000234-source');return false;">[Source]</a></p>
262
+ <div class="method-source-code" id="M000234-source">
263
263
  <pre>
264
264
  <span class="ruby-comment cmt"># File erubis/context.rb, line 47</span>
265
265
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">keys</span>
@@ -270,19 +270,19 @@ ex.
270
270
  </div>
271
271
  </div>
272
272
 
273
- <div id="method-M000223" class="method-detail">
274
- <a name="M000223"></a>
273
+ <div id="method-M000236" class="method-detail">
274
+ <a name="M000236"></a>
275
275
 
276
276
  <div class="method-heading">
277
- <a href="#M000223" class="method-signature">
277
+ <a href="#M000236" class="method-signature">
278
278
  <span class="method-name">to_hash</span><span class="method-args">()</span>
279
279
  </a>
280
280
  </div>
281
281
 
282
282
  <div class="method-description">
283
283
  <p><a class="source-toggle" href="#"
284
- onclick="toggleCode('M000223-source');return false;">[Source]</a></p>
285
- <div class="method-source-code" id="M000223-source">
284
+ onclick="toggleCode('M000236-source');return false;">[Source]</a></p>
285
+ <div class="method-source-code" id="M000236-source">
286
286
  <pre>
287
287
  <span class="ruby-comment cmt"># File erubis/context.rb, line 59</span>
288
288
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_hash</span>
@@ -295,19 +295,19 @@ ex.
295
295
  </div>
296
296
  </div>
297
297
 
298
- <div id="method-M000224" class="method-detail">
299
- <a name="M000224"></a>
298
+ <div id="method-M000237" class="method-detail">
299
+ <a name="M000237"></a>
300
300
 
301
301
  <div class="method-heading">
302
- <a href="#M000224" class="method-signature">
302
+ <a href="#M000237" class="method-signature">
303
303
  <span class="method-name">update</span><span class="method-args">(context_or_hash)</span>
304
304
  </a>
305
305
  </div>
306
306
 
307
307
  <div class="method-description">
308
308
  <p><a class="source-toggle" href="#"
309
- onclick="toggleCode('M000224-source');return false;">[Source]</a></p>
310
- <div class="method-source-code" id="M000224-source">
309
+ onclick="toggleCode('M000237-source');return false;">[Source]</a></p>
310
+ <div class="method-source-code" id="M000237-source">
311
311
  <pre>
312
312
  <span class="ruby-comment cmt"># File erubis/context.rb, line 65</span>
313
313
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">update</span>(<span class="ruby-identifier">context_or_hash</span>)
@@ -74,7 +74,7 @@
74
74
 
75
75
  <div id="description">
76
76
  <p>
77
- <a href="Converter.html#M000063">convert</a>
77
+ <a href="Converter.html#M000066">convert</a>
78
78
  </p>
79
79
 
80
80
  </div>
@@ -86,10 +86,10 @@
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000063">convert</a>&nbsp;&nbsp;
90
- <a href="#M000065">convert_input</a>&nbsp;&nbsp;
91
- <a href="#M000064">detect_spaces_at_bol</a>&nbsp;&nbsp;
92
- <a href="#M000062">init_converter</a>&nbsp;&nbsp;
89
+ <a href="#M000066">convert</a>&nbsp;&nbsp;
90
+ <a href="#M000068">convert_input</a>&nbsp;&nbsp;
91
+ <a href="#M000067">detect_spaces_at_bol</a>&nbsp;&nbsp;
92
+ <a href="#M000065">init_converter</a>&nbsp;&nbsp;
93
93
  </div>
94
94
  </div>
95
95
 
@@ -134,23 +134,23 @@
134
134
  <div id="methods">
135
135
  <h3 class="section-bar">Public Instance methods</h3>
136
136
 
137
- <div id="method-M000063" class="method-detail">
138
- <a name="M000063"></a>
137
+ <div id="method-M000066" class="method-detail">
138
+ <a name="M000066"></a>
139
139
 
140
140
  <div class="method-heading">
141
- <a href="#M000063" class="method-signature">
141
+ <a href="#M000066" class="method-signature">
142
142
  <span class="method-name">convert</span><span class="method-args">(input)</span>
143
143
  </a>
144
144
  </div>
145
145
 
146
146
  <div class="method-description">
147
147
  <p>
148
- <a href="Converter.html#M000063">convert</a> input string into target
148
+ <a href="Converter.html#M000066">convert</a> input string into target
149
149
  language
150
150
  </p>
151
151
  <p><a class="source-toggle" href="#"
152
- onclick="toggleCode('M000063-source');return false;">[Source]</a></p>
153
- <div class="method-source-code" id="M000063-source">
152
+ onclick="toggleCode('M000066-source');return false;">[Source]</a></p>
153
+ <div class="method-source-code" id="M000066-source">
154
154
  <pre>
155
155
  <span class="ruby-comment cmt"># File erubis/converter.rb, line 33</span>
156
156
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>)
@@ -166,19 +166,19 @@ language
166
166
  </div>
167
167
  </div>
168
168
 
169
- <div id="method-M000062" class="method-detail">
170
- <a name="M000062"></a>
169
+ <div id="method-M000065" class="method-detail">
170
+ <a name="M000065"></a>
171
171
 
172
172
  <div class="method-heading">
173
- <a href="#M000062" class="method-signature">
173
+ <a href="#M000065" class="method-signature">
174
174
  <span class="method-name">init_converter</span><span class="method-args">(properties={})</span>
175
175
  </a>
176
176
  </div>
177
177
 
178
178
  <div class="method-description">
179
179
  <p><a class="source-toggle" href="#"
180
- onclick="toggleCode('M000062-source');return false;">[Source]</a></p>
181
- <div class="method-source-code" id="M000062-source">
180
+ onclick="toggleCode('M000065-source');return false;">[Source]</a></p>
181
+ <div class="method-source-code" id="M000065-source">
182
182
  <pre>
183
183
  <span class="ruby-comment cmt"># File erubis/converter.rb, line 26</span>
184
184
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_converter</span>(<span class="ruby-identifier">properties</span>={})
@@ -193,22 +193,22 @@ language
193
193
 
194
194
  <h3 class="section-bar">Protected Instance methods</h3>
195
195
 
196
- <div id="method-M000065" class="method-detail">
197
- <a name="M000065"></a>
196
+ <div id="method-M000068" class="method-detail">
197
+ <a name="M000068"></a>
198
198
 
199
199
  <div class="method-heading">
200
- <a href="#M000065" class="method-signature">
200
+ <a href="#M000068" class="method-signature">
201
201
  <span class="method-name">convert_input</span><span class="method-args">(codebuf, input)</span>
202
202
  </a>
203
203
  </div>
204
204
 
205
205
  <div class="method-description">
206
206
  <p>
207
- (abstract) <a href="Converter.html#M000063">convert</a> input to code
207
+ (abstract) <a href="Converter.html#M000066">convert</a> input to code
208
208
  </p>
209
209
  <p><a class="source-toggle" href="#"
210
- onclick="toggleCode('M000065-source');return false;">[Source]</a></p>
211
- <div class="method-source-code" id="M000065-source">
210
+ onclick="toggleCode('M000068-source');return false;">[Source]</a></p>
211
+ <div class="method-source-code" id="M000068-source">
212
212
  <pre>
213
213
  <span class="ruby-comment cmt"># File erubis/converter.rb, line 77</span>
214
214
  <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>)
@@ -219,11 +219,11 @@ language
219
219
  </div>
220
220
  </div>
221
221
 
222
- <div id="method-M000064" class="method-detail">
223
- <a name="M000064"></a>
222
+ <div id="method-M000067" class="method-detail">
223
+ <a name="M000067"></a>
224
224
 
225
225
  <div class="method-heading">
226
- <a href="#M000064" class="method-signature">
226
+ <a href="#M000067" class="method-signature">
227
227
  <span class="method-name">detect_spaces_at_bol</span><span class="method-args">(text, is_bol)</span>
228
228
  </a>
229
229
  </div>
@@ -233,8 +233,8 @@ language
233
233
  detect spaces at beginning of line
234
234
  </p>
235
235
  <p><a class="source-toggle" href="#"
236
- onclick="toggleCode('M000064-source');return false;">[Source]</a></p>
237
- <div class="method-source-code" id="M000064-source">
236
+ onclick="toggleCode('M000067-source');return false;">[Source]</a></p>
237
+ <div class="method-source-code" id="M000067-source">
238
238
  <pre>
239
239
  <span class="ruby-comment cmt"># File erubis/converter.rb, line 47</span>
240
240
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">detect_spaces_at_bol</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">is_bol</span>)
@@ -0,0 +1,382 @@
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: Erubis::CppGenerator</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">Erubis::CppGenerator</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../../files/erubis/engine/ecpp_rb.html">
59
+ erubis/engine/ecpp.rb
60
+ </a>
61
+ <br />
62
+ </td>
63
+ </tr>
64
+
65
+ </table>
66
+ </div>
67
+ <!-- banner header -->
68
+
69
+ <div id="bodyContent">
70
+
71
+
72
+
73
+ <div id="contextContent">
74
+
75
+
76
+
77
+ </div>
78
+
79
+ <div id="method-list">
80
+ <h3 class="section-bar">Methods</h3>
81
+
82
+ <div class="name-list">
83
+ <a href="#M000194">add_expr_debug</a>&nbsp;&nbsp;
84
+ <a href="#M000193">add_expr_escaped</a>&nbsp;&nbsp;
85
+ <a href="#M000192">add_expr_literal</a>&nbsp;&nbsp;
86
+ <a href="#M000195">add_postamble</a>&nbsp;&nbsp;
87
+ <a href="#M000187">add_preamble</a>&nbsp;&nbsp;
88
+ <a href="#M000191">add_stmt</a>&nbsp;&nbsp;
89
+ <a href="#M000190">add_text</a>&nbsp;&nbsp;
90
+ <a href="#M000188">escape_text</a>&nbsp;&nbsp;
91
+ <a href="#M000189">escaped_expr</a>&nbsp;&nbsp;
92
+ <a href="#M000186">init_generator</a>&nbsp;&nbsp;
93
+ </div>
94
+ </div>
95
+
96
+ </div>
97
+
98
+
99
+ <!-- if includes -->
100
+ <div id="includes">
101
+ <h3 class="section-bar">Included Modules</h3>
102
+
103
+ <div id="includes-list">
104
+ <span class="include-name"><a href="Generator.html">Generator</a></span>
105
+ </div>
106
+ </div>
107
+
108
+ <div id="section">
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+ <!-- if method_list -->
118
+ <div id="methods">
119
+ <h3 class="section-bar">Public Instance methods</h3>
120
+
121
+ <div id="method-M000194" class="method-detail">
122
+ <a name="M000194"></a>
123
+
124
+ <div class="method-heading">
125
+ <a href="#M000194" class="method-signature">
126
+ <span class="method-name">add_expr_debug</span><span class="method-args">(src, code)</span>
127
+ </a>
128
+ </div>
129
+
130
+ <div class="method-description">
131
+ <p><a class="source-toggle" href="#"
132
+ onclick="toggleCode('M000194-source');return false;">[Source]</a></p>
133
+ <div class="method-source-code" id="M000194-source">
134
+ <pre>
135
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 72</span>
136
+ <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>)
137
+ <span class="ruby-identifier">code</span>.<span class="ruby-identifier">strip!</span>
138
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@indent</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">src</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">src</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span>
139
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; std::cerr &lt;&lt; \&quot;*** debug: #{code.gsub(/(&quot;)/, '\\\&amp;')}=\&quot; &lt;&lt; (#{code});&quot;</span>
140
+ <span class="ruby-keyword kw">end</span>
141
+ </pre>
142
+ </div>
143
+ </div>
144
+ </div>
145
+
146
+ <div id="method-M000193" class="method-detail">
147
+ <a name="M000193"></a>
148
+
149
+ <div class="method-heading">
150
+ <a href="#M000193" class="method-signature">
151
+ <span class="method-name">add_expr_escaped</span><span class="method-args">(src, code)</span>
152
+ </a>
153
+ </div>
154
+
155
+ <div class="method-description">
156
+ <p><a class="source-toggle" href="#"
157
+ onclick="toggleCode('M000193-source');return false;">[Source]</a></p>
158
+ <div class="method-source-code" id="M000193-source">
159
+ <pre>
160
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 67</span>
161
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_escaped</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
162
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@indent</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">src</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">src</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span>
163
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">escaped_expr</span>(<span class="ruby-identifier">code</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">';'</span>
164
+ <span class="ruby-keyword kw">end</span>
165
+ </pre>
166
+ </div>
167
+ </div>
168
+ </div>
169
+
170
+ <div id="method-M000192" class="method-detail">
171
+ <a name="M000192"></a>
172
+
173
+ <div class="method-heading">
174
+ <a href="#M000192" class="method-signature">
175
+ <span class="method-name">add_expr_literal</span><span class="method-args">(src, code)</span>
176
+ </a>
177
+ </div>
178
+
179
+ <div class="method-description">
180
+ <p><a class="source-toggle" href="#"
181
+ onclick="toggleCode('M000192-source');return false;">[Source]</a></p>
182
+ <div class="method-source-code" id="M000192-source">
183
+ <pre>
184
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 62</span>
185
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_expr_literal</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
186
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@indent</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">src</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">src</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span>
187
+ <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-identifier">strip</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;);&quot;</span>
188
+ <span class="ruby-keyword kw">end</span>
189
+ </pre>
190
+ </div>
191
+ </div>
192
+ </div>
193
+
194
+ <div id="method-M000195" class="method-detail">
195
+ <a name="M000195"></a>
196
+
197
+ <div class="method-heading">
198
+ <a href="#M000195" class="method-signature">
199
+ <span class="method-name">add_postamble</span><span class="method-args">(src)</span>
200
+ </a>
201
+ </div>
202
+
203
+ <div class="method-description">
204
+ <p><a class="source-toggle" href="#"
205
+ onclick="toggleCode('M000195-source');return false;">[Source]</a></p>
206
+ <div class="method-source-code" id="M000195-source">
207
+ <pre>
208
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 78</span>
209
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_postamble</span>(<span class="ruby-identifier">src</span>)
210
+ <span class="ruby-comment cmt"># empty</span>
211
+ <span class="ruby-keyword kw">end</span>
212
+ </pre>
213
+ </div>
214
+ </div>
215
+ </div>
216
+
217
+ <div id="method-M000187" class="method-detail">
218
+ <a name="M000187"></a>
219
+
220
+ <div class="method-heading">
221
+ <a href="#M000187" class="method-signature">
222
+ <span class="method-name">add_preamble</span><span class="method-args">(src)</span>
223
+ </a>
224
+ </div>
225
+
226
+ <div class="method-description">
227
+ <p><a class="source-toggle" href="#"
228
+ onclick="toggleCode('M000187-source');return false;">[Source]</a></p>
229
+ <div class="method-source-code" id="M000187-source">
230
+ <pre>
231
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 30</span>
232
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_preamble</span>(<span class="ruby-identifier">src</span>)
233
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#line 1 \&quot;#{self.filename}\&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">filename</span>
234
+ <span class="ruby-keyword kw">end</span>
235
+ </pre>
236
+ </div>
237
+ </div>
238
+ </div>
239
+
240
+ <div id="method-M000191" class="method-detail">
241
+ <a name="M000191"></a>
242
+
243
+ <div class="method-heading">
244
+ <a href="#M000191" class="method-signature">
245
+ <span class="method-name">add_stmt</span><span class="method-args">(src, code)</span>
246
+ </a>
247
+ </div>
248
+
249
+ <div class="method-description">
250
+ <p><a class="source-toggle" href="#"
251
+ onclick="toggleCode('M000191-source');return false;">[Source]</a></p>
252
+ <div class="method-source-code" id="M000191-source">
253
+ <pre>
254
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 58</span>
255
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_stmt</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">code</span>)
256
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">code</span>
257
+ <span class="ruby-keyword kw">end</span>
258
+ </pre>
259
+ </div>
260
+ </div>
261
+ </div>
262
+
263
+ <div id="method-M000190" class="method-detail">
264
+ <a name="M000190"></a>
265
+
266
+ <div class="method-heading">
267
+ <a href="#M000190" class="method-signature">
268
+ <span class="method-name">add_text</span><span class="method-args">(src, text)</span>
269
+ </a>
270
+ </div>
271
+
272
+ <div class="method-description">
273
+ <p><a class="source-toggle" href="#"
274
+ onclick="toggleCode('M000190-source');return false;">[Source]</a></p>
275
+ <div class="method-source-code" id="M000190-source">
276
+ <pre>
277
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 44</span>
278
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">add_text</span>(<span class="ruby-identifier">src</span>, <span class="ruby-identifier">text</span>)
279
+ <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
280
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">src</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">src</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@indent</span> <span class="ruby-operator">:</span> <span class="ruby-value str">' '</span>)
281
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;_buf &lt;&lt; &quot;</span>
282
+ <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
283
+ <span class="ruby-identifier">text</span>.<span class="ruby-identifier">each_line</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
284
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@indent</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">i</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
285
+ <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
286
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'&quot;'</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">line</span>) <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'&quot;'</span>
287
+ <span class="ruby-keyword kw">end</span>
288
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;;&quot;</span> <span class="ruby-comment cmt">#&lt;&lt; (text[-1] == ?\n ? &quot;\n&quot; : &quot;&quot;)</span>
289
+ <span class="ruby-identifier">src</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span>[<span class="ruby-value">-1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">?\n</span>
290
+ <span class="ruby-keyword kw">end</span>
291
+ </pre>
292
+ </div>
293
+ </div>
294
+ </div>
295
+
296
+ <div id="method-M000188" class="method-detail">
297
+ <a name="M000188"></a>
298
+
299
+ <div class="method-heading">
300
+ <a href="#M000188" class="method-signature">
301
+ <span class="method-name">escape_text</span><span class="method-args">(text)</span>
302
+ </a>
303
+ </div>
304
+
305
+ <div class="method-description">
306
+ <p><a class="source-toggle" href="#"
307
+ onclick="toggleCode('M000188-source');return false;">[Source]</a></p>
308
+ <div class="method-source-code" id="M000188-source">
309
+ <pre>
310
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 34</span>
311
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escape_text</span>(<span class="ruby-identifier">text</span>)
312
+ <span class="ruby-ivar">@@table_</span> <span class="ruby-operator">||=</span> { <span class="ruby-value str">&quot;\r&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\r&quot;</span>, <span class="ruby-value str">&quot;\n&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\n&quot;</span>, <span class="ruby-value str">&quot;\t&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\t&quot;</span>, <span class="ruby-value str">'&quot;'</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">'\\&quot;'</span>, <span class="ruby-value str">&quot;\\&quot;</span>=<span class="ruby-operator">&gt;</span><span class="ruby-value str">&quot;\\\\&quot;</span> }
313
+ <span class="ruby-identifier">text</span>.<span class="ruby-identifier">gsub!</span>(<span class="ruby-regexp re">/[\r\n\t&quot;\\]/</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@@table_</span>[<span class="ruby-identifier">m</span>] }
314
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">text</span>
315
+ <span class="ruby-keyword kw">end</span>
316
+ </pre>
317
+ </div>
318
+ </div>
319
+ </div>
320
+
321
+ <div id="method-M000189" class="method-detail">
322
+ <a name="M000189"></a>
323
+
324
+ <div class="method-heading">
325
+ <a href="#M000189" class="method-signature">
326
+ <span class="method-name">escaped_expr</span><span class="method-args">(code)</span>
327
+ </a>
328
+ </div>
329
+
330
+ <div class="method-description">
331
+ <p><a class="source-toggle" href="#"
332
+ onclick="toggleCode('M000189-source');return false;">[Source]</a></p>
333
+ <div class="method-source-code" id="M000189-source">
334
+ <pre>
335
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 40</span>
336
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escaped_expr</span>(<span class="ruby-identifier">code</span>)
337
+ <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{@escapefunc}(#{code.strip})&quot;</span>
338
+ <span class="ruby-keyword kw">end</span>
339
+ </pre>
340
+ </div>
341
+ </div>
342
+ </div>
343
+
344
+ <div id="method-M000186" class="method-detail">
345
+ <a name="M000186"></a>
346
+
347
+ <div class="method-heading">
348
+ <a href="#M000186" class="method-signature">
349
+ <span class="method-name">init_generator</span><span class="method-args">(properties={})</span>
350
+ </a>
351
+ </div>
352
+
353
+ <div class="method-description">
354
+ <p><a class="source-toggle" href="#"
355
+ onclick="toggleCode('M000186-source');return false;">[Source]</a></p>
356
+ <div class="method-source-code" id="M000186-source">
357
+ <pre>
358
+ <span class="ruby-comment cmt"># File erubis/engine/ecpp.rb, line 23</span>
359
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">init_generator</span>(<span class="ruby-identifier">properties</span>={})
360
+ <span class="ruby-keyword kw">super</span>
361
+ <span class="ruby-ivar">@escapefunc</span> <span class="ruby-operator">||=</span> <span class="ruby-value str">&quot;escape&quot;</span>
362
+ <span class="ruby-ivar">@indent</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:indent</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>
363
+ <span class="ruby-ivar">@bufvar</span> = <span class="ruby-identifier">properties</span>[<span class="ruby-identifier">:bufvar</span>] <span class="ruby-operator">||</span> <span class="ruby-value str">'_buf'</span>
364
+ <span class="ruby-keyword kw">end</span>
365
+ </pre>
366
+ </div>
367
+ </div>
368
+ </div>
369
+
370
+
371
+ </div>
372
+
373
+
374
+ </div>
375
+
376
+
377
+ <div id="validator-badges">
378
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
379
+ </div>
380
+
381
+ </body>
382
+ </html>