erubis 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. data/{ChangeLog → CHANGES} +139 -6
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +20 -5
  4. data/benchmark/erubybench.rb +465 -229
  5. data/benchmark/erubybench.rhtml +39 -15
  6. data/benchmark/erubybench.yaml +126 -46
  7. data/bin/erubis +2 -2
  8. data/bin/notext +3 -3
  9. data/contrib/action_view_base_rb.patch +23 -0
  10. data/contrib/erubis +466 -308
  11. data/contrib/inline-require +2 -2
  12. data/doc-api/classes/ERB.html +101 -0
  13. data/doc-api/classes/Erubis.html +59 -6
  14. data/doc-api/classes/Erubis/ArrayEnhancer.html +12 -12
  15. data/doc-api/classes/Erubis/Basic/Converter.html +61 -57
  16. data/doc-api/classes/Erubis/BiPatternEnhancer.html +14 -14
  17. data/doc-api/classes/Erubis/CGenerator.html +60 -60
  18. data/doc-api/classes/Erubis/Context.html +125 -29
  19. data/doc-api/classes/Erubis/Converter.html +73 -22
  20. data/doc-api/classes/Erubis/Engine.html +55 -39
  21. data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
  22. data/doc-api/classes/Erubis/Evaluator.html +19 -19
  23. data/doc-api/classes/Erubis/Generator.html +16 -10
  24. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
  25. data/doc-api/classes/Erubis/{Helper.html → Helpers.html} +5 -6
  26. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +296 -0
  27. data/doc-api/classes/Erubis/JavaGenerator.html +54 -54
  28. data/doc-api/classes/Erubis/JavascriptGenerator.html +60 -60
  29. data/doc-api/classes/Erubis/Main.html +42 -30
  30. data/doc-api/classes/Erubis/NoCodeEnhancer.html +5 -5
  31. data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
  32. data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
  33. data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
  34. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
  35. data/doc-api/classes/Erubis/PI/Converter.html +28 -81
  36. data/doc-api/classes/Erubis/PI/Ec.html +6 -6
  37. data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
  38. data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
  39. data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
  40. data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
  41. data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
  42. data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
  43. data/doc-api/classes/Erubis/PI/TinyEruby.html +66 -79
  44. data/doc-api/classes/Erubis/PercentLineEnhancer.html +8 -8
  45. data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
  46. data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
  47. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +21 -21
  48. data/doc-api/classes/Erubis/PrintOutEnhancer.html +30 -30
  49. data/doc-api/classes/Erubis/RubyEvaluator.html +12 -12
  50. data/doc-api/classes/Erubis/RubyGenerator.html +9 -9
  51. data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -6
  52. data/doc-api/classes/Erubis/StdoutEnhancer.html +12 -12
  53. data/doc-api/classes/Erubis/StringBufferEnhancer.html +13 -13
  54. data/doc-api/classes/Erubis/TinyEruby.html +56 -68
  55. data/doc-api/classes/Erubis/XmlHelper.html +20 -23
  56. data/doc-api/created.rid +1 -1
  57. data/doc-api/files/{__/README_txt.html → README_txt.html} +35 -20
  58. data/doc-api/files/erubis/context_rb.html +2 -2
  59. data/doc-api/files/erubis/converter_rb.html +2 -2
  60. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  61. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  62. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  63. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  64. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  65. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  66. data/doc-api/files/erubis/engine/eruby_rb.html +2 -3
  67. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  68. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  69. data/doc-api/files/erubis/engine_rb.html +2 -2
  70. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  71. data/doc-api/files/erubis/error_rb.html +2 -2
  72. data/doc-api/files/erubis/evaluator_rb.html +2 -2
  73. data/doc-api/files/erubis/generator_rb.html +2 -2
  74. data/doc-api/files/erubis/helper_rb.html +2 -2
  75. data/doc-api/files/erubis/{helper/rails_rb.html → helpers/rails_helper_rb.html} +6 -31
  76. data/doc-api/files/erubis/local-setting_rb.html +2 -2
  77. data/doc-api/files/erubis/main_rb.html +4 -2
  78. data/doc-api/files/erubis/tiny_rb.html +2 -2
  79. data/doc-api/files/erubis_rb.html +2 -2
  80. data/doc-api/fr_class_index.html +3 -3
  81. data/doc-api/fr_file_index.html +2 -2
  82. data/doc-api/fr_method_index.html +142 -147
  83. data/doc-api/index.html +1 -1
  84. data/doc/users-guide.html +387 -218
  85. data/lib/erubis.rb +21 -25
  86. data/lib/erubis/context.rb +34 -4
  87. data/lib/erubis/converter.rb +159 -115
  88. data/lib/erubis/engine.rb +29 -12
  89. data/lib/erubis/engine/ec.rb +2 -2
  90. data/lib/erubis/engine/ejava.rb +2 -2
  91. data/lib/erubis/engine/ejavascript.rb +2 -2
  92. data/lib/erubis/engine/enhanced.rb +2 -2
  93. data/lib/erubis/engine/eperl.rb +2 -2
  94. data/lib/erubis/engine/ephp.rb +2 -2
  95. data/lib/erubis/engine/eruby.rb +5 -6
  96. data/lib/erubis/engine/escheme.rb +2 -2
  97. data/lib/erubis/engine/optimized.rb +2 -2
  98. data/lib/erubis/enhancer.rb +33 -7
  99. data/lib/erubis/error.rb +2 -2
  100. data/lib/erubis/evaluator.rb +2 -2
  101. data/lib/erubis/generator.rb +6 -3
  102. data/lib/erubis/helper.rb +6 -23
  103. data/lib/erubis/helpers/rails_helper.rb +202 -0
  104. data/lib/erubis/local-setting.rb +4 -4
  105. data/lib/erubis/main.rb +90 -35
  106. data/lib/erubis/tiny.rb +57 -52
  107. data/test/assert-text-equal.rb +2 -2
  108. data/test/test-engines.rb +5 -5
  109. data/test/test-erubis.rb +173 -63
  110. data/test/test-main.rb +135 -27
  111. data/test/test-notext.rb +2 -2
  112. data/test/test.rb +2 -2
  113. data/test/testutil.rb +2 -2
  114. metadata +16 -16
  115. data/LGPL +0 -504
  116. data/doc-api/classes/Erubis/Helper/CachedRailsTemplate.html +0 -198
  117. data/doc-api/classes/Erubis/Helper/RailsTemplate.html +0 -366
  118. data/lib/erubis/helper/rails.rb +0 -159
@@ -56,7 +56,7 @@
56
56
  </tr>
57
57
  <tr class="top-aligned-row">
58
58
  <td><strong>Last Update:</strong></td>
59
- <td>Thu Aug 10 07:27:25 JST 2006</td>
59
+ <td>Sun Feb 04 20:35:06 +0900 2007</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: 36 $ $Release: 2.1.0 $ copyright(c) 2006 kuwata-lab all rights reserved.
73
+ $Rev: 59 $ $Release: 2.2.0 $ copyright(c) 2006-2007 kuwata-lab all rights reserved.
74
74
  </p>
75
75
 
76
76
  </div>
@@ -20,6 +20,7 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Classes</h1>
22
22
  <div id="index-entries">
23
+ <a href="classes/ERB.html">ERB</a><br />
23
24
  <a href="classes/Erubis.html">Erubis</a><br />
24
25
  <a href="classes/Erubis/ArrayBufferEnhancer.html">Erubis::ArrayBufferEnhancer</a><br />
25
26
  <a href="classes/Erubis/ArrayBufferEruby.html">Erubis::ArrayBufferEruby</a><br />
@@ -55,9 +56,8 @@
55
56
  <a href="classes/Erubis/Generator.html">Erubis::Generator</a><br />
56
57
  <a href="classes/Erubis/HeaderFooterEnhancer.html">Erubis::HeaderFooterEnhancer</a><br />
57
58
  <a href="classes/Erubis/HeaderFooterEruby.html">Erubis::HeaderFooterEruby</a><br />
58
- <a href="classes/Erubis/Helper.html">Erubis::Helper</a><br />
59
- <a href="classes/Erubis/Helper/CachedRailsTemplate.html">Erubis::Helper::CachedRailsTemplate</a><br />
60
- <a href="classes/Erubis/Helper/RailsTemplate.html">Erubis::Helper::RailsTemplate</a><br />
59
+ <a href="classes/Erubis/Helpers.html">Erubis::Helpers</a><br />
60
+ <a href="classes/Erubis/Helpers/RailsHelper.html">Erubis::Helpers::RailsHelper</a><br />
61
61
  <a href="classes/Erubis/JavaGenerator.html">Erubis::JavaGenerator</a><br />
62
62
  <a href="classes/Erubis/JavascriptGenerator.html">Erubis::JavascriptGenerator</a><br />
63
63
  <a href="classes/Erubis/Main.html">Erubis::Main</a><br />
@@ -20,7 +20,7 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Files</h1>
22
22
  <div id="index-entries">
23
- <a href="files/__/README_txt.html">../README.txt</a><br />
23
+ <a href="files/README_txt.html">README.txt</a><br />
24
24
  <a href="files/erubis_rb.html">erubis.rb</a><br />
25
25
  <a href="files/erubis/context_rb.html">erubis/context.rb</a><br />
26
26
  <a href="files/erubis/converter_rb.html">erubis/converter.rb</a><br />
@@ -39,7 +39,7 @@
39
39
  <a href="files/erubis/evaluator_rb.html">erubis/evaluator.rb</a><br />
40
40
  <a href="files/erubis/generator_rb.html">erubis/generator.rb</a><br />
41
41
  <a href="files/erubis/helper_rb.html">erubis/helper.rb</a><br />
42
- <a href="files/erubis/helper/rails_rb.html">erubis/helper/rails.rb</a><br />
42
+ <a href="files/erubis/helpers/rails_helper_rb.html">erubis/helpers/rails_helper.rb</a><br />
43
43
  <a href="files/erubis/local-setting_rb.html">erubis/local-setting.rb</a><br />
44
44
  <a href="files/erubis/main_rb.html">erubis/main.rb</a><br />
45
45
  <a href="files/erubis/tiny_rb.html">erubis/tiny.rb</a><br />
@@ -20,184 +20,179 @@
20
20
  <div id="index">
21
21
  <h1 class="section-bar">Methods</h1>
22
22
  <div id="index-entries">
23
- <a href="classes/Erubis/Context.html#M000175">[] (Erubis::Context)</a><br />
24
- <a href="classes/Erubis/Context.html#M000176">[]= (Erubis::Context)</a><br />
25
- <a href="classes/Erubis/Helper/CachedRailsTemplate.html#M000142">_evaluate_proc (Erubis::Helper::CachedRailsTemplate)</a><br />
26
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000151">_evaluate_string (Erubis::Helper::RailsTemplate)</a><br />
27
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000150">_localvar_code (Erubis::Helper::RailsTemplate)</a><br />
23
+ <a href="classes/Erubis/Context.html#M000167">[] (Erubis::Context)</a><br />
24
+ <a href="classes/Erubis/Context.html#M000168">[]= (Erubis::Context)</a><br />
25
+ <a href="classes/Erubis/EscapeEnhancer.html#M000089">add_expr (Erubis::EscapeEnhancer)</a><br />
28
26
  <a href="classes/Erubis/NoCodeEnhancer.html#M000004">add_expr (Erubis::NoCodeEnhancer)</a><br />
29
- <a href="classes/Erubis/EscapeEnhancer.html#M000085">add_expr (Erubis::EscapeEnhancer)</a><br />
30
- <a href="classes/Erubis/Basic/Converter.html#M000057">add_expr (Erubis::Basic::Converter)</a><br />
31
- <a href="classes/Erubis/OptimizedXmlEruby.html#M000178">add_expr_debug (Erubis::OptimizedXmlEruby)</a><br />
32
- <a href="classes/Erubis/PhpGenerator.html#M000104">add_expr_debug (Erubis::PhpGenerator)</a><br />
33
- <a href="classes/Erubis/SchemeGenerator.html#M000027">add_expr_debug (Erubis::SchemeGenerator)</a><br />
34
- <a href="classes/Erubis/OptimizedGenerator.html#M000096">add_expr_debug (Erubis::OptimizedGenerator)</a><br />
27
+ <a href="classes/Erubis/Basic/Converter.html#M000054">add_expr (Erubis::Basic::Converter)</a><br />
28
+ <a href="classes/Erubis/OptimizedXmlEruby.html#M000173">add_expr_debug (Erubis::OptimizedXmlEruby)</a><br />
29
+ <a href="classes/Erubis/CGenerator.html#M000119">add_expr_debug (Erubis::CGenerator)</a><br />
35
30
  <a href="classes/Erubis/RubyGenerator.html#M000036">add_expr_debug (Erubis::RubyGenerator)</a><br />
36
- <a href="classes/Erubis/JavascriptGenerator.html#M000130">add_expr_debug (Erubis::JavascriptGenerator)</a><br />
37
- <a href="classes/Erubis/JavaGenerator.html#M000139">add_expr_debug (Erubis::JavaGenerator)</a><br />
31
+ <a href="classes/Erubis/PerlGenerator.html#M000066">add_expr_debug (Erubis::PerlGenerator)</a><br />
32
+ <a href="classes/Erubis/SchemeGenerator.html#M000027">add_expr_debug (Erubis::SchemeGenerator)</a><br />
33
+ <a href="classes/Erubis/JavascriptGenerator.html#M000134">add_expr_debug (Erubis::JavascriptGenerator)</a><br />
34
+ <a href="classes/Erubis/OptimizedGenerator.html#M000100">add_expr_debug (Erubis::OptimizedGenerator)</a><br />
35
+ <a href="classes/Erubis/PhpGenerator.html#M000108">add_expr_debug (Erubis::PhpGenerator)</a><br />
38
36
  <a href="classes/Erubis/Generator.html#M000016">add_expr_debug (Erubis::Generator)</a><br />
