erubis 2.3.1 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. data/{CHANGES → CHANGES.txt} +373 -3
  2. data/MIT-LICENSE +1 -1
  3. data/README.txt +6 -5
  4. data/benchmark/bench.rb +18 -11
  5. data/bin/erubis +3 -4
  6. data/contrib/erubis +3462 -5
  7. data/contrib/inline-require +54 -28
  8. data/doc/docstyle.css +25 -4
  9. data/doc/users-guide.html +814 -110
  10. data/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +209 -0
  11. data/doc-api/classes/ActionView.html +105 -0
  12. data/doc-api/classes/Erubis/ArrayBufferEnhancer.html +14 -14
  13. data/doc-api/classes/Erubis/ArrayEnhancer.html +16 -16
  14. data/doc-api/classes/Erubis/Basic/Converter.html +36 -31
  15. data/doc-api/classes/Erubis/BiPatternEnhancer.html +16 -13
  16. data/doc-api/classes/Erubis/CGenerator.html +70 -70
  17. data/doc-api/classes/Erubis/Context.html +49 -49
  18. data/doc-api/classes/Erubis/Converter.html +30 -29
  19. data/doc-api/classes/Erubis/CppGenerator.html +382 -0
  20. data/doc-api/classes/Erubis/DeleteIndentEnhancer.html +7 -7
  21. data/doc-api/classes/Erubis/Ecpp.html +126 -0
  22. data/doc-api/classes/Erubis/Engine.html +46 -43
  23. data/doc-api/classes/Erubis/ErboutEnhancer.html +16 -16
  24. data/doc-api/classes/Erubis/EscapeEnhancer.html +7 -7
  25. data/doc-api/classes/Erubis/EscapedEcpp.html +120 -0
  26. data/doc-api/classes/Erubis/Evaluator.html +22 -22
  27. data/doc-api/classes/Erubis/Generator.html +70 -70
  28. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +18 -15
  29. data/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +787 -0
  30. data/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +213 -0
  31. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +103 -54
  32. data/doc-api/classes/Erubis/Helpers.html +6 -1
  33. data/doc-api/classes/Erubis/InterpolationEnhancer.html +42 -41
  34. data/doc-api/classes/Erubis/JavaGenerator.html +69 -69
  35. data/doc-api/classes/Erubis/JavascriptGenerator.html +79 -74
  36. data/doc-api/classes/Erubis/Main.html +49 -48
  37. data/doc-api/classes/Erubis/NoCodeEnhancer.html +35 -35
  38. data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
  39. data/doc-api/classes/Erubis/OptimizedEruby.html +7 -7
  40. data/doc-api/classes/Erubis/OptimizedGenerator.html +84 -84
  41. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +7 -7
  42. data/doc-api/classes/Erubis/PI/Converter.html +23 -22
  43. data/doc-api/classes/Erubis/PI/Ec.html +7 -7
  44. data/doc-api/classes/Erubis/PI/Ecpp.html +166 -0
  45. data/doc-api/classes/Erubis/PI/Ejava.html +7 -7
  46. data/doc-api/classes/Erubis/PI/Ejavascript.html +7 -7
  47. data/doc-api/classes/Erubis/PI/Eperl.html +7 -7
  48. data/doc-api/classes/Erubis/PI/Ephp.html +7 -7
  49. data/doc-api/classes/Erubis/PI/Eruby.html +6 -6
  50. data/doc-api/classes/Erubis/PI/Escheme.html +7 -7
  51. data/doc-api/classes/Erubis/PI/TinyEruby.html +28 -27
  52. data/doc-api/classes/Erubis/PI.html +1 -0
  53. data/doc-api/classes/Erubis/PercentLineEnhancer.html +18 -29
  54. data/doc-api/classes/Erubis/PerlGenerator.html +63 -63
  55. data/doc-api/classes/Erubis/PhpGenerator.html +63 -63
  56. data/doc-api/classes/Erubis/PrefixedLineEnhancer.html +210 -0
  57. data/doc-api/classes/Erubis/PrefixedLineEruby.html +120 -0
  58. data/doc-api/classes/Erubis/PreprocessingEruby.html +183 -0
  59. data/doc-api/classes/Erubis/PreprocessingHelper.html +212 -0
  60. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +23 -23
  61. data/doc-api/classes/Erubis/PrintOutEnhancer.html +38 -38
  62. data/doc-api/classes/Erubis/RubyEvaluator.html +59 -22
  63. data/doc-api/classes/Erubis/RubyGenerator.html +53 -52
  64. data/doc-api/classes/Erubis/SchemeGenerator.html +70 -70
  65. data/doc-api/classes/Erubis/SimplifyEnhancer.html +10 -9
  66. data/doc-api/classes/Erubis/StdoutEnhancer.html +3 -3
  67. data/doc-api/classes/Erubis/StringBufferEnhancer.html +16 -16
  68. data/doc-api/classes/Erubis/TinyEruby.html +33 -33
  69. data/doc-api/classes/Erubis/XmlHelper.html +80 -15
  70. data/doc-api/classes/Erubis.html +25 -1
  71. data/doc-api/classes/Kernel.html +155 -0
  72. data/doc-api/created.rid +1 -1
  73. data/doc-api/files/README_txt.html +8 -8
  74. data/doc-api/files/erubis/context_rb.html +2 -2
  75. data/doc-api/files/erubis/converter_rb.html +3 -3
  76. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  77. data/doc-api/files/erubis/engine/ecpp_rb.html +115 -0
  78. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  79. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  80. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  81. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  82. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  83. data/doc-api/files/erubis/engine/eruby_rb.html +2 -2
  84. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  85. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  86. data/doc-api/files/erubis/engine_rb.html +2 -2
  87. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  88. data/doc-api/files/erubis/error_rb.html +2 -2
  89. data/doc-api/files/erubis/evaluator_rb.html +2 -2
  90. data/doc-api/files/erubis/generator_rb.html +3 -3
  91. data/doc-api/files/erubis/helper_rb.html +2 -2
  92. data/doc-api/files/erubis/helpers/rails_form_helper_rb.html +107 -0
  93. data/doc-api/files/erubis/helpers/rails_helper_rb.html +3 -2
  94. data/doc-api/files/erubis/local-setting_rb.html +2 -2
  95. data/doc-api/files/erubis/main_rb.html +4 -2
  96. data/doc-api/files/erubis/preprocessing_rb.html +114 -0
  97. data/doc-api/files/erubis/tiny_rb.html +2 -2
  98. data/doc-api/files/erubis/util_rb.html +107 -0
  99. data/doc-api/files/erubis_rb.html +2 -2
  100. data/doc-api/fr_class_index.html +13 -0
  101. data/doc-api/fr_file_index.html +4 -0
  102. data/doc-api/fr_method_index.html +237 -179
  103. data/examples/basic/Makefile +7 -2
  104. data/examples/basic/example.ecpp +33 -0
  105. data/lib/erubis/context.rb +2 -3
  106. data/lib/erubis/converter.rb +17 -11
  107. data/lib/erubis/engine/ec.rb +2 -3
  108. data/lib/erubis/engine/ecpp.rb +113 -0
  109. data/lib/erubis/engine/ejava.rb +9 -10
  110. data/lib/erubis/engine/ejavascript.rb +14 -9
  111. data/lib/erubis/engine/enhanced.rb +7 -3
  112. data/lib/erubis/engine/eperl.rb +2 -3
  113. data/lib/erubis/engine/ephp.rb +2 -3
  114. data/lib/erubis/engine/eruby.rb +8 -8
  115. data/lib/erubis/engine/escheme.rb +2 -3
  116. data/lib/erubis/engine/optimized.rb +2 -3
  117. data/lib/erubis/engine.rb +13 -11
  118. data/lib/erubis/enhancer.rb +101 -34
  119. data/lib/erubis/error.rb +2 -3
  120. data/lib/erubis/evaluator.rb +27 -10
  121. data/lib/erubis/generator.rb +3 -4
  122. data/lib/erubis/helper.rb +14 -3
  123. data/lib/erubis/helpers/rails_form_helper.rb +197 -0
  124. data/lib/erubis/helpers/rails_helper.rb +219 -77
  125. data/lib/erubis/local-setting.rb +2 -3
  126. data/lib/erubis/main.rb +85 -60
  127. data/lib/erubis/preprocessing.rb +58 -0
  128. data/lib/erubis/tiny.rb +9 -9
  129. data/lib/erubis/util.rb +22 -0
  130. data/lib/erubis.rb +4 -4
  131. data/test/assert-text-equal.rb +2 -3
  132. data/test/data/users-guide/bufvar-example.rb +10 -0
  133. data/test/data/users-guide/bufvar-example.result +17 -0
  134. data/test/data/users-guide/def_method.rb +14 -0
  135. data/test/data/users-guide/def_method.result +3 -0
  136. data/test/data/users-guide/example.ecpp +30 -0
  137. data/test/data/users-guide/example1.rb +1 -0
  138. data/test/data/users-guide/example_c.result +22 -19
  139. data/test/data/users-guide/fasteruby-example.rb +8 -0
  140. data/test/data/users-guide/fasteruby-example.result +18 -0
  141. data/test/data/users-guide/main_program1.rb +8 -0
  142. data/test/data/users-guide/main_program1.result +6 -0
  143. data/test/data/users-guide/main_program2.rb +8 -0
  144. data/test/data/users-guide/main_program2.result +6 -0
  145. data/test/data/users-guide/percentline-example.rhtml +3 -1
  146. data/test/data/users-guide/percentline_example.result +5 -3
  147. data/test/data/users-guide/prefixedline-example.rb +9 -0
  148. data/test/data/users-guide/prefixedline-example.rhtml +6 -0
  149. data/test/data/users-guide/prefixedline_example.result +9 -0
  150. data/test/data/users-guide/tail_260.result +4 -0
  151. data/test/data/users-guide/tailnewline.rhtml +3 -0
  152. data/test/data/users-guide/template1.rhtml +4 -0
  153. data/test/data/users-guide/template2.rhtml +4 -0
  154. data/test/test-engines.rb +88 -5
  155. data/test/test-enhancers.rb +83 -6
  156. data/test/test-erubis.rb +115 -11
  157. data/test/test-index-cgi.rb +191 -0
  158. data/test/test-main.rb +143 -31
  159. data/test/test-users-guide.rb +20 -3
  160. data/test/test.rb +18 -3
  161. data/test/testutil.rb +44 -8
  162. metadata +104 -67
  163. data/contrib/action_view_base_rb.patch +0 -23
