simple-templater 0.0.1.4 → 0.0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (917) hide show
  1. data/.gitignore +9 -0
  2. data/Gemfile +5 -2
  3. data/LICENSE +1 -1
  4. data/bin/simple-templater +10 -6
  5. data/gems/cache/nake-0.0.8.gem +0 -0
  6. data/gems/cache/term-ansicolor-1.0.4.gem +0 -0
  7. data/lib/simple-templater/builder.rb +5 -5
  8. data/lib/simple-templater/generator.rb +4 -4
  9. data/lib/simple-templater/helpers.rb +2 -2
  10. data/lib/simple-templater/hooks/hook.rb +2 -2
  11. data/lib/simple-templater.rb +8 -0
  12. data/simple-templater.gemspec +15 -4
  13. data/spec/simple-templater/hooks/hook_spec.rb +0 -1
  14. data/spec/simple-templater/hooks/postprocess/git_repository_spec.rb +0 -1
  15. data/spec/spec_helper.rb +33 -0
  16. data/spec/stubs/test_generator/test_generator.gemspec +1 -1
  17. data/stubs/project/content/%name%.gemspec.rbt +16 -6
  18. data/stubs/project/content/%name%.pre.gemspec.rbt +8 -0
  19. data/stubs/project/content/.gitignore +12 -0
  20. data/stubs/project/content/CHANGELOG +1 -1
  21. data/stubs/project/content/Gemfile +8 -0
  22. data/stubs/project/content/README.textile.rbt +2 -2
  23. data/stubs/project/content/bin/%name%.rbt +1 -0
  24. data/{gems/gems/rspec-1.2.9/spec/spec/runner/empty_file.txt → stubs/project/content/examples/.gitignore} +0 -0
  25. data/{gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_bar.rb → stubs/project/content/lib/%name%/.gitignore} +0 -0
  26. data/stubs/project/content/lib/%name%/version.rb.rbt +5 -0
  27. data/stubs/project/content/lib/%name%.rb.rbt +0 -1
  28. data/{gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_foo.rb → stubs/project/content/spec/%name%/.gitignore} +0 -0
  29. data/stubs/project/content/tasks/%name%.nake +0 -0
  30. data/stubs/project/content/tasks.rb.rbt +37 -0
  31. data/stubs/stub/content/content/.gitignore +0 -0
  32. data/tasks.rb +37 -0
  33. metadata +48 -904
  34. data/Rakefile +0 -29
  35. data/gems/environment.rb +0 -107
  36. data/gems/gems/abstract-1.0.0/ChangeLog +0 -3
  37. data/gems/gems/abstract-1.0.0/README.txt +0 -57
  38. data/gems/gems/abstract-1.0.0/abstract.gemspec +0 -48
  39. data/gems/gems/abstract-1.0.0/lib/abstract.rb +0 -75
  40. data/gems/gems/abstract-1.0.0/setup.rb +0 -1331
  41. data/gems/gems/abstract-1.0.0/test/test.rb +0 -91
  42. data/gems/gems/erubis-2.6.5/CHANGES.txt +0 -744
  43. data/gems/gems/erubis-2.6.5/MIT-LICENSE +0 -20
  44. data/gems/gems/erubis-2.6.5/README.txt +0 -102
  45. data/gems/gems/erubis-2.6.5/benchmark/Makefile +0 -6
  46. data/gems/gems/erubis-2.6.5/benchmark/bench.rb +0 -313
  47. data/gems/gems/erubis-2.6.5/benchmark/bench_context.yaml +0 -141
  48. data/gems/gems/erubis-2.6.5/benchmark/templates/_footer.html +0 -4
  49. data/gems/gems/erubis-2.6.5/benchmark/templates/_header.html +0 -52
  50. data/gems/gems/erubis-2.6.5/benchmark/templates/bench_erb.rhtml +0 -29
  51. data/gems/gems/erubis-2.6.5/benchmark/templates/bench_erubis.rhtml +0 -29
  52. data/gems/gems/erubis-2.6.5/benchmark/templates/bench_eruby.rhtml +0 -29
  53. data/gems/gems/erubis-2.6.5/bin/erubis +0 -10
  54. data/gems/gems/erubis-2.6.5/contrib/erubis +0 -3330
  55. data/gems/gems/erubis-2.6.5/contrib/erubis-run.rb +0 -132
  56. data/gems/gems/erubis-2.6.5/contrib/inline-require +0 -179
  57. data/gems/gems/erubis-2.6.5/doc/docstyle.css +0 -188
  58. data/gems/gems/erubis-2.6.5/doc/users-guide.html +0 -3285
  59. data/gems/gems/erubis-2.6.5/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +0 -209
  60. data/gems/gems/erubis-2.6.5/doc-api/classes/ActionView.html +0 -105
  61. data/gems/gems/erubis-2.6.5/doc-api/classes/ERB.html +0 -101
  62. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ArrayBufferEnhancer.html +0 -175
  63. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ArrayBufferEruby.html +0 -120
  64. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ArrayEnhancer.html +0 -174
  65. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ArrayEruby.html +0 -120
  66. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Basic/Converter.html +0 -327
  67. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Basic/Engine.html +0 -130
  68. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Basic.html +0 -112
  69. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/BiPatternEnhancer.html +0 -215
  70. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/BiPatternEruby.html +0 -120
  71. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/CGenerator.html +0 -386
  72. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/CommandOptionError.html +0 -113
  73. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Context.html +0 -344
  74. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Converter.html +0 -283
  75. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/DeleteIndentEnhancer.html +0 -150
  76. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/DeleteIndentEruby.html +0 -120
  77. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Ec.html +0 -126
  78. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Ejava.html +0 -126
  79. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Ejavascript.html +0 -126
  80. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Engine.html +0 -305
  81. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Eperl.html +0 -126
  82. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Ephp.html +0 -126
  83. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ErboutEnhancer.html +0 -175
  84. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ErboutEruby.html +0 -120
  85. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ErubisError.html +0 -117
  86. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Eruby.html +0 -132
  87. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapeEnhancer.html +0 -165
  88. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapedEc.html +0 -120
  89. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapedEjava.html +0 -120
  90. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapedEjavascript.html +0 -120
  91. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapedEperl.html +0 -120
  92. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapedEphp.html +0 -120
  93. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapedEruby.html +0 -127
  94. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapedEscheme.html +0 -120
  95. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Escheme.html +0 -126
  96. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Evaluator.html +0 -212
  97. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/FastEruby.html +0 -131
  98. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Generator.html +0 -416
  99. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/HeaderFooterEnhancer.html +0 -267
  100. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/HeaderFooterEruby.html +0 -120
  101. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +0 -787
  102. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +0 -213
  103. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Helpers/RailsHelper.html +0 -349
  104. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Helpers.html +0 -116
  105. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/InterpolationEnhancer.html +0 -306
  106. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/InterpolationEruby.html +0 -120
  107. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/JavaGenerator.html +0 -359
  108. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/JavascriptGenerator.html +0 -386
  109. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Main.html +0 -341
  110. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/NoCodeEnhancer.html +0 -249
  111. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/NoCodeEruby.html +0 -120
  112. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/NoTextEnhancer.html +0 -159
  113. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/NoTextEruby.html +0 -120
  114. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/NotSupportedError.html +0 -119
  115. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/OptimizedEruby.html +0 -163
  116. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/OptimizedGenerator.html +0 -439
  117. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/OptimizedXmlEruby.html +0 -163
  118. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Converter.html +0 -266
  119. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ec.html +0 -166
  120. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ejava.html +0 -166
  121. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ejavascript.html +0 -166
  122. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Engine.html +0 -122
  123. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Eperl.html +0 -166
  124. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ephp.html +0 -166
  125. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Eruby.html +0 -155
  126. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Escheme.html +0 -166
  127. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/TinyEruby.html +0 -293
  128. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI.html +0 -124
  129. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PercentLineEnhancer.html +0 -179
  130. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PercentLineEruby.html +0 -120
  131. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PerlGenerator.html +0 -344
  132. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PhpGenerator.html +0 -350
  133. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PreprocessingEruby.html +0 -183
  134. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PreprocessingHelper.html +0 -212
  135. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PrintEnabledEnhancer.html +0 -212
  136. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PrintEnabledEruby.html +0 -120
  137. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PrintOutEnhancer.html +0 -244
  138. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PrintOutEruby.html +0 -120
  139. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html +0 -121
  140. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/RubyEvaluator.html +0 -227
  141. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/RubyGenerator.html +0 -327
  142. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/SchemeGenerator.html +0 -382
  143. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/SimplifiedEruby.html +0 -120
  144. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/SimplifyEnhancer.html +0 -191
  145. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StdoutEnhancer.html +0 -173
  146. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StdoutEruby.html +0 -120
  147. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StdoutSimplifiedEruby.html +0 -121
  148. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StringBufferEnhancer.html +0 -174
  149. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StringBufferEruby.html +0 -120
  150. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StringIOEruby.html +0 -120
  151. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/TinyEruby.html +0 -298
  152. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/XmlEruby.html +0 -130
  153. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/XmlHelper.html +0 -255
  154. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis.html +0 -353
  155. data/gems/gems/erubis-2.6.5/doc-api/created.rid +0 -1
  156. data/gems/gems/erubis-2.6.5/doc-api/files/README_txt.html +0 -247
  157. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/context_rb.html +0 -107
  158. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/converter_rb.html +0 -114
  159. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ec_rb.html +0 -115
  160. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ejava_rb.html +0 -115
  161. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ejavascript_rb.html +0 -115
  162. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/enhanced_rb.html +0 -115
  163. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/eperl_rb.html +0 -115
  164. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ephp_rb.html +0 -115
  165. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/eruby_rb.html +0 -115
  166. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/escheme_rb.html +0 -115
  167. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/optimized_rb.html +0 -114
  168. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine_rb.html +0 -117
  169. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/enhancer_rb.html +0 -107
  170. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/error_rb.html +0 -107
  171. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/evaluator_rb.html +0 -115
  172. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/generator_rb.html +0 -114
  173. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/helper_rb.html +0 -107
  174. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/helpers/rails_form_helper_rb.html +0 -107
  175. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/helpers/rails_helper_rb.html +0 -116
  176. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/local-setting_rb.html +0 -107
  177. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/main_rb.html +0 -127
  178. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/preprocessing_rb.html +0 -114
  179. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/tiny_rb.html +0 -107
  180. data/gems/gems/erubis-2.6.5/doc-api/files/erubis_rb.html +0 -118
  181. data/gems/gems/erubis-2.6.5/doc-api/fr_class_index.html +0 -122
  182. data/gems/gems/erubis-2.6.5/doc-api/fr_file_index.html +0 -51
  183. data/gems/gems/erubis-2.6.5/doc-api/fr_method_index.html +0 -251
  184. data/gems/gems/erubis-2.6.5/doc-api/index.html +0 -24
  185. data/gems/gems/erubis-2.6.5/doc-api/rdoc-style.css +0 -208
  186. data/gems/gems/erubis-2.6.5/examples/basic/Makefile +0 -53
  187. data/gems/gems/erubis-2.6.5/examples/basic/example.ec +0 -42
  188. data/gems/gems/erubis-2.6.5/examples/basic/example.ejava +0 -45
  189. data/gems/gems/erubis-2.6.5/examples/basic/example.ejs +0 -16
  190. data/gems/gems/erubis-2.6.5/examples/basic/example.eperl +0 -16
  191. data/gems/gems/erubis-2.6.5/examples/basic/example.ephp +0 -17
  192. data/gems/gems/erubis-2.6.5/examples/basic/example.eruby +0 -15
  193. data/gems/gems/erubis-2.6.5/examples/basic/example.escheme +0 -26
  194. data/gems/gems/erubis-2.6.5/examples/pi/Makefile +0 -54
  195. data/gems/gems/erubis-2.6.5/examples/pi/example.ec +0 -42
  196. data/gems/gems/erubis-2.6.5/examples/pi/example.ejava +0 -45
  197. data/gems/gems/erubis-2.6.5/examples/pi/example.ejs +0 -16
  198. data/gems/gems/erubis-2.6.5/examples/pi/example.eperl +0 -16
  199. data/gems/gems/erubis-2.6.5/examples/pi/example.ephp +0 -17
  200. data/gems/gems/erubis-2.6.5/examples/pi/example.eruby +0 -15
  201. data/gems/gems/erubis-2.6.5/examples/pi/example.escheme +0 -26
  202. data/gems/gems/erubis-2.6.5/lib/erubis/context.rb +0 -83
  203. data/gems/gems/erubis-2.6.5/lib/erubis/converter.rb +0 -357
  204. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ec.rb +0 -117
  205. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ejava.rb +0 -110
  206. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ejavascript.rb +0 -119
  207. data/gems/gems/erubis-2.6.5/lib/erubis/engine/enhanced.rb +0 -121
  208. data/gems/gems/erubis-2.6.5/lib/erubis/engine/eperl.rb +0 -95
  209. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ephp.rb +0 -99
  210. data/gems/gems/erubis-2.6.5/lib/erubis/engine/eruby.rb +0 -124
  211. data/gems/gems/erubis-2.6.5/lib/erubis/engine/escheme.rb +0 -114
  212. data/gems/gems/erubis-2.6.5/lib/erubis/engine/optimized.rb +0 -127
  213. data/gems/gems/erubis-2.6.5/lib/erubis/engine.rb +0 -120
  214. data/gems/gems/erubis-2.6.5/lib/erubis/enhancer.rb +0 -680
  215. data/gems/gems/erubis-2.6.5/lib/erubis/error.rb +0 -23
  216. data/gems/gems/erubis-2.6.5/lib/erubis/evaluator.rb +0 -88
  217. data/gems/gems/erubis-2.6.5/lib/erubis/generator.rb +0 -85
  218. data/gems/gems/erubis-2.6.5/lib/erubis/helper.rb +0 -47
  219. data/gems/gems/erubis-2.6.5/lib/erubis/helpers/rails_form_helper.rb +0 -197
  220. data/gems/gems/erubis-2.6.5/lib/erubis/helpers/rails_helper.rb +0 -353
  221. data/gems/gems/erubis-2.6.5/lib/erubis/local-setting.rb +0 -9
  222. data/gems/gems/erubis-2.6.5/lib/erubis/main.rb +0 -489
  223. data/gems/gems/erubis-2.6.5/lib/erubis/preprocessing.rb +0 -58
  224. data/gems/gems/erubis-2.6.5/lib/erubis/tiny.rb +0 -144
  225. data/gems/gems/erubis-2.6.5/lib/erubis.rb +0 -72
  226. data/gems/gems/erubis-2.6.5/setup.rb +0 -1331
  227. data/gems/gems/erubis-2.6.5/test/assert-text-equal.rb +0 -44
  228. data/gems/gems/erubis-2.6.5/test/data/users-guide/Example.ejava +0 -55
  229. data/gems/gems/erubis-2.6.5/test/data/users-guide/array_example.result +0 -9
  230. data/gems/gems/erubis-2.6.5/test/data/users-guide/arraybuffer_example.result +0 -9
  231. data/gems/gems/erubis-2.6.5/test/data/users-guide/bipattern-example.rhtml +0 -4
  232. data/gems/gems/erubis-2.6.5/test/data/users-guide/bipattern_example.result +0 -6
  233. data/gems/gems/erubis-2.6.5/test/data/users-guide/context.rb +0 -6
  234. data/gems/gems/erubis-2.6.5/test/data/users-guide/context.yaml +0 -8
  235. data/gems/gems/erubis-2.6.5/test/data/users-guide/def_method.rb +0 -14
  236. data/gems/gems/erubis-2.6.5/test/data/users-guide/def_method.result +0 -3
  237. data/gems/gems/erubis-2.6.5/test/data/users-guide/escape_example.result +0 -9
  238. data/gems/gems/erubis-2.6.5/test/data/users-guide/example.ec +0 -27
  239. data/gems/gems/erubis-2.6.5/test/data/users-guide/example.ejs +0 -20
  240. data/gems/gems/erubis-2.6.5/test/data/users-guide/example.eperl +0 -18
  241. data/gems/gems/erubis-2.6.5/test/data/users-guide/example.ephp +0 -18
  242. data/gems/gems/erubis-2.6.5/test/data/users-guide/example.eruby +0 -6
  243. data/gems/gems/erubis-2.6.5/test/data/users-guide/example.escheme +0 -28
  244. data/gems/gems/erubis-2.6.5/test/data/users-guide/example1.eruby +0 -6
  245. data/gems/gems/erubis-2.6.5/test/data/users-guide/example1.rb +0 -17
  246. data/gems/gems/erubis-2.6.5/test/data/users-guide/example1.result +0 -16
  247. data/gems/gems/erubis-2.6.5/test/data/users-guide/example10.rb +0 -4
  248. data/gems/gems/erubis-2.6.5/test/data/users-guide/example10.result +0 -17
  249. data/gems/gems/erubis-2.6.5/test/data/users-guide/example10.xhtml +0 -14
  250. data/gems/gems/erubis-2.6.5/test/data/users-guide/example10_x.result +0 -17
  251. data/gems/gems/erubis-2.6.5/test/data/users-guide/example11.php +0 -20
  252. data/gems/gems/erubis-2.6.5/test/data/users-guide/example11.result +0 -23
  253. data/gems/gems/erubis-2.6.5/test/data/users-guide/example11.rhtml +0 -21
  254. data/gems/gems/erubis-2.6.5/test/data/users-guide/example11_C.result +0 -10
  255. data/gems/gems/erubis-2.6.5/test/data/users-guide/example11_N.result +0 -16
  256. data/gems/gems/erubis-2.6.5/test/data/users-guide/example11_U.result +0 -16
  257. data/gems/gems/erubis-2.6.5/test/data/users-guide/example11_php.result +0 -15
  258. data/gems/gems/erubis-2.6.5/test/data/users-guide/example1_x.result +0 -9
  259. data/gems/gems/erubis-2.6.5/test/data/users-guide/example2.eruby +0 -7
  260. data/gems/gems/erubis-2.6.5/test/data/users-guide/example2.rb +0 -10
  261. data/gems/gems/erubis-2.6.5/test/data/users-guide/example2.result +0 -27
  262. data/gems/gems/erubis-2.6.5/test/data/users-guide/example2_trim.result +0 -10
  263. data/gems/gems/erubis-2.6.5/test/data/users-guide/example2_x.result +0 -10
  264. data/gems/gems/erubis-2.6.5/test/data/users-guide/example3.eruby +0 -6
  265. data/gems/gems/erubis-2.6.5/test/data/users-guide/example3.rb +0 -10
  266. data/gems/gems/erubis-2.6.5/test/data/users-guide/example31.result +0 -22
  267. data/gems/gems/erubis-2.6.5/test/data/users-guide/example32.result +0 -4
  268. data/gems/gems/erubis-2.6.5/test/data/users-guide/example3_e.result +0 -8
  269. data/gems/gems/erubis-2.6.5/test/data/users-guide/example4.eruby +0 -3
  270. data/gems/gems/erubis-2.6.5/test/data/users-guide/example4.rb +0 -11
  271. data/gems/gems/erubis-2.6.5/test/data/users-guide/example4.result +0 -10
  272. data/gems/gems/erubis-2.6.5/test/data/users-guide/example4_x.result +0 -5
  273. data/gems/gems/erubis-2.6.5/test/data/users-guide/example5.eruby +0 -6
  274. data/gems/gems/erubis-2.6.5/test/data/users-guide/example5.rb +0 -16
  275. data/gems/gems/erubis-2.6.5/test/data/users-guide/example5.result +0 -7
  276. data/gems/gems/erubis-2.6.5/test/data/users-guide/example6.rb +0 -12
  277. data/gems/gems/erubis-2.6.5/test/data/users-guide/example6.result +0 -7
  278. data/gems/gems/erubis-2.6.5/test/data/users-guide/example7.eruby +0 -8
  279. data/gems/gems/erubis-2.6.5/test/data/users-guide/example71.result +0 -13
  280. data/gems/gems/erubis-2.6.5/test/data/users-guide/example72.result +0 -13
  281. data/gems/gems/erubis-2.6.5/test/data/users-guide/example8.eruby +0 -6
  282. data/gems/gems/erubis-2.6.5/test/data/users-guide/example8_ruby.result +0 -7
  283. data/gems/gems/erubis-2.6.5/test/data/users-guide/example8_yaml.result +0 -7
  284. data/gems/gems/erubis-2.6.5/test/data/users-guide/example9.eruby +0 -3
  285. data/gems/gems/erubis-2.6.5/test/data/users-guide/example9.rb +0 -8
  286. data/gems/gems/erubis-2.6.5/test/data/users-guide/example9.result +0 -9
  287. data/gems/gems/erubis-2.6.5/test/data/users-guide/example91.result +0 -5
  288. data/gems/gems/erubis-2.6.5/test/data/users-guide/example92.result +0 -4
  289. data/gems/gems/erubis-2.6.5/test/data/users-guide/example_c.result +0 -29
  290. data/gems/gems/erubis-2.6.5/test/data/users-guide/example_java.result +0 -56
  291. data/gems/gems/erubis-2.6.5/test/data/users-guide/example_js.result +0 -22
  292. data/gems/gems/erubis-2.6.5/test/data/users-guide/example_perl.result +0 -20
  293. data/gems/gems/erubis-2.6.5/test/data/users-guide/example_php.result +0 -19
  294. data/gems/gems/erubis-2.6.5/test/data/users-guide/example_scheme.result +0 -30
  295. data/gems/gems/erubis-2.6.5/test/data/users-guide/example_scheme_display.result +0 -29
  296. data/gems/gems/erubis-2.6.5/test/data/users-guide/fasteruby.rb +0 -11
  297. data/gems/gems/erubis-2.6.5/test/data/users-guide/fasteruby.result +0 -38
  298. data/gems/gems/erubis-2.6.5/test/data/users-guide/fasteruby.rhtml +0 -15
  299. data/gems/gems/erubis-2.6.5/test/data/users-guide/headerfooter-example.eruby +0 -9
  300. data/gems/gems/erubis-2.6.5/test/data/users-guide/headerfooter-example2.rb +0 -8
  301. data/gems/gems/erubis-2.6.5/test/data/users-guide/headerfooter-example2.rhtml +0 -10
  302. data/gems/gems/erubis-2.6.5/test/data/users-guide/headerfooter_example.result +0 -11
  303. data/gems/gems/erubis-2.6.5/test/data/users-guide/headerfooter_example2.result +0 -13
  304. data/gems/gems/erubis-2.6.5/test/data/users-guide/interpolation_example.result +0 -9
  305. data/gems/gems/erubis-2.6.5/test/data/users-guide/main_program1.rb +0 -8
  306. data/gems/gems/erubis-2.6.5/test/data/users-guide/main_program1.result +0 -6
  307. data/gems/gems/erubis-2.6.5/test/data/users-guide/main_program2.rb +0 -8
  308. data/gems/gems/erubis-2.6.5/test/data/users-guide/main_program2.result +0 -6
  309. data/gems/gems/erubis-2.6.5/test/data/users-guide/nocode-example.eruby +0 -14
  310. data/gems/gems/erubis-2.6.5/test/data/users-guide/nocode-php.result +0 -20
  311. data/gems/gems/erubis-2.6.5/test/data/users-guide/nocode_example.result +0 -15
  312. data/gems/gems/erubis-2.6.5/test/data/users-guide/normal-eruby-test.eruby +0 -9
  313. data/gems/gems/erubis-2.6.5/test/data/users-guide/normal_eruby_test.result +0 -11
  314. data/gems/gems/erubis-2.6.5/test/data/users-guide/notext-example.eruby +0 -14
  315. data/gems/gems/erubis-2.6.5/test/data/users-guide/notext-example.php +0 -19
  316. data/gems/gems/erubis-2.6.5/test/data/users-guide/notext-php.result +0 -20
  317. data/gems/gems/erubis-2.6.5/test/data/users-guide/notext_example.result +0 -16
  318. data/gems/gems/erubis-2.6.5/test/data/users-guide/percentline-example.rhtml +0 -4
  319. data/gems/gems/erubis-2.6.5/test/data/users-guide/percentline_example.result +0 -7
  320. data/gems/gems/erubis-2.6.5/test/data/users-guide/printenable_example.result +0 -4
  321. data/gems/gems/erubis-2.6.5/test/data/users-guide/printenabled-example.eruby +0 -3
  322. data/gems/gems/erubis-2.6.5/test/data/users-guide/printenabled-example.rb +0 -8
  323. data/gems/gems/erubis-2.6.5/test/data/users-guide/printstatement_example.result +0 -8
  324. data/gems/gems/erubis-2.6.5/test/data/users-guide/simplify_example.result +0 -9
  325. data/gems/gems/erubis-2.6.5/test/data/users-guide/stderr.log +0 -3
  326. data/gems/gems/erubis-2.6.5/test/data/users-guide/stdout_exmple.result +0 -9
  327. data/gems/gems/erubis-2.6.5/test/data/users-guide/stringbuffer_example.result +0 -9
  328. data/gems/gems/erubis-2.6.5/test/data/users-guide/tail_260.result +0 -4
  329. data/gems/gems/erubis-2.6.5/test/data/users-guide/tailnewline.rhtml +0 -3
  330. data/gems/gems/erubis-2.6.5/test/data/users-guide/template1.rhtml +0 -4
  331. data/gems/gems/erubis-2.6.5/test/data/users-guide/template2.rhtml +0 -4
  332. data/gems/gems/erubis-2.6.5/test/test-engines.rb +0 -369
  333. data/gems/gems/erubis-2.6.5/test/test-enhancers.rb +0 -570
  334. data/gems/gems/erubis-2.6.5/test/test-erubis.rb +0 -883
  335. data/gems/gems/erubis-2.6.5/test/test-main.rb +0 -721
  336. data/gems/gems/erubis-2.6.5/test/test-users-guide.rb +0 -57
  337. data/gems/gems/erubis-2.6.5/test/test.rb +0 -29
  338. data/gems/gems/erubis-2.6.5/test/testutil.rb +0 -96
  339. data/gems/gems/haml-2.2.16/CONTRIBUTING +0 -4
  340. data/gems/gems/haml-2.2.16/MIT-LICENSE +0 -20
  341. data/gems/gems/haml-2.2.16/README.md +0 -357
  342. data/gems/gems/haml-2.2.16/REVISION +0 -1
  343. data/gems/gems/haml-2.2.16/Rakefile +0 -392
  344. data/gems/gems/haml-2.2.16/VERSION +0 -1
  345. data/gems/gems/haml-2.2.16/VERSION_NAME +0 -1
  346. data/gems/gems/haml-2.2.16/bin/css2sass +0 -7
  347. data/gems/gems/haml-2.2.16/bin/haml +0 -9
  348. data/gems/gems/haml-2.2.16/bin/html2haml +0 -7
  349. data/gems/gems/haml-2.2.16/bin/sass +0 -8
  350. data/gems/gems/haml-2.2.16/extra/haml-mode.el +0 -662
  351. data/gems/gems/haml-2.2.16/extra/sass-mode.el +0 -206
  352. data/gems/gems/haml-2.2.16/extra/update_watch.rb +0 -13
  353. data/gems/gems/haml-2.2.16/init.rb +0 -16
  354. data/gems/gems/haml-2.2.16/lib/haml/buffer.rb +0 -302
  355. data/gems/gems/haml-2.2.16/lib/haml/engine.rb +0 -299
  356. data/gems/gems/haml-2.2.16/lib/haml/error.rb +0 -22
  357. data/gems/gems/haml-2.2.16/lib/haml/exec.rb +0 -459
  358. data/gems/gems/haml-2.2.16/lib/haml/filters.rb +0 -341
  359. data/gems/gems/haml-2.2.16/lib/haml/helpers/action_view_extensions.rb +0 -55
  360. data/gems/gems/haml-2.2.16/lib/haml/helpers/action_view_mods.rb +0 -177
  361. data/gems/gems/haml-2.2.16/lib/haml/helpers/xss_mods.rb +0 -95
  362. data/gems/gems/haml-2.2.16/lib/haml/helpers.rb +0 -563
  363. data/gems/gems/haml-2.2.16/lib/haml/html.rb +0 -259
  364. data/gems/gems/haml-2.2.16/lib/haml/precompiler.rb +0 -1043
  365. data/gems/gems/haml-2.2.16/lib/haml/shared.rb +0 -78
  366. data/gems/gems/haml-2.2.16/lib/haml/template/patch.rb +0 -58
  367. data/gems/gems/haml-2.2.16/lib/haml/template/plugin.rb +0 -75
  368. data/gems/gems/haml-2.2.16/lib/haml/template.rb +0 -85
  369. data/gems/gems/haml-2.2.16/lib/haml/util.rb +0 -289
  370. data/gems/gems/haml-2.2.16/lib/haml/version.rb +0 -64
  371. data/gems/gems/haml-2.2.16/lib/haml.rb +0 -40
  372. data/gems/gems/haml-2.2.16/lib/sass/css.rb +0 -404
  373. data/gems/gems/haml-2.2.16/lib/sass/engine.rb +0 -475
  374. data/gems/gems/haml-2.2.16/lib/sass/environment.rb +0 -79
  375. data/gems/gems/haml-2.2.16/lib/sass/error.rb +0 -57
  376. data/gems/gems/haml-2.2.16/lib/sass/files.rb +0 -140
  377. data/gems/gems/haml-2.2.16/lib/sass/plugin/merb.rb +0 -49
  378. data/gems/gems/haml-2.2.16/lib/sass/plugin/rack.rb +0 -65
  379. data/gems/gems/haml-2.2.16/lib/sass/plugin/rails.rb +0 -24
  380. data/gems/gems/haml-2.2.16/lib/sass/plugin.rb +0 -225
  381. data/gems/gems/haml-2.2.16/lib/sass/repl.rb +0 -58
  382. data/gems/gems/haml-2.2.16/lib/sass/script/bool.rb +0 -17
  383. data/gems/gems/haml-2.2.16/lib/sass/script/color.rb +0 -220
  384. data/gems/gems/haml-2.2.16/lib/sass/script/funcall.rb +0 -50
  385. data/gems/gems/haml-2.2.16/lib/sass/script/functions.rb +0 -252
  386. data/gems/gems/haml-2.2.16/lib/sass/script/lexer.rb +0 -191
  387. data/gems/gems/haml-2.2.16/lib/sass/script/literal.rb +0 -177
  388. data/gems/gems/haml-2.2.16/lib/sass/script/node.rb +0 -14
  389. data/gems/gems/haml-2.2.16/lib/sass/script/number.rb +0 -381
  390. data/gems/gems/haml-2.2.16/lib/sass/script/operation.rb +0 -45
  391. data/gems/gems/haml-2.2.16/lib/sass/script/parser.rb +0 -222
  392. data/gems/gems/haml-2.2.16/lib/sass/script/string.rb +0 -12
  393. data/gems/gems/haml-2.2.16/lib/sass/script/unary_operation.rb +0 -34
  394. data/gems/gems/haml-2.2.16/lib/sass/script/variable.rb +0 -31
  395. data/gems/gems/haml-2.2.16/lib/sass/script.rb +0 -59
  396. data/gems/gems/haml-2.2.16/lib/sass/tree/comment_node.rb +0 -84
  397. data/gems/gems/haml-2.2.16/lib/sass/tree/debug_node.rb +0 -30
  398. data/gems/gems/haml-2.2.16/lib/sass/tree/directive_node.rb +0 -68
  399. data/gems/gems/haml-2.2.16/lib/sass/tree/for_node.rb +0 -48
  400. data/gems/gems/haml-2.2.16/lib/sass/tree/if_node.rb +0 -54
  401. data/gems/gems/haml-2.2.16/lib/sass/tree/import_node.rb +0 -65
  402. data/gems/gems/haml-2.2.16/lib/sass/tree/mixin_def_node.rb +0 -29
  403. data/gems/gems/haml-2.2.16/lib/sass/tree/mixin_node.rb +0 -48
  404. data/gems/gems/haml-2.2.16/lib/sass/tree/node.rb +0 -251
  405. data/gems/gems/haml-2.2.16/lib/sass/tree/prop_node.rb +0 -121
  406. data/gems/gems/haml-2.2.16/lib/sass/tree/rule_node.rb +0 -223
  407. data/gems/gems/haml-2.2.16/lib/sass/tree/variable_node.rb +0 -34
  408. data/gems/gems/haml-2.2.16/lib/sass/tree/while_node.rb +0 -31
  409. data/gems/gems/haml-2.2.16/lib/sass.rb +0 -24
  410. data/gems/gems/haml-2.2.16/rails/init.rb +0 -1
  411. data/gems/gems/haml-2.2.16/test/benchmark.rb +0 -99
  412. data/gems/gems/haml-2.2.16/test/haml/engine_test.rb +0 -1247
  413. data/gems/gems/haml-2.2.16/test/haml/helper_test.rb +0 -282
  414. data/gems/gems/haml-2.2.16/test/haml/html2haml_test.rb +0 -139
  415. data/gems/gems/haml-2.2.16/test/haml/markaby/standard.mab +0 -52
  416. data/gems/gems/haml-2.2.16/test/haml/mocks/article.rb +0 -6
  417. data/gems/gems/haml-2.2.16/test/haml/results/content_for_layout.xhtml +0 -12
  418. data/gems/gems/haml-2.2.16/test/haml/results/eval_suppressed.xhtml +0 -9
  419. data/gems/gems/haml-2.2.16/test/haml/results/filters.xhtml +0 -62
  420. data/gems/gems/haml-2.2.16/test/haml/results/helpers.xhtml +0 -93
  421. data/gems/gems/haml-2.2.16/test/haml/results/helpful.xhtml +0 -10
  422. data/gems/gems/haml-2.2.16/test/haml/results/just_stuff.xhtml +0 -68
  423. data/gems/gems/haml-2.2.16/test/haml/results/list.xhtml +0 -12
  424. data/gems/gems/haml-2.2.16/test/haml/results/nuke_inner_whitespace.xhtml +0 -40
  425. data/gems/gems/haml-2.2.16/test/haml/results/nuke_outer_whitespace.xhtml +0 -148
  426. data/gems/gems/haml-2.2.16/test/haml/results/original_engine.xhtml +0 -20
  427. data/gems/gems/haml-2.2.16/test/haml/results/partial_layout.xhtml +0 -5
  428. data/gems/gems/haml-2.2.16/test/haml/results/partials.xhtml +0 -21
  429. data/gems/gems/haml-2.2.16/test/haml/results/render_layout.xhtml +0 -3
  430. data/gems/gems/haml-2.2.16/test/haml/results/silent_script.xhtml +0 -74
  431. data/gems/gems/haml-2.2.16/test/haml/results/standard.xhtml +0 -162
  432. data/gems/gems/haml-2.2.16/test/haml/results/tag_parsing.xhtml +0 -23
  433. data/gems/gems/haml-2.2.16/test/haml/results/very_basic.xhtml +0 -5
  434. data/gems/gems/haml-2.2.16/test/haml/results/whitespace_handling.xhtml +0 -89
  435. data/gems/gems/haml-2.2.16/test/haml/rhtml/_av_partial_1.rhtml +0 -12
  436. data/gems/gems/haml-2.2.16/test/haml/rhtml/_av_partial_2.rhtml +0 -8
  437. data/gems/gems/haml-2.2.16/test/haml/rhtml/action_view.rhtml +0 -62
  438. data/gems/gems/haml-2.2.16/test/haml/rhtml/standard.rhtml +0 -54
  439. data/gems/gems/haml-2.2.16/test/haml/spec/README.md +0 -97
  440. data/gems/gems/haml-2.2.16/test/haml/spec/lua_haml_spec.lua +0 -30
  441. data/gems/gems/haml-2.2.16/test/haml/spec/ruby_haml_test.rb +0 -19
  442. data/gems/gems/haml-2.2.16/test/haml/spec/tests.json +0 -488
  443. data/gems/gems/haml-2.2.16/test/haml/template_test.rb +0 -296
  444. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_1.haml +0 -9
  445. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_1_ugly.haml +0 -9
  446. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_2.haml +0 -5
  447. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_2_ugly.haml +0 -5
  448. data/gems/gems/haml-2.2.16/test/haml/templates/_layout.erb +0 -3
  449. data/gems/gems/haml-2.2.16/test/haml/templates/_layout_for_partial.haml +0 -3
  450. data/gems/gems/haml-2.2.16/test/haml/templates/_partial.haml +0 -8
  451. data/gems/gems/haml-2.2.16/test/haml/templates/_text_area.haml +0 -3
  452. data/gems/gems/haml-2.2.16/test/haml/templates/action_view.haml +0 -47
  453. data/gems/gems/haml-2.2.16/test/haml/templates/action_view_ugly.haml +0 -47
  454. data/gems/gems/haml-2.2.16/test/haml/templates/breakage.haml +0 -8
  455. data/gems/gems/haml-2.2.16/test/haml/templates/content_for_layout.haml +0 -8
  456. data/gems/gems/haml-2.2.16/test/haml/templates/eval_suppressed.haml +0 -11
  457. data/gems/gems/haml-2.2.16/test/haml/templates/filters.haml +0 -66
  458. data/gems/gems/haml-2.2.16/test/haml/templates/helpers.haml +0 -95
  459. data/gems/gems/haml-2.2.16/test/haml/templates/helpful.haml +0 -11
  460. data/gems/gems/haml-2.2.16/test/haml/templates/just_stuff.haml +0 -83
  461. data/gems/gems/haml-2.2.16/test/haml/templates/list.haml +0 -12
  462. data/gems/gems/haml-2.2.16/test/haml/templates/nuke_inner_whitespace.haml +0 -32
  463. data/gems/gems/haml-2.2.16/test/haml/templates/nuke_outer_whitespace.haml +0 -144
  464. data/gems/gems/haml-2.2.16/test/haml/templates/original_engine.haml +0 -17
  465. data/gems/gems/haml-2.2.16/test/haml/templates/partial_layout.haml +0 -3
  466. data/gems/gems/haml-2.2.16/test/haml/templates/partialize.haml +0 -1
  467. data/gems/gems/haml-2.2.16/test/haml/templates/partials.haml +0 -12
  468. data/gems/gems/haml-2.2.16/test/haml/templates/render_layout.haml +0 -2
  469. data/gems/gems/haml-2.2.16/test/haml/templates/silent_script.haml +0 -40
  470. data/gems/gems/haml-2.2.16/test/haml/templates/standard.haml +0 -42
  471. data/gems/gems/haml-2.2.16/test/haml/templates/standard_ugly.haml +0 -42
  472. data/gems/gems/haml-2.2.16/test/haml/templates/tag_parsing.haml +0 -21
  473. data/gems/gems/haml-2.2.16/test/haml/templates/very_basic.haml +0 -4
  474. data/gems/gems/haml-2.2.16/test/haml/templates/whitespace_handling.haml +0 -87
  475. data/gems/gems/haml-2.2.16/test/haml/util_test.rb +0 -107
  476. data/gems/gems/haml-2.2.16/test/linked_rails.rb +0 -21
  477. data/gems/gems/haml-2.2.16/test/sass/css2sass_test.rb +0 -251
  478. data/gems/gems/haml-2.2.16/test/sass/engine_test.rb +0 -914
  479. data/gems/gems/haml-2.2.16/test/sass/functions_test.rb +0 -173
  480. data/gems/gems/haml-2.2.16/test/sass/more_results/more1.css +0 -9
  481. data/gems/gems/haml-2.2.16/test/sass/more_results/more1_with_line_comments.css +0 -26
  482. data/gems/gems/haml-2.2.16/test/sass/more_results/more_import.css +0 -29
  483. data/gems/gems/haml-2.2.16/test/sass/more_templates/_more_partial.sass +0 -2
  484. data/gems/gems/haml-2.2.16/test/sass/more_templates/more1.sass +0 -23
  485. data/gems/gems/haml-2.2.16/test/sass/more_templates/more_import.sass +0 -11
  486. data/gems/gems/haml-2.2.16/test/sass/plugin_test.rb +0 -222
  487. data/gems/gems/haml-2.2.16/test/sass/results/alt.css +0 -4
  488. data/gems/gems/haml-2.2.16/test/sass/results/basic.css +0 -9
  489. data/gems/gems/haml-2.2.16/test/sass/results/compact.css +0 -5
  490. data/gems/gems/haml-2.2.16/test/sass/results/complex.css +0 -87
  491. data/gems/gems/haml-2.2.16/test/sass/results/compressed.css +0 -1
  492. data/gems/gems/haml-2.2.16/test/sass/results/expanded.css +0 -19
  493. data/gems/gems/haml-2.2.16/test/sass/results/import.css +0 -29
  494. data/gems/gems/haml-2.2.16/test/sass/results/line_numbers.css +0 -49
  495. data/gems/gems/haml-2.2.16/test/sass/results/mixins.css +0 -95
  496. data/gems/gems/haml-2.2.16/test/sass/results/multiline.css +0 -24
  497. data/gems/gems/haml-2.2.16/test/sass/results/nested.css +0 -22
  498. data/gems/gems/haml-2.2.16/test/sass/results/parent_ref.css +0 -13
  499. data/gems/gems/haml-2.2.16/test/sass/results/script.css +0 -16
  500. data/gems/gems/haml-2.2.16/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
  501. data/gems/gems/haml-2.2.16/test/sass/results/subdir/subdir.css +0 -3
  502. data/gems/gems/haml-2.2.16/test/sass/results/units.css +0 -11
  503. data/gems/gems/haml-2.2.16/test/sass/script_test.rb +0 -267
  504. data/gems/gems/haml-2.2.16/test/sass/templates/_partial.sass +0 -2
  505. data/gems/gems/haml-2.2.16/test/sass/templates/alt.sass +0 -16
  506. data/gems/gems/haml-2.2.16/test/sass/templates/basic.sass +0 -23
  507. data/gems/gems/haml-2.2.16/test/sass/templates/bork.sass +0 -2
  508. data/gems/gems/haml-2.2.16/test/sass/templates/bork2.sass +0 -2
  509. data/gems/gems/haml-2.2.16/test/sass/templates/compact.sass +0 -17
  510. data/gems/gems/haml-2.2.16/test/sass/templates/complex.sass +0 -307
  511. data/gems/gems/haml-2.2.16/test/sass/templates/compressed.sass +0 -15
  512. data/gems/gems/haml-2.2.16/test/sass/templates/expanded.sass +0 -17
  513. data/gems/gems/haml-2.2.16/test/sass/templates/import.sass +0 -11
  514. data/gems/gems/haml-2.2.16/test/sass/templates/importee.sass +0 -19
  515. data/gems/gems/haml-2.2.16/test/sass/templates/line_numbers.sass +0 -13
  516. data/gems/gems/haml-2.2.16/test/sass/templates/mixins.sass +0 -76
  517. data/gems/gems/haml-2.2.16/test/sass/templates/multiline.sass +0 -20
  518. data/gems/gems/haml-2.2.16/test/sass/templates/nested.sass +0 -25
  519. data/gems/gems/haml-2.2.16/test/sass/templates/parent_ref.sass +0 -25
  520. data/gems/gems/haml-2.2.16/test/sass/templates/script.sass +0 -101
  521. data/gems/gems/haml-2.2.16/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
  522. data/gems/gems/haml-2.2.16/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
  523. data/gems/gems/haml-2.2.16/test/sass/templates/subdir/subdir.sass +0 -6
  524. data/gems/gems/haml-2.2.16/test/sass/templates/units.sass +0 -11
  525. data/gems/gems/haml-2.2.16/test/test_helper.rb +0 -35
  526. data/gems/gems/rspec-1.2.9/History.rdoc +0 -1496
  527. data/gems/gems/rspec-1.2.9/License.txt +0 -22
  528. data/gems/gems/rspec-1.2.9/Manifest.txt +0 -377
  529. data/gems/gems/rspec-1.2.9/README.rdoc +0 -55
  530. data/gems/gems/rspec-1.2.9/Rakefile +0 -145
  531. data/gems/gems/rspec-1.2.9/Ruby1.9.rdoc +0 -31
  532. data/gems/gems/rspec-1.2.9/TODO.txt +0 -17
  533. data/gems/gems/rspec-1.2.9/Upgrade.rdoc +0 -199
  534. data/gems/gems/rspec-1.2.9/bin/autospec +0 -4
  535. data/gems/gems/rspec-1.2.9/bin/spec +0 -5
  536. data/gems/gems/rspec-1.2.9/cucumber.yml +0 -5
  537. data/gems/gems/rspec-1.2.9/examples/failing/README.txt +0 -11
  538. data/gems/gems/rspec-1.2.9/examples/failing/diffing_spec.rb +0 -36
  539. data/gems/gems/rspec-1.2.9/examples/failing/failing_implicit_docstrings_example.rb +0 -17
  540. data/gems/gems/rspec-1.2.9/examples/failing/failure_in_after.rb +0 -10
  541. data/gems/gems/rspec-1.2.9/examples/failing/failure_in_before.rb +0 -10
  542. data/gems/gems/rspec-1.2.9/examples/failing/mocking_example.rb +0 -38
  543. data/gems/gems/rspec-1.2.9/examples/failing/mocking_with_flexmock.rb +0 -26
  544. data/gems/gems/rspec-1.2.9/examples/failing/mocking_with_mocha.rb +0 -25
  545. data/gems/gems/rspec-1.2.9/examples/failing/mocking_with_rr.rb +0 -27
  546. data/gems/gems/rspec-1.2.9/examples/failing/partial_mock_example.rb +0 -18
  547. data/gems/gems/rspec-1.2.9/examples/failing/pending_example.rb +0 -7
  548. data/gems/gems/rspec-1.2.9/examples/failing/predicate_example.rb +0 -32
  549. data/gems/gems/rspec-1.2.9/examples/failing/raising_example.rb +0 -47
  550. data/gems/gems/rspec-1.2.9/examples/failing/syntax_error_example.rb +0 -7
  551. data/gems/gems/rspec-1.2.9/examples/failing/team_spec.rb +0 -41
  552. data/gems/gems/rspec-1.2.9/examples/failing/timeout_behaviour.rb +0 -5
  553. data/gems/gems/rspec-1.2.9/examples/passing/custom_formatter.rb +0 -11
  554. data/gems/gems/rspec-1.2.9/examples/passing/custom_matchers.rb +0 -54
  555. data/gems/gems/rspec-1.2.9/examples/passing/dynamic_spec.rb +0 -7
  556. data/gems/gems/rspec-1.2.9/examples/passing/file_accessor.rb +0 -18
  557. data/gems/gems/rspec-1.2.9/examples/passing/file_accessor_spec.rb +0 -37
  558. data/gems/gems/rspec-1.2.9/examples/passing/filtered_formatter.rb +0 -17
  559. data/gems/gems/rspec-1.2.9/examples/passing/filtered_formatter_example.rb +0 -31
  560. data/gems/gems/rspec-1.2.9/examples/passing/greeter_spec.rb +0 -30
  561. data/gems/gems/rspec-1.2.9/examples/passing/helper_method_example.rb +0 -12
  562. data/gems/gems/rspec-1.2.9/examples/passing/implicit_docstrings_example.rb +0 -16
  563. data/gems/gems/rspec-1.2.9/examples/passing/io_processor.rb +0 -8
  564. data/gems/gems/rspec-1.2.9/examples/passing/io_processor_spec.rb +0 -20
  565. data/gems/gems/rspec-1.2.9/examples/passing/mocking_example.rb +0 -25
  566. data/gems/gems/rspec-1.2.9/examples/passing/multi_threaded_example_group_runner.rb +0 -26
  567. data/gems/gems/rspec-1.2.9/examples/passing/nested_classes_example.rb +0 -35
  568. data/gems/gems/rspec-1.2.9/examples/passing/options_example.rb +0 -29
  569. data/gems/gems/rspec-1.2.9/examples/passing/options_formatter.rb +0 -20
  570. data/gems/gems/rspec-1.2.9/examples/passing/partial_mock_example.rb +0 -27
  571. data/gems/gems/rspec-1.2.9/examples/passing/pending_example.rb +0 -18
  572. data/gems/gems/rspec-1.2.9/examples/passing/predicate_example.rb +0 -25
  573. data/gems/gems/rspec-1.2.9/examples/passing/shared_example_group_example.rb +0 -79
  574. data/gems/gems/rspec-1.2.9/examples/passing/shared_stack_examples.rb +0 -36
  575. data/gems/gems/rspec-1.2.9/examples/passing/simple_matcher_example.rb +0 -29
  576. data/gems/gems/rspec-1.2.9/examples/passing/stack.rb +0 -36
  577. data/gems/gems/rspec-1.2.9/examples/passing/stack_spec.rb +0 -63
  578. data/gems/gems/rspec-1.2.9/examples/passing/stack_spec_with_nested_example_groups.rb +0 -66
  579. data/gems/gems/rspec-1.2.9/examples/passing/stubbing_example.rb +0 -67
  580. data/gems/gems/rspec-1.2.9/examples/passing/yielding_example.rb +0 -31
  581. data/gems/gems/rspec-1.2.9/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -85
  582. data/gems/gems/rspec-1.2.9/features/before_and_after_blocks/before_and_after_blocks.feature +0 -167
  583. data/gems/gems/rspec-1.2.9/features/command_line/line_number_option.feature +0 -56
  584. data/gems/gems/rspec-1.2.9/features/command_line/line_number_option_with_example_with_no_name.feature +0 -22
  585. data/gems/gems/rspec-1.2.9/features/example_groups/define_example_attribute.feature +0 -41
  586. data/gems/gems/rspec-1.2.9/features/example_groups/example_group_with_should_methods.feature +0 -29
  587. data/gems/gems/rspec-1.2.9/features/example_groups/implicit_docstrings.feature +0 -59
  588. data/gems/gems/rspec-1.2.9/features/example_groups/nested_groups.feature +0 -32
  589. data/gems/gems/rspec-1.2.9/features/expectations/customized_message.feature +0 -54
  590. data/gems/gems/rspec-1.2.9/features/expectations/expect_change.feature +0 -65
  591. data/gems/gems/rspec-1.2.9/features/expectations/expect_error.feature +0 -44
  592. data/gems/gems/rspec-1.2.9/features/extensions/custom_example_group.feature +0 -19
  593. data/gems/gems/rspec-1.2.9/features/formatters/custom_formatter.feature +0 -30
  594. data/gems/gems/rspec-1.2.9/features/interop/examples_and_tests_together.feature +0 -84
  595. data/gems/gems/rspec-1.2.9/features/interop/rspec_output.feature +0 -25
  596. data/gems/gems/rspec-1.2.9/features/interop/test_but_not_test_unit.feature +0 -26
  597. data/gems/gems/rspec-1.2.9/features/interop/test_case_with_should_methods.feature +0 -46
  598. data/gems/gems/rspec-1.2.9/features/load_paths/add_lib_to_load_path.feature +0 -20
  599. data/gems/gems/rspec-1.2.9/features/load_paths/add_spec_to_load_path.feature +0 -20
  600. data/gems/gems/rspec-1.2.9/features/matchers/define_diffable_matcher.feature +0 -26
  601. data/gems/gems/rspec-1.2.9/features/matchers/define_matcher.feature +0 -179
  602. data/gems/gems/rspec-1.2.9/features/matchers/define_matcher_outside_rspec.feature +0 -38
  603. data/gems/gems/rspec-1.2.9/features/matchers/define_matcher_with_fluent_interface.feature +0 -27
  604. data/gems/gems/rspec-1.2.9/features/matchers/define_wrapped_matcher.feature +0 -29
  605. data/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_flexmock.feature +0 -27
  606. data/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_mocha.feature +0 -27
  607. data/gems/gems/rspec-1.2.9/features/mock_framework_integration/use_rr.feature +0 -27
  608. data/gems/gems/rspec-1.2.9/features/mocks/mix_stubs_and_mocks.feature +0 -22
  609. data/gems/gems/rspec-1.2.9/features/mocks/stub_implementation.feature +0 -26
  610. data/gems/gems/rspec-1.2.9/features/pending/pending_examples.feature +0 -81
  611. data/gems/gems/rspec-1.2.9/features/runner/specify_line_number.feature +0 -32
  612. data/gems/gems/rspec-1.2.9/features/spec_helper/spec_helper.feature +0 -25
  613. data/gems/gems/rspec-1.2.9/features/step_definitions/running_rspec_steps.rb +0 -43
  614. data/gems/gems/rspec-1.2.9/features/subject/explicit_subject.feature +0 -31
  615. data/gems/gems/rspec-1.2.9/features/subject/implicit_subject.feature +0 -43
  616. data/gems/gems/rspec-1.2.9/features/support/env.rb +0 -82
  617. data/gems/gems/rspec-1.2.9/features/support/matchers/smart_match.rb +0 -12
  618. data/gems/gems/rspec-1.2.9/init.rb +0 -9
  619. data/gems/gems/rspec-1.2.9/lib/autotest/discover.rb +0 -3
  620. data/gems/gems/rspec-1.2.9/lib/autotest/rspec.rb +0 -47
  621. data/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -24
  622. data/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/mocha.rb +0 -25
  623. data/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/rr.rb +0 -22
  624. data/gems/gems/rspec-1.2.9/lib/spec/adapters/mock_frameworks/rspec.rb +0 -21
  625. data/gems/gems/rspec-1.2.9/lib/spec/autorun.rb +0 -3
  626. data/gems/gems/rspec-1.2.9/lib/spec/deprecation.rb +0 -40
  627. data/gems/gems/rspec-1.2.9/lib/spec/dsl/main.rb +0 -92
  628. data/gems/gems/rspec-1.2.9/lib/spec/dsl.rb +0 -1
  629. data/gems/gems/rspec-1.2.9/lib/spec/example/args_and_options.rb +0 -27
  630. data/gems/gems/rspec-1.2.9/lib/spec/example/before_and_after_hooks.rb +0 -93
  631. data/gems/gems/rspec-1.2.9/lib/spec/example/errors.rb +0 -25
  632. data/gems/gems/rspec-1.2.9/lib/spec/example/example_group.rb +0 -10
  633. data/gems/gems/rspec-1.2.9/lib/spec/example/example_group_factory.rb +0 -82
  634. data/gems/gems/rspec-1.2.9/lib/spec/example/example_group_hierarchy.rb +0 -53
  635. data/gems/gems/rspec-1.2.9/lib/spec/example/example_group_methods.rb +0 -282
  636. data/gems/gems/rspec-1.2.9/lib/spec/example/example_group_proxy.rb +0 -61
  637. data/gems/gems/rspec-1.2.9/lib/spec/example/example_matcher.rb +0 -43
  638. data/gems/gems/rspec-1.2.9/lib/spec/example/example_methods.rb +0 -148
  639. data/gems/gems/rspec-1.2.9/lib/spec/example/example_proxy.rb +0 -41
  640. data/gems/gems/rspec-1.2.9/lib/spec/example/module_reopening_fix.rb +0 -43
  641. data/gems/gems/rspec-1.2.9/lib/spec/example/pending.rb +0 -18
  642. data/gems/gems/rspec-1.2.9/lib/spec/example/predicate_matchers.rb +0 -46
  643. data/gems/gems/rspec-1.2.9/lib/spec/example/shared_example_group.rb +0 -59
  644. data/gems/gems/rspec-1.2.9/lib/spec/example/subject.rb +0 -108
  645. data/gems/gems/rspec-1.2.9/lib/spec/example.rb +0 -164
  646. data/gems/gems/rspec-1.2.9/lib/spec/expectations/errors.rb +0 -12
  647. data/gems/gems/rspec-1.2.9/lib/spec/expectations/extensions/kernel.rb +0 -52
  648. data/gems/gems/rspec-1.2.9/lib/spec/expectations/extensions.rb +0 -1
  649. data/gems/gems/rspec-1.2.9/lib/spec/expectations/fail_with.rb +0 -45
  650. data/gems/gems/rspec-1.2.9/lib/spec/expectations/handler.rb +0 -50
  651. data/gems/gems/rspec-1.2.9/lib/spec/expectations.rb +0 -35
  652. data/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/autorunner.rb +0 -6
  653. data/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testcase.rb +0 -56
  654. data/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testresult.rb +0 -6
  655. data/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -34
  656. data/gems/gems/rspec-1.2.9/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -61
  657. data/gems/gems/rspec-1.2.9/lib/spec/interop/test.rb +0 -44
  658. data/gems/gems/rspec-1.2.9/lib/spec/matchers/be.rb +0 -210
  659. data/gems/gems/rspec-1.2.9/lib/spec/matchers/be_close.rb +0 -32
  660. data/gems/gems/rspec-1.2.9/lib/spec/matchers/be_instance_of.rb +0 -26
  661. data/gems/gems/rspec-1.2.9/lib/spec/matchers/be_kind_of.rb +0 -26
  662. data/gems/gems/rspec-1.2.9/lib/spec/matchers/change.rb +0 -151
  663. data/gems/gems/rspec-1.2.9/lib/spec/matchers/compatibility.rb +0 -14
  664. data/gems/gems/rspec-1.2.9/lib/spec/matchers/dsl.rb +0 -20
  665. data/gems/gems/rspec-1.2.9/lib/spec/matchers/eql.rb +0 -42
  666. data/gems/gems/rspec-1.2.9/lib/spec/matchers/equal.rb +0 -53
  667. data/gems/gems/rspec-1.2.9/lib/spec/matchers/errors.rb +0 -5
  668. data/gems/gems/rspec-1.2.9/lib/spec/matchers/exist.rb +0 -16
  669. data/gems/gems/rspec-1.2.9/lib/spec/matchers/extensions/instance_exec.rb +0 -31
  670. data/gems/gems/rspec-1.2.9/lib/spec/matchers/generated_descriptions.rb +0 -36
  671. data/gems/gems/rspec-1.2.9/lib/spec/matchers/has.rb +0 -35
  672. data/gems/gems/rspec-1.2.9/lib/spec/matchers/have.rb +0 -151
  673. data/gems/gems/rspec-1.2.9/lib/spec/matchers/include.rb +0 -44
  674. data/gems/gems/rspec-1.2.9/lib/spec/matchers/match.rb +0 -21
  675. data/gems/gems/rspec-1.2.9/lib/spec/matchers/match_array.rb +0 -71
  676. data/gems/gems/rspec-1.2.9/lib/spec/matchers/matcher.rb +0 -87
  677. data/gems/gems/rspec-1.2.9/lib/spec/matchers/method_missing.rb +0 -9
  678. data/gems/gems/rspec-1.2.9/lib/spec/matchers/operator_matcher.rb +0 -78
  679. data/gems/gems/rspec-1.2.9/lib/spec/matchers/pretty.rb +0 -37
  680. data/gems/gems/rspec-1.2.9/lib/spec/matchers/raise_error.rb +0 -129
  681. data/gems/gems/rspec-1.2.9/lib/spec/matchers/respond_to.rb +0 -71
  682. data/gems/gems/rspec-1.2.9/lib/spec/matchers/satisfy.rb +0 -47
  683. data/gems/gems/rspec-1.2.9/lib/spec/matchers/simple_matcher.rb +0 -133
  684. data/gems/gems/rspec-1.2.9/lib/spec/matchers/throw_symbol.rb +0 -104
  685. data/gems/gems/rspec-1.2.9/lib/spec/matchers/wrap_expectation.rb +0 -55
  686. data/gems/gems/rspec-1.2.9/lib/spec/matchers.rb +0 -195
  687. data/gems/gems/rspec-1.2.9/lib/spec/mocks/argument_expectation.rb +0 -51
  688. data/gems/gems/rspec-1.2.9/lib/spec/mocks/argument_matchers.rb +0 -237
  689. data/gems/gems/rspec-1.2.9/lib/spec/mocks/error_generator.rb +0 -92
  690. data/gems/gems/rspec-1.2.9/lib/spec/mocks/errors.rb +0 -10
  691. data/gems/gems/rspec-1.2.9/lib/spec/mocks/example_methods.rb +0 -69
  692. data/gems/gems/rspec-1.2.9/lib/spec/mocks/extensions/object.rb +0 -3
  693. data/gems/gems/rspec-1.2.9/lib/spec/mocks/extensions.rb +0 -1
  694. data/gems/gems/rspec-1.2.9/lib/spec/mocks/framework.rb +0 -15
  695. data/gems/gems/rspec-1.2.9/lib/spec/mocks/message_expectation.rb +0 -329
  696. data/gems/gems/rspec-1.2.9/lib/spec/mocks/methods.rb +0 -89
  697. data/gems/gems/rspec-1.2.9/lib/spec/mocks/mock.rb +0 -71
  698. data/gems/gems/rspec-1.2.9/lib/spec/mocks/order_group.rb +0 -29
  699. data/gems/gems/rspec-1.2.9/lib/spec/mocks/proxy.rb +0 -245
  700. data/gems/gems/rspec-1.2.9/lib/spec/mocks/space.rb +0 -28
  701. data/gems/gems/rspec-1.2.9/lib/spec/mocks.rb +0 -200
  702. data/gems/gems/rspec-1.2.9/lib/spec/rake/spectask.rb +0 -230
  703. data/gems/gems/rspec-1.2.9/lib/spec/rake/verify_rcov.rb +0 -52
  704. data/gems/gems/rspec-1.2.9/lib/spec/ruby.rb +0 -9
  705. data/gems/gems/rspec-1.2.9/lib/spec/runner/backtrace_tweaker.rb +0 -77
  706. data/gems/gems/rspec-1.2.9/lib/spec/runner/class_and_arguments_parser.rb +0 -14
  707. data/gems/gems/rspec-1.2.9/lib/spec/runner/command_line.rb +0 -15
  708. data/gems/gems/rspec-1.2.9/lib/spec/runner/configuration.rb +0 -194
  709. data/gems/gems/rspec-1.2.9/lib/spec/runner/differs/default.rb +0 -93
  710. data/gems/gems/rspec-1.2.9/lib/spec/runner/differs/load-diff-lcs.rb +0 -12
  711. data/gems/gems/rspec-1.2.9/lib/spec/runner/drb_command_line.rb +0 -26
  712. data/gems/gems/rspec-1.2.9/lib/spec/runner/example_group_runner.rb +0 -59
  713. data/gems/gems/rspec-1.2.9/lib/spec/runner/extensions/kernel.rb +0 -9
  714. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/base_formatter.rb +0 -139
  715. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/base_text_formatter.rb +0 -142
  716. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -25
  717. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -20
  718. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/html_formatter.rb +0 -338
  719. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/nested_text_formatter.rb +0 -47
  720. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/no_op_method_missing.rb +0 -21
  721. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/profile_formatter.rb +0 -47
  722. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -33
  723. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/silent_formatter.rb +0 -10
  724. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/snippet_extractor.rb +0 -52
  725. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/specdoc_formatter.rb +0 -33
  726. data/gems/gems/rspec-1.2.9/lib/spec/runner/formatter/text_mate_formatter.rb +0 -16
  727. data/gems/gems/rspec-1.2.9/lib/spec/runner/heckle_runner.rb +0 -72
  728. data/gems/gems/rspec-1.2.9/lib/spec/runner/heckle_runner_unsupported.rb +0 -10
  729. data/gems/gems/rspec-1.2.9/lib/spec/runner/line_number_query.rb +0 -78
  730. data/gems/gems/rspec-1.2.9/lib/spec/runner/option_parser.rb +0 -223
  731. data/gems/gems/rspec-1.2.9/lib/spec/runner/options.rb +0 -400
  732. data/gems/gems/rspec-1.2.9/lib/spec/runner/reporter.rb +0 -171
  733. data/gems/gems/rspec-1.2.9/lib/spec/runner.rb +0 -66
  734. data/gems/gems/rspec-1.2.9/lib/spec/stubs/cucumber.rb +0 -5
  735. data/gems/gems/rspec-1.2.9/lib/spec/test/unit.rb +0 -10
  736. data/gems/gems/rspec-1.2.9/lib/spec/version.rb +0 -14
  737. data/gems/gems/rspec-1.2.9/lib/spec.rb +0 -8
  738. data/gems/gems/rspec-1.2.9/resources/helpers/cmdline.rb +0 -8
  739. data/gems/gems/rspec-1.2.9/resources/rake/examples.rake +0 -7
  740. data/gems/gems/rspec-1.2.9/resources/rake/examples_with_rcov.rake +0 -9
  741. data/gems/gems/rspec-1.2.9/resources/rake/failing_examples_with_html.rake +0 -9
  742. data/gems/gems/rspec-1.2.9/resources/rake/verify_rcov.rake +0 -7
  743. data/gems/gems/rspec-1.2.9/spec/README.jruby +0 -15
  744. data/gems/gems/rspec-1.2.9/spec/autotest/autotest_helper.rb +0 -8
  745. data/gems/gems/rspec-1.2.9/spec/autotest/autotest_matchers.rb +0 -38
  746. data/gems/gems/rspec-1.2.9/spec/autotest/discover_spec.rb +0 -8
  747. data/gems/gems/rspec-1.2.9/spec/autotest/failed_results_re_spec.rb +0 -31
  748. data/gems/gems/rspec-1.2.9/spec/autotest/rspec_spec.rb +0 -111
  749. data/gems/gems/rspec-1.2.9/spec/ruby_forker.rb +0 -13
  750. data/gems/gems/rspec-1.2.9/spec/spec/dsl/main_spec.rb +0 -95
  751. data/gems/gems/rspec-1.2.9/spec/spec/example/example_group_class_definition_spec.rb +0 -51
  752. data/gems/gems/rspec-1.2.9/spec/spec/example/example_group_factory_spec.rb +0 -180
  753. data/gems/gems/rspec-1.2.9/spec/spec/example/example_group_methods_spec.rb +0 -758
  754. data/gems/gems/rspec-1.2.9/spec/spec/example/example_group_proxy_spec.rb +0 -107
  755. data/gems/gems/rspec-1.2.9/spec/spec/example/example_group_spec.rb +0 -643
  756. data/gems/gems/rspec-1.2.9/spec/spec/example/example_matcher_spec.rb +0 -86
  757. data/gems/gems/rspec-1.2.9/spec/spec/example/example_methods_spec.rb +0 -162
  758. data/gems/gems/rspec-1.2.9/spec/spec/example/example_proxy_spec.rb +0 -57
  759. data/gems/gems/rspec-1.2.9/spec/spec/example/helper_method_spec.rb +0 -24
  760. data/gems/gems/rspec-1.2.9/spec/spec/example/nested_example_group_spec.rb +0 -71
  761. data/gems/gems/rspec-1.2.9/spec/spec/example/pending_module_spec.rb +0 -58
  762. data/gems/gems/rspec-1.2.9/spec/spec/example/predicate_matcher_spec.rb +0 -41
  763. data/gems/gems/rspec-1.2.9/spec/spec/example/shared_example_group_spec.rb +0 -257
  764. data/gems/gems/rspec-1.2.9/spec/spec/example/subclassing_example_group_spec.rb +0 -25
  765. data/gems/gems/rspec-1.2.9/spec/spec/example/subject_spec.rb +0 -103
  766. data/gems/gems/rspec-1.2.9/spec/spec/expectations/differs/default_spec.rb +0 -194
  767. data/gems/gems/rspec-1.2.9/spec/spec/expectations/extensions/kernel_spec.rb +0 -45
  768. data/gems/gems/rspec-1.2.9/spec/spec/expectations/fail_with_spec.rb +0 -96
  769. data/gems/gems/rspec-1.2.9/spec/spec/expectations/handler_spec.rb +0 -206
  770. data/gems/gems/rspec-1.2.9/spec/spec/expectations/wrap_expectation_spec.rb +0 -30
  771. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -10
  772. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -10
  773. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -10
  774. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -13
  775. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -10
  776. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -10
  777. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -10
  778. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -22
  779. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -38
  780. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/spec_spec.rb +0 -48
  781. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -18
  782. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/testcase_spec.rb +0 -50
  783. data/gems/gems/rspec-1.2.9/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -9
  784. data/gems/gems/rspec-1.2.9/spec/spec/matchers/be_close_spec.rb +0 -50
  785. data/gems/gems/rspec-1.2.9/spec/spec/matchers/be_instance_of_spec.rb +0 -36
  786. data/gems/gems/rspec-1.2.9/spec/spec/matchers/be_kind_of_spec.rb +0 -33
  787. data/gems/gems/rspec-1.2.9/spec/spec/matchers/be_spec.rb +0 -311
  788. data/gems/gems/rspec-1.2.9/spec/spec/matchers/change_spec.rb +0 -349
  789. data/gems/gems/rspec-1.2.9/spec/spec/matchers/compatibility_spec.rb +0 -28
  790. data/gems/gems/rspec-1.2.9/spec/spec/matchers/description_generation_spec.rb +0 -160
  791. data/gems/gems/rspec-1.2.9/spec/spec/matchers/dsl_spec.rb +0 -34
  792. data/gems/gems/rspec-1.2.9/spec/spec/matchers/eql_spec.rb +0 -33
  793. data/gems/gems/rspec-1.2.9/spec/spec/matchers/equal_spec.rb +0 -57
  794. data/gems/gems/rspec-1.2.9/spec/spec/matchers/exist_spec.rb +0 -65
  795. data/gems/gems/rspec-1.2.9/spec/spec/matchers/has_spec.rb +0 -81
  796. data/gems/gems/rspec-1.2.9/spec/spec/matchers/have_spec.rb +0 -396
  797. data/gems/gems/rspec-1.2.9/spec/spec/matchers/include_spec.rb +0 -88
  798. data/gems/gems/rspec-1.2.9/spec/spec/matchers/match_array_spec.rb +0 -108
  799. data/gems/gems/rspec-1.2.9/spec/spec/matchers/match_spec.rb +0 -57
  800. data/gems/gems/rspec-1.2.9/spec/spec/matchers/matcher_methods_spec.rb +0 -63
  801. data/gems/gems/rspec-1.2.9/spec/spec/matchers/matcher_spec.rb +0 -228
  802. data/gems/gems/rspec-1.2.9/spec/spec/matchers/matchers_spec.rb +0 -2
  803. data/gems/gems/rspec-1.2.9/spec/spec/matchers/operator_matcher_spec.rb +0 -191
  804. data/gems/gems/rspec-1.2.9/spec/spec/matchers/raise_error_spec.rb +0 -333
  805. data/gems/gems/rspec-1.2.9/spec/spec/matchers/respond_to_spec.rb +0 -116
  806. data/gems/gems/rspec-1.2.9/spec/spec/matchers/satisfy_spec.rb +0 -36
  807. data/gems/gems/rspec-1.2.9/spec/spec/matchers/simple_matcher_spec.rb +0 -93
  808. data/gems/gems/rspec-1.2.9/spec/spec/matchers/throw_symbol_spec.rb +0 -96
  809. data/gems/gems/rspec-1.2.9/spec/spec/mocks/any_number_of_times_spec.rb +0 -36
  810. data/gems/gems/rspec-1.2.9/spec/spec/mocks/argument_expectation_spec.rb +0 -23
  811. data/gems/gems/rspec-1.2.9/spec/spec/mocks/argument_matchers_spec.rb +0 -19
  812. data/gems/gems/rspec-1.2.9/spec/spec/mocks/at_least_spec.rb +0 -97
  813. data/gems/gems/rspec-1.2.9/spec/spec/mocks/at_most_spec.rb +0 -93
  814. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_10260_spec.rb +0 -8
  815. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_10263_spec.rb +0 -27
  816. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_11545_spec.rb +0 -32
  817. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_15719_spec.rb +0 -30
  818. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_496_spec.rb +0 -19
  819. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_600_spec.rb +0 -22
  820. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_7611_spec.rb +0 -19
  821. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_7805_spec.rb +0 -22
  822. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_8165_spec.rb +0 -31
  823. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_8302_spec.rb +0 -26
  824. data/gems/gems/rspec-1.2.9/spec/spec/mocks/bug_report_830_spec.rb +0 -21
  825. data/gems/gems/rspec-1.2.9/spec/spec/mocks/double_spec.rb +0 -12
  826. data/gems/gems/rspec-1.2.9/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -95
  827. data/gems/gems/rspec-1.2.9/spec/spec/mocks/hash_including_matcher_spec.rb +0 -90
  828. data/gems/gems/rspec-1.2.9/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -67
  829. data/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_ordering_spec.rb +0 -94
  830. data/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_space_spec.rb +0 -54
  831. data/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_spec.rb +0 -594
  832. data/gems/gems/rspec-1.2.9/spec/spec/mocks/multiple_return_value_spec.rb +0 -113
  833. data/gems/gems/rspec-1.2.9/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -53
  834. data/gems/gems/rspec-1.2.9/spec/spec/mocks/null_object_mock_spec.rb +0 -54
  835. data/gems/gems/rspec-1.2.9/spec/spec/mocks/once_counts_spec.rb +0 -53
  836. data/gems/gems/rspec-1.2.9/spec/spec/mocks/options_hash_spec.rb +0 -35
  837. data/gems/gems/rspec-1.2.9/spec/spec/mocks/partial_mock_spec.rb +0 -164
  838. data/gems/gems/rspec-1.2.9/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -66
  839. data/gems/gems/rspec-1.2.9/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -145
  840. data/gems/gems/rspec-1.2.9/spec/spec/mocks/precise_counts_spec.rb +0 -52
  841. data/gems/gems/rspec-1.2.9/spec/spec/mocks/record_messages_spec.rb +0 -26
  842. data/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_chain_spec.rb +0 -42
  843. data/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_implementation_spec.rb +0 -31
  844. data/gems/gems/rspec-1.2.9/spec/spec/mocks/stub_spec.rb +0 -203
  845. data/gems/gems/rspec-1.2.9/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -26
  846. data/gems/gems/rspec-1.2.9/spec/spec/mocks/twice_counts_spec.rb +0 -67
  847. data/gems/gems/rspec-1.2.9/spec/spec/mocks/unstub_spec.rb +0 -127
  848. data/gems/gems/rspec-1.2.9/spec/spec/package/bin_spec_spec.rb +0 -16
  849. data/gems/gems/rspec-1.2.9/spec/spec/rake/spectask_spec.rb +0 -150
  850. data/gems/gems/rspec-1.2.9/spec/spec/runner/class_and_argument_parser_spec.rb +0 -23
  851. data/gems/gems/rspec-1.2.9/spec/spec/runner/command_line_spec.rb +0 -141
  852. data/gems/gems/rspec-1.2.9/spec/spec/runner/configuration_spec.rb +0 -320
  853. data/gems/gems/rspec-1.2.9/spec/spec/runner/drb_command_line_spec.rb +0 -107
  854. data/gems/gems/rspec-1.2.9/spec/spec/runner/example_group_runner_spec.rb +0 -26
  855. data/gems/gems/rspec-1.2.9/spec/spec/runner/examples.txt +0 -2
  856. data/gems/gems/rspec-1.2.9/spec/spec/runner/failed.txt +0 -3
  857. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/base_formatter_spec.rb +0 -30
  858. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -113
  859. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -45
  860. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -33
  861. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -377
  862. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -377
  863. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -377
  864. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -377
  865. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/html_formatter_spec.rb +0 -118
  866. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -305
  867. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -70
  868. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -149
  869. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -18
  870. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -159
  871. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -371
  872. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -371
  873. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -371
  874. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -371
  875. data/gems/gems/rspec-1.2.9/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -106
  876. data/gems/gems/rspec-1.2.9/spec/spec/runner/heckle_runner_spec.rb +0 -78
  877. data/gems/gems/rspec-1.2.9/spec/spec/runner/heckler_spec.rb +0 -20
  878. data/gems/gems/rspec-1.2.9/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -70
  879. data/gems/gems/rspec-1.2.9/spec/spec/runner/line_number_query_spec.rb +0 -129
  880. data/gems/gems/rspec-1.2.9/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -51
  881. data/gems/gems/rspec-1.2.9/spec/spec/runner/option_parser_spec.rb +0 -545
  882. data/gems/gems/rspec-1.2.9/spec/spec/runner/options_spec.rb +0 -547
  883. data/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_fixture.rb +0 -7
  884. data/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_fixture_runner.rb +0 -7
  885. data/gems/gems/rspec-1.2.9/spec/spec/runner/output_one_time_spec.rb +0 -15
  886. data/gems/gems/rspec-1.2.9/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -105
  887. data/gems/gems/rspec-1.2.9/spec/spec/runner/reporter_spec.rb +0 -244
  888. data/gems/gems/rspec-1.2.9/spec/spec/runner/resources/a_spec.rb +0 -1
  889. data/gems/gems/rspec-1.2.9/spec/spec/runner/resources/custom_example_group_runner.rb +0 -14
  890. data/gems/gems/rspec-1.2.9/spec/spec/runner/resources/utf8_encoded.rb +0 -8
  891. data/gems/gems/rspec-1.2.9/spec/spec/runner/spec.opts +0 -2
  892. data/gems/gems/rspec-1.2.9/spec/spec/runner/spec_drb.opts +0 -2
  893. data/gems/gems/rspec-1.2.9/spec/spec/runner/spec_spaced.opts +0 -2
  894. data/gems/gems/rspec-1.2.9/spec/spec/runner_spec.rb +0 -13
  895. data/gems/gems/rspec-1.2.9/spec/spec.opts +0 -6
  896. data/gems/gems/rspec-1.2.9/spec/spec_helper.rb +0 -112
  897. data/gems/gems/rspec-1.2.9/spec/support/macros.rb +0 -29
  898. data/gems/gems/rspec-1.2.9/spec/support/spec_classes.rb +0 -133
  899. data/gems/specifications/abstract-1.0.0.gemspec +0 -29
  900. data/gems/specifications/erubis-2.6.5.gemspec +0 -34
  901. data/gems/specifications/haml-2.2.16.gemspec +0 -45
  902. data/gems/specifications/rspec-1.2.9.gemspec +0 -58
  903. data/lib/simple-templater/version.rb +0 -7
  904. data/script/autospec +0 -3
  905. data/script/css2sass +0 -3
  906. data/script/erubis +0 -3
  907. data/script/haml +0 -3
  908. data/script/html2haml +0 -3
  909. data/script/sass +0 -3
  910. data/stubs/project/content/Rakefile +0 -39
  911. data/tasks/benchmark.rake +0 -11
  912. data/tasks/gem.rake +0 -23
  913. data/tasks/hooks.rake +0 -12
  914. data/tasks/release.rake +0 -68
  915. data/tasks/spec.rake +0 -27
  916. data/tasks/submodules.rake +0 -33
  917. data/tasks/yardoc.rake +0 -9