39
- <a href="classes/Erubis/CGenerator.html#M000115">add_expr_debug (Erubis::CGenerator)</a><br />
40
- <a href="classes/Erubis/PerlGenerator.html#M000069">add_expr_debug (Erubis::PerlGenerator)</a><br />
41
- <a href="classes/Erubis/PrintOutEnhancer.html#M000083">add_expr_escaped (Erubis::PrintOutEnhancer)</a><br />
42
- <a href="classes/Erubis/JavascriptGenerator.html#M000129">add_expr_escaped (Erubis::JavascriptGenerator)</a><br />
43
- <a href="classes/Erubis/PhpGenerator.html#M000103">add_expr_escaped (Erubis::PhpGenerator)</a><br />
37
+ <a href="classes/Erubis/JavaGenerator.html#M000143">add_expr_debug (Erubis::JavaGenerator)</a><br />
44
38
  <a href="classes/Erubis/Generator.html#M000015">add_expr_escaped (Erubis::Generator)</a><br />
45
- <a href="classes/Erubis/JavaGenerator.html#M000138">add_expr_escaped (Erubis::JavaGenerator)</a><br />
46
39
  <a href="classes/Erubis/RubyGenerator.html#M000035">add_expr_escaped (Erubis::RubyGenerator)</a><br />
47
- <a href="classes/Erubis/PerlGenerator.html#M000068">add_expr_escaped (Erubis::PerlGenerator)</a><br />
40
+ <a href="classes/Erubis/PrintOutEnhancer.html#M000087">add_expr_escaped (Erubis::PrintOutEnhancer)</a><br />
41
+ <a href="classes/Erubis/JavaGenerator.html#M000142">add_expr_escaped (Erubis::JavaGenerator)</a><br />
42
+ <a href="classes/Erubis/PhpGenerator.html#M000107">add_expr_escaped (Erubis::PhpGenerator)</a><br />
43
+ <a href="classes/Erubis/PerlGenerator.html#M000065">add_expr_escaped (Erubis::PerlGenerator)</a><br />
44
+ <a href="classes/Erubis/JavascriptGenerator.html#M000133">add_expr_escaped (Erubis::JavascriptGenerator)</a><br />
45
+ <a href="classes/Erubis/CGenerator.html#M000118">add_expr_escaped (Erubis::CGenerator)</a><br />
46
+ <a href="classes/Erubis/OptimizedGenerator.html#M000099">add_expr_escaped (Erubis::OptimizedGenerator)</a><br />
48
47
  <a href="classes/Erubis/SchemeGenerator.html#M000026">add_expr_escaped (Erubis::SchemeGenerator)</a><br />
49
- <a href="classes/Erubis/OptimizedGenerator.html#M000095">add_expr_escaped (Erubis::OptimizedGenerator)</a><br />
50
- <a href="classes/Erubis/CGenerator.html#M000114">add_expr_escaped (Erubis::CGenerator)</a><br />
51
- <a href="classes/Erubis/JavaGenerator.html#M000137">add_expr_literal (Erubis::JavaGenerator)</a><br />
52
- <a href="classes/Erubis/CGenerator.html#M000113">add_expr_literal (Erubis::CGenerator)</a><br />
53
48
  <a href="classes/Erubis/SchemeGenerator.html#M000025">add_expr_literal (Erubis::SchemeGenerator)</a><br />
54
- <a href="classes/Erubis/PhpGenerator.html#M000102">add_expr_literal (Erubis::PhpGenerator)</a><br />
55
- <a href="classes/Erubis/JavascriptGenerator.html#M000128">add_expr_literal (Erubis::JavascriptGenerator)</a><br />
56
- <a href="classes/Erubis/RubyGenerator.html#M000034">add_expr_literal (Erubis::RubyGenerator)</a><br />
49
+ <a href="classes/Erubis/OptimizedGenerator.html#M000098">add_expr_literal (Erubis::OptimizedGenerator)</a><br />
50
+ <a href="classes/Erubis/CGenerator.html#M000117">add_expr_literal (Erubis::CGenerator)</a><br />
51
+ <a href="classes/Erubis/PhpGenerator.html#M000106">add_expr_literal (Erubis::PhpGenerator)</a><br />
52
+ <a href="classes/Erubis/JavascriptGenerator.html#M000132">add_expr_literal (Erubis::JavascriptGenerator)</a><br />
53
+ <a href="classes/Erubis/JavaGenerator.html#M000141">add_expr_literal (Erubis::JavaGenerator)</a><br />
57
54
  <a href="classes/Erubis/Generator.html#M000014">add_expr_literal (Erubis::Generator)</a><br />
58
- <a href="classes/Erubis/PrintOutEnhancer.html#M000082">add_expr_literal (Erubis::PrintOutEnhancer)</a><br />
59
- <a href="classes/Erubis/OptimizedGenerator.html#M000094">add_expr_literal (Erubis::OptimizedGenerator)</a><br />
60
- <a href="classes/Erubis/PerlGenerator.html#M000067">add_expr_literal (Erubis::PerlGenerator)</a><br />
61
- <a href="classes/Erubis/JavascriptGenerator.html#M000125">add_indent (Erubis::JavascriptGenerator)</a><br />
62
- <a href="classes/Erubis/PhpGenerator.html#M000106">add_postamble (Erubis::PhpGenerator)</a><br />
63
- <a href="classes/Erubis/NoCodeEnhancer.html#M000002">add_postamble (Erubis::NoCodeEnhancer)</a><br />
55
+ <a href="classes/Erubis/PrintOutEnhancer.html#M000086">add_expr_literal (Erubis::PrintOutEnhancer)</a><br />
56
+ <a href="classes/Erubis/RubyGenerator.html#M000034">add_expr_literal (Erubis::RubyGenerator)</a><br />
57
+ <a href="classes/Erubis/PerlGenerator.html#M000064">add_expr_literal (Erubis::PerlGenerator)</a><br />
58
+ <a href="classes/Erubis/JavascriptGenerator.html#M000129">add_indent (Erubis::JavascriptGenerator)</a><br />
59
+ <a href="classes/Erubis/PhpGenerator.html#M000110">add_postamble (Erubis::PhpGenerator)</a><br />
60
+ <a href="classes/Erubis/CGenerator.html#M000120">add_postamble (Erubis::CGenerator)</a><br />
64
61
  <a href="classes/Erubis/Generator.html#M000017">add_postamble (Erubis::Generator)</a><br />
65
- <a href="classes/Erubis/JavascriptGenerator.html#M000131">add_postamble (Erubis::JavascriptGenerator)</a><br />
66
- <a href="classes/Erubis/PerlGenerator.html#M000071">add_postamble (Erubis::PerlGenerator)</a><br />
67
- <a href="classes/Erubis/StdoutEnhancer.html#M000062">add_postamble (Erubis::StdoutEnhancer)</a><br />
68
- <a href="classes/Erubis/CGenerator.html#M000116">add_postamble (Erubis::CGenerator)</a><br />
69
62
  <a href="classes/Erubis/SchemeGenerator.html#M000028">add_postamble (Erubis::SchemeGenerator)</a><br />
70
- <a href="classes/Erubis/JavaGenerator.html#M000140">add_postamble (Erubis::JavaGenerator)</a><br />
63
+ <a href="classes/Erubis/JavascriptGenerator.html#M000135">add_postamble (Erubis::JavascriptGenerator)</a><br />
64
+ <a href="classes/Erubis/PerlGenerator.html#M000068">add_postamble (Erubis::PerlGenerator)</a><br />
65
+ <a href="classes/Erubis/NoCodeEnhancer.html#M000002">add_postamble (Erubis::NoCodeEnhancer)</a><br />
66
+ <a href="classes/Erubis/StdoutEnhancer.html#M000059">add_postamble (Erubis::StdoutEnhancer)</a><br />
71
67
  <a href="classes/Erubis/ArrayBufferEnhancer.html#M000007">add_postamble (Erubis::ArrayBufferEnhancer)</a><br />
72
- <a href="classes/Erubis/PrintOutEnhancer.html#M000084">add_postamble (Erubis::PrintOutEnhancer)</a><br />
73
- <a href="classes/Erubis/OptimizedGenerator.html#M000097">add_postamble (Erubis::OptimizedGenerator)</a><br />
74
- <a href="classes/Erubis/StringBufferEnhancer.html#M000159">add_postamble (Erubis::StringBufferEnhancer)</a><br />
75
- <a href="classes/Erubis/ArrayEnhancer.html#M000155">add_postamble (Erubis::ArrayEnhancer)</a><br />
68
+ <a href="classes/Erubis/JavaGenerator.html#M000144">add_postamble (Erubis::JavaGenerator)</a><br />
69
+ <a href="classes/Erubis/PrintOutEnhancer.html#M000088">add_postamble (Erubis::PrintOutEnhancer)</a><br />
70
+ <a href="classes/Erubis/OptimizedGenerator.html#M000101">add_postamble (Erubis::OptimizedGenerator)</a><br />
71
+ <a href="classes/Erubis/StringBufferEnhancer.html#M000152">add_postamble (Erubis::StringBufferEnhancer)</a><br />
72
+ <a href="classes/Erubis/ArrayEnhancer.html#M000148">add_postamble (Erubis::ArrayEnhancer)</a><br />
76
73
  <a href="classes/Erubis/Generator.html#M000011">add_preamble (Erubis::Generator)</a><br />
77
- <a href="classes/Erubis/OptimizedGenerator.html#M000091">add_preamble (Erubis::OptimizedGenerator)</a><br />
78
- <a href="classes/Erubis/StringBufferEnhancer.html#M000158">add_preamble (Erubis::StringBufferEnhancer)</a><br />
79
- <a href="classes/Erubis/ArrayEnhancer.html#M000154">add_preamble (Erubis::ArrayEnhancer)</a><br />
80
- <a href="classes/Erubis/PhpGenerator.html#M000099">add_preamble (Erubis::PhpGenerator)</a><br />
74
+ <a href="classes/Erubis/OptimizedGenerator.html#M000095">add_preamble (Erubis::OptimizedGenerator)</a><br />
75
+ <a href="classes/Erubis/StringBufferEnhancer.html#M000151">add_preamble (Erubis::StringBufferEnhancer)</a><br />
76
+ <a href="classes/Erubis/ArrayEnhancer.html#M000147">add_preamble (Erubis::ArrayEnhancer)</a><br />
77
+ <a href="classes/Erubis/PhpGenerator.html#M000103">add_preamble (Erubis::PhpGenerator)</a><br />
81
78
  <a href="classes/Erubis/SchemeGenerator.html#M000020">add_preamble (Erubis::SchemeGenerator)</a><br />
82
79
  <a href="classes/Erubis/ArrayBufferEnhancer.html#M000006">add_preamble (Erubis::ArrayBufferEnhancer)</a><br />
83
- <a href="classes/Erubis/StdoutEnhancer.html#M000061">add_preamble (Erubis::StdoutEnhancer)</a><br />
84
- <a href="classes/Erubis/JavaGenerator.html#M000133">add_preamble (Erubis::JavaGenerator)</a><br />
85
- <a href="classes/Erubis/PrintOutEnhancer.html#M000080">add_preamble (Erubis::PrintOutEnhancer)</a><br />
86
- <a href="classes/Erubis/PerlGenerator.html#M000064">add_preamble (Erubis::PerlGenerator)</a><br />
87
- <a href="classes/Erubis/CGenerator.html#M000108">add_preamble (Erubis::CGenerator)</a><br />
88
- <a href="classes/Erubis/JavascriptGenerator.html#M000123">add_preamble (Erubis::JavascriptGenerator)</a><br />
89
- <a href="classes/Erubis/PrintEnabledEnhancer.html#M000119">add_preamble (Erubis::PrintEnabledEnhancer)</a><br />
80
+ <a href="classes/Erubis/StdoutEnhancer.html#M000058">add_preamble (Erubis::StdoutEnhancer)</a><br />
81
+ <a href="classes/Erubis/JavaGenerator.html#M000137">add_preamble (Erubis::JavaGenerator)</a><br />
82
+ <a href="classes/Erubis/PrintOutEnhancer.html#M000084">add_preamble (Erubis::PrintOutEnhancer)</a><br />
83
+ <a href="classes/Erubis/PerlGenerator.html#M000061">add_preamble (Erubis::PerlGenerator)</a><br />
84
+ <a href="classes/Erubis/CGenerator.html#M000112">add_preamble (Erubis::CGenerator)</a><br />
85
+ <a href="classes/Erubis/PrintEnabledEnhancer.html#M000123">add_preamble (Erubis::PrintEnabledEnhancer)</a><br />
86
+ <a href="classes/Erubis/JavascriptGenerator.html#M000127">add_preamble (Erubis::JavascriptGenerator)</a><br />
90
87
  <a href="classes/Erubis/NoCodeEnhancer.html#M000001">add_preamble (Erubis::NoCodeEnhancer)</a><br />
91
- <a href="classes/Erubis/PerlGenerator.html#M000070">add_stmt (Erubis::PerlGenerator)</a><br />
92
- <a href="classes/Erubis/OptimizedGenerator.html#M000093">add_stmt (Erubis::OptimizedGenerator)</a><br />
88
+ <a href="classes/Erubis/OptimizedGenerator.html#M000097">add_stmt (Erubis::OptimizedGenerator)</a><br />
89
+ <a href="classes/Erubis/PerlGenerator.html#M000067">add_stmt (Erubis::PerlGenerator)</a><br />
90
+ <a href="classes/Erubis/PhpGenerator.html#M000109">add_stmt (Erubis::PhpGenerator)</a><br />
91
+ <a href="classes/Erubis/NoCodeEnhancer.html#M000005">add_stmt (Erubis::NoCodeEnhancer)</a><br />
92
+ <a href="classes/Erubis/CGenerator.html#M000116">add_stmt (Erubis::CGenerator)</a><br />
93
+ <a href="classes/Erubis/RubyGenerator.html#M000033">add_stmt (Erubis::RubyGenerator)</a><br />
93
94
  <a href="classes/Erubis/SchemeGenerator.html#M000024">add_stmt (Erubis::SchemeGenerator)</a><br />
94
95
  <a href="classes/Erubis/Generator.html#M000013">add_stmt (Erubis::Generator)</a><br />