@@ -101,10 +101,10 @@ ex.
101
101
  <h3 class="section-bar">Methods</h3>
102
102
 
103
103
  <div class="name-list">
104
- <a href="#M000162">convert</a>&nbsp;&nbsp;
105
- <a href="#M000164">evaluate</a>&nbsp;&nbsp;
106
- <a href="#M000161">new</a>&nbsp;&nbsp;
107
- <a href="#M000163">result</a>&nbsp;&nbsp;
104
+ <a href="#M000219">convert</a>&nbsp;&nbsp;
105
+ <a href="#M000221">evaluate</a>&nbsp;&nbsp;
106
+ <a href="#M000218">new</a>&nbsp;&nbsp;
107
+ <a href="#M000220">result</a>&nbsp;&nbsp;
108
108
  </div>
109
109
  </div>
110
110
 
@@ -152,21 +152,21 @@ ex.
152
152
  <div id="methods">
153
153
  <h3 class="section-bar">Public Class methods</h3>
154
154
 
155
- <div id="method-M000161" class="method-detail">
156
- <a name="M000161"></a>
155
+ <div id="method-M000218" class="method-detail">
156
+ <a name="M000218"></a>
157
157
 
158
158
  <div class="method-heading">
159
- <a href="#M000161" class="method-signature">
159
+ <a href="#M000218" class="method-signature">
160
160
  <span class="method-name">new</span><span class="method-args">(input=nil)</span>