@@ -1,3285 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2
- <html>
3
- <head>
4
- <meta http-equiv="Content-Type" content="text/html">
5
- <title>Erubis Users' Guide</title>
6
- <meta name="generator" content="kwaser">
7
- <meta http-equiv="Content-Style-Type" content="text/css">
8
- <link rel="stylesheet" href="docstyle.css" type="text/css">
9
- </head>
10
- <body>
11
-
12
- <blockquote>
13
- <div class="mainbody">
14
-
15
- <div align="left"><h1>Erubis Users' Guide</h1></div>
16
- <div align="left">
17
- last update: $Date$<br>
18
- </div>
19
-
20
- <p>release: 2.6.5
21
- </p>
22
- <a name="preface"></a>
23
- <h2 class="section1">Preface</h2>
24
- <p>Erubis is an implementation of eRuby.
25
- It has the following features.
26
- </p>
27
- <ul type="disc">
28
- <li>Very fast, almost three times faster than ERB and about ten percent faster than eruby (implemented in C)
29
- </li>
30
- <li>File caching of converted Ruby script support
31
- </li>
32
- <li>Auto escaping support
33
- </li>
34
- <li>Auto trimming spaces around '&lt;% %&gt;'
35
- </li>
36
- <li>Embedded pattern changeable (default '&lt;% %&gt;')
37
- </li>
38
- <li>Enable to handle Processing Instructions (PI) as embedded pattern (ex. '&lt;?rb ... ?&gt;')
39
- </li>
40
- <li>Multi-language support (Ruby/PHP/C/Java/Scheme/Perl/Javascript)
41
- </li>
42
- <li>Context object available and easy to combine eRuby template with YAML datafile
43
- </li>
44
- <li>Print statement available
45
- </li>
46
- <li>Easy to expand and customize in subclass
47
- </li>
48
- <li><a href="#rails">Ruby on Rails support</a>
49
- </li>
50
- <li>mod_ruby support|#topcs-modruby
51
- </li>
52
- </ul>
53
- <p>Erubis is implemented in pure Ruby. It requires Ruby 1.8 or higher.
54
- Erubis now supports Ruby 1.9.
55
- </p>
56
- <a name="toc"></a>
57
- <h3 class="section2">Table of Contents</h3>
58
- <ul>
59
- <li><a href="#preface">Preface</a>
60
- <ul>
61
- <li><a href="#toc">Table of Contents</a>
62
- </li>
63
- </ul>
64
- </li>
65
- <li><a href="#install">Installation</a>
66
- </li>
67
- <li><a href="#tutorial">Tutorial</a>
68
- <ul>
69
- <li><a href="#tut-basic">Basic Example</a>
70
- </li>
71
- <li><a href="#tut-trim">Trimming Spaces</a>
72
- </li>
73
- <li><a href="#tut-escape">Escape</a>
74
- </li>
75
- <li><a href="#tut-pattern">Embedded Pattern</a>
76
- </li>
77
- <li><a href="#tut-context">Context Object</a>
78
- </li>
79
- <li><a href="#tut-datafile">Context Data File</a>
80
- </li>
81
- <li><a href="#tut-datastr">Context Data String</a>
82
- </li>
83
- <li><a href="#tut-preamble">Preamble and Postamble</a>
84
- </li>
85
- <li><a href="#tut-pi">Processing Instruction (PI) Converter</a>
86
- </li>
87
- <li><a href="#tut-notext">Retrieve Ruby Code</a>
88
- </li>
89
- </ul>
90
- </li>
91
- <li><a href="#enhancer">Enhancer</a>
92
- <ul>
93
- <li><a href="#escape-enhancer">EscapeEnhancer</a>
94
- </li>
95
- <li><a href="#stdout-enhancer">StdoutEnhancer</a>
96
- </li>
97
- <li><a href="#printout-enhancer">PrintOutEnhancer</a>
98
- </li>
99
- <li><a href="#printenabled-enhancer">PrintEnabledEnhancer</a>
100
- </li>
101
- <li><a href="#array-enhancer">ArrayEnhancer</a>
102
- </li>
103
- <li><a href="#arraybuffer-enhancer">ArrayBufferEnhancer</a>
104
- </li>
105
- <li><a href="#stringbuffer-enhancer">StringBufferEnhancer</a>
106
- </li>
107
- <li><a href="#erbout-enhancer">ErboutEnhancer</a>
108
- </li>
109
- <li><a href="#notext-enhancer">NoTextEnhancer</a>
110
- </li>
111
- <li><a href="#nocode-enhancer">NoCodeEnhancer</a>
112
- </li>
113
- <li><a href="#simplify-enhancer">SimplifyEnhancer</a>
114
- </li>
115
- <li><a href="#bipattern-enhancer">BiPatternEnhancer</a>
116
- </li>
117
- <li><a href="#percentline-enhancer">PercentLineEnhancer</a>
118
- </li>
119
- <li><a href="#headerfooter-enhancer">HeaderFooterEnhancer</a>
120
- </li>
121
- <li><a href="#interpolation-enhancer">InterpolationEnhancer</a>
122
- </li>
123
- <li><a href="#deleteindent-enhancer">DeleteIndentEnhancer</a>
124
- </li>
125
- </ul>
126
- </li>
127
- <li><a href="#lang">Multi-Language Support</a>
128
- <ul>
129
- <li><a href="#lang-php">PHP</a>
130
- </li>
131
- <li><a href="#lang-c">C</a>
132
- </li>
133
- <li><a href="#lang-java">Java</a>
134
- </li>
135
- <li><a href="#lang-scheme">Scheme</a>
136
- </li>
137
- <li><a href="#lang-perl">Perl</a>
138
- </li>
139
- <li><a href="#lang-javascript">JavaScript</a>
140
- </li>
141
- </ul>
142
- </li>
143
- <li><a href="#rails">Ruby on Rails Support</a>
144
- <ul>
145
- <li><a href="#rails-settings">Settings</a>
146
- </li>
147
- <li><a href="#rails-preprocessing">Preprosessing</a>
148
- </li>
149
- <li><a href="#rails-formhelpers">Form Helpers for Preprocessing</a>
150
- </li>
151
- <li><a href="#rails-others">Others</a>
152
- </li>
153
- </ul>
154
- </li>
155
- <li><a href="#topics">Other Topics</a>
156
- <ul>
157
- <li><a href="#'&lt;%= =%&gt;' and '&lt;%= -%&gt;'">'&lt;%= =%&gt;' and '&lt;%= -%&gt;'</a>
158
- </li>
159
- <li><a href="#'&lt;%% %&gt;' and '&lt;%%= %&gt;'">'&lt;%% %&gt;' and '&lt;%%= %&gt;'</a>
160
- </li>
161
- <li><a href="#topics-context-vs-binding">evaluate(context) v.s. result(binding)</a>
162
- </li>
163
- <li><a href="#topics-fasteruby">Class Erubis::FastEruby</a>
164
- </li>
165
- <li><a href="#topics-syntax">Syntax Checking</a>
166
- </li>
167
- <li><a href="#topics-caching">File Caching</a>
168
- </li>
169
- <li><a href="#topics-tinyeruby">Erubis::TinyEruby class</a>
170
- </li>
171
- <li><a href="#topics-php">NoTextEnhancer and NoCodeEnhancer in PHP</a>
172
- </li>
173
- <li><a href="#topcs-modruby">Helper Class for mod_ruby</a>
174
- </li>
175
- <li><a href="#topics-defmethod">Define method</a>
176
- </li>
177
- <li><a href="#topics-benchmark">Benchmark</a>
178
- </li>
179
- </ul>
180
- </li>
181
- <li><a href="#command">Command Reference</a>
182
- <ul>
183
- <li><a href="#command-usage">Usage</a>
184
- </li>
185
- <li><a href="#command-options">Options</a>
186
- </li>
187
- <li><a href="#command-props">Properties</a>
188
- </li>
189
- </ul>
190
- </li>
191
- </ul>
192
- <br>
193
-
194
-
195
- <br>
196
-
197
-
198
- <a name="install"></a>
199
- <h2 class="section1">Installation</h2>
200
- <ul type="disc">
201
- <li>If you have installed RubyGems, just type <code>gem install --remote erubis</code>.
202
- <pre class="terminal">$ sudo gem install --remote erubis
203
- </pre>
204
- </li>
205
- </ul>
206
- <ul type="disc">
207
- <li>Else install <a href="http://rubyforge.org/projects/erubis/">abstract</a> at first,
208
- and download erubis_X.X.X.tar.bz2 and install it by setup.rb.
209
- <pre class="terminal">$ tar xjf abstract_X.X.X.tar.bz2
210
- $ cd abstract_X.X.X/
211
- $ sudo ruby setup.rb
212
- $ cd ..
213
- $ tar xjf erubis_X.X.X.tar.bz2
214
- $ cd erubis_X.X.X/
215
- $ sudo ruby setup.rb
216
- </pre>
217
- </li>
218
- </ul>
219
- <ul type="disc">
220
- <li>(Optional) 'contrib/inline-require' enables you to merge 'lib/**/*.rb' into 'bin/erubis'.
221
- <pre class="terminal">$ tar xjf erubis_X.X.X.tar.bz2
222
- $ cd erubis_X.X.X/
223
- $ unset RUBYLIB
224
- $ contrib/inline-require -I lib bin/erubis &gt; contrib/erubis
225
- </pre>
226
- </li>
227
- </ul>
228
- <br>
229
-
230
-
231
- <a name="tutorial"></a>
232
- <h2 class="section1">Tutorial</h2>
233
- <a name="tut-basic"></a>
234
- <h3 class="section2">Basic Example</h3>
235
- <p>Here is a basic example of Erubis.
236
- </p>
237
- <a name="example1.eruby"></a>
238
- <div class="program_caption">
239
- example1.eruby</div>
240
- <pre class="program">&lt;ul&gt;
241
- <strong>&lt;% for item in list %&gt;</strong>
242
- &lt;li&gt;<strong>&lt;%= item %&gt;</strong>&lt;/li&gt;
243
- <strong>&lt;% end %&gt;</strong>
244
- <strong>&lt;%# here is ignored because starting with '#' %&gt;</strong>
245
- &lt;/ul&gt;
246
- </pre>
247
- <a name="example1.rb"></a>
248
- <div class="program_caption">
249
- example1.rb</div>
250
- <pre class="program">require 'erubis'
251
- input = File.read('example1.eruby')
252
- eruby = <strong>Erubis::Eruby.new(input)</strong> # create Eruby object
253
-
254
- puts "---------- script source ---"
255
- puts <strong>eruby.src</strong> # print script source
256
-
257
- puts "---------- result ----------"
258
- list = ['aaa', 'bbb', 'ccc']
259
- puts <strong>eruby.result(binding())</strong> # get result
260
- ## or puts eruby.result(<strong>:list=&gt;list</strong>) # or pass Hash instead of Binding
261
-
262
- ## # or
263
- ## eruby = Erubis::Eruby.new
264
- ## input = File.read('example1.eruby')
265
- ## src = eruby.convert(input)
266
- ## eval src
267
- </pre>
268
- <a name="example1.result"></a>
269
- <div class="terminal_caption">
270
- output</div>
271
- <pre class="terminal">$ ruby example1.rb
272
- ---------- script source ---
273
- _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
274
- '; for item in list
275
- _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/li&gt;
276
- '; end
277
-
278
- _buf &lt;&lt; '&lt;/ul&gt;
279
- ';
280
- _buf.to_s
281
- ---------- result ----------
282
- &lt;ul&gt;
283
- &lt;li&gt;aaa&lt;/li&gt;
284
- &lt;li&gt;bbb&lt;/li&gt;
285
- &lt;li&gt;ccc&lt;/li&gt;
286
- &lt;/ul&gt;
287
- </pre>
288
- <p>Erubis has command 'erubis'. Command-line option '-x' shows the compiled source code of eRuby script.
289
- </p>
290
- <a name="example1_x.result"></a>
291
- <div class="terminal_caption">
292
- example of command-line option '-x'</div>
293
- <pre class="terminal">$ erubis <strong>-x</strong> example1.eruby
294
- _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
295
- '; for item in list
296
- _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/li&gt;
297
- '; end
298
-
299
- _buf &lt;&lt; '&lt;/ul&gt;
300
- ';
301
- _buf.to_s
302
- </pre>
303
- <br>
304
-
305
-
306
- <a name="tut-trim"></a>
307
- <h3 class="section2">Trimming Spaces</h3>
308
- <p>Erubis deletes spaces around '&lt;% %&gt;' automatically, while it leaves spaces around '&lt;%= %&gt;'.
309
- </p>
310
- <a name="example2.eruby.comment_filter"></a>
311
- <div class="program_caption">
312
- example2.eruby</div>
313
- <pre class="program">&lt;ul&gt;
314
- &lt;% for item in list %&gt; # trimmed
315
- &lt;li&gt;
316
- &lt;%= item %&gt; # not trimmed
317
- &lt;/li&gt;
318
- &lt;% end %&gt; # trimmed
319
- &lt;/ul&gt;
320
- </pre>
321
- <a name="example2_x.result"></a>
322
- <div class="terminal_caption">
323
- compiled source code</div>
324
- <pre class="terminal">$ erubis -x example2.eruby
325
- _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
326
- '; for item in list
327
- _buf &lt;&lt; ' &lt;li&gt;
328
- '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
329
- '; _buf &lt;&lt; ' &lt;/li&gt;
330
- '; end
331
- _buf &lt;&lt; '&lt;/ul&gt;
332
- ';
333
- _buf.to_s
334
- </pre>
335
- <p>If you want leave spaces around '&lt;% %&gt;', add command-line property '--trim=false'.
336
- </p>
337
- <a name="example2_trim.result"></a>
338
- <div class="terminal_caption">
339
- compiled source code with command-line property '--trim=false'</div>
340
- <pre class="terminal">$ erubis -x <strong>--trim=false</strong> example2.eruby
341
- _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
342
- '; _buf &lt;&lt; ' '; for item in list ; _buf &lt;&lt; '
343
- '; _buf &lt;&lt; ' &lt;li&gt;
344
- '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
345
- '; _buf &lt;&lt; ' &lt;/li&gt;
346
- '; _buf &lt;&lt; ' '; end ; _buf &lt;&lt; '
347
- '; _buf &lt;&lt; '&lt;/ul&gt;
348
- ';
349
- _buf.to_s
350
- </pre>
351
- <p>Or add option <code>:trim=&gt;false</code> to Erubis::Eruby.new().
352
- </p>
353
- <a name="example2.rb"></a>
354
- <div class="program_caption">
355
- example2.rb</div>
356
- <pre class="program">require 'erubis'
357
- input = File.read('example2.eruby')
358
- eruby = Erubis::Eruby.new(input<strong>, :trim=&gt;false</strong>)
359
-
360
- puts "----- script source ---"
361
- puts eruby.src # print script source
362
-
363
- puts "----- result ----------"
364
- list = ['aaa', 'bbb', 'ccc']
365
- puts eruby.result(binding()) # get result
366
- </pre>
367
- <a name="example2.result"></a>
368
- <div class="terminal_caption">
369
- output</div>
370
- <pre class="terminal">$ ruby example2.rb
371
- ----- script source ---
372
- _buf = ''; _buf &lt;&lt; '&lt;ul&gt;
373
- '; <strong>_buf &lt;&lt; ' ';</strong> for item in list ; _buf &lt;&lt; '
374
- '; _buf &lt;&lt; ' &lt;li&gt;
375
- '; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '
376
- '; _buf &lt;&lt; ' &lt;/li&gt;
377
- '; <strong>_buf &lt;&lt; ' ';</strong> end ; _buf &lt;&lt; '
378
- '; _buf &lt;&lt; '&lt;/ul&gt;
379
- ';
380
- _buf.to_s
381
- ----- result ----------
382
- &lt;ul&gt;
383
-
384
- &lt;li&gt;
385
- aaa
386
- &lt;/li&gt;
387
-
388
- &lt;li&gt;
389
- bbb
390
- &lt;/li&gt;
391
-
392
- &lt;li&gt;
393
- ccc
394
- &lt;/li&gt;
395
-
396
- &lt;/ul&gt;
397
- </pre>
398
- <br>
399
-
400
-
401
- <a name="tut-escape"></a>
402
- <h3 class="section2">Escape</h3>
403
- <p>Erubis has ability to escape (sanitize) expression.
404
- Erubis::Eruby class act as the following:
405
- </p>
406
- <ul type="disc">
407
- <li><code>&lt;%= <em>expr</em> %&gt;</code> - not escaped.
408
- </li>
409
- <li><code>&lt;%== <em>expr</em> %&gt;</code> - escaped.
410
- </li>
411
- <li><code>&lt;%=== <em>expr</em> %&gt;</code> - out to $stderr.
412
- </li>
413
- <li><code>&lt;%==== <em>expr</em> %&gt;</code> - ignored.
414
- </li>
415
- </ul>
416
- <p>Erubis::EscapedEruby<sup>(<a href="#fnref:1" name="fnlink:1">*1</a>)</sup> class handle '&lt;%= %&gt;' as escaped and '&lt;%== %&gt;' as not escaped.
417
- It means that using Erubis::EscapedEruby you can escape expression by default.
418
- Also Erubis::XmlEruby class (which is equivalent to Erubis::EscapedEruby) is provided for compatibility with Erubis 1.1.
419
- </p>
420
- <a name="example3.eruby"></a>
421
- <div class="program_caption">
422
- example3.eruby</div>
423
- <pre class="program">&lt;% for item in list %&gt;
424
- &lt;p&gt;<strong>&lt;%=</strong> item <strong>%&gt;</strong>&lt;/p&gt;
425
- &lt;p&gt;<strong>&lt;%==</strong> item <strong>%&gt;</strong>&lt;/p&gt;
426
- &lt;p&gt;<strong>&lt;%===</strong> item <strong>%&gt;</strong>&lt;/p&gt;
427
-
428
- &lt;% end %&gt;
429
- </pre>
430
- <a name="example3.rb"></a>
431
- <div class="program_caption">
432
- example3.rb</div>
433
- <pre class="program">require 'erubis'
434
- input = File.read('example3.eruby')
435
- eruby = Erubis::<strong>EscapedEruby</strong>.new(input) # or Erubis::XmlEruby
436
-
437
- puts "----- script source ---"
438
- puts eruby.src # print script source
439
-
440
- puts "----- result ----------"
441
- <strong>list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"']</strong>
442
- puts eruby.result(binding()) # get result
443
- </pre>
444
- <a name="example3.result.split_filter"></a>
445
- <div class="terminal_caption">
446
- output</div>
447
- <pre class="terminal">$ ruby example3.rb 2&gt; stderr.log
448
- ----- script source ---
449
- _buf = ''; for item in list
450
- _buf &lt;&lt; ' &lt;p&gt;'; <strong>_buf &lt;&lt; Erubis::XmlHelper.escape_xml( item )</strong>; _buf &lt;&lt; '&lt;/p&gt;
451
- &lt;p&gt;'; <strong>_buf &lt;&lt; ( item ).to_s</strong>; _buf &lt;&lt; '&lt;/p&gt;
452
- &lt;p&gt;'; <strong>$stderr.puts("*** debug: item=#{(item).inspect}")</strong>; _buf &lt;&lt; '&lt;/p&gt;
453
-
454
- '; end
455
- _buf.to_s
456
- ----- result ----------
457
- &lt;p&gt;<strong>&amp;lt;aaa&amp;gt;</strong>&lt;/p&gt;
458
- &lt;p&gt;&lt;aaa&gt;&lt;/p&gt;
459
- &lt;p&gt;&lt;/p&gt;
460
-
461
- &lt;p&gt;<strong>b&amp;amp;b</strong>&lt;/p&gt;
462
- &lt;p&gt;b&amp;b&lt;/p&gt;
463
- &lt;p&gt;&lt;/p&gt;
464
-
465
- &lt;p&gt;<strong>&amp;quot;ccc&amp;quot;</strong>&lt;/p&gt;
466
- &lt;p&gt;"ccc"&lt;/p&gt;
467
- &lt;p&gt;&lt;/p&gt;
468
-
469
- $ cat stderr.log
470
- *** debug: item="&lt;aaa&gt;"
471
- *** debug: item="b&amp;b"
472
- *** debug: item="\"ccc\""
473
- </pre>
474
- <p>The command-line option '-e' will do the same action as Erubis::EscapedEruby.
475
- This option is available for any language.
476
- </p>
477
- <a name="example3_e.result"></a>
478
- <pre class="terminal">$ erubis -l ruby <strong>-e</strong> example3.eruby
479
- _buf = ''; for item in list
480
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
481
- &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
482
- &lt;p&gt;'; $stderr.puts("*** debug: item=#{(item).inspect}"); _buf &lt;&lt; '&lt;/p&gt;
483
-
484
- '; end
485
- _buf.to_s
486
- </pre>
487
- <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.
488
- </p>
489
- <div class="program_caption">
490
- example to override Erubis::Eruby#escaped_expr()</div>
491
- <pre class="program">class CGIEruby &lt; Erubis::Eruby
492
- def <strong>escaped_expr(code)</strong>
493
- return "CGI.escapeHTML((#{code.strip}).to_s)"
494
- #return "h(#{code.strip})"
495
- end
496
- end
497
-
498
- class LatexEruby &lt; Erubi::Eruby
499
- def <strong>escaped_expr(code)</strong>
500
- return "(#{code}).gsub(/[%\\]/,'\\\\\&amp;')"
501
- end
502
- end
503
- </pre>
504
- <div class="footnote">
505
- <dl compact>
506
- <dt>(<a name="fnref:1" href="#fnlink:1">*1</a>)</dt>
507
- <dd>Erubis::EscapedEruby class includes Erubis::EscapeEnhancer which swtches the action of '&lt;%= %&gt;' and '&lt;%== %&gt;'.</dd>
508
- </dl>
509
- </div>
510
- <br>
511
-
512
-
513
- <a name="tut-pattern"></a>
514
- <h3 class="section2">Embedded Pattern</h3>
515
- <p>You can change embedded pattern '<code>&lt;% %&gt;</code>' to another by command-line option '-p' or option '<code>:pattern=&gt;...</code>' of Erubis::Eruby.new().
516
- </p>
517
- <a name="example4.eruby"></a>
518
- <div class="program_caption">
519
- example4.eruby</div>
520
- <pre class="program"><strong>&lt;!--%</strong> for item in list <strong>%--&gt;</strong>
521
- &lt;p&gt;<strong>&lt;!--%=</strong> item <strong>%--&gt;</strong>&lt;/p&gt;
522
- <strong>&lt;!--%</strong> end <strong>%--&gt;</strong>
523
- </pre>
524
- <a name="example4_x.result"></a>
525
- <div class="terminal_caption">
526
- compiled source code with command-line option '-p'</div>
527
- <pre class="terminal">$ erubis -x <strong>-p '&lt;!--% %--&gt;'</strong> example4.eruby
528
- _buf = ''; for item in list
529
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
530
- '; end
531
- _buf.to_s
532
- </pre>
533
- <a name="example4.rb"></a>
534
- <div class="program_caption">
535
- example4.rb</div>
536
- <pre class="program">require 'erubis'
537
- input = File.read('example4.eruby')
538
- eruby = Erubis::Eruby.new(input<strong>, :pattern=&gt;'&lt;!--% %--&gt;'</strong>)
539
- # or '&lt;(?:!--)?% %(?:--)?&gt;'
540
-
541
- puts "---------- script source ---"
542
- puts eruby.src # print script source
543
-
544
- puts "---------- result ----------"
545
- list = ['aaa', 'bbb', 'ccc']
546
- puts eruby.result(binding()) # get result
547
- </pre>
548
- <a name="example4.result"></a>
549
- <div class="terminal_caption">
550
- output</div>
551
- <pre class="terminal">$ ruby example4.rb
552
- ---------- script source ---
553
- _buf = ''; for item in list
554
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
555
- '; end
556
- _buf.to_s
557
- ---------- result ----------
558
- &lt;p&gt;aaa&lt;/p&gt;
559
- &lt;p&gt;bbb&lt;/p&gt;
560
- &lt;p&gt;ccc&lt;/p&gt;
561
- </pre>
562
- <p>It is able to specify regular expression with :pattern option.
563
- Notice that you must use '<code>(?: )</code>' instead of '<code>( )</code>' for grouping.
564
- For example, '<code>&lt;(!--)?% %(--)?&gt;</code>' will not work while '<code>&lt;(?:!--)?% %(?:--)?&gt;</code>' will work.
565
- </p>
566
- <br>
567
-
568
-
569
- <a name="tut-context"></a>
570
- <h3 class="section2">Context Object</h3>
571
- <p>Context object is a set of data which are used in eRuby script.
572
- Using context object makes clear which data to be used.
573
- In Erubis, Hash object and Erubis::Context object are available as context object.
574
- </p>
575
- <p>Context data can be accessible via instance variables in eRuby script.
576
- </p>
577
- <a name="example5.eruby"></a>
578
- <div class="program_caption">
579
- example5.eruby</div>
580
- <pre class="program">&lt;span&gt;&lt;%= <strong>@val</strong> %&gt;&lt;/span&gt;
581
- &lt;ul&gt;
582
- &lt;% for item in <strong>@list</strong> %&gt;
583
- &lt;li&gt;&lt;%= item %&gt;&lt;/li&gt;
584
- &lt;% end %&gt;
585
- &lt;/ul&gt;
586
- </pre>
587
- <a name="example5.rb"></a>
588
- <div class="program_caption">
589
- example5.rb</div>
590
- <pre class="program">require 'erubis'
591
- input = File.read('example5.eruby')
592
- eruby = Erubis::Eruby.new(input) # create Eruby object
593
-
594
- ## create context object
595
- ## (key means var name, which may be string or symbol.)
596
- <strong>context = {
597
- :val =&gt; 'Erubis Example',
598
- 'list' =&gt; ['aaa', 'bbb', 'ccc'],
599
- }</strong>
600
- ## or
601
- # context = Erubis::Context.new()
602
- # context['val'] = 'Erubis Example'
603
- # context[:list] = ['aaa', 'bbb', 'ccc'],
604
-
605
- puts <strong>eruby.evaluate(context)</strong> # get result
606
- </pre>
607
- <a name="example5.result"></a>
608
- <div class="terminal_caption">
609
- output</div>
610
- <pre class="terminal">$ ruby example5.rb
611
- &lt;span&gt;Erubis Example&lt;/span&gt;
612
- &lt;ul&gt;
613
- &lt;li&gt;aaa&lt;/li&gt;
614
- &lt;li&gt;bbb&lt;/li&gt;
615
- &lt;li&gt;ccc&lt;/li&gt;
616
- &lt;/ul&gt;
617
- </pre>
618
- <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'.
619
- 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.
620
- </p>
621
- <p>Here is the definition of Erubis#result() and Erubis#evaluate().
622
- </p>
623
- <div class="program_caption">
624
- definition of result(binding) and evaluate(context)</div>
625
- <pre class="program">def result(_binding=TOPLEVEL_BINDING)
626
- if _binding.is_a?(Hash)
627
- # load hash data as local variable
628
- _h = _binding
629
- _binding = binding()
630
- eval _h.collect{|k,v| "#{k} = _h[#{k.inspect}];"}.join, _binding
631
- end
632
- return <strong>eval(@src, _binding)</strong>
633
- end
634
-
635
- def evaluate(_context=Erubis::Context.new)
636
- if _context.is_a?(Hash)
637
- # convert hash object to Context object
638
- _hash = _context
639
- _context = Erubis::Context.new
640
- _hash.each {|k, v| _context[k] = v }
641
- end
642
- return <strong>_context.instance_eval(@src)</strong>
643
- end
644
- </pre>
645
- <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.
646
- </p>
647
- <a name="example6.rb"></a>
648
- <div class="program_caption">
649
- example6.rb</div>
650
- <pre class="program">class MyData
651
- attr_accessor :val, :list
652
- end
653
-
654
- ## any object can be a context object
655
- <strong>mydata = MyData.new</strong>
656
- <strong>mydata.val = 'Erubis Example'</strong>
657
- <strong>mydata.list = ['aaa', 'bbb', 'ccc']</strong>
658
-
659
- require 'erubis'
660
- eruby = Erubis::Eruby.new(File.read('example5.eruby'))
661
- puts eruby.evaluate(<strong>mydata</strong>)
662
- </pre>
663
- <a name="example6.result"></a>
664
- <div class="terminal_caption">
665
- output</div>
666
- <pre class="terminal">$ ruby example6.rb
667
- &lt;span&gt;Erubis Example&lt;/span&gt;
668
- &lt;ul&gt;
669
- &lt;li&gt;aaa&lt;/li&gt;
670
- &lt;li&gt;bbb&lt;/li&gt;
671
- &lt;li&gt;ccc&lt;/li&gt;
672
- &lt;/ul&gt;
673
- </pre>
674
- <p>It is recommended to use 'Erubis::Eruby#evaluate(context)' rather than 'Erubis::Eruby#result(binding())' because the latter has some problems.
675
- See <a href="#topics-context-vs-binding">evaluate(context) v.s. result(binding)</a> section for details.
676
- </p>
677
- <br>
678
-
679
-
680
- <a name="tut-datafile"></a>
681
- <h3 class="section2">Context Data File</h3>
682
- <p>Command-line option '-f' specifies context data file.
683
- Erubis load context data file and use it as context data.
684
- Context data file can be YAML file ('*.yaml' or '*.yml') or Ruby script ('*.rb').
685
- </p>
686
- <a name="example7.eruby"></a>
687
- <div class="program_caption">
688
- example7.eruby</div>
689
- <pre class="program">&lt;h1&gt;&lt;%= <strong>@title</strong> %&gt;&lt;/h1&gt;
690
- &lt;ul&gt;
691
- &lt;% for user in <strong>@users</strong> %&gt;
692
- &lt;li&gt;
693
- &lt;a href="mailto:&lt;%= user['mail']%&gt;"&gt;&lt;%= user['name'] %&gt;&lt;/a&gt;
694
- &lt;/li&gt;
695
- &lt;% end %&gt;
696
- &lt;/ul&gt;
697
- </pre>
698
- <a name="context.yaml"></a>
699
- <div class="program_caption">
700
- context.yaml</div>
701
- <pre class="program"><strong>title:</strong> Users List
702
- <strong>users:</strong>
703
- - name: foo
704
- mail: foo@mail.com
705
- - name: bar
706
- mail: bar@mail.net
707
- - name: baz
708
- mail: baz@mail.org
709
- </pre>
710
- <a name="context.rb"></a>
711
- <div class="program_caption">
712
- context.rb</div>
713
- <pre class="program">@title = 'Users List'
714
- @users = [
715
- { 'name'=&gt;'foo', 'mail'=&gt;'foo@mail.com' },
716
- { 'name'=&gt;'bar', 'mail'=&gt;'bar@mail.net' },
717
- { 'name'=&gt;'baz', 'mail'=&gt;'baz@mail.org' },
718
- ]
719
- </pre>
720
- <a name="example7.result.split_filter"></a>
721
- <div class="terminal_caption">
722
- example of command-line option '-f'</div>
723
- <pre class="terminal">$ erubis <strong>-f context.yaml</strong> example7.eruby
724
- &lt;h1&gt;Users List&lt;/h1&gt;
725
- &lt;ul&gt;
726
- &lt;li&gt;
727
- &lt;a href="mailto:foo@mail.com"&gt;foo&lt;/a&gt;
728
- &lt;/li&gt;
729
- &lt;li&gt;
730
- &lt;a href="mailto:bar@mail.net"&gt;bar&lt;/a&gt;
731
- &lt;/li&gt;
732
- &lt;li&gt;
733
- &lt;a href="mailto:baz@mail.org"&gt;baz&lt;/a&gt;
734
- &lt;/li&gt;
735
- &lt;/ul&gt;
736
- $ erubis <strong>-f context.rb</strong> example7.eruby
737
- &lt;h1&gt;Users List&lt;/h1&gt;
738
- &lt;ul&gt;
739
- &lt;li&gt;
740
- &lt;a href="mailto:foo@mail.com"&gt;foo&lt;/a&gt;
741
- &lt;/li&gt;
742
- &lt;li&gt;
743
- &lt;a href="mailto:bar@mail.net"&gt;bar&lt;/a&gt;
744
- &lt;/li&gt;
745
- &lt;li&gt;
746
- &lt;a href="mailto:baz@mail.org"&gt;baz&lt;/a&gt;
747
- &lt;/li&gt;
748
- &lt;/ul&gt;
749
- </pre>
750
- <p>Command-line option '-S' converts keys of mapping in YAML data file from string into symbol.
751
- Command-line option '-B' invokes 'Erubis::Eruby#result(binding())' instead of 'Erubis::Eruby#evaluate(context)'.
752
- </p>
753
- <br>
754
-
755
-
756
- <a name="tut-datastr"></a>
757
- <h3 class="section2">Context Data String</h3>
758
- <p>Command-line option '-c <em>str</em>' enables you to specify context data in command-line.
759
- <em>str</em> can be YAML flow-style or Ruby code.
760
- </p>
761
- <a name="example8.eruby"></a>
762
- <div class="program_caption">
763
- example8.eruby</div>
764
- <pre class="program">&lt;h1&gt;&lt;%= @title %&gt;&lt;/h1&gt;
765
- &lt;ul&gt;
766
- &lt;% for item in @list %&gt;
767
- &lt;li&gt;&lt;%= item %&gt;&lt;/li&gt;
768
- &lt;% end %&gt;
769
- &lt;/ul&gt;
770
- </pre>
771
- <a name="example8_yaml.result"></a>
772
- <div class="terminal_caption">
773
- example of YAML flow style</div>
774
- <pre class="terminal">$ erubis <strong>-c '{title: Example, list: [AAA, BBB, CCC]}'</strong> example8.eruby
775
- &lt;h1&gt;Example&lt;/h1&gt;
776
- &lt;ul&gt;
777
- &lt;li&gt;AAA&lt;/li&gt;
778
- &lt;li&gt;BBB&lt;/li&gt;
779
- &lt;li&gt;CCC&lt;/li&gt;
780
- &lt;/ul&gt;
781
- </pre>
782
- <a name="example8_ruby.result"></a>
783
- <div class="terminal_caption">
784
- example of Ruby code</div>
785
- <pre class="terminal">$ erubis <strong>-c '@title="Example"; @list=%w[AAA BBB CCC]'</strong> example8.eruby
786
- &lt;h1&gt;Example&lt;/h1&gt;
787
- &lt;ul&gt;
788
- &lt;li&gt;AAA&lt;/li&gt;
789
- &lt;li&gt;BBB&lt;/li&gt;
790
- &lt;li&gt;CCC&lt;/li&gt;
791
- &lt;/ul&gt;
792
- </pre>
793
- <br>
794
-
795
-
796
- <a name="tut-preamble"></a>
797
- <h3 class="section2">Preamble and Postamble</h3>
798
- <p>The first line ('_buf = '';') in the compiled source code is called preamble
799
- and the last line ('_buf.to_s') is called postamble.
800
- </p>
801
- <p>Command-line option '-b' skips the output of preamble and postamble.
802
- </p>
803
- <a name="example9.eruby"></a>
804
- <div class="program_caption">
805
- example9.eruby</div>
806
- <pre class="program">&lt;% for item in @list %&gt;
807
- &lt;b&gt;&lt;%= item %&gt;&lt;/b&gt;
808
- &lt;% end %&gt;
809
- </pre>
810
- <a name="example9.result.split_filter"></a>
811
- <div class="terminal_caption">
812
- compiled source code with and without command-line option '-b'</div>
813
- <pre class="terminal">$ erubis -x example9.eruby
814
- <strong>_buf = '';</strong> for item in @list
815
- _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
816
- '; end
817
- <strong>_buf.to_s</strong>
818
- $ erubis -x <strong>-b</strong> example9.eruby
819
- for item in @list
820
- _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
821
- '; end
822
- </pre>
823
- <p>Erubis::Eruby.new option '<code>:preamble=&gt;false</code>' and '<code>:postamble=&gt;false</code>' also suppress output of preamble or postamle.
824
- </p>
825
- <a name="example9.rb"></a>
826
- <div class="program_caption">
827
- example9.rb</div>
828
- <pre class="program">require 'erubis'
829
- input = File.read('example9.eruby')
830
- eruby1 = Erubis::Eruby.new(input)
831
- eruby2 = Erubis::Eruby.new(input, <strong>:preamble=&gt;false, :postamble=&gt;false</strong>)
832
-
833
- puts eruby1.src # print preamble and postamble
834
- puts "--------------"
835
- puts eruby2.src # don't print preamble and postamble
836
- </pre>
837
- <a name="example9.result"></a>
838
- <div class="terminal_caption">
839
- output</div>
840
- <pre class="terminal">$ ruby example9.rb
841
- _buf = ''; for item in @list
842
- _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
843
- '; end
844
- _buf.to_s
845
- --------------
846
- for item in @list
847
- _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
848
- '; end
849
- </pre>
850
- <br>
851
-
852
-
853
- <a name="tut-pi"></a>
854
- <h3 class="section2">Processing Instruction (PI) Converter</h3>
855
- <p>Erubis can parse Processing Instructions (PI) as embedded pattern.
856
- </p>
857
- <ul type="disc">
858
- <li>'<code>&lt;?rb <em>...</em> ?&gt;</code>' represents Ruby statement.
859
- </li>
860
- <li>'<code>@{<em>...</em>}@</code>' represents escaped expression value.
861
- </li>
862
- <li>'<code>@!{<em>...</em>}@</code>' represents normal expression value.
863
- </li>
864
- <li>'<code>@!!{<em>...</em>}@</code>' prints expression value to standard output.
865
- </li>
866
- <li>(experimental) '<code>&lt;%= <em>...</em> %&gt;</code>' is also available to print expression value.
867
- </li>
868
- </ul>
869
- <p>This is more useful than basic embedded pattern ('<code>&lt;% ... &gt;</code>') because PI doesn't break XML or HTML at all.
870
- For example the following XHTML file is well-formed and HTML validator got no errors on this example.
871
- </p>
872
- <a name="example10.xhtml"></a>
873
- <div class="program_caption">
874
- example10.xhtml</div>
875
- <pre class="program">&lt;?xml version="1.0" ?&gt;
876
- <strong>&lt;?rb
877
- lang = 'en'
878
- list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"']
879
- ?&gt;</strong>
880
- &lt;html lang="<strong>@!{lang}@</strong>"&gt;
881
- &lt;body&gt;
882
- &lt;ul&gt;
883
- <strong>&lt;?rb for item in list ?&gt;</strong>
884
- &lt;li&gt;<strong>@{item}@</strong>&lt;/li&gt;
885
- <strong>&lt;?rb end ?&gt;</strong>
886
- &lt;/ul&gt;
887
- &lt;/body&gt;
888
- &lt;/html&gt;
889
- </pre>
890
- <p>If the command-line property '--pi=<em>name</em>' is specified, erubis command parses input with PI converter.
891
- If <em>name</em> is omitted then the following name is used according to '-l <em>lang</em>'.
892
- </p>
893
- <div align="center">
894
- <table class="table1" border="1" cellspacing="0">
895
- <tr class="tr1">
896
- <th class="th1">'-l' option</th>
897
- <th class="th1">PI name</th>
898
- </tr>
899
- <tr class="tr1">
900
- <td class="td1">-l ruby</td>
901
- <td class="td1">&lt;?rb ... ?&gt;</td>
902
- </tr>
903
- <tr class="tr1">
904
- <td class="td1">-l php</td>
905
- <td class="td1">&lt;?php ... ?&gt;</td>
906
- </tr>
907
- <tr class="tr1">
908
- <td class="td1">-l perl</td>
909
- <td class="td1">&lt;?perl ... ?&gt;</td>
910
- </tr>
911
- <tr class="tr1">
912
- <td class="td1">-l java</td>
913
- <td class="td1">&lt;?java ... ?&gt;</td>
914
- </tr>
915
- <tr class="tr1">
916
- <td class="td1">-l javascript</td>
917
- <td class="td1">&lt;?js ... ?&gt;</td>
918
- </tr>
919
- <tr class="tr1">
920
- <td class="td1">-l scheme</td>
921
- <td class="td1">&lt;?scheme ... ?&gt;</td>
922
- </tr>
923
- </table>
924
- </div>
925
- <a name="example10_x.result"></a>
926
- <div class="terminal_caption">
927
- output</div>
928
- <pre class="terminal">$ erubis -x <strong>--pi</strong> example10.xhtml
929
- _buf = ''; _buf &lt;&lt; '&lt;?xml version="1.0" ?&gt;
930
- ';
931
- lang = 'en'
932
- list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"']
933
-
934
- _buf &lt;&lt; '&lt;html lang="'; _buf &lt;&lt; (lang).to_s; _buf &lt;&lt; '"&gt;
935
- &lt;body&gt;
936
- &lt;ul&gt;
937
- '; for item in list
938
- _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml(item); _buf &lt;&lt; '&lt;/li&gt;
939
- '; end
940
- _buf &lt;&lt; ' &lt;/ul&gt;
941
- &lt;/body&gt;
942
- &lt;/html&gt;
943
- ';
944
- _buf.to_s
945
- </pre>
946
- <p>Expression character can be changeable by command-line property '--embchar=<em>char</em>. Default is '<code>@</code>'.
947
- </p>
948
- <p>Use Erubis::PI::Eruby instead of Erubis::Eruby if you want to use PI as embedded pattern.
949
- </p>
950
- <a name="example10.rb"></a>
951
- <div class="program_caption">
952
- example10.rb</div>
953
- <pre class="program">require 'erubis'
954
- input = File.read('example10.xhtml')
955
- eruby = Erubis::PI::Eruby.new(input)
956
- print eruby.src
957
- </pre>
958
- <a name="example10.result"></a>
959
- <div class="terminal_caption">
960
- output</div>
961
- <pre class="terminal">$ ruby example10.rb
962
- _buf = ''; _buf &lt;&lt; '&lt;?xml version="1.0" ?&gt;
963
- ';
964
- lang = 'en'
965
- list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"']
966
-
967
- _buf &lt;&lt; '&lt;html lang="'; _buf &lt;&lt; (lang).to_s; _buf &lt;&lt; '"&gt;
968
- &lt;body&gt;
969
- &lt;ul&gt;
970
- '; for item in list
971
- _buf &lt;&lt; ' &lt;li&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml(item); _buf &lt;&lt; '&lt;/li&gt;
972
- '; end
973
- _buf &lt;&lt; ' &lt;/ul&gt;
974
- &lt;/body&gt;
975
- &lt;/html&gt;
976
- ';
977
- _buf.to_s
978
- </pre>
979
- <p><strong>(experimental)</strong> Erubis supports '&lt;%= ... %&gt;' pattern with PI pattern.
980
- </p>
981
- <div class="program_caption">
982
- example of Rails view template</div>
983
- <pre class="program">&lt;table&gt;
984
- &lt;tr&gt;
985
- &lt;?rb for item in @list ?&gt;
986
- &lt;td&gt;@{item.id}@&lt;/td&gt;
987
- &lt;td&gt;@{item.name}@&lt;/td&gt;
988
- &lt;td&gt;
989
- <strong>&lt;%=</strong> link_to 'Destroy', {:action=&gt;'destroy', :id=&gt;item.id},
990
- :confirm=&gt;'Are you OK?' <strong>%&gt;</strong>
991
- &lt;/td&gt;
992
- &lt;?rb end ?&gt;
993
- &lt;/tr&gt;
994
- &lt;/table&gt;
995
- </pre>
996
- <br>
997
-
998
-
999
- <a name="tut-notext"></a>
1000
- <h3 class="section2">Retrieve Ruby Code</h3>
1001
- <p>Similar to '-x', ommand-line option '-X' shows converted Ruby source code.
1002
- The difference between '-x' and 'X' is that the former converts text part but the latter ignores it.
1003
- It means that you can retrieve Ruby code from eRuby script by '-X' option.
1004
- </p>
1005
- <p>For example, see the following eRuby script.
1006
- This is some complex, so it is difficult to grasp the program code.
1007
- </p>
1008
- <a name="example11.rhtml"></a>
1009
- <div class="program_caption">
1010
- example11.rhtml</div>
1011
- <pre class="program">&lt;?xml version="1.0" encoding="UTF-8"?&gt;
1012
- &lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
1013
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
1014
- &lt;html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"&gt;
1015
- &lt;body&gt;
1016
- &lt;h3&gt;List&lt;/h3&gt;
1017
- &lt;% if @list.nil? || @list.empty? %&gt;
1018
- &lt;p&gt;not found.&lt;/p&gt;
1019
- &lt;% else %&gt;
1020
- &lt;table&gt;
1021
- &lt;tbody&gt;
1022
- &lt;% @list.each_with_index do |item, i| %&gt;
1023
- &lt;tr bgcolor="&lt;%= i % 2 == 0 ? '#FCC' : '#CCF' %&gt;"&gt;
1024
- &lt;td&gt;&lt;%= item %&gt;&lt;/td&gt;
1025
- &lt;/tr&gt;
1026
- &lt;% end %&gt;
1027
- &lt;/tbody&gt;
1028
- &lt;/table&gt;
1029
- &lt;% end %&gt;
1030
- &lt;/body&gt;
1031
- &lt;/html&gt;
1032
- </pre>
1033
- <p>Command-line option '-X' extracts only the ruby code from eRuby script.
1034
- </p>
1035
- <a name="example11.result"></a>
1036
- <div class="terminal_caption">
1037
- result</div>
1038
- <pre class="terminal">$ erubis <strong>-X</strong> example11.rhtml
1039
- _buf = '';
1040
-
1041
-
1042
-
1043
-
1044
-
1045
- if @list.nil? || @list.empty?
1046
-
1047
- else
1048
-
1049
-
1050
- @list.each_with_index do |item, i|
1051
- _buf &lt;&lt; ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
1052
- _buf &lt;&lt; ( item ).to_s;
1053
-
1054
- end
1055
-
1056
-
1057
- end
1058
-
1059
-
1060
- _buf.to_s
1061
- </pre>
1062
- <p>Command-line option '-C' (<strong>c</strong>mpact) deletes empty lines.
1063
- </p>
1064
- <a name="example11_C.result"></a>
1065
- <div class="terminal_caption">
1066
- result</div>
1067
- <pre class="terminal">$ erubis <strong>-XC</strong> example11.rhtml
1068
- _buf = '';
1069
- if @list.nil? || @list.empty?
1070
- else
1071
- @list.each_with_index do |item, i|
1072
- _buf &lt;&lt; ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
1073
- _buf &lt;&lt; ( item ).to_s;
1074
- end
1075
- end
1076
- _buf.to_s
1077
- </pre>
1078
- <p>Option '-U' (<strong>u</strong>nique) converts empty lines into a line.
1079
- </p>
1080
- <a name="example11_U.result"></a>
1081
- <div class="terminal_caption">
1082
- result</div>
1083
- <pre class="terminal">$ erubis <strong>-XU</strong> example11.rhtml
1084
- _buf = '';
1085
-
1086
- if @list.nil? || @list.empty?
1087
-
1088
- else
1089
-
1090
- @list.each_with_index do |item, i|
1091
- _buf &lt;&lt; ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
1092
- _buf &lt;&lt; ( item ).to_s;
1093
-
1094
- end
1095
-
1096
- end
1097
-
1098
- _buf.to_s
1099
- </pre>
1100
- <p>Option '-N' (<strong>n</strong>umber) adds line number.
1101
- It is available with '-C' or '-U'.
1102
- </p>
1103
- <a name="example11_N.result"></a>
1104
- <div class="terminal_caption">
1105
- result</div>
1106
- <pre class="terminal">$ erubis <strong>-XNU</strong> example11.rhtml
1107
- 1: _buf = '';
1108
-
1109
- 7: if @list.nil? || @list.empty?
1110
-
1111
- 9: else
1112
-
1113
- 12: @list.each_with_index do |item, i|
1114
- 13: _buf &lt;&lt; ( i % 2 == 0 ? '#FCC' : '#CCF' ).to_s;
1115
- 14: _buf &lt;&lt; ( item ).to_s;
1116
-
1117
- 16: end
1118
-
1119
- 19: end
1120
-
1121
- 22: _buf.to_s
1122
- </pre>
1123
- <p>Command-line option '-X' is available with PHP script.
1124
- </p>
1125
- <a name="example11.php"></a>
1126
- <div class="program_caption">
1127
- example11.php</div>
1128
- <pre class="program">&lt;?xml version="1.0"?&gt;
1129
- &lt;html&gt;
1130
- &lt;body&gt;
1131
- &lt;h3&gt;List&lt;/h3&gt;
1132
- &lt;?php if (!$list) { ?&gt;
1133
- &lt;p&gt;not found.&lt;/p&gt;
1134
- &lt;?php } else { ?&gt;
1135
- &lt;table&gt;
1136
- &lt;tbody&gt;
1137
- &lt;?php $i = 0; ?&gt;
1138
- &lt;?php foreach ($list as $item) { ?&gt;
1139
- &lt;tr bgcolor="&lt;?php echo ++$i % 2 == 1 ? '#FCC' : '#CCF'; ?&gt;"&gt;
1140
- &lt;td&gt;&lt;?php echo $item; ?&gt;&lt;/td&gt;
1141
- &lt;/tr&gt;
1142
- &lt;?php } ?&gt;
1143
- &lt;/tbody&gt;
1144
- &lt;/table&gt;
1145
- &lt;?php } ?&gt;
1146
- &lt;/body&gt;
1147
- &lt;/html&gt;
1148
- </pre>
1149
- <a name="example11_php.result"></a>
1150
- <div class="terminal_caption">
1151
- result</div>
1152
- <pre class="terminal">$ erubis -XNU <strong>-l php</strong> <strong>--pi=php</strong> --trim=false example11.php
1153
-
1154
- 5: &lt;?php if (!$list) { ?&gt;
1155
-
1156
- 7: &lt;?php } else { ?&gt;
1157
-
1158
- 10: &lt;?php $i = 0; ?&gt;
1159
- 11: &lt;?php foreach ($list as $item) { ?&gt;
1160
- 12: &lt;?php echo ++$i % 2 == 1 ? '#FCC' : '#CCF'; ?&gt;
1161
- 13: &lt;?php echo $item; ?&gt;
1162
-
1163
- 15: &lt;?php } ?&gt;
1164
-
1165
- 18: &lt;?php } ?&gt;
1166
-
1167
- </pre>
1168
- <br>
1169
-
1170
-
1171
- <br>
1172
-
1173
-
1174
- <a name="enhancer"></a>
1175
- <h2 class="section1">Enhancer</h2>
1176
- <p>Enhancer is a module to add a certain feature into Erubis::Eruby class.
1177
- Enhancer may be language-independent or only for Erubis::Eruby class.
1178
- </p>
1179
- <p>To use enhancers, define subclass and include them.
1180
- The folloing is an example to use <a href="#escape-enhancer">EscapeEnhancer</a>, <a href="#percentline-enhancer">PercentLineEnhancer</a>, and <a href="#bipattern-enhancer">BiPatternEnhancer</a>.
1181
- </p>
1182
- <pre class="program">class MyEruby &lt; Erubis::Eruby
1183
- include EscapeEnhancer
1184
- include PercentLineEnhancer
1185
- include BiPatternEnhancer
1186
- end
1187
- </pre>
1188
- <p>You can specify enhancers in command-line with option '-E'.
1189
- The following is an example to use some enhancers in command-line.
1190
- </p>
1191
- <pre class="terminal">$ erubis -xE Escape,PercentLine,BiPattern example.eruby
1192
- </pre>
1193
- <p>The following is the list of enhancers.
1194
- </p>
1195
- <dl class="dl1">
1196
- <dt class="dt1">
1197
- <a href="#escape-enhancer">EscapeEnhander</a> (language-independent)</dt>
1198
- <dd class="dd1">
1199
- Switch '&lt;%= %&gt;' to escaped and '&lt;%== %&gt;' to unescaped.
1200
- </dd>
1201
- <dt class="dt1">
1202
- <a href="#stdout-enhancer">StdoutEnhancer</a> (only for Eruby)</dt>
1203
- <dd class="dd1">
1204
- Use $stdout instead of array buffer.
1205
- </dd>
1206
- <dt class="dt1">
1207
- <a href="#printout-enhancer">PrintOutEnhancer</a> (only for Eruby)</dt>
1208
- <dd class="dd1">
1209
- Use "print(...)" statement insead of "_buf &lt;&lt; ...".
1210
- </dd>
1211
- <dt class="dt1">
1212
- <a href="#printenabled-enhancer">PrintEnabledEnhancer</a> (only for Eruby)</dt>
1213
- <dd class="dd1">
1214
- Enable to use print() in '&lt;% ... %&gt;'.
1215
- </dd>
1216
- <dt class="dt1">
1217
- <a href="#array-enhancer">ArrayEnhancer</a> (only for Eruby)</dt>
1218
- <dd class="dd1">
1219
- Return array of string instead of returning string.
1220
- </dd>
1221
- <dt class="dt1">
1222
- <a href="#arraybuffer-enhancer">ArrayBufferEnhancer</a> (only for Eruby)</dt>
1223
- <dd class="dd1">
1224
- Use array buffer. It is a little slower than StringBufferEnhancer.
1225
- </dd>
1226
- <dt class="dt1">
1227
- <a href="#stringbuffer-enhancer">StringBufferEnhancer</a> (only for Eruby)</dt>
1228
- <dd class="dd1">
1229
- Use string buffer. This is included in Erubis::Eruby by default.
1230
- </dd>
1231
- <dt class="dt1">
1232
- <a href="#erbout-enhancer">ErboutEnhancer</a> (only for Eruby)</dt>
1233
- <dd class="dd1">
1234
- Set '_erbout = _buf = "";' to be compatible with ERB.
1235
- </dd>
1236
- <dt class="dt1">
1237
- <a href="#notext-enhancer">NoTextEnhancer</a> (language-independent)</dt>
1238
- <dd class="dd1">
1239
- Print embedded code only and ignore normal text.
1240
- </dd>
1241
- <dt class="dt1">
1242
- <a href="#nocode-enhancer">NoCodeEnhancer</a> (language-independent)</dt>
1243
- <dd class="dd1">
1244
- Print normal text only and ignore code.
1245
- </dd>
1246
- <dt class="dt1">
1247
- <a href="#simplify-enhancer">SimplifyEnhancer</a> (language-independent)</dt>
1248
- <dd class="dd1">
1249
- Make compile faster but don't trim spaces around '&lt;% %&gt;'.
1250
- </dd>
1251
- <dt class="dt1">
1252
- <a href="#bipattern-enhancer">BiPatternEnhancer</a> (language-independent)</dt>
1253
- <dd class="dd1">
1254
- [experimental] Enable to use another embedded pattern with '&lt;% %&gt;'.
1255
- </dd>
1256
- <dt class="dt1">
1257
- <a href="#percentline-enhancer">PercentLineEnhancer</a> (language-independent)</dt>
1258
- <dd class="dd1">
1259
- Regard lines starting with '%' as Ruby code. This is for compatibility with eruby and ERB.
1260
- </dd>
1261
- <dt class="dt1">
1262
- <a href="#headerfooter-enhancer">HeaderFooterEnhancer</a> (language-independent)</dt>
1263
- <dd class="dd1">
1264
- [experimental] Enable you to add header and footer in eRuby script.
1265
- </dd>
1266
- <dt class="dt1">
1267
- <a href="#interpolation-enhancer">InterpolationEnhancer</a> (only for Eruby)</dt>
1268
- <dd class="dd1">
1269
- [experimental] convert '&lt;p&gt;&lt;%= text %&gt;&lt;/p&gt;' into '_buf &lt;&lt; %Q`&lt;p&gt;#{text}&lt;/p&gt;`'.
1270
- </dd>
1271
- <dt class="dt1">
1272
- <a href="#deleteindent-enhancer">DeleteIndentEnhancer</a> (language-independent)</dt>
1273
- <dd class="dd1">
1274
- [experimental] delete indentation of HTML file and eliminate page size.
1275
- </dd>
1276
- </dl>
1277
- <p>If you required 'erubis/engine/enhanced', Eruby subclasses which include each enhancers are defined.
1278
- For example, class BiPatternEruby includes BiPatternEnhancer.
1279
- </p>
1280
- <a name="escape-enhancer"></a>
1281
- <h3 class="section2">EscapeEnhancer</h3>
1282
- <p>EscapeEnhancer switches '&lt;%= ... %&gt;' to escaped and '&lt;%== ... %&gt;' to unescaped.
1283
- </p>
1284
- <a name="example.eruby"></a>
1285
- <div class="program_caption">
1286
- example.eruby</div>
1287
- <pre class="program">&lt;div&gt;
1288
- &lt;% for item in list %&gt;
1289
- &lt;p&gt;&lt;%= item %&gt;&lt;/p&gt;
1290
- &lt;p&gt;&lt;%== item %&gt;&lt;/p&gt;
1291
- &lt;% end %&gt;
1292
- &lt;/div&gt;
1293
- </pre>
1294
- <a name="escape_example.result"></a>
1295
- <div class="terminal_caption">
1296
- compiled source code</div>
1297
- <pre class="terminal">$ erubis -xE Escape example.eruby
1298
- _buf = ''; _buf &lt;&lt; '&lt;div&gt;
1299
- '; for item in list
1300
- _buf &lt;&lt; ' &lt;p&gt;'; <strong>_buf &lt;&lt; Erubis::XmlHelper.escape_xml( item );</strong> _buf &lt;&lt; '&lt;/p&gt;
1301
- &lt;p&gt;'; <strong>_buf &lt;&lt; ( item ).to_s;</strong> _buf &lt;&lt; '&lt;/p&gt;
1302
- '; end
1303
- _buf &lt;&lt; '&lt;/div&gt;
1304
- ';
1305
- _buf.to_s
1306
- </pre>
1307
- <p>EscapeEnhancer is language-independent.
1308
- </p>
1309
- <br>
1310
-
1311
-
1312
- <a name="stdout-enhancer"></a>
1313
- <h3 class="section2">StdoutEnhancer</h3>
1314
- <p>StdoutEnhancer use $sdtdout instead of array buffer.
1315
- Therefore, you can use 'print' statement in embedded ruby code.
1316
- </p>
1317
- <a name="stdout_exmple.result"></a>
1318
- <div class="terminal_caption">
1319
- compiled source code</div>
1320
- <pre class="terminal">$ erubis -xE Stdout example.eruby
1321
- <strong>_buf = $stdout;</strong> _buf &lt;&lt; '&lt;div&gt;
1322
- '; for item in list
1323
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1324
- &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1325
- '; end
1326
- _buf &lt;&lt; '&lt;/div&gt;
1327
- ';
1328
- <strong>''</strong>
1329
- </pre>
1330
- <p>StdoutEnhancer is only for Eruby.
1331
- </p>
1332
- <br>
1333
-
1334
-
1335
- <a name="printout-enhancer"></a>
1336
- <h3 class="section2">PrintOutEnhancer</h3>
1337
- <p>PrintOutEnhancer makes compiled source code to use 'print(...)' instead of '_buf &lt;&lt; ...'.
1338
- </p>
1339
- <a name="printstatement_example.result"></a>
1340
- <div class="terminal_caption">
1341
- compiled source code</div>
1342
- <pre class="terminal">$ erubis -xE PrintOut example.eruby
1343
- <strong>print</strong> '&lt;div&gt;
1344
- '; for item in list
1345
- <strong>print</strong> ' &lt;p&gt;'; <strong>print</strong>(( item ).to_s); <strong>print</strong> '&lt;/p&gt;
1346
- &lt;p&gt;'; <strong>print</strong> Erubis::XmlHelper.escape_xml( item ); <strong>print</strong> '&lt;/p&gt;
1347
- '; end
1348
- <strong>print</strong> '&lt;/div&gt;
1349
- ';
1350
- </pre>
1351
- <p>PrintOutEnhancer is only for Eruby.
1352
- </p>
1353
- <br>
1354
-
1355
-
1356
- <a name="printenabled-enhancer"></a>
1357
- <h3 class="section2">PrintEnabledEnhancer</h3>
1358
- <p>PrintEnabledEnhancer enables you to use print() method in '&lt;% ... %&gt;'.
1359
- </p>
1360
- <a name="printenabled-example.eruby"></a>
1361
- <div class="program_caption">
1362
- printenabled-example.eruby</div>
1363
- <pre class="program">&lt;% for item in @list %&gt;
1364
- &lt;b&gt;<strong>&lt;% print item %&gt;</strong>&lt;/b&gt;
1365
- &lt;% end %&gt;
1366
- </pre>
1367
- <a name="printenabled-example.rb"></a>
1368
- <div class="program_caption">
1369
- printenabled-example.rb</div>
1370
- <pre class="program">require 'erubis'
1371
- class PrintEnabledEruby &lt; Erubis::Eruby
1372
- include Erubis::PrintEnabledEnhancer
1373
- end
1374
- input = File.read('printenabled-example.eruby')
1375
- eruby = PrintEnabledEruby.new(input)
1376
- list = ['aaa', 'bbb', 'ccc']
1377
- print eruby.evaluate(:list=&gt;list)
1378
- </pre>
1379
- <a name="printenable_example.result"></a>
1380
- <div class="terminal_caption">
1381
- output result</div>
1382
- <pre class="terminal">$ ruby printenabled-example.rb
1383
- &lt;b&gt;aaa&lt;/b&gt;
1384
- &lt;b&gt;bbb&lt;/b&gt;
1385
- &lt;b&gt;ccc&lt;/b&gt;
1386
- </pre>
1387
- <p>Notice to use Eruby#evaluate() and not to use Eruby#result(),
1388
- because print() method in '&lt;% ... %&gt;' invokes not Kernel#print() but PrintEnabledEnhancer#print().
1389
- </p>
1390
- <p>PrintEnabledEnhancer is only for Eruby.
1391
- </p>
1392
- <br>
1393
-
1394
-
1395
- <a name="array-enhancer"></a>
1396
- <h3 class="section2">ArrayEnhancer</h3>
1397
- <p>ArrayEnhancer makes Eruby to return an array of strings.
1398
- </p>
1399
- <a name="array_example.result"></a>
1400
- <div class="terminal_caption">
1401
- compiled source code</div>
1402
- <pre class="terminal">$ erubis -xE Array example.eruby
1403
- <strong>_buf = [];</strong> _buf &lt;&lt; '&lt;div&gt;
1404
- '; for item in list
1405
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1406
- &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1407
- '; end
1408
- _buf &lt;&lt; '&lt;/div&gt;
1409
- ';
1410
- <strong>_buf</strong>
1411
- </pre>
1412
- <p>ArrayEnhancer is only for Eruby.
1413
- </p>
1414
- <br>
1415
-
1416
-
1417
- <a name="arraybuffer-enhancer"></a>
1418
- <h3 class="section2">ArrayBufferEnhancer</h3>
1419
- <p>ArrayBufferEnhancer makes Eruby to use array buffer.
1420
- Array buffer is a litte slower than String buffer.
1421
- </p>
1422
- <p>ArrayBufferEnhancer is only for Eruby.
1423
- </p>
1424
- <a name="arraybuffer_example.result"></a>
1425
- <div class="terminal_caption">
1426
- compiled source code</div>
1427
- <pre class="terminal">$ erubis -xE ArrayBuffer example.eruby
1428
- <strong>_buf = [];</strong> _buf &lt;&lt; '&lt;div&gt;
1429
- '; for item in list
1430
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1431
- &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1432
- '; end
1433
- _buf &lt;&lt; '&lt;/div&gt;
1434
- ';
1435
- <strong>_buf.join</strong>
1436
- </pre>
1437
- <br>
1438
-
1439
-
1440
- <a name="stringbuffer-enhancer"></a>
1441
- <h3 class="section2">StringBufferEnhancer</h3>
1442
- <p>StringBufferEnhancer makes Eruby to use string buffer.
1443
- String buffer is a little faster than array buffer.
1444
- Erubis::Eruby includes this enhancer by default.
1445
- </p>
1446
- <a name="stringbuffer_example.result"></a>
1447
- <div class="terminal_caption">
1448
- compiled source code</div>
1449
- <pre class="terminal">$ erubis -xE StringBuffer example.eruby
1450
- <strong>_buf = '';</strong> _buf &lt;&lt; '&lt;div&gt;
1451
- '; for item in list
1452
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1453
- &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1454
- '; end
1455
- _buf &lt;&lt; '&lt;/div&gt;
1456
- ';
1457
- <strong>_buf.to_s</strong>
1458
- </pre>
1459
- <p>StringBufferEnhancer is only for Eruby.
1460
- </p>
1461
- <br>
1462
-
1463
-
1464
- <a name="erbout-enhancer"></a>
1465
- <h3 class="section2">ErboutEnhancer</h3>
1466
- <p>ErboutEnhancer makes Eruby to be compatible with ERB.
1467
- This is useful especially for Ruby on Rails.
1468
- </p>
1469
- <div class="terminal_caption">
1470
- compiled source code</div>
1471
- <pre class="terminal">$ erubis -xE Erbout example.eruby
1472
- <strong>_erbout = _buf = '';</strong> _buf &lt;&lt; '&lt;div&gt;
1473
- '; for item in list
1474
- _buf &lt;&lt; ' &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1475
- &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1476
- '; end
1477
- _buf &lt;&lt; '&lt;/div&gt;
1478
- ';
1479
- _buf.to_s
1480
- </pre>
1481
- <p>ErboutEnhancer is only for Eruby.
1482
- </p>
1483
- <br>
1484
-
1485
-
1486
- <a name="notext-enhancer"></a>
1487
- <h3 class="section2">NoTextEnhancer</h3>
1488
- <p>NoTextEnhancer suppress output of text and prints only embedded code.
1489
- This is useful especially when debugging a complex eRuby script.
1490
- </p>
1491
- <a name="notext-example.eruby"></a>
1492
- <div class="program_caption">
1493
- notext-example.eruby</div>
1494
- <pre class="program">&lt;h3&gt;List&lt;/h3&gt;
1495
- &lt;% if !@list || @list.empty? %&gt;
1496
- &lt;p&gt;not found.&lt;/p&gt;
1497
- &lt;% else %&gt;
1498
- &lt;table&gt;
1499
- &lt;tbody&gt;
1500
- &lt;% @list.each_with_index do |item, i| %&gt;
1501
- &lt;tr bgcolor="&lt;%= i%2 == 0 ? '#FFCCCC' : '#CCCCFF' %&gt;"&gt;
1502
- &lt;td&gt;&lt;%= item %&gt;&lt;/td&gt;
1503
- &lt;/tr&gt;
1504
- &lt;% end %&gt;
1505
- &lt;/tbody&gt;
1506
- &lt;/table&gt;
1507
- &lt;% end %&gt;
1508
- </pre>
1509
- <a name="notext_example.result"></a>
1510
- <div class="terminal_caption">
1511
- output example of NoTextEnhancer</div>
1512
- <pre class="terminal">$ erubis -xE NoText notext-example.eruby
1513
- _buf = '';
1514
- if !@list || @list.empty?
1515
-
1516
- else
1517
-
1518
-
1519
- @list.each_with_index do |item, i|
1520
- _buf &lt;&lt; ( i%2 == 0 ? '#FFCCCC' : '#CCCCFF' ).to_s;
1521
- _buf &lt;&lt; ( item ).to_s;
1522
-
1523
- end
1524
-
1525
-
1526
- end
1527
- _buf.to_s
1528
- </pre>
1529
- <p>NoTextEnhancer is language-independent. It is useful even if you are PHP user, see <a href="#topics-php">this section</a>.
1530
- </p>
1531
- <br>
1532
-
1533
-
1534
- <a name="nocode-enhancer"></a>
1535
- <h3 class="section2">NoCodeEnhancer</h3>
1536
- <p>NoCodeEnhancer suppress output of embedded code and prints only normal text.
1537
- This is useful especially when validating HTML tags.
1538
- </p>
1539
- <a name="nocode-example.eruby"></a>
1540
- <div class="program_caption">
1541
- nocode-example.eruby</div>
1542
- <pre class="program">&lt;h3&gt;List&lt;/h3&gt;
1543
- &lt;% if !@list || @list.empty? %&gt;
1544
- &lt;p&gt;not found.&lt;/p&gt;
1545
- &lt;% else %&gt;
1546
- &lt;table&gt;
1547
- &lt;tbody&gt;
1548
- &lt;% @list.each_with_index do |item, i| %&gt;
1549
- &lt;tr bgcolor="&lt;%= i%2 == 0 ? '#FFCCCC' : '#CCCCFF' %&gt;"&gt;
1550
- &lt;td&gt;&lt;%= item %&gt;&lt;/td&gt;
1551
- &lt;/tr&gt;
1552
- &lt;% end %&gt;
1553
- &lt;/tbody&gt;
1554
- &lt;/table&gt;
1555
- &lt;% end %&gt;
1556
- </pre>
1557
- <a name="nocode_example.result"></a>
1558
- <div class="terminal_caption">
1559
- output example of NoCodeEnhancer</div>
1560
- <pre class="terminal">$ erubis -xE NoCode notext-example.eruby
1561
- &lt;h3&gt;List&lt;/h3&gt;
1562
-
1563
- &lt;p&gt;not found.&lt;/p&gt;
1564
-
1565
- &lt;table&gt;
1566
- &lt;tbody&gt;
1567
-
1568
- &lt;tr bgcolor=""&gt;
1569
- &lt;td&gt;&lt;/td&gt;
1570
- &lt;/tr&gt;
1571
-
1572
- &lt;/tbody&gt;
1573
- &lt;/table&gt;
1574
-
1575
- </pre>
1576
- <p>NoCodeEnhancer is language-independent. It is useful even if you are PHP user, see <a href="#topics-php">this section</a>.
1577
- </p>
1578
- <br>
1579
-
1580
-
1581
- <a name="simplify-enhancer"></a>
1582
- <h3 class="section2">SimplifyEnhancer</h3>
1583
- <p>SimplifyEnhancer makes compiling a little faster but don't trim spaces around '&lt;% %&gt;'.
1584
- </p>
1585
- <a name="simplify_example.result"></a>
1586
- <div class="terminal_caption">
1587
- compiled source code</div>
1588
- <pre class="terminal">$ erubis -xE Simplify example.eruby
1589
- _buf = ''; _buf &lt;&lt; '&lt;div&gt;
1590
- '; for item in list ; _buf &lt;&lt; '
1591
- &lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1592
- &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1593
- '; end ; _buf &lt;&lt; '
1594
- &lt;/div&gt;
1595
- ';
1596
- _buf.to_s
1597
- </pre>
1598
- <p>SimplifyEnhancer is language-independent.
1599
- </p>
1600
- <br>
1601
-
1602
-
1603
- <a name="bipattern-enhancer"></a>
1604
- <h3 class="section2">BiPatternEnhancer</h3>
1605
- <p>BiPatternEnhancer enables to use another embedded pattern with '&lt;% %&gt;'.
1606
- By Default, '[= ... =]' is available for expression.
1607
- You can specify pattern by :bipattern property.
1608
- </p>
1609
- <a name="bipattern-example.rhtml"></a>
1610
- <div class="program_caption">
1611
- bipattern-example.rhtml</div>
1612
- <pre class="program">&lt;% for item in list %&gt;
1613
- &lt;b&gt;<strong>[= item =]</strong>&lt;/b&gt;
1614
- &lt;b&gt;<strong>[== item =]</strong>&lt;/b&gt;
1615
- &lt;% end %&gt;
1616
- </pre>
1617
- <a name="bipattern_example.result"></a>
1618
- <div class="terminal_caption">
1619
- compiled source code</div>
1620
- <pre class="terminal">$ erubis -xE BiPattern bipattern-example.rhtml
1621
- _buf = ''; for item in list
1622
- _buf &lt;&lt; ' &lt;b&gt;'; <strong>_buf &lt;&lt; ( item ).to_s;</strong> _buf &lt;&lt; '&lt;/b&gt;
1623
- &lt;b&gt;'; <strong>_buf &lt;&lt; Erubis::XmlHelper.escape_xml( item );</strong> _buf &lt;&lt; '&lt;/b&gt;
1624
- '; end
1625
- _buf.to_s
1626
- </pre>
1627
- <p>BiPatternEnhancer is language-independent.
1628
- </p>
1629
- <br>
1630
-
1631
-
1632
- <a name="percentline-enhancer"></a>
1633
- <h3 class="section2">PercentLineEnhancer</h3>
1634
- <p>PercentLineEnhancer regards lines starting with '%' as Ruby code.
1635
- This is for compatibility with eruby and ERB.
1636
- </p>
1637
- <a name="percentline-example.rhtml"></a>
1638
- <div class="program_caption">
1639
- percentline-example.rhtml</div>
1640
- <pre class="program"><strong>% for item in list</strong>
1641
- &lt;b&gt;&lt;%= item %&gt;&lt;/b&gt;
1642
- <strong>% end</strong>
1643
- %% lines with '%%'
1644
- </pre>
1645
- <a name="percentline_example.result"></a>
1646
- <div class="terminal_caption">
1647
- compiled source code</div>
1648
- <pre class="terminal">$ erubis -xE PercentLine percentline-example.rhtml
1649
- _buf = ''; <strong>for item in list</strong>
1650
- _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
1651
- '; <strong>end</strong>
1652
- _buf &lt;&lt; '% lines with \'%%\'
1653
- ';
1654
- _buf.to_s
1655
- </pre>
1656
- <p>PercentLineEnhancer is language-independent.
1657
- </p>
1658
- <br>
1659
-
1660
-
1661
- <a name="headerfooter-enhancer"></a>
1662
- <h3 class="section2">HeaderFooterEnhancer</h3>
1663
- <p>[experimental]
1664
- </p>
1665
- <p>HeaderFooterEnhancer enables you to add header and footer in eRuby script.
1666
- </p>
1667
- <a name="headerfooter-example.eruby"></a>
1668
- <div class="program_caption">
1669
- headerfooter-example.eruby</div>
1670
- <pre class="program"><strong>&lt;!--#header:</strong>
1671
- <strong>def list_items(items)</strong>
1672
- <strong>#--&gt;</strong>
1673
- &lt;% for item in items %&gt;
1674
- &lt;b&gt;&lt;%= item %&gt;&lt;/b&gt;
1675
- &lt;% end %&gt;
1676
- <strong>&lt;!--#footer:</strong>
1677
- <strong>end</strong>
1678
- <strong>#--&gt;</strong>
1679
- </pre>
1680
- <a name="headerfooter_example.result"></a>
1681
- <div class="terminal_caption">
1682
- compiled source code</div>
1683
- <pre class="terminal">$ erubis -xE HeaderFooter headerfooter-example.eruby
1684
-
1685
- <strong>def list_items(items)</strong>
1686
-
1687
- _buf = ''; for item in items
1688
- _buf &lt;&lt; ' &lt;b&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/b&gt;
1689
- '; end
1690
- _buf.to_s
1691
-
1692
- <strong>end</strong>
1693
-
1694
- </pre>
1695
- <p>Compare to the following:
1696
- </p>
1697
- <a name="normal-eruby-test.eruby"></a>
1698
- <div class="program_caption">
1699
- normal-eruby-test.eruby</div>
1700
- <pre class="program"><strong>&lt;%</strong>
1701
- <strong>def list_items(items)</strong>
1702
- <strong>%&gt;</strong>
1703
- &lt;% for item in items %&gt;
1704
- &lt;li&gt;&lt;%= item %&gt;&lt;/li&gt;
1705
- &lt;% end %&gt;
1706
- <strong>&lt;%</strong>
1707
- <strong>end</strong>
1708
- <strong>%&gt;</strong>
1709
- </pre>
1710
- <a name="normal_eruby_test.result"></a>
1711
- <div class="terminal_caption">
1712
- compiled source code</div>
1713
- <pre class="terminal">$ erubis -x normal-eruby-test.eruby
1714
- _buf = '';
1715
- <strong>def list_items(items)</strong>
1716
-
1717
- for item in items
1718
- _buf &lt;&lt; '&lt;li&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/li&gt;
1719
- '; end
1720
-
1721
- <strong>end</strong>
1722
-
1723
- _buf.to_s
1724
- </pre>
1725
- <p>Header and footer can be in any position in eRuby script,
1726
- that is, header is no need to be in the head of eRuby script.
1727
- </p>
1728
- <a name="headerfooter-example2.rhtml"></a>
1729
- <div class="program_caption">
1730
- headerfooter-example2.rhtml</div>
1731
- <pre class="program">&lt;?xml version="1.0"?&gt;
1732
- &lt;html&gt;
1733
- <strong>&lt;!--#header:</strong>
1734
- <strong>def page(list)</strong>
1735
- <strong>#--&gt;</strong>
1736
- :
1737
- <strong>&lt;!--#footer:</strong>
1738
- <strong>end</strong>
1739
- <strong>#--&gt;</strong>
1740
- &lt;/html&gt;
1741
- </pre>
1742
- <a name="headerfooter_example2.result"></a>
1743
- <div class="terminal_caption">
1744
- compiled source code</div>
1745
- <pre class="terminal">$ erubis -xE HeaderFooter headerfooter-example2.rhtml
1746
-
1747
- <strong>def page(list)</strong>
1748
-
1749
- _buf = ''; _buf &lt;&lt; '&lt;?xml version="1.0"?&gt;
1750
- &lt;html&gt;
1751
- '; _buf &lt;&lt; ' :
1752
- '; _buf &lt;&lt; '&lt;/html&gt;
1753
- ';
1754
- _buf.to_s
1755
-
1756
- <strong>end</strong>
1757
-
1758
- </pre>
1759
- <p>HeaderFooterEnhancer is experimental and is language-independent.
1760
- </p>
1761
- <br>
1762
-
1763
-
1764
- <a name="interpolation-enhancer"></a>
1765
- <h3 class="section2">InterpolationEnhancer</h3>
1766
- <p>[experimental]
1767
- </p>
1768
- <p>InterpolationEnhancer converts "&lt;h1&gt;&lt;%= title %&gt;&lt;/h1&gt;" into
1769
- "_buf &lt;&lt; %Q`&lt;h1&gt;#{ title }&lt;/h1&gt;`".
1770
- This makes Eruby a litter faster because method call of String#&lt;&lt; are eliminated
1771
- by expression interpolations.
1772
- </p>
1773
- <div class="program_caption">
1774
- InterpolationEnhancer elmininates method call of String#&lt;&lt;.</div>
1775
- <pre class="program">## Assume that input is '&lt;a href="&lt;%=url%&gt;"&gt;&lt;%=name%&gt;&lt;/a&gt;'.
1776
- ## Eruby convert input into the following code. String#&lt;&lt; is called 5 times.
1777
- _buf &lt;&lt; '&lt;a href="'; _buf &lt;&lt; (url).to_s; _buf &lt;&lt; '"&gt;'; _buf &lt;&lt; (name).to_s; _buf &lt;&lt; '&lt;/a&gt;';
1778
-
1779
- ## If InterpolationEnhancer is used, String#&lt;&lt; is called only once.
1780
- _buf &lt;&lt; %Q`&lt;a href="#{url}"&gt;#{name}&lt;/a&gt;`;
1781
- </pre>
1782
- <a name="interpolation_example.result"></a>
1783
- <div class="terminal_caption">
1784
- compiled source code</div>
1785
- <pre class="terminal">$ erubis -xE Interpolation example.eruby
1786
- _buf = ''; _buf &lt;&lt; <strong>%Q`</strong>&lt;div&gt;\n<strong>`</strong>
1787
- for item in list
1788
- _buf &lt;&lt; <strong>%Q`</strong> &lt;p&gt;<strong>#{ item }</strong>&lt;/p&gt;
1789
- &lt;p&gt;<strong>#{Erubis::XmlHelper.escape_xml( item )}</strong>&lt;/p&gt;\n<strong>`</strong>
1790
- end
1791
- _buf &lt;&lt; <strong>%Q`</strong>&lt;/div&gt;\n<strong>`</strong>
1792
- _buf.to_s
1793
- </pre>
1794
- <p>Erubis provides Erubis::FastEruby class which includes InterpolationEnhancer.
1795
- You can use Erubis::FastEruby class instead of Erubis::Eruby class.
1796
- </p>
1797
- <p>InterpolationEnhancer is only for Eruby.
1798
- </p>
1799
- <br>
1800
-
1801
-
1802
- <a name="deleteindent-enhancer"></a>
1803
- <h3 class="section2">DeleteIndentEnhancer</h3>
1804
- <p>[experimental]
1805
- DeleteIndentEnhancer deletes indentation of HTML file.
1806
- </p>
1807
- <a name="interpolation_example.result"></a>
1808
- <div class="terminal_caption">
1809
- compiled source code</div>
1810
- <pre class="terminal">$ erubis -xE DeleteIndent example.eruby
1811
- _buf = ''; _buf &lt;&lt; '&lt;div&gt;
1812
- '; for item in list
1813
- _buf &lt;&lt; '&lt;p&gt;'; _buf &lt;&lt; ( item ).to_s; _buf &lt;&lt; '&lt;/p&gt;
1814
- &lt;p&gt;'; _buf &lt;&lt; Erubis::XmlHelper.escape_xml( item ); _buf &lt;&lt; '&lt;/p&gt;
1815
- '; end
1816
- _buf &lt;&lt; '&lt;/div&gt;
1817
- ';
1818
- _buf.to_s
1819
- </pre>
1820
- <p>Notice that DeleteIndentEnhancer isn't intelligent.
1821
- It deletes indentations even if they are in &lt;PRE&gt;&lt;/PRE&gt;.
1822
- </p>
1823
- <p>DeleteIndentEnhancer is language-independent.
1824
- </p>
1825
- <br>
1826
-
1827
-
1828
- <br>
1829
-
1830
-
1831
- <a name="lang"></a>
1832
- <h2 class="section1">Multi-Language Support</h2>
1833
- <p>Erubis supports the following languages<sup>(<a href="#fnref:2" name="fnlink:2">*2</a>)</sup>:
1834
- </p>
1835
- <ul type="disc">
1836
- <li>Ruby
1837
- </li>
1838
- <li><a href="#lang-php">PHP</a>
1839
- </li>
1840
- <li><a href="#lang-c">C</a>
1841
- </li>
1842
- <li><a href="#lang-java">Java</a>
1843
- </li>
1844
- <li><a href="#lang-scheme">Scheme</a>
1845
- </li>
1846
- <li><a href="#lang-perl">Perl</a>
1847
- </li>
1848
- <li><a href="#lang-javascript">JavaScript</a>
1849
- </li>
1850
- </ul>
1851
- <div class="footnote">
1852
- <dl compact>
1853
- <dt>(<a name="fnref:2" href="#fnlink:2">*2</a>)</dt>
1854
- <dd>If you need template engine in pure PHP/Perl/JavaScript, try <a href="http://www.kuwata-lab.com/tenjin/">Tenjin</a> (<a href="http://www.kuwata-lab.com/tenjin/">http://www.kuwata-lab.com/tenjin/</a>). Tenjin is a very fast and full-featured template engine implemented in pure PHP/Perl/JavaScript.</dd>
1855
- </dl>
1856
- </div>
1857
- <a name="lang-php"></a>
1858
- <h3 class="section2">PHP</h3>
1859
- <a name="example.ephp"></a>
1860
- <div class="program_caption">
1861
- example.ephp</div>
1862
- <pre class="program">&lt;?xml version="1.0"?&gt;
1863
- &lt;html&gt;
1864
- &lt;body&gt;
1865
- &lt;p&gt;Hello <strong>&lt;%= $user %&gt;</strong>!&lt;/p&gt;
1866
- &lt;table&gt;
1867
- &lt;tbody&gt;
1868
- <strong>&lt;% $i = 0; %&gt;</strong>
1869
- <strong>&lt;% foreach ($list as $item) { %&gt;</strong>
1870
- <strong>&lt;% $i++; %&gt;</strong>
1871
- &lt;tr bgcolor=<strong>"&lt;%= $i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %&gt;"</strong>&gt;
1872
- &lt;td&gt;<strong>&lt;%= $i %&gt;</strong>&lt;/td&gt;
1873
- &lt;td&gt;<strong>&lt;%== $item %&gt;</strong>&lt;/td&gt;
1874
- &lt;/tr&gt;
1875
- <strong>&lt;% } %&gt;</strong>
1876
- &lt;/tbody&gt;
1877
- &lt;/table&gt;
1878
- &lt;/body&gt;
1879
- &lt;/html&gt;
1880
- </pre>
1881
- <a name="example_php.result"></a>
1882
- <div class="terminal_caption">
1883
- compiled source code</div>
1884
- <pre class="terminal">$ erubis -l php example.ephp
1885
- &lt;&lt;?php ?&gt;?xml version="1.0"?&gt;
1886
- &lt;html&gt;
1887
- &lt;body&gt;
1888
- &lt;p&gt;Hello &lt;?php echo $user; ?&gt;!&lt;/p&gt;
1889
- &lt;table&gt;
1890
- &lt;tbody&gt;
1891
- &lt;?php $i = 0; ?&gt;
1892
- &lt;?php foreach ($list as $item) { ?&gt;
1893
- &lt;?php $i++; ?&gt;
1894
- &lt;tr bgcolor="&lt;?php echo $i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'; ?&gt;"&gt;
1895
- &lt;td&gt;&lt;?php echo $i; ?&gt;&lt;/td&gt;
1896
- &lt;td&gt;&lt;?php echo htmlspecialchars($item); ?&gt;&lt;/td&gt;
1897
- &lt;/tr&gt;
1898
- &lt;?php } ?&gt;
1899
- &lt;/tbody&gt;
1900
- &lt;/table&gt;
1901
- &lt;/body&gt;
1902
- &lt;/html&gt;
1903
- </pre>
1904
- <br>
1905
-
1906
-
1907
- <a name="lang-c"></a>
1908
- <h3 class="section2">C</h3>
1909
- <a name="example.ec"></a>
1910
- <div class="program_caption">
1911
- example.ec</div>
1912
- <pre class="program"><strong>&lt;%
1913
- #include &lt;stdio.h&gt;
1914
-
1915
- int main(int argc, char *argv[])
1916
- {
1917
- int i;
1918
-
1919
- %&gt;</strong>
1920
- &lt;html&gt;
1921
- &lt;body&gt;
1922
- &lt;p&gt;Hello <strong>&lt;%= "%s", argv[0] %&gt;</strong>!&lt;/p&gt;
1923
- &lt;table&gt;
1924
- &lt;tbody&gt;
1925
- <strong>&lt;% for (i = 1; i &lt; argc; i++) { %&gt;</strong>
1926
- &lt;tr bgcolor="<strong>&lt;%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %&gt;</strong>"&gt;
1927
- &lt;td&gt;<strong>&lt;%= "%d", i %&gt;</strong>&lt;/td&gt;
1928
- &lt;td&gt;<strong>&lt;%= "%s", argv[i] %&gt;</strong>&lt;/td&gt;
1929
- &lt;/tr&gt;
1930
- <strong>&lt;% } %&gt;</strong>
1931
- &lt;/tbody&gt;
1932
- &lt;/table&gt;
1933
- &lt;/body&gt;
1934
- &lt;/html&gt;
1935
- <strong>&lt;%
1936
- return 0;
1937
- }
1938
- %&gt;</strong>
1939
- </pre>
1940
- <a name="example_c.result"></a>
1941
- <div class="terminal_caption">
1942
- compiled source code</div>
1943
- <pre class="terminal">$ erubis -l c example.ec
1944
- #line 1 "example.ec"
1945
-
1946
- #include &lt;stdio.h&gt;
1947
-
1948
- int main(int argc, char *argv[])
1949
- {
1950
- int i;
1951
-
1952
-
1953
- fputs("&lt;html&gt;\n"
1954
- " &lt;body&gt;\n"
1955
- " &lt;p&gt;Hello ", stdout); fprintf(stdout, "%s", argv[0]); fputs("!&lt;/p&gt;\n"
1956
- " &lt;table&gt;\n"
1957
- " &lt;tbody&gt;\n", stdout);
1958
- for (i = 1; i &lt; argc; i++) {
1959
- fputs(" &lt;tr bgcolor=\"", stdout); fprintf(stdout, i % 2 == 0 ? "#FFCCCC" : "#CCCCFF"); fputs("\"&gt;\n"
1960
- " &lt;td&gt;", stdout); fprintf(stdout, "%d", i); fputs("&lt;/td&gt;\n"
1961
- " &lt;td&gt;", stdout); fprintf(stdout, "%s", argv[i]); fputs("&lt;/td&gt;\n"
1962
- " &lt;/tr&gt;\n", stdout);
1963
- }
1964
- fputs(" &lt;/tbody&gt;\n"
1965
- " &lt;/table&gt;\n"
1966
- " &lt;/body&gt;\n"
1967
- "&lt;/html&gt;\n", stdout);
1968
-
1969
- return 0;
1970
- }
1971
-
1972
- </pre>
1973
- <br>
1974
-
1975
-
1976
- <a name="lang-java"></a>
1977
- <h3 class="section2">Java</h3>
1978
- <a name="Example.ejava"></a>
1979
- <div class="program_caption">
1980
- Example.ejava</div>
1981
- <pre class="program"><strong>&lt;%
1982
- import java.util.*;
1983
-
1984
- public class Example {
1985
- private String user;
1986
- private String[] list;
1987
- public example(String user, String[] list) {
1988
- this.user = user;
1989
- this.list = list;
1990
- }
1991
-
1992
- public String view() {
1993
- StringBuffer _buf = new StringBuffer();
1994
- %&gt;</strong>
1995
- &lt;html&gt;
1996
- &lt;body&gt;
1997
- &lt;p&gt;Hello <strong>&lt;%= user %&gt;</strong>!&lt;/p&gt;
1998
- &lt;table&gt;
1999
- &lt;tbody&gt;
2000
- <strong>&lt;% for (int i = 0; i &lt; list.length; i++) { %&gt;</strong>
2001
- &lt;tr bgcolor=<strong>"&lt;%= i % 2 == 0 ? "#FFCCCC" : "#CCCCFF" %&gt;"</strong>&gt;
2002
- &lt;td&gt;<strong>&lt;%= i + 1 %&gt;</strong>&lt;/td&gt;
2003
- &lt;td&gt;<strong>&lt;%== list[i] %&gt;</strong>&lt;/td&gt;
2004
- &lt;/tr&gt;
2005
- <strong>&lt;% } %&gt;</strong>
2006
- &lt;/tbody&gt;
2007
- &lt;/table&gt;
2008
- &lt;body&gt;
2009
- &lt;/html&gt;
2010
- <strong>&lt;%
2011
- return _buf.toString();
2012
- }
2013
-
2014
- public static void main(String[] args) {
2015
- String[] list = { "&lt;aaa&gt;", "b&amp;b", "\"ccc\"" };
2016
- Example ex = Example.new("Erubis", list);
2017
- System.out.print(ex.view());
2018
- }
2019
-
2020
- public static String escape(String s) {
2021
- StringBuffer sb = new StringBuffer();
2022
- for (int i = 0; i &lt; s.length(); i++) {
2023
- char ch = s.charAt(i);
2024
- switch (ch) {
2025
- case '&lt;': sb.append("&amp;lt;"); break;
2026
- case '&gt;': sb.append("&amp;gt;"); break;
2027
- case '&amp;': sb.append("&amp;amp;"); break;
2028
- case '"': sb.append("&amp;quot;"); break;
2029
- default: sb.append(ch);
2030
- }
2031
- }
2032
- return sb.toString();
2033
- }
2034
- }
2035
- %&gt;</strong>
2036
- </pre>
2037
- <a name="example_java.result"></a>
2038
- <div class="terminal_caption">
2039
- compiled source code</div>
2040
- <pre class="terminal">$ erubis -b -l java example.ejava
2041
-
2042
- import java.util.*;
2043
-
2044
- public class Example {
2045
- private String user;
2046
- private String[] list;
2047
- public example(String user, String[] list) {
2048
- this.user = user;
2049
- this.list = list;
2050
- }
2051
-
2052
- public String view() {
2053
- StringBuffer _buf = new StringBuffer();
2054
-
2055
- _buf.append("&lt;html&gt;\n"
2056
- + " &lt;body&gt;\n"
2057
- + " &lt;p&gt;Hello "); _buf.append(user); _buf.append("!&lt;/p&gt;\n"
2058
- + " &lt;table&gt;\n"
2059
- + " &lt;tbody&gt;\n");
2060
- for (int i = 0; i &lt; list.length; i++) {
2061
- _buf.append(" &lt;tr bgcolor=\""); _buf.append(i % 2 == 0 ? "#FFCCCC" : "#CCCCFF"); _buf.append("\"&gt;\n"
2062
- + " &lt;td&gt;"); _buf.append(i + 1); _buf.append("&lt;/td&gt;\n"
2063
- + " &lt;td&gt;"); _buf.append(escape(list[i])); _buf.append("&lt;/td&gt;\n"
2064
- + " &lt;/tr&gt;\n");
2065
- }
2066
- _buf.append(" &lt;/tbody&gt;\n"
2067
- + " &lt;/table&gt;\n"
2068
- + " &lt;body&gt;\n"
2069
- + "&lt;/html&gt;\n");
2070
-
2071
- return _buf.toString();
2072
- }
2073
-
2074
- public static void main(String[] args) {
2075
- String[] list = { "&lt;aaa&gt;", "b&amp;b", "\"ccc\"" };
2076
- Example ex = Example.new("Erubis", list);
2077
- System.out.print(ex.view());
2078
- }
2079
-
2080
- public static String escape(String s) {
2081
- StringBuffer sb = new StringBuffer();
2082
- for (int i = 0; i &lt; s.length(); i++) {
2083
- char ch = s.charAt(i);
2084
- switch (ch) {
2085
- case '&lt;': sb.append("&amp;lt;"); break;
2086
- case '&gt;': sb.append("&amp;gt;"); break;
2087
- case '&amp;': sb.append("&amp;amp;"); break;
2088
- case '"': sb.append("&amp;quot;"); break;
2089
- default: sb.append(ch);
2090
- }
2091
- }
2092
- return sb.toString();
2093
- }
2094
- }
2095
-
2096
- </pre>
2097
- <br>
2098
-
2099
-
2100
- <a name="lang-scheme"></a>
2101
- <h3 class="section2">Scheme</h3>
2102
- <a name="example.escheme"></a>
2103
- <div class="program_caption">
2104
- example.escheme</div>
2105
- <pre class="program">&lt;html&gt;
2106
- &lt;body&gt;
2107
- <strong>&lt;%
2108
- (let ((user "Erubis")
2109
- (items '("&lt;aaa&gt;" "b&amp;b" "\"ccc\""))
2110
- (i 0))
2111
- %&gt;</strong>
2112
- &lt;p&gt;Hello <strong>&lt;%= user %&gt;</strong>!&lt;/p&gt;
2113
- &lt;table&gt;
2114
- <strong>&lt;%
2115
- (for-each
2116
- (lambda (item)
2117
- (set! i (+ i 1))
2118
- %&gt;</strong>
2119
- &lt;tr bgcolor="<strong>&lt;%= (if (= (modulo i 2) 0) "#FFCCCC" "#CCCCFF") %&gt;</strong>"&gt;
2120
- &lt;td&gt;<strong>&lt;%= i %&gt;</strong>&lt;/td&gt;
2121
- &lt;td&gt;<strong>&lt;%= item %&gt;</strong>&lt;/td&gt;
2122
- &lt;/tr&gt;
2123
- <strong>&lt;%
2124
- ) ; lambda end
2125
- items) ; for-each end
2126
- %&gt;</strong>
2127
- &lt;/table&gt;
2128
- <strong>&lt;%
2129
- ) ; let end
2130
- %&gt;</strong>
2131
- &lt;/body&gt;
2132
- &lt;/html&gt;
2133
- </pre>
2134
- <a name="example_scheme.result"></a>
2135
- <div class="terminal_caption">
2136
- compiled source code</div>
2137
- <pre class="terminal">$ erubis -l scheme example.escheme
2138
- (let ((_buf '())) (define (_add x) (set! _buf (cons x _buf))) (_add "&lt;html&gt;
2139
- &lt;body&gt;\n")
2140
-
2141
- (let ((user "Erubis")
2142
- (items '("&lt;aaa&gt;" "b&amp;b" "\"ccc\""))
2143
- (i 0))
2144
-
2145
- (_add " &lt;p&gt;Hello ")(_add user)(_add "!&lt;/p&gt;
2146
- &lt;table&gt;\n")
2147
-
2148
- (for-each
2149
- (lambda (item)
2150
- (set! i (+ i 1))
2151
-
2152
- (_add " &lt;tr bgcolor=\"")(_add (if (= (modulo i 2) 0) "#FFCCCC" "#CCCCFF"))(_add "\"&gt;
2153
- &lt;td&gt;")(_add i)(_add "&lt;/td&gt;
2154
- &lt;td&gt;")(_add item)(_add "&lt;/td&gt;
2155
- &lt;/tr&gt;\n")
2156
-
2157
- ) ; lambda end
2158
- items) ; for-each end
2159
-
2160
- (_add " &lt;/table&gt;\n")
2161
-
2162
- ) ; let end
2163
-
2164
- (_add " &lt;/body&gt;
2165
- &lt;/html&gt;\n")
2166
- (reverse _buf))
2167
- </pre>
2168
- <a name="example_scheme_display.result"></a>
2169
- <div class="terminal_caption">
2170
- compiled source code (with <code>--func=display</code> property)</div>
2171
- <pre class="terminal">$ erubis -l scheme --func=display example.escheme
2172
- (display "&lt;html&gt;
2173
- &lt;body&gt;\n")
2174
-
2175
- (let ((user "Erubis")
2176
- (items '("&lt;aaa&gt;" "b&amp;b" "\"ccc\""))
2177
- (i 0))
2178
-
2179
- (display " &lt;p&gt;Hello ")(display user)(display "!&lt;/p&gt;
2180
- &lt;table&gt;\n")
2181
-
2182
- (for-each
2183
- (lambda (item)
2184
- (set! i (+ i 1))
2185
-
2186
- (display " &lt;tr bgcolor=\"")(display (if (= (modulo i 2) 0) "#FFCCCC" "#CCCCFF"))(display "\"&gt;
2187
- &lt;td&gt;")(display i)(display "&lt;/td&gt;
2188
- &lt;td&gt;")(display item)(display "&lt;/td&gt;
2189
- &lt;/tr&gt;\n")
2190
-
2191
- ) ; lambda end
2192
- items) ; for-each end
2193
-
2194
- (display " &lt;/table&gt;\n")
2195
-
2196
- ) ; let end
2197
-
2198
- (display " &lt;/body&gt;
2199
- &lt;/html&gt;\n")
2200
- </pre>
2201
- <br>
2202
-
2203
-
2204
- <a name="lang-perl"></a>
2205
- <h3 class="section2">Perl</h3>
2206
- <a name="example.eperl"></a>
2207
- <div class="program_caption">
2208
- example.eprl</div>
2209
- <pre class="program"><strong>&lt;%
2210
- my $user = 'Erubis';
2211
- my @list = ('&lt;aaa&gt;', 'b&amp;b', '"ccc"');
2212
- %&gt;</strong>
2213
- &lt;html&gt;
2214
- &lt;body&gt;
2215
- &lt;p&gt;Hello <strong>&lt;%= $user %&gt;</strong>!&lt;/p&gt;
2216
- &lt;table&gt;
2217
- <strong>&lt;% $i = 0; %&gt;</strong>
2218
- <strong>&lt;% for $item (@list) { %&gt;</strong>
2219
- &lt;tr bgcolor=<strong>&lt;%= ++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %&gt;</strong>"&gt;
2220
- &lt;td&gt;<strong>&lt;%= $i %&gt;</strong>&lt;/td&gt;
2221
- &lt;td&gt;<strong>&lt;%= $item %&gt;</strong>&lt;/td&gt;
2222
- &lt;/tr&gt;
2223
- <strong>&lt;% } %&gt;</strong>
2224
- &lt;/table&gt;
2225
- &lt;/body&gt;
2226
- &lt;/html&gt;
2227
- </pre>
2228
- <a name="example_perl.result"></a>
2229
- <div class="terminal_caption">
2230
- compiled source code</div>
2231
- <pre class="terminal">$ erubis -l perl example.eperl
2232
- use HTML::Entities;
2233
- my $user = 'Erubis';
2234
- my @list = ('&lt;aaa&gt;', 'b&amp;b', '"ccc"');
2235
-
2236
- print('&lt;html&gt;
2237
- &lt;body&gt;
2238
- &lt;p&gt;Hello '); print($user); print('!&lt;/p&gt;
2239
- &lt;table&gt;
2240
- '); $i = 0;
2241
- for $item (@list) {
2242
- print(' &lt;tr bgcolor='); print(++$i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); print('"&gt;
2243
- &lt;td&gt;'); print($i); print('&lt;/td&gt;
2244
- &lt;td&gt;'); print($item); print('&lt;/td&gt;
2245
- &lt;/tr&gt;
2246
- '); }
2247
- print(' &lt;/table&gt;
2248
- &lt;/body&gt;
2249
- &lt;/html&gt;
2250
- ');
2251
- </pre>
2252
- <br>
2253
-
2254
-
2255
- <a name="lang-javascript"></a>
2256
- <h3 class="section2">JavaScript</h3>
2257
- <a name="example.ejs"></a>
2258
- <div class="program_caption">
2259
- example.ejs</div>
2260
- <pre class="program"><strong>&lt;%
2261
- var user = 'Erubis';
2262
- var list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"'];
2263
- %&gt;</strong>
2264
- &lt;html&gt;
2265
- &lt;body&gt;
2266
- &lt;p&gt;Hello <strong>&lt;%= user %&gt;</strong>!&lt;/p&gt;
2267
- &lt;table&gt;
2268
- &lt;tbody&gt;
2269
- <strong>&lt;% var i; %&gt;</strong>
2270
- <strong>&lt;% for (i = 0; i &lt; list.length; i++) { %&gt;</strong>
2271
- &lt;tr bgcolor="<strong>&lt;%= i % 2 == 0 ? '#FFCCCC' : '#CCCCFF' %&gt;</strong>"&gt;
2272
- &lt;td&gt;<strong>&lt;%= i + 1 %&gt;</strong>&lt;/td&gt;
2273
- &lt;td&gt;<strong>&lt;%= list[i] %&gt;</strong>&lt;/td&gt;
2274
- &lt;/tr&gt;
2275
- <strong>&lt;% } %&gt;</strong>
2276
- &lt;/tbody&gt;
2277
- &lt;/table&gt;
2278
- &lt;/body&gt;
2279
- &lt;/html&gt;
2280
- </pre>
2281
- <a name="example_js.result"></a>
2282
- <div class="terminal_caption">
2283
- compiled source code</div>
2284
- <pre class="terminal">$ erubis -l js example.ejs
2285
- var _buf = [];
2286
- var user = 'Erubis';
2287
- var list = ['&lt;aaa&gt;', 'b&amp;b', '"ccc"'];
2288
-
2289
- _buf.push("&lt;html&gt;\n\
2290
- &lt;body&gt;\n\
2291
- &lt;p&gt;Hello "); _buf.push(user); _buf.push("!&lt;/p&gt;\n\
2292
- &lt;table&gt;\n\
2293
- &lt;tbody&gt;\n");
2294
- var i;
2295
- for (i = 0; i &lt; list.length; i++) {
2296
- _buf.push(" &lt;tr bgcolor=\""); _buf.push(i % 2 == 0 ? '#FFCCCC' : '#CCCCFF'); _buf.push("\"&gt;\n\
2297
- &lt;td&gt;"); _buf.push(i + 1); _buf.push("&lt;/td&gt;\n\
2298
- &lt;td&gt;"); _buf.push(list[i]); _buf.push("&lt;/td&gt;\n\
2299
- &lt;/tr&gt;\n");
2300
- }
2301
- _buf.push(" &lt;/tbody&gt;\n\
2302
- &lt;/table&gt;\n\
2303
- &lt;/body&gt;\n\
2304
- &lt;/html&gt;\n");
2305
- document.write(_buf.join(""));
2306
- </pre>
2307
- <p>If command-line option '<code>--docwrite=false</code>' is specified,
2308
- '<code>_buf.join("");</code>' is used instead of '<code>document.write(_buf.join(""));</code>'.
2309
- This is useful when passing converted source code to eval() function in JavaScript.
2310
- </p>
2311
- <p>You can pass <code>:docwrite=&gt;false</code> to Erubis::Ejavascript.new() in your Ruby script.
2312
- </p>
2313
- <pre class="program">s = File.read('example.jshtml')
2314
- engine = Erubis::Ejavascript.new(s, <code>:docwrite=&gt;false</code>)
2315
- </pre>
2316
- <p>If you want to specify any JavaScript code, use '--postamble=...'.
2317
- </p>
2318
- <p>Notice that default value of 'docwrite' property will be false in the future release.
2319
- </p>
2320
- <br>
2321
-
2322
-
2323
- <br>
2324
-
2325
-
2326
- <a name="rails"></a>
2327
- <h2 class="section1">Ruby on Rails Support</h2>
2328
- <p>Erubis supports Ruby on Rails.
2329
- This section describes how to use Erubis with Ruby on Rails.
2330
- </p>
2331
- <a name="rails-settings"></a>
2332
- <h3 class="section2">Settings</h3>
2333
- <p>Add the following code to your 'config/environment.rb' and restart web server.
2334
- This replaces ERB in Rails by Erubis entirely.
2335
- </p>
2336
- <div class="program_caption">
2337
- config/environment.rb</div>
2338
- <pre class="program">require 'erubis/helpers/rails_helper'
2339
- #Erubis::Helpers::RailsHelper.engine_class = Erubis::Eruby # or Erubis::FastEruby
2340
- #Erubis::Helpers::RailsHelper.init_properties = {}
2341
- #Erubis::Helpers::RailsHelper.show_src = nil
2342
- #Erubis::Helpers::RailsHelper.preprocessing = false
2343
- </pre>
2344
- <p>Options:
2345
- </p>
2346
- <dl class="dl2">
2347
- <dt class="dt2">
2348
- Erubis::Helpers::RailsHelper.engine_class (=Erubis::Eruby)</dt>
2349
- <dd class="dd2">
2350
- <p> Erubis engine class (default Erubis::Eruby).
2351
- </p>
2352
- </dd>
2353
- <dt class="dt2">
2354
- Erubis::Helpers::RailsHelper.init_properties (={})</dt>
2355
- <dd class="dd2">
2356
- <p> Optional arguments for Erubis::Eruby#initialize() method (default {}).
2357
- </p>
2358
- </dd>
2359
- <dt class="dt2">
2360
- Erubis::Helpers::RailsHelper.show_src (=nil)</dt>
2361
- <dd class="dd2">
2362
- <p> Whether to print converted Ruby code into log file.
2363
- If true, Erubis prints coverted code into log file.
2364
- If false, Erubis doesn't.
2365
- If nil, Erubis prints when ENV['RAILS_ENV'] == 'development'.
2366
- Default is nil.
2367
- </p>
2368
- </dd>
2369
- <dt class="dt2">
2370
- Erubis::Helpers::RailsHelper.preprocessing (=false)</dt>
2371
- <dd class="dd2">
2372
- <p> Enable preprocessing if true (default false).
2373
- </p>
2374
- </dd>
2375
- </dl>
2376
- <br>
2377
-
2378
-
2379
- <a name="rails-preprocessing"></a>
2380
- <h3 class="section2">Preprosessing</h3>
2381
- <p>Erubis supports preprocessing of template files.
2382
- Preprocessing make your Ruby on Rails application about 20-40 percent faster.
2383
- To enable preprocessing, set Erubis::Helpers::RailsHelper.preprocessing to true in your 'environment.rb' file.
2384
- </p>
2385
- <p>For example, assume the following template.
2386
- This is slow because link_to() method is called every time when template is rendered.
2387
- </p>
2388
- <pre class="program">&lt;%= link_to 'Create', :action=&gt;'create' %&gt;
2389
- </pre>
2390
- <p>The following is faster than the above, but not flexible because url is fixed.
2391
- </p>
2392
- <pre class="program">&lt;a href="/users/create"&gt;Create&lt;/a&gt;
2393
- </pre>
2394
- <p>Preprocessing solves this problem.
2395
- If you use '[%= %]' instead of '&lt;%= %&gt;', preprocessor evaluate it only once when template is loaded.
2396
- </p>
2397
- <pre class="program"><strong>[%= link_to 'Create', :action=&gt;'create'%]</strong>
2398
- </pre>
2399
- <p>The above is evaluated by preprocessor and replaced to the following code automatically.
2400
- </p>
2401
- <pre class="program">&lt;a href="/users/create"&gt;Create&lt;/a&gt;
2402
- </pre>
2403
- <p>Notice that this is done only once when template file is loaded.
2404
- It means that link_to() method is not called when template is rendered.
2405
- </p>
2406
- <p>If link_to() method have variable arguments, use <code>_?()</code> helper method.
2407
- </p>
2408
- <pre class="program">&lt;% for user in @users %&gt;
2409
- [%= link_to <strong>_?('user.name')</strong>, :action=&gt;'show', :id=&gt;<strong>_?('user.id')</strong> %]
2410
- &lt;% end %&gt;
2411
- </pre>
2412
- <p>The above is evaluated by preprocessor when template is loaded and expanded into the following code.
2413
- This will be much faster because link_to() method is not called when rendering.
2414
- </p>
2415
- <pre class="program">&lt;% for user in @users %&gt;
2416
- &lt;a href="/users/show/<strong>&lt;%=user.id%&gt;</strong>"&gt;<strong>&lt;%=user.name%&gt;</strong>&lt;/a&gt;
2417
- &lt;% end %&gt;
2418
- </pre>
2419
- <p>Preprocessing statement (<code>[% %]</code>) is also available as well as preprocessing expression (<code>[%= %]</code>).
2420
- </p>
2421
- <pre class="program">&lt;select name="state"&gt;
2422
- &lt;option value=""&gt;-&lt;/option&gt;
2423
- <strong>[% for code in states.keys.sort %]</strong>
2424
- &lt;option value="<strong>[%= code %]</strong>"&gt;<strong>[%= states[code] %]</strong>&lt;/option&gt;
2425
- <strong>[% end %]</strong>
2426
- &lt;/select&gt;
2427
- </pre>
2428
- <p>The above will be evaluated by preprocessor and expanded into the following when template is loaded.
2429
- In the result, rendering speed will be much faster because for-loop is not executed when rendering.
2430
- </p>
2431
- <pre class="program">&lt;select name="state"&gt;
2432
- &lt;option value=""&gt;-&lt;/option&gt;
2433
- &lt;option value="AK"&gt;Alaska&lt;/option&gt;
2434
- &lt;option value="AL"&gt;Alabama&lt;/option&gt;
2435
- &lt;option value="AR"&gt;Arkansas&lt;/option&gt;
2436
- &lt;option value="AS"&gt;American Samoa&lt;/option&gt;
2437
- &lt;option value="AZ"&gt;Arizona&lt;/option&gt;
2438
- &lt;option value="CA"&gt;California&lt;/option&gt;
2439
- &lt;option value="CO"&gt;Colorado&lt;/option&gt;
2440
- ....
2441
- &lt;/select&gt;
2442
- </pre>
2443
- <p>Notice that it is not recommended to use preprocessing with tag helpers,
2444
- because tag helpers generate different html code when form parameter has errors or not.
2445
- </p>
2446
- <p>Helper methods of Ruby on Rails are divided into two groups.
2447
- </p>
2448
- <ul type="disc">
2449
- <li>link_to() or _() (method of gettext package) are not need to call for every time
2450
- as template is rendered because it returns same value when same arguments are passed.
2451
- These methods can be got faster by preprocessing.
2452
- </li>
2453
- <li>Tag helper methods should be called for every time as template is rendered
2454
- because it may return differrent value even if the same arguments are passed.
2455
- Preprocessing is not available with these methods.
2456
- </li>
2457
- </ul>
2458
- <p>In Ruby on Rails 2.0, <code>_?('user_id')</code> is OK but <code>_?('user.id')</code> is NG
2459
- because the latter contains period ('.') character.
2460
- </p>
2461
- <pre class="program">&lt;!-- NG in Rails 2.0, because _?('') contains period --&gt;
2462
- [%= link_to 'Edit', edit_user_path(<strong>_?('@user.id')</strong>) %]
2463
- [%= link_to 'Show', <strong>@user</strong> %]
2464
- [%= link_to 'Delete', <strong>@user</strong>, :confirm=&gt;'OK?', :method=&gt;:delete %]
2465
-
2466
- &lt;!-- OK in Rails 2.0 --&gt;
2467
- <strong>&lt;%= user_id = @user.id %&gt;</strong>
2468
- [%= link_to 'Edit', edit_user_path(<strong>_?('user_id')</strong>) %]
2469
- [%= link_to 'Show', <strong>:action=&gt;'show', :id=&gt;_?('user_id')</strong> %]
2470
- [%= link_to 'Delete', <strong>{:action=&gt;'destroy', :id=&gt;_?('user_id')}</strong>,
2471
- {:confirm=&gt;'OK?', :method=&gt;:delete} %]
2472
- </pre>
2473
- <br>
2474
-
2475
-
2476
- <a name="rails-formhelpers"></a>
2477
- <h3 class="section2">Form Helpers for Preprocessing</h3>
2478
- <p><strong>(Experimental)</strong>
2479
- </p>
2480
- <p>Erubis provides form helper methods for preprocessing.
2481
- These are defined in 'erubis/helpers/rails_form_helper.rb'.
2482
- If you want to use it, require it and include Erubis::Helpers::RailsFormHelper in 'app/helpers/applition_helper.rb'
2483
- </p>
2484
- <div class="program_caption">
2485
- app/helpers/xxx_helper.rb</div>
2486
- <pre class="program">require 'erubis/helpers/rails_form_helper'
2487
- module ApplicationHelper
2488
- include Erubis::Helpers::RailsFormHelper
2489
- end
2490
- </pre>
2491
- <p>Form helper methods defined in Erubis::Helpers::RailsFormHelper are named as 'pp_xxxx'
2492
- ('pp' represents preprocessing).
2493
- </p>
2494
- <p>Assume the following view template:
2495
- </p>
2496
- <div class="program_caption">
2497
- _form.rhtml</div>
2498
- <pre class="program"> &lt;p&gt;
2499
- Name: &lt;%= text_field :user, :name %&gt;
2500
- &lt;/p&gt;
2501
- &lt;p&gt;
2502
- Name: <strong>[%= pp_text_field :user, :name %]</strong>
2503
- &lt;/p&gt;
2504
- </pre>
2505
- <p>Erubis preprocessor converts it to the following eRuby string:
2506
- </p>
2507
- <div class="program_caption">
2508
- preprocessed</div>
2509
- <pre class="program"> &lt;p&gt;
2510
- Name: &lt;%= text_field :user, :name %&gt;
2511
- &lt;/p&gt;
2512
- &lt;p&gt;
2513
- Name: <strong>&lt;input id="stock_name" name="stock[name]" size="30" type="text" value="&lt;%=h @stock.name%&gt;" /&gt;</strong>
2514
- &lt;/p&gt;
2515
- </pre>
2516
- <p>Erubis converts it to the following Ruby code:
2517
- </p>
2518
- <div class="program_caption">
2519
- Ruby code</div>
2520
- <pre class="program"> _buf &lt;&lt; ' &lt;p&gt;
2521
- Name: '; _buf &lt;&lt; ( text_field :stock, :name ).to_s; _buf &lt;&lt; '
2522
- '; _buf &lt;&lt; ' &lt;/p&gt;
2523
- &lt;p&gt;
2524
- Name: &lt;input id="stock_name" name="stock[name]" size="30" type="text" value="'; _buf &lt;&lt; (h @stock.name).to_s; _buf &lt;&lt; '" /&gt;
2525
- &lt;/p&gt;
2526
- ';
2527
- </pre>
2528
- <p>The above Ruby code shows that text_field() is called everytime when rendering,
2529
- but pp_text_field() is called only once when template is loaded.
2530
- This means that pp_text_field() with preprocessing makes view layer very fast.
2531
- </p>
2532
- <p>Module Erubis::Helpers::RailsFormHelper defines the following form helper methods.
2533
- </p>
2534
- <ul type="disc">
2535
- <li>pp_render_partial(basename)
2536
- </li>
2537
- <li>pp_form_tag(url_for_options={}, options={}, *parameters_for_url, &amp;block)
2538
- </li>
2539
- <li>pp_text_field(object_name, method, options={})
2540
- </li>
2541
- <li>pp_password_field(object_name, method, options={})
2542
- </li>
2543
- <li>pp_hidden_field(object_name, method, options={})
2544
- </li>
2545
- <li>pp_file_field(object_name, method, options={})
2546
- </li>
2547
- <li>pp_text_area(object_name, method, options={})
2548
- </li>
2549
- <li>pp_check_box(object_name, method, options={}, checked_value="1", unchecked_value="0")
2550
- </li>
2551
- <li>pp_radio_button(object_name, method, tag_value, options={})
2552
- </li>
2553
- <li>pp_select(object, method, collection, options={}, html_options={})
2554
- </li>
2555
- <li>pp_collection_select(object, method, collection, value_method, text_method, options={}, html_options={})
2556
- </li>
2557
- <li>pp_country_select(object, method, priority_countries=nil, options={}, html_options={})
2558
- </li>
2559
- <li>pp_time_zone_select(object, method, priority_zones=nil, options={}, html_options={})
2560
- </li>
2561
- <li>pp_submit_tag(value="Save changes", options={})
2562
- </li>
2563
- <li>pp_image_submit_tag(source, options={})
2564
- </li>
2565
- </ul>
2566
- <p>Notice that pp_form_for() is not provided.
2567
- </p>
2568
- <p><span style="color:#FF0000">CAUTION:</span> These are experimental and may not work in Ruby on Rails 2.0.
2569
- </p>
2570
- <br>
2571
-
2572
-
2573
- <a name="rails-others"></a>
2574
- <h3 class="section2">Others</h3>
2575
- <ul type="disc">
2576
- <li>ActionView::Helpers::CaptureHelper#capture() and ActionView::Helpers::Texthelper#concat() are available.
2577
- </li>
2578
- </ul>
2579
- <ul type="disc">
2580
- <li>Form helper methods are not tested in Ruby on Rails 2.0.
2581
- </li>
2582
- </ul>
2583
- <ul type="disc">
2584
- <li>ERB::Util.h() is redefined if you require 'erubis/helpers/rails_helper.rb'.
2585
- Original definition of ERB::Util.h() is the following and it is slow
2586
- because it scans string four times.
2587
- <pre class="program"> def html_escape(s)
2588
- s.to_s.gsub(/&amp;/, "&amp;amp;").gsub(/\"/, "&amp;quot;").gsub(/&gt;/, "&amp;gt;").gsub(/&lt;/, "&amp;lt;")
2589
- end
2590
- alias h html_escape
2591
- </pre>
2592
- <p> New definition in 'erubis/helpers/rails_helper.rb' is faster than the above
2593
- because it scans string only once.
2594
- </p>
2595
- <pre class="program"> ESCAPE_TABLE = { '&amp;'=&gt;'&amp;amp;', '&lt;'=&gt;'&amp;lt;', '&gt;'=&gt;'&amp;gt;', '"'=&gt;'&amp;quot;', "'"=&gt;'&amp;#039;', }
2596
- def h(value)
2597
- value.to_s.gsub(/[&amp;&lt;&gt;"]/) { |s| ESCAPE_TABLE[s] }
2598
- end
2599
- </pre>
2600
- <p> Notice that the new definition may be slow if string contains
2601
- many '&lt; &gt; &amp; "' characters because block is call many time.
2602
- You should use ERB::Util.html_hscape() if string contains a lot of '&lt; &gt; &amp; "'
2603
- characters.
2604
- </p>
2605
- </li>
2606
- </ul>
2607
- <br>
2608
-
2609
-
2610
- <br>
2611
-
2612
-
2613
- <a name="topics"></a>
2614
- <h2 class="section1">Other Topics</h2>
2615
- <a name="'&lt;%= =%&gt;' and '&lt;%= -%&gt;'"></a>
2616
- <h3 class="section2">'&lt;%= =%&gt;' and '&lt;%= -%&gt;'</h3>
2617
- <p>Since 2.6.0, '&lt;%= -%&gt;' remove tail spaces and newline.
2618
- This is for compatibiliy with ERB when trim mode is '-'.
2619
- '&lt;%= =%&gt;' also removes tail spaces and newlines, and this is
2620
- Erubis-original enhancement (cooler than '&lt;%= -%&gt;', isn't it?).
2621
- </p>
2622
- <a name="tailnewline.rhtml.comment_filter"></a>
2623
- <div class="program_caption">
2624
- tailnewline.rhtml</div>
2625
- <pre class="program">&lt;div&gt;
2626
- &lt;%= @var -%&gt; # or &lt;%= @var =%&gt;
2627
- &lt;/div&gt;
2628
- </pre>
2629
- <div class="terminal_caption">
2630
- result (version 2.5.0):</div>
2631
- <pre class="terminal">$ erubis -c '{var: "AAA\n"}' tailnewline.rhtml
2632
- &lt;div&gt;
2633
- AAA
2634
-
2635
- &lt;/div&gt;
2636
- </pre>
2637
- <a name="tail_260.result"></a>
2638
- <div class="terminal_caption">
2639
- result (version 2.6.0):</div>
2640
- <pre class="terminal">$ erubis -c '{var: "AAA\n"}' tailnewline.rhtml
2641
- &lt;div&gt;
2642
- AAA
2643
- &lt;/div&gt;
2644
- </pre>
2645
- <br>
2646
-
2647
-
2648
- <a name="'&lt;%% %&gt;' and '&lt;%%= %&gt;'"></a>
2649
- <h3 class="section2">'&lt;%% %&gt;' and '&lt;%%= %&gt;'</h3>
2650
- <p>Since 2.6.0, '&lt;%% %&gt;' and '&lt;%%= %&gt;' are converted into '&lt;% %&gt;' and '&lt;%= %&gt;' respectively.
2651
- This is for compatibility with ERB.
2652
- </p>
2653
- <div class="program_caption">
2654
- doublepercent.rhtml:</div>
2655
- <pre class="program">&lt;ul&gt;
2656
- &lt;%% for item in @list %&gt;
2657
- &lt;li&gt;&lt;%%= item %&gt;&lt;/li&gt;
2658
- &lt;%% end %&gt;
2659
- &lt;/ul&gt;
2660
- </pre>
2661
- <div class="terminal_caption">
2662
- result:</div>
2663
- <pre class="terminal">$ erubis doublepercent.rhtml
2664
- &lt;ul&gt;
2665
- &lt;% for item in @list %&gt;
2666
- &lt;li&gt;&lt;%= item %&gt;&lt;/li&gt;
2667
- &lt;% end %&gt;
2668
- &lt;/ul&gt;
2669
- </pre>
2670
- <br>
2671
-
2672
-
2673
- <a name="topics-context-vs-binding"></a>
2674
- <h3 class="section2">evaluate(context) v.s. result(binding)</h3>
2675
- <p>It is recommended to use 'Erubis::Eruby#evaluate(context)' instead of 'Erubis::Eruby#result(binding)' because Ruby's Binding object has some problems.
2676
- </p>
2677
- <ul type="disc">
2678
- <li>It is not able to specify variables to use.
2679
- Using binding() method, all of local variables are passed to templates.
2680
- </li>
2681
- <li>Changing local variables in templates may affect to varialbes in main program.
2682
- If you assign '10' to local variable 'x' in templates, it may change variable 'x' in main program unintendedly.
2683
- </li>
2684
- </ul>
2685
- <p>The following example shows that assignment of some values into variable 'x' in templates affect to local variable 'x' in main program unintendedly.
2686
- </p>
2687
- <a name="template1.rhtml"></a>
2688
- <div class="program_caption">
2689
- template1.rhtml (intended to be passed 'items' from main program)</div>
2690
- <pre class="program">&lt;% for <strong>x</strong> in <strong>items</strong> %&gt;
2691
- item = &lt;%= x %&gt;
2692
- &lt;% end %&gt;
2693
- ** debug: local variables=&lt;%= local_variables().inspect() %&gt;
2694
- </pre>
2695
- <a name="main_program1.rb"></a>
2696
- <div class="program_caption">
2697
- main_program1.rb (intended to pass 'items' to template)</div>
2698
- <pre class="program">require 'erubis'
2699
- eruby = Erubis::Eruby.new(File.read('template1.rhtml'))
2700
- items = ['foo', 'bar', 'baz']
2701
- x = 1
2702
- ## local variable 'x' and 'eruby' are passed to template as well as 'items'!
2703
- print <strong>eruby.result(binding())</strong>
2704
- ## local variable 'x' is changed unintendedly because it is changed in template!
2705
- puts "** debug: x=#{x.inspect}" #=&gt; "baz"
2706
- </pre>
2707
- <a name="main_program1.result"></a>
2708
- <div class="terminal_caption">
2709
- Result:</div>
2710
- <pre class="terminal">$ ruby main_program1.rb
2711
- item = foo
2712
- item = bar
2713
- item = baz
2714
- ** debug: local variables=["eruby", "items", "x", "_buf"]
2715
- ** debug: x="baz"
2716
- </pre>
2717
- <p>This problem is caused because Ruby's Binding class is poor to use in template engine.
2718
- Binding class should support the following features.
2719
- </p>
2720
- <pre class="program">b = Binding.new # create empty Binding object
2721
- b['x'] = 1 # set local variables using binding object
2722
- </pre>
2723
- <p>But the above features are not implemented in Ruby.
2724
- </p>
2725
- <p>A pragmatic solution is to use 'Erubis::Eruby#evaluate(context)' instead of 'Erubis::Eruby#result(binding)'.
2726
- 'evaluate(context)' uses Erubis::Context object and instance variables instead of Binding object and local variables.
2727
- </p>
2728
- <a name="template2.rhtml"></a>
2729
- <div class="program_caption">
2730
- template2.rhtml (intended to be passed '@items' from main program)</div>
2731
- <pre class="program">&lt;% for <strong>x</strong> in <strong>@items</strong> %&gt;
2732
- item = &lt;%= x %&gt;
2733
- &lt;% end %&gt;
2734
- ** debug: local variables=&lt;%= local_variables().inspect() %&gt;
2735
- </pre>
2736
- <a name="main_program2.rb"></a>
2737
- <div class="program_caption">
2738
- main_program2.rb (intended to pass '@items' to template)</div>
2739
- <pre class="program">require 'erubis'
2740
- eruby = Erubis::Eruby.new(File.read('template2.rhtml'))
2741
- items = ['foo', 'bar', 'baz']
2742
- x = 1
2743
- ## only 'items' are passed to template
2744
- print <strong>eruby.evaluate(:items=&gt;items)</strong>
2745
- ## local variable 'x' is not changed!
2746
- puts "** debug: x=#{x.inspect}" #=&gt; 1
2747
- </pre>
2748
- <a name="main_program2.result"></a>
2749
- <div class="terminal_caption">
2750
- Result:</div>
2751
- <pre class="terminal">$ ruby main_program2.rb
2752
- item = foo
2753
- item = bar
2754
- item = baz
2755
- ** debug: local variables=["_context", "x", "_buf"]
2756
- ** debug: x=1
2757
- </pre>
2758
- <br>
2759
-
2760
-
2761
- <a name="topics-fasteruby"></a>
2762
- <h3 class="section2">Class Erubis::FastEruby</h3>
2763
- <p>[experimental]
2764
- </p>
2765
- <p>Erubis provides Erubis::FastEruby class which includes <a href="#interpolation-enhancer">InterpolationEnhancer</a> and <a href="#topics-benchmark">works faster than Erubis::Eruby class</a>.
2766
- If you desire more speed, try Erubis::FastEruby class.
2767
- </p>
2768
- <a name="fasteruby.rhtml"></a>
2769
- <div class="program_caption">
2770
- File 'fasteruby.rhtml':</div>
2771
- <pre class="program">&lt;html&gt;
2772
- &lt;body&gt;
2773
- &lt;h1&gt;&lt;%== @title %&gt;&lt;/h1&gt;
2774
- &lt;table&gt;
2775
- &lt;% i = 0 %&gt;
2776
- &lt;% for item in @list %&gt;
2777
- &lt;% i += 1 %&gt;
2778
- &lt;tr&gt;
2779
- &lt;td&gt;&lt;%= i %&gt;&lt;/td&gt;
2780
- &lt;td&gt;&lt;%== item %&gt;&lt;/td&gt;
2781
- &lt;/tr&gt;
2782
- &lt;% end %&gt;
2783
- &lt;/table&gt;
2784
- &lt;/body&gt;
2785
- &lt;/html&gt;
2786
- </pre>
2787
- <a name="fasteruby.rb"></a>
2788
- <div class="program_caption">
2789
- File 'fasteruby.rb':</div>
2790
- <pre class="program">require 'erubis'
2791
- input = File.read('fasteruby.rhtml')
2792
- eruby = <strong>Erubis::FastEruby.new(input)</strong> # create Eruby object
2793
-
2794
- puts "---------- script source ---"
2795
- puts eruby.src
2796
-
2797
- puts "---------- result ----------"
2798
- context = { :title=&gt;'Example', :list=&gt;['aaa', 'bbb', 'ccc'] }
2799
- output = eruby.evaluate(context)
2800
- print output
2801
- </pre>
2802
- <a name="fasteruby.result"></a>
2803
- <div class="terminal_caption">
2804
- output</div>
2805
- <pre class="terminal">$ ruby fasteruby.rb
2806
- ---------- script source ---
2807
- _buf = ''; _buf &lt;&lt; <strong>%Q`</strong>&lt;html&gt;
2808
- &lt;body&gt;
2809
- &lt;h1&gt;<strong>#{Erubis::XmlHelper.escape_xml( @title )}</strong>&lt;/h1&gt;
2810
- &lt;table&gt;\n<strong>`</strong>
2811
- i = 0
2812
- for item in @list
2813
- i += 1
2814
- _buf &lt;&lt; <strong>%Q`</strong> &lt;tr&gt;
2815
- &lt;td&gt;<strong>#{ i }</strong>&lt;/td&gt;
2816
- &lt;td&gt;<strong>#{Erubis::XmlHelper.escape_xml( item )}</strong>&lt;/td&gt;
2817
- &lt;/tr&gt;\n<strong>`</strong>
2818
- end
2819
- _buf &lt;&lt; <strong>%Q`</strong> &lt;/table&gt;
2820
- &lt;/body&gt;
2821
- &lt;/html&gt;\n<strong>`</strong>
2822
- _buf.to_s
2823
- ---------- result ----------
2824
- &lt;html&gt;
2825
- &lt;body&gt;
2826
- &lt;h1&gt;Example&lt;/h1&gt;
2827
- &lt;table&gt;
2828
- &lt;tr&gt;
2829
- &lt;td&gt;1&lt;/td&gt;
2830
- &lt;td&gt;aaa&lt;/td&gt;
2831
- &lt;/tr&gt;
2832
- &lt;tr&gt;
2833
- &lt;td&gt;2&lt;/td&gt;
2834
- &lt;td&gt;bbb&lt;/td&gt;
2835
- &lt;/tr&gt;
2836
- &lt;tr&gt;
2837
- &lt;td&gt;3&lt;/td&gt;
2838
- &lt;td&gt;ccc&lt;/td&gt;
2839
- &lt;/tr&gt;
2840
- &lt;/table&gt;
2841
- &lt;/body&gt;
2842
- &lt;/html&gt;
2843
- </pre>
2844
- <br>
2845
-
2846
-
2847
- <a name="topics-syntax"></a>
2848
- <h3 class="section2">Syntax Checking</h3>
2849
- <p>Command-line option '-z' checks syntax. It is similar to 'erubis -x file.rhtml | ruby -wc', but it can take several file names.
2850
- </p>
2851
- <div class="terminal_caption">
2852
- example of command-line option '-z'</div>
2853
- <pre class="terminal">$ erubis <strong>-z</strong> app/views/*/*.rhtml
2854
- Syntax OK
2855
- </pre>
2856
- <br>
2857
-
2858
-
2859
- <a name="topics-caching"></a>
2860
- <h3 class="section2">File Caching</h3>
2861
- <p>Erubis::Eruby.load_file(filename) convert file into Ruby script and return Eruby object.
2862
- In addition, it caches converted Ruby script into cache file (filename + '.cache') if cache file is old or not exist.
2863
- If cache file exists and is newer than eruby file, Erubis::Eruby.load_file() loads cache file.
2864
- </p>
2865
- <div class="program_caption">
2866
- example of Erubis::Eruby.load_file()</div>
2867
- <pre class="program">require 'erubis'
2868
- filename = 'example.rhtml'
2869
- eruby = <strong>Erubis::Eruby.load_file(filename)</strong>
2870
- cachename = filename + '.cache'
2871
- if test(?f, cachename)
2872
- puts "*** cache file '#{cachename}' created."
2873
- end
2874
- </pre>
2875
- <p>Since 2.6.0, it is able to specify cache filename.
2876
- </p>
2877
- <div class="program_caption">
2878
- specify cache filename.</div>
2879
- <pre class="program">filename = 'example.rhtml'
2880
- eruby = Erubis::Eruby.load_file(filename, :cachename=&gt;filename+'.cache')
2881
- </pre>
2882
- <p>Caching makes Erubis about 40-50 percent faster than no-caching.
2883
- See <a href="#topics-benchmark">benchmark</a> for details.
2884
- </p>
2885
- <br>
2886
-
2887
-
2888
- <a name="topics-tinyeruby"></a>
2889
- <h3 class="section2">Erubis::TinyEruby class</h3>
2890
- <p>Erubis::TinyEruby class in 'erubis/tiny.rb' is the smallest implementation of eRuby.
2891
- If you don't need any enhancements of Erubis and only require simple eRuby implementation,
2892
- try Erubis::TinyEruby class.
2893
- </p>
2894
- <br>
2895
-
2896
-
2897
- <a name="topics-php"></a>
2898
- <h3 class="section2">NoTextEnhancer and NoCodeEnhancer in PHP</h3>
2899
- <p>NoTextEnhancer and NoCodEnahncer are quite useful not only for eRuby but also for PHP.
2900
- The former "drops" HTML text and show up embedded Ruby/PHP code
2901
- and the latter drops embedded Ruby/PHP code and leave HTML text.
2902
- </p>
2903
- <p>For example, see the following PHP script.
2904
- </p>
2905
- <a name="notext-example.php"></a>
2906
- <div class="program_caption">
2907
- notext-example.php</div>
2908
- <pre class="program">&lt;html&gt;
2909
- &lt;body&gt;
2910
- &lt;h3&gt;List&lt;/h3&gt;
2911
- &lt;?php if (!$list || count($list) == 0) { ?&gt;
2912
- &lt;p&gt;not found.&lt;/p&gt;
2913
- &lt;?php } else { ?&gt;
2914
- &lt;table&gt;
2915
- &lt;tbody&gt;
2916
- &lt;?php $i = 0; ?&gt;
2917
- &lt;?php foreach ($list as $item) { ?&gt;
2918
- &lt;tr bgcolor="&lt;?php echo ++$i % 2 == 1 ? '#FFCCCC' : '#CCCCFF'; ?&gt;"&gt;
2919
- &lt;td&gt;&lt;?php echo $item; ?&gt;&lt;/td&gt;
2920
- &lt;/tr&gt;
2921
- &lt;?php } ?&gt;
2922
- &lt;/tbody&gt;
2923
- &lt;/table&gt;
2924
- &lt;?php } ?&gt;
2925
- &lt;/body&gt;
2926
- &lt;/html&gt;
2927
- </pre>
2928
- <p>This is complex because PHP code and HTML document are mixed.
2929
- NoTextEnhancer can separate PHP code from HTML document.
2930
- </p>
2931
- <a name="notext-php.result"></a>
2932
- <div class="terminal_caption">
2933
- example of using NoTextEnhancer with PHP file</div>
2934
- <pre class="terminal">$ erubis -l php --pi=php -N -E NoText --trim=false notext-example.php
2935
- 1:
2936
- 2:
2937
- 3:
2938
- 4: &lt;?php if (!$list || count($list) == 0) { ?&gt;
2939
- 5:
2940
- 6: &lt;?php } else { ?&gt;
2941
- 7:
2942
- 8:
2943
- 9: &lt;?php $i = 0; ?&gt;
2944
- 10: &lt;?php foreach ($list as $item) { ?&gt;
2945
- 11: &lt;?php echo ++$i % 2 == 1 ? '#FFCCCC' : '#CCCCFF'; ?&gt;
2946
- 12: &lt;?php echo $item; ?&gt;
2947
- 13:
2948
- 14: &lt;?php } ?&gt;
2949
- 15:
2950
- 16:
2951
- 17: &lt;?php } ?&gt;
2952
- 18:
2953
- 19:
2954
- </pre>
2955
- <p>In the same way, NoCodeEnhancer can extract HTML tags.
2956
- </p>
2957
- <a name="nocode-php.result"></a>
2958
- <div class="terminal_caption">
2959
- example of using NoCodeEnhancer with PHP file</div>
2960
- <pre class="terminal">$ erubis -l php --pi=php -N -E NoCode --trim=false notext-example.php
2961
- 1: &lt;html&gt;
2962
- 2: &lt;body&gt;
2963
- 3: &lt;h3&gt;List&lt;/h3&gt;
2964
- 4:
2965
- 5: &lt;p&gt;not found.&lt;/p&gt;
2966
- 6:
2967
- 7: &lt;table&gt;
2968
- 8: &lt;tbody&gt;
2969
- 9:
2970
- 10:
2971
- 11: &lt;tr bgcolor=""&gt;
2972
- 12: &lt;td&gt;&lt;/td&gt;
2973
- 13: &lt;/tr&gt;
2974
- 14:
2975
- 15: &lt;/tbody&gt;
2976
- 16: &lt;/table&gt;
2977
- 17:
2978
- 18: &lt;/body&gt;
2979
- 19: &lt;/html&gt;
2980
- </pre>
2981
- <br>
2982
-
2983
-
2984
- <a name="topcs-modruby"></a>
2985
- <h3 class="section2">Helper Class for mod_ruby</h3>
2986
- <p>Thanks Andrew R Jackson, he developed 'erubis-run.rb' which enables you to use Erubis with mod_ruby.
2987
- </p>
2988
- <ol type="1">
2989
- <li>Copy 'erubis-2.6.5/contrib/erubis-run.rb' to the 'RUBYLIBDIR/apache' directory (for example '/usr/local/lib/ruby/1.8/apache') which contains 'ruby-run.rb', 'eruby-run.rb', and so on.
2990
- <pre class="terminal">$ cd erubis-2.6.5/
2991
- $ sudo copy contrib/erubis-run.rb /usr/local/lib/ruby/1.8/apache/
2992
- </pre>
2993
- </li>
2994
- <li>Add the following example to your 'httpd.conf' (for example '/usr/local/apache2/conf/httpd.conf')
2995
- <pre class="program">LoadModule ruby_module modules/mod_ruby.so
2996
- &lt;IfModule mod_ruby.c&gt;
2997
- RubyRequire apache/ruby-run
2998
- RubyRequire apache/eruby-run
2999
- RubyRequire apache/erubis-run
3000
- &lt;Location /erubis&gt;
3001
- SetHandler ruby-object
3002
- RubyHandler Apache::ErubisRun.instance
3003
- &lt;/Location&gt;
3004
- &lt;Files *.rhtml&gt;
3005
- SetHandler ruby-object
3006
- RubyHandler Apache::ErubisRun.instance
3007
- &lt;/Files&gt;
3008
- &lt;/IfModule&gt;
3009
- </pre>
3010
- </li>
3011
- <li>Restart Apache web server.
3012
- <pre class="terminal">$ sudo /usr/local/apache2/bin/apachectl stop
3013
- $ sudo /usr/local/apache2/bin/apachectl start
3014
- </pre>
3015
- </li>
3016
- <li>Create *.rhtml file, for example:
3017
- <pre class="program">&lt;html&gt;
3018
- &lt;body&gt;
3019
- Now is &lt;%= Time.now %&gt;
3020
- Erubis version is &lt;%= Erubis::VERSION %&gt;
3021
- &lt;/body&gt;
3022
- &lt;/html&gt;
3023
- </pre>
3024
- </li>
3025
- <li>Change mode of your directory to be writable by web server process.
3026
- <pre class="terminal">$ cd /usr/local/apache2/htdocs/erubis
3027
- $ sudo chgrp daemon .
3028
- $ sudo chmod 775 .
3029
- </pre>
3030
- </li>
3031
- <li>Access the *.rhtml file and you'll get the web page.
3032
- </li>
3033
- </ol>
3034
- <p>You must set your directories to be writable by web server process, because
3035
- Apache::ErubisRun calls Erubis::Eruby.load_file() internally which creates cache files
3036
- in the same directory in which '*.rhtml' file exists.
3037
- </p>
3038
- <br>
3039
-
3040
-
3041
- <a name="topics-defmethod"></a>
3042
- <h3 class="section2">Define method</h3>
3043
- <p>Erubis::Eruby#def_method() defines instance method or singleton method.
3044
- </p>
3045
- <a name="def_method.rb"></a>
3046
- <pre class="program">require 'erubis'
3047
- s = "hello &lt;%= name %&gt;"
3048
- eruby = Erubis::Eruby.new(s)
3049
- filename = 'hello.rhtml'
3050
-
3051
- ## define instance method to Dummy class (or module)
3052
- class Dummy; end
3053
- <strong>eruby.def_method(Dummy, 'render(name)', filename)</strong> # filename is optional
3054
- p Dummy.new.render('world') #=&gt; "hello world"
3055
-
3056
- ## define singleton method to dummy object
3057
- obj = Object.new
3058
- <strong>eruby.def_method(obj, 'render(name)', filename)</strong> # filename is optional
3059
- p obj.render('world') #=&gt; "hello world"
3060
- </pre>
3061
- <br>
3062
-
3063
-
3064
- <a name="topics-benchmark"></a>
3065
- <h3 class="section2">Benchmark</h3>
3066
- <p>A benchmark script is included in Erubis package at 'erubis-2.6.5/benchark/' directory.
3067
- Here is an example result of benchmark.
3068
- </p>
3069
- <div class="terminal_caption">
3070
- MacOS X 10.4 Tiger, Intel CoreDuo 1.83GHz, Ruby1.8.6, eruby1.0.5, gcc4.0.1</div>
3071
- <pre class="terminal">$ cd erubis-2.6.5/benchmark/
3072
- $ ruby bench.rb -n 10000 -m execute
3073
- *** ntimes=10000, testmode=execute
3074
- user system total real
3075
- eruby 12.720000 0.240000 <strong>12.960000</strong> ( 12.971888)
3076
- ERB 36.760000 0.350000 <strong>37.110000</strong> ( 37.112019)
3077
- ERB(cached) 11.990000 0.440000 <strong>12.430000</strong> ( 12.430375)
3078
- Erubis::Eruby 10.840000 0.300000 <strong>11.140000</strong> ( 11.144426)
3079
- Erubis::Eruby(cached) 7.540000 0.410000 <strong>7.950000</strong> ( 7.969305)
3080
- Erubis::FastEruby 10.440000 0.300000 <strong>10.740000</strong> ( 10.737808)
3081
- Erubis::FastEruby(cached) 6.940000 0.410000 <strong>7.350000</strong> ( 7.353666)
3082
- Erubis::TinyEruby 9.550000 0.290000 9.840000 ( 9.851729)
3083
- Erubis::ArrayBufferEruby 11.010000 0.300000 11.310000 ( 11.314339)
3084
- Erubis::PrintOutEruby 11.640000 0.290000 11.930000 ( 11.942141)
3085
- Erubis::StdoutEruby 11.590000 0.300000 11.890000 ( 11.886512)
3086
- </pre>
3087
- <p>This shows that...
3088
- </p>
3089
- <ul type="disc">
3090
- <li>Erubis::Eruby runs more than 10 percent faster than eruby.
3091
- </li>
3092
- <li>Erubis::Eruby runs about 3 times faster than ERB.
3093
- </li>
3094
- <li>Caching (by Erubis::Eruby.load_file()) makes Erubis about 40-50 percent faster.
3095
- </li>
3096
- <li>Erubis::FastEruby is a litte faster than Erubis::Eruby.
3097
- </li>
3098
- <li>Array buffer (ArrayBufferEnhancer) is a little slower than string buffer (StringBufferEnhancer which Erubis::Eruby includes)
3099
- </li>
3100
- <li>$stdout and print() make Erubis a little slower.
3101
- </li>
3102
- <li>Erubis::TinyEruby (at 'erubis/tiny.rb') is the fastest in all eRuby implementations when no caching.
3103
- </li>
3104
- </ul>
3105
- <p>Escaping HTML characters (such as '&lt; &gt; &amp; "') makes Erubis more faster than eruby and ERB,
3106
- because Erubis::XmlHelper#escape_xml() works faster than CGI.escapeHTML() and ERB::Util#h().
3107
- The following shows that Erubis runs more than 40 percent (when no-cached) or 90 percent (when cached) faster than eruby if HTML characters are escaped.
3108
- </p>
3109
- <div class="terminal_caption">
3110
- When escaping HTML characters with option '-e'</div>
3111
- <pre class="terminal">$ ruby bench.rb -n 10000 -m execute -ep
3112
- *** ntimes=10000, testmode=execute
3113
- user system total real
3114
- eruby 21.700000 0.290000 <strong>21.990000</strong> ( 22.050687)
3115
- ERB 45.140000 0.390000 <strong>45.530000</strong> ( 45.536976)
3116
- ERB(cached) 20.340000 0.470000 <strong>20.810000</strong> ( 20.822653)
3117
- Erubis::Eruby 14.830000 0.310000 <strong>15.140000</strong> ( 15.147930)
3118
- Erubis::Eruby(cached) 11.090000 0.420000 <strong>11.510000</strong> ( 11.514954)
3119
- Erubis::FastEruby 14.850000 0.310000 <strong>15.160000</strong> ( 15.172499)
3120
- Erubis::FastEruby(cached) 10.970000 0.430000 <strong>11.400000</strong> ( 11.399605)
3121
- Erubis::ArrayBufferEruby 14.970000 0.300000 15.270000 ( 15.281061)
3122
- Erubis::PrintOutEruby 15.780000 0.300000 16.080000 ( 16.088289)
3123
- Erubis::StdoutEruby 15.840000 0.310000 16.150000 ( 16.235338)
3124
- </pre>
3125
- <br>
3126
-
3127
-
3128
- <br>
3129
-
3130
-
3131
- <a name="command"></a>
3132
- <h2 class="section1">Command Reference</h2>
3133
- <a name="command-usage"></a>
3134
- <h3 class="section2">Usage</h3>
3135
- <p>erubis [..options..] [<em>file</em> ...]
3136
- </p>
3137
- <br>
3138
-
3139
-
3140
- <a name="command-options"></a>
3141
- <h3 class="section2">Options</h3>
3142
- <dl class="dl3" compact>
3143
- <dt class="dt3"><b>
3144
- -h, --help </b></dt>
3145
- <dd class="dd3">
3146
- Help.
3147
- </dd>
3148
- <dt class="dt3"><b>
3149
- -v </b></dt>
3150
- <dd class="dd3">
3151
- Release version.
3152
- </dd>
3153
- <dt class="dt3"><b>
3154
- -x </b></dt>
3155
- <dd class="dd3">
3156
- Show compiled source.
3157
- </dd>
3158
- <dt class="dt3"><b>
3159
- -X </b></dt>
3160
- <dd class="dd3">
3161
- Show compiled source but only Ruby code.
3162
- This is equivarent to '-E NoText'.
3163
- </dd>
3164
- <dt class="dt3"><b>
3165
- -N </b></dt>
3166
- <dd class="dd3">
3167
- Numbering: add line numbers. (for '-x/-X')
3168
- </dd>
3169
- <dt class="dt3"><b>
3170
- -U </b></dt>
3171
- <dd class="dd3">
3172
- Unique mode: zip empty lines into a line. (for '-x/-X')
3173
- </dd>
3174
- <dt class="dt3"><b>
3175
- -C </b></dt>
3176
- <dd class="dd3">
3177
- Compact: remove empty lines. (for '-x/-X')
3178
- </dd>
3179
- <dt class="dt3"><b>
3180
- -b </b></dt>
3181
- <dd class="dd3">
3182
- Body only: no preamble nor postamble. (for '-x/-X')
3183
- This is equivarent to '--preamble=false --postamble=false'.
3184
- </dd>
3185
- <dt class="dt3"><b>
3186
- -z </b></dt>
3187
- <dd class="dd3">
3188
- Syntax checking.
3189
- </dd>
3190
- <dt class="dt3"><b>
3191
- -e </b></dt>
3192
- <dd class="dd3">
3193
- Escape. This is equivarent to '-E Escape'.
3194
- </dd>
3195
- <dt class="dt3"><b>
3196
- -p pattern </b></dt>
3197
- <dd class="dd3">
3198
- Embedded pattern (default '&lt;% %&gt;').
3199
- This is equivarent to '--pattern=<em>pattern</em>'.
3200
- </dd>
3201
- <dt class="dt3"><b>
3202
- -l lang </b></dt>
3203
- <dd class="dd3">
3204
- Language name.
3205
- This option makes erubis command to compile script but no execute.
3206
- </dd>
3207
- <dt class="dt3"><b>
3208
- -E enhacers </b></dt>
3209
- <dd class="dd3">
3210
- Enhancer name (Escape, PercentLine, ...).
3211
- It is able to specify several enhancer name separating with ','
3212
- (ex. -f Escape,PercentLine,HeaderFooter).
3213
- </dd>
3214
- <dt class="dt3"><b>
3215
- -I path </b></dt>
3216
- <dd class="dd3">
3217
- Require library path ($:).
3218
- It is able to specify several paths separating with ','
3219
- (ex. -f path1,path2,path3).
3220
- </dd>
3221
- <dt class="dt3"><b>
3222
- -K kanji </b></dt>
3223
- <dd class="dd3">
3224
- Kanji code (euc, sjis, utf8, or none) (default none).
3225
- </dd>
3226
- <dt class="dt3"><b>
3227
- -f datafile </b></dt>
3228
- <dd class="dd3">
3229
- Context data file in YAML format ('*.yaml', '*.yml') or
3230
- Ruby script ('*.rb').
3231
- It is able to specify several filenames separating with ','
3232
- (ex. -f file1,file2,file3).
3233
- </dd>
3234
- <dt class="dt3"><b>
3235
- -c context </b></dt>
3236
- <dd class="dd3">
3237
- Context data string in YAML inline style or Ruby code.
3238
- </dd>
3239
- <dt class="dt3"><b>
3240
- -T </b></dt>
3241
- <dd class="dd3">
3242
- Don't expand tab characters in YAML file.
3243
- </dd>
3244
- <dt class="dt3"><b>
3245
- -S </b></dt>
3246
- <dd class="dd3">
3247
- Convert mapping key from string to symbol in YAML file.
3248
- </dd>
3249
- <dt class="dt3"><b>
3250
- -B </b></dt>
3251
- <dd class="dd3">
3252
- invoke Eruby#result() instead of Eruby#evaluate()
3253
- </dd>
3254
- <dt class="dt3"><b>
3255
- --pi[=name] </b></dt>
3256
- <dd class="dd3">
3257
- parse '&lt;?name ... ?&gt;' instead of '&lt;% ... %&gt;'
3258
- </dd>
3259
- <dt class="dt3"><b>
3260
- --trim=false </b></dt>
3261
- <dd class="dd3">
3262
- No trimming spaces around '&lt;% %&gt;'.
3263
- </dd>
3264
- </dl>
3265
- <br>
3266
-
3267
-
3268
- <a name="command-props"></a>
3269
- <h3 class="section2">Properties</h3>
3270
- <p>Some Eruby classes can take optional properties to change it's compile option.
3271
- For example, property '--indent=" "' may change indentation of compiled source code.
3272
- Try 'erubis -h' for details.
3273
- </p>
3274
- <br>
3275
-
3276
-
3277
- <br>
3278
-
3279
-
3280
-
3281
- </div>
3282
- </blockquote>
3283
-
3284
- </body>
3285
- </html>