95
- <a href="classes/Erubis/JavascriptGenerator.html#M000127">add_stmt (Erubis::JavascriptGenerator)</a><br />
96
- <a href="classes/Erubis/RubyGenerator.html#M000033">add_stmt (Erubis::RubyGenerator)</a><br />
97
- <a href="classes/Erubis/NoCodeEnhancer.html#M000005">add_stmt (Erubis::NoCodeEnhancer)</a><br />
98
- <a href="classes/Erubis/CGenerator.html#M000112">add_stmt (Erubis::CGenerator)</a><br />
99
- <a href="classes/Erubis/JavaGenerator.html#M000136">add_stmt (Erubis::JavaGenerator)</a><br />
100
- <a href="classes/Erubis/PhpGenerator.html#M000105">add_stmt (Erubis::PhpGenerator)</a><br />
101
- <a href="classes/Erubis/PrintOutEnhancer.html#M000081">add_text (Erubis::PrintOutEnhancer)</a><br />
102
- <a href="classes/Erubis/HeaderFooterEnhancer.html#M000078">add_text (Erubis::HeaderFooterEnhancer)</a><br />
96
+ <a href="classes/Erubis/JavaGenerator.html#M000140">add_stmt (Erubis::JavaGenerator)</a><br />
97
+ <a href="classes/Erubis/JavascriptGenerator.html#M000131">add_stmt (Erubis::JavascriptGenerator)</a><br />
98
+ <a href="classes/Erubis/SchemeGenerator.html#M000023">add_text (Erubis::SchemeGenerator)</a><br />
99
+ <a href="classes/Erubis/JavaGenerator.html#M000139">add_text (Erubis::JavaGenerator)</a><br />
100
+ <a href="classes/Erubis/PercentLineEnhancer.html#M000145">add_text (Erubis::PercentLineEnhancer)</a><br />
103
101
  <a href="classes/Erubis/RubyGenerator.html#M000032">add_text (Erubis::RubyGenerator)</a><br />
104
- <a href="classes/Erubis/JavaGenerator.html#M000135">add_text (Erubis::JavaGenerator)</a><br />
102
+ <a href="classes/Erubis/NoTextEnhancer.html#M000146">add_text (Erubis::NoTextEnhancer)</a><br />
103
+ <a href="classes/Erubis/BiPatternEnhancer.html#M000122">add_text (Erubis::BiPatternEnhancer)</a><br />
104
+ <a href="classes/Erubis/HeaderFooterEnhancer.html#M000082">add_text (Erubis::HeaderFooterEnhancer)</a><br />
105
+ <a href="classes/Erubis/OptimizedGenerator.html#M000096">add_text (Erubis::OptimizedGenerator)</a><br />
105
106
  <a href="classes/Erubis/Generator.html#M000012">add_text (Erubis::Generator)</a><br />
106
- <a href="classes/Erubis/NoTextEnhancer.html#M000153">add_text (Erubis::NoTextEnhancer)</a><br />
107
- <a href="classes/Erubis/CGenerator.html#M000111">add_text (Erubis::CGenerator)</a><br />
108
- <a href="classes/Erubis/PercentLineEnhancer.html#M000152">add_text (Erubis::PercentLineEnhancer)</a><br />
109
- <a href="classes/Erubis/PhpGenerator.html#M000101">add_text (Erubis::PhpGenerator)</a><br />
107
+ <a href="classes/Erubis/PrintOutEnhancer.html#M000085">add_text (Erubis::PrintOutEnhancer)</a><br />
108
+ <a href="classes/Erubis/CGenerator.html#M000115">add_text (Erubis::CGenerator)</a><br />
110
109
  <a href="classes/Erubis/NoCodeEnhancer.html#M000003">add_text (Erubis::NoCodeEnhancer)</a><br />
111
- <a href="classes/Erubis/JavascriptGenerator.html#M000126">add_text (Erubis::JavascriptGenerator)</a><br />
112
- <a href="classes/Erubis/SchemeGenerator.html#M000023">add_text (Erubis::SchemeGenerator)</a><br />
113
- <a href="classes/Erubis/PerlGenerator.html#M000066">add_text (Erubis::PerlGenerator)</a><br />
114
- <a href="classes/Erubis/OptimizedGenerator.html#M000092">add_text (Erubis::OptimizedGenerator)</a><br />
115
- <a href="classes/Erubis/BiPatternEnhancer.html#M000118">add_text (Erubis::BiPatternEnhancer)</a><br />
116
- <a href="classes/Erubis/PI/TinyEruby.html#M000046">convert (Erubis::PI::TinyEruby)</a><br />
110
+ <a href="classes/Erubis/PhpGenerator.html#M000105">add_text (Erubis::PhpGenerator)</a><br />
111
+ <a href="classes/Erubis/PerlGenerator.html#M000063">add_text (Erubis::PerlGenerator)</a><br />
112
+ <a href="classes/Erubis/JavascriptGenerator.html#M000130">add_text (Erubis::JavascriptGenerator)</a><br />
117
113
  <a href="classes/Erubis/PI/Converter.html#M000038">convert (Erubis::PI::Converter)</a><br />
118
- <a href="classes/Erubis/TinyEruby.html#M000161">convert (Erubis::TinyEruby)</a><br />
119
- <a href="classes/Erubis/Converter.html#M000073">convert (Erubis::Converter)</a><br />
120
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000148">convert (Erubis::Helper::RailsTemplate)</a><br />
121
- <a href="classes/Erubis/HeaderFooterEnhancer.html#M000079">convert (Erubis::HeaderFooterEnhancer)</a><br />
114
+ <a href="classes/Erubis/HeaderFooterEnhancer.html#M000083">convert (Erubis::HeaderFooterEnhancer)</a><br />
115
+ <a href="classes/Erubis/PI/TinyEruby.html#M000044">convert (Erubis::PI::TinyEruby)</a><br />
116
+ <a href="classes/Erubis/Converter.html#M000070">convert (Erubis::Converter)</a><br />
122
117
  <a href="classes/Erubis/SimplifyEnhancer.html#M000018">convert (Erubis::SimplifyEnhancer)</a><br />
123
- <a href="classes/Erubis/Engine.html#M000165">convert! (Erubis::Engine)</a><br />
124
- <a href="classes/Erubis/Converter.html#M000074">convert_input (Erubis::Converter)</a><br />
125
- <a href="classes/Erubis/Basic/Converter.html#M000056">convert_input (Erubis::Basic::Converter)</a><br />
118
+ <a href="classes/Erubis/TinyEruby.html#M000154">convert (Erubis::TinyEruby)</a><br />
119
+ <a href="classes/Erubis/Engine.html#M000158">convert! (Erubis::Engine)</a><br />
120
+ <a href="classes/Erubis/Converter.html#M000072">convert_input (Erubis::Converter)</a><br />
121
+ <a href="classes/Erubis/Basic/Converter.html#M000053">convert_input (Erubis::Basic::Converter)</a><br />
126
122
  <a href="classes/Erubis/PI/Converter.html#M000039">convert_input (Erubis::PI::Converter)</a><br />
127
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000145">default_properties (Erubis::Helper::RailsTemplate)</a><br />
128
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000146">default_properties= (Erubis::Helper::RailsTemplate)</a><br />
129
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000143">engine_class (Erubis::Helper::RailsTemplate)</a><br />
130
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000144">engine_class= (Erubis::Helper::RailsTemplate)</a><br />
131
- <a href="classes/Erubis/OptimizedGenerator.html#M000087">escape_text (Erubis::OptimizedGenerator)</a><br />
132
- <a href="classes/Erubis/Generator.html#M000009">escape_text (Erubis::Generator)</a><br />
133
- <a href="classes/Erubis/TinyEruby.html#M000162">escape_text (Erubis::TinyEruby)</a><br />
134
- <a href="classes/Erubis/CGenerator.html#M000109">escape_text (Erubis::CGenerator)</a><br />
135
- <a href="classes/Erubis/PhpGenerator.html#M000100">escape_text (Erubis::PhpGenerator)</a><br />
123
+ <a href="classes/Erubis/Converter.html#M000071">detect_spaces_at_bol (Erubis::Converter)</a><br />
124
+ <a href="classes/Erubis/Context.html#M000170">each (Erubis::Context)</a><br />
125
+ <a href="classes/Erubis/Helpers/RailsHelper.html#M000073">engine_class (Erubis::Helpers::RailsHelper)</a><br />
126
+ <a href="classes/Erubis/Helpers/RailsHelper.html#M000074">engine_class= (Erubis::Helpers::RailsHelper)</a><br />
127
+ <a href="classes/Erubis/PerlGenerator.html#M000062">escape_text (Erubis::PerlGenerator)</a><br />
128
+ <a href="classes/Erubis/PhpGenerator.html#M000104">escape_text (Erubis::PhpGenerator)</a><br />
129
+ <a href="classes/Erubis/CGenerator.html#M000113">escape_text (Erubis::CGenerator)</a><br />
136
130
  <a href="classes/Erubis/SchemeGenerator.html#M000021">escape_text (Erubis::SchemeGenerator)</a><br />
137
- <a href="classes/Erubis/PerlGenerator.html#M000065">escape_text (Erubis::PerlGenerator)</a><br />
138
131
  <a href="classes/Erubis/RubyGenerator.html#M000030">escape_text (Erubis::RubyGenerator)</a><br />
139
- <a href="classes/Erubis/JavaGenerator.html#M000134">escape_text (Erubis::JavaGenerator)</a><br />
140
- <a href="classes/Erubis/PI/TinyEruby.html#M000047">escape_text (Erubis::PI::TinyEruby)</a><br />
141
- <a href="classes/Erubis/JavascriptGenerator.html#M000124">escape_text (Erubis::JavascriptGenerator)</a><br />
142
- <a href="classes/Erubis/XmlHelper.html#M000075">escape_xml (Erubis::XmlHelper)</a><br />
143
- <a href="classes/Erubis/Generator.html#M000010">escaped_expr (Erubis::Generator)</a><br />
132
+ <a href="classes/Erubis/JavascriptGenerator.html#M000128">escape_text (Erubis::JavascriptGenerator)</a><br />
133
+ <a href="classes/Erubis/Generator.html#M000009">escape_text (Erubis::Generator)</a><br />
134
+ <a href="classes/Erubis/JavaGenerator.html#M000138">escape_text (Erubis::JavaGenerator)</a><br />
135
+ <a href="classes/Erubis/OptimizedGenerator.html#M000091">escape_text (Erubis::OptimizedGenerator)</a><br />
136
+ <a href="classes/Erubis/XmlHelper.html#M000079">escape_xml (Erubis::XmlHelper)</a><br />
144
137
  <a href="classes/Erubis/SchemeGenerator.html#M000022">escaped_expr (Erubis::SchemeGenerator)</a><br />
145
- <a href="classes/Erubis/CGenerator.html#M000110">escaped_expr (Erubis::CGenerator)</a><br />
138
+ <a href="classes/Erubis/OptimizedGenerator.html#M000092">escaped_expr (Erubis::OptimizedGenerator)</a><br />
139
+ <a href="classes/Erubis/CGenerator.html#M000114">escaped_expr (Erubis::CGenerator)</a><br />
140
+ <a href="classes/Erubis/Generator.html#M000010">escaped_expr (Erubis::Generator)</a><br />
146
141
  <a href="classes/Erubis/RubyGenerator.html#M000031">escaped_expr (Erubis::RubyGenerator)</a><br />
147
- <a href="classes/Erubis/OptimizedGenerator.html#M000088">escaped_expr (Erubis::OptimizedGenerator)</a><br />
148
- <a href="classes/Erubis/PI/TinyEruby.html#M000049">evaluate (Erubis::PI::TinyEruby)</a><br />
149
- <a href="classes/Erubis/PrintEnabledEnhancer.html#M000121">evaluate (Erubis::PrintEnabledEnhancer)</a><br />
150
- <a href="classes/Erubis/RubyEvaluator.html#M000157">evaluate (Erubis::RubyEvaluator)</a><br />
151
- <a href="classes/Erubis/Evaluator.html#M000060">evaluate (Erubis::Evaluator)</a><br />
152
- <a href="classes/Erubis/TinyEruby.html#M000164">evaluate (Erubis::TinyEruby)</a><br />
153
- <a href="classes/Erubis/Main.html#M000173">execute (Erubis::Main)</a><br />
154
- <a href="classes/Erubis/XmlHelper.html#M000076">h (Erubis::XmlHelper)</a><br />
155
- <a href="classes/Erubis/XmlHelper.html#M000077">html_escape (Erubis::XmlHelper)</a><br />
156
- <a href="classes/Erubis/OptimizedEruby.html#M000170">init_converter (Erubis::OptimizedEruby)</a><br />
157
- <a href="classes/Erubis/PI/Ephp.html#M000044">init_converter (Erubis::PI::Ephp)</a><br />
142
+ <a href="classes/Erubis/RubyEvaluator.html#M000150">evaluate (Erubis::RubyEvaluator)</a><br />
143
+ <a href="classes/Erubis/Evaluator.html#M000057">evaluate (Erubis::Evaluator)</a><br />
144
+ <a href="classes/Erubis/PrintEnabledEnhancer.html#M000125">evaluate (Erubis::PrintEnabledEnhancer)</a><br />
145
+ <a href="classes/Erubis/TinyEruby.html#M000156">evaluate (Erubis::TinyEruby)</a><br />
146
+ <a href="classes/Erubis/PI/TinyEruby.html#M000046">evaluate (Erubis::PI::TinyEruby)</a><br />
147
+ <a href="classes/Erubis/Main.html#M000165">execute (Erubis::Main)</a><br />
148
+ <a href="classes/Erubis/XmlHelper.html#M000080">h (Erubis::XmlHelper)</a><br />
149
+ <a href="classes/Erubis/XmlHelper.html#M000081">html_escape (Erubis::XmlHelper)</a><br />
150
+ <a href="classes/Erubis/PI/Ejavascript.html#M000040">init_converter (Erubis::PI::Ejavascript)</a><br />
158
151
  <a href="classes/Erubis/PI/Converter.html#M000037">init_converter (Erubis::PI::Converter)</a><br />