161
161
  </a>
162
162
  </div>
163
163
 
164
164
  <div class="method-description">
165
165
  <p><a class="source-toggle" href="#"
166
- onclick="toggleCode('M000161-source');return false;">[Source]</a></p>
167
- <div class="method-source-code" id="M000161-source">
166
+ onclick="toggleCode('M000218-source');return false;">[Source]</a></p>
167
+ <div class="method-source-code" id="M000218-source">
168
168
  <pre>
169
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 20</span>
169
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 19</span>
170
170
  <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>)
171
171
  <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>
172
172
  <span class="ruby-keyword kw">end</span>
@@ -177,29 +177,28 @@ ex.
177
177
 
178
178
  <h3 class="section-bar">Public Instance methods</h3>
179
179
 
180
- <div id="method-M000162" class="method-detail">
181
- <a name="M000162"></a>
180
+ <div id="method-M000219" class="method-detail">
181
+ <a name="M000219"></a>
182
182
 
183
183
  <div class="method-heading">
184
- <a href="#M000162" class="method-signature">
184
+ <a href="#M000219" class="method-signature">
185
185
  <span class="method-name">convert</span><span class="method-args">(input)</span>
186
186
  </a>
187
187
  </div>
188
188
 
189
189
  <div class="method-description">
190
190
  <p><a class="source-toggle" href="#"
191
- onclick="toggleCode('M000162-source');return false;">[Source]</a></p>
192
- <div class="method-source-code" id="M000162-source">
191
+ onclick="toggleCode('M000219-source');return false;">[Source]</a></p>
192
+ <div class="method-source-code" id="M000219-source">
193
193
  <pre>
194
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 27</span>
194
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 26</span>
195
195
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">convert</span>(<span class="ruby-identifier">input</span>)
196
196
  <span class="ruby-identifier">src</span> = <span class="ruby-value str">&quot;_buf = '';&quot;</span> <span class="ruby-comment cmt"># preamble</span>
197
197
  <span class="ruby-identifier">pos</span> = <span class="ruby-value">0</span>
198
198
  <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">indicator</span>, <span class="ruby-identifier">code</span><span class="ruby-operator">|</span>
199
- <span class="ruby-identifier">match</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
200
- <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>
201
- <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">len</span>]
202
- <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
199
+ <span class="ruby-identifier">m</span> = <span class="ruby-constant">Regexp</span>.<span class="ruby-identifier">last_match</span>
200
+ <span class="ruby-identifier">text</span> = <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span><span class="ruby-operator">...</span><span class="ruby-identifier">m</span>.<span class="ruby-identifier">begin</span>(<span class="ruby-value">0</span>)]
201
+ <span class="ruby-identifier">pos</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">end</span>(<span class="ruby-value">0</span>)
203
202
  <span class="ruby-comment cmt">#src &lt;&lt; &quot; _buf &lt;&lt; '&quot; &lt;&lt; escape_text(text) &lt;&lt; &quot;';&quot;</span>
204
203
  <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>)
