simple-templater 0.0.1.3 → 0.0.1.4

Sign up to get free protection for your applications and to get access to all the features.
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)