159
- <a href="classes/Erubis/PI/Eperl.html#M000050">init_converter (Erubis::PI::Eperl)</a><br />
160
- <a href="classes/Erubis/PI/Ejava.html#M000043">init_converter (Erubis::PI::Ejava)</a><br />
161
- <a href="classes/Erubis/PI/Ejavascript.html#M000042">init_converter (Erubis::PI::Ejavascript)</a><br />
162
- <a href="classes/Erubis/PI/Ec.html#M000051">init_converter (Erubis::PI::Ec)</a><br />
163
- <a href="classes/Erubis/Converter.html#M000072">init_converter (Erubis::Converter)</a><br />
164
- <a href="classes/Erubis/Basic/Converter.html#M000054">init_converter (Erubis::Basic::Converter)</a><br />
165
- <a href="classes/Erubis/PI/Eruby.html#M000052">init_converter (Erubis::PI::Eruby)</a><br />
166
- <a href="classes/Erubis/PI/Escheme.html#M000053">init_converter (Erubis::PI::Escheme)</a><br />
167
- <a href="classes/Erubis/Evaluator.html#M000058">init_evaluator (Erubis::Evaluator)</a><br />
168
- <a href="classes/Erubis/CGenerator.html#M000107">init_generator (Erubis::CGenerator)</a><br />
152
+ <a href="classes/Erubis/Converter.html#M000069">init_converter (Erubis::Converter)</a><br />
153
+ <a href="classes/Erubis/PI/Ephp.html#M000042">init_converter (Erubis::PI::Ephp)</a><br />
154
+ <a href="classes/Erubis/Basic/Converter.html#M000051">init_converter (Erubis::Basic::Converter)</a><br />
155
+ <a href="classes/Erubis/PI/Escheme.html#M000050">init_converter (Erubis::PI::Escheme)</a><br />
156
+ <a href="classes/Erubis/OptimizedEruby.html#M000162">init_converter (Erubis::OptimizedEruby)</a><br />
157
+ <a href="classes/Erubis/PI/Ec.html#M000048">init_converter (Erubis::PI::Ec)</a><br />
158
+ <a href="classes/Erubis/PI/Eperl.html#M000047">init_converter (Erubis::PI::Eperl)</a><br />
159
+ <a href="classes/Erubis/PI/Ejava.html#M000041">init_converter (Erubis::PI::Ejava)</a><br />
160
+ <a href="classes/Erubis/PI/Eruby.html#M000049">init_converter (Erubis::PI::Eruby)</a><br />
161
+ <a href="classes/Erubis/Evaluator.html#M000055">init_evaluator (Erubis::Evaluator)</a><br />
162
+ <a href="classes/Erubis/PhpGenerator.html#M000102">init_generator (Erubis::PhpGenerator)</a><br />
169
163
  <a href="classes/Erubis/Generator.html#M000008">init_generator (Erubis::Generator)</a><br />
170
- <a href="classes/Erubis/PhpGenerator.html#M000098">init_generator (Erubis::PhpGenerator)</a><br />
171
- <a href="classes/Erubis/PerlGenerator.html#M000063">init_generator (Erubis::PerlGenerator)</a><br />
172
- <a href="classes/Erubis/JavascriptGenerator.html#M000122">init_generator (Erubis::JavascriptGenerator)</a><br />
173
- <a href="classes/Erubis/JavaGenerator.html#M000132">init_generator (Erubis::JavaGenerator)</a><br />
174
- <a href="classes/Erubis/OptimizedGenerator.html#M000086">init_generator (Erubis::OptimizedGenerator)</a><br />
175
164
  <a href="classes/Erubis/SchemeGenerator.html#M000019">init_generator (Erubis::SchemeGenerator)</a><br />
165
+ <a href="classes/Erubis/JavaGenerator.html#M000136">init_generator (Erubis::JavaGenerator)</a><br />
166
+ <a href="classes/Erubis/OptimizedGenerator.html#M000090">init_generator (Erubis::OptimizedGenerator)</a><br />
167
+ <a href="classes/Erubis/JavascriptGenerator.html#M000126">init_generator (Erubis::JavascriptGenerator)</a><br />
168
+ <a href="classes/Erubis/PerlGenerator.html#M000060">init_generator (Erubis::PerlGenerator)</a><br />
169
+ <a href="classes/Erubis/CGenerator.html#M000111">init_generator (Erubis::CGenerator)</a><br />
176
170
  <a href="classes/Erubis/RubyGenerator.html#M000029">init_generator (Erubis::RubyGenerator)</a><br />
177
- <a href="classes/Erubis/Context.html#M000177">keys (Erubis::Context)</a><br />
178
- <a href="classes/Erubis/Engine.html#M000167">load_file (Erubis::Engine)</a><br />
179
- <a href="classes/Erubis/Main.html#M000171">main (Erubis::Main)</a><br />
180
- <a href="classes/Erubis/TinyEruby.html#M000160">new (Erubis::TinyEruby)</a><br />
181
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000147">new (Erubis::Helper::RailsTemplate)</a><br />
182
- <a href="classes/Erubis/Context.html#M000174">new (Erubis::Context)</a><br />
183
- <a href="classes/Erubis/Engine.html#M000166">new (Erubis::Engine)</a><br />
184
- <a href="classes/Erubis/BiPatternEnhancer.html#M000117">new (Erubis::BiPatternEnhancer)</a><br />
185
- <a href="classes/Erubis/Main.html#M000172">new (Erubis::Main)</a><br />
186
- <a href="classes/Erubis/PI/TinyEruby.html#M000045">new (Erubis::PI::TinyEruby)</a><br />
187
- <a href="classes/Erubis/PI/Converter.html#M000041">parse_exprs (Erubis::PI::Converter)</a><br />
188
- <a href="classes/Erubis/PI/Converter.html#M000040">parse_stmts (Erubis::PI::Converter)</a><br />
189
- <a href="classes/Erubis/Basic/Converter.html#M000055">pattern_regexp (Erubis::Basic::Converter)</a><br />
190
- <a href="classes/Erubis/PrintEnabledEnhancer.html#M000120">print (Erubis::PrintEnabledEnhancer)</a><br />
191
- <a href="classes/Erubis/Engine.html#M000168">process (Erubis::Engine)</a><br />
192
- <a href="classes/Erubis/Engine.html#M000169">process_proc (Erubis::Engine)</a><br />
193
- <a href="classes/Erubis/Helper/CachedRailsTemplate.html#M000141">render (Erubis::Helper::CachedRailsTemplate)</a><br />
194
- <a href="classes/Erubis/Helper/RailsTemplate.html#M000149">render (Erubis::Helper::RailsTemplate)</a><br />
195
- <a href="classes/Erubis/Evaluator.html#M000059">result (Erubis::Evaluator)</a><br />
196
- <a href="classes/Erubis/RubyEvaluator.html#M000156">result (Erubis::RubyEvaluator)</a><br />
197
- <a href="classes/Erubis/PI/TinyEruby.html#M000048">result (Erubis::PI::TinyEruby)</a><br />
198
- <a href="classes/Erubis/TinyEruby.html#M000163">result (Erubis::TinyEruby)</a><br />
199
- <a href="classes/Erubis/OptimizedGenerator.html#M000089">switch_to_expr (Erubis::OptimizedGenerator)</a><br />
200
- <a href="classes/Erubis/OptimizedGenerator.html#M000090">switch_to_stmt (Erubis::OptimizedGenerator)</a><br />
171
+ <a href="classes/Erubis/Helpers/RailsHelper.html#M000075">init_properties (Erubis::Helpers::RailsHelper)</a><br />
172
+ <a href="classes/Erubis/Helpers/RailsHelper.html#M000076">init_properties= (Erubis::Helpers::RailsHelper)</a><br />
173
+ <a href="classes/Erubis/Context.html#M000169">keys (Erubis::Context)</a><br />
174
+ <a href="classes/Erubis/Engine.html#M000159">load_file (Erubis::Engine)</a><br />
175
+ <a href="classes/Erubis/Main.html#M000163">main (Erubis::Main)</a><br />
176
+ <a href="classes/Erubis/BiPatternEnhancer.html#M000121">new (Erubis::BiPatternEnhancer)</a><br />
177
+ <a href="classes/Erubis/Main.html#M000164">new (Erubis::Main)</a><br />
178
+ <a href="classes/Erubis/TinyEruby.html#M000153">new (Erubis::TinyEruby)</a><br />
179
+ <a href="classes/Erubis/PI/TinyEruby.html#M000043">new (Erubis::PI::TinyEruby)</a><br />
180
+ <a href="classes/Erubis/Context.html#M000166">new (Erubis::Context)</a><br />
181
+ <a href="classes/Erubis/Engine.html#M000157">new (Erubis::Engine)</a><br />
182
+ <a href="classes/Erubis/Basic/Converter.html#M000052">pattern_regexp (Erubis::Basic::Converter)</a><br />
183
+ <a href="classes/Erubis/PrintEnabledEnhancer.html#M000124">print (Erubis::PrintEnabledEnhancer)</a><br />
184
+ <a href="classes/Erubis/Engine.html#M000160">process (Erubis::Engine)</a><br />
185
+ <a href="classes/Erubis/Engine.html#M000161">process_proc (Erubis::Engine)</a><br />
186
+ <a href="classes/Erubis/RubyEvaluator.html#M000149">result (Erubis::RubyEvaluator)</a><br />
187
+ <a href="classes/Erubis/PI/TinyEruby.html#M000045">result (Erubis::PI::TinyEruby)</a><br />
188
+ <a href="classes/Erubis/TinyEruby.html#M000155">result (Erubis::TinyEruby)</a><br />
189
+ <a href="classes/Erubis/Evaluator.html#M000056">result (Erubis::Evaluator)</a><br />
190
+ <a href="classes/Erubis/Helpers/RailsHelper.html#M000077">show_src (Erubis::Helpers::RailsHelper)</a><br />
191
+ <a href="classes/Erubis/Helpers/RailsHelper.html#M000078">show_src= (Erubis::Helpers::RailsHelper)</a><br />
192
+ <a href="classes/Erubis/OptimizedGenerator.html#M000093">switch_to_expr (Erubis::OptimizedGenerator)</a><br />
193
+ <a href="classes/Erubis/OptimizedGenerator.html#M000094">switch_to_stmt (Erubis::OptimizedGenerator)</a><br />
194
+ <a href="classes/Erubis/Context.html#M000171">to_hash (Erubis::Context)</a><br />
195
+ <a href="classes/Erubis/Context.html#M000172">update (Erubis::Context)</a><br />
201
196
  </div>
202
197
  </div>
203
198
  </body>
@@ -19,6 +19,6 @@
19
19
  <frame src="fr_class_index.html" name="Classes" />
20
20
  <frame src="fr_method_index.html" name="Methods" />
21
21
  </frameset>
22
- <frame src="files/__/README_txt.html" name="docwin" />
22
+ <frame src="files/README_txt.html" name="docwin" />
23
23
  </frameset>
24
24
  </html>
@@ -14,16 +14,20 @@
14
14
 
15
15
  <div align="left"><h1>Erubis Users' Guide</h1></div>
16
16
  <div align="left">
17
- last update: $Date: 2006-09-24 21:01:00 +0900 (Sun, 24 Sep 2006) $<br>
17
+ last update: $Date: 2007-02-12 13:08:37 +0900 (Mon, 12 Feb 2007) $<br>
18
18
  </div>
19
19
 
20
+ <p>release: 2.2.0
21
+ </p>
20
22
  <a name="preface"></a>
21
23
  <h2 class="section1">Preface</h2>
22
24
  <p>Erubis is an implementation of eRuby.
23
25
  It has the following features.
24
26
  </p>
25
27
  <ul type="disc">
26
- <li>Very fast, almost three times faster than ERB and even faster than eruby (implemented in C)
28
+ <li>Very fast, almost 3 times faster than ERB and about 10 percent faster than eruby (implemented in C)
29
+ </li>
30
+ <li>File caching of converted Ruby script support
27
31
  </li>
28
32
  <li>Auto escaping support
29
33
  </li>
@@ -41,7 +45,7 @@ It has the following features.
41
45
  </li>
42
46
  <li>Easy to expand and customize in subclass
43
47
  </li>
44
- <li>Ruby on Rails support
48
+ <li><a href="#topics-rails">Ruby on Rails support</a>
45
49
  </li>
46
50
  </ul>
47
51
  <p>Erubis is implemented in pure Ruby. It requires Ruby 1.8 or higher.
@@ -71,6 +75,8 @@ It has the following features.
71
75
  </li>
72
76
  <li><a href="#tut-datafile">Context Data File</a>
73
77
  </li>
78
+ <li><a href="#tut-datastr">Context Data String</a>
79
+ </li>
74
80
  <li><a href="#tut-preamble">Preamble and Postamble</a>
75
81
  </li>
76
82
  <li><a href="#tut-pi">Processing Instruction (PI) Converter</a>
@@ -125,7 +131,11 @@ It has the following features.
125
131
  </li>
126
132
  <li><a href="#topics">Other Topics</a>
127
133
  <ul>
128
- <li><a href="#topics-tinyeruby">TinyEruby class</a>
134
+ <li><a href="#topics-syntax">Syntax Checking</a>
135
+ </li>
136
+ <li><a href="#topics-caching">File Caching</a>
137
+ </li>
138
+ <li><a href="#topics-tinyeruby">Erubis::TinyEruby class</a>
129
139
  </li>
130
140
  <li><a href="#topics-rails">Ruby on Rails Support</a>
131
141
  </li>
@@ -227,14 +237,14 @@ puts <strong>eruby.result(binding())</strong> # get result
227
237
  output</div>
228
238
  <pre class="terminal">$ ruby example1.rb
229
239
  ---------- script source ---
230
- _buf = []; _buf &lt;&lt; '&lt;ul&gt;
240
+ _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
231
241
  '; for item in list
232
242
  _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/li&gt;
233
243
  '; end
234
244
 
235
245
  _buf &lt;&lt; '&lt;/ul&gt;
236
246
  ';