205
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">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>
@@ -211,7 +210,8 @@ ex.
211
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">code</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;).to_s;&quot;</span>
212
211
  <span class="ruby-keyword kw">end</span>
213
212
  <span class="ruby-keyword kw">end</span>
214
- <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">$'</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">input</span>
213
+ <span class="ruby-comment cmt">#rest = $' || input # ruby1.8</span>
214
+ <span class="ruby-identifier">rest</span> = <span class="ruby-identifier">pos</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">input</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">input</span>[<span class="ruby-identifier">pos</span><span class="ruby-operator">..</span><span class="ruby-value">-1</span>] <span class="ruby-comment cmt"># ruby1.9</span>
215
215
  <span class="ruby-comment cmt">#src &lt;&lt; &quot; _buf &lt;&lt; '&quot; &lt;&lt; escape_text(rest) &lt;&lt; &quot;';&quot;</span>
216
216
  <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>)
217
217
  <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>
@@ -223,21 +223,21 @@ ex.
223
223
  </div>
224
224
  </div>
225
225
 
226
- <div id="method-M000164" class="method-detail">
227
- <a name="M000164"></a>
226
+ <div id="method-M000221" class="method-detail">
227
+ <a name="M000221"></a>
228
228
 
229
229
  <div class="method-heading">
230
- <a href="#M000164" class="method-signature">
230
+ <a href="#M000221" class="method-signature">
231
231
  <span class="method-name">evaluate</span><span class="method-args">(_context=Object.new)</span>
232
232
  </a>
233
233
  </div>
234
234
 
235
235
  <div class="method-description">
236
236
  <p><a class="source-toggle" href="#"
237
- onclick="toggleCode('M000164-source');return false;">[Source]</a></p>
238
- <div class="method-source-code" id="M000164-source">
237
+ onclick="toggleCode('M000221-source');return false;">[Source]</a></p>
238
+ <div class="method-source-code" id="M000221-source">
239
239
  <pre>
240
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 62</span>
240
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 61</span>
241
241
  <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>)
242
242
  <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>)
243
243
  <span class="ruby-identifier">_obj</span> = <span class="ruby-constant">Object</span>.<span class="ruby-identifier">new</span>
@@ -251,11 +251,11 @@ ex.
251
251
  </div>
252
252
  </div>
253
253
 
254
- <div id="method-M000163" class="method-detail">
255
- <a name="M000163"></a>
254
+ <div id="method-M000220" class="method-detail">
255
+ <a name="M000220"></a>
256
256
 
257
257
  <div class="method-heading">
258
- <a href="#M000163" class="method-signature">
258
+ <a href="#M000220" class="method-signature">
259
259
  <span class="method-name">result</span><span class="method-args">(_binding=TOPLEVEL_BINDING)</span>
260
260
  </a>
261
261
  </div>
@@ -271,10 +271,10 @@ def escape_text(text)
271
271
  end
272
272
  </p>
273
273
  <p><a class="source-toggle" href="#"
274
- onclick="toggleCode('M000163-source');return false;">[Source]</a></p>
275
- <div class="method-source-code" id="M000163-source">
274
+ onclick="toggleCode('M000220-source');return false;">[Source]</a></p>
275
+ <div class="method-source-code" id="M000220-source">
276
276
  <pre>
277
- <span class="ruby-comment cmt"># File erubis/tiny.rb, line 58</span>
277
+ <span class="ruby-comment cmt"># File erubis/tiny.rb, line 57</span>
278
278
  <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>)
279
279
  <span class="ruby-identifier">eval</span> <span class="ruby-ivar">@src</span>, <span class="ruby-identifier">_binding</span>
280
280
  <span class="ruby-keyword kw">end</span>
@@ -86,9 +86,12 @@ helper for xml
86
86
  <h3 class="section-bar">Methods</h3>
87
87
 
88
88
  <div class="name-list">
89
- <a href="#M000084">escape_xml</a>&nbsp;&nbsp;
90
- <a href="#M000085">h</a>&nbsp;&nbsp;
91
- <a href="#M000086">html_escape</a>&nbsp;&nbsp;
89
+ <a href="#M000106">escape_xml</a>&nbsp;&nbsp;
90
+ <a href="#M000107">escape_xml2</a>&nbsp;&nbsp;
91
+ <a href="#M000108">h</a>&nbsp;&nbsp;
92
+ <a href="#M000109">html_escape</a>&nbsp;&nbsp;
93
+ <a href="#M000111">u</a>&nbsp;&nbsp;
94
+ <a href="#M000110">url_encode</a>&nbsp;&nbsp;
92
95
  </div>
93
96
  </div>
94
97
 
@@ -123,21 +126,21 @@ helper for xml
123
126
  <div id="methods">
124
127
  <h3 class="section-bar">Public Instance methods</h3>
125
128
 
126
- <div id="method-M000084" class="method-detail">
127
- <a name="M000084"></a>
129
+ <div id="method-M000106" class="method-detail">
130
+ <a name="M000106"></a>
128
131
 
129
132
  <div class="method-heading">
