simple-templater 0.0.1.3 → 0.0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1156) hide show
  1. data/Gemfile +12 -0
  2. data/README.textile +2 -2
  3. data/Rakefile +8 -3
  4. data/deps.rip +0 -1
  5. data/deps.rip.rbe +0 -1
  6. data/gems/cache/abstract-1.0.0.gem +0 -0
  7. data/gems/cache/erubis-2.6.5.gem +0 -0
  8. data/gems/cache/haml-2.2.16.gem +0 -0
  9. data/gems/cache/rspec-1.2.9.gem +0 -0
  10. data/gems/environment.rb +107 -0
  11. data/{vendor/abstract → gems/gems/abstract-1.0.0}/ChangeLog +0 -0
  12. data/{vendor/abstract → gems/gems/abstract-1.0.0}/README.txt +0 -0
  13. data/{vendor/abstract → gems/gems/abstract-1.0.0}/abstract.gemspec +0 -0
  14. data/{vendor/abstract → gems/gems/abstract-1.0.0}/lib/abstract.rb +0 -0
  15. data/{vendor/abstract → gems/gems/abstract-1.0.0}/setup.rb +0 -0
  16. data/{vendor/abstract → gems/gems/abstract-1.0.0}/test/test.rb +0 -0
  17. data/gems/gems/erubis-2.6.5/CHANGES.txt +744 -0
  18. data/gems/gems/erubis-2.6.5/MIT-LICENSE +20 -0
  19. data/gems/gems/erubis-2.6.5/README.txt +102 -0
  20. data/{vendor/erubis → gems/gems/erubis-2.6.5}/benchmark/Makefile +0 -0
  21. data/gems/gems/erubis-2.6.5/benchmark/bench.rb +313 -0
  22. data/{vendor/erubis → gems/gems/erubis-2.6.5}/benchmark/bench_context.yaml +0 -0
  23. data/{vendor/erubis → gems/gems/erubis-2.6.5}/benchmark/templates/_footer.html +0 -0
  24. data/{vendor/erubis → gems/gems/erubis-2.6.5}/benchmark/templates/_header.html +0 -0
  25. data/{vendor/erubis → gems/gems/erubis-2.6.5}/benchmark/templates/bench_erb.rhtml +0 -0
  26. data/{vendor/erubis → gems/gems/erubis-2.6.5}/benchmark/templates/bench_erubis.rhtml +0 -0
  27. data/{vendor/erubis → gems/gems/erubis-2.6.5}/benchmark/templates/bench_eruby.rhtml +0 -0
  28. data/gems/gems/erubis-2.6.5/bin/erubis +10 -0
  29. data/gems/gems/erubis-2.6.5/contrib/erubis +3330 -0
  30. data/{vendor/erubis → gems/gems/erubis-2.6.5}/contrib/erubis-run.rb +0 -0
  31. data/gems/gems/erubis-2.6.5/contrib/inline-require +179 -0
  32. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc/docstyle.css +0 -0
  33. data/gems/gems/erubis-2.6.5/doc/users-guide.html +3285 -0
  34. data/gems/gems/erubis-2.6.5/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +209 -0
  35. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/ActionView.html +0 -0
  36. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/ERB.html +0 -0
  37. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ArrayBufferEnhancer.html +175 -0
  38. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/ArrayBufferEruby.html +0 -0
  39. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ArrayEnhancer.html +174 -0
  40. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/ArrayEruby.html +0 -0
  41. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Basic/Converter.html +327 -0
  42. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Basic/Engine.html +0 -0
  43. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Basic.html +0 -0
  44. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/BiPatternEnhancer.html +215 -0
  45. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/BiPatternEruby.html +0 -0
  46. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/CGenerator.html +386 -0
  47. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/CommandOptionError.html +0 -0
  48. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Context.html +344 -0
  49. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Converter.html +283 -0
  50. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/DeleteIndentEnhancer.html +150 -0
  51. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/DeleteIndentEruby.html +0 -0
  52. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Ec.html +0 -0
  53. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Ejava.html +0 -0
  54. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Ejavascript.html +0 -0
  55. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Engine.html +305 -0
  56. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Eperl.html +0 -0
  57. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Ephp.html +0 -0
  58. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/ErboutEnhancer.html +175 -0
  59. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/ErboutEruby.html +0 -0
  60. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/ErubisError.html +0 -0
  61. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Eruby.html +0 -0
  62. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/EscapeEnhancer.html +165 -0
  63. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/EscapedEc.html +0 -0
  64. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/EscapedEjava.html +0 -0
  65. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/EscapedEjavascript.html +0 -0
  66. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/EscapedEperl.html +0 -0
  67. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/EscapedEphp.html +0 -0
  68. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/EscapedEruby.html +0 -0
  69. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/EscapedEscheme.html +0 -0
  70. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Escheme.html +0 -0
  71. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Evaluator.html +212 -0
  72. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/FastEruby.html +0 -0
  73. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Generator.html +416 -0
  74. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/HeaderFooterEnhancer.html +267 -0
  75. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/HeaderFooterEruby.html +0 -0
  76. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +787 -0
  77. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +213 -0
  78. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Helpers/RailsHelper.html +349 -0
  79. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/Helpers.html +0 -0
  80. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/InterpolationEnhancer.html +306 -0
  81. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/InterpolationEruby.html +0 -0
  82. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/JavaGenerator.html +359 -0
  83. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/JavascriptGenerator.html +386 -0
  84. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/Main.html +341 -0
  85. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/NoCodeEnhancer.html +249 -0
  86. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/NoCodeEruby.html +0 -0
  87. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/NoTextEnhancer.html +159 -0
  88. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/NoTextEruby.html +0 -0
  89. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/NotSupportedError.html +0 -0
  90. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/OptimizedEruby.html +163 -0
  91. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/OptimizedGenerator.html +439 -0
  92. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/OptimizedXmlEruby.html +163 -0
  93. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Converter.html +266 -0
  94. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ec.html +166 -0
  95. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ejava.html +166 -0
  96. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ejavascript.html +166 -0
  97. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/PI/Engine.html +0 -0
  98. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Eperl.html +166 -0
  99. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Ephp.html +166 -0
  100. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Eruby.html +155 -0
  101. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/Escheme.html +166 -0
  102. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PI/TinyEruby.html +293 -0
  103. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/PI.html +0 -0
  104. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PercentLineEnhancer.html +179 -0
  105. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/PercentLineEruby.html +0 -0
  106. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PerlGenerator.html +344 -0
  107. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PhpGenerator.html +350 -0
  108. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PreprocessingEruby.html +183 -0
  109. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PreprocessingHelper.html +212 -0
  110. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PrintEnabledEnhancer.html +212 -0
  111. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/PrintEnabledEruby.html +0 -0
  112. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/PrintOutEnhancer.html +244 -0
  113. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/PrintOutEruby.html +0 -0
  114. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/PrintOutSimplifiedEruby.html +0 -0
  115. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/RubyEvaluator.html +227 -0
  116. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/RubyGenerator.html +327 -0
  117. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/SchemeGenerator.html +382 -0
  118. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/SimplifiedEruby.html +0 -0
  119. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/SimplifyEnhancer.html +191 -0
  120. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StdoutEnhancer.html +173 -0
  121. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/StdoutEruby.html +0 -0
  122. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/StdoutSimplifiedEruby.html +0 -0
  123. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/StringBufferEnhancer.html +174 -0
  124. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/StringBufferEruby.html +0 -0
  125. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/StringIOEruby.html +0 -0
  126. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/TinyEruby.html +298 -0
  127. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/classes/Erubis/XmlEruby.html +0 -0
  128. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis/XmlHelper.html +255 -0
  129. data/gems/gems/erubis-2.6.5/doc-api/classes/Erubis.html +353 -0
  130. data/gems/gems/erubis-2.6.5/doc-api/created.rid +1 -0
  131. data/gems/gems/erubis-2.6.5/doc-api/files/README_txt.html +247 -0
  132. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/context_rb.html +107 -0
  133. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/converter_rb.html +114 -0
  134. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ec_rb.html +115 -0
  135. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ejava_rb.html +115 -0
  136. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ejavascript_rb.html +115 -0
  137. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/enhanced_rb.html +115 -0
  138. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/eperl_rb.html +115 -0
  139. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/ephp_rb.html +115 -0
  140. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/eruby_rb.html +115 -0
  141. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/escheme_rb.html +115 -0
  142. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine/optimized_rb.html +114 -0
  143. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/engine_rb.html +117 -0
  144. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/enhancer_rb.html +107 -0
  145. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/error_rb.html +107 -0
  146. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/evaluator_rb.html +115 -0
  147. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/generator_rb.html +114 -0
  148. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/helper_rb.html +107 -0
  149. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/helpers/rails_form_helper_rb.html +107 -0
  150. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/helpers/rails_helper_rb.html +116 -0
  151. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/local-setting_rb.html +107 -0
  152. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/main_rb.html +127 -0
  153. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/preprocessing_rb.html +114 -0
  154. data/gems/gems/erubis-2.6.5/doc-api/files/erubis/tiny_rb.html +107 -0
  155. data/gems/gems/erubis-2.6.5/doc-api/files/erubis_rb.html +118 -0
  156. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/fr_class_index.html +0 -0
  157. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/fr_file_index.html +0 -0
  158. data/gems/gems/erubis-2.6.5/doc-api/fr_method_index.html +251 -0
  159. data/{vendor/erubis → gems/gems/erubis-2.6.5}/doc-api/index.html +0 -0
  160. data/{vendor/abstract/doc → gems/gems/erubis-2.6.5/doc-api}/rdoc-style.css +0 -0
  161. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/Makefile +0 -0
  162. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/example.ec +0 -0
  163. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/example.ejava +0 -0
  164. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/example.ejs +0 -0
  165. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/example.eperl +0 -0
  166. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/example.ephp +0 -0
  167. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/example.eruby +0 -0
  168. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/basic/example.escheme +0 -0
  169. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/Makefile +0 -0
  170. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/example.ec +0 -0
  171. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/example.ejava +0 -0
  172. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/example.ejs +0 -0
  173. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/example.eperl +0 -0
  174. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/example.ephp +0 -0
  175. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/example.eruby +0 -0
  176. data/{vendor/erubis → gems/gems/erubis-2.6.5}/examples/pi/example.escheme +0 -0
  177. data/gems/gems/erubis-2.6.5/lib/erubis/context.rb +83 -0
  178. data/gems/gems/erubis-2.6.5/lib/erubis/converter.rb +357 -0
  179. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ec.rb +117 -0
  180. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ejava.rb +110 -0
  181. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ejavascript.rb +119 -0
  182. data/gems/gems/erubis-2.6.5/lib/erubis/engine/enhanced.rb +121 -0
  183. data/gems/gems/erubis-2.6.5/lib/erubis/engine/eperl.rb +95 -0
  184. data/gems/gems/erubis-2.6.5/lib/erubis/engine/ephp.rb +99 -0
  185. data/gems/gems/erubis-2.6.5/lib/erubis/engine/eruby.rb +124 -0
  186. data/gems/gems/erubis-2.6.5/lib/erubis/engine/escheme.rb +114 -0
  187. data/gems/gems/erubis-2.6.5/lib/erubis/engine/optimized.rb +127 -0
  188. data/gems/gems/erubis-2.6.5/lib/erubis/engine.rb +120 -0
  189. data/gems/gems/erubis-2.6.5/lib/erubis/enhancer.rb +680 -0
  190. data/gems/gems/erubis-2.6.5/lib/erubis/error.rb +23 -0
  191. data/gems/gems/erubis-2.6.5/lib/erubis/evaluator.rb +88 -0
  192. data/gems/gems/erubis-2.6.5/lib/erubis/generator.rb +85 -0
  193. data/gems/gems/erubis-2.6.5/lib/erubis/helper.rb +47 -0
  194. data/gems/gems/erubis-2.6.5/lib/erubis/helpers/rails_form_helper.rb +197 -0
  195. data/gems/gems/erubis-2.6.5/lib/erubis/helpers/rails_helper.rb +353 -0
  196. data/gems/gems/erubis-2.6.5/lib/erubis/local-setting.rb +9 -0
  197. data/gems/gems/erubis-2.6.5/lib/erubis/main.rb +489 -0
  198. data/gems/gems/erubis-2.6.5/lib/erubis/preprocessing.rb +58 -0
  199. data/gems/gems/erubis-2.6.5/lib/erubis/tiny.rb +144 -0
  200. data/gems/gems/erubis-2.6.5/lib/erubis.rb +72 -0
  201. data/{vendor/erubis → gems/gems/erubis-2.6.5}/setup.rb +0 -0
  202. data/gems/gems/erubis-2.6.5/test/assert-text-equal.rb +44 -0
  203. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/Example.ejava +0 -0
  204. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/array_example.result +0 -0
  205. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/arraybuffer_example.result +0 -0
  206. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/bipattern-example.rhtml +0 -0
  207. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/bipattern_example.result +0 -0
  208. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/context.rb +0 -0
  209. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/context.yaml +0 -0
  210. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/def_method.rb +0 -0
  211. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/def_method.result +0 -0
  212. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/escape_example.result +0 -0
  213. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example.ec +0 -0
  214. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example.ejs +0 -0
  215. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example.eperl +0 -0
  216. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example.ephp +0 -0
  217. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example.eruby +0 -0
  218. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example.escheme +0 -0
  219. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example1.eruby +0 -0
  220. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example1.rb +0 -0
  221. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example1.result +0 -0
  222. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example10.rb +0 -0
  223. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example10.result +0 -0
  224. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example10.xhtml +0 -0
  225. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example10_x.result +0 -0
  226. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example11.php +0 -0
  227. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example11.result +0 -0
  228. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example11.rhtml +0 -0
  229. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example11_C.result +0 -0
  230. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example11_N.result +0 -0
  231. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example11_U.result +0 -0
  232. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example11_php.result +0 -0
  233. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example1_x.result +0 -0
  234. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example2.eruby +0 -0
  235. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example2.rb +0 -0
  236. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example2.result +0 -0
  237. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example2_trim.result +0 -0
  238. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example2_x.result +0 -0
  239. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example3.eruby +0 -0
  240. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example3.rb +0 -0
  241. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example31.result +0 -0
  242. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example32.result +0 -0
  243. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example3_e.result +0 -0
  244. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example4.eruby +0 -0
  245. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example4.rb +0 -0
  246. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example4.result +0 -0
  247. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example4_x.result +0 -0
  248. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example5.eruby +0 -0
  249. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example5.rb +0 -0
  250. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example5.result +0 -0
  251. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example6.rb +0 -0
  252. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example6.result +0 -0
  253. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example7.eruby +0 -0
  254. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example71.result +0 -0
  255. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example72.result +0 -0
  256. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example8.eruby +0 -0
  257. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example8_ruby.result +0 -0
  258. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example8_yaml.result +0 -0
  259. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example9.eruby +0 -0
  260. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example9.rb +0 -0
  261. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example9.result +0 -0
  262. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example91.result +0 -0
  263. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example92.result +0 -0
  264. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example_c.result +0 -0
  265. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example_java.result +0 -0
  266. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example_js.result +0 -0
  267. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example_perl.result +0 -0
  268. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example_php.result +0 -0
  269. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example_scheme.result +0 -0
  270. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/example_scheme_display.result +0 -0
  271. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/fasteruby.rb +0 -0
  272. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/fasteruby.result +0 -0
  273. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/fasteruby.rhtml +0 -0
  274. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/headerfooter-example.eruby +0 -0
  275. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/headerfooter-example2.rb +0 -0
  276. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/headerfooter-example2.rhtml +0 -0
  277. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/headerfooter_example.result +0 -0
  278. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/headerfooter_example2.result +0 -0
  279. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/interpolation_example.result +0 -0
  280. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/main_program1.rb +0 -0
  281. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/main_program1.result +0 -0
  282. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/main_program2.rb +0 -0
  283. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/main_program2.result +0 -0
  284. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/nocode-example.eruby +0 -0
  285. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/nocode-php.result +0 -0
  286. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/nocode_example.result +0 -0
  287. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/normal-eruby-test.eruby +0 -0
  288. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/normal_eruby_test.result +0 -0
  289. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/notext-example.eruby +0 -0
  290. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/notext-example.php +0 -0
  291. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/notext-php.result +0 -0
  292. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/notext_example.result +0 -0
  293. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/percentline-example.rhtml +0 -0
  294. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/percentline_example.result +0 -0
  295. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/printenable_example.result +0 -0
  296. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/printenabled-example.eruby +0 -0
  297. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/printenabled-example.rb +0 -0
  298. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/printstatement_example.result +0 -0
  299. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/simplify_example.result +0 -0
  300. data/gems/gems/erubis-2.6.5/test/data/users-guide/stderr.log +3 -0
  301. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/stdout_exmple.result +0 -0
  302. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/stringbuffer_example.result +0 -0
  303. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/tail_260.result +0 -0
  304. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/tailnewline.rhtml +0 -0
  305. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/template1.rhtml +0 -0
  306. data/{vendor/erubis → gems/gems/erubis-2.6.5}/test/data/users-guide/template2.rhtml +0 -0
  307. data/gems/gems/erubis-2.6.5/test/test-engines.rb +369 -0
  308. data/gems/gems/erubis-2.6.5/test/test-enhancers.rb +570 -0
  309. data/gems/gems/erubis-2.6.5/test/test-erubis.rb +883 -0
  310. data/gems/gems/erubis-2.6.5/test/test-main.rb +721 -0
  311. data/gems/gems/erubis-2.6.5/test/test-users-guide.rb +57 -0
  312. data/gems/gems/erubis-2.6.5/test/test.rb +29 -0
  313. data/gems/gems/erubis-2.6.5/test/testutil.rb +96 -0
  314. data/gems/gems/haml-2.2.16/CONTRIBUTING +4 -0
  315. data/gems/gems/haml-2.2.16/MIT-LICENSE +20 -0
  316. data/gems/gems/haml-2.2.16/README.md +357 -0
  317. data/gems/gems/haml-2.2.16/REVISION +1 -0
  318. data/gems/gems/haml-2.2.16/Rakefile +392 -0
  319. data/gems/gems/haml-2.2.16/VERSION +1 -0
  320. data/gems/gems/haml-2.2.16/VERSION_NAME +1 -0
  321. data/gems/gems/haml-2.2.16/bin/css2sass +7 -0
  322. data/gems/gems/haml-2.2.16/bin/haml +9 -0
  323. data/gems/gems/haml-2.2.16/bin/html2haml +7 -0
  324. data/gems/gems/haml-2.2.16/bin/sass +8 -0
  325. data/gems/gems/haml-2.2.16/extra/haml-mode.el +662 -0
  326. data/gems/gems/haml-2.2.16/extra/sass-mode.el +206 -0
  327. data/gems/gems/haml-2.2.16/extra/update_watch.rb +13 -0
  328. data/gems/gems/haml-2.2.16/init.rb +16 -0
  329. data/gems/gems/haml-2.2.16/lib/haml/buffer.rb +302 -0
  330. data/gems/gems/haml-2.2.16/lib/haml/engine.rb +299 -0
  331. data/gems/gems/haml-2.2.16/lib/haml/error.rb +22 -0
  332. data/gems/gems/haml-2.2.16/lib/haml/exec.rb +459 -0
  333. data/gems/gems/haml-2.2.16/lib/haml/filters.rb +341 -0
  334. data/gems/gems/haml-2.2.16/lib/haml/helpers/action_view_extensions.rb +55 -0
  335. data/gems/gems/haml-2.2.16/lib/haml/helpers/action_view_mods.rb +177 -0
  336. data/gems/gems/haml-2.2.16/lib/haml/helpers/xss_mods.rb +95 -0
  337. data/gems/gems/haml-2.2.16/lib/haml/helpers.rb +563 -0
  338. data/gems/gems/haml-2.2.16/lib/haml/html.rb +259 -0
  339. data/gems/gems/haml-2.2.16/lib/haml/precompiler.rb +1043 -0
  340. data/gems/gems/haml-2.2.16/lib/haml/shared.rb +78 -0
  341. data/gems/gems/haml-2.2.16/lib/haml/template/patch.rb +58 -0
  342. data/gems/gems/haml-2.2.16/lib/haml/template/plugin.rb +75 -0
  343. data/gems/gems/haml-2.2.16/lib/haml/template.rb +85 -0
  344. data/gems/gems/haml-2.2.16/lib/haml/util.rb +289 -0
  345. data/gems/gems/haml-2.2.16/lib/haml/version.rb +64 -0
  346. data/gems/gems/haml-2.2.16/lib/haml.rb +40 -0
  347. data/gems/gems/haml-2.2.16/lib/sass/css.rb +404 -0
  348. data/gems/gems/haml-2.2.16/lib/sass/engine.rb +475 -0
  349. data/gems/gems/haml-2.2.16/lib/sass/environment.rb +79 -0
  350. data/gems/gems/haml-2.2.16/lib/sass/error.rb +57 -0
  351. data/gems/gems/haml-2.2.16/lib/sass/files.rb +140 -0
  352. data/gems/gems/haml-2.2.16/lib/sass/plugin/merb.rb +49 -0
  353. data/gems/gems/haml-2.2.16/lib/sass/plugin/rack.rb +65 -0
  354. data/gems/gems/haml-2.2.16/lib/sass/plugin/rails.rb +24 -0
  355. data/gems/gems/haml-2.2.16/lib/sass/plugin.rb +225 -0
  356. data/gems/gems/haml-2.2.16/lib/sass/repl.rb +58 -0
  357. data/gems/gems/haml-2.2.16/lib/sass/script/bool.rb +17 -0
  358. data/gems/gems/haml-2.2.16/lib/sass/script/color.rb +220 -0
  359. data/gems/gems/haml-2.2.16/lib/sass/script/funcall.rb +50 -0
  360. data/gems/gems/haml-2.2.16/lib/sass/script/functions.rb +252 -0
  361. data/gems/gems/haml-2.2.16/lib/sass/script/lexer.rb +191 -0
  362. data/gems/gems/haml-2.2.16/lib/sass/script/literal.rb +177 -0
  363. data/gems/gems/haml-2.2.16/lib/sass/script/node.rb +14 -0
  364. data/gems/gems/haml-2.2.16/lib/sass/script/number.rb +381 -0
  365. data/gems/gems/haml-2.2.16/lib/sass/script/operation.rb +45 -0
  366. data/gems/gems/haml-2.2.16/lib/sass/script/parser.rb +222 -0
  367. data/gems/gems/haml-2.2.16/lib/sass/script/string.rb +12 -0
  368. data/gems/gems/haml-2.2.16/lib/sass/script/unary_operation.rb +34 -0
  369. data/gems/gems/haml-2.2.16/lib/sass/script/variable.rb +31 -0
  370. data/gems/gems/haml-2.2.16/lib/sass/script.rb +59 -0
  371. data/gems/gems/haml-2.2.16/lib/sass/tree/comment_node.rb +84 -0
  372. data/gems/gems/haml-2.2.16/lib/sass/tree/debug_node.rb +30 -0
  373. data/gems/gems/haml-2.2.16/lib/sass/tree/directive_node.rb +68 -0
  374. data/gems/gems/haml-2.2.16/lib/sass/tree/for_node.rb +48 -0
  375. data/gems/gems/haml-2.2.16/lib/sass/tree/if_node.rb +54 -0
  376. data/gems/gems/haml-2.2.16/lib/sass/tree/import_node.rb +65 -0
  377. data/gems/gems/haml-2.2.16/lib/sass/tree/mixin_def_node.rb +29 -0
  378. data/gems/gems/haml-2.2.16/lib/sass/tree/mixin_node.rb +48 -0
  379. data/gems/gems/haml-2.2.16/lib/sass/tree/node.rb +251 -0
  380. data/gems/gems/haml-2.2.16/lib/sass/tree/prop_node.rb +121 -0
  381. data/gems/gems/haml-2.2.16/lib/sass/tree/rule_node.rb +223 -0
  382. data/gems/gems/haml-2.2.16/lib/sass/tree/variable_node.rb +34 -0
  383. data/gems/gems/haml-2.2.16/lib/sass/tree/while_node.rb +31 -0
  384. data/gems/gems/haml-2.2.16/lib/sass.rb +24 -0
  385. data/gems/gems/haml-2.2.16/rails/init.rb +1 -0
  386. data/gems/gems/haml-2.2.16/test/benchmark.rb +99 -0
  387. data/gems/gems/haml-2.2.16/test/haml/engine_test.rb +1247 -0
  388. data/gems/gems/haml-2.2.16/test/haml/helper_test.rb +282 -0
  389. data/gems/gems/haml-2.2.16/test/haml/html2haml_test.rb +139 -0
  390. data/gems/gems/haml-2.2.16/test/haml/markaby/standard.mab +52 -0
  391. data/gems/gems/haml-2.2.16/test/haml/mocks/article.rb +6 -0
  392. data/gems/gems/haml-2.2.16/test/haml/results/content_for_layout.xhtml +12 -0
  393. data/gems/gems/haml-2.2.16/test/haml/results/eval_suppressed.xhtml +9 -0
  394. data/gems/gems/haml-2.2.16/test/haml/results/filters.xhtml +62 -0
  395. data/gems/gems/haml-2.2.16/test/haml/results/helpers.xhtml +93 -0
  396. data/gems/gems/haml-2.2.16/test/haml/results/helpful.xhtml +10 -0
  397. data/gems/gems/haml-2.2.16/test/haml/results/just_stuff.xhtml +68 -0
  398. data/gems/gems/haml-2.2.16/test/haml/results/list.xhtml +12 -0
  399. data/gems/gems/haml-2.2.16/test/haml/results/nuke_inner_whitespace.xhtml +40 -0
  400. data/gems/gems/haml-2.2.16/test/haml/results/nuke_outer_whitespace.xhtml +148 -0
  401. data/gems/gems/haml-2.2.16/test/haml/results/original_engine.xhtml +20 -0
  402. data/gems/gems/haml-2.2.16/test/haml/results/partial_layout.xhtml +5 -0
  403. data/gems/gems/haml-2.2.16/test/haml/results/partials.xhtml +21 -0
  404. data/gems/gems/haml-2.2.16/test/haml/results/render_layout.xhtml +3 -0
  405. data/gems/gems/haml-2.2.16/test/haml/results/silent_script.xhtml +74 -0
  406. data/gems/gems/haml-2.2.16/test/haml/results/standard.xhtml +162 -0
  407. data/gems/gems/haml-2.2.16/test/haml/results/tag_parsing.xhtml +23 -0
  408. data/gems/gems/haml-2.2.16/test/haml/results/very_basic.xhtml +5 -0
  409. data/gems/gems/haml-2.2.16/test/haml/results/whitespace_handling.xhtml +89 -0
  410. data/gems/gems/haml-2.2.16/test/haml/rhtml/_av_partial_1.rhtml +12 -0
  411. data/gems/gems/haml-2.2.16/test/haml/rhtml/_av_partial_2.rhtml +8 -0
  412. data/gems/gems/haml-2.2.16/test/haml/rhtml/action_view.rhtml +62 -0
  413. data/gems/gems/haml-2.2.16/test/haml/rhtml/standard.rhtml +54 -0
  414. data/gems/gems/haml-2.2.16/test/haml/spec/README.md +97 -0
  415. data/gems/gems/haml-2.2.16/test/haml/spec/lua_haml_spec.lua +30 -0
  416. data/gems/gems/haml-2.2.16/test/haml/spec/ruby_haml_test.rb +19 -0
  417. data/gems/gems/haml-2.2.16/test/haml/spec/tests.json +488 -0
  418. data/gems/gems/haml-2.2.16/test/haml/template_test.rb +296 -0
  419. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_1.haml +9 -0
  420. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_1_ugly.haml +9 -0
  421. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_2.haml +5 -0
  422. data/gems/gems/haml-2.2.16/test/haml/templates/_av_partial_2_ugly.haml +5 -0
  423. data/gems/gems/haml-2.2.16/test/haml/templates/_layout.erb +3 -0
  424. data/gems/gems/haml-2.2.16/test/haml/templates/_layout_for_partial.haml +3 -0
  425. data/gems/gems/haml-2.2.16/test/haml/templates/_partial.haml +8 -0
  426. data/gems/gems/haml-2.2.16/test/haml/templates/_text_area.haml +3 -0
  427. data/gems/gems/haml-2.2.16/test/haml/templates/action_view.haml +47 -0
  428. data/gems/gems/haml-2.2.16/test/haml/templates/action_view_ugly.haml +47 -0
  429. data/gems/gems/haml-2.2.16/test/haml/templates/breakage.haml +8 -0
  430. data/gems/gems/haml-2.2.16/test/haml/templates/content_for_layout.haml +8 -0
  431. data/gems/gems/haml-2.2.16/test/haml/templates/eval_suppressed.haml +11 -0
  432. data/gems/gems/haml-2.2.16/test/haml/templates/filters.haml +66 -0
  433. data/gems/gems/haml-2.2.16/test/haml/templates/helpers.haml +95 -0
  434. data/gems/gems/haml-2.2.16/test/haml/templates/helpful.haml +11 -0
  435. data/gems/gems/haml-2.2.16/test/haml/templates/just_stuff.haml +83 -0
  436. data/gems/gems/haml-2.2.16/test/haml/templates/list.haml +12 -0
  437. data/gems/gems/haml-2.2.16/test/haml/templates/nuke_inner_whitespace.haml +32 -0
  438. data/gems/gems/haml-2.2.16/test/haml/templates/nuke_outer_whitespace.haml +144 -0
  439. data/gems/gems/haml-2.2.16/test/haml/templates/original_engine.haml +17 -0
  440. data/gems/gems/haml-2.2.16/test/haml/templates/partial_layout.haml +3 -0
  441. data/gems/gems/haml-2.2.16/test/haml/templates/partialize.haml +1 -0
  442. data/gems/gems/haml-2.2.16/test/haml/templates/partials.haml +12 -0
  443. data/gems/gems/haml-2.2.16/test/haml/templates/render_layout.haml +2 -0
  444. data/gems/gems/haml-2.2.16/test/haml/templates/silent_script.haml +40 -0
  445. data/gems/gems/haml-2.2.16/test/haml/templates/standard.haml +42 -0
  446. data/gems/gems/haml-2.2.16/test/haml/templates/standard_ugly.haml +42 -0
  447. data/gems/gems/haml-2.2.16/test/haml/templates/tag_parsing.haml +21 -0
  448. data/gems/gems/haml-2.2.16/test/haml/templates/very_basic.haml +4 -0
  449. data/gems/gems/haml-2.2.16/test/haml/templates/whitespace_handling.haml +87 -0
  450. data/gems/gems/haml-2.2.16/test/haml/util_test.rb +107 -0
  451. data/gems/gems/haml-2.2.16/test/linked_rails.rb +21 -0
  452. data/gems/gems/haml-2.2.16/test/sass/css2sass_test.rb +251 -0
  453. data/gems/gems/haml-2.2.16/test/sass/engine_test.rb +914 -0
  454. data/gems/gems/haml-2.2.16/test/sass/functions_test.rb +173 -0
  455. data/gems/gems/haml-2.2.16/test/sass/more_results/more1.css +9 -0
  456. data/gems/gems/haml-2.2.16/test/sass/more_results/more1_with_line_comments.css +26 -0
  457. data/gems/gems/haml-2.2.16/test/sass/more_results/more_import.css +29 -0
  458. data/gems/gems/haml-2.2.16/test/sass/more_templates/_more_partial.sass +2 -0
  459. data/gems/gems/haml-2.2.16/test/sass/more_templates/more1.sass +23 -0
  460. data/gems/gems/haml-2.2.16/test/sass/more_templates/more_import.sass +11 -0
  461. data/gems/gems/haml-2.2.16/test/sass/plugin_test.rb +222 -0
  462. data/gems/gems/haml-2.2.16/test/sass/results/alt.css +4 -0
  463. data/gems/gems/haml-2.2.16/test/sass/results/basic.css +9 -0
  464. data/gems/gems/haml-2.2.16/test/sass/results/compact.css +5 -0
  465. data/gems/gems/haml-2.2.16/test/sass/results/complex.css +87 -0
  466. data/gems/gems/haml-2.2.16/test/sass/results/compressed.css +1 -0
  467. data/gems/gems/haml-2.2.16/test/sass/results/expanded.css +19 -0
  468. data/gems/gems/haml-2.2.16/test/sass/results/import.css +29 -0
  469. data/gems/gems/haml-2.2.16/test/sass/results/line_numbers.css +49 -0
  470. data/gems/gems/haml-2.2.16/test/sass/results/mixins.css +95 -0
  471. data/gems/gems/haml-2.2.16/test/sass/results/multiline.css +24 -0
  472. data/gems/gems/haml-2.2.16/test/sass/results/nested.css +22 -0
  473. data/gems/gems/haml-2.2.16/test/sass/results/parent_ref.css +13 -0
  474. data/gems/gems/haml-2.2.16/test/sass/results/script.css +16 -0
  475. data/gems/gems/haml-2.2.16/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  476. data/gems/gems/haml-2.2.16/test/sass/results/subdir/subdir.css +3 -0
  477. data/gems/gems/haml-2.2.16/test/sass/results/units.css +11 -0
  478. data/gems/gems/haml-2.2.16/test/sass/script_test.rb +267 -0
  479. data/gems/gems/haml-2.2.16/test/sass/templates/_partial.sass +2 -0
  480. data/gems/gems/haml-2.2.16/test/sass/templates/alt.sass +16 -0
  481. data/gems/gems/haml-2.2.16/test/sass/templates/basic.sass +23 -0
  482. data/gems/gems/haml-2.2.16/test/sass/templates/bork.sass +2 -0
  483. data/gems/gems/haml-2.2.16/test/sass/templates/bork2.sass +2 -0
  484. data/gems/gems/haml-2.2.16/test/sass/templates/compact.sass +17 -0
  485. data/gems/gems/haml-2.2.16/test/sass/templates/complex.sass +307 -0
  486. data/gems/gems/haml-2.2.16/test/sass/templates/compressed.sass +15 -0
  487. data/gems/gems/haml-2.2.16/test/sass/templates/expanded.sass +17 -0
  488. data/gems/gems/haml-2.2.16/test/sass/templates/import.sass +11 -0
  489. data/gems/gems/haml-2.2.16/test/sass/templates/importee.sass +19 -0
  490. data/gems/gems/haml-2.2.16/test/sass/templates/line_numbers.sass +13 -0
  491. data/gems/gems/haml-2.2.16/test/sass/templates/mixins.sass +76 -0
  492. data/gems/gems/haml-2.2.16/test/sass/templates/multiline.sass +20 -0
  493. data/gems/gems/haml-2.2.16/test/sass/templates/nested.sass +25 -0
  494. data/gems/gems/haml-2.2.16/test/sass/templates/parent_ref.sass +25 -0
  495. data/gems/gems/haml-2.2.16/test/sass/templates/script.sass +101 -0
  496. data/gems/gems/haml-2.2.16/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  497. data/gems/gems/haml-2.2.16/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  498. data/gems/gems/haml-2.2.16/test/sass/templates/subdir/subdir.sass +6 -0
  499. data/gems/gems/haml-2.2.16/test/sass/templates/units.sass +11 -0
  500. data/gems/gems/haml-2.2.16/test/test_helper.rb +35 -0
  501. data/gems/gems/rspec-1.2.9/History.rdoc +1496 -0
  502. data/{vendor/rspec → gems/gems/rspec-1.2.9}/License.txt +0 -0
  503. data/gems/gems/rspec-1.2.9/Manifest.txt +377 -0
  504. data/{vendor/rspec → gems/gems/rspec-1.2.9}/README.rdoc +0 -0
  505. data/{vendor/rspec → gems/gems/rspec-1.2.9}/Rakefile +0 -0
  506. data/{vendor/rspec → gems/gems/rspec-1.2.9}/Ruby1.9.rdoc +0 -0
  507. data/{vendor/rspec → gems/gems/rspec-1.2.9}/TODO.txt +0 -0
  508. data/{vendor/rspec → gems/gems/rspec-1.2.9}/Upgrade.rdoc +0 -0
  509. data/{vendor/rspec → gems/gems/rspec-1.2.9}/bin/autospec +0 -0
  510. data/{vendor/rspec → gems/gems/rspec-1.2.9}/bin/spec +0 -0
  511. data/{vendor/rspec → gems/gems/rspec-1.2.9}/cucumber.yml +0 -0
  512. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/README.txt +0 -0
  513. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/diffing_spec.rb +0 -0
  514. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/failing_implicit_docstrings_example.rb +0 -0
  515. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/failure_in_after.rb +0 -0
  516. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/failure_in_before.rb +0 -0
  517. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/mocking_example.rb +0 -0
  518. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/mocking_with_flexmock.rb +0 -0
  519. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/mocking_with_mocha.rb +0 -0
  520. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/mocking_with_rr.rb +0 -0
  521. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/partial_mock_example.rb +0 -0
  522. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/pending_example.rb +0 -0
  523. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/predicate_example.rb +0 -0
  524. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/raising_example.rb +0 -0
  525. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/syntax_error_example.rb +0 -0
  526. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/team_spec.rb +0 -0
  527. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/failing/timeout_behaviour.rb +0 -0
  528. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/custom_formatter.rb +0 -0
  529. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/custom_matchers.rb +0 -0
  530. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/dynamic_spec.rb +0 -0
  531. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/file_accessor.rb +0 -0
  532. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/file_accessor_spec.rb +0 -0
  533. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/filtered_formatter.rb +0 -0
  534. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/filtered_formatter_example.rb +0 -0
  535. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/greeter_spec.rb +0 -0
  536. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/helper_method_example.rb +0 -0
  537. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/implicit_docstrings_example.rb +0 -0
  538. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/io_processor.rb +0 -0
  539. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/io_processor_spec.rb +0 -0
  540. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/mocking_example.rb +0 -0
  541. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/multi_threaded_example_group_runner.rb +0 -0
  542. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/nested_classes_example.rb +0 -0
  543. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/options_example.rb +0 -0
  544. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/options_formatter.rb +0 -0
  545. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/partial_mock_example.rb +0 -0
  546. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/pending_example.rb +0 -0
  547. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/predicate_example.rb +0 -0
  548. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/shared_example_group_example.rb +0 -0
  549. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/shared_stack_examples.rb +0 -0
  550. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/simple_matcher_example.rb +0 -0
  551. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/stack.rb +0 -0
  552. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/stack_spec.rb +0 -0
  553. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/stack_spec_with_nested_example_groups.rb +0 -0
  554. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/stubbing_example.rb +0 -0
  555. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/passing/yielding_example.rb +0 -0
  556. data/{vendor/rspec → gems/gems/rspec-1.2.9}/examples/ruby1.9.compatibility/access_to_constants_spec.rb +0 -0
  557. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/before_and_after_blocks/before_and_after_blocks.feature +0 -0
  558. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/command_line/line_number_option.feature +0 -0
  559. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/command_line/line_number_option_with_example_with_no_name.feature +0 -0
  560. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/example_groups/define_example_attribute.feature +0 -0
  561. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/example_groups/example_group_with_should_methods.feature +0 -0
  562. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/example_groups/implicit_docstrings.feature +0 -0
  563. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/example_groups/nested_groups.feature +0 -0
  564. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/expectations/customized_message.feature +0 -0
  565. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/expectations/expect_change.feature +0 -0
  566. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/expectations/expect_error.feature +0 -0
  567. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/extensions/custom_example_group.feature +0 -0
  568. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/formatters/custom_formatter.feature +0 -0
  569. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/interop/examples_and_tests_together.feature +0 -0
  570. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/interop/rspec_output.feature +0 -0
  571. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/interop/test_but_not_test_unit.feature +0 -0
  572. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/interop/test_case_with_should_methods.feature +0 -0
  573. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/load_paths/add_lib_to_load_path.feature +0 -0
  574. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/load_paths/add_spec_to_load_path.feature +0 -0
  575. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/matchers/define_diffable_matcher.feature +0 -0
  576. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/matchers/define_matcher.feature +0 -0
  577. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/matchers/define_matcher_outside_rspec.feature +0 -0
  578. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/matchers/define_matcher_with_fluent_interface.feature +0 -0
  579. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/matchers/define_wrapped_matcher.feature +0 -0
  580. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/mock_framework_integration/use_flexmock.feature +0 -0
  581. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/mock_framework_integration/use_mocha.feature +0 -0
  582. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/mock_framework_integration/use_rr.feature +0 -0
  583. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/mocks/mix_stubs_and_mocks.feature +0 -0
  584. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/mocks/stub_implementation.feature +0 -0
  585. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/pending/pending_examples.feature +0 -0
  586. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/runner/specify_line_number.feature +0 -0
  587. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/spec_helper/spec_helper.feature +0 -0
  588. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/step_definitions/running_rspec_steps.rb +0 -0
  589. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/subject/explicit_subject.feature +0 -0
  590. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/subject/implicit_subject.feature +0 -0
  591. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/support/env.rb +0 -0
  592. data/{vendor/rspec → gems/gems/rspec-1.2.9}/features/support/matchers/smart_match.rb +0 -0
  593. data/{vendor/rspec → gems/gems/rspec-1.2.9}/init.rb +0 -0
  594. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/autotest/discover.rb +0 -0
  595. data/gems/gems/rspec-1.2.9/lib/autotest/rspec.rb +47 -0
  596. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/adapters/mock_frameworks/flexmock.rb +0 -0
  597. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/adapters/mock_frameworks/mocha.rb +0 -0
  598. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/adapters/mock_frameworks/rr.rb +0 -0
  599. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/adapters/mock_frameworks/rspec.rb +0 -0
  600. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/autorun.rb +0 -0
  601. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/deprecation.rb +0 -0
  602. data/gems/gems/rspec-1.2.9/lib/spec/dsl/main.rb +92 -0
  603. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/dsl.rb +0 -0
  604. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/args_and_options.rb +0 -0
  605. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/before_and_after_hooks.rb +0 -0
  606. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/errors.rb +0 -0
  607. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_group.rb +0 -0
  608. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_group_factory.rb +0 -0
  609. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_group_hierarchy.rb +0 -0
  610. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_group_methods.rb +0 -0
  611. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_group_proxy.rb +0 -0
  612. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_matcher.rb +0 -0
  613. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_methods.rb +0 -0
  614. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/example_proxy.rb +0 -0
  615. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/module_reopening_fix.rb +0 -0
  616. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/pending.rb +0 -0
  617. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/predicate_matchers.rb +0 -0
  618. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/shared_example_group.rb +0 -0
  619. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example/subject.rb +0 -0
  620. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/example.rb +0 -0
  621. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/expectations/errors.rb +0 -0
  622. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/expectations/extensions/kernel.rb +0 -0
  623. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/expectations/extensions.rb +0 -0
  624. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/expectations/fail_with.rb +0 -0
  625. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/expectations/handler.rb +0 -0
  626. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/expectations.rb +0 -0
  627. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/interop/test/unit/autorunner.rb +0 -0
  628. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/interop/test/unit/testcase.rb +0 -0
  629. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/interop/test/unit/testresult.rb +0 -0
  630. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/interop/test/unit/testsuite_adapter.rb +0 -0
  631. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/interop/test/unit/ui/console/testrunner.rb +0 -0
  632. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/interop/test.rb +0 -0
  633. data/gems/gems/rspec-1.2.9/lib/spec/matchers/be.rb +210 -0
  634. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/be_close.rb +0 -0
  635. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/be_instance_of.rb +0 -0
  636. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/be_kind_of.rb +0 -0
  637. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/change.rb +0 -0
  638. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/compatibility.rb +0 -0
  639. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/dsl.rb +0 -0
  640. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/eql.rb +0 -0
  641. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/equal.rb +0 -0
  642. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/errors.rb +0 -0
  643. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/exist.rb +0 -0
  644. data/{vendor/rspec/lib/spec → gems/gems/rspec-1.2.9/lib/spec/matchers}/extensions/instance_exec.rb +0 -0
  645. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/generated_descriptions.rb +0 -0
  646. data/gems/gems/rspec-1.2.9/lib/spec/matchers/has.rb +35 -0
  647. data/gems/gems/rspec-1.2.9/lib/spec/matchers/have.rb +151 -0
  648. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/include.rb +0 -0
  649. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/match.rb +0 -0
  650. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/match_array.rb +0 -0
  651. data/gems/gems/rspec-1.2.9/lib/spec/matchers/matcher.rb +87 -0
  652. data/gems/gems/rspec-1.2.9/lib/spec/matchers/method_missing.rb +9 -0
  653. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/operator_matcher.rb +0 -0
  654. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/pretty.rb +0 -0
  655. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/raise_error.rb +0 -0
  656. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/respond_to.rb +0 -0
  657. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/satisfy.rb +0 -0
  658. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/simple_matcher.rb +0 -0
  659. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/throw_symbol.rb +0 -0
  660. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/matchers/wrap_expectation.rb +0 -0
  661. data/gems/gems/rspec-1.2.9/lib/spec/matchers.rb +195 -0
  662. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/argument_expectation.rb +0 -0
  663. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/argument_matchers.rb +0 -0
  664. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/error_generator.rb +0 -0
  665. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/errors.rb +0 -0
  666. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/example_methods.rb +0 -0
  667. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/extensions/object.rb +0 -0
  668. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/extensions.rb +0 -0
  669. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/framework.rb +0 -0
  670. data/gems/gems/rspec-1.2.9/lib/spec/mocks/message_expectation.rb +329 -0
  671. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/methods.rb +0 -0
  672. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/mock.rb +0 -0
  673. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/order_group.rb +0 -0
  674. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/proxy.rb +0 -0
  675. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks/space.rb +0 -0
  676. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/mocks.rb +0 -0
  677. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/rake/spectask.rb +0 -0
  678. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/rake/verify_rcov.rb +0 -0
  679. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/ruby.rb +0 -0
  680. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/backtrace_tweaker.rb +0 -0
  681. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/class_and_arguments_parser.rb +0 -0
  682. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/command_line.rb +0 -0
  683. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/configuration.rb +0 -0
  684. data/gems/gems/rspec-1.2.9/lib/spec/runner/differs/default.rb +93 -0
  685. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/differs/load-diff-lcs.rb +0 -0
  686. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/drb_command_line.rb +0 -0
  687. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/example_group_runner.rb +0 -0
  688. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/extensions/kernel.rb +0 -0
  689. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/base_formatter.rb +0 -0
  690. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/base_text_formatter.rb +0 -0
  691. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/failing_example_groups_formatter.rb +0 -0
  692. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/failing_examples_formatter.rb +0 -0
  693. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/html_formatter.rb +0 -0
  694. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/nested_text_formatter.rb +0 -0
  695. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/no_op_method_missing.rb +0 -0
  696. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/profile_formatter.rb +0 -0
  697. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/progress_bar_formatter.rb +0 -0
  698. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/silent_formatter.rb +0 -0
  699. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/snippet_extractor.rb +0 -0
  700. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/specdoc_formatter.rb +0 -0
  701. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/formatter/text_mate_formatter.rb +0 -0
  702. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/heckle_runner.rb +0 -0
  703. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/heckle_runner_unsupported.rb +0 -0
  704. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/line_number_query.rb +0 -0
  705. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/option_parser.rb +0 -0
  706. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/options.rb +0 -0
  707. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner/reporter.rb +0 -0
  708. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/runner.rb +0 -0
  709. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/stubs/cucumber.rb +0 -0
  710. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/test/unit.rb +0 -0
  711. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec/version.rb +0 -0
  712. data/{vendor/rspec → gems/gems/rspec-1.2.9}/lib/spec.rb +0 -0
  713. data/{vendor/rspec → gems/gems/rspec-1.2.9}/resources/helpers/cmdline.rb +0 -0
  714. data/{vendor/rspec → gems/gems/rspec-1.2.9}/resources/rake/examples.rake +0 -0
  715. data/{vendor/rspec → gems/gems/rspec-1.2.9}/resources/rake/examples_with_rcov.rake +0 -0
  716. data/{vendor/rspec → gems/gems/rspec-1.2.9}/resources/rake/failing_examples_with_html.rake +0 -0
  717. data/{vendor/rspec → gems/gems/rspec-1.2.9}/resources/rake/verify_rcov.rake +0 -0
  718. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/README.jruby +0 -0
  719. data/gems/gems/rspec-1.2.9/spec/autotest/autotest_helper.rb +8 -0
  720. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/autotest/autotest_matchers.rb +0 -0
  721. data/gems/gems/rspec-1.2.9/spec/autotest/discover_spec.rb +8 -0
  722. data/gems/gems/rspec-1.2.9/spec/autotest/failed_results_re_spec.rb +31 -0
  723. data/gems/gems/rspec-1.2.9/spec/autotest/rspec_spec.rb +111 -0
  724. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/ruby_forker.rb +0 -0
  725. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/dsl/main_spec.rb +0 -0
  726. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/example_group_class_definition_spec.rb +0 -0
  727. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/example_group_factory_spec.rb +0 -0
  728. data/gems/gems/rspec-1.2.9/spec/spec/example/example_group_methods_spec.rb +758 -0
  729. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/example_group_proxy_spec.rb +0 -0
  730. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/example_group_spec.rb +0 -0
  731. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/example_matcher_spec.rb +0 -0
  732. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/example_methods_spec.rb +0 -0
  733. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/example_proxy_spec.rb +0 -0
  734. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/helper_method_spec.rb +0 -0
  735. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/nested_example_group_spec.rb +0 -0
  736. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/pending_module_spec.rb +0 -0
  737. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/predicate_matcher_spec.rb +0 -0
  738. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/shared_example_group_spec.rb +0 -0
  739. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/subclassing_example_group_spec.rb +0 -0
  740. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/example/subject_spec.rb +0 -0
  741. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/expectations/differs/default_spec.rb +0 -0
  742. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/expectations/extensions/kernel_spec.rb +0 -0
  743. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/expectations/fail_with_spec.rb +0 -0
  744. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/expectations/handler_spec.rb +0 -0
  745. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/expectations/wrap_expectation_spec.rb +0 -0
  746. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/spec_that_fails.rb +0 -0
  747. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/spec_that_passes.rb +0 -0
  748. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/spec_with_errors.rb +0 -0
  749. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/spec_with_options_hash.rb +0 -0
  750. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/test_case_that_fails.rb +0 -0
  751. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/test_case_that_passes.rb +0 -0
  752. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/test_case_with_errors.rb +0 -0
  753. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/test_case_with_various_names.rb +0 -0
  754. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/resources/testsuite_adapter_spec_with_test_unit.rb +0 -0
  755. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/spec_spec.rb +0 -0
  756. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/test_unit_spec_helper.rb +0 -0
  757. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/testcase_spec.rb +0 -0
  758. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/interop/test/unit/testsuite_adapter_spec.rb +0 -0
  759. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/be_close_spec.rb +0 -0
  760. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/be_instance_of_spec.rb +0 -0
  761. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/be_kind_of_spec.rb +0 -0
  762. data/gems/gems/rspec-1.2.9/spec/spec/matchers/be_spec.rb +311 -0
  763. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/change_spec.rb +0 -0
  764. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/compatibility_spec.rb +0 -0
  765. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/description_generation_spec.rb +0 -0
  766. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/dsl_spec.rb +0 -0
  767. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/eql_spec.rb +0 -0
  768. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/equal_spec.rb +0 -0
  769. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/exist_spec.rb +0 -0
  770. data/gems/gems/rspec-1.2.9/spec/spec/matchers/has_spec.rb +81 -0
  771. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/have_spec.rb +0 -0
  772. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/include_spec.rb +0 -0
  773. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/match_array_spec.rb +0 -0
  774. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/match_spec.rb +0 -0
  775. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/matcher_methods_spec.rb +0 -0
  776. data/gems/gems/rspec-1.2.9/spec/spec/matchers/matcher_spec.rb +228 -0
  777. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/matchers_spec.rb +0 -0
  778. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/operator_matcher_spec.rb +0 -0
  779. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/raise_error_spec.rb +0 -0
  780. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/respond_to_spec.rb +0 -0
  781. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/satisfy_spec.rb +0 -0
  782. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/simple_matcher_spec.rb +0 -0
  783. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/matchers/throw_symbol_spec.rb +0 -0
  784. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/any_number_of_times_spec.rb +0 -0
  785. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/argument_expectation_spec.rb +0 -0
  786. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/argument_matchers_spec.rb +0 -0
  787. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/at_least_spec.rb +0 -0
  788. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/at_most_spec.rb +0 -0
  789. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_10260_spec.rb +0 -0
  790. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_10263_spec.rb +0 -0
  791. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_11545_spec.rb +0 -0
  792. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_15719_spec.rb +0 -0
  793. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_496_spec.rb +0 -0
  794. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_600_spec.rb +0 -0
  795. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_7611_spec.rb +0 -0
  796. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_7805_spec.rb +0 -0
  797. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_8165_spec.rb +0 -0
  798. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_8302_spec.rb +0 -0
  799. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/bug_report_830_spec.rb +0 -0
  800. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/double_spec.rb +0 -0
  801. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/failing_argument_matchers_spec.rb +0 -0
  802. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/hash_including_matcher_spec.rb +0 -0
  803. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/hash_not_including_matcher_spec.rb +0 -0
  804. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/mock_ordering_spec.rb +0 -0
  805. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/mock_space_spec.rb +0 -0
  806. data/gems/gems/rspec-1.2.9/spec/spec/mocks/mock_spec.rb +594 -0
  807. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/multiple_return_value_spec.rb +0 -0
  808. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/nil_expectation_warning_spec.rb +0 -0
  809. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/null_object_mock_spec.rb +0 -0
  810. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/once_counts_spec.rb +0 -0
  811. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/options_hash_spec.rb +0 -0
  812. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/partial_mock_spec.rb +0 -0
  813. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/partial_mock_using_mocks_directly_spec.rb +0 -0
  814. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/passing_argument_matchers_spec.rb +0 -0
  815. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/precise_counts_spec.rb +0 -0
  816. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/record_messages_spec.rb +0 -0
  817. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/stub_chain_spec.rb +0 -0
  818. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/stub_implementation_spec.rb +0 -0
  819. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/stub_spec.rb +0 -0
  820. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/stubbed_message_expectations_spec.rb +0 -0
  821. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/twice_counts_spec.rb +0 -0
  822. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/mocks/unstub_spec.rb +0 -0
  823. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/package/bin_spec_spec.rb +0 -0
  824. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/rake/spectask_spec.rb +0 -0
  825. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/class_and_argument_parser_spec.rb +0 -0
  826. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/command_line_spec.rb +0 -0
  827. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/configuration_spec.rb +0 -0
  828. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/drb_command_line_spec.rb +0 -0
  829. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/empty_file.txt +0 -0
  830. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/example_group_runner_spec.rb +0 -0
  831. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/examples.txt +0 -0
  832. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/failed.txt +0 -0
  833. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/base_formatter_spec.rb +0 -0
  834. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/base_text_formatter_spec.rb +0 -0
  835. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/failing_example_groups_formatter_spec.rb +0 -0
  836. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/failing_examples_formatter_spec.rb +0 -0
  837. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/html_formatted-1.8.6-jruby.html +0 -0
  838. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/html_formatted-1.8.6.html +0 -0
  839. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/html_formatted-1.8.7.html +0 -0
  840. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/html_formatted-1.9.1.html +0 -0
  841. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/html_formatter_spec.rb +0 -0
  842. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/nested_text_formatter_spec.rb +0 -0
  843. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/profile_formatter_spec.rb +0 -0
  844. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/progress_bar_formatter_spec.rb +0 -0
  845. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/snippet_extractor_spec.rb +0 -0
  846. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/specdoc_formatter_spec.rb +0 -0
  847. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/text_mate_formatted-1.8.6-jruby.html +0 -0
  848. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/text_mate_formatted-1.8.6.html +0 -0
  849. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/text_mate_formatted-1.8.7.html +0 -0
  850. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/text_mate_formatted-1.9.1.html +0 -0
  851. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/formatter/text_mate_formatter_spec.rb +0 -0
  852. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/heckle_runner_spec.rb +0 -0
  853. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/heckler_spec.rb +0 -0
  854. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/line_number_query/line_number_query_fixture.rb +0 -0
  855. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/line_number_query_spec.rb +0 -0
  856. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/noisy_backtrace_tweaker_spec.rb +0 -0
  857. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/option_parser_spec.rb +0 -0
  858. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/options_spec.rb +0 -0
  859. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/output_one_time_fixture.rb +0 -0
  860. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/output_one_time_fixture_runner.rb +0 -0
  861. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/output_one_time_spec.rb +0 -0
  862. data/gems/gems/rspec-1.2.9/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +105 -0
  863. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/reporter_spec.rb +0 -0
  864. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/resources/a_bar.rb +0 -0
  865. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/resources/a_foo.rb +0 -0
  866. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/resources/a_spec.rb +0 -0
  867. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/resources/custom_example_group_runner.rb +0 -0
  868. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/resources/utf8_encoded.rb +0 -0
  869. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/spec.opts +0 -0
  870. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/spec_drb.opts +0 -0
  871. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner/spec_spaced.opts +0 -0
  872. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec/runner_spec.rb +0 -0
  873. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec.opts +0 -0
  874. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/spec_helper.rb +0 -0
  875. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/support/macros.rb +0 -0
  876. data/{vendor/rspec → gems/gems/rspec-1.2.9}/spec/support/spec_classes.rb +0 -0
  877. data/gems/specifications/abstract-1.0.0.gemspec +29 -0
  878. data/gems/specifications/erubis-2.6.5.gemspec +34 -0
  879. data/gems/specifications/haml-2.2.16.gemspec +45 -0
  880. data/gems/specifications/rspec-1.2.9.gemspec +58 -0
  881. data/lib/simple-templater/builder.rb +7 -7
  882. data/lib/simple-templater/core_exts.rb +99 -0
  883. data/lib/simple-templater/generator.rb +5 -5
  884. data/lib/simple-templater/generator_set.rb +1 -1
  885. data/lib/simple-templater/helpers.rb +3 -4
  886. data/lib/simple-templater/hooks/hook.rb +8 -8
  887. data/lib/simple-templater/version.rb +1 -1
  888. data/lib/simple-templater.rb +2 -2
  889. data/script/autospec +3 -0
  890. data/script/css2sass +3 -0
  891. data/script/erubis +3 -0
  892. data/script/haml +3 -0
  893. data/script/html2haml +3 -0
  894. data/script/sass +3 -0
  895. data/script/spec +2 -10
  896. data/simple-templater.gemspec +0 -9
  897. data/spec/simple-templater/helpers_spec.rb +2 -2
  898. data/spec/simple-templater_spec.rb +0 -8
  899. data/stubs/project/content/%name%.gemspec.rbt +1 -1
  900. data/tasks/gem.rake +1 -1
  901. data/tasks/spec.rake +3 -3
  902. metadata +886 -803
  903. data/vendor/abstract/doc/classes/Kernel.html +0 -134
  904. data/vendor/abstract/doc/classes/Kernel.src/M000002.html +0 -24
  905. data/vendor/abstract/doc/classes/Module.html +0 -140
  906. data/vendor/abstract/doc/classes/Module.src/M000001.html +0 -20
  907. data/vendor/abstract/doc/created.rid +0 -1
  908. data/vendor/abstract/doc/files/README_txt.html +0 -173
  909. data/vendor/abstract/doc/files/lib/abstract_rb.html +0 -137
  910. data/vendor/abstract/doc/fr_class_index.html +0 -28
  911. data/vendor/abstract/doc/fr_file_index.html +0 -28
  912. data/vendor/abstract/doc/fr_method_index.html +0 -28
  913. data/vendor/abstract/doc/index.html +0 -24
  914. data/vendor/cli/CHANGELOG +0 -2
  915. data/vendor/cli/LICENSE +0 -20
  916. data/vendor/cli/README.textile +0 -0
  917. data/vendor/cli/Rakefile +0 -62
  918. data/vendor/cli/TODO.txt +0 -0
  919. data/vendor/cli/cli.gemspec +0 -42
  920. data/vendor/cli/deps.rip +0 -5
  921. data/vendor/cli/lib/cli.rb +0 -33
  922. data/vendor/cli/script/spec +0 -12
  923. data/vendor/cli/spec/cli_spec.rb +0 -56
  924. data/vendor/cli/spec/spec.opts +0 -5
  925. data/vendor/cli/spec/spec_helper.rb +0 -18
  926. data/vendor/erubis/CHANGES.txt +0 -717
  927. data/vendor/erubis/MIT-LICENSE +0 -20
  928. data/vendor/erubis/README.txt +0 -102
  929. data/vendor/erubis/benchmark/bench.rb +0 -314
  930. data/vendor/erubis/bin/erubis +0 -11
  931. data/vendor/erubis/contrib/erubis +0 -11
  932. data/vendor/erubis/contrib/inline-require +0 -153
  933. data/vendor/erubis/doc/users-guide.html +0 -3285
  934. data/vendor/erubis/doc-api/classes/ActionView/TemplateHandlers/ErubisHandler.html +0 -181
  935. data/vendor/erubis/doc-api/classes/Erubis/ArrayBufferEnhancer.html +0 -175
  936. data/vendor/erubis/doc-api/classes/Erubis/ArrayEnhancer.html +0 -174
  937. data/vendor/erubis/doc-api/classes/Erubis/Basic/Converter.html +0 -327
  938. data/vendor/erubis/doc-api/classes/Erubis/BiPatternEnhancer.html +0 -215
  939. data/vendor/erubis/doc-api/classes/Erubis/CGenerator.html +0 -386
  940. data/vendor/erubis/doc-api/classes/Erubis/Context.html +0 -344
  941. data/vendor/erubis/doc-api/classes/Erubis/Converter.html +0 -283
  942. data/vendor/erubis/doc-api/classes/Erubis/DeleteIndentEnhancer.html +0 -150
  943. data/vendor/erubis/doc-api/classes/Erubis/Engine.html +0 -305
  944. data/vendor/erubis/doc-api/classes/Erubis/ErboutEnhancer.html +0 -175
  945. data/vendor/erubis/doc-api/classes/Erubis/EscapeEnhancer.html +0 -165
  946. data/vendor/erubis/doc-api/classes/Erubis/Evaluator.html +0 -212
  947. data/vendor/erubis/doc-api/classes/Erubis/Generator.html +0 -416
  948. data/vendor/erubis/doc-api/classes/Erubis/HeaderFooterEnhancer.html +0 -267
  949. data/vendor/erubis/doc-api/classes/Erubis/Helpers/RailsFormHelper.html +0 -787
  950. data/vendor/erubis/doc-api/classes/Erubis/Helpers/RailsHelper/TemplateConverter.html +0 -164
  951. data/vendor/erubis/doc-api/classes/Erubis/Helpers/RailsHelper.html +0 -349
  952. data/vendor/erubis/doc-api/classes/Erubis/InterpolationEnhancer.html +0 -306
  953. data/vendor/erubis/doc-api/classes/Erubis/JavaGenerator.html +0 -359
  954. data/vendor/erubis/doc-api/classes/Erubis/JavascriptGenerator.html +0 -386
  955. data/vendor/erubis/doc-api/classes/Erubis/Main.html +0 -340
  956. data/vendor/erubis/doc-api/classes/Erubis/NoCodeEnhancer.html +0 -249
  957. data/vendor/erubis/doc-api/classes/Erubis/NoTextEnhancer.html +0 -159
  958. data/vendor/erubis/doc-api/classes/Erubis/OptimizedEruby.html +0 -163
  959. data/vendor/erubis/doc-api/classes/Erubis/OptimizedGenerator.html +0 -439
  960. data/vendor/erubis/doc-api/classes/Erubis/OptimizedXmlEruby.html +0 -163
  961. data/vendor/erubis/doc-api/classes/Erubis/PI/Converter.html +0 -266
  962. data/vendor/erubis/doc-api/classes/Erubis/PI/Ec.html +0 -166
  963. data/vendor/erubis/doc-api/classes/Erubis/PI/Ejava.html +0 -166
  964. data/vendor/erubis/doc-api/classes/Erubis/PI/Ejavascript.html +0 -166
  965. data/vendor/erubis/doc-api/classes/Erubis/PI/Eperl.html +0 -166
  966. data/vendor/erubis/doc-api/classes/Erubis/PI/Ephp.html +0 -166
  967. data/vendor/erubis/doc-api/classes/Erubis/PI/Eruby.html +0 -155
  968. data/vendor/erubis/doc-api/classes/Erubis/PI/Escheme.html +0 -166
  969. data/vendor/erubis/doc-api/classes/Erubis/PI/TinyEruby.html +0 -293
  970. data/vendor/erubis/doc-api/classes/Erubis/PercentLineEnhancer.html +0 -179
  971. data/vendor/erubis/doc-api/classes/Erubis/PerlGenerator.html +0 -344
  972. data/vendor/erubis/doc-api/classes/Erubis/PhpGenerator.html +0 -350
  973. data/vendor/erubis/doc-api/classes/Erubis/PreprocessingEruby.html +0 -183
  974. data/vendor/erubis/doc-api/classes/Erubis/PreprocessingHelper.html +0 -212
  975. data/vendor/erubis/doc-api/classes/Erubis/PrintEnabledEnhancer.html +0 -212
  976. data/vendor/erubis/doc-api/classes/Erubis/PrintOutEnhancer.html +0 -244
  977. data/vendor/erubis/doc-api/classes/Erubis/RubyEvaluator.html +0 -227
  978. data/vendor/erubis/doc-api/classes/Erubis/RubyGenerator.html +0 -327
  979. data/vendor/erubis/doc-api/classes/Erubis/SchemeGenerator.html +0 -382
  980. data/vendor/erubis/doc-api/classes/Erubis/SimplifyEnhancer.html +0 -191
  981. data/vendor/erubis/doc-api/classes/Erubis/StdoutEnhancer.html +0 -173
  982. data/vendor/erubis/doc-api/classes/Erubis/StringBufferEnhancer.html +0 -174
  983. data/vendor/erubis/doc-api/classes/Erubis/TinyEruby.html +0 -299
  984. data/vendor/erubis/doc-api/classes/Erubis/XmlHelper.html +0 -255
  985. data/vendor/erubis/doc-api/classes/Erubis.html +0 -353
  986. data/vendor/erubis/doc-api/created.rid +0 -1
  987. data/vendor/erubis/doc-api/files/README_txt.html +0 -247
  988. data/vendor/erubis/doc-api/files/erubis/context_rb.html +0 -107
  989. data/vendor/erubis/doc-api/files/erubis/converter_rb.html +0 -114
  990. data/vendor/erubis/doc-api/files/erubis/engine/ec_rb.html +0 -115
  991. data/vendor/erubis/doc-api/files/erubis/engine/ejava_rb.html +0 -115
  992. data/vendor/erubis/doc-api/files/erubis/engine/ejavascript_rb.html +0 -115
  993. data/vendor/erubis/doc-api/files/erubis/engine/enhanced_rb.html +0 -115
  994. data/vendor/erubis/doc-api/files/erubis/engine/eperl_rb.html +0 -115
  995. data/vendor/erubis/doc-api/files/erubis/engine/ephp_rb.html +0 -115
  996. data/vendor/erubis/doc-api/files/erubis/engine/eruby_rb.html +0 -115
  997. data/vendor/erubis/doc-api/files/erubis/engine/escheme_rb.html +0 -115
  998. data/vendor/erubis/doc-api/files/erubis/engine/optimized_rb.html +0 -114
  999. data/vendor/erubis/doc-api/files/erubis/engine_rb.html +0 -117
  1000. data/vendor/erubis/doc-api/files/erubis/enhancer_rb.html +0 -107
  1001. data/vendor/erubis/doc-api/files/erubis/error_rb.html +0 -107
  1002. data/vendor/erubis/doc-api/files/erubis/evaluator_rb.html +0 -115
  1003. data/vendor/erubis/doc-api/files/erubis/generator_rb.html +0 -114
  1004. data/vendor/erubis/doc-api/files/erubis/helper_rb.html +0 -107
  1005. data/vendor/erubis/doc-api/files/erubis/helpers/rails_form_helper_rb.html +0 -107
  1006. data/vendor/erubis/doc-api/files/erubis/helpers/rails_helper_rb.html +0 -116
  1007. data/vendor/erubis/doc-api/files/erubis/local-setting_rb.html +0 -107
  1008. data/vendor/erubis/doc-api/files/erubis/main_rb.html +0 -127
  1009. data/vendor/erubis/doc-api/files/erubis/preprocessing_rb.html +0 -114
  1010. data/vendor/erubis/doc-api/files/erubis/tiny_rb.html +0 -107
  1011. data/vendor/erubis/doc-api/files/erubis_rb.html +0 -118
  1012. data/vendor/erubis/doc-api/fr_method_index.html +0 -248
  1013. data/vendor/erubis/doc-api/rdoc-style.css +0 -208
  1014. data/vendor/erubis/erubis.gemspec +0 -66
  1015. data/vendor/erubis/lib/erubis/context.rb +0 -84
  1016. data/vendor/erubis/lib/erubis/converter.rb +0 -358
  1017. data/vendor/erubis/lib/erubis/engine/ec.rb +0 -118
  1018. data/vendor/erubis/lib/erubis/engine/ejava.rb +0 -111
  1019. data/vendor/erubis/lib/erubis/engine/ejavascript.rb +0 -120
  1020. data/vendor/erubis/lib/erubis/engine/enhanced.rb +0 -122
  1021. data/vendor/erubis/lib/erubis/engine/eperl.rb +0 -96
  1022. data/vendor/erubis/lib/erubis/engine/ephp.rb +0 -100
  1023. data/vendor/erubis/lib/erubis/engine/eruby.rb +0 -125
  1024. data/vendor/erubis/lib/erubis/engine/escheme.rb +0 -115
  1025. data/vendor/erubis/lib/erubis/engine/optimized.rb +0 -128
  1026. data/vendor/erubis/lib/erubis/engine.rb +0 -121
  1027. data/vendor/erubis/lib/erubis/enhancer.rb +0 -681
  1028. data/vendor/erubis/lib/erubis/error.rb +0 -24
  1029. data/vendor/erubis/lib/erubis/evaluator.rb +0 -89
  1030. data/vendor/erubis/lib/erubis/generator.rb +0 -86
  1031. data/vendor/erubis/lib/erubis/helper.rb +0 -48
  1032. data/vendor/erubis/lib/erubis/helpers/rails_form_helper.rb +0 -198
  1033. data/vendor/erubis/lib/erubis/helpers/rails_helper.rb +0 -325
  1034. data/vendor/erubis/lib/erubis/local-setting.rb +0 -10
  1035. data/vendor/erubis/lib/erubis/main.rb +0 -491
  1036. data/vendor/erubis/lib/erubis/preprocessing.rb +0 -59
  1037. data/vendor/erubis/lib/erubis/tiny.rb +0 -146
  1038. data/vendor/erubis/lib/erubis.rb +0 -73
  1039. data/vendor/erubis/test/assert-text-equal.rb +0 -45
  1040. data/vendor/erubis/test/assert-text-equal.rbc +0 -0
  1041. data/vendor/erubis/test/hoge.rb +0 -5
  1042. data/vendor/erubis/test/test-engines.rb +0 -370
  1043. data/vendor/erubis/test/test-engines.rbc +0 -0
  1044. data/vendor/erubis/test/test-enhancers.rb +0 -571
  1045. data/vendor/erubis/test/test-erubis.rb +0 -884
  1046. data/vendor/erubis/test/test-erubis.rbc +0 -0
  1047. data/vendor/erubis/test/test-main.rb +0 -674
  1048. data/vendor/erubis/test/test-users-guide.rb +0 -58
  1049. data/vendor/erubis/test/test-users-guide.rbc +0 -0
  1050. data/vendor/erubis/test/test.rb +0 -30
  1051. data/vendor/erubis/test/test.rbc +0 -0
  1052. data/vendor/erubis/test/testutil.rb +0 -101
  1053. data/vendor/erubis/test/testutil.rbc +0 -0
  1054. data/vendor/fakefs/CONTRIBUTORS +0 -17
  1055. data/vendor/fakefs/LICENSE +0 -20
  1056. data/vendor/fakefs/README.markdown +0 -101
  1057. data/vendor/fakefs/Rakefile +0 -47
  1058. data/vendor/fakefs/lib/fakefs/base.rb +0 -38
  1059. data/vendor/fakefs/lib/fakefs/dir.rb +0 -114
  1060. data/vendor/fakefs/lib/fakefs/fake/dir.rb +0 -45
  1061. data/vendor/fakefs/lib/fakefs/fake/file.rb +0 -79
  1062. data/vendor/fakefs/lib/fakefs/fake/symlink.rb +0 -32
  1063. data/vendor/fakefs/lib/fakefs/file.rb +0 -330
  1064. data/vendor/fakefs/lib/fakefs/file_system.rb +0 -136
  1065. data/vendor/fakefs/lib/fakefs/fileutils.rb +0 -129
  1066. data/vendor/fakefs/lib/fakefs/safe.rb +0 -11
  1067. data/vendor/fakefs/lib/fakefs/spec_helpers.rb +0 -46
  1068. data/vendor/fakefs/lib/fakefs/version.rb +0 -9
  1069. data/vendor/fakefs/lib/fakefs.rb +0 -3
  1070. data/vendor/fakefs/spec/fakefs/spec_helpers_spec.rb +0 -57
  1071. data/vendor/fakefs/spec/spec.opts +0 -1
  1072. data/vendor/fakefs/spec/spec_helper.rb +0 -3
  1073. data/vendor/fakefs/test/fake/file_test.rb +0 -88
  1074. data/vendor/fakefs/test/fake/symlink_test.rb +0 -12
  1075. data/vendor/fakefs/test/fakefs_test.rb +0 -1334
  1076. data/vendor/fakefs/test/file/stat_test.rb +0 -70
  1077. data/vendor/fakefs/test/safe_test.rb +0 -42
  1078. data/vendor/fakefs/test/verify.rb +0 -27
  1079. data/vendor/rspec/History.rdoc +0 -1510
  1080. data/vendor/rspec/Manifest.txt +0 -383
  1081. data/vendor/rspec/features/matchers/match_unless_raises.feature +0 -60
  1082. data/vendor/rspec/features/matchers/match_unless_raises_unexpected_error.feature +0 -39
  1083. data/vendor/rspec/features/mocks/block_local_expectations.feature +0 -62
  1084. data/vendor/rspec/features-pending/cli/conditional_exclusion.feature +0 -39
  1085. data/vendor/rspec/features-pending/heckle/heckle.feature +0 -56
  1086. data/vendor/rspec/geminstaller.yml +0 -28
  1087. data/vendor/rspec/lib/autotest/rspec.rb +0 -54
  1088. data/vendor/rspec/lib/spec/dsl/main.rb +0 -92
  1089. data/vendor/rspec/lib/spec/matchers/be.rb +0 -211
  1090. data/vendor/rspec/lib/spec/matchers/has.rb +0 -35
  1091. data/vendor/rspec/lib/spec/matchers/have.rb +0 -152
  1092. data/vendor/rspec/lib/spec/matchers/matcher.rb +0 -102
  1093. data/vendor/rspec/lib/spec/matchers/method_missing.rb +0 -9
  1094. data/vendor/rspec/lib/spec/matchers.rb +0 -195
  1095. data/vendor/rspec/lib/spec/mocks/message_expectation.rb +0 -343
  1096. data/vendor/rspec/lib/spec/runner/differs/default.rb +0 -93
  1097. data/vendor/rspec/spec/autotest/autotest_helper.rb +0 -8
  1098. data/vendor/rspec/spec/autotest/discover_spec.rb +0 -8
  1099. data/vendor/rspec/spec/autotest/failed_results_re_spec.rb +0 -31
  1100. data/vendor/rspec/spec/autotest/rspec_spec.rb +0 -126
  1101. data/vendor/rspec/spec/spec/example/example_group_methods_spec.rb +0 -759
  1102. data/vendor/rspec/spec/spec/matchers/be_spec.rb +0 -419
  1103. data/vendor/rspec/spec/spec/matchers/has_spec.rb +0 -190
  1104. data/vendor/rspec/spec/spec/matchers/matcher_spec.rb +0 -273
  1105. data/vendor/rspec/spec/spec/mocks/and_yield_spec.rb +0 -117
  1106. data/vendor/rspec/spec/spec/mocks/mock_spec.rb +0 -594
  1107. data/vendor/rspec/spec/spec/runner/quiet_backtrace_tweaker_spec.rb +0 -123
  1108. data/vendor/rubyexts/CHANGELOG +0 -2
  1109. data/vendor/rubyexts/LICENSE +0 -20
  1110. data/vendor/rubyexts/README.textile +0 -0
  1111. data/vendor/rubyexts/Rakefile +0 -62
  1112. data/vendor/rubyexts/TODO.txt +0 -6
  1113. data/vendor/rubyexts/lib/rubyexts/array.rb +0 -20
  1114. data/vendor/rubyexts/lib/rubyexts/attribute.rb +0 -150
  1115. data/vendor/rubyexts/lib/rubyexts/capture_io.rb +0 -32
  1116. data/vendor/rubyexts/lib/rubyexts/class.rb +0 -177
  1117. data/vendor/rubyexts/lib/rubyexts/colored_string.rb +0 -103
  1118. data/vendor/rubyexts/lib/rubyexts/enumerable.rb +0 -30
  1119. data/vendor/rubyexts/lib/rubyexts/file.rb +0 -84
  1120. data/vendor/rubyexts/lib/rubyexts/hash.rb +0 -147
  1121. data/vendor/rubyexts/lib/rubyexts/kernel.rb +0 -91
  1122. data/vendor/rubyexts/lib/rubyexts/module.rb +0 -53
  1123. data/vendor/rubyexts/lib/rubyexts/object.rb +0 -56
  1124. data/vendor/rubyexts/lib/rubyexts/object_space.rb +0 -16
  1125. data/vendor/rubyexts/lib/rubyexts/os.rb +0 -89
  1126. data/vendor/rubyexts/lib/rubyexts/platform.rb +0 -27
  1127. data/vendor/rubyexts/lib/rubyexts/random.rb +0 -25
  1128. data/vendor/rubyexts/lib/rubyexts/string.rb +0 -92
  1129. data/vendor/rubyexts/lib/rubyexts/time.rb +0 -15
  1130. data/vendor/rubyexts/lib/rubyexts/time_dsl.rb +0 -62
  1131. data/vendor/rubyexts/lib/rubyexts/unique_array.rb +0 -16
  1132. data/vendor/rubyexts/lib/rubyexts.rb +0 -102
  1133. data/vendor/rubyexts/rubyexts.gemspec +0 -36
  1134. data/vendor/rubyexts/script/spec +0 -12
  1135. data/vendor/rubyexts/spec/rubyexts/array_spec.rb +0 -19
  1136. data/vendor/rubyexts/spec/rubyexts/attribute_spec.rb +0 -37
  1137. data/vendor/rubyexts/spec/rubyexts/class_spec.rb +0 -1
  1138. data/vendor/rubyexts/spec/rubyexts/cli_spec.rb +0 -0
  1139. data/vendor/rubyexts/spec/rubyexts/colored_string_spec.rb +0 -9
  1140. data/vendor/rubyexts/spec/rubyexts/enumerable_spec.rb +0 -52
  1141. data/vendor/rubyexts/spec/rubyexts/file_spec.rb +0 -78
  1142. data/vendor/rubyexts/spec/rubyexts/hash_spec.rb +0 -91
  1143. data/vendor/rubyexts/spec/rubyexts/kernel_spec.rb +0 -9
  1144. data/vendor/rubyexts/spec/rubyexts/module_spec.rb +0 -0
  1145. data/vendor/rubyexts/spec/rubyexts/object_space_spec.rb +0 -17
  1146. data/vendor/rubyexts/spec/rubyexts/object_spec.rb +0 -57
  1147. data/vendor/rubyexts/spec/rubyexts/os_spec.rb +0 -121
  1148. data/vendor/rubyexts/spec/rubyexts/platform_spec.rb +0 -0
  1149. data/vendor/rubyexts/spec/rubyexts/random_spec.rb +0 -31
  1150. data/vendor/rubyexts/spec/rubyexts/string_spec.rb +0 -23
  1151. data/vendor/rubyexts/spec/rubyexts/time_dsl_spec.rb +0 -88
  1152. data/vendor/rubyexts/spec/rubyexts/time_spec.rb +0 -11
  1153. data/vendor/rubyexts/spec/rubyexts/unique_array_spec.rb +0 -0
  1154. data/vendor/rubyexts/spec/rubyexts_spec.rb +0 -182
  1155. data/vendor/rubyexts/spec/spec.opts +0 -5
  1156. data/vendor/rubyexts/spec/spec_helper.rb +0 -16