237
- _buf.join
247
+ _buf.to_s
238
248
  ---------- result ----------
239
249
  &lt;ul&gt;
240
250
  &lt;li&gt;aaa&lt;/li&gt;
@@ -247,14 +257,14 @@ _buf.join
247
257
  <div class="terminal_caption">
248
258
  example of command-line option '-x'</div>
249
259
  <pre class="terminal">$ erubis <strong>-x</strong> example1.eruby
250
- _buf = []; _buf &lt;&lt; '&lt;ul&gt;
260
+ _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
251
261
  '; for item in list
252
262
  _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/li&gt;
253
263
  '; end
254
264
 
255
265
  _buf &lt;&lt; '&lt;/ul&gt;
256
266
  ';
257
- _buf.join
267
+ _buf.to_s
258
268
  </pre>
259
269
  <br>
260
270
 
@@ -277,30 +287,30 @@ example2.eruby</div>
277
287
  <div class="terminal_caption">
278
288
  compiled source code</div>
279
289
  <pre class="terminal">$ erubis -x example2.eruby
280
- _buf = []; _buf &lt;&lt; '&lt;ul&gt;
290
+ _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
281
291
  '; for item in list
282
292
  _buf &lt;&lt; ' &lt;li&gt;
283
- '; _buf &lt;&lt; ' '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
293
+ '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
284
294
  '; _buf &lt;&lt; ' &lt;/li&gt;
285
295
  '; end
286
296
  _buf &lt;&lt; '&lt;/ul&gt;
287
297
  ';
288
- _buf.join
298
+ _buf.to_s
289
299
  </pre>
290
- <p>If you want leave spaces around '&lt;% %&gt;', add command-line option '-T'.
300
+ <p>If you want leave spaces around '&lt;% %&gt;', add command-line property '--trim=false'.
291
301
  </p>
292
302
  <div class="terminal_caption">
293
- compiled source code with command-line option '-T'</div>
294
- <pre class="terminal">$ erubis -x <strong>-T</strong> example2.eruby
295
- _buf = []; _buf &lt;&lt; '&lt;ul&gt;
303
+ compiled source code with command-line property '--trim=false'</div>
304
+ <pre class="terminal">$ erubis -x <strong>--trim=false</strong> example2.eruby
305
+ _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
296
306
  '; _buf &lt;&lt; ' '; for item in list ; _buf &lt;&lt; '
297
307
  '; _buf &lt;&lt; ' &lt;li&gt;
298
- '; _buf &lt;&lt; ' '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
308
+ '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
299
309
  '; _buf &lt;&lt; ' &lt;/li&gt;
300
310
  '; _buf &lt;&lt; ' '; end ; _buf &lt;&lt; '
301
311
  '; _buf &lt;&lt; '&lt;/ul&gt;
302
312
  ';
303
- _buf.join
313
+ _buf.to_s
304
314
  </pre>
305
315
  <p>Or add option <code>:trim=&gt;false</code> to Erubis::Eruby.new().
306
316
  </p>
@@ -322,15 +332,15 @@ puts eruby.result(binding()) # get result
322
332
  output</div>
323
333
  <pre class="terminal">$ ruby example2.rb
324
334
  ---------- script source ---
325
- _buf = []; _buf &lt;&lt; '&lt;ul&gt;
335
+ _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
326
336
  '; _buf &lt;&lt; ' '; for item in list ; _buf &lt;&lt; '
327
337
  '; _buf &lt;&lt; ' &lt;li&gt;
328
- '; _buf &lt;&lt; ' '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
338
+ '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
329
339
  '; _buf &lt;&lt; ' &lt;/li&gt;
330
340
  '; _buf &lt;&lt; ' '; end ; _buf &lt;&lt; '
331
341
  '; _buf &lt;&lt; '&lt;/ul&gt;
332
342
  ';
333
- _buf.join
343
+ _buf.to_s
334
344
  ---------- result ----------
335
345
  &lt;ul&gt;
336
346
 
@@ -353,7 +363,7 @@ _buf.join
353
363
 
354
364
  <a name="tut-escape"></a>
355
365
  <h3 class="section2">Escape</h3>
356
- <p>Erubis have ability to escape (sanitize) expression.
366
+ <p>Erubis has ability to escape (sanitize) expression.
357
367
  Erubis::Eruby class act as the following:
358
368
  </p>
359
369
  <ul type="disc">
@@ -398,13 +408,13 @@ puts eruby.result(binding()) # get result
398
408
  output</div>
399
409
  <pre class="terminal">$ ruby example3.rb 2&gt; stderr.log
400
410
  ---------- script source ---
401
- _buf = []; for item in list
411
+ _buf = ''; for item in list
402
412
  _buf &lt;&lt; ' &lt;p&gt;'; <strong>_buf &lt;&lt; Erubis::XmlHelper.escape_xml( item );</strong> _buf &lt;&lt; '&lt;/p&gt;
403
413
  &lt;p&gt;'; <strong>_buf &lt;&lt; ( item ).to_s;</strong> _buf &lt;&lt; '&lt;/p&gt;
404
414
  &lt;p&gt;'; <strong>$stderr.puts("*** debug: item=#{(item).inspect}");</strong> _buf &lt;&lt; '&lt;/p&gt;
405
415
 
406
416
  '; end
407
- _buf.join
417
+ _buf.to_s
408
418
  ---------- result ----------
409
419
  &lt;p&gt;&amp;lt;aaa&amp;gt;&lt;/p&gt;
410
420
  &lt;p&gt;&lt;aaa&gt;&lt;/p&gt;
@@ -427,13 +437,13 @@ $ cat stderr.log
427
437
  This option is available for any language.
428
438
  </p>
429
439
  <pre class="terminal">$ erubis -l ruby <strong>-e</strong> example3.eruby
430
- _buf = []; for item in list
440
+ _buf = ''; for item in list
431
441
  _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
432
442
  &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
433
443
  &lt;p&gt;'; $stderr.puts("*** debug: item=#{(item).inspect}"); _buf &lt;&lt; '&lt;/p&gt;
434
444
 
435
445
  '; end
436
- _buf.join
446
+ _buf.to_s
437
447
  </pre>
438
448
  <p>Escaping function (default 'Erubis::XmlHelper.escape_xml()') can be changed by command-line property '--escapefunc=xxx' or by overriding Erubis::Eruby#escaped_expr() in subclass.
439
449
  </p>
@@ -475,10 +485,10 @@ example4.eruby</div>
475
485
  <div class="terminal_caption">
476
486
  compiled source code with command-line option '-p'</div>
477
487
  <pre class="terminal">$ erubis -x <strong>-p '&lt;!--% %--&gt;'</strong> example4.eruby
478
- _buf = []; for item in list
488
+ _buf = ''; for item in list
479
489
  _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
480
490
  '; end
481
- _buf.join
491
+ _buf.to_s
482
492
  </pre>
483
493
  <a name="example4.rb"></a>
484
494
  <div class="program_caption">
@@ -499,10 +509,10 @@ puts eruby.result(binding()) # get result
499
509
  output</div>
500
510
  <pre class="terminal">$ ruby example4.rb
501
511
  ---------- script source ---
502
- _buf = []; for item in list
512
+ _buf = ''; for item in list
503
513
  _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
504
514
  '; end
505
- _buf.join
515
+ _buf.to_s
506
516
  ---------- result ----------
507
517
  &lt;p&gt;aaa&lt;/p&gt;
508
518
  &lt;p&gt;bbb&lt;/p&gt;
@@ -521,7 +531,7 @@ For example, '<code>&lt;(!--)?% %(--)?&gt;</code>' will not work while '<code>&l
521
531
  Using context object makes clear which data to be used.
522
532
  In Erubis, Hash object and Erubis::Context object are available as context object.
523
533
  </p>
524
- <p>Context data can be accessible via isntance variables in eRuby script.
534
+ <p>Context data can be accessible via instance variables in eRuby script.
525
535
  </p>
526
536
  <a name="example5.eruby"></a>
527
537
  <div class="program_caption">
@@ -546,10 +556,10 @@ eruby = Erubis::Eruby.new(input) # create Eruby object
546
556
  :val =&gt; 'Erubis Example',
547
557
  'list' =&gt; ['aaa', 'bbb', 'ccc'],
548
558
  }</strong>
549
- # or
550
- # context = Erubis::Context.new()
551
- # context['val'] = 'Erubis Example'
552
- # context[:list] = ['aaa', 'bbb', 'ccc'],
559
+ ## or
560
+ # context = Erubis::Context.new()
561
+ # context['val'] = 'Erubis Example'
562
+ # context[:list] = ['aaa', 'bbb', 'ccc'],
553
563
 
554
564
  puts <strong>eruby.evaluate(context)</strong> # get result
555
565
  </pre>
@@ -564,7 +574,7 @@ output</div>
564
574
  &lt;/ul&gt;
565
575
  </pre>
566
576
  <p>The difference between Erubis#result(binding) and Erubis#evaluate(context) is that the former invokes 'eval @src, binding' and the latter invokes 'context.instance_eval @src'.
567
- This means that data is passed into eRuby script via local variable when Eruby::binding() is called, or instance variable when Eruby::evaluate() is called.
577
+ This means that data is passed into eRuby script via local variables when Eruby::binding() is called, or passed via instance variables when Eruby::evaluate() is called.
568
578
  </p>
569
579
  <p>Here is the definition of Erubis#result() and Erubis#evaluate().
570
580
  </p>
@@ -580,14 +590,14 @@ definition of result(binding) and evaluate(context)</div>
580
590
  return <strong>eval(@src, _binding)</strong>
581
591
  end
582
592
 
583
- def evaluate(context)
584
- if context.is_a?(Hash)
593
+ def evaluate(_context)
594
+ if _context.is_a?(Hash)
585
595
  # convert hash object to Context object
586
- hash = context
587
- context = Erubis::Context.new
588
- hash.each { |key, val| context[key] = val }
596
+ _hash = _context
597
+ _context = Erubis::Context.new
598
+ _hash.each { |key, val| _context[key] = val }
589
599
  end
590
- return <strong>context.instance_eval(@src)</strong>
600
+ return <strong>_context.instance_eval(@src)</strong>
591
601
  end
592
602
  </pre>
593
603
  <p>instance_eval() is defined at Object class so it is able to use any object as a context object as well as Hash or Erubis::Context.
@@ -623,20 +633,10 @@ output</div>
623
633
 
624
634
  <a name="tut-datafile"></a>
625
635
  <h3 class="section2">Context Data File</h3>
626
- <p>It is very useful to import YAML document data into Hash context object.
636
+ <p>Command-line option '-f' specifies context data file.
637
+ Erubis load context data file and use it as context data.
638
+ Context data file can be YAML file ('*.yaml' or '*.yml') or Ruby script ('*.rb').
627
639
  </p>
628
- <a name="example7.yaml"></a>
629
- <div class="program_caption">
630
- example7.yaml</div>
631
- <pre class="program"><strong>title:</strong> Users List
632
- <strong>users:</strong>
633
- - name: foo
634
- mail: foo@mail.com
635
- - name: bar
636
- mail: bar@mail.net
637
- - name: baz
638
- mail: baz@mail.org
639
- </pre>
640
640
  <a name="example7.eruby"></a>
641
641
  <div class="program_caption">
642
642
  example7.eruby</div>
@@ -649,22 +649,31 @@ example7.eruby</div>
649
649
  &lt;% end %&gt;
650
650
  &lt;/ul&gt;
651
651
  </pre>
652
- <a name="example7.rb"></a>
652
+ <a name="context.yaml"></a>
653
653
  <div class="program_caption">
654
- example7.rb</div>
655
- <pre class="program">require 'erubis'
656
- input = File.read('example7.eruby')
657
- eruby = Erubis::Eruby.new(input) # create Eruby object
658
-
659
- ## load YAML document as context object
660
- <strong>require 'yaml'</strong>
661
- <strong>context = YAML.load_file('example7.yaml')</strong>
662
-
663
- puts <strong>eruby.evaluate(context)</strong> # get result
654
+ context.yaml</div>
655
+ <pre class="program"><strong>title:</strong> Users List
656
+ <strong>users:</strong>
657
+ - name: foo
658
+ mail: foo@mail.com
659
+ - name: bar
660
+ mail: bar@mail.net
661
+ - name: baz
662
+ mail: baz@mail.org
663
+ </pre>
664
+ <a name="context.rb"></a>
665
+ <div class="program_caption">
666
+ context.rb</div>
667
+ <pre class="program">@title = 'Users List'
668
+ @users = [
669
+ { 'name'=&gt;'foo', 'mail'=&gt;'foo@mail.com' },
670
+ { 'name'=&gt;'bar', 'mail'=&gt;'bar@mail.net' },
671
+ { 'name'=&gt;'baz', 'mail'=&gt;'baz@mail.org' },
672
+ ]
664
673
  </pre>
665
674
  <div class="terminal_caption">
666
- output</div>
667
- <pre class="terminal">$ ruby example7.rb
675
+ example of command-line option '-f'</div>
676
+ <pre class="terminal">$ erubis <strong>-f context.yaml</strong> example7.eruby
668
677
  &lt;h1&gt;Users List&lt;/h1&gt;
669
678
  &lt;ul&gt;
670
679
  &lt;li&gt;
@@ -677,13 +686,7 @@ output</div>
677
686
  &lt;a href="mailto:baz@mail.org"&gt;baz&lt;/a&gt;
678
687
  &lt;/li&gt;
679
688
  &lt;/ul&gt;
680
- </pre>
681
- <p>It is able to specify YAML data file with the command-line option '-f'.
682
- You don't have to write ruby script such as 'example7.rb'.
683
- </p>
684
- <div class="terminal_caption">
685
- example of command-line option '-f'</div>
686
- <pre class="terminal">$ erubis <strong>-f example7.yaml</strong> example7.eruby
689
+ $ erubis <strong>-f context.rb</strong> example7.eruby
687
690
  &lt;h1&gt;Users List&lt;/h1&gt;
688
691
  &lt;ul&gt;
689
692
  &lt;li&gt;