130
- <a href="#M000084" class="method-signature">
133
+ <a href="#M000106" class="method-signature">
131
134
  <span class="method-name">escape_xml</span><span class="method-args">(value)</span>
132
135
  </a>
133
136
  </div>
134
137
 
135
138
  <div class="method-description">
136
139
  <p><a class="source-toggle" href="#"
137
- onclick="toggleCode('M000084-source');return false;">[Source]</a></p>
138
- <div class="method-source-code" id="M000084-source">
140
+ onclick="toggleCode('M000106-source');return false;">[Source]</a></p>
141
+ <div class="method-source-code" id="M000106-source">
139
142
  <pre>
140
- <span class="ruby-comment cmt"># File erubis/helper.rb, line 25</span>
143
+ <span class="ruby-comment cmt"># File erubis/helper.rb, line 24</span>
141
144
  <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escape_xml</span>(<span class="ruby-identifier">value</span>)
142
145
  <span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[&amp;&lt;&gt;&quot;]/</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span> <span class="ruby-constant">ESCAPE_TABLE</span>[<span class="ruby-identifier">s</span>] } <span class="ruby-comment cmt"># or /[&amp;&lt;&gt;&quot;']/</span>
143
146
  <span class="ruby-comment cmt">#value.to_s.gsub(/[&amp;&lt;&gt;&quot;]/) { ESCAPE_TABLE[$&amp;] }</span>
@@ -147,8 +150,31 @@ helper for xml
147
150
  </div>
148
151
  </div>
149
152
 
150
- <div id="method-M000085" class="method-detail">
151
- <a name="M000085"></a>
153
+ <div id="method-M000107" class="method-detail">
154
+ <a name="M000107"></a>
155
+
156
+ <div class="method-heading">
157
+ <a href="#M000107" class="method-signature">
158
+ <span class="method-name">escape_xml2</span><span class="method-args">(value)</span>
159
+ </a>
160
+ </div>
161
+
162
+ <div class="method-description">
163
+ <p><a class="source-toggle" href="#"
164
+ onclick="toggleCode('M000107-source');return false;">[Source]</a></p>
165
+ <div class="method-source-code" id="M000107-source">
166
+ <pre>
167
+ <span class="ruby-comment cmt"># File erubis/helper.rb, line 29</span>
168
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">escape_xml2</span>(<span class="ruby-identifier">value</span>)
169
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">value</span>.<span class="ruby-identifier">to_s</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\&amp;/</span>,<span class="ruby-value str">'&amp;amp;'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&lt;/</span>,<span class="ruby-value str">'&amp;lt;'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&gt;/</span>,<span class="ruby-value str">'&amp;gt;'</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/&quot;/</span>,<span class="ruby-value str">'&amp;quot;'</span>)
170
+ <span class="ruby-keyword kw">end</span>
171
+ </pre>
172
+ </div>
173
+ </div>
174
+ </div>
175
+
176
+ <div id="method-M000108" class="method-detail">
177
+ <a name="M000108"></a>
152
178
 
153
179
  <div class="method-heading">
154
180
  <span class="method-name">h</span><span class="method-args">(value)</span>
@@ -156,13 +182,13 @@ helper for xml
156
182
 
157
183
  <div class="method-description">
158
184
  <p>
159
- Alias for <a href="XmlHelper.html#M000084">escape_xml</a>
185
+ Alias for <a href="XmlHelper.html#M000106">escape_xml</a>
160
186
  </p>
161
187
  </div>
162
188
  </div>
163
189
 
164
- <div id="method-M000086" class="method-detail">
165
- <a name="M000086"></a>
190
+ <div id="method-M000109" class="method-detail">
191
+ <a name="M000109"></a>
166
192
 
167
193
  <div class="method-heading">
168
194
  <span class="method-name">html_escape</span><span class="method-args">(value)</span>
@@ -170,11 +196,50 @@ Alias for <a href="XmlHelper.html#M000084">escape_xml</a>
170
196
 
171
197
  <div class="method-description">
172
198
  <p>
173
- Alias for <a href="XmlHelper.html#M000084">escape_xml</a>
199
+ Alias for <a href="XmlHelper.html#M000106">escape_xml</a>
200
+ </p>
201
+ </div>
202
+ </div>
203
+
204
+ <div id="method-M000111" class="method-detail">
205
+ <a name="M000111"></a>
206
+
207
+ <div class="method-heading">
208
+ <span class="method-name">u</span><span class="method-args">(str)</span>
209
+ </div>
210
+
211
+ <div class="method-description">
212
+ <p>
213
+ Alias for <a href="XmlHelper.html#M000110">url_encode</a>
174
214
  </p>
175
215
  </div>
176
216
  </div>
177
217
 