@@ -0,0 +1,3330 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ ###
4
+ ### $Release: 2.6.5 $
5
+ ### copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
6
+ ###
7
+
8
+ #--begin of require 'erubis/main'
9
+ ###
10
+ ### $Release: 2.6.5 $
11
+ ### copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
12
+ ###
13
+
14
+ require 'yaml'
15
+ #--begin of require 'erubis'
16
+ ##
17
+ ## $Release: 2.6.5 $
18
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
19
+ ##
20
+
21
+ ##
22
+ ## an implementation of eRuby
23
+ ##
24
+ ## ex.
25
+ ## input = <<'END'
26
+ ## <ul>
27
+ ## <% for item in @list %>
28
+ ## <li><%= item %>
29
+ ## <%== item %></li>
30
+ ## <% end %>
31
+ ## </ul>
32
+ ## END
33
+ ## list = ['<aaa>', 'b&b', '"ccc"']
34
+ ## eruby = Erubis::Eruby.new(input)
35
+ ## puts "--- code ---"
36
+ ## puts eruby.src
37
+ ## puts "--- result ---"
38
+ ## context = Erubis::Context.new() # or new(:list=>list)
39
+ ## context[:list] = list
40
+ ## puts eruby.evaluate(context)
41
+ ##
42
+ ## result:
43
+ ## --- source ---
44
+ ## _buf = ''; _buf << '<ul>
45
+ ## '; for item in @list
46
+ ## _buf << ' <li>'; _buf << ( item ).to_s; _buf << '
47
+ ## '; _buf << ' '; _buf << Erubis::XmlHelper.escape_xml( item ); _buf << '</li>
48
+ ## '; end
49
+ ## _buf << '</ul>
50
+ ## ';
51
+ ## _buf.to_s
52
+ ## --- result ---
53
+ ## <ul>
54
+ ## <li><aaa>
55
+ ## &lt;aaa&gt;</li>
56
+ ## <li>b&b
57
+ ## b&amp;b</li>
58
+ ## <li>"ccc"
59
+ ## &quot;ccc&quot;</li>
60
+ ## </ul>
61
+ ##
62
+
63
+
64
+ module Erubis
65
+ VERSION = ('$Release: 2.6.5 $' =~ /([.\d]+)/) && $1
66
+ end
67
+
68
+ #--begin of require 'erubis/engine'
69
+ ##
70
+ ## $Release: 2.6.5 $
71
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
72
+ ##
73
+
74
+
75
+ #--begin of require 'erubis/generator'
76
+ ##
77
+ ## $Release: 2.6.5 $
78
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
79
+ ##
80
+
81
+ #--begin of require 'abstract'
82
+ ##
83
+ ## $Rev: 1 $
84
+ ## $Release: 0.1.0 $
85
+ ## copyright(c) 2006 kuwata-lab.com all rights reserved.
86
+ ##
87
+ ##
88
+ ## helper to define abstract method in Ruby.
89
+ ##
90
+ ##
91
+ ## example1. (shorter notation)
92
+ ##
93
+ ## require 'abstract'
94
+ ## class Foo
95
+ ## abstract_method 'arg1, arg2=""', :method1, :method2, :method3
96
+ ## end
97
+ ##
98
+ ##
99
+ ## example2. (RDoc friendly notation)
100
+ ##
101
+ ## require 'abstract'
102
+ ## class Bar
103
+ ## # ... method1 description ...
104
+ ## def method1(arg1, arg2="")
105
+ ## not_implemented
106
+ ## end
107
+ ##
108
+ ## # ... method2 description ...
109
+ ## def method2(arg1, arg2="")
110
+ ## not_implemented
111
+ ## end
112
+ ## end
113
+ ##
114
+
115
+
116
+ ##
117
+ class Module
118
+
119
+ ##
120
+ ## define abstract methods
121
+ ##
122
+ def abstract_method args_str, *method_names
123
+ method_names.each do |name|
124
+ module_eval <<-END
125
+ def #{name}(#{args_str})
126
+ mesg = "class \#{self.class.name} must implement abstract method `#{self.name}##{name}()'."
127
+ #mesg = "\#{self.class.name}##{name}() is not implemented."
128
+ err = NotImplementedError.new mesg
129
+ err.set_backtrace caller()
130
+ raise err
131
+ end
132
+ END
133
+ end
134
+ end
135
+
136
+ end
137
+
138
+
139
+ ##
140
+ module Kernel
141
+
142
+ ##
143
+ ## raise NotImplementedError
144
+ ##
145
+ def not_implemented #:doc:
146
+ backtrace = caller()
147
+ method_name = (backtrace.shift =~ /`(\w+)'$/) && $1
148
+ mesg = "class #{self.class.name} must implement abstract method '#{method_name}()'."
149
+ #mesg = "#{self.class.name}##{method_name}() is not implemented."
150
+ err = NotImplementedError.new mesg
151
+ err.set_backtrace backtrace
152
+ raise err
153
+ end
154
+ private :not_implemented
155
+
156
+ end
157
+ #--end of require 'abstract'
158
+
159
+ module Erubis
160
+
161
+
162
+ ##
163
+ ## code generator, called by Converter module
164
+ ##
165
+ module Generator
166
+
167
+ def self.supported_properties() # :nodoc:
168
+ return [
169
+ [:escapefunc, nil, "escape function name"],
170
+ ]
171
+ end
172
+
173
+ attr_accessor :escapefunc
174
+
175
+ def init_generator(properties={})
176
+ @escapefunc = properties[:escapefunc]
177
+ end
178
+
179
+
180
+ ## (abstract) escape text string
181
+ ##
182
+ ## ex.
183
+ ## def escape_text(text)
184
+ ## return text.dump
185
+ ## # or return "'" + text.gsub(/['\\]/, '\\\\\&') + "'"
186
+ ## end
187
+ def escape_text(text)
188
+ not_implemented
189
+ end
190
+
191
+ ## return escaped expression code (ex. 'h(...)' or 'htmlspecialchars(...)')
192
+ def escaped_expr(code)
193
+ code.strip!
194
+ return "#{@escapefunc}(#{code})"
195
+ end
196
+
197
+ ## (abstract) add @preamble to src
198
+ def add_preamble(src)
199
+ not_implemented
200
+ end
201
+
202
+ ## (abstract) add text string to src
203
+ def add_text(src, text)
204
+ not_implemented
205
+ end
206
+
207
+ ## (abstract) add statement code to src
208
+ def add_stmt(src, code)
209
+ not_implemented
210
+ end
211
+
212
+ ## (abstract) add expression literal code to src. this is called by add_expr().
213
+ def add_expr_literal(src, code)
214
+ not_implemented
215
+ end
216
+
217
+ ## (abstract) add escaped expression code to src. this is called by add_expr().
218
+ def add_expr_escaped(src, code)
219
+ not_implemented
220
+ end
221
+
222
+ ## (abstract) add expression code to src for debug. this is called by add_expr().
223
+ def add_expr_debug(src, code)
224
+ not_implemented
225
+ end
226
+
227
+ ## (abstract) add @postamble to src
228
+ def add_postamble(src)
229
+ not_implemented
230
+ end
231
+
232
+
233
+ end
234
+
235
+
236
+ end
237
+ #--end of require 'erubis/generator'
238
+ #--begin of require 'erubis/converter'
239
+ ##
240
+ ## $Release: 2.6.5 $
241
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
242
+ ##
243
+
244
+ #--already included require 'abstract'
245
+
246
+ module Erubis
247
+
248
+
249
+ ##
250
+ ## convert
251
+ ##
252
+ module Converter
253
+
254
+ attr_accessor :preamble, :postamble, :escape
255
+
256
+ def self.supported_properties # :nodoc:
257
+ return [
258
+ [:preamble, nil, "preamble (no preamble when false)"],
259
+ [:postamble, nil, "postamble (no postamble when false)"],
260
+ [:escape, nil, "escape expression or not in default"],
261
+ ]
262
+ end
263
+
264
+ def init_converter(properties={})
265
+ @preamble = properties[:preamble]
266
+ @postamble = properties[:postamble]
267
+ @escape = properties[:escape]
268
+ end
269
+
270
+ ## convert input string into target language
271
+ def convert(input)
272
+ codebuf = "" # or []
273
+ @preamble.nil? ? add_preamble(codebuf) : (@preamble && (codebuf << @preamble))
274
+ convert_input(codebuf, input)
275
+ @postamble.nil? ? add_postamble(codebuf) : (@postamble && (codebuf << @postamble))
276
+ @_proc = nil # clear cached proc object
277
+ return codebuf # or codebuf.join()
278
+ end
279
+
280
+ protected
281
+
282
+ ##
283
+ ## detect spaces at beginning of line
284
+ ##
285
+ def detect_spaces_at_bol(text, is_bol)
286
+ lspace = nil
287
+ if text.empty?
288
+ lspace = "" if is_bol
289
+ elsif text[-1] == ?\n
290
+ lspace = ""
291
+ else
292
+ rindex = text.rindex(?\n)
293
+ if rindex
294
+ s = text[rindex+1..-1]
295
+ if s =~ /\A[ \t]*\z/
296
+ lspace = s
297
+ #text = text[0..rindex]
298
+ text[rindex+1..-1] = ''
299
+ end
300
+ else
301
+ if is_bol && text =~ /\A[ \t]*\z/
302
+ #lspace = text
303
+ #text = nil
304
+ lspace = text.dup
305
+ text[0..-1] = ''
306
+ end
307
+ end
308
+ end
309
+ return lspace
310
+ end
311
+
312
+ ##
313
+ ## (abstract) convert input to code
314
+ ##
315
+ def convert_input(codebuf, input)
316
+ not_implemented
317
+ end
318
+
319
+ end
320
+
321
+
322
+ module Basic
323
+ end
324
+
325
+
326
+ ##
327
+ ## basic converter which supports '<% ... %>' notation.
328
+ ##
329
+ module Basic::Converter
330
+ include Erubis::Converter
331
+
332
+ def self.supported_properties # :nodoc:
333
+ return [
334
+ [:pattern, '<% %>', "embed pattern"],
335
+ [:trim, true, "trim spaces around <% ... %>"],
336
+ ]
337
+ end
338
+
339
+ attr_accessor :pattern, :trim
340
+
341
+ def init_converter(properties={})
342
+ super(properties)
343
+ @pattern = properties[:pattern]
344
+ @trim = properties[:trim] != false
345
+ end
346
+
347
+ protected
348
+
349
+ ## return regexp of pattern to parse eRuby script
350
+ def pattern_regexp(pattern)
351
+ @prefix, @postfix = pattern.split() # '<% %>' => '<%', '%>'
352
+ #return /(.*?)(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
353
+ #return /(^[ \t]*)?#{@prefix}(=+|\#)?(.*?)-?#{@postfix}([ \t]*\r?\n)?/m
354
+ return /#{@prefix}(=+|-|\#|%)?(.*?)([-=])?#{@postfix}([ \t]*\r?\n)?/m
355
+ end
356
+ module_function :pattern_regexp
357
+
358
+ #DEFAULT_REGEXP = /(.*?)(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m
359
+ #DEFAULT_REGEXP = /(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m
360
+ #DEFAULT_REGEXP = /<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m
361
+ DEFAULT_REGEXP = pattern_regexp('<% %>')
362
+
363
+ public
364
+
365
+ def convert_input(src, input)
366
+ pat = @pattern
367
+ regexp = pat.nil? || pat == '<% %>' ? DEFAULT_REGEXP : pattern_regexp(pat)
368
+ pos = 0
369
+ is_bol = true # is beginning of line
370
+ input.scan(regexp) do |indicator, code, tailch, rspace|
371
+ match = Regexp.last_match()
372
+ len = match.begin(0) - pos
373
+ text = input[pos, len]
374
+ pos = match.end(0)
375
+ ch = indicator ? indicator[0] : nil
376
+ lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol)
377
+ is_bol = rspace ? true : false
378
+ add_text(src, text) if text && !text.empty?
379
+ ## * when '<%= %>', do nothing
380
+ ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
381
+ if ch == ?= # <%= %>
382
+ rspace = nil if tailch && !tailch.empty?
383
+ add_text(src, lspace) if lspace
384
+ add_expr(src, code, indicator)
385
+ add_text(src, rspace) if rspace
386
+ elsif ch == ?\# # <%# %>
387
+ n = code.count("\n") + (rspace ? 1 : 0)
388
+ if @trim && lspace && rspace
389
+ add_stmt(src, "\n" * n)
390
+ else
391
+ add_text(src, lspace) if lspace
392
+ add_stmt(src, "\n" * n)
393
+ add_text(src, rspace) if rspace
394
+ end
395
+ elsif ch == ?% # <%% %>
396
+ s = "#{lspace}#{@prefix||='<%'}#{code}#{tailch}#{@postfix||='%>'}#{rspace}"
397
+ add_text(src, s)
398
+ else # <% %>
399
+ if @trim && lspace && rspace
400
+ add_stmt(src, "#{lspace}#{code}#{rspace}")
401
+ else
402
+ add_text(src, lspace) if lspace
403
+ add_stmt(src, code)
404
+ add_text(src, rspace) if rspace
405
+ end
406
+ end
407
+ end
408
+ #rest = $' || input # ruby1.8
409
+ rest = pos == 0 ? input : input[pos..-1] # ruby1.9
410
+ add_text(src, rest)
411
+ end
412
+
413
+ ## add expression code to src
414
+ def add_expr(src, code, indicator)
415
+ case indicator
416
+ when '='
417
+ @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code)
418
+ when '=='
419
+ @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code)
420
+ when '==='
421
+ add_expr_debug(src, code)
422
+ end
423
+ end
424
+
425
+ end
426
+
427
+
428
+ module PI
429
+ end
430
+
431
+ ##
432
+ ## Processing Instructions (PI) converter for XML.
433
+ ## this class converts '<?rb ... ?>' and '${...}' notation.
434
+ ##
435
+ module PI::Converter
436
+ include Erubis::Converter
437
+
438
+ def self.desc # :nodoc:
439
+ "use processing instructions (PI) instead of '<% %>'"
440
+ end
441
+
442
+ def self.supported_properties # :nodoc:
443
+ return [
444
+ [:trim, true, "trim spaces around <% ... %>"],
445
+ [:pi, 'rb', "PI (Processing Instrunctions) name"],
446
+ [:embchar, '@', "char for embedded expression pattern('@{...}@')"],
447
+ [:pattern, '<% %>', "embed pattern"],
448
+ ]
449
+ end
450
+
451
+ attr_accessor :pi, :prefix
452
+
453
+ def init_converter(properties={})
454
+ super(properties)
455
+ @trim = properties.fetch(:trim, true)
456
+ @pi = properties[:pi] if properties[:pi]
457
+ @embchar = properties[:embchar] || '@'
458
+ @pattern = properties[:pattern]
459
+ @pattern = '<% %>' if @pattern.nil? #|| @pattern == true
460
+ end
461
+
462
+ def convert(input)
463
+ code = super(input)
464
+ return @header || @footer ? "#{@header}#{code}#{@footer}" : code
465
+ end
466
+
467
+ protected
468
+
469
+ def convert_input(codebuf, input)
470
+ unless @regexp
471
+ @pi ||= 'e'
472
+ ch = Regexp.escape(@embchar)
473
+ if @pattern
474
+ left, right = @pattern.split(' ')
475
+ @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/m
476
+ else
477
+ @regexp = /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?|#{ch}(!*)?\{(.*?)\}#{ch}/m
478
+ end
479
+ end
480
+ #
481
+ is_bol = true
482
+ pos = 0
483
+ input.scan(@regexp) do |pi_arg, stmt, rspace,
484
+ indicator1, expr1, indicator2, expr2|
485
+ match = Regexp.last_match
486
+ len = match.begin(0) - pos
487
+ text = input[pos, len]
488
+ pos = match.end(0)
489
+ lspace = stmt ? detect_spaces_at_bol(text, is_bol) : nil
490
+ is_bol = stmt && rspace ? true : false
491
+ add_text(codebuf, text) # unless text.empty?
492
+ #
493
+ if stmt
494
+ if @trim && lspace && rspace
495
+ add_pi_stmt(codebuf, "#{lspace}#{stmt}#{rspace}", pi_arg)
496
+ else
497
+ add_text(codebuf, lspace) if lspace
498
+ add_pi_stmt(codebuf, stmt, pi_arg)
499
+ add_text(codebuf, rspace) if rspace
500
+ end
501
+ else
502
+ add_pi_expr(codebuf, expr1 || expr2, indicator1 || indicator2)
503
+ end
504
+ end
505
+ #rest = $' || input # ruby1.8
506
+ rest = pos == 0 ? input : input[pos..-1] # ruby1.9
507
+ add_text(codebuf, rest)
508
+ end
509
+
510
+ #--
511
+ #def convert_input(codebuf, input)
512
+ # parse_stmts(codebuf, input)
513
+ # #parse_stmts2(codebuf, input)
514
+ #end
515
+ #
516
+ #def parse_stmts(codebuf, input)
517
+ # #regexp = pattern_regexp(@pattern)
518
+ # @pi ||= 'e'
519
+ # @stmt_pattern ||= /<\?#{@pi}(?:-(\w+))?(\s.*?)\?>([ \t]*\r?\n)?/m
520
+ # is_bol = true
521
+ # pos = 0
522
+ # input.scan(@stmt_pattern) do |pi_arg, code, rspace|
523
+ # match = Regexp.last_match
524
+ # len = match.begin(0) - pos
525
+ # text = input[pos, len]
526
+ # pos = match.end(0)
527
+ # lspace = detect_spaces_at_bol(text, is_bol)
528
+ # is_bol = rspace ? true : false
529
+ # parse_exprs(codebuf, text) # unless text.empty?
530
+ # if @trim && lspace && rspace
531
+ # add_pi_stmt(codebuf, "#{lspace}#{code}#{rspace}", pi_arg)
532
+ # else
533
+ # add_text(codebuf, lspace)
534
+ # add_pi_stmt(codebuf, code, pi_arg)
535
+ # add_text(codebuf, rspace)
536
+ # end
537
+ # end
538
+ # rest = $' || input
539
+ # parse_exprs(codebuf, rest)
540
+ #end
541
+ #
542
+ #def parse_exprs(codebuf, input)
543
+ # unless @expr_pattern
544
+ # ch = Regexp.escape(@embchar)
545
+ # if @pattern
546
+ # left, right = @pattern.split(' ')
547
+ # @expr_pattern = /#{ch}(!*)?\{(.*?)\}#{ch}|#{left}(=+)(.*?)#{right}/
548
+ # else
549
+ # @expr_pattern = /#{ch}(!*)?\{(.*?)\}#{ch}/
550
+ # end
551
+ # end
552
+ # pos = 0
553
+ # input.scan(@expr_pattern) do |indicator1, code1, indicator2, code2|
554
+ # indicator = indicator1 || indicator2
555
+ # code = code1 || code2
556
+ # match = Regexp.last_match
557
+ # len = match.begin(0) - pos
558
+ # text = input[pos, len]
559
+ # pos = match.end(0)
560
+ # add_text(codebuf, text) # unless text.empty?
561
+ # add_pi_expr(codebuf, code, indicator)
562
+ # end
563
+ # rest = $' || input
564
+ # add_text(codebuf, rest)
565
+ #end
566
+ #++
567
+
568
+ def add_pi_stmt(codebuf, code, pi_arg) # :nodoc:
569
+ case pi_arg
570
+ when nil ; add_stmt(codebuf, code)
571
+ when 'header' ; @header = code
572
+ when 'footer' ; @footer = code
573
+ when 'comment'; add_stmt(codebuf, "\n" * code.count("\n"))
574
+ when 'value' ; add_expr_literal(codebuf, code)
575
+ else ; add_stmt(codebuf, code)
576
+ end
577
+ end
578
+
579
+ def add_pi_expr(codebuf, code, indicator) # :nodoc:
580
+ case indicator
581
+ when nil, '', '==' # @{...}@ or <%== ... %>
582
+ @escape == false ? add_expr_literal(codebuf, code) : add_expr_escaped(codebuf, code)
583
+ when '!', '=' # @!{...}@ or <%= ... %>
584
+ @escape == false ? add_expr_escaped(codebuf, code) : add_expr_literal(codebuf, code)
585
+ when '!!', '===' # @!!{...}@ or <%=== ... %>
586
+ add_expr_debug(codebuf, code)
587
+ else
588
+ # ignore
589
+ end
590
+ end
591
+
592
+ end
593
+
594
+
595
+ end
596
+ #--end of require 'erubis/converter'
597
+ #--begin of require 'erubis/evaluator'
598
+ ##
599
+ ## $Release: 2.6.5 $
600
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
601
+ ##
602
+
603
+ #--begin of require 'erubis/error'
604
+ ##
605
+ ## $Release: 2.6.5 $
606
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
607
+ ##
608
+
609
+ module Erubis
610
+
611
+
612
+ ##
613
+ ## base error class
614
+ ##
615
+ class ErubisError < StandardError
616
+ end
617
+
618
+
619
+ ##
620
+ ## raised when method or function is not supported
621
+ ##
622
+ class NotSupportedError < ErubisError
623
+ end
624
+
625
+
626
+ end
627
+ #--end of require 'erubis/error'
628
+ #--begin of require 'erubis/context'
629
+ ##
630
+ ## $Release: 2.6.5 $
631
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
632
+ ##
633
+
634
+
635
+ module Erubis
636
+
637
+
638
+ ##
639
+ ## context object for Engine#evaluate
640
+ ##
641
+ ## ex.
642
+ ## template = <<'END'
643
+ ## Hello <%= @user %>!
644
+ ## <% for item in @list %>
645
+ ## - <%= item %>
646
+ ## <% end %>
647
+ ## END
648
+ ##
649
+ ## context = Erubis::Context.new(:user=>'World', :list=>['a','b','c'])
650
+ ## # or
651
+ ## # context = Erubis::Context.new
652
+ ## # context[:user] = 'World'
653
+ ## # context[:list] = ['a', 'b', 'c']
654
+ ##
655
+ ## eruby = Erubis::Eruby.new(template)
656
+ ## print eruby.evaluate(context)
657
+ ##
658
+ class Context
659
+ include Enumerable
660
+
661
+ def initialize(hash=nil)
662
+ hash.each do |name, value|
663
+ self[name] = value
664
+ end if hash
665
+ end
666
+
667
+ def [](key)
668
+ return instance_variable_get("@#{key}")
669
+ end
670
+
671
+ def []=(key, value)
672
+ return instance_variable_set("@#{key}", value)
673
+ end
674
+
675
+ def keys
676
+ return instance_variables.collect { |name| name[1..-1] }
677
+ end
678
+
679
+ def each
680
+ instance_variables.each do |name|
681
+ key = name[1..-1]
682
+ value = instance_variable_get(name)
683
+ yield(key, value)
684
+ end
685
+ end
686
+
687
+ def to_hash
688
+ hash = {}
689
+ self.keys.each { |key| hash[key] = self[key] }
690
+ return hash
691
+ end
692
+
693
+ def update(context_or_hash)
694
+ arg = context_or_hash
695
+ if arg.is_a?(Hash)
696
+ arg.each do |key, val|
697
+ self[key] = val
698
+ end
699
+ else
700
+ arg.instance_variables.each do |varname|
701
+ key = varname[1..-1]
702
+ val = arg.instance_variable_get(varname)
703
+ self[key] = val
704
+ end
705
+ end
706
+ end
707
+
708
+ end
709
+
710
+
711
+ end
712
+ #--end of require 'erubis/context'
713
+
714
+
715
+ module Erubis
716
+
717
+ EMPTY_BINDING = binding()
718
+
719
+
720
+ ##
721
+ ## evaluate code
722
+ ##
723
+ module Evaluator
724
+
725
+ def self.supported_properties # :nodoc:
726
+ return []
727
+ end
728
+
729
+ attr_accessor :src, :filename
730
+
731
+ def init_evaluator(properties)
732
+ @filename = properties[:filename]
733
+ end
734
+
735
+ def result(*args)
736
+ raise NotSupportedError.new("evaluation of code except Ruby is not supported.")
737
+ end
738
+
739
+ def evaluate(*args)
740
+ raise NotSupportedError.new("evaluation of code except Ruby is not supported.")
741
+ end
742
+
743
+ end
744
+
745
+
746
+ ##
747
+ ## evaluator for Ruby
748
+ ##
749
+ module RubyEvaluator
750
+ include Evaluator
751
+
752
+ def self.supported_properties # :nodoc:
753
+ list = Evaluator.supported_properties
754
+ return list
755
+ end
756
+
757
+ ## eval(@src) with binding object
758
+ def result(_binding_or_hash=TOPLEVEL_BINDING)
759
+ _arg = _binding_or_hash
760
+ if _arg.is_a?(Hash)
761
+ _b = binding()
762
+ eval _arg.collect{|k,v| "#{k} = _arg[#{k.inspect}]; "}.join, _b
763
+ elsif _arg.is_a?(Binding)
764
+ _b = _arg
765
+ elsif _arg.nil?
766
+ _b = binding()
767
+ else
768
+ raise ArgumentError.new("#{self.class.name}#result(): argument should be Binding or Hash but passed #{_arg.class.name} object.")
769
+ end
770
+ return eval(@src, _b, (@filename || '(erubis'))
771
+ end
772
+
773
+ ## invoke context.instance_eval(@src)
774
+ def evaluate(_context=Context.new)
775
+ _context = Context.new(_context) if _context.is_a?(Hash)
776
+ #return _context.instance_eval(@src, @filename || '(erubis)')
777
+ #@_proc ||= eval("proc { #{@src} }", Erubis::EMPTY_BINDING, @filename || '(erubis)')
778
+ @_proc ||= eval("proc { #{@src} }", binding(), @filename || '(erubis)')
779
+ return _context.instance_eval(&@_proc)
780
+ end
781
+
782
+ ## if object is an Class or Module then define instance method to it,
783
+ ## else define singleton method to it.
784
+ def def_method(object, method_name, filename=nil)
785
+ m = object.is_a?(Module) ? :module_eval : :instance_eval
786
+ object.__send__(m, "def #{method_name}; #{@src}; end", filename || @filename || '(erubis)')
787
+ end
788
+
789
+
790
+ end
791
+
792
+
793
+ end
794
+ #--end of require 'erubis/evaluator'
795
+ #--already included require 'erubis/context'
796
+
797
+
798
+ module Erubis
799
+
800
+
801
+ ##
802
+ ## (abstract) abstract engine class.
803
+ ## subclass must include evaluator and converter module.
804
+ ##
805
+ class Engine
806
+ #include Evaluator
807
+ #include Converter
808
+ #include Generator
809
+
810
+ def initialize(input=nil, properties={})
811
+ #@input = input
812
+ init_generator(properties)
813
+ init_converter(properties)
814
+ init_evaluator(properties)
815
+ @src = convert(input) if input
816
+ end
817
+
818
+
819
+ ##
820
+ ## convert input string and set it to @src
821
+ ##
822
+ def convert!(input)
823
+ @src = convert(input)
824
+ end
825
+
826
+
827
+ ##
828
+ ## load file, write cache file, and return engine object.
829
+ ## this method create code cache file automatically.
830
+ ## cachefile name can be specified with properties[:cachename],
831
+ ## or filname + 'cache' is used as default.
832
+ ##
833
+ def self.load_file(filename, properties={})
834
+ cachename = properties[:cachename] || (filename + '.cache')
835
+ properties[:filename] = filename
836
+ if test(?f, cachename) && File.mtime(filename) <= File.mtime(cachename)
837
+ engine = self.new(nil, properties)
838
+ engine.src = File.read(cachename)
839
+ else
840
+ input = File.open(filename, 'rb') {|f| f.read }
841
+ engine = self.new(input, properties)
842
+ File.open(cachename, 'wb') do |f|
843
+ f.flock(File::LOCK_EX)
844
+ f.write(engine.src)
845
+ f.flush()
846
+ end
847
+ end
848
+ engine.src.untaint # ok?
849
+ return engine
850
+ end
851
+
852
+
853
+ ##
854
+ ## helper method to convert and evaluate input text with context object.
855
+ ## context may be Binding, Hash, or Object.
856
+ ##
857
+ def process(input, context=nil, filename=nil)
858
+ code = convert(input)
859
+ filename ||= '(erubis)'
860
+ if context.is_a?(Binding)
861
+ return eval(code, context, filename)
862
+ else
863
+ context = Context.new(context) if context.is_a?(Hash)
864
+ return context.instance_eval(code, filename)
865
+ end
866
+ end
867
+
868
+
869
+ ##
870
+ ## helper method evaluate Proc object with contect object.
871
+ ## context may be Binding, Hash, or Object.
872
+ ##
873
+ def process_proc(proc_obj, context=nil, filename=nil)
874
+ if context.is_a?(Binding)
875
+ filename ||= '(erubis)'
876
+ return eval(proc_obj, context, filename)
877
+ else
878
+ context = Context.new(context) if context.is_a?(Hash)
879
+ return context.instance_eval(&proc_obj)
880
+ end
881
+ end
882
+
883
+
884
+ end # end of class Engine
885
+
886
+
887
+ ##
888
+ ## (abstract) base engine class for Eruby, Eperl, Ejava, and so on.
889
+ ## subclass must include generator.
890
+ ##
891
+ class Basic::Engine < Engine
892
+ include Evaluator
893
+ include Basic::Converter
894
+ include Generator
895
+ end
896
+
897
+
898
+ class PI::Engine < Engine
899
+ include Evaluator
900
+ include PI::Converter
901
+ include Generator
902
+ end
903
+
904
+
905
+ end
906
+ #--end of require 'erubis/engine'
907
+ #require 'erubis/generator'
908
+ #require 'erubis/converter'
909
+ #require 'erubis/evaluator'
910
+ #require 'erubis/error'
911
+ #require 'erubis/context'
912
+ #--begin of require 'erubis/helper'
913
+ ##
914
+ ## $Release: 2.6.5 $
915
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
916
+ ##
917
+
918
+
919
+ module Erubis
920
+
921
+ ##
922
+ ## helper for xml
923
+ ##
924
+ module XmlHelper
925
+
926
+ module_function
927
+
928
+ ESCAPE_TABLE = {
929
+ '&' => '&amp;',
930
+ '<' => '&lt;',
931
+ '>' => '&gt;',
932
+ '"' => '&quot;',
933
+ "'" => '&#039;',
934
+ }
935
+
936
+ def escape_xml(value)
937
+ value.to_s.gsub(/[&<>"]/) { |s| ESCAPE_TABLE[s] } # or /[&<>"']/
938
+ #value.to_s.gsub(/[&<>"]/) { ESCAPE_TABLE[$&] }
939
+ end
940
+
941
+ def escape_xml2(value)
942
+ return value.to_s.gsub(/\&/,'&amp;').gsub(/</,'&lt;').gsub(/>/,'&gt;').gsub(/"/,'&quot;')
943
+ end
944
+
945
+ alias h escape_xml
946
+ alias html_escape escape_xml
947
+
948
+ def url_encode(str)
949
+ return str.gsub(/[^-_.a-zA-Z0-9]+/) { |s|
950
+ s.unpack('C*').collect { |i| "%%%02X" % i }.join
951
+ }
952
+ end
953
+
954
+ alias u url_encode
955
+
956
+ end
957
+
958
+
959
+ end
960
+ #--end of require 'erubis/helper'
961
+ #--begin of require 'erubis/enhancer'
962
+ ##
963
+ ## $Release: 2.6.5 $
964
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
965
+ ##
966
+
967
+
968
+ module Erubis
969
+
970
+
971
+ ##
972
+ ## switch '<%= ... %>' to escaped and '<%== ... %>' to unescaped
973
+ ##
974
+ ## ex.
975
+ ## class XmlEruby < Eruby
976
+ ## include EscapeEnhancer
977
+ ## end
978
+ ##
979
+ ## this is language-indenedent.
980
+ ##
981
+ module EscapeEnhancer
982
+
983
+ def self.desc # :nodoc:
984
+ "switch '<%= %>' to escaped and '<%== %>' to unescaped"
985
+ end
986
+
987
+ #--
988
+ #def self.included(klass)
989
+ # klass.class_eval <<-END
990
+ # alias _add_expr_literal add_expr_literal
991
+ # alias _add_expr_escaped add_expr_escaped
992
+ # alias add_expr_literal _add_expr_escaped
993
+ # alias add_expr_escaped _add_expr_literal
994
+ # END
995
+ #end
996
+ #++
997
+
998
+ def add_expr(src, code, indicator)
999
+ case indicator
1000
+ when '='
1001
+ @escape ? add_expr_literal(src, code) : add_expr_escaped(src, code)
1002
+ when '=='
1003
+ @escape ? add_expr_escaped(src, code) : add_expr_literal(src, code)
1004
+ when '==='
1005
+ add_expr_debug(src, code)
1006
+ end
1007
+ end
1008
+
1009
+ end
1010
+
1011
+
1012
+ #--
1013
+ ## (obsolete)
1014
+ #module FastEnhancer
1015
+ #end
1016
+ #++
1017
+
1018
+
1019
+ ##
1020
+ ## use $stdout instead of string
1021
+ ##
1022
+ ## this is only for Eruby.
1023
+ ##
1024
+ module StdoutEnhancer
1025
+
1026
+ def self.desc # :nodoc:
1027
+ "use $stdout instead of array buffer or string buffer"
1028
+ end
1029
+
1030
+ def add_preamble(src)
1031
+ src << "_buf = $stdout;"
1032
+ end
1033
+
1034
+ def add_postamble(src)
1035
+ src << "\n''\n"
1036
+ end
1037
+
1038
+ end
1039
+
1040
+
1041
+ ##
1042
+ ## use print statement instead of '_buf << ...'
1043
+ ##
1044
+ ## this is only for Eruby.
1045
+ ##
1046
+ module PrintOutEnhancer
1047
+
1048
+ def self.desc # :nodoc:
1049
+ "use print statement instead of '_buf << ...'"
1050
+ end
1051
+
1052
+ def add_preamble(src)
1053
+ end
1054
+
1055
+ def add_text(src, text)
1056
+ src << " print '" << escape_text(text) << "';" unless text.empty?
1057
+ end
1058
+
1059
+ def add_expr_literal(src, code)
1060
+ src << ' print((' << code << ').to_s);'
1061
+ end
1062
+
1063
+ def add_expr_escaped(src, code)
1064
+ src << ' print ' << escaped_expr(code) << ';'
1065
+ end
1066
+
1067
+ def add_postamble(src)
1068
+ src << "\n" unless src[-1] == ?\n
1069
+ end
1070
+
1071
+ end
1072
+
1073
+
1074
+ ##
1075
+ ## enable print function
1076
+ ##
1077
+ ## Notice: use Eruby#evaluate() and don't use Eruby#result()
1078
+ ## to be enable print function.
1079
+ ##
1080
+ ## this is only for Eruby.
1081
+ ##
1082
+ module PrintEnabledEnhancer
1083
+
1084
+ def self.desc # :nodoc:
1085
+ "enable to use print function in '<% %>'"
1086
+ end
1087
+
1088
+ def add_preamble(src)
1089
+ src << "@_buf = "
1090
+ super
1091
+ end
1092
+
1093
+ def print(*args)
1094
+ args.each do |arg|
1095
+ @_buf << arg.to_s
1096
+ end
1097
+ end
1098
+
1099
+ def evaluate(context=nil)
1100
+ _src = @src
1101
+ if context.is_a?(Hash)
1102
+ context.each do |key, val| instance_variable_set("@#{key}", val) end
1103
+ elsif context
1104
+ context.instance_variables.each do |name|
1105
+ instance_variable_set(name, context.instance_variable_get(name))
1106
+ end
1107
+ end
1108
+ return instance_eval(_src, (@filename || '(erubis)'))
1109
+ end
1110
+
1111
+ end
1112
+
1113
+
1114
+ ##
1115
+ ## return array instead of string
1116
+ ##
1117
+ ## this is only for Eruby.
1118
+ ##
1119
+ module ArrayEnhancer
1120
+
1121
+ def self.desc # :nodoc:
1122
+ "return array instead of string"
1123
+ end
1124
+
1125
+ def add_preamble(src)
1126
+ src << "_buf = [];"
1127
+ end
1128
+
1129
+ def add_postamble(src)
1130
+ src << "\n" unless src[-1] == ?\n
1131
+ src << "_buf\n"
1132
+ end
1133
+
1134
+ end
1135
+
1136
+
1137
+ ##
1138
+ ## use an Array object as buffer (included in Eruby by default)
1139
+ ##
1140
+ ## this is only for Eruby.
1141
+ ##
1142
+ module ArrayBufferEnhancer
1143
+
1144
+ def self.desc # :nodoc:
1145
+ "use an Array object for buffering (included in Eruby class)"
1146
+ end
1147
+
1148
+ def add_preamble(src)
1149
+ src << "_buf = [];"
1150
+ end
1151
+
1152
+ def add_postamble(src)
1153
+ src << "\n" unless src[-1] == ?\n
1154
+ src << "_buf.join\n"
1155
+ end
1156
+
1157
+ end
1158
+
1159
+
1160
+ ##
1161
+ ## use String class for buffering
1162
+ ##
1163
+ ## this is only for Eruby.
1164
+ ##
1165
+ module StringBufferEnhancer
1166
+
1167
+ def self.desc # :nodoc:
1168
+ "use a String object for buffering"
1169
+ end
1170
+
1171
+ def add_preamble(src)
1172
+ src << "_buf = '';"
1173
+ end
1174
+
1175
+ def add_postamble(src)
1176
+ src << "\n" unless src[-1] == ?\n
1177
+ src << "_buf.to_s\n"
1178
+ end
1179
+
1180
+ end
1181
+
1182
+
1183
+ ##
1184
+ ## use StringIO class for buffering
1185
+ ##
1186
+ ## this is only for Eruby.
1187
+ ##
1188
+ module StringIOEnhancer # :nodoc:
1189
+
1190
+ def self.desc # :nodoc:
1191
+ "use a StringIO object for buffering"
1192
+ end
1193
+
1194
+ def add_preamble(src)
1195
+ src << "_buf = StringIO.new;"
1196
+ end
1197
+
1198
+ def add_postamble(src)
1199
+ src << "\n" unless src[-1] == ?\n
1200
+ src << "_buf.string\n"
1201
+ end
1202
+
1203
+ end
1204
+
1205
+
1206
+ ##
1207
+ ## set buffer variable name to '_erbout' as well as '_buf'
1208
+ ##
1209
+ ## this is only for Eruby.
1210
+ ##
1211
+ module ErboutEnhancer
1212
+
1213
+ def self.desc # :nodoc:
1214
+ "set '_erbout = _buf = \"\";' to be compatible with ERB."
1215
+ end
1216
+
1217
+ def add_preamble(src)
1218
+ src << "_erbout = _buf = '';"
1219
+ end
1220
+
1221
+ def add_postamble(src)
1222
+ src << "\n" unless src[-1] == ?\n
1223
+ src << "_buf.to_s\n"
1224
+ end
1225
+
1226
+ end
1227
+
1228
+
1229
+ ##
1230
+ ## remove text and leave code, especially useful when debugging.
1231
+ ##
1232
+ ## ex.
1233
+ ## $ erubis -s -E NoText file.eruby | more
1234
+ ##
1235
+ ## this is language independent.
1236
+ ##
1237
+ module NoTextEnhancer
1238
+
1239
+ def self.desc # :nodoc:
1240
+ "remove text and leave code (useful when debugging)"
1241
+ end
1242
+
1243
+ def add_text(src, text)
1244
+ src << ("\n" * text.count("\n"))
1245
+ if text[-1] != ?\n
1246
+ text =~ /^(.*?)\z/
1247
+ src << (' ' * $1.length)
1248
+ end
1249
+ end
1250
+
1251
+ end
1252
+
1253
+
1254
+ ##
1255
+ ## remove code and leave text, especially useful when validating HTML tags.
1256
+ ##
1257
+ ## ex.
1258
+ ## $ erubis -s -E NoCode file.eruby | tidy -errors
1259
+ ##
1260
+ ## this is language independent.
1261
+ ##
1262
+ module NoCodeEnhancer
1263
+
1264
+ def self.desc # :nodoc:
1265
+ "remove code and leave text (useful when validating HTML)"
1266
+ end
1267
+
1268
+ def add_preamble(src)
1269
+ end
1270
+
1271
+ def add_postamble(src)
1272
+ end
1273
+
1274
+ def add_text(src, text)
1275
+ src << text
1276
+ end
1277
+
1278
+ def add_expr(src, code, indicator)
1279
+ src << "\n" * code.count("\n")
1280
+ end
1281
+
1282
+ def add_stmt(src, code)
1283
+ src << "\n" * code.count("\n")
1284
+ end
1285
+
1286
+ end
1287
+
1288
+
1289
+ ##
1290
+ ## get convert faster, but spaces around '<%...%>' are not trimmed.
1291
+ ##
1292
+ ## this is language-independent.
1293
+ ##
1294
+ module SimplifyEnhancer
1295
+
1296
+ def self.desc # :nodoc:
1297
+ "get convert faster but leave spaces around '<% %>'"
1298
+ end
1299
+
1300
+ #DEFAULT_REGEXP = /(^[ \t]*)?<%(=+|\#)?(.*?)-?%>([ \t]*\r?\n)?/m
1301
+ SIMPLE_REGEXP = /<%(=+|\#)?(.*?)-?%>/m
1302
+
1303
+ def convert(input)
1304
+ src = ""
1305
+ add_preamble(src)
1306
+ #regexp = pattern_regexp(@pattern)
1307
+ pos = 0
1308
+ input.scan(SIMPLE_REGEXP) do |indicator, code|
1309
+ match = Regexp.last_match
1310
+ index = match.begin(0)
1311
+ text = input[pos, index - pos]
1312
+ pos = match.end(0)
1313
+ add_text(src, text)
1314
+ if !indicator # <% %>
1315
+ add_stmt(src, code)
1316
+ elsif indicator[0] == ?\# # <%# %>
1317
+ n = code.count("\n")
1318
+ add_stmt(src, "\n" * n)
1319
+ else # <%= %>
1320
+ add_expr(src, code, indicator)
1321
+ end
1322
+ end
1323
+ #rest = $' || input # ruby1.8
1324
+ rest = pos == 0 ? input : input[pos..-1] # ruby1.9
1325
+ add_text(src, rest)
1326
+ add_postamble(src)
1327
+ return src
1328
+ end
1329
+
1330
+ end
1331
+
1332
+
1333
+ ##
1334
+ ## enable to use other embedded expression pattern (default is '\[= =\]').
1335
+ ##
1336
+ ## notice! this is an experimental. spec may change in the future.
1337
+ ##
1338
+ ## ex.
1339
+ ## input = <<END
1340
+ ## <% for item in list %>
1341
+ ## <%= item %> : <%== item %>
1342
+ ## [= item =] : [== item =]
1343
+ ## <% end %>
1344
+ ## END
1345
+ ##
1346
+ ## class BiPatternEruby
1347
+ ## include BiPatternEnhancer
1348
+ ## end
1349
+ ## eruby = BiPatternEruby.new(input, :bipattern=>'\[= =\]')
1350
+ ## list = ['<a>', 'b&b', '"c"']
1351
+ ## print eruby.result(binding())
1352
+ ##
1353
+ ## ## output
1354
+ ## <a> : &lt;a&gt;
1355
+ ## <a> : &lt;a&gt;
1356
+ ## b&b : b&amp;b
1357
+ ## b&b : b&amp;b
1358
+ ## "c" : &quot;c&quot;
1359
+ ## "c" : &quot;c&quot;
1360
+ ##
1361
+ ## this is language independent.
1362
+ ##
1363
+ module BiPatternEnhancer
1364
+
1365
+ def self.desc # :nodoc:
1366
+ "another embedded expression pattern (default '\[= =\]')."
1367
+ end
1368
+
1369
+ def initialize(input, properties={})
1370
+ self.bipattern = properties[:bipattern] # or '\$\{ \}'
1371
+ super
1372
+ end
1373
+
1374
+ ## when pat is nil then '\[= =\]' is used
1375
+ def bipattern=(pat) # :nodoc:
1376
+ @bipattern = pat || '\[= =\]'
1377
+ pre, post = @bipattern.split()
1378
+ @bipattern_regexp = /(.*?)#{pre}(=*)(.*?)#{post}/m
1379
+ end
1380
+
1381
+ def add_text(src, text)
1382
+ return unless text
1383
+ m = nil
1384
+ text.scan(@bipattern_regexp) do |txt, indicator, code|
1385
+ m = Regexp.last_match
1386
+ super(src, txt)
1387
+ add_expr(src, code, '=' + indicator)
1388
+ end
1389
+ #rest = $' || text # ruby1.8
1390
+ rest = m ? text[m.end(0)..-1] : text # ruby1.9
1391
+ super(src, rest)
1392
+ end
1393
+
1394
+ end
1395
+
1396
+
1397
+ ##
1398
+ ## regards lines starting with '%' as program code
1399
+ ##
1400
+ ## this is for compatibility to eruby and ERB.
1401
+ ##
1402
+ ## this is language-independent.
1403
+ ##
1404
+ module PercentLineEnhancer
1405
+
1406
+ def self.desc # :nodoc:
1407
+ "regard lines starting with '%' as program code"
1408
+ end
1409
+
1410
+ def add_text(src, text)
1411
+ pos = 0
1412
+ text2 = ''
1413
+ text.scan(/^\%(.*?\r?\n)/) do
1414
+ line = $1
1415
+ match = Regexp.last_match
1416
+ len = match.begin(0) - pos
1417
+ str = text[pos, len]
1418
+ pos = match.end(0)
1419
+ if text2.empty?
1420
+ text2 = str
1421
+ else
1422
+ text2 << str
1423
+ end
1424
+ if line[0] == ?%
1425
+ text2 << line
1426
+ else
1427
+ super(src, text2)
1428
+ text2 = ''
1429
+ add_stmt(src, line)
1430
+ end
1431
+ end
1432
+ #rest = pos == 0 ? text : $' # ruby1.8
1433
+ rest = pos == 0 ? text : text[pos..-1] # ruby1.9
1434
+ unless text2.empty?
1435
+ text2 << rest if rest
1436
+ rest = text2
1437
+ end
1438
+ super(src, rest)
1439
+ end
1440
+
1441
+ end
1442
+
1443
+
1444
+ ##
1445
+ ## [experimental] allow header and footer in eRuby script
1446
+ ##
1447
+ ## ex.
1448
+ ## ====================
1449
+ ## ## without header and footer
1450
+ ## $ cat ex1.eruby
1451
+ ## <% def list_items(list) %>
1452
+ ## <% for item in list %>
1453
+ ## <li><%= item %></li>
1454
+ ## <% end %>
1455
+ ## <% end %>
1456
+ ##
1457
+ ## $ erubis -s ex1.eruby
1458
+ ## _buf = []; def list_items(list)
1459
+ ## ; for item in list
1460
+ ## ; _buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
1461
+ ## '; end
1462
+ ## ; end
1463
+ ## ;
1464
+ ## _buf.join
1465
+ ##
1466
+ ## ## with header and footer
1467
+ ## $ cat ex2.eruby
1468
+ ## <!--#header:
1469
+ ## def list_items(list)
1470
+ ## #-->
1471
+ ## <% for item in list %>
1472
+ ## <li><%= item %></li>
1473
+ ## <% end %>
1474
+ ## <!--#footer:
1475
+ ## end
1476
+ ## #-->
1477
+ ##
1478
+ ## $ erubis -s -c HeaderFooterEruby ex4.eruby
1479
+ ##
1480
+ ## def list_items(list)
1481
+ ## _buf = []; _buf << '
1482
+ ## '; for item in list
1483
+ ## ; _buf << '<li>'; _buf << ( item ).to_s; _buf << '</li>
1484
+ ## '; end
1485
+ ## ; _buf << '
1486
+ ## ';
1487
+ ## _buf.join
1488
+ ## end
1489
+ ##
1490
+ ## ====================
1491
+ ##
1492
+ ## this is language-independent.
1493
+ ##
1494
+ module HeaderFooterEnhancer
1495
+
1496
+ def self.desc # :nodoc:
1497
+ "allow header/footer in document (ex. '<!--#header: #-->')"
1498
+ end
1499
+
1500
+ HEADER_FOOTER_PATTERN = /(.*?)(^[ \t]*)?<!--\#(\w+):(.*?)\#-->([ \t]*\r?\n)?/m
1501
+
1502
+ def add_text(src, text)
1503
+ m = nil
1504
+ text.scan(HEADER_FOOTER_PATTERN) do |txt, lspace, word, content, rspace|
1505
+ m = Regexp.last_match
1506
+ flag_trim = @trim && lspace && rspace
1507
+ super(src, txt)
1508
+ content = "#{lspace}#{content}#{rspace}" if flag_trim
1509
+ super(src, lspace) if !flag_trim && lspace
1510
+ instance_variable_set("@#{word}", content)
1511
+ super(src, rspace) if !flag_trim && rspace
1512
+ end
1513
+ #rest = $' || text # ruby1.8
1514
+ rest = m ? text[m.end(0)..-1] : text # ruby1.9
1515
+ super(src, rest)
1516
+ end
1517
+
1518
+ attr_accessor :header, :footer
1519
+
1520
+ def convert(input)
1521
+ source = super
1522
+ return @src = "#{@header}#{source}#{@footer}"
1523
+ end
1524
+
1525
+ end
1526
+
1527
+
1528
+ ##
1529
+ ## delete indentation of HTML.
1530
+ ##
1531
+ ## this is language-independent.
1532
+ ##
1533
+ module DeleteIndentEnhancer
1534
+
1535
+ def self.desc # :nodoc:
1536
+ "delete indentation of HTML."
1537
+ end
1538
+
1539
+ def convert_input(src, input)
1540
+ input = input.gsub(/^[ \t]+</, '<')
1541
+ super(src, input)
1542
+ end
1543
+
1544
+ end
1545
+
1546
+
1547
+ ##
1548
+ ## convert "<h1><%=title%></h1>" into "_buf << %Q`<h1>#{title}</h1>`"
1549
+ ##
1550
+ ## this is only for Eruby.
1551
+ ##
1552
+ module InterpolationEnhancer
1553
+
1554
+ def self.desc # :nodoc:
1555
+ "convert '<p><%=text%></p>' into '_buf << %Q`<p>\#{text}</p>`'"
1556
+ end
1557
+
1558
+ def convert_input(src, input)
1559
+ pat = @pattern
1560
+ regexp = pat.nil? || pat == '<% %>' ? Basic::Converter::DEFAULT_REGEXP : pattern_regexp(pat)
1561
+ pos = 0
1562
+ is_bol = true # is beginning of line
1563
+ str = ''
1564
+ input.scan(regexp) do |indicator, code, tailch, rspace|
1565
+ match = Regexp.last_match()
1566
+ len = match.begin(0) - pos
1567
+ text = input[pos, len]
1568
+ pos = match.end(0)
1569
+ ch = indicator ? indicator[0] : nil
1570
+ lspace = ch == ?= ? nil : detect_spaces_at_bol(text, is_bol)
1571
+ is_bol = rspace ? true : false
1572
+ _add_text_to_str(str, text)
1573
+ ## * when '<%= %>', do nothing
1574
+ ## * when '<% %>' or '<%# %>', delete spaces iff only spaces are around '<% %>'
1575
+ if ch == ?= # <%= %>
1576
+ rspace = nil if tailch && !tailch.empty?
1577
+ str << lspace if lspace
1578
+ add_expr(str, code, indicator)
1579
+ str << rspace if rspace
1580
+ elsif ch == ?\# # <%# %>
1581
+ n = code.count("\n") + (rspace ? 1 : 0)
1582
+ if @trim && lspace && rspace
1583
+ add_text(src, str)
1584
+ str = ''
1585
+ add_stmt(src, "\n" * n)
1586
+ else
1587
+ str << lspace if lspace
1588
+ add_text(src, str)
1589
+ str = ''
1590
+ add_stmt(src, "\n" * n)
1591
+ str << rspace if rspace
1592
+ end
1593
+ else # <% %>
1594
+ if @trim && lspace && rspace
1595
+ add_text(src, str)
1596
+ str = ''
1597
+ add_stmt(src, "#{lspace}#{code}#{rspace}")
1598
+ else
1599
+ str << lspace if lspace
1600
+ add_text(src, str)
1601
+ str = ''
1602
+ add_stmt(src, code)
1603
+ str << rspace if rspace
1604
+ end
1605
+ end
1606
+ end
1607
+ #rest = $' || input # ruby1.8
1608
+ rest = pos == 0 ? input : input[pos..-1] # ruby1.9
1609
+ _add_text_to_str(str, rest)
1610
+ add_text(src, str)
1611
+ end
1612
+
1613
+ def add_text(src, text)
1614
+ return if !text || text.empty?
1615
+ #src << " _buf << %Q`" << text << "`;"
1616
+ if text[-1] == ?\n
1617
+ text[-1] = "\\n"
1618
+ src << " _buf << %Q`" << text << "`\n"
1619
+ else
1620
+ src << " _buf << %Q`" << text << "`;"
1621
+ end
1622
+ end
1623
+
1624
+ def _add_text_to_str(str, text)
1625
+ return if !text || text.empty?
1626
+ text.gsub!(/['\#\\]/, '\\\\\&')
1627
+ str << text
1628
+ end
1629
+
1630
+ def add_expr_escaped(str, code)
1631
+ str << "\#{#{escaped_expr(code)}}"
1632
+ end
1633
+
1634
+ def add_expr_literal(str, code)
1635
+ str << "\#{#{code}}"
1636
+ end
1637
+
1638
+ end
1639
+
1640
+
1641
+ end
1642
+ #--end of require 'erubis/enhancer'
1643
+ #require 'erubis/tiny'
1644
+ #--begin of require 'erubis/engine/eruby'
1645
+ ##
1646
+ ## $Release: 2.6.5 $
1647
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
1648
+ ##
1649
+
1650
+ #--already included require 'erubis/engine'
1651
+ #--already included require 'erubis/enhancer'
1652
+
1653
+
1654
+ module Erubis
1655
+
1656
+
1657
+ ##
1658
+ ## code generator for Ruby
1659
+ ##
1660
+ module RubyGenerator
1661
+ include Generator
1662
+ #include ArrayBufferEnhancer
1663
+ include StringBufferEnhancer
1664
+
1665
+ def init_generator(properties={})
1666
+ super
1667
+ @escapefunc ||= "Erubis::XmlHelper.escape_xml"
1668
+ end
1669
+
1670
+ def self.supported_properties() # :nodoc:
1671
+ return []
1672
+ end
1673
+
1674
+ def escape_text(text)
1675
+ text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
1676
+ end
1677
+
1678
+ def escaped_expr(code)
1679
+ return "#{@escapefunc}(#{code})"
1680
+ end
1681
+
1682
+ #--
1683
+ #def add_preamble(src)
1684
+ # src << "_buf = [];"
1685
+ #end
1686
+ #++
1687
+
1688
+ def add_text(src, text)
1689
+ src << " _buf << '" << escape_text(text) << "';" unless text.empty?
1690
+ end
1691
+
1692
+ def add_stmt(src, code)
1693
+ #src << code << ';'
1694
+ src << code
1695
+ src << ';' unless code[-1] == ?\n
1696
+ end
1697
+
1698
+ def add_expr_literal(src, code)
1699
+ src << ' _buf << (' << code << ').to_s;'
1700
+ end
1701
+
1702
+ def add_expr_escaped(src, code)
1703
+ src << ' _buf << ' << escaped_expr(code) << ';'
1704
+ end
1705
+
1706
+ def add_expr_debug(src, code)
1707
+ code.strip!
1708
+ s = (code.dump =~ /\A"(.*)"\z/) && $1
1709
+ src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
1710
+ end
1711
+
1712
+ #--
1713
+ #def add_postamble(src)
1714
+ # src << "\n_buf.join\n"
1715
+ #end
1716
+ #++
1717
+
1718
+ end
1719
+
1720
+
1721
+ ##
1722
+ ## engine for Ruby
1723
+ ##
1724
+ class Eruby < Basic::Engine
1725
+ include RubyEvaluator
1726
+ include RubyGenerator
1727
+ end
1728
+
1729
+
1730
+ ##
1731
+ ## fast engine for Ruby
1732
+ ##
1733
+ class FastEruby < Eruby
1734
+ include InterpolationEnhancer
1735
+ end
1736
+
1737
+
1738
+ ##
1739
+ ## swtich '<%= %>' to escaped and '<%== %>' to not escaped
1740
+ ##
1741
+ class EscapedEruby < Eruby
1742
+ include EscapeEnhancer
1743
+ end
1744
+
1745
+
1746
+ ##
1747
+ ## sanitize expression (<%= ... %>) by default
1748
+ ##
1749
+ ## this is equivalent to EscapedEruby and is prepared only for compatibility.
1750
+ ##
1751
+ class XmlEruby < Eruby
1752
+ include EscapeEnhancer
1753
+ end
1754
+
1755
+
1756
+ class PI::Eruby < PI::Engine
1757
+ include RubyEvaluator
1758
+ include RubyGenerator
1759
+
1760
+ def init_converter(properties={})
1761
+ @pi = 'rb'
1762
+ super(properties)
1763
+ end
1764
+
1765
+ end
1766
+
1767
+
1768
+ end
1769
+ #--end of require 'erubis/engine/eruby'
1770
+ #require 'erubis/engine/enhanced' # enhanced eruby engines
1771
+ #require 'erubis/engine/optimized' # generates optimized ruby code
1772
+ #require 'erubis/engine/ephp'
1773
+ #require 'erubis/engine/ec'
1774
+ #require 'erubis/engine/ejava'
1775
+ #require 'erubis/engine/escheme'
1776
+ #require 'erubis/engine/eperl'
1777
+ #require 'erubis/engine/ejavascript'
1778
+
1779
+ #--begin of require 'erubis/local-setting'
1780
+ ##
1781
+ ## $Release: 2.6.5 $
1782
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
1783
+ ##
1784
+
1785
+ ##
1786
+ ## you can add site-local settings here.
1787
+ ## this files is required by erubis.rb
1788
+ ##
1789
+ #--end of require 'erubis/local-setting'
1790
+ #--end of require 'erubis'
1791
+ #--begin of require 'erubis/tiny'
1792
+ ##
1793
+ ## $Release: 2.6.5 $
1794
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
1795
+ ##
1796
+
1797
+ module Erubis
1798
+
1799
+ ##
1800
+ ## tiny and the simplest implementation of eRuby
1801
+ ##
1802
+ ## ex.
1803
+ ## eruby = TinyEruby.new(File.read('example.rhtml'))
1804
+ ## print eruby.src # print ruby code
1805
+ ## print eruby.result(binding()) # eval ruby code with Binding object
1806
+ ## print eruby.evalute(context) # eval ruby code with context object
1807
+ ##
1808
+ class TinyEruby
1809
+
1810
+ def initialize(input=nil)
1811
+ @src = convert(input) if input
1812
+ end
1813
+ attr_reader :src
1814
+
1815
+ EMBEDDED_PATTERN = /<%(=+|\#)?(.*?)-?%>/m
1816
+
1817
+ def convert(input)
1818
+ src = "_buf = '';" # preamble
1819
+ pos = 0
1820
+ input.scan(EMBEDDED_PATTERN) do |indicator, code|
1821
+ m = Regexp.last_match
1822
+ text = input[pos...m.begin(0)]
1823
+ pos = m.end(0)
1824
+ #src << " _buf << '" << escape_text(text) << "';"
1825
+ text.gsub!(/['\\]/, '\\\\\&')
1826
+ src << " _buf << '" << text << "';" unless text.empty?
1827
+ if !indicator # <% %>
1828
+ src << code << ";"
1829
+ elsif indicator == '#' # <%# %>
1830
+ src << ("\n" * code.count("\n"))
1831
+ else # <%= %>
1832
+ src << " _buf << (" << code << ").to_s;"
1833
+ end
1834
+ end
1835
+ #rest = $' || input # ruby1.8
1836
+ rest = pos == 0 ? input : input[pos..-1] # ruby1.9
1837
+ #src << " _buf << '" << escape_text(rest) << "';"
1838
+ rest.gsub!(/['\\]/, '\\\\\&')
1839
+ src << " _buf << '" << rest << "';" unless rest.empty?
1840
+ src << "\n_buf.to_s\n" # postamble
1841
+ return src
1842
+ end
1843
+
1844
+ #def escape_text(text)
1845
+ # return text.gsub!(/['\\]/, '\\\\\&') || text
1846
+ #end
1847
+
1848
+ def result(_binding=TOPLEVEL_BINDING)
1849
+ eval @src, _binding
1850
+ end
1851
+
1852
+ def evaluate(_context=Object.new)
1853
+ if _context.is_a?(Hash)
1854
+ _obj = Object.new
1855
+ _context.each do |k, v| _obj.instance_variable_set("@#{k}", v) end
1856
+ _context = _obj
1857
+ end
1858
+ _context.instance_eval @src
1859
+ end
1860
+
1861
+ end
1862
+
1863
+
1864
+
1865
+ module PI
1866
+ end
1867
+
1868
+ class PI::TinyEruby
1869
+
1870
+ def initialize(input=nil, options={})
1871
+ @escape = options[:escape] || 'Erubis::XmlHelper.escape_xml'
1872
+ @src = convert(input) if input
1873
+ end
1874
+
1875
+ attr_reader :src
1876
+
1877
+ EMBEDDED_PATTERN = /(^[ \t]*)?<\?rb(\s.*?)\?>([ \t]*\r?\n)?|@(!+)?\{(.*?)\}@/m
1878
+
1879
+ def convert(input)
1880
+ src = "_buf = '';" # preamble
1881
+ pos = 0
1882
+ input.scan(EMBEDDED_PATTERN) do |lspace, stmt, rspace, indicator, expr|
1883
+ match = Regexp.last_match
1884
+ len = match.begin(0) - pos
1885
+ text = input[pos, len]
1886
+ pos = match.end(0)
1887
+ #src << " _buf << '" << escape_text(text) << "';"
1888
+ text.gsub!(/['\\]/, '\\\\\&')
1889
+ src << " _buf << '" << text << "';" unless text.empty?
1890
+ if stmt # <?rb ... ?>
1891
+ if lspace && rspace
1892
+ src << "#{lspace}#{stmt}#{rspace}"
1893
+ else
1894
+ src << " _buf << '" << lspace << "';" if lspace
1895
+ src << stmt << ";"
1896
+ src << " _buf << '" << rspace << "';" if rspace
1897
+ end
1898
+ else # ${...}, $!{...}
1899
+ if !indicator
1900
+ src << " _buf << " << @escape << "(" << expr << ");"
1901
+ elsif indicator == '!'
1902
+ src << " _buf << (" << expr << ").to_s;"
1903
+ end
1904
+ end
1905
+ end
1906
+ #rest = $' || input # ruby1.8
1907
+ rest = pos == 0 ? input : input[pos..-1] # ruby1.9
1908
+ #src << " _buf << '" << escape_text(rest) << "';"
1909
+ rest.gsub!(/['\\]/, '\\\\\&')
1910
+ src << " _buf << '" << rest << "';" unless rest.empty?
1911
+ src << "\n_buf.to_s\n" # postamble
1912
+ return src
1913
+ end
1914
+
1915
+ #def escape_text(text)
1916
+ # return text.gsub!(/['\\]/, '\\\\\&') || text
1917
+ #end
1918
+
1919
+ def result(_binding=TOPLEVEL_BINDING)
1920
+ eval @src, _binding
1921
+ end
1922
+
1923
+ def evaluate(_context=Object.new)
1924
+ if _context.is_a?(Hash)
1925
+ _obj = Object.new
1926
+ _context.each do |k, v| _obj.instance_variable_set("@#{k}", v) end
1927
+ _context = _obj
1928
+ end
1929
+ _context.instance_eval @src
1930
+ end
1931
+
1932
+ end
1933
+
1934
+
1935
+ end
1936
+ #--end of require 'erubis/tiny'
1937
+ #--begin of require 'erubis/engine/enhanced'
1938
+ ##
1939
+ ## $Release: 2.6.5 $
1940
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
1941
+ ##
1942
+
1943
+ #--already included require 'erubis/enhancer'
1944
+ #--already included require 'erubis/engine/eruby'
1945
+
1946
+
1947
+ module Erubis
1948
+
1949
+
1950
+ #--
1951
+ ## moved to engine/ruby.rb
1952
+ #class EscapedEruby < Eruby
1953
+ # include EscapeEnhancer
1954
+ #end
1955
+ #++
1956
+
1957
+
1958
+ #--
1959
+ ### (obsolete)
1960
+ #class FastEruby < Eruby
1961
+ # include FastEnhancer
1962
+ #end
1963
+ #++
1964
+
1965
+
1966
+ class StdoutEruby < Eruby
1967
+ include StdoutEnhancer
1968
+ end
1969
+
1970
+
1971
+ class PrintOutEruby < Eruby
1972
+ include PrintOutEnhancer
1973
+ end
1974
+
1975
+
1976
+ class PrintEnabledEruby < Eruby
1977
+ include PrintEnabledEnhancer
1978
+ end
1979
+
1980
+
1981
+ class ArrayEruby < Eruby
1982
+ include ArrayEnhancer
1983
+ end
1984
+
1985
+
1986
+ class ArrayBufferEruby < Eruby
1987
+ include ArrayBufferEnhancer
1988
+ end
1989
+
1990
+
1991
+ class StringBufferEruby < Eruby
1992
+ include StringBufferEnhancer
1993
+ end
1994
+
1995
+
1996
+ class StringIOEruby < Eruby
1997
+ include StringIOEnhancer
1998
+ end
1999
+
2000
+
2001
+ class ErboutEruby < Eruby
2002
+ include ErboutEnhancer
2003
+ end
2004
+
2005
+
2006
+ class NoTextEruby < Eruby
2007
+ include NoTextEnhancer
2008
+ end
2009
+
2010
+
2011
+ class NoCodeEruby < Eruby
2012
+ include NoCodeEnhancer
2013
+ end
2014
+
2015
+
2016
+ class SimplifiedEruby < Eruby
2017
+ include SimplifyEnhancer
2018
+ end
2019
+
2020
+
2021
+ class StdoutSimplifiedEruby < Eruby
2022
+ include StdoutEnhancer
2023
+ include SimplifyEnhancer
2024
+ end
2025
+
2026
+
2027
+ class PrintOutSimplifiedEruby < Eruby
2028
+ include PrintOutEnhancer
2029
+ include SimplifyEnhancer
2030
+ end
2031
+
2032
+
2033
+ class BiPatternEruby < Eruby
2034
+ include BiPatternEnhancer
2035
+ end
2036
+
2037
+
2038
+ class PercentLineEruby < Eruby
2039
+ include PercentLineEnhancer
2040
+ end
2041
+
2042
+
2043
+ class HeaderFooterEruby < Eruby
2044
+ include HeaderFooterEnhancer
2045
+ end
2046
+
2047
+
2048
+ class DeleteIndentEruby < Eruby
2049
+ include DeleteIndentEnhancer
2050
+ end
2051
+
2052
+
2053
+ class InterpolationEruby < Eruby
2054
+ include InterpolationEnhancer
2055
+ end
2056
+
2057
+
2058
+ end
2059
+ #--end of require 'erubis/engine/enhanced'
2060
+ #--begin of require 'erubis/engine/optimized'
2061
+ ##
2062
+ ## $Release: 2.6.5 $
2063
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
2064
+ ##
2065
+
2066
+
2067
+ #--already included require 'erubis/engine/eruby'
2068
+
2069
+
2070
+ module Erubis
2071
+
2072
+
2073
+ module OptimizedGenerator
2074
+ include Generator
2075
+
2076
+ def self.supported_properties() # :nodoc:
2077
+ return []
2078
+ end
2079
+
2080
+ def init_generator(properties={})
2081
+ super
2082
+ @escapefunc ||= "Erubis::XmlHelper.escape_xml"
2083
+ @initialized = false
2084
+ @prev_is_expr = false
2085
+ end
2086
+
2087
+ protected
2088
+
2089
+ def escape_text(text)
2090
+ text.gsub(/['\\]/, '\\\\\&') # "'" => "\\'", '\\' => '\\\\'
2091
+ end
2092
+
2093
+ def escaped_expr(code)
2094
+ @escapefunc ||= 'Erubis::XmlHelper.escape_xml'
2095
+ return "#{@escapefunc}(#{code})"
2096
+ end
2097
+
2098
+ def switch_to_expr(src)
2099
+ return if @prev_is_expr
2100
+ @prev_is_expr = true
2101
+ src << ' _buf'
2102
+ end
2103
+
2104
+ def switch_to_stmt(src)
2105
+ return unless @prev_is_expr
2106
+ @prev_is_expr = false
2107
+ src << ';'
2108
+ end
2109
+
2110
+ def add_preamble(src)
2111
+ #@initialized = false
2112
+ #@prev_is_expr = false
2113
+ end
2114
+
2115
+ def add_text(src, text)
2116
+ return if text.empty?
2117
+ if @initialized
2118
+ switch_to_expr(src)
2119
+ src << " << '" << escape_text(text) << "'"
2120
+ else
2121
+ src << "_buf = '" << escape_text(text) << "';"
2122
+ @initialized = true
2123
+ end
2124
+ end
2125
+
2126
+ def add_stmt(src, code)
2127
+ switch_to_stmt(src) if @initialized
2128
+ #super
2129
+ src << code
2130
+ src << ';' unless code[-1] == ?\n
2131
+ end
2132
+
2133
+ def add_expr_literal(src, code)
2134
+ unless @initialized; src << "_buf = ''"; @initialized = true; end
2135
+ switch_to_expr(src)
2136
+ src << " << (" << code << ").to_s"
2137
+ end
2138
+
2139
+ def add_expr_escaped(src, code)
2140
+ unless @initialized; src << "_buf = ''"; @initialized = true; end
2141
+ switch_to_expr(src)
2142
+ src << " << " << escaped_expr(code)
2143
+ end
2144
+
2145
+ def add_expr_debug(src, code)
2146
+ code.strip!
2147
+ s = (code.dump =~ /\A"(.*)"\z/) && $1
2148
+ src << ' $stderr.puts("*** debug: ' << s << '=#{(' << code << ').inspect}");'
2149
+ end
2150
+
2151
+ def add_postamble(src)
2152
+ #super if @initialized
2153
+ src << "\n_buf\n" if @initialized
2154
+ end
2155
+
2156
+ end # end of class OptimizedEruby
2157
+
2158
+
2159
+ ##
2160
+ ## Eruby class which generates optimized ruby code
2161
+ ##
2162
+ class OptimizedEruby < Basic::Engine # Eruby
2163
+ include RubyEvaluator
2164
+ include OptimizedGenerator
2165
+
2166
+ def init_converter(properties={})
2167
+ @pi = 'rb'
2168
+ super(properties)
2169
+ end
2170
+
2171
+ end
2172
+
2173
+
2174
+ ##
2175
+ ## XmlEruby class which generates optimized ruby code
2176
+ ##
2177
+ class OptimizedXmlEruby < OptimizedEruby
2178
+ include EscapeEnhancer
2179
+
2180
+ def add_expr_debug(src, code)
2181
+ switch_to_stmt(src) if indicator == '===' && !@initialized
2182
+ super
2183
+ end
2184
+
2185
+ end # end of class OptimizedXmlEruby
2186
+
2187
+ end
2188
+ #--end of require 'erubis/engine/optimized'
2189
+ #--already included require 'erubis/engine/eruby'
2190
+ #--begin of require 'erubis/engine/ephp'
2191
+ ##
2192
+ ## $Release: 2.6.5 $
2193
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
2194
+ ##
2195
+
2196
+ #--already included require 'erubis/engine'
2197
+ #--already included require 'erubis/enhancer'
2198
+
2199
+
2200
+ module Erubis
2201
+
2202
+
2203
+ module PhpGenerator
2204
+ include Generator
2205
+
2206
+ def self.supported_properties() # :nodoc:
2207
+ return []
2208
+ end
2209
+
2210
+ def init_generator(properties={})
2211
+ super
2212
+ @escapefunc ||= 'htmlspecialchars'
2213
+ end
2214
+
2215
+ def add_preamble(src)
2216
+ # empty
2217
+ end
2218
+
2219
+ def escape_text(text)
2220
+ return text.gsub!(/<\?xml\b/, '<<?php ?>?xml') || text
2221
+ end
2222
+
2223
+ def add_text(src, text)
2224
+ src << escape_text(text)
2225
+ end
2226
+
2227
+ def add_expr_literal(src, code)
2228
+ code.strip!
2229
+ src << "<?php echo #{code}; ?>"
2230
+ end
2231
+
2232
+ def add_expr_escaped(src, code)
2233
+ add_expr_literal(src, escaped_expr(code))
2234
+ end
2235
+
2236
+ def add_expr_debug(src, code)
2237
+ code.strip!
2238
+ s = code.gsub(/\'/, "\\'")
2239
+ src << "<?php error_log('*** debug: #{s}='.(#{code}), 0); ?>"
2240
+ end
2241
+
2242
+ def add_stmt(src, code)
2243
+ src << "<?php"
2244
+ src << " " if code[0] != ?\ #
2245
+ if code[-1] == ?\n
2246
+ code.chomp!
2247
+ src << code << "?>\n"
2248
+ else
2249
+ src << code << "?>"
2250
+ end
2251
+ end
2252
+
2253
+ def add_postamble(src)
2254
+ # empty
2255
+ end
2256
+
2257
+ end
2258
+
2259
+
2260
+ ##
2261
+ ## engine for PHP
2262
+ ##
2263
+ class Ephp < Basic::Engine
2264
+ include PhpGenerator
2265
+ end
2266
+
2267
+
2268
+ class EscapedEphp < Ephp
2269
+ include EscapeEnhancer
2270
+ end
2271
+
2272
+
2273
+ #class XmlEphp < Ephp
2274
+ # include EscapeEnhancer
2275
+ #end
2276
+
2277
+
2278
+ class PI::Ephp < PI::Engine
2279
+ include PhpGenerator
2280
+
2281
+ def init_converter(properties={})
2282
+ @pi = 'php'
2283
+ super(properties)
2284
+ end
2285
+
2286
+ end
2287
+
2288
+
2289
+ end
2290
+ #--end of require 'erubis/engine/ephp'
2291
+ #--begin of require 'erubis/engine/ec'
2292
+ ##
2293
+ ## $Release: 2.6.5 $
2294
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
2295
+ ##
2296
+
2297
+ #--already included require 'erubis/engine'
2298
+ #--already included require 'erubis/enhancer'
2299
+
2300
+
2301
+ module Erubis
2302
+
2303
+
2304
+ module CGenerator
2305
+ include Generator
2306
+
2307
+ def self.supported_properties() # :nodoc:
2308
+ return [
2309
+ [:indent, '', "indent spaces (ex. ' ')"],
2310
+ [:out, 'stdout', "output file pointer name"],
2311
+ ]
2312
+ end
2313
+
2314
+ def init_generator(properties={})
2315
+ super
2316
+ @escapefunc ||= "escape"
2317
+ @indent = properties[:indent] || ''
2318
+ @out = properties[:out] || 'stdout'
2319
+ end
2320
+
2321
+ def add_preamble(src)
2322
+ src << "#line 1 \"#{self.filename}\"\n" if self.filename
2323
+ end
2324
+
2325
+ def escape_text(text)
2326
+ @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
2327
+ text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] }
2328
+ return text
2329
+ end
2330
+
2331
+ def escaped_expr(code)
2332
+ return "#{@escapefunc}(#{code.strip}, #{@out})"
2333
+ end
2334
+
2335
+ def add_text(src, text)
2336
+ return if text.empty?
2337
+ src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
2338
+ src << "fputs("
2339
+ i = 0
2340
+ text.each_line do |line|
2341
+ src << "\n" << @indent << ' ' if i > 0
2342
+ i += 1
2343
+ src << '"' << escape_text(line) << '"'
2344
+ end
2345
+ src << ", #{@out});" #<< (text[-1] == ?\n ? "\n" : "")
2346
+ src << "\n" if text[-1] == ?\n
2347
+ end
2348
+
2349
+ def add_stmt(src, code)
2350
+ src << code
2351
+ end
2352
+
2353
+ def add_expr_literal(src, code)
2354
+ src << @indent if src.empty? || src[-1] == ?\n
2355
+ src << " fprintf(#{@out}, " << code.strip << ');'
2356
+ end
2357
+
2358
+ def add_expr_escaped(src, code)
2359
+ src << @indent if src.empty? || src[-1] == ?\n
2360
+ src << ' ' << escaped_expr(code) << ';'
2361
+ end
2362
+
2363
+ def add_expr_debug(src, code)
2364
+ code.strip!
2365
+ s = nil
2366
+ if code =~ /\A\".*?\"\s*,\s*(.*)/
2367
+ s = $1.gsub(/[%"]/, '\\\1') + '='
2368
+ end
2369
+ src << @indent if src.empty? || src[-1] == ?\n
2370
+ src << " fprintf(stderr, \"*** debug: #{s}\" #{code});"
2371
+ end
2372
+
2373
+ def add_postamble(src)
2374
+ # empty
2375
+ end
2376
+
2377
+ end
2378
+
2379
+
2380
+ ##
2381
+ ## engine for C
2382
+ ##
2383
+ class Ec < Basic::Engine
2384
+ include CGenerator
2385
+ end
2386
+
2387
+
2388
+ class EscapedEc < Ec
2389
+ include EscapeEnhancer
2390
+ end
2391
+
2392
+
2393
+ #class XmlEc < Ec
2394
+ # include EscapeEnhancer
2395
+ #end
2396
+
2397
+ class PI::Ec < PI::Engine
2398
+ include CGenerator
2399
+
2400
+ def init_converter(properties={})
2401
+ @pi = 'c'
2402
+ super(properties)
2403
+ end
2404
+
2405
+ end
2406
+
2407
+
2408
+ end
2409
+ #--end of require 'erubis/engine/ec'
2410
+ #--begin of require 'erubis/engine/ejava'
2411
+ ##
2412
+ ## $Release: 2.6.5 $
2413
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
2414
+ ##
2415
+
2416
+ #--already included require 'erubis/engine'
2417
+ #--already included require 'erubis/enhancer'
2418
+
2419
+
2420
+ module Erubis
2421
+
2422
+
2423
+ module JavaGenerator
2424
+ include Generator
2425
+
2426
+ def self.supported_properties() # :nodoc:
2427
+ return [
2428
+ [:indent, '', "indent spaces (ex. ' ')"],
2429
+ [:buf, '_buf', "output buffer name"],
2430
+ [:bufclass, 'StringBuffer', "output buffer class (ex. 'StringBuilder')"],
2431
+ ]
2432
+ end
2433
+
2434
+ def init_generator(properties={})
2435
+ super
2436
+ @escapefunc ||= 'escape'
2437
+ @indent = properties[:indent] || ''
2438
+ @buf = properties[:buf] || '_buf'
2439
+ @bufclass = properties[:bufclass] || 'StringBuffer'
2440
+ end
2441
+
2442
+ def add_preamble(src)
2443
+ src << "#{@indent}#{@bufclass} #{@buf} = new #{@bufclass}();"
2444
+ end
2445
+
2446
+ def escape_text(text)
2447
+ @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
2448
+ return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
2449
+ end
2450
+
2451
+ def add_text(src, text)
2452
+ return if text.empty?
2453
+ src << (src.empty? || src[-1] == ?\n ? @indent : ' ')
2454
+ src << @buf << ".append("
2455
+ i = 0
2456
+ text.each_line do |line|
2457
+ src << "\n" << @indent << ' + ' if i > 0
2458
+ i += 1
2459
+ src << '"' << escape_text(line) << '"'
2460
+ end
2461
+ src << ");" << (text[-1] == ?\n ? "\n" : "")
2462
+ end
2463
+
2464
+ def add_stmt(src, code)
2465
+ src << code
2466
+ end
2467
+
2468
+ def add_expr_literal(src, code)
2469
+ src << @indent if src.empty? || src[-1] == ?\n
2470
+ code.strip!
2471
+ src << " #{@buf}.append(#{code});"
2472
+ end
2473
+
2474
+ def add_expr_escaped(src, code)
2475
+ add_expr_literal(src, escaped_expr(code))
2476
+ end
2477
+
2478
+ def add_expr_debug(src, code)
2479
+ code.strip!
2480
+ src << @indent if src.empty? || src[-1] == ?\n
2481
+ src << " System.err.println(\"*** debug: #{code}=\"+(#{code}));"
2482
+ end
2483
+
2484
+ def add_postamble(src)
2485
+ src << "\n" if src[-1] == ?;
2486
+ src << @indent << "return " << @buf << ".toString();\n"
2487
+ #src << @indent << "System.out.print(" << @buf << ".toString());\n"
2488
+ end
2489
+
2490
+ end
2491
+
2492
+
2493
+ ##
2494
+ ## engine for Java
2495
+ ##
2496
+ class Ejava < Basic::Engine
2497
+ include JavaGenerator
2498
+ end
2499
+
2500
+
2501
+ class EscapedEjava < Ejava
2502
+ include EscapeEnhancer
2503
+ end
2504
+
2505
+
2506
+ #class XmlEjava < Ejava
2507
+ # include EscapeEnhancer
2508
+ #end
2509
+
2510
+ class PI::Ejava < PI::Engine
2511
+ include JavaGenerator
2512
+
2513
+ def init_converter(properties={})
2514
+ @pi = 'java'
2515
+ super(properties)
2516
+ end
2517
+
2518
+ end
2519
+
2520
+ end
2521
+ #--end of require 'erubis/engine/ejava'
2522
+ #--begin of require 'erubis/engine/escheme'
2523
+ ##
2524
+ ## $Release: 2.6.5 $
2525
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
2526
+ ##
2527
+
2528
+ #--already included require 'erubis/engine'
2529
+ #--already included require 'erubis/enhancer'
2530
+
2531
+
2532
+ module Erubis
2533
+
2534
+
2535
+ module SchemeGenerator
2536
+ include Generator
2537
+
2538
+ def self.supported_properties() # :nodoc:
2539
+ return [
2540
+ [:func, '_add', "function name (ex. 'display')"],
2541
+ ]
2542
+ end
2543
+
2544
+ def init_generator(properties={})
2545
+ super
2546
+ @escapefunc ||= 'escape'
2547
+ @func = properties[:func] || '_add' # or 'display'
2548
+ end
2549
+
2550
+ def add_preamble(src)
2551
+ return unless @func == '_add'
2552
+ src << "(let ((_buf '())) " + \
2553
+ "(define (_add x) (set! _buf (cons x _buf))) "
2554
+ #src << "(let* ((_buf '())" + \
2555
+ # " (_add (lambda (x) (set! _buf (cons x _buf))))) "
2556
+ end
2557
+
2558
+ def escape_text(text)
2559
+ @table_ ||= { '"'=>'\\"', '\\'=>'\\\\' }
2560
+ text.gsub!(/["\\]/) { |m| @table_[m] }
2561
+ return text
2562
+ end
2563
+
2564
+ def escaped_expr(code)
2565
+ code.strip!
2566
+ return "(#{@escapefunc} #{code})"
2567
+ end
2568
+
2569
+ def add_text(src, text)
2570
+ return if text.empty?
2571
+ t = escape_text(text)
2572
+ if t[-1] == ?\n
2573
+ t[-1, 1] = ''
2574
+ src << "(#{@func} \"" << t << "\\n\")\n"
2575
+ else
2576
+ src << "(#{@func} \"" << t << '")'
2577
+ end
2578
+ end
2579
+
2580
+ def add_stmt(src, code)
2581
+ src << code
2582
+ end
2583
+
2584
+ def add_expr_literal(src, code)
2585
+ code.strip!
2586
+ src << "(#{@func} #{code})"
2587
+ end
2588
+
2589
+ def add_expr_escaped(src, code)
2590
+ add_expr_literal(src, escaped_expr(code))
2591
+ end
2592
+
2593
+ def add_expr_debug(src, code)
2594
+ s = (code.strip! || code).gsub(/\"/, '\\"')
2595
+ src << "(display \"*** debug: #{s}=\")(display #{code.strip})(display \"\\n\")"
2596
+ end
2597
+
2598
+ def add_postamble(src)
2599
+ return unless @func == '_add'
2600
+ src << "\n" unless src[-1] == ?\n
2601
+ src << " (reverse _buf))\n"
2602
+ end
2603
+
2604
+ end
2605
+
2606
+
2607
+ ##
2608
+ ## engine for Scheme
2609
+ ##
2610
+ class Escheme < Basic::Engine
2611
+ include SchemeGenerator
2612
+ end
2613
+
2614
+
2615
+ class EscapedEscheme < Escheme
2616
+ include EscapeEnhancer
2617
+ end
2618
+
2619
+
2620
+ #class XmlEscheme < Escheme
2621
+ # include EscapeEnhancer
2622
+ #end
2623
+
2624
+
2625
+ class PI::Escheme < PI::Engine
2626
+ include SchemeGenerator
2627
+
2628
+ def init_converter(properties={})
2629
+ @pi = 'scheme'
2630
+ super(properties)
2631
+ end
2632
+
2633
+ end
2634
+
2635
+
2636
+ end
2637
+ #--end of require 'erubis/engine/escheme'
2638
+ #--begin of require 'erubis/engine/eperl'
2639
+ ##
2640
+ ## $Release: 2.6.5 $
2641
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
2642
+ ##
2643
+
2644
+ #--already included require 'erubis/engine'
2645
+ #--already included require 'erubis/enhancer'
2646
+
2647
+
2648
+ module Erubis
2649
+
2650
+
2651
+ module PerlGenerator
2652
+ include Generator
2653
+
2654
+ def self.supported_properties() # :nodoc:
2655
+ return [
2656
+ [:func, 'print', "function name"],
2657
+ ]
2658
+ end
2659
+
2660
+ def init_generator(properties={})
2661
+ super
2662
+ @escapefunc ||= 'encode_entities'
2663
+ @func = properties[:func] || 'print'
2664
+ end
2665
+
2666
+ def add_preamble(src)
2667
+ src << "use HTML::Entities; ";
2668
+ end
2669
+
2670
+ def escape_text(text)
2671
+ return text.gsub!(/['\\]/, '\\\\\&') || text
2672
+ end
2673
+
2674
+ def add_text(src, text)
2675
+ src << @func << "('" << escape_text(text) << "'); " unless text.empty?
2676
+ end
2677
+
2678
+ def add_expr_literal(src, code)
2679
+ code.strip!
2680
+ src << @func << "(" << code << "); "
2681
+ end
2682
+
2683
+ def add_expr_escaped(src, code)
2684
+ add_expr_literal(src, escaped_expr(code))
2685
+ end
2686
+
2687
+ def add_expr_debug(src, code)
2688
+ code.strip!
2689
+ s = code.gsub(/\'/, "\\'")
2690
+ src << @func << "('*** debug: #{code}=', #{code}, \"\\n\");"
2691
+ end
2692
+
2693
+ def add_stmt(src, code)
2694
+ src << code
2695
+ end
2696
+
2697
+ def add_postamble(src)
2698
+ src << "\n" unless src[-1] == ?\n
2699
+ end
2700
+
2701
+ end
2702
+
2703
+
2704
+ ##
2705
+ ## engine for Perl
2706
+ ##
2707
+ class Eperl < Basic::Engine
2708
+ include PerlGenerator
2709
+ end
2710
+
2711
+
2712
+ class EscapedEperl < Eperl
2713
+ include EscapeEnhancer
2714
+ end
2715
+
2716
+
2717
+ #class XmlEperl < Eperl
2718
+ # include EscapeEnhancer
2719
+ #end
2720
+
2721
+
2722
+ class PI::Eperl < PI::Engine
2723
+ include PerlGenerator
2724
+
2725
+ def init_converter(properties={})
2726
+ @pi = 'perl'
2727
+ super(properties)
2728
+ end
2729
+
2730
+ end
2731
+
2732
+
2733
+ end
2734
+ #--end of require 'erubis/engine/eperl'
2735
+ #--begin of require 'erubis/engine/ejavascript'
2736
+ ##
2737
+ ## $Release: 2.6.5 $
2738
+ ## copyright(c) 2006-2009 kuwata-lab.com all rights reserved.
2739
+ ##
2740
+
2741
+ #--already included require 'erubis/engine'
2742
+ #--already included require 'erubis/enhancer'
2743
+
2744
+
2745
+ module Erubis
2746
+
2747
+
2748
+ module JavascriptGenerator
2749
+ include Generator
2750
+
2751
+ def self.supported_properties() # :nodoc:
2752
+ list = []
2753
+ #list << [:indent, '', "indent spaces (ex. ' ')"]
2754
+ #list << [:buf, '_buf', "output buffer name"]
2755
+ list << [:docwrite, true, "use 'document.write()' when true"]
2756
+ return list
2757
+ end
2758
+
2759
+ def init_generator(properties={})
2760
+ super
2761
+ @escapefunc ||= 'escape'
2762
+ @indent = properties[:indent] || ''
2763
+ @buf = properties[:out] || '_buf'
2764
+ @docwrite = properties[:docwrite] != false # '!= false' will be removed in the next release
2765
+ end
2766
+
2767
+ def add_preamble(src)
2768
+ src << "#{@indent}var #{@buf} = [];"
2769
+ end
2770
+
2771
+ def escape_text(text)
2772
+ @@table_ ||= { "\r"=>"\\r", "\n"=>"\\n\\\n", "\t"=>"\\t", '"'=>'\\"', "\\"=>"\\\\" }
2773
+ return text.gsub!(/[\r\n\t"\\]/) { |m| @@table_[m] } || text
2774
+ end
2775
+
2776
+ def add_indent(src, indent)
2777
+ src << (src.empty? || src[-1] == ?\n ? indent : ' ')
2778
+ end
2779
+
2780
+ def add_text(src, text)
2781
+ return if text.empty?
2782
+ add_indent(src, @indent)
2783
+ src << @buf << '.push("'
2784
+ s = escape_text(text)
2785
+ if s[-1] == ?\n
2786
+ s[-2, 2] = ''
2787
+ src << s << "\");\n"
2788
+ else
2789
+ src << s << "\");"
2790
+ end
2791
+ end
2792
+
2793
+ def add_stmt(src, code)
2794
+ src << code
2795
+ end
2796
+
2797
+ def add_expr_literal(src, code)
2798
+ add_indent(src, @indent)
2799
+ code.strip!
2800
+ src << "#{@buf}.push(#{code});"
2801
+ end
2802
+
2803
+ def add_expr_escaped(src, code)
2804
+ add_expr_literal(src, escaped_expr(code))
2805
+ end
2806
+
2807
+ def add_expr_debug(src, code)
2808
+ add_indent(src, @indent)
2809
+ code.strip!
2810
+ src << "alert(\"*** debug: #{code}=\"+(#{code}));"
2811
+ end
2812
+
2813
+ def add_postamble(src)
2814
+ src << "\n" if src[-1] == ?;
2815
+ if @docwrite
2816
+ src << @indent << 'document.write(' << @buf << ".join(\"\"));\n"
2817
+ else
2818
+ src << @indent << @buf << ".join(\"\");\n"
2819
+ end
2820
+ end
2821
+
2822
+ end
2823
+
2824
+
2825
+ ##
2826
+ ## engine for JavaScript
2827
+ ##
2828
+ class Ejavascript < Basic::Engine
2829
+ include JavascriptGenerator
2830
+ end
2831
+
2832
+
2833
+ class EscapedEjavascript < Ejavascript
2834
+ include EscapeEnhancer
2835
+ end
2836
+
2837
+
2838
+ #class XmlEjavascript < Ejavascript
2839
+ # include EscapeEnhancer
2840
+ #end
2841
+
2842
+
2843
+ class PI::Ejavascript < PI::Engine
2844
+ include JavascriptGenerator
2845
+
2846
+ def init_converter(properties={})
2847
+ @pi = 'js'
2848
+ super(properties)
2849
+ end
2850
+
2851
+ end
2852
+
2853
+
2854
+ end
2855
+ #--end of require 'erubis/engine/ejavascript'
2856
+
2857
+
2858
+ module Erubis
2859
+
2860
+
2861
+ Ejs = Ejavascript
2862
+ EscapedEjs = EscapedEjavascript
2863
+
2864
+
2865
+ class CommandOptionError < ErubisError
2866
+ end
2867
+
2868
+
2869
+ ##
2870
+ ## main class of command
2871
+ ##
2872
+ ## ex.
2873
+ ## Main.main(ARGV)
2874
+ ##
2875
+ class Main
2876
+
2877
+ def self.main(argv=ARGV)
2878
+ status = 0
2879
+ begin
2880
+ Main.new.execute(ARGV)
2881
+ rescue CommandOptionError => ex
2882
+ $stderr.puts ex.message
2883
+ status = 1
2884
+ end
2885
+ exit(status)
2886
+ end
2887
+
2888
+ def initialize
2889
+ @single_options = "hvxztTSbeBXNUC"
2890
+ @arg_options = "pcrfKIlaE" #C
2891
+ @option_names = {
2892
+ 'h' => :help,
2893
+ 'v' => :version,
2894
+ 'x' => :source,
2895
+ 'z' => :syntax,
2896
+ 'T' => :unexpand,
2897
+ 't' => :untabify, # obsolete
2898
+ 'S' => :intern,
2899
+ 'b' => :bodyonly,
2900
+ 'B' => :binding,
2901
+ 'p' => :pattern,
2902
+ 'c' => :context,
2903
+ #'C' => :class,
2904
+ 'e' => :escape,
2905
+ 'r' => :requires,
2906
+ 'f' => :datafiles,
2907
+ 'K' => :kanji,
2908
+ 'I' => :includes,
2909
+ 'l' => :lang,
2910
+ 'a' => :action,
2911
+ 'E' => :enhancers,
2912
+ 'X' => :notext,
2913
+ 'N' => :linenum,
2914
+ 'U' => :unique,
2915
+ 'C' => :compact,
2916
+ }
2917
+ assert unless @single_options.length + @arg_options.length == @option_names.length
2918
+ (@single_options + @arg_options).each_byte do |ch|
2919
+ assert unless @option_names.key?(ch.chr)
2920
+ end
2921
+ end
2922
+
2923
+
2924
+ def execute(argv=ARGV)
2925
+ ## parse command-line options
2926
+ options, properties = parse_argv(argv, @single_options, @arg_options)
2927
+ filenames = argv
2928
+ options['h'] = true if properties[:help]
2929
+ opts = Object.new
2930
+ arr = @option_names.collect {|ch, name| "def #{name}; @#{name}; end\n" }
2931
+ opts.instance_eval arr.join
2932
+ options.each do |ch, val|
2933
+ name = @option_names[ch]
2934
+ opts.instance_variable_set("@#{name}", val)
2935
+ end
2936
+
2937
+ ## help, version, enhancer list
2938
+ if opts.help || opts.version
2939
+ puts version() if opts.version
2940
+ puts usage() if opts.help
2941
+ puts show_properties() if opts.help
2942
+ puts show_enhancers() if opts.help
2943
+ return
2944
+ end
2945
+
2946
+ ## include path
2947
+ opts.includes.split(/,/).each do |path|
2948
+ $: << path
2949
+ end if opts.includes
2950
+
2951
+ ## require library
2952
+ opts.requires.split(/,/).each do |library|
2953
+ require library
2954
+ end if opts.requires
2955
+
2956
+ ## action
2957
+ action = opts.action
2958
+ action ||= 'syntax' if opts.syntax
2959
+ action ||= 'convert' if opts.source || opts.notext
2960
+
2961
+ ## lang
2962
+ lang = opts.lang || 'ruby'
2963
+ action ||= 'convert' if opts.lang
2964
+
2965
+ ## class name of Eruby
2966
+ #classname = opts.class
2967
+ classname = nil
2968
+ klass = get_classobj(classname, lang, properties[:pi])
2969
+
2970
+ ## kanji code
2971
+ $KCODE = opts.kanji if opts.kanji
2972
+
2973
+ ## read context values from yaml file
2974
+ datafiles = opts.datafiles
2975
+ context = load_datafiles(datafiles, opts)
2976
+
2977
+ ## parse context data
2978
+ if opts.context
2979
+ context = parse_context_data(opts.context, opts)
2980
+ end
2981
+
2982
+ ## properties for engine
2983
+ properties[:escape] = true if opts.escape && !properties.key?(:escape)
2984
+ properties[:pattern] = opts.pattern if opts.pattern
2985
+ #properties[:trim] = false if opts.notrim
2986
+ properties[:preamble] = properties[:postamble] = false if opts.bodyonly
2987
+ properties[:pi] = nil if properties[:pi] == true
2988
+
2989
+ ## create engine and extend enhancers
2990
+ engine = klass.new(nil, properties)
2991
+ enhancers = get_enhancers(opts.enhancers)
2992
+ #enhancers.push(Erubis::EscapeEnhancer) if opts.escape
2993
+ enhancers.each do |enhancer|
2994
+ engine.extend(enhancer)
2995
+ engine.bipattern = properties[:bipattern] if enhancer == Erubis::BiPatternEnhancer
2996
+ end
2997
+
2998
+ ## no-text
2999
+ engine.extend(Erubis::NoTextEnhancer) if opts.notext
3000
+
3001
+ ## convert and execute
3002
+ val = nil
3003
+ msg = "Syntax OK\n"
3004
+ if filenames && !filenames.empty?
3005
+ filenames.each do |filename|
3006
+ File.file?(filename) or
3007
+ raise CommandOptionError.new("#{filename}: file not found.")
3008
+ engine.filename = filename
3009
+ engine.convert!(File.read(filename))
3010
+ val = do_action(action, engine, context, filename, opts)
3011
+ msg = nil if val
3012
+ end
3013
+ else
3014
+ engine.filename = filename = '(stdin)'
3015
+ engine.convert!($stdin.read())
3016
+ val = do_action(action, engine, context, filename, opts)
3017
+ msg = nil if val
3018
+ end
3019
+ print msg if action == 'syntax' && msg
3020
+
3021
+ end
3022
+
3023
+ private
3024
+
3025
+ def do_action(action, engine, context, filename, opts)
3026
+ case action
3027
+ when 'convert'
3028
+ s = manipulate_src(engine.src, opts)
3029
+ when nil, 'exec', 'execute'
3030
+ s = opts.binding ? engine.result(context.to_hash) : engine.evaluate(context)
3031
+ when 'syntax'
3032
+ s = check_syntax(filename, engine.src)
3033
+ else
3034
+ raise "*** internal error"
3035
+ end
3036
+ print s if s
3037
+ return s
3038
+ end
3039
+
3040
+ def manipulate_src(source, opts)
3041
+ flag_linenum = opts.linenum
3042
+ flag_unique = opts.unique
3043
+ flag_compact = opts.compact
3044
+ if flag_linenum
3045
+ n = 0
3046
+ source.gsub!(/^/) { n += 1; "%5d: " % n }
3047
+ source.gsub!(/^ *\d+:\s+?\n/, '') if flag_compact
3048
+ source.gsub!(/(^ *\d+:\s+?\n)+/, "\n") if flag_unique
3049
+ else
3050
+ source.gsub!(/^\s*?\n/, '') if flag_compact
3051
+ source.gsub!(/(^\s*?\n)+/, "\n") if flag_unique
3052
+ end
3053
+ return source
3054
+ end
3055
+
3056
+ def usage(command=nil)
3057
+ command ||= File.basename($0)
3058
+ buf = []
3059
+ buf << "erubis - embedded program converter for multi-language"
3060
+ buf << "Usage: #{command} [..options..] [file ...]"
3061
+ buf << " -h, --help : help"
3062
+ buf << " -v : version"
3063
+ buf << " -x : show converted code"
3064
+ buf << " -X : show converted code, only ruby code and no text part"
3065
+ buf << " -N : numbering: add line numbers (for '-x/-X')"
3066
+ buf << " -U : unique: compress empty lines to a line (for '-x/-X')"
3067
+ buf << " -C : compact: remove empty lines (for '-x/-X')"
3068
+ buf << " -b : body only: no preamble nor postamble (for '-x/-X')"
3069
+ buf << " -z : syntax checking"
3070
+ buf << " -e : escape (equal to '--E Escape')"
3071
+ buf << " -p pattern : embedded pattern (default '<% %>')"
3072
+ buf << " -l lang : convert but no execute (ruby/php/c/java/scheme/perl/js)"
3073
+ buf << " -E e1,e2,... : enhancer names (Escape, PercentLine, BiPattern, ...)"
3074
+ buf << " -I path : library include path"
3075
+ buf << " -K kanji : kanji code (euc/sjis/utf8) (default none)"
3076
+ buf << " -c context : context data string (yaml inline style or ruby code)"
3077
+ buf << " -f datafile : context data file ('*.yaml', '*.yml', or '*.rb')"
3078
+ #buf << " -t : expand tab characters in YAML file"
3079
+ buf << " -T : don't expand tab characters in YAML file"
3080
+ buf << " -S : convert mapping key from string to symbol in YAML file"
3081
+ buf << " -B : invoke 'result(binding)' instead of 'evaluate(context)'"
3082
+ buf << " --pi=name : parse '<?name ... ?>' instead of '<% ... %>'"
3083
+ #'
3084
+ # -T : don't trim spaces around '<% %>'
3085
+ # -c class : class name (XmlEruby/PercentLineEruby/...) (default Eruby)
3086
+ # -r library : require library
3087
+ # -a : action (convert/execute)
3088
+ return buf.join("\n")
3089
+ end
3090
+
3091
+ def collect_supported_properties(erubis_klass)
3092
+ list = []
3093
+ erubis_klass.ancestors.each do |klass|
3094
+ if klass.respond_to?(:supported_properties)
3095
+ list.concat(klass.supported_properties)
3096
+ end
3097
+ end
3098
+ return list
3099
+ end
3100
+
3101
+ def show_properties
3102
+ s = "supported properties:\n"
3103
+ basic_props = collect_supported_properties(Erubis::Basic::Engine)
3104
+ pi_props = collect_supported_properties(Erubis::PI::Engine)
3105
+ list = []
3106
+ common_props = basic_props & pi_props
3107
+ list << ['(common)', common_props]
3108
+ list << ['(basic)', basic_props - common_props]
3109
+ list << ['(pi)', pi_props - common_props]
3110
+ %w[ruby php c java scheme perl javascript].each do |lang|
3111
+ klass = Erubis.const_get("E#{lang}")
3112
+ list << [lang, collect_supported_properties(klass) - basic_props]
3113
+ end
3114
+ list.each do |lang, props|
3115
+ s << " * #{lang}\n"
3116
+ props.each do |name, default_val, desc|
3117
+ s << (" --%-23s : %s\n" % ["#{name}=#{default_val.inspect}", desc])
3118
+ end
3119
+ end
3120
+ s << "\n"
3121
+ return s
3122
+ end
3123
+
3124
+ def show_enhancers
3125
+ dict = {}
3126
+ ObjectSpace.each_object(Module) do |mod|
3127
+ dict[$1] = mod if mod.name =~ /\AErubis::(.*)Enhancer\z/
3128
+ end
3129
+ s = "enhancers:\n"
3130
+ dict.sort_by {|name, mod| name }.each do |name, mod|
3131
+ s << (" %-13s : %s\n" % [name, mod.desc])
3132
+ end
3133
+ return s
3134
+ end
3135
+
3136
+ def version
3137
+ return Erubis::VERSION
3138
+ end
3139
+
3140
+ def parse_argv(argv, arg_none='', arg_required='', arg_optional='')
3141
+ options = {}
3142
+ context = {}
3143
+ while argv[0] && argv[0][0] == ?-
3144
+ optstr = argv.shift
3145
+ optstr = optstr[1, optstr.length-1]
3146
+ #
3147
+ if optstr[0] == ?- # context
3148
+ optstr =~ /\A\-([-\w]+)(?:=(.*))?/ or
3149
+ raise CommandOptionError.new("-#{optstr}: invalid context value.")
3150
+ name, value = $1, $2
3151
+ name = name.gsub(/-/, '_').intern
3152
+ #value = value.nil? ? true : YAML.load(value) # error, why?
3153
+ value = value.nil? ? true : YAML.load("---\n#{value}\n")
3154
+ context[name] = value
3155
+ #
3156
+ else # options
3157
+ while optstr && !optstr.empty?
3158
+ optchar = optstr[0].chr
3159
+ optstr = optstr[1..-1]
3160
+ if arg_none.include?(optchar)
3161
+ options[optchar] = true
3162
+ elsif arg_required.include?(optchar)
3163
+ arg = optstr.empty? ? argv.shift : optstr or
3164
+ raise CommandOptionError.new("-#{optchar}: #{@option_names[optchar]} required.")
3165
+ options[optchar] = arg
3166
+ optstr = nil
3167
+ elsif arg_optional.include?(optchar)
3168
+ arg = optstr.empty? ? true : optstr
3169
+ options[optchar] = arg
3170
+ optstr = nil
3171
+ else
3172
+ raise CommandOptionError.new("-#{optchar}: unknown option.")
3173
+ end
3174
+ end
3175
+ end
3176
+ #
3177
+ end # end of while
3178
+
3179
+ return options, context
3180
+ end
3181
+
3182
+
3183
+ def untabify(str, width=8)
3184
+ list = str.split(/\t/)
3185
+ last = list.pop
3186
+ sb = ''
3187
+ list.each do |s|
3188
+ column = (n = s.rindex(?\n)) ? s.length - n - 1 : s.length
3189
+ n = width - (column % width)
3190
+ sb << s << (' ' * n)
3191
+ end
3192
+ sb << last
3193
+ return sb
3194
+ end
3195
+ #--
3196
+ #def untabify(str, width=8)
3197
+ # sb = ''
3198
+ # str.scan(/(.*?)\t/m) do |s, |
3199
+ # len = (n = s.rindex(?\n)) ? s.length - n - 1 : s.length
3200
+ # sb << s << (" " * (width - len % width))
3201
+ # end
3202
+ # return $' ? (sb << $') : str
3203
+ #end
3204
+ #++
3205
+
3206
+
3207
+ def get_classobj(classname, lang, pi)
3208
+ classname ||= "E#{lang}"
3209
+ base_module = pi ? Erubis::PI : Erubis
3210
+ begin
3211
+ klass = base_module.const_get(classname)
3212
+ rescue NameError
3213
+ klass = nil
3214
+ end
3215
+ unless klass
3216
+ if lang
3217
+ msg = "-l #{lang}: invalid language name (class #{base_module.name}::#{classname} not found)."
3218
+ else
3219
+ msg = "-c #{classname}: invalid class name."
3220
+ end
3221
+ raise CommandOptionError.new(msg)
3222
+ end
3223
+ return klass
3224
+ end
3225
+
3226
+ def get_enhancers(enhancer_names)
3227
+ return [] unless enhancer_names
3228
+ enhancers = []
3229
+ shortname = nil
3230
+ begin
3231
+ enhancer_names.split(/,/).each do |name|
3232
+ shortname = name
3233
+ enhancers << Erubis.const_get("#{shortname}Enhancer")
3234
+ end
3235
+ rescue NameError
3236
+ raise CommandOptionError.new("#{shortname}: no such Enhancer (try '-h' to show all enhancers).")
3237
+ end
3238
+ return enhancers
3239
+ end
3240
+
3241
+ def load_datafiles(filenames, opts)
3242
+ context = Erubis::Context.new
3243
+ return context unless filenames
3244
+ filenames.split(/,/).each do |filename|
3245
+ filename.strip!
3246
+ test(?f, filename) or raise CommandOptionError.new("#{filename}: file not found.")
3247
+ if filename =~ /\.ya?ml$/
3248
+ if opts.unexpand
3249
+ ydoc = YAML.load_file(filename)
3250
+ else
3251
+ ydoc = YAML.load(untabify(File.read(filename)))
3252
+ end
3253
+ ydoc.is_a?(Hash) or raise CommandOptionError.new("#{filename}: root object is not a mapping.")
3254
+ intern_hash_keys(ydoc) if opts.intern
3255
+ context.update(ydoc)
3256
+ elsif filename =~ /\.rb$/
3257
+ str = File.read(filename)
3258
+ context2 = Erubis::Context.new
3259
+ _instance_eval(context2, str)
3260
+ context.update(context2)
3261
+ else
3262
+ CommandOptionError.new("#{filename}: '*.yaml', '*.yml', or '*.rb' required.")
3263
+ end
3264
+ end
3265
+ return context
3266
+ end
3267
+
3268
+ def _instance_eval(_context, _str)
3269
+ _context.instance_eval(_str)
3270
+ end
3271
+
3272
+ def parse_context_data(context_str, opts)
3273
+ if context_str[0] == ?{
3274
+ require 'yaml'
3275
+ ydoc = YAML.load(context_str)
3276
+ unless ydoc.is_a?(Hash)
3277
+ raise CommandOptionError.new("-c: root object is not a mapping.")
3278
+ end
3279
+ intern_hash_keys(ydoc) if opts.intern
3280
+ return ydoc
3281
+ else
3282
+ context = Erubis::Context.new
3283
+ context.instance_eval(context_str, '-c')
3284
+ return context
3285
+ end
3286
+ end
3287
+
3288
+ def intern_hash_keys(obj, done={})
3289
+ return if done.key?(obj.__id__)
3290
+ case obj
3291
+ when Hash
3292
+ done[obj.__id__] = obj
3293
+ obj.keys.each do |key|
3294
+ obj[key.intern] = obj.delete(key) if key.is_a?(String)
3295
+ end
3296
+ obj.values.each do |val|
3297
+ intern_hash_keys(val, done) if val.is_a?(Hash) || val.is_a?(Array)
3298
+ end
3299
+ when Array
3300
+ done[obj.__id__] = obj
3301
+ obj.each do |val|
3302
+ intern_hash_keys(val, done) if val.is_a?(Hash) || val.is_a?(Array)
3303
+ end
3304
+ end
3305
+ end
3306
+
3307
+ def check_syntax(filename, src)
3308
+ require 'open3'
3309
+ #command = (ENV['_'] || 'ruby') + ' -wc' # ENV['_'] stores command name
3310
+ bin = ENV['_'] && File.basename(ENV['_']) =~ /^ruby/ ? ENV['_'] : 'ruby'
3311
+ command = bin + ' -wc'
3312
+ stdin, stdout, stderr = Open3.popen3(command)
3313
+ stdin.write(src)
3314
+ stdin.close
3315
+ result = stdout.read()
3316
+ stdout.close()
3317
+ errmsg = stderr.read()
3318
+ stderr.close()
3319
+ return nil unless errmsg && !errmsg.empty?
3320
+ errmsg =~ /\A-:(\d+): /
3321
+ linenum, message = $1, $'
3322
+ return "#{filename}:#{linenum}: #{message}"
3323
+ end
3324
+
3325
+ end
3326
+
3327
+ end
3328
+ #--end of require 'erubis/main'
3329
+
3330
+ Erubis::Main.main(ARGV)