@@ -703,42 +706,79 @@ Command-line option '-B' invokes 'Erubis::Eruby#result(binding())' instead of 'E
703
706
  <br>
704
707
 
705
708
 
709
+ <a name="tut-datastr"></a>
710
+ <h3 class="section2">Context Data String</h3>
711
+ <p>Command-line option '-c <em>str</em>' enables you to specify context data in command-line.
712
+ <em>str</em> can be YAML inline style or Ruby code.
713
+ </p>
714
+ <a name="example8.eruby"></a>
715
+ <div class="program_caption">
716
+ example8.eruby</div>
717
+ <pre class="program">&lt;h1&gt;&lt;%= @title %&gt;&lt;/h1&gt;
718
+ &lt;ul&gt;
719
+ &lt;% for item in @list %&gt;
720
+ &lt;li&gt;&lt;%= item %&gt;&lt;/li&gt;
721
+ &lt;% end %&gt;
722
+ &lt;/ul&gt;
723
+ </pre>
724
+ <div class="terminal_caption">
725
+ example of command-line option '-c'</div>
726
+ <pre class="terminal">### YAML inline style
727
+ $ erubis <strong>-c '{title: Example, list: [AAA, BBB, CCC]}'</strong> example8.eruby
728
+ &lt;h1&gt;Example&lt;/h1&gt;
729
+ &lt;ul&gt;
730
+ &lt;li&gt;AAA&lt;/li&gt;
731
+ &lt;li&gt;BBB&lt;/li&gt;
732
+ &lt;li&gt;CCC&lt;/li&gt;
733
+ &lt;/ul&gt;
734
+ ### Ruby code
735
+ $ erubis <strong>-c '@title="Example"; @list=%w[AAA BBB CCC]'</strong> example8.eruby
736
+ &lt;h1&gt;Example&lt;/h1&gt;
737
+ &lt;ul&gt;
738
+ &lt;li&gt;AAA&lt;/li&gt;
739
+ &lt;li&gt;BBB&lt;/li&gt;
740
+ &lt;li&gt;CCC&lt;/li&gt;
741
+ &lt;/ul&gt;
742
+ </pre>
743
+ <br>
744
+
745
+
706
746
  <a name="tut-preamble"></a>
707
747
  <h3 class="section2">Preamble and Postamble</h3>
708
- <p>The first line ('_buf = [];') in the compiled source code is called preamble
709
- and the last line ('_buf.join') is called postamble.
748
+ <p>The first line ('_buf = '';') in the compiled source code is called preamble
749
+ and the last line ('_buf.to_s') is called postamble.
710
750
  </p>
711
751
  <p>Command-line option '-b' skips the output of preamble and postamble.
712
752
  </p>
713
- <a name="example8.eruby"></a>
753
+ <a name="example9.eruby"></a>
714
754
  <div class="program_caption">
715
- example8.eruby</div>
755
+ example9.eruby</div>
716
756
  <pre class="program">&lt;% for item in @list %&gt;
717
757
  &lt;b&gt;&lt;%= item %&gt;&lt;/b&gt;
718
758
  &lt;% end %&gt;
719
759
  </pre>
720
- <p>compiled source code with and without command-line option '-b'
721
- </p>
760
+ <div class="terminal_caption">
761
+ compiled source code with and without command-line option '-b'</div>
722
762
  <pre class="terminal">## without '-b'
723
- $ erubis -x example8.eruby
724
- <strong>_buf = [];</strong> for item in @list
763
+ $ erubis -x example9.eruby
764
+ <strong>_buf = '';</strong> for item in @list
725
765
  _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
726
766
  '; end
727
- <strong>_buf.join</strong>
767
+ <strong>_buf.to_s</strong>
728
768
 
729
769
  ## with '-b'
730
- $ erubis -x <strong>-b</strong> example8.eruby
770
+ $ erubis -x <strong>-b</strong> example9.eruby
731
771
  for item in @list
732
772
  _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
733
773
  '; end
734
774
  </pre>
735
775
  <p>Erubis::Eruby.new option '<code>:preamble=&gt;false</code>' and '<code>:postamble=&gt;false</code>' also suppress output of preamble or postamle.
736
776
  </p>
737
- <a name="example8.rb"></a>
777
+ <a name="example9.rb"></a>
738
778
  <div class="program_caption">
739
- example8.rb</div>
779
+ example9.rb</div>
740
780
  <pre class="program">require 'erubis'
741
- input = File.read('example8.eruby')
781
+ input = File.read('example9.eruby')
742
782
  eruby1 = Erubis::Eruby.new(input)
743
783
  eruby2 = Erubis::Eruby.new(input, <strong>:preamble=&gt;false, :postamble=&gt;false</strong>)
744
784
 
@@ -748,11 +788,11 @@ puts eruby2.src # don't print preamble and postamble
748
788
  </pre>
749
789
  <div class="terminal_caption">
750
790
  output</div>
751
- <pre class="terminal">$ ruby example8.rb
752
- _buf = []; for item in @list
791
+ <pre class="terminal">$ ruby example9.rb
792
+ _buf = ''; for item in @list
753
793
  _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
754
794
  '; end
755
- _buf.join
795
+ _buf.to_s
756
796
  --------------
757
797
  for item in @list
758
798
  _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
@@ -780,9 +820,9 @@ _buf.join
780
820
  <p>This is more useful than basic embedded pattern ('<code>&lt;% ... &gt;</code>') because PI doesn't break XML or HTML at all.
781
821
  For example the following XHTML file is well-formed and HTML validator got no errors on this example.
782
822
  </p>
783
- <a name="example9.xhtml"></a>
823
+ <a name="example10.xhtml"></a>
784
824
  <div class="program_caption">
785
- example9.xhtml</div>
825
+ example10.xhtml</div>
786
826
  <pre class="program">&lt;?xml version="1.0" ?&gt;
787
827
  <strong>&lt;?rb
788
828
  lang = 'en'
@@ -802,11 +842,7 @@ example9.xhtml</div>
802
842
  If <em>name</em> is omitted then the following name is used according to '-l <em>lang</em>'.
803
843
  </p>
804
844
  <div align="center">
805
- <table class="table1" border="1" cellspacing="0" summary=" mapping of '-l' option and PI name
806
- ">
807
- <caption class="caption1">
808
- mapping of '-l' option and PI name
809
- </caption>
845
+ <table class="table1" border="1" cellspacing="0">
810
846
  <tr class="tr1">
811
847
  <th class="th1">'-l' option</th>
812
848
  <th class="th1">PI name</th>
@@ -839,20 +875,56 @@ If <em>name</em> is omitted then the following name is used according to '-l <em
839
875
  </div>
840
876
  <div class="terminal_caption">
841
877
  output</div>
842
- <pre class="terminal">$ erubis <strong>--pi</strong> example9.xhtml
843
- &lt;?xml version="1.0" ?&gt;
844
- &lt;html lang="en"&gt;
878
+ <pre class="terminal">$ erubis -x <strong>--pi</strong> example10.xhtml
879
+ _buf = ''; _buf &lt;&lt; '&lt;?xml version="1.0" ?&gt;
880
+ ';
881
+ lang = 'en'
882
+ list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"']
883
+
884
+ _buf &lt;&lt; '&lt;html lang="'; _buf &lt;&lt; (lang).to_s; _buf &lt;&lt; '"&gt;
845
885
  &lt;body&gt;
846
886
  &lt;ul&gt;
847
- &lt;li&gt;&amp;lt;aaa&amp;gt;&lt;/li&gt;
848
- &lt;li&gt;b&amp;amp;b&lt;/li&gt;
849
- &lt;li&gt;&amp;quot;ccc&amp;quot;&lt;/li&gt;
850
- &lt;/ul&gt;
887
+ '; for item in list
888
+ _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml(item); _buf &lt;&lt; '&lt;/li&gt;
889
+ '; end
890
+ _buf &lt;&lt; ' &lt;/ul&gt;
851
891
  &lt;/body&gt;
852
892
  &lt;/html&gt;
893
+ ';
894
+ _buf.to_s
853
895
  </pre>
854
896
  <p>Expression character can be changeable by command-line property '--embchar=<em>char</em>. Default is '<code>@</code>'.
855
897
  </p>
898
+ <p>Use Erubis::PI::Eruby instead of Erubis::Eruby if you want to use PI as embedded pattern.
899
+ </p>
900
+ <a name="example10.rb"></a>
901
+ <div class="program_caption">
902
+ example10.rb</div>
903
+ <pre class="program">require 'erubis'
904
+ input = File.read('example10.xhtml')
905
+ eruby = Erubis::PI::Eruby.new(input)
906
+ print eruby.src
907
+ </pre>
908
+ <div class="terminal_caption">
909
+ output</div>
910
+ <pre class="terminal">$ ruby example10.rb
911
+ _buf = ''; _buf &lt;&lt; '&lt;?xml version="1.0" ?&gt;
912
+ ';
913
+ lang = 'en'
914
+ list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"']
915
+
916
+ _buf &lt;&lt; '&lt;html lang="'; _buf &lt;&lt; (lang).to_s; _buf &lt;&lt; '"&gt;
917
+ &lt;body&gt;
918
+ &lt;ul&gt;
919
+ '; for item in list
920
+ _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml(item); _buf &lt;&lt; '&lt;/li&gt;
921
+ '; end
922
+ _buf &lt;&lt; ' &lt;/ul&gt;
923
+ &lt;/body&gt;
924
+ &lt;/html&gt;
925
+ ';
926
+ _buf.to_s
927
+ </pre>
856
928
  <p><strong>(experimental)</strong> Erubis supports '&lt;%= ... %&gt;' pattern with PI pattern.
857
929
  </p>
858
930
  <div class="program_caption">
@@ -984,14 +1056,14 @@ example.eruby</div>
984
1056
  <div class="terminal_caption">
985
1057
  compiled source code</div>
986
1058
  <pre class="terminal">$ erubis -xE Escape example.eruby
987
- _buf = []; _buf &lt;&lt; '&lt;div&gt;
1059
+ _buf = ''; _buf &lt;&lt; '&lt;div&gt;
988
1060
  '; for item in list
989
1061
  _buf &lt;&lt; ' &lt;p&gt;'; <strong>_buf &lt;&lt; Erubis::XmlHelper.escape_xml( item );</strong> _buf &lt;&lt; '&lt;/p&gt;
990
1062
  &lt;p&gt;'; <strong>_buf &lt;&lt; ( item ).to_s;</strong> _buf &lt;&lt; '&lt;/p&gt;
991
1063
  '; end
992
1064
  _buf &lt;&lt; '&lt;/div&gt;
993
1065
  ';
994
- _buf.join
1066
+ _buf.to_s
995
1067
  </pre>
996
1068
  <p>EscapeEnhancer is language-independent.
997
1069
  </p>
@@ -1100,29 +1172,30 @@ compiled source code</div>
1100
1172
 
1101
1173
  <a name="arraybuffer-enhancer"></a>
1102
1174
  <h3 class="section2">ArrayBufferEnhancer</h3>
1103
- <p>Arraybufferenhancer makes Eruby to use array buffer.
1104
- Array buffer is a litte faster than String buffer.
1105
- Erubis::Eruby includes this enhancer by default.
1175
+ <p>ArrayBufferEnhancer makes Eruby to use array buffer.
1176
+ Array buffer is a litte slower than String buffer.
1106
1177
  </p>
1107
1178
  <p>ArrayBufferEnhancer is only for Eruby.
1108
1179
  </p>
1109
- <br>
1110
-
1111
-
1112
- <a name="stringbuffer-enhancer"></a>
1113
- <h3 class="section2">StringBufferEnhancer</h3>
1114
- <p>StringBufferEnhancer makes Eruby to use string buffer.
1115
- </p>
1116
- <pre class="terminal">$ erubis -xE StringBuffer example.eruby
1117
- <strong>_buf = '';</strong> _buf &lt;&lt; '&lt;div&gt;
1180
+ <pre class="terminal">$ erubis -xE ArrayBuffer example.eruby
1181
+ <strong>_buf = [];</strong> _buf &lt;&lt; '&lt;div&gt;
1118
1182
  '; for item in list
1119
1183
  _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1120
1184
  &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1121
1185
  '; end
1122
1186
  _buf &lt;&lt; '&lt;/div&gt;
1123
1187
  ';
1124
- <strong>_buf</strong>
1188
+ <strong>_buf</strong>.join
1125
1189
  </pre>
1190
+ <br>
1191
+
1192
+
1193
+ <a name="stringbuffer-enhancer"></a>
1194
+ <h3 class="section2">StringBufferEnhancer</h3>
1195
+ <p>StringBufferEnhancer makes Eruby to use string buffer.
1196
+ String buffer is a little faster than array buffer.
1197
+ Erubis::Eruby includes this enhancer by default.
1198
+ </p>
1126
1199
  <p>StringBufferEnhancer is only for Eruby.
1127
1200
  </p>
1128
1201
  <br>
@@ -1153,22 +1226,22 @@ notext-example.eruby</div>
1153
1226
  </pre>
1154
1227
  <div class="terminal_caption">
1155
1228
  output example of NoTextEnhancer</div>
1156
- <pre class="terminal">$ erubis -TxE NoText notext-example.eruby
1157
- _buf = [];
1158
- if !@list || @list.empty? ;
1229
+ <pre class="terminal">$ erubis -xE NoText notext-example.eruby
1230
+ _buf = '';
1231
+ if !@list || @list.empty?
1159
1232
 
1160
- else ;
1233
+ else
1161
1234
 
1162
1235
 
1163
- @list.each_with_index do |item, i| ;
1236
+ @list.each_with_index do |item, i|
1164
1237
  _buf &lt;&lt; ( i%2 == 0 ? '#FFCCCC' : '#CCCCFF' ).to_s;
1165
1238
  _buf &lt;&lt; ( item ).to_s;
1166
1239
 
1167
- end ;
1240
+ end
1168
1241
 
1169
1242
 
1170
- end ;
1171
- _buf.join
1243
+ end
1244
+ _buf.to_s
1172
1245
  </pre>
1173
1246
  <p>NoTextEnhancer is language-independent. It is useful even if you are PHP user, see <a href="#topics-php">this section</a>.