218
+ <div id="method-M000110" class="method-detail">
219
+ <a name="M000110"></a>
220
+
221
+ <div class="method-heading">
222
+ <a href="#M000110" class="method-signature">
223
+ <span class="method-name">url_encode</span><span class="method-args">(str)</span>
224
+ </a>
225
+ </div>
226
+
227
+ <div class="method-description">
228
+ <p><a class="source-toggle" href="#"
229
+ onclick="toggleCode('M000110-source');return false;">[Source]</a></p>
230
+ <div class="method-source-code" id="M000110-source">
231
+ <pre>
232
+ <span class="ruby-comment cmt"># File erubis/helper.rb, line 36</span>
233
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">url_encode</span>(<span class="ruby-identifier">str</span>)
234
+ <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/[^-_.a-zA-Z0-9]+/</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
235
+ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">unpack</span>(<span class="ruby-value str">'C*'</span>).<span class="ruby-identifier">collect</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-value str">&quot;%%%02X&quot;</span> <span class="ruby-operator">%</span> <span class="ruby-identifier">i</span> }.<span class="ruby-identifier">join</span>
236
+ }
237
+ <span class="ruby-keyword kw">end</span>
238
+ </pre>
239
+ </div>
240
+ </div>
241
+ </div>
242
+
178
243
 
179
244
  </div>
180
245
 
@@ -66,6 +66,10 @@
66
66
  <a href="../files/erubis/engine/ec_rb.html">
67
67
  erubis/engine/ec.rb
68
68
  </a>
69
+ <br />
70
+ <a href="../files/erubis/engine/ecpp_rb.html">
71
+ erubis/engine/ecpp.rb
72
+ </a>
69
73
  <br />
70
74
  <a href="../files/erubis/engine/ejava_rb.html">
71
75
  erubis/engine/ejava.rb
@@ -122,6 +126,10 @@
122
126
  <a href="../files/erubis/helper_rb.html">
123
127
  erubis/helper.rb
124
128
  </a>
129
+ <br />
130
+ <a href="../files/erubis/helpers/rails_form_helper_rb.html">
131
+ erubis/helpers/rails_form_helper.rb
132
+ </a>
125
133
  <br />
126
134
  <a href="../files/erubis/helpers/rails_helper_rb.html">
127
135
  erubis/helpers/rails_helper.rb
@@ -130,6 +138,10 @@
130
138
  <a href="../files/erubis/main_rb.html">
131
139
  erubis/main.rb
132
140
  </a>
141
+ <br />
142
+ <a href="../files/erubis/preprocessing_rb.html">
143
+ erubis/preprocessing.rb
144
+ </a>
133
145
  <br />
134
146
  <a href="../files/erubis/tiny_rb.html">
135
147
  erubis/tiny.rb
@@ -223,6 +235,7 @@ Module <a href="Erubis/Basic.html" class="link">Erubis::Basic</a><br />
223
235
  Module <a href="Erubis/BiPatternEnhancer.html" class="link">Erubis::BiPatternEnhancer</a><br />
224
236
  Module <a href="Erubis/CGenerator.html" class="link">Erubis::CGenerator</a><br />
225
237
  Module <a href="Erubis/Converter.html" class="link">Erubis::Converter</a><br />
238
+ Module <a href="Erubis/CppGenerator.html" class="link">Erubis::CppGenerator</a><br />
226
239
  Module <a href="Erubis/DeleteIndentEnhancer.html" class="link">Erubis::DeleteIndentEnhancer</a><br />
227
240
  Module <a href="Erubis/ErboutEnhancer.html" class="link">Erubis::ErboutEnhancer</a><br />
228
241
  Module <a href="Erubis/EscapeEnhancer.html" class="link">Erubis::EscapeEnhancer</a><br />
@@ -240,6 +253,8 @@ Module <a href="Erubis/PI.html" class="link">Erubis::PI</a><br />
240
253
  Module <a href="Erubis/PercentLineEnhancer.html" class="link">Erubis::PercentLineEnhancer</a><br />
241
254
  Module <a href="Erubis/PerlGenerator.html" class="link">Erubis::PerlGenerator</a><br />
242
255
  Module <a href="Erubis/PhpGenerator.html" class="link">Erubis::PhpGenerator</a><br />
256
+ Module <a href="Erubis/PrefixedLineEnhancer.html" class="link">Erubis::PrefixedLineEnhancer</a><br />
257
+ Module <a href="Erubis/PreprocessingHelper.html" class="link">Erubis::PreprocessingHelper</a><br />
243
258
  Module <a href="Erubis/PrintEnabledEnhancer.html" class="link">Erubis::PrintEnabledEnhancer</a><br />
244
259
  Module <a href="Erubis/PrintOutEnhancer.html" class="link">Erubis::PrintOutEnhancer</a><br />
245
260
  Module <a href="Erubis/RubyEvaluator.html" class="link">Erubis::RubyEvaluator</a><br />
@@ -256,6 +271,7 @@ Class <a href="Erubis/CommandOptionError.html" class="link">Erubis::CommandOptio
256
271
  Class <a href="Erubis/Context.html" class="link">Erubis::Context</a><br />
257
272
  Class <a href="Erubis/DeleteIndentEruby.html" class="link">Erubis::DeleteIndentEruby</a><br />
258
273
  Class <a href="Erubis/Ec.html" class="link">Erubis::Ec</a><br />
