erubis 2.1.0 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (118) hide show
  1. data/{ChangeLog → CHANGES} +139 -6
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +20 -5
  4. data/benchmark/erubybench.rb +465 -229
  5. data/benchmark/erubybench.rhtml +39 -15
  6. data/benchmark/erubybench.yaml +126 -46
  7. data/bin/erubis +2 -2
  8. data/bin/notext +3 -3
  9. data/contrib/action_view_base_rb.patch +23 -0
  10. data/contrib/erubis +466 -308
  11. data/contrib/inline-require +2 -2
  12. data/doc-api/classes/ERB.html +101 -0
  13. data/doc-api/classes/Erubis.html +59 -6
  14. data/doc-api/classes/Erubis/ArrayEnhancer.html +12 -12
  15. data/doc-api/classes/Erubis/Basic/Converter.html +61 -57
  16. data/doc-api/classes/Erubis/BiPatternEnhancer.html +14 -14
  17. data/doc-api/classes/Erubis/CGenerator.html +60 -60
  18. data/doc-api/classes/Erubis/Context.html +125 -29
  19. data/doc-api/classes/Erubis/Converter.html +73 -22
  20. data/doc-api/classes/Erubis/Engine.html +55 -39
  21. data/doc-api/classes/Erubis/EscapeEnhancer.html +6 -6
  22. data/doc-api/classes/Erubis/Evaluator.html +19 -19
  23. data/doc-api/classes/Erubis/Generator.html +16 -10
  24. data/doc-api/classes/Erubis/HeaderFooterEnhancer.html +14 -14
  25. data/doc-api/classes/Erubis/{Helper.html → Helpers.html} +5 -6
  26. data/doc-api/classes/Erubis/Helpers/RailsHelper.html +296 -0
  27. data/doc-api/classes/Erubis/JavaGenerator.html +54 -54
  28. data/doc-api/classes/Erubis/JavascriptGenerator.html +60 -60
  29. data/doc-api/classes/Erubis/Main.html +42 -30
  30. data/doc-api/classes/Erubis/NoCodeEnhancer.html +5 -5
  31. data/doc-api/classes/Erubis/NoTextEnhancer.html +7 -7
  32. data/doc-api/classes/Erubis/OptimizedEruby.html +6 -6
  33. data/doc-api/classes/Erubis/OptimizedGenerator.html +72 -72
  34. data/doc-api/classes/Erubis/OptimizedXmlEruby.html +6 -6
  35. data/doc-api/classes/Erubis/PI/Converter.html +28 -81
  36. data/doc-api/classes/Erubis/PI/Ec.html +6 -6
  37. data/doc-api/classes/Erubis/PI/Ejava.html +6 -6
  38. data/doc-api/classes/Erubis/PI/Ejavascript.html +6 -6
  39. data/doc-api/classes/Erubis/PI/Eperl.html +6 -6
  40. data/doc-api/classes/Erubis/PI/Ephp.html +6 -6
  41. data/doc-api/classes/Erubis/PI/Eruby.html +7 -7
  42. data/doc-api/classes/Erubis/PI/Escheme.html +6 -6
  43. data/doc-api/classes/Erubis/PI/TinyEruby.html +66 -79
  44. data/doc-api/classes/Erubis/PercentLineEnhancer.html +8 -8
  45. data/doc-api/classes/Erubis/PerlGenerator.html +54 -54
  46. data/doc-api/classes/Erubis/PhpGenerator.html +54 -54
  47. data/doc-api/classes/Erubis/PrintEnabledEnhancer.html +21 -21
  48. data/doc-api/classes/Erubis/PrintOutEnhancer.html +30 -30
  49. data/doc-api/classes/Erubis/RubyEvaluator.html +12 -12
  50. data/doc-api/classes/Erubis/RubyGenerator.html +9 -9
  51. data/doc-api/classes/Erubis/SimplifyEnhancer.html +7 -6
  52. data/doc-api/classes/Erubis/StdoutEnhancer.html +12 -12
  53. data/doc-api/classes/Erubis/StringBufferEnhancer.html +13 -13
  54. data/doc-api/classes/Erubis/TinyEruby.html +56 -68
  55. data/doc-api/classes/Erubis/XmlHelper.html +20 -23
  56. data/doc-api/created.rid +1 -1
  57. data/doc-api/files/{__/README_txt.html → README_txt.html} +35 -20
  58. data/doc-api/files/erubis/context_rb.html +2 -2
  59. data/doc-api/files/erubis/converter_rb.html +2 -2
  60. data/doc-api/files/erubis/engine/ec_rb.html +2 -2
  61. data/doc-api/files/erubis/engine/ejava_rb.html +2 -2
  62. data/doc-api/files/erubis/engine/ejavascript_rb.html +2 -2
  63. data/doc-api/files/erubis/engine/enhanced_rb.html +2 -2
  64. data/doc-api/files/erubis/engine/eperl_rb.html +2 -2
  65. data/doc-api/files/erubis/engine/ephp_rb.html +2 -2
  66. data/doc-api/files/erubis/engine/eruby_rb.html +2 -3
  67. data/doc-api/files/erubis/engine/escheme_rb.html +2 -2
  68. data/doc-api/files/erubis/engine/optimized_rb.html +2 -2
  69. data/doc-api/files/erubis/engine_rb.html +2 -2
  70. data/doc-api/files/erubis/enhancer_rb.html +2 -2
  71. data/doc-api/files/erubis/error_rb.html +2 -2
  72. data/doc-api/files/erubis/evaluator_rb.html +2 -2
  73. data/doc-api/files/erubis/generator_rb.html +2 -2
  74. data/doc-api/files/erubis/helper_rb.html +2 -2
  75. data/doc-api/files/erubis/{helper/rails_rb.html → helpers/rails_helper_rb.html} +6 -31
  76. data/doc-api/files/erubis/local-setting_rb.html +2 -2
  77. data/doc-api/files/erubis/main_rb.html +4 -2
  78. data/doc-api/files/erubis/tiny_rb.html +2 -2
  79. data/doc-api/files/erubis_rb.html +2 -2
  80. data/doc-api/fr_class_index.html +3 -3
  81. data/doc-api/fr_file_index.html +2 -2
  82. data/doc-api/fr_method_index.html +142 -147
  83. data/doc-api/index.html +1 -1
  84. data/doc/users-guide.html +387 -218
  85. data/lib/erubis.rb +21 -25
  86. data/lib/erubis/context.rb +34 -4
  87. data/lib/erubis/converter.rb +159 -115
  88. data/lib/erubis/engine.rb +29 -12
  89. data/lib/erubis/engine/ec.rb +2 -2
  90. data/lib/erubis/engine/ejava.rb +2 -2
  91. data/lib/erubis/engine/ejavascript.rb +2 -2
  92. data/lib/erubis/engine/enhanced.rb +2 -2
  93. data/lib/erubis/engine/eperl.rb +2 -2
  94. data/lib/erubis/engine/ephp.rb +2 -2
  95. data/lib/erubis/engine/eruby.rb +5 -6
  96. data/lib/erubis/engine/escheme.rb +2 -2
  97. data/lib/erubis/engine/optimized.rb +2 -2
  98. data/lib/erubis/enhancer.rb +33 -7
  99. data/lib/erubis/error.rb +2 -2
  100. data/lib/erubis/evaluator.rb +2 -2
  101. data/lib/erubis/generator.rb +6 -3
  102. data/lib/erubis/helper.rb +6 -23
  103. data/lib/erubis/helpers/rails_helper.rb +202 -0
  104. data/lib/erubis/local-setting.rb +4 -4
  105. data/lib/erubis/main.rb +90 -35
  106. data/lib/erubis/tiny.rb +57 -52
  107. data/test/assert-text-equal.rb +2 -2
  108. data/test/test-engines.rb +5 -5
  109. data/test/test-erubis.rb +173 -63
  110. data/test/test-main.rb +135 -27
  111. data/test/test-notext.rb +2 -2
  112. data/test/test.rb +2 -2
  113. data/test/testutil.rb +2 -2
  114. metadata +16 -16
  115. data/LGPL +0 -504
  116. data/doc-api/classes/Erubis/Helper/CachedRailsTemplate.html +0 -198
  117. data/doc-api/classes/Erubis/Helper/RailsTemplate.html +0 -366
  118. data/lib/erubis/helper/rails.rb +0 -159
@@ -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