1174
1247
  </p>
@@ -1199,19 +1272,19 @@ nocode-example.eruby</div>
1199
1272
  &lt;% end %&gt;
1200
1273
  </pre>
1201
1274
  <div class="terminal_caption">
1202
- output example of NoTextEnhancer</div>
1203
- <pre class="terminal">$ erubis -TxE NoCode notext-example.eruby
1275
+ output example of NoCodeEnhancer</div>
1276
+ <pre class="terminal">$ erubis -xE NoCode notext-example.eruby
1204
1277
  &lt;h3&gt;List&lt;/h3&gt;
1205
1278
 
1206
1279
  &lt;p&gt;not found.&lt;/p&gt;
1207
1280
 
1208
1281
  &lt;table&gt;
1209
1282
  &lt;tbody&gt;
1210
-
1283
+
1211
1284
  &lt;tr bgcolor=""&gt;
1212
1285
  &lt;td&gt;&lt;/td&gt;
1213
1286
  &lt;/tr&gt;
1214
-
1287
+
1215
1288
  &lt;/tbody&gt;
1216
1289
  &lt;/table&gt;
1217
1290
 
@@ -1228,14 +1301,14 @@ output example of NoTextEnhancer</div>
1228
1301
  <div class="terminal_caption">
1229
1302
  compiled source code</div>
1230
1303
  <pre class="terminal">$ erubis -xE Simplify example.euby
1231
- _buf = []; _buf &lt;&lt; '&lt;div&gt;
1304
+ _buf = ''; _buf &lt;&lt; '&lt;div&gt;
1232
1305
  '; for item in list ; _buf &lt;&lt; '
1233
1306
  &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1234
1307
  &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1235
1308
  '; end ; _buf &lt;&lt; '
1236
1309
  &lt;/div&gt;
1237
1310
  ';
1238
- _buf.join
1311
+ _buf.to_s
1239
1312
  </pre>
1240
1313
  <p>SimplifyEnhancer is language-independent.
1241
1314
  </p>
@@ -1259,11 +1332,11 @@ bipattern-example.rhtml</div>
1259
1332
  <div class="terminal_caption">
1260
1333
  compiled source code</div>
1261
1334
  <pre class="terminal">$ erubis -xE BiPattern bipattern-example.rhtml
1262
- _buf = []; for item in list
1335
+ _buf = ''; for item in list
1263
1336
  _buf &lt;&lt; ' &lt;b&gt;'; <strong>_buf &lt;&lt; ( item ).to_s;</strong> _buf &lt;&lt; '&lt;/b&gt;
1264
1337
  &lt;b&gt;'; <strong>_buf &lt;&lt; Erubis::XmlHelper.escape_xml( item );</strong> _buf &lt;&lt; '&lt;/b&gt;
1265
1338
  '; end
1266
- _buf.join
1339
+ _buf.to_s
1267
1340
  </pre>
1268
1341
  <p>BiPatternEnhancer is language-independent.
1269
1342
  </p>
@@ -1286,12 +1359,12 @@ percentline-example.rhtml</div>
1286
1359
  <div class="terminal_caption">
1287
1360
  compiled source code</div>
1288
1361
  <pre class="terminal">$ erubis -xE PercentLine percentline-example.rhtml
1289
- _buf = []; <strong>for item in list</strong>
1362
+ _buf = ''; <strong>for item in list</strong>
1290
1363
  _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
1291
1364
  '; <strong>end</strong>
1292
1365
  _buf &lt;&lt; '% lines with \'%%\'
1293
1366
  ';
1294
- _buf.join
1367
+ _buf.to_s
1295
1368
  </pre>
1296
1369
  <p>PercentLineEnhancer is language-independent.
1297
1370
  </p>
@@ -1323,10 +1396,10 @@ compiled source code</div>
1323
1396
 
1324
1397
  <strong>def list_items(items)</strong>
1325
1398
 
1326
- _buf = []; for item in items
1399
+ _buf = ''; for item in items
1327
1400
  _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
1328
1401
  '; end
1329
- _buf.join
1402
+ _buf.to_s
1330
1403
 
1331
1404
  <strong>end</strong>
1332
1405
 
@@ -1349,7 +1422,7 @@ normal-eruby-test.eruby</div>
1349
1422
  <div class="terminal_caption">
1350
1423
  compiled source code</div>
1351
1424
  <pre class="terminal">$ erubis -x normal-eruby-test.eruby
1352
- _buf = [];
1425
+ _buf = '';
1353
1426
  <strong>def list_items(items)</strong>
1354
1427
 
1355
1428
  for item in items
@@ -1358,7 +1431,7 @@ _buf = [];
1358
1431
 
1359
1432
  <strong>end</strong>
1360
1433
 
1361
- _buf.join
1434
+ _buf.to_s
1362
1435
  </pre>
1363
1436
  <p>Header and footer can be in any position in eRuby script,
1364
1437
  that is, header is no need to be in the head of eRuby script.
@@ -1383,12 +1456,12 @@ compiled source code</div>
1383
1456
 
1384
1457
  <strong>def page(list)</strong>
1385
1458
 
1386
- _buf = []; _buf &lt;&lt; '&lt;?xml version="1.0"?&gt;
1459
+ _buf = ''; _buf &lt;&lt; '&lt;?xml version="1.0"?&gt;
1387
1460
  &lt;html&gt;
1388
1461
  '; _buf &lt;&lt; ' :
1389
1462
  '; _buf &lt;&lt; '&lt;/html&gt;
1390
1463
  ';
1391
- _buf.join
1464
+ _buf.to_s
1392
1465
 
1393
1466
  <strong>end</strong>
1394
1467
 
@@ -1439,7 +1512,7 @@ example.ephp</div>
1439
1512
  &lt;td&gt;<strong>&lt;%= $i %&gt;</strong>&lt;/td&gt;
1440
1513
  &lt;td&gt;<strong>&lt;%== $item %&gt;</strong>&lt;/td&gt;
1441
1514
  &lt;/tr&gt;
1442
- &lt;% } %&gt;
1515
+ <strong>&lt;% } %&gt;</strong>
1443
1516
  &lt;/tbody&gt;
1444
1517
  &lt;/table&gt;
1445
1518
  &lt;/body&gt;
@@ -1873,44 +1946,113 @@ document.write(_buf.join(""));
1873
1946
 
1874
1947
  <a name="topics"></a>
1875
1948
  <h2 class="section1">Other Topics</h2>