274
+ Class <a href="Erubis/Ecpp.html" class="link">Erubis::Ecpp</a><br />
259
275
  Class <a href="Erubis/Ejava.html" class="link">Erubis::Ejava</a><br />
260
276
  Class <a href="Erubis/Ejavascript.html" class="link">Erubis::Ejavascript</a><br />
261
277
  Class <a href="Erubis/Engine.html" class="link">Erubis::Engine</a><br />
@@ -265,6 +281,7 @@ Class <a href="Erubis/ErboutEruby.html" class="link">Erubis::ErboutEruby</a><br
265
281
  Class <a href="Erubis/ErubisError.html" class="link">Erubis::ErubisError</a><br />
266
282
  Class <a href="Erubis/Eruby.html" class="link">Erubis::Eruby</a><br />
267
283
  Class <a href="Erubis/EscapedEc.html" class="link">Erubis::EscapedEc</a><br />
284
+ Class <a href="Erubis/EscapedEcpp.html" class="link">Erubis::EscapedEcpp</a><br />
268
285
  Class <a href="Erubis/EscapedEjava.html" class="link">Erubis::EscapedEjava</a><br />
269
286
  Class <a href="Erubis/EscapedEjavascript.html" class="link">Erubis::EscapedEjavascript</a><br />
270
287
  Class <a href="Erubis/EscapedEperl.html" class="link">Erubis::EscapedEperl</a><br />
@@ -282,6 +299,8 @@ Class <a href="Erubis/NotSupportedError.html" class="link">Erubis::NotSupportedE
282
299
  Class <a href="Erubis/OptimizedEruby.html" class="link">Erubis::OptimizedEruby</a><br />
283
300
  Class <a href="Erubis/OptimizedXmlEruby.html" class="link">Erubis::OptimizedXmlEruby</a><br />
284
301
  Class <a href="Erubis/PercentLineEruby.html" class="link">Erubis::PercentLineEruby</a><br />
302
+ Class <a href="Erubis/PrefixedLineEruby.html" class="link">Erubis::PrefixedLineEruby</a><br />
303
+ Class <a href="Erubis/PreprocessingEruby.html" class="link">Erubis::PreprocessingEruby</a><br />
285
304
  Class <a href="Erubis/PrintEnabledEruby.html" class="link">Erubis::PrintEnabledEruby</a><br />
286
305
  Class <a href="Erubis/PrintOutEruby.html" class="link">Erubis::PrintOutEruby</a><br />
287
306
  Class <a href="Erubis/PrintOutSimplifiedEruby.html" class="link">Erubis::PrintOutSimplifiedEruby</a><br />
@@ -300,6 +319,11 @@ Class <a href="Erubis/XmlEruby.html" class="link">Erubis::XmlEruby</a><br />
300
319
 
301
320
  <div class="name-list">
302
321
  <table summary="Constants">
322
+ <tr class="top-aligned-row context-row">
323
+ <td class="context-item-name">EMPTY_BINDING</td>
324
+ <td>=</td>
325
+ <td class="context-item-value">binding()</td>
326
+ </tr>
303
327
  <tr class="top-aligned-row context-row">
304
328
  <td class="context-item-name">Ejs</td>
305
329
  <td>=</td>
@@ -313,7 +337,7 @@ Class <a href="Erubis/XmlEruby.html" class="link">Erubis::XmlEruby</a><br />
313
337
  <tr class="top-aligned-row context-row">
314
338
  <td class="context-item-name">VERSION</td>
315
339
  <td>=</td>
316
- <td class="context-item-value">('$Release: 2.3.1 $' =~ /([.\d]+)/) &amp;&amp; $1</td>
340
+ <td class="context-item-value">('$Release: 2.7.0 $' =~ /([.\d]+)/) &amp;&amp; $1</td>
317
341
  </tr>
318
342
  </table>
319
343
  </div>