1949
+ <a name="topics-syntax"></a>
1950
+ <h3 class="section2">Syntax Checking</h3>
1951
+ <p>Command-line option '-z' checks syntax. It is similar to 'erubis -x file.rhtml | ruby -wc', but it can take several file names.
1952
+ </p>
1953
+ <div class="terminal_caption">
1954
+ example of command-line option '-z'</div>
1955
+ <pre class="terminal">$ erubis <strong>-z</strong> app/views/*/*.rhtml
1956
+ Syntax OK
1957
+ </pre>
1958
+ <br>
1959
+
1960
+
1961
+ <a name="topics-caching"></a>
1962
+ <h3 class="section2">File Caching</h3>
1963
+ <p>Erubis::Eruby.convert_file(filename) convert file into Ruby script and return Eruby object.
1964
+ In addition, it caches converted Ruby script into cache file (filename + '.cache') if cache file is old or not exist.
1965
+ If cache file exists and is newer than eruby file, Erubis::Eruby.convert_file() loads cache file.
1966
+ </p>
1967
+ <div class="program_caption">
1968
+ example of Erubis::Eruby.convert_file()</div>
1969
+ <pre class="program">require 'erubis'
1970
+ filename = 'example.rhtml'
1971
+ eruby = <strong>Erubis::Eruby.convert_file(filename)</strong>
1972
+ cachename = filename + '.cache'
1973
+ if test(?f, cachename)
1974
+ puts "*** cache file '#{cachename}' created."
1975
+ end
1976
+ </pre>
1977
+ <p>Caching makes Erubis about 40-50 percent faster than no-caching.
1978
+ See <a href="#topics-benchmark">benchmark</a> for details.
1979
+ </p>
1980
+ <br>
1981
+
1982
+
1876
1983
  <a name="topics-tinyeruby"></a>
1877
- <h3 class="section2">TinyEruby class</h3>
1878
- <p>TinyEruby class in 'erubis/tiny.rb' is the smallest implementation of eRuby.
1984
+ <h3 class="section2">Erubis::TinyEruby class</h3>
1985
+ <p>Erubis::TinyEruby class in 'erubis/tiny.rb' is the smallest implementation of eRuby.
1879
1986
  If you don't need any enhancements of Erubis and only require simple eRuby implementation,
1880
- try TinyEruby class.
1987
+ try Erubis::TinyEruby class.
1881
1988
  </p>
1882
1989
  <br>
1883
1990
 
1884
1991
 
1885
1992
  <a name="topics-rails"></a>
1886
1993
  <h3 class="section2">Ruby on Rails Support</h3>
1887
- <p>Erubis supports Ruby on Rails.
1888
- Add the following code to your 'app/controllers/application.rb'.
1994
+ <p>Erubis supports Ruby on Rails.
1889
1995
  </p>
1996
+ <ol type="1">
1997
+ <li>Add the following code to your 'config/environment.rb'.
1890
1998
  <div class="program_caption">
1891
- app/controllers/application.rb</div>
1892
- <pre class="program">require 'erubis/helper/rails'
1893
- suffix = 'erubis'
1894
- ActionView::Base.register_template_handler(suffix, Erubis::Helper::RailsTemplate)
1895
- #Erubis::Helper::RailsTemplate.engine_class = Erubis::EscapedEruby ## or Erubis::PI::Eruby
1896
- #Erubis::Helper::RailsTemplate.default_properties = { :escape=&gt;true, :escapefunc=&gt;'h' }
1999
+ config/environment.rb</div>
2000
+ <pre class="program">require 'erubis/helpers/rails_helper'
2001
+ #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby
2002
+ #Erubis::Helpers::RailsHelper.init_properties = {}
2003
+ #Erubis::Helpers::RailsHelper.show_src = false
1897
2004
  </pre>
1898
- <p>If you specify Erubis::Helper::CachedRailsTemplate class instead of Erubis::Helper::RailsTemplate class, template string is cached in memory (but template is not reloaded when it is modified).
2005
+ <p> This will replace ERB in Rails by Erubis entirely.
1899
2006
  </p>
1900
- <p>You may got the followign error:
2007
+ </li>
2008
+ <li>(Optional) apply the following patch to 'action_pack/lib/action_view/base.rb'.
2009
+ <div class="program_caption">
2010
+ action_view_base_rb.patch</div>
2011
+ <pre class="program">--- lib/action_view/base.rb (original)
2012
+ +++ lib/action_view/base.rb (working copy)
2013
+ @@ -445,6 +445,11 @@
2014
+ end
2015
+ end
2016
+
2017
+ + # convert template into ruby code
2018
+ + def convert_template_into_ruby_code(template)
2019
+ + ERB.new(template, nil, @@erb_trim_mode).src
2020
+ + end
2021
+ +
2022
+ # Create source code for given template
2023
+ def create_template_source(extension, template, render_symbol, locals)
2024
+ if template_requires_setup?(extension)
2025
+ @@ -458,7 +463,7 @@
2026
+ "update_page do |page|\n#{template}\nend"
2027
+ end
2028
+ else
2029
+ - body = ERB.new(template, nil, @@erb_trim_mode).src
2030
+ + body = convert_template_into_ruby_code(template)
2031
+ end
2032
+
2033
+ @@template_args[render_symbol] ||= {}
2034
+ </pre>
2035
+ <p> This patch is included in erubis_2.X.X/contrib directory and the following is an
2036
+ example to apply this patch.
1901
2037
  </p>
1902
- <pre class="program">(eval):10:in `render': no block given
2038
+ <div class="terminal_caption">
2039
+ how to apply patch:</div>
2040
+ <pre class="terminal">$ cd /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.13.1/lib/action_view/
2041
+ $ sudo patch -p1 &lt; /tmp/erubis_2.X.X/contrib/action_view_base_rb.patch
1903
2042
  </pre>
1904
- <p>It is because layout file scaffold created contains 'yield' method.
1905
- Use '@content_for_layout' instead 'yield'.
2043
+ <p> Notice that this patch is not necessary if you are using Ruby on Rails ver 1.1 or 1.2, but it is recommended.
1906
2044
  </p>
1907
- <div class="program_caption">
1908
- app/views/layouts/xxx.erubis</div>
1909
- <pre class="program"> ...
1910
- &lt;%<strong>#</strong>= yield %&gt;
1911
- <strong>&lt;%= @content_for_layout %&gt;</strong>
1912
- ...
2045
+ </li>
2046
+ <li>Restart web server.
2047
+ <pre class="terminal">$ ruby script/server
1913
2048
  </pre>
2049
+ </li>
2050
+ </ol>
2051
+ <p>ActionView::Helpers::CaptureHelper#capture() and ActionView::Helpers::Texthelper#concat() are available.
2052
+ </p>
2053
+ <p>If Erubis::Helper::Rails.show_src is ture, Erubis prints converted Ruby code into log file (ex. 'log/development.log').
2054
+ It is useful for debugging.
2055
+ </p>
1914
2056
  <br>
1915
2057
 
1916
2058
 
@@ -1950,7 +2092,7 @@ NoTextEnhancer can separate PHP code from HTML document.
1950
2092
  </p>
1951
2093
  <div class="terminal_caption">
1952
2094
  example of using NoTextEnhancer with PHP file</div>
1953
- <pre class="terminal">$ erubis -T -l php -E NoText -p '&lt;\?php \?&gt;' notext-example.php | cat -n
2095
+ <pre class="terminal">$ erubis -l php -E NoText -p '&lt;\?php \?&gt;' --trim=false notext-example.php | cat -n
1954
2096
  1
1955
2097
  2
1956
2098
  3
@@ -1975,24 +2117,24 @@ example of using NoTextEnhancer with PHP file</div>
1975
2117
  </p>
1976
2118
  <div class="terminal_caption">
1977
2119
  example of using NoCodeEnhancer with PHP file</div>
1978
- <pre class="terminal">$ erubis -T -l php -E NoCode -p '&lt;\?php \?&gt;' notext-example.php | cat -n
2120
+ <pre class="terminal">$ erubis -l php -E NoCode -p '&lt;\?php \?&gt;' notext-example.php | cat -n
1979
2121
  1 &lt;html&gt;
1980
2122
  2 &lt;body&gt;
1981
2123
  3 &lt;h3&gt;List&lt;/h3&gt;
1982
- 4
2124
+ 4
1983
2125
  5 &lt;p&gt;not found.&lt;/p&gt;
1984
- 6
2126
+ 6
1985
2127
  7 &lt;table&gt;
1986
2128
  8 &lt;tbody&gt;
1987
- 9
1988
- 10
2129
+ 9
2130
+ 10
1989
2131
  11 &lt;tr bgcolor=""&gt;
1990
2132
  12 &lt;td&gt;&lt;/td&gt;
1991
2133
  13 &lt;/tr&gt;
1992
- 14
2134
+ 14
1993
2135
  15 &lt;/tbody&gt;
1994
2136
  16 &lt;/table&gt;
1995
- 17
2137
+ 17
1996
2138
  18 &lt;/body&gt;
1997
2139
  19 &lt;/html&gt;
1998
2140
  </pre>
@@ -2025,7 +2167,7 @@ notext-ex.rhtml</div>
2025
2167
  <div class="terminal_caption">
2026
2168
  command line example</div>
2027
2169
  <pre class="terminal">$ notext notext-ex.rhtml
2028
- _buf = [];
2170
+ _buf = '';
2029
2171
 
2030
2172
 
2031
2173
 
@@ -2039,14 +2181,14 @@ _buf = [];
2039
2181
  end ;
2040
2182
 
2041
2183
 
2042
- _buf.join
2184
+ _buf.to_s
2043
2185
  </pre>
2044
2186
  <p>Command-line option '-u' deletes continuous empty lines to one empty line.
2045
2187
  </p>
2046
2188
  <div class="terminal_caption">
2047
2189
  command-line example</div>
2048
2190
  <pre class="terminal">$ notext <strong>-u</strong> notext-ex.rhtml
2049
- _buf = [];
2191
+ _buf = '';
2050
2192
 
2051
2193
  @list.each_with_index do |item, i| ;
2052
2194
  klass = i % 2 == 0 ? 'odd' : 'even' ;
@@ -2055,25 +2197,25 @@ _buf = [];
2055
2197
 
2056
2198
  end ;
2057
2199
 
2058
- _buf.join
2200
+ _buf.to_s
2059
2201
  </pre>
2060
2202
  <p>Command-line option '-c' deletes all empty lines.
2061
2203
  </p>
2062
2204
  <div class="terminal_caption">
2063
2205
  command-line example</div>
2064
2206
  <pre class="terminal">$ notext <strong>-c</strong> notext-ex.rhtml
2065
- _buf = [];
2207
+ _buf = '';
2066
2208
  @list.each_with_index do |item, i| ;
2067
2209
  klass = i % 2 == 0 ? 'odd' : 'even' ;
2068
2210
  _buf &lt;&lt; ( klass ).to_s;
2069
2211
  _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item );
2070
2212
  end ;
2071
- _buf.join
2213
+ _buf.to_s
2072
2214
  </pre>
2073
2215
  <p>Command-line option '-n' shows line numbers. It can work with '-c' or '-u'.
2074
2216
  </p>
2075
2217
  <pre class="terminal">$ notext <strong>-nu</strong> example2.rhtml
2076
- 1: _buf = [];
2218
+ 1: _buf = '';
2077
2219
 
2078
2220
  7: @list.each_with_index do |item, i| ;
2079
2221
  8: klass = i % 2 == 0 ? 'odd' : 'even' ;
@@ -2082,15 +2224,15 @@ _buf.join
2082
2224
 
2083
2225
  12: end ;
2084
2226
 
2085
- 16: _buf.join
2227
+ 16: _buf.to_s
2086
2228
  $ notext <strong>-nc</strong> example2.rhtml
2087
- 1: _buf = [];
2229
+ 1: _buf = '';
2088
2230
  7: @list.each_with_index do |item, i| ;
2089
2231
  8: klass = i % 2 == 0 ? 'odd' : 'even' ;
2090
2232
  9: _buf &lt;&lt; ( klass ).to_s;
2091
2233
  10: _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item );
2092
2234
  12: end ;
2093
- 16: _buf.join
2235
+ 16: _buf.to_s
2094
2236
  </pre>
2095
2237
  <p>Command 'notext' supports '-l <em>lang</em>' options. For example, command-line option '-l php' retrieves embedded PHP code from PHP file.
2096
2238
  </p>
@@ -2099,45 +2241,62 @@ $ notext <strong>-nc</strong> example2.rhtml
2099
2241
 
2100
2242
  <a name="topics-benchmark"></a>
2101
2243
  <h3 class="section2">Benchmark</h3>
2102
- <p>A benchmark script is included in Erubis package at erubis-X.X.X/benchark directory.
2244
+ <p>A benchmark script is included in Erubis package at 'erubis-X.X.X/benchark/' directory.
2103
2245
  Here is an example result of benchmark.
2104
2246
  </p>
2105
- <div class="output_caption">
2106
- Env: Linux FedoraCore4, Celeron 667MHz, Mem512MB, Ruby1.8.4, eruby1.0.5</div>
2107
- <pre class="output"> user system total real
2108
- ERuby 131.990000 1.900000 133.890000 (135.061456)
2109
- ERB 385.040000 3.180000 388.220000 (391.570653)
2110
- Erubis::Eruby 127.750000 2.520000 130.270000 (131.385922)
2111
- Erubis::StringBufferEruby 167.610000 2.600000 170.210000 (171.712798)
2112
- Erubis::StdoutEruby 92.790000 2.000000 94.790000 ( 95.532633)
2113
- Erubis::TinyEruby 118.720000 2.250000 120.970000 (122.022996)
2114
- Erubis::TinyStdoutEruby 87.130000 2.030000 89.160000 ( 89.879538)
2115
- </pre>
2116
- <div class="output_caption">
2117
- Env: MacOS X 10.4, PowerPC 1.42GHz, Mem1.5GB, Ruby1.8.4, eruby1.0.5</div>
2118
- <pre class="output"> user system total real
2119
- ERuby 55.040000 2.120000 57.160000 ( 89.311397)
2120
- ERB 103.960000 3.480000 107.440000 (159.231792)
2121
- Erubis::Eruby 36.130000 1.570000 37.700000 ( 52.188574)
2122
- Erubis::StringBufferEruby 47.270000 1.980000 49.250000 ( 73.867537)
2123
- Erubis::StdoutEruby 26.240000 1.490000 27.730000 ( 41.840430)
2124
- Erubis::TinyEruby 31.690000 1.590000 33.280000 ( 49.862091)
2125
- Erubis::TinyStdoutEruby 22.550000 1.230000 23.780000 ( 33.316978)
2126
- </pre>
2127
- <p>This shows that:
2247
+ <div class="terminal_caption">
2248
+ MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Ruby1.8.5, eruby1.0.5, gcc4.0.1</div>
2249
+ <pre class="terminal">$ cd erubis-2.2.0/benchmark/
2250
+ $ ruby erubybench.rb -n 10000 -m execute
2251
+ ## execute
2252
+ user system total real
2253
+ eruby 12.870000 0.290000 <strong>13.160000</strong> ( 14.020219)
2254
+ ERB 37.090000 0.460000 <strong>37.550000</strong> ( 39.639027)
2255
+ Erubis::Eruby 11.420000 0.330000 <strong>11.750000</strong> ( 12.385562)
2256
+ Erubis::Eruby(cached) 7.580000 0.440000 <strong>8.020000</strong> ( 8.536019)
2257
+ Erubis::ArrayBufferEruby 11.550000 0.340000 11.890000 ( 12.597665)
2258
+ Erubis::SimplifiedEruby 10.410000 0.320000 10.730000 ( 11.406730)
2259
+ Erubis::StdoutEruby 12.170000 0.340000 12.510000 ( 13.252177)
2260
+ Erubis::PrintOutEruby 12.070000 0.330000 12.400000 ( 13.142734)
2261
+ Erubis::TinyEruby 9.710000 0.320000 10.030000 ( 10.771446)
2262
+ Erubis::PI::Eruby 12.010000 0.340000 12.350000 ( 13.104801)
2263
+ </pre>
2264
+ <p>This shows that...
2128
2265
  </p>
2129
2266
  <ul type="disc">
2130
- <li>Erubis::Eruby is about 3 times faster than ERB.
2267
+ <li>Erubis::Eruby runs more than 10 percent faster than eruby.
2131
2268
  </li>
2132
- <li>Erubis::Eruby is about 3% faster than ERuby in linux or 1.5 times faster in Mac.
2269
+ <li>Erubis::Eruby runs about 3 times faster than ERB.
2133
2270
  </li>
2134
- <li>String buffer (StringBufferEnhancer) is slower than array buffer (ArrayBufferEnhancer which Erubis::Eruby includes)
2271
+ <li>Caching (by Erubis::Eruby.load_file()) makes Erubis about 40-50 percent faster.
2135
2272
  </li>
2136
- <li>Using $stdout is faster than array buffer and string buffer.
2273
+ <li>Array buffer (ArrayBufferEnhancer) is a little slower than string buffer (StringBufferEnhancer which Erubis::Eruby includes)
2137
2274
  </li>
2138
- <li>Erubis::TinyEruby (at 'erubis/tiny.rb') and it's subclasses are the fastest in all eRuby implementation.
2275
+ <li>$stdout and print() make Erubis a little slower.
2276
+ </li>
2277
+ <li>Erubis::TinyEruby (at 'erubis/tiny.rb') is the fastest in all eRuby implementations when no caching.
2139
2278
  </li>
2140
2279
  </ul>
2280
+ <p>Escaping HTML characters (such as '&lt; &gt; &amp; "') makes Erubis more faster than eruby and ERB,
2281
+ because Erubis::XmlHelper#escape_xml() works faster than CGI.escapeHTML() and ERB::Util#h().
2282
+ The following shows that Erubis runs more than 30 percent faster than eruby if HTML characters are escaped.
2283
+ </p>
2284
+ <div class="terminal_caption">
2285
+ When escaping HTML characters with option '-e'</div>
2286
+ <pre class="terminal">$ ruby erubybench.rb -n 10000 -m execute -e
2287
+ ## execute
2288
+ user system total real
2289
+ eruby 22.730000 0.350000 <strong>23.080000</strong> ( 24.815081)
2290
+ ERB 46.590000 0.520000 <strong>47.110000</strong> ( 50.360891)
2291
+ Erubis::Eruby 16.750000 0.360000 <strong>17.110000</strong> ( 18.253436)
2292
+ Erubis::Eruby(cached) 12.540000 0.450000 <strong>12.990000</strong> ( 13.935044)
2293
+ Erubis::ArrayBufferEruby 16.860000 0.370000 17.230000 ( 18.373771)
2294
+ Erubis::SimplifiedEruby 15.750000 0.350000 16.100000 ( 17.344105)
2295
+ Erubis::StdoutEruby 17.650000 0.360000 18.010000 ( 19.194326)
2296
+ Erubis::PrintOutEruby 17.560000 0.360000 17.920000 ( 19.293728)
2297
+ Erubis::TinyEruby 16.300000 0.350000 16.650000 ( 17.887278)
2298
+ Erubis::PI::Eruby 17.210000 0.360000 17.570000 ( 18.836510)
2299
+ </pre>
2141
2300
  <br>
2142
2301
 
2143
2302
 
@@ -2172,10 +2331,9 @@ Erubis::TinyStdoutEruby 22.550000 1.230000 23.780000 ( 33.316978)
2172
2331
  Show compiled source.
2173
2332
  </dd>
2174
2333
  <dt class="dt3"><b>
2175
- -T </b></dt>
2334
+ -z </b></dt>
2176
2335
  <dd class="dd3">
2177
- No trimming spaces around '&lt;% %&gt;'.
2178
- This is equivarent to '--trim=false'.
2336
+ Syntax checking.
2179
2337
  </dd>
2180
2338
  <dt class="dt3"><b>
2181
2339
  -b </b></dt>
@@ -2220,13 +2378,19 @@ Erubis::TinyStdoutEruby 22.550000 1.230000 23.780000 ( 33.316978)
2220
2378
  Kanji code (euc, sjis, utf8, or none) (default none).
2221
2379
  </dd>
2222
2380
  <dt class="dt3"><b>
2223
- -f file.yaml </b></dt>
2381
+ -f datafile </b></dt>
2224
2382
  <dd class="dd3">
2225
- YAML file for context values (read stdin if filename is '-').
2383
+ Context data file in YAML format ('*.yaml', '*.yml') or
2384
+ Ruby script ('*.rb').
2226
2385
  It is able to specify several filenames separating with ','
2227
2386
  (ex. -f file1,file2,file3).
2228
2387
  </dd>
2229
2388
  <dt class="dt3"><b>
2389
+ -c context </b></dt>
2390
+ <dd class="dd3">
2391
+ Context data string in YAML inline style or Ruby code.
2392
+ </dd>
2393
+ <dt class="dt3"><b>
2230
2394
  -t </b></dt>
2231
2395
  <dd class="dd3">
2232
2396
  Expand tab characters in YAML file.
@@ -2246,6 +2410,11 @@ Erubis::TinyStdoutEruby 22.550000 1.230000 23.780000 ( 33.316978)
2246
2410
  <dd class="dd3">
2247
2411
  parse '&lt;?name ... ?&gt;' instead of '&lt;% ... %&gt;'
2248
2412
  </dd>
2413
+ <dt class="dt3"><b>
2414
+ --trim=false </b></dt>
2415
+ <dd class="dd3">
2416
+ No trimming spaces around '&lt;% %&gt;'.
2417
+ </dd>
2249
2418
  </dl>
2250
2419
  <br>
2251
2420