@@ -0,0 +1,155 @@
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: Kernel</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">Kernel</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/erubis/util_rb.html">
59
+ erubis/util.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
+ <div id="description">
76
+ <p>
77
+ $Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
78
+ </p>
79
+
80
+ </div>
81
+
82
+
83
+ </div>
84
+
85
+ <div id="method-list">
86
+ <h3 class="section-bar">Methods</h3>
87
+
88
+ <div class="name-list">
89
+ <a href="#M000239">not_implemented</a>&nbsp;&nbsp;
90
+ </div>
91
+ </div>
92
+
93
+ </div>
94
+
95
+
96
+ <!-- if includes -->
97
+
98
+ <div id="section">
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+ <!-- if method_list -->
108
+ <div id="methods">
109
+ <h3 class="section-bar">Private Instance methods</h3>
110
+
111
+ <div id="method-M000239" class="method-detail">
112
+ <a name="M000239"></a>
113
+
114
+ <div class="method-heading">
115
+ <a href="#M000239" class="method-signature">
116
+ <span class="method-name">not_implemented</span><span class="method-args">(</span>
117
+ </a>
118
+ </div>
119
+
120
+ <div class="method-description">
121
+ <p>
122
+ raise NotImplementedError
123
+ </p>
124
+ <p><a class="source-toggle" href="#"
125
+ onclick="toggleCode('M000239-source');return false;">[Source]</a></p>
126
+ <div class="method-source-code" id="M000239-source">
127
+ <pre>
128
+ <span class="ruby-comment cmt"># File erubis/util.rb, line 11</span>
129
+ <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">not_implemented</span> <span class="ruby-comment cmt">#:doc:</span>
130
+ <span class="ruby-identifier">backtrace</span> = <span class="ruby-identifier">caller</span>()
131
+ <span class="ruby-identifier">method_name</span> = (<span class="ruby-identifier">backtrace</span>.<span class="ruby-identifier">shift</span> <span class="ruby-operator">=~</span> <span class="ruby-regexp re">/`(\w+)'$/</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">$1</span>
132
+ <span class="ruby-identifier">mesg</span> = <span class="ruby-node">&quot;class #{self.class.name} must implement abstract method '#{method_name}()'.&quot;</span>
133
+ <span class="ruby-comment cmt">#mesg = &quot;#{self.class.name}##{method_name}() is not implemented.&quot;</span>
134
+ <span class="ruby-identifier">err</span> = <span class="ruby-constant">NotImplementedError</span>.<span class="ruby-identifier">new</span> <span class="ruby-identifier">mesg</span>
135
+ <span class="ruby-identifier">err</span>.<span class="ruby-identifier">set_backtrace</span> <span class="ruby-identifier">backtrace</span>
136
+ <span class="ruby-identifier">raise</span> <span class="ruby-identifier">err</span>
137
+ <span class="ruby-keyword kw">end</span>
138
+ </pre>
139
+ </div>
140
+ </div>
141
+ </div>
142
+
143
+
144
+ </div>
145
+
146
+
147
+ </div>
148
+
149
+
150
+ <div id="validator-badges">
151
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
152
+ </div>
153
+
154
+ </body>
155
+ </html>
data/doc-api/created.rid CHANGED
@@ -1 +1 @@
1
- Sat, 26 May 2007 20:38:34 +0900
1
+ Sat, 02 Apr 2011 07:53:01 +0900
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Sat May 26 20:38:33 +0900 2007</td>
59
+ <td>Sat Apr 02 07:53:01 +0900 2011</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -71,10 +71,10 @@
71
71
  <div id="description">
72
72
  <h1>README</h1>
73
73
  <table>
74
- <tr><td valign="top">release:</td><td>2.3.1
74
+ <tr><td valign="top">release:</td><td>2.7.0
75
75
 
76
76
  </td></tr>
77
- <tr><td valign="top">copyright:</td><td>copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
77
+ <tr><td valign="top">copyright:</td><td>copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
78
78
 
79
79
  </td></tr>
80
80
  </table>
@@ -120,18 +120,18 @@ datafile
120
120
  </ul>
121
121
  <p>
122
122
  <a href="../classes/Erubis.html">Erubis</a> is implemented in pure Ruby. It
123
- requires Ruby 1.8 or higher.
123
+ requires Ruby 1.8 or higher. <a href="../classes/Erubis.html">Erubis</a>
124
+ now supports Ruby 1.9.
124
125
  </p>
125
126
  <p>
126
127
  See doc/users-guide.html for details.
127
128
  </p>
128
129
  <h2>Installation</h2>
129
130
  <ul>
130
- <li>If you have installed RubyGems, just type <tt>gem install &#8212;remote
131
- erubis</tt>.
131
+ <li>If you have installed RubyGems, just type <tt>gem install erubis</tt>.
132
132
 
133
133
  <pre>
134
- $ sudo gem install --remote erubis
134
+ $ sudo gem install erubis
135
135
  </pre>
136
136
  </li>
137
137
  <li>Else install <a href="http://rubyforge.org/projects/abstract/">abstract</a>
@@ -169,7 +169,7 @@ have to do is to add the following code into your
169
169
  require 'erubis/helpers/rails_helper'
170
170
  #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby
171
171
  #Erubis::Helpers::RailsHelper.init_properties = {}
172
- #Erubis::Helpers::RailsHelper.show_src = false
172
+ #Erubis::Helpers::RailsHelper.show_src = nil
173
173
  </pre>
174
174
  <p>
175
175
  If Erubis::Helpers::RailsHelper.show_src is ture, <a
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Fri May 18 16:17:19 +0900 2007</td>
59
+ <td>Tue Jul 14 09:47:22 +0900 2009</td>
60
60
  </tr>
61
61
  </table>
62
62
  </div>
@@ -70,7 +70,7 @@
70
70
 
71
71
  <div id="description">
72
72
  <p>
73
- $Rev: 77 $ $Release: 2.3.1 $ copyright(c) 2006-2007 kuwata-lab.com all rights reserved.
73
+ $Release: 2.7.0 $ copyright(c) 2006-2011 kuwata-lab.com all rights reserved.
74
74
  </p>
75
75
 
76
76
  </div>