haml_ejs 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. data/.yardopts +11 -0
  2. data/CONTRIBUTING +3 -0
  3. data/MIT-LICENSE +20 -0
  4. data/README.md +68 -0
  5. data/Rakefile +419 -0
  6. data/VERSION +1 -0
  7. data/VERSION_NAME +1 -0
  8. data/bin/haml +9 -0
  9. data/bin/html2haml +7 -0
  10. data/extra/update_watch.rb +13 -0
  11. data/init.rb +18 -0
  12. data/lib/haml.rb +49 -0
  13. data/lib/haml/buffer.rb +297 -0
  14. data/lib/haml/compiler.rb +486 -0
  15. data/lib/haml/engine.rb +312 -0
  16. data/lib/haml/error.rb +22 -0
  17. data/lib/haml/exec.rb +362 -0
  18. data/lib/haml/filters.rb +388 -0
  19. data/lib/haml/haml_ejs.rb +57 -0
  20. data/lib/haml/helpers.rb +608 -0
  21. data/lib/haml/helpers/action_view_extensions.rb +57 -0
  22. data/lib/haml/helpers/action_view_mods.rb +257 -0
  23. data/lib/haml/helpers/xss_mods.rb +165 -0
  24. data/lib/haml/html.rb +412 -0
  25. data/lib/haml/html/erb.rb +141 -0
  26. data/lib/haml/parser.rb +760 -0
  27. data/lib/haml/railtie.rb +19 -0
  28. data/lib/haml/root.rb +7 -0
  29. data/lib/haml/shared.rb +78 -0
  30. data/lib/haml/template.rb +99 -0
  31. data/lib/haml/template/options.rb +16 -0
  32. data/lib/haml/template/patch.rb +58 -0
  33. data/lib/haml/template/plugin.rb +123 -0
  34. data/lib/haml/util.rb +842 -0
  35. data/lib/haml/version.rb +109 -0
  36. data/lib/sass.rb +8 -0
  37. data/lib/sass/plugin.rb +10 -0
  38. data/lib/sass/rails2_shim.rb +9 -0
  39. data/lib/sass/rails3_shim.rb +16 -0
  40. data/rails/init.rb +1 -0
  41. data/test/benchmark.rb +91 -0
  42. data/test/gemfiles/Gemfile.rails-2.0.x +8 -0
  43. data/test/gemfiles/Gemfile.rails-2.0.x.lock +38 -0
  44. data/test/gemfiles/Gemfile.rails-2.1.x +8 -0
  45. data/test/gemfiles/Gemfile.rails-2.1.x.lock +38 -0
  46. data/test/gemfiles/Gemfile.rails-2.2.x +8 -0
  47. data/test/gemfiles/Gemfile.rails-2.2.x.lock +38 -0
  48. data/test/gemfiles/Gemfile.rails-2.3.x +8 -0
  49. data/test/gemfiles/Gemfile.rails-2.3.x.lock +40 -0
  50. data/test/gemfiles/Gemfile.rails-3.0.x +8 -0
  51. data/test/gemfiles/Gemfile.rails-3.0.x.lock +85 -0
  52. data/test/gemfiles/Gemfile.rails-3.1.x +8 -0
  53. data/test/gemfiles/Gemfile.rails-3.1.x.lock +98 -0
  54. data/test/gemfiles/Gemfile.rails-xss-2.3.x +9 -0
  55. data/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +42 -0
  56. data/test/haml-ejs/haml-ejs_test.rb +22 -0
  57. data/test/haml-ejs/templates/conditional.input +3 -0
  58. data/test/haml-ejs/templates/conditional.output +3 -0
  59. data/test/haml-ejs/templates/conditional_and_interpolation.input +2 -0
  60. data/test/haml-ejs/templates/conditional_and_interpolation.output +3 -0
  61. data/test/haml-ejs/templates/conditional_else.input +5 -0
  62. data/test/haml-ejs/templates/conditional_else.output +5 -0
  63. data/test/haml-ejs/templates/conditional_else_elsif.input +7 -0
  64. data/test/haml-ejs/templates/conditional_else_elsif.output +7 -0
  65. data/test/haml-ejs/templates/conditional_elsif.input +5 -0
  66. data/test/haml-ejs/templates/conditional_elsif.output +5 -0
  67. data/test/haml-ejs/templates/conditional_unless.input +3 -0
  68. data/test/haml-ejs/templates/conditional_unless.output +3 -0
  69. data/test/haml-ejs/templates/conditional_unless_else.input +5 -0
  70. data/test/haml-ejs/templates/conditional_unless_else.output +5 -0
  71. data/test/haml-ejs/templates/conditional_unless_elsif_else.input +5 -0
  72. data/test/haml-ejs/templates/conditional_unless_elsif_else.output +5 -0
  73. data/test/haml-ejs/templates/interpolation.input +2 -0
  74. data/test/haml-ejs/templates/interpolation.output +1 -0
  75. data/test/haml-ejs/templates/iteration.input +2 -0
  76. data/test/haml-ejs/templates/iteration.output +3 -0
  77. data/test/haml-ejs/templates/suite.input +26 -0
  78. data/test/haml-ejs/templates/suite.output +27 -0
  79. data/test/haml/engine_test.rb +1925 -0
  80. data/test/haml/erb/_av_partial_1.erb +12 -0
  81. data/test/haml/erb/_av_partial_2.erb +8 -0
  82. data/test/haml/erb/action_view.erb +62 -0
  83. data/test/haml/erb/standard.erb +55 -0
  84. data/test/haml/helper_test.rb +454 -0
  85. data/test/haml/html2haml/erb_tests.rb +440 -0
  86. data/test/haml/html2haml_test.rb +336 -0
  87. data/test/haml/markaby/standard.mab +52 -0
  88. data/test/haml/mocks/article.rb +6 -0
  89. data/test/haml/results/content_for_layout.xhtml +12 -0
  90. data/test/haml/results/eval_suppressed.xhtml +9 -0
  91. data/test/haml/results/filters.xhtml +62 -0
  92. data/test/haml/results/helpers.xhtml +70 -0
  93. data/test/haml/results/helpful.xhtml +10 -0
  94. data/test/haml/results/just_stuff.xhtml +70 -0
  95. data/test/haml/results/list.xhtml +12 -0
  96. data/test/haml/results/nuke_inner_whitespace.xhtml +40 -0
  97. data/test/haml/results/nuke_outer_whitespace.xhtml +148 -0
  98. data/test/haml/results/original_engine.xhtml +20 -0
  99. data/test/haml/results/partial_layout.xhtml +5 -0
  100. data/test/haml/results/partials.xhtml +21 -0
  101. data/test/haml/results/render_layout.xhtml +3 -0
  102. data/test/haml/results/silent_script.xhtml +74 -0
  103. data/test/haml/results/standard.xhtml +162 -0
  104. data/test/haml/results/tag_parsing.xhtml +23 -0
  105. data/test/haml/results/very_basic.xhtml +5 -0
  106. data/test/haml/results/whitespace_handling.xhtml +89 -0
  107. data/test/haml/spec/README.md +97 -0
  108. data/test/haml/spec/lua_haml_spec.lua +30 -0
  109. data/test/haml/spec/ruby_haml_test.rb +19 -0
  110. data/test/haml/spec/tests.json +534 -0
  111. data/test/haml/spec_test.rb +44 -0
  112. data/test/haml/template_test.rb +419 -0
  113. data/test/haml/templates/_av_partial_1.haml +9 -0
  114. data/test/haml/templates/_av_partial_1_ugly.haml +9 -0
  115. data/test/haml/templates/_av_partial_2.haml +5 -0
  116. data/test/haml/templates/_av_partial_2_ugly.haml +5 -0
  117. data/test/haml/templates/_layout.erb +3 -0
  118. data/test/haml/templates/_layout_for_partial.haml +3 -0
  119. data/test/haml/templates/_partial.haml +8 -0
  120. data/test/haml/templates/_text_area.haml +3 -0
  121. data/test/haml/templates/action_view.haml +47 -0
  122. data/test/haml/templates/action_view_ugly.haml +47 -0
  123. data/test/haml/templates/breakage.haml +8 -0
  124. data/test/haml/templates/content_for_layout.haml +8 -0
  125. data/test/haml/templates/eval_suppressed.haml +11 -0
  126. data/test/haml/templates/filters.haml +66 -0
  127. data/test/haml/templates/helpers.haml +55 -0
  128. data/test/haml/templates/helpful.haml +11 -0
  129. data/test/haml/templates/just_stuff.haml +85 -0
  130. data/test/haml/templates/list.haml +12 -0
  131. data/test/haml/templates/nuke_inner_whitespace.haml +32 -0
  132. data/test/haml/templates/nuke_outer_whitespace.haml +144 -0
  133. data/test/haml/templates/original_engine.haml +17 -0
  134. data/test/haml/templates/partial_layout.haml +10 -0
  135. data/test/haml/templates/partialize.haml +1 -0
  136. data/test/haml/templates/partials.haml +12 -0
  137. data/test/haml/templates/render_layout.haml +2 -0
  138. data/test/haml/templates/silent_script.haml +40 -0
  139. data/test/haml/templates/standard.haml +43 -0
  140. data/test/haml/templates/standard_ugly.haml +43 -0
  141. data/test/haml/templates/tag_parsing.haml +21 -0
  142. data/test/haml/templates/very_basic.haml +4 -0
  143. data/test/haml/templates/whitespace_handling.haml +87 -0
  144. data/test/haml/util_test.rb +300 -0
  145. data/test/linked_rails.rb +42 -0
  146. data/test/test_helper.rb +75 -0
  147. data/vendor/sass/CONTRIBUTING +3 -0
  148. data/vendor/sass/MIT-LICENSE +20 -0
  149. data/vendor/sass/README.md +201 -0
  150. data/vendor/sass/Rakefile +339 -0
  151. data/vendor/sass/TODO +39 -0
  152. data/vendor/sass/VERSION +1 -0
  153. data/vendor/sass/VERSION_NAME +1 -0
  154. data/vendor/sass/bin/sass +8 -0
  155. data/vendor/sass/bin/sass-convert +7 -0
  156. data/vendor/sass/bin/scss +8 -0
  157. data/vendor/sass/doc-src/FAQ.md +35 -0
  158. data/vendor/sass/doc-src/INDENTED_SYNTAX.md +210 -0
  159. data/vendor/sass/doc-src/SASS_CHANGELOG.md +2214 -0
  160. data/vendor/sass/doc-src/SASS_REFERENCE.md +1957 -0
  161. data/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +155 -0
  162. data/vendor/sass/ext/extconf.rb +10 -0
  163. data/vendor/sass/extra/update_watch.rb +13 -0
  164. data/vendor/sass/init.rb +18 -0
  165. data/vendor/sass/lib/sass.rb +72 -0
  166. data/vendor/sass/lib/sass/cache_stores.rb +15 -0
  167. data/vendor/sass/lib/sass/cache_stores/base.rb +84 -0
  168. data/vendor/sass/lib/sass/cache_stores/chain.rb +33 -0
  169. data/vendor/sass/lib/sass/cache_stores/filesystem.rb +58 -0
  170. data/vendor/sass/lib/sass/cache_stores/memory.rb +47 -0
  171. data/vendor/sass/lib/sass/cache_stores/null.rb +25 -0
  172. data/vendor/sass/lib/sass/callbacks.rb +66 -0
  173. data/vendor/sass/lib/sass/css.rb +294 -0
  174. data/vendor/sass/lib/sass/engine.rb +862 -0
  175. data/vendor/sass/lib/sass/environment.rb +155 -0
  176. data/vendor/sass/lib/sass/error.rb +201 -0
  177. data/vendor/sass/lib/sass/exec.rb +659 -0
  178. data/vendor/sass/lib/sass/importers.rb +22 -0
  179. data/vendor/sass/lib/sass/importers/base.rb +138 -0
  180. data/vendor/sass/lib/sass/importers/filesystem.rb +144 -0
  181. data/vendor/sass/lib/sass/less.rb +382 -0
  182. data/vendor/sass/lib/sass/plugin.rb +136 -0
  183. data/vendor/sass/lib/sass/plugin/compiler.rb +358 -0
  184. data/vendor/sass/lib/sass/plugin/configuration.rb +125 -0
  185. data/vendor/sass/lib/sass/plugin/generic.rb +15 -0
  186. data/vendor/sass/lib/sass/plugin/merb.rb +48 -0
  187. data/vendor/sass/lib/sass/plugin/rack.rb +60 -0
  188. data/vendor/sass/lib/sass/plugin/rails.rb +47 -0
  189. data/vendor/sass/lib/sass/plugin/staleness_checker.rb +173 -0
  190. data/vendor/sass/lib/sass/railtie.rb +9 -0
  191. data/vendor/sass/lib/sass/repl.rb +58 -0
  192. data/vendor/sass/lib/sass/root.rb +7 -0
  193. data/vendor/sass/lib/sass/script.rb +40 -0
  194. data/vendor/sass/lib/sass/script/bool.rb +18 -0
  195. data/vendor/sass/lib/sass/script/color.rb +480 -0
  196. data/vendor/sass/lib/sass/script/css_lexer.rb +29 -0
  197. data/vendor/sass/lib/sass/script/css_parser.rb +31 -0
  198. data/vendor/sass/lib/sass/script/funcall.rb +162 -0
  199. data/vendor/sass/lib/sass/script/functions.rb +1343 -0
  200. data/vendor/sass/lib/sass/script/interpolation.rb +70 -0
  201. data/vendor/sass/lib/sass/script/lexer.rb +334 -0
  202. data/vendor/sass/lib/sass/script/list.rb +76 -0
  203. data/vendor/sass/lib/sass/script/literal.rb +245 -0
  204. data/vendor/sass/lib/sass/script/node.rb +91 -0
  205. data/vendor/sass/lib/sass/script/number.rb +429 -0
  206. data/vendor/sass/lib/sass/script/operation.rb +91 -0
  207. data/vendor/sass/lib/sass/script/parser.rb +467 -0
  208. data/vendor/sass/lib/sass/script/string.rb +51 -0
  209. data/vendor/sass/lib/sass/script/string_interpolation.rb +94 -0
  210. data/vendor/sass/lib/sass/script/unary_operation.rb +57 -0
  211. data/vendor/sass/lib/sass/script/variable.rb +54 -0
  212. data/vendor/sass/lib/sass/scss.rb +17 -0
  213. data/vendor/sass/lib/sass/scss/css_parser.rb +46 -0
  214. data/vendor/sass/lib/sass/scss/parser.rb +920 -0
  215. data/vendor/sass/lib/sass/scss/rx.rb +127 -0
  216. data/vendor/sass/lib/sass/scss/sass_parser.rb +11 -0
  217. data/vendor/sass/lib/sass/scss/script_lexer.rb +15 -0
  218. data/vendor/sass/lib/sass/scss/script_parser.rb +25 -0
  219. data/vendor/sass/lib/sass/scss/static_parser.rb +40 -0
  220. data/vendor/sass/lib/sass/selector.rb +361 -0
  221. data/vendor/sass/lib/sass/selector/abstract_sequence.rb +62 -0
  222. data/vendor/sass/lib/sass/selector/comma_sequence.rb +81 -0
  223. data/vendor/sass/lib/sass/selector/sequence.rb +233 -0
  224. data/vendor/sass/lib/sass/selector/simple.rb +113 -0
  225. data/vendor/sass/lib/sass/selector/simple_sequence.rb +134 -0
  226. data/vendor/sass/lib/sass/shared.rb +78 -0
  227. data/vendor/sass/lib/sass/tree/charset_node.rb +22 -0
  228. data/vendor/sass/lib/sass/tree/comment_node.rb +77 -0
  229. data/vendor/sass/lib/sass/tree/debug_node.rb +18 -0
  230. data/vendor/sass/lib/sass/tree/directive_node.rb +23 -0
  231. data/vendor/sass/lib/sass/tree/each_node.rb +24 -0
  232. data/vendor/sass/lib/sass/tree/extend_node.rb +29 -0
  233. data/vendor/sass/lib/sass/tree/for_node.rb +36 -0
  234. data/vendor/sass/lib/sass/tree/function_node.rb +27 -0
  235. data/vendor/sass/lib/sass/tree/if_node.rb +65 -0
  236. data/vendor/sass/lib/sass/tree/import_node.rb +68 -0
  237. data/vendor/sass/lib/sass/tree/media_node.rb +32 -0
  238. data/vendor/sass/lib/sass/tree/mixin_def_node.rb +27 -0
  239. data/vendor/sass/lib/sass/tree/mixin_node.rb +32 -0
  240. data/vendor/sass/lib/sass/tree/node.rb +204 -0
  241. data/vendor/sass/lib/sass/tree/prop_node.rb +155 -0
  242. data/vendor/sass/lib/sass/tree/return_node.rb +18 -0
  243. data/vendor/sass/lib/sass/tree/root_node.rb +28 -0
  244. data/vendor/sass/lib/sass/tree/rule_node.rb +129 -0
  245. data/vendor/sass/lib/sass/tree/variable_node.rb +30 -0
  246. data/vendor/sass/lib/sass/tree/visitors/base.rb +75 -0
  247. data/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +134 -0
  248. data/vendor/sass/lib/sass/tree/visitors/convert.rb +255 -0
  249. data/vendor/sass/lib/sass/tree/visitors/cssize.rb +175 -0
  250. data/vendor/sass/lib/sass/tree/visitors/perform.rb +301 -0
  251. data/vendor/sass/lib/sass/tree/visitors/to_css.rb +216 -0
  252. data/vendor/sass/lib/sass/tree/warn_node.rb +18 -0
  253. data/vendor/sass/lib/sass/tree/while_node.rb +18 -0
  254. data/vendor/sass/lib/sass/util.rb +669 -0
  255. data/vendor/sass/lib/sass/util/subset_map.rb +101 -0
  256. data/vendor/sass/lib/sass/version.rb +112 -0
  257. data/vendor/sass/rails/init.rb +1 -0
  258. data/vendor/sass/sass.gemspec +32 -0
  259. data/vendor/sass/test/sass/cache_test.rb +74 -0
  260. data/vendor/sass/test/sass/callbacks_test.rb +61 -0
  261. data/vendor/sass/test/sass/conversion_test.rb +1203 -0
  262. data/vendor/sass/test/sass/css2sass_test.rb +364 -0
  263. data/vendor/sass/test/sass/data/hsl-rgb.txt +319 -0
  264. data/vendor/sass/test/sass/engine_test.rb +2469 -0
  265. data/vendor/sass/test/sass/extend_test.rb +1348 -0
  266. data/vendor/sass/test/sass/functions_test.rb +1025 -0
  267. data/vendor/sass/test/sass/importer_test.rb +82 -0
  268. data/vendor/sass/test/sass/less_conversion_test.rb +653 -0
  269. data/vendor/sass/test/sass/mock_importer.rb +49 -0
  270. data/vendor/sass/test/sass/more_results/more1.css +9 -0
  271. data/vendor/sass/test/sass/more_results/more1_with_line_comments.css +26 -0
  272. data/vendor/sass/test/sass/more_results/more_import.css +29 -0
  273. data/vendor/sass/test/sass/more_templates/_more_partial.sass +2 -0
  274. data/vendor/sass/test/sass/more_templates/more1.sass +23 -0
  275. data/vendor/sass/test/sass/more_templates/more_import.sass +11 -0
  276. data/vendor/sass/test/sass/plugin_test.rb +469 -0
  277. data/vendor/sass/test/sass/results/alt.css +4 -0
  278. data/vendor/sass/test/sass/results/basic.css +9 -0
  279. data/vendor/sass/test/sass/results/compact.css +5 -0
  280. data/vendor/sass/test/sass/results/complex.css +86 -0
  281. data/vendor/sass/test/sass/results/compressed.css +1 -0
  282. data/vendor/sass/test/sass/results/expanded.css +19 -0
  283. data/vendor/sass/test/sass/results/if.css +3 -0
  284. data/vendor/sass/test/sass/results/import.css +31 -0
  285. data/vendor/sass/test/sass/results/import_charset.css +4 -0
  286. data/vendor/sass/test/sass/results/import_charset_1_8.css +4 -0
  287. data/vendor/sass/test/sass/results/import_charset_ibm866.css +4 -0
  288. data/vendor/sass/test/sass/results/line_numbers.css +49 -0
  289. data/vendor/sass/test/sass/results/mixins.css +95 -0
  290. data/vendor/sass/test/sass/results/multiline.css +24 -0
  291. data/vendor/sass/test/sass/results/nested.css +22 -0
  292. data/vendor/sass/test/sass/results/options.css +1 -0
  293. data/vendor/sass/test/sass/results/parent_ref.css +13 -0
  294. data/vendor/sass/test/sass/results/script.css +16 -0
  295. data/vendor/sass/test/sass/results/scss_import.css +31 -0
  296. data/vendor/sass/test/sass/results/scss_importee.css +2 -0
  297. data/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +1 -0
  298. data/vendor/sass/test/sass/results/subdir/subdir.css +3 -0
  299. data/vendor/sass/test/sass/results/units.css +11 -0
  300. data/vendor/sass/test/sass/results/warn.css +0 -0
  301. data/vendor/sass/test/sass/results/warn_imported.css +0 -0
  302. data/vendor/sass/test/sass/script_conversion_test.rb +283 -0
  303. data/vendor/sass/test/sass/script_test.rb +496 -0
  304. data/vendor/sass/test/sass/scss/css_test.rb +916 -0
  305. data/vendor/sass/test/sass/scss/rx_test.rb +156 -0
  306. data/vendor/sass/test/sass/scss/scss_test.rb +1249 -0
  307. data/vendor/sass/test/sass/scss/test_helper.rb +37 -0
  308. data/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +4 -0
  309. data/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +4 -0
  310. data/vendor/sass/test/sass/templates/_partial.sass +2 -0
  311. data/vendor/sass/test/sass/templates/alt.sass +16 -0
  312. data/vendor/sass/test/sass/templates/basic.sass +23 -0
  313. data/vendor/sass/test/sass/templates/bork1.sass +2 -0
  314. data/vendor/sass/test/sass/templates/bork2.sass +2 -0
  315. data/vendor/sass/test/sass/templates/bork3.sass +2 -0
  316. data/vendor/sass/test/sass/templates/bork4.sass +2 -0
  317. data/vendor/sass/test/sass/templates/compact.sass +17 -0
  318. data/vendor/sass/test/sass/templates/complex.sass +305 -0
  319. data/vendor/sass/test/sass/templates/compressed.sass +15 -0
  320. data/vendor/sass/test/sass/templates/expanded.sass +17 -0
  321. data/vendor/sass/test/sass/templates/if.sass +11 -0
  322. data/vendor/sass/test/sass/templates/import.sass +12 -0
  323. data/vendor/sass/test/sass/templates/import_charset.sass +7 -0
  324. data/vendor/sass/test/sass/templates/import_charset_1_8.sass +4 -0
  325. data/vendor/sass/test/sass/templates/import_charset_ibm866.sass +9 -0
  326. data/vendor/sass/test/sass/templates/importee.less +2 -0
  327. data/vendor/sass/test/sass/templates/importee.sass +19 -0
  328. data/vendor/sass/test/sass/templates/line_numbers.sass +13 -0
  329. data/vendor/sass/test/sass/templates/mixin_bork.sass +5 -0
  330. data/vendor/sass/test/sass/templates/mixins.sass +76 -0
  331. data/vendor/sass/test/sass/templates/multiline.sass +20 -0
  332. data/vendor/sass/test/sass/templates/nested.sass +25 -0
  333. data/vendor/sass/test/sass/templates/nested_bork1.sass +2 -0
  334. data/vendor/sass/test/sass/templates/nested_bork2.sass +2 -0
  335. data/vendor/sass/test/sass/templates/nested_bork3.sass +2 -0
  336. data/vendor/sass/test/sass/templates/nested_bork4.sass +2 -0
  337. data/vendor/sass/test/sass/templates/nested_import.sass +2 -0
  338. data/vendor/sass/test/sass/templates/nested_mixin_bork.sass +6 -0
  339. data/vendor/sass/test/sass/templates/options.sass +2 -0
  340. data/vendor/sass/test/sass/templates/parent_ref.sass +25 -0
  341. data/vendor/sass/test/sass/templates/script.sass +101 -0
  342. data/vendor/sass/test/sass/templates/scss_import.scss +11 -0
  343. data/vendor/sass/test/sass/templates/scss_importee.scss +1 -0
  344. data/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +2 -0
  345. data/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +3 -0
  346. data/vendor/sass/test/sass/templates/subdir/subdir.sass +6 -0
  347. data/vendor/sass/test/sass/templates/units.sass +11 -0
  348. data/vendor/sass/test/sass/templates/warn.sass +3 -0
  349. data/vendor/sass/test/sass/templates/warn_imported.sass +4 -0
  350. data/vendor/sass/test/sass/test_helper.rb +8 -0
  351. data/vendor/sass/test/sass/util/subset_map_test.rb +91 -0
  352. data/vendor/sass/test/sass/util_test.rb +254 -0
  353. data/vendor/sass/test/test_helper.rb +69 -0
  354. data/vendor/sass/yard/callbacks.rb +29 -0
  355. data/vendor/sass/yard/default/fulldoc/html/css/common.sass +26 -0
  356. data/vendor/sass/yard/default/layout/html/footer.erb +12 -0
  357. data/vendor/sass/yard/inherited_hash.rb +41 -0
  358. metadata +458 -0
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+
4
+ begin
5
+ require 'json'
6
+ rescue LoadError
7
+ end
8
+
9
+ class SpecTest < Test::Unit::TestCase
10
+ spec_file = File.dirname(__FILE__) + '/spec/tests.json'
11
+ if !File.exists?(spec_file)
12
+ error = <<MSG.rstrip
13
+ Couldn't load haml-spec, skipping some tests.
14
+ To use haml-spec, run `git submodule update --init`
15
+ MSG
16
+ elsif !defined?(JSON)
17
+ error = "Couldn't load json, skipping some tests."
18
+ end
19
+
20
+ if error
21
+ define_method(:test_fake_couldnt_load_spec) {warn("\n" + error)}
22
+ else
23
+ JSON.parse(File.read(spec_file)).each do |name, tests|
24
+ tests.each do |subname, test|
25
+ define_method("test_spec: #{name} (#{subname})") do
26
+ options = convert_hash(test["config"])
27
+ options[:format] = options[:format].to_sym if options[:format]
28
+ engine = Haml::Engine.new(test["haml"], options)
29
+
30
+ result = engine.render(Object.new, convert_hash(test["locals"]))
31
+
32
+ assert_equal(test["html"], result.rstrip)
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def convert_hash(hash)
41
+ return {} unless hash
42
+ Haml::Util.map_keys(hash) {|k| k.to_sym}
43
+ end
44
+ end
@@ -0,0 +1,419 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+ require 'sass/plugin'
4
+ require File.dirname(__FILE__) + '/mocks/article'
5
+
6
+ require 'action_pack/version'
7
+
8
+ module Haml::Filters::Test
9
+ include Haml::Filters::Base
10
+
11
+ def render(text)
12
+ "TESTING HAHAHAHA!"
13
+ end
14
+ end
15
+
16
+ module Haml::Helpers
17
+ def test_partial(name, locals = {})
18
+ Haml::Engine.new(File.read(File.join(TemplateTest::TEMPLATE_PATH, "_#{name}.haml"))).render(self, locals)
19
+ end
20
+ end
21
+
22
+ class Egocentic
23
+ def method_missing(*args)
24
+ self
25
+ end
26
+ end
27
+
28
+ class DummyController
29
+ attr_accessor :logger
30
+ def initialize
31
+ @logger = Egocentic.new
32
+ end
33
+
34
+ def self.controller_path
35
+ ''
36
+ end
37
+
38
+ def controller_path
39
+ ''
40
+ end
41
+ end
42
+
43
+ class TemplateTest < Test::Unit::TestCase
44
+ TEMPLATE_PATH = File.join(File.dirname(__FILE__), "templates")
45
+ TEMPLATES = %w{ very_basic standard helpers
46
+ whitespace_handling original_engine list helpful
47
+ silent_script tag_parsing just_stuff partials
48
+ filters nuke_outer_whitespace nuke_inner_whitespace
49
+ render_layout }
50
+ # partial layouts were introduced in 2.0.0
51
+ TEMPLATES << 'partial_layout' unless ActionPack::VERSION::MAJOR < 2
52
+
53
+ def setup
54
+ @base = create_base
55
+
56
+ # filters template uses :sass
57
+ Sass::Plugin.options.update(:line_comments => true, :style => :compact)
58
+ end
59
+
60
+ def create_base
61
+ vars = { 'article' => Article.new, 'foo' => 'value one' }
62
+
63
+ unless Haml::Util.has?(:instance_method, ActionView::Base, :finder)
64
+ base = ActionView::Base.new(TEMPLATE_PATH, vars)
65
+ else
66
+ # Rails 2.1.0
67
+ base = ActionView::Base.new([], vars)
68
+ base.finder.append_view_path(TEMPLATE_PATH)
69
+ end
70
+
71
+ if Haml::Util.has?(:private_method, base, :evaluate_assigns)
72
+ # Rails < 3.0
73
+ base.send(:evaluate_assigns)
74
+ elsif Haml::Util.has?(:private_method, base, :_evaluate_assigns_and_ivars)
75
+ # Rails 2.2
76
+ base.send(:_evaluate_assigns_and_ivars)
77
+ end
78
+
79
+ # This is needed by RJS in (at least) Rails 3
80
+ base.instance_variable_set('@template', base)
81
+
82
+ # This is used by form_for.
83
+ # It's usually provided by ActionController::Base.
84
+ def base.protect_against_forgery?; false; end
85
+
86
+ # In Rails <= 2.1, a fake controller object was needed
87
+ # to provide the controller path.
88
+ if ActionPack::VERSION::MAJOR < 2 ||
89
+ (ActionPack::VERSION::MAJOR == 2 && ActionPack::VERSION::MINOR < 2)
90
+ base.controller = DummyController.new
91
+ end
92
+
93
+ base
94
+ end
95
+
96
+ def render(text, opts = {})
97
+ return @base.render(:inline => text, :type => :haml) if opts == :action_view
98
+ Haml::Engine.new(text, opts).to_html(@base)
99
+ end
100
+
101
+ def load_result(name)
102
+ @result = ''
103
+ File.new(File.dirname(__FILE__) + "/results/#{name}.xhtml").each_line { |l| @result += l }
104
+ @result
105
+ end
106
+
107
+ def assert_renders_correctly(name, &render_method)
108
+ old_options = Haml::Template.options.dup
109
+ Haml::Template.options[:escape_html] = false
110
+ if ActionPack::VERSION::MAJOR < 2 ||
111
+ (ActionPack::VERSION::MAJOR == 2 && ActionPack::VERSION::MINOR < 2)
112
+ render_method ||= proc { |name| @base.render(name) }
113
+ else
114
+ render_method ||= proc { |name| @base.render(:file => name) }
115
+ end
116
+
117
+ load_result(name).split("\n").zip(render_method[name].split("\n")).each_with_index do |pair, line|
118
+ message = "template: #{name}\nline: #{line}"
119
+ assert_equal(pair.first, pair.last, message)
120
+ end
121
+ rescue Haml::Util.av_template_class(:Error) => e
122
+ if e.message =~ /Can't run [\w:]+ filter; required (one of|file) ((?:'\w+'(?: or )?)+)(, but none were found| not found)/
123
+ puts "\nCouldn't require #{$2}; skipping a test."
124
+ else
125
+ raise e
126
+ end
127
+ ensure
128
+ Haml::Template.options = old_options
129
+ end
130
+
131
+ def test_empty_render_should_remain_empty
132
+ assert_equal('', render(''))
133
+ end
134
+
135
+ TEMPLATES.each do |template|
136
+ define_method "test_template_should_render_correctly [template: #{template}] " do
137
+ assert_renders_correctly template
138
+ end
139
+ end
140
+
141
+ def test_templates_should_render_correctly_with_render_proc
142
+ assert_renders_correctly("standard") do |name|
143
+ engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml"))
144
+ engine.render_proc(@base).call
145
+ end
146
+ end
147
+
148
+ def test_templates_should_render_correctly_with_def_method
149
+ assert_renders_correctly("standard") do |name|
150
+ engine = Haml::Engine.new(File.read(File.dirname(__FILE__) + "/templates/#{name}.haml"))
151
+ engine.def_method(@base, "render_standard")
152
+ @base.render_standard
153
+ end
154
+ end
155
+
156
+ if ActionPack::VERSION::MAJOR < 3
157
+ # Rails 3.0.0 deprecates the use of yield with a layout
158
+ # for calls to render :file
159
+ def test_action_view_templates_render_correctly
160
+ proc = lambda do
161
+ @base.content_for(:layout) {'Lorem ipsum dolor sit amet'}
162
+ assert_renders_correctly 'content_for_layout'
163
+ end
164
+
165
+ if @base.respond_to?(:with_output_buffer)
166
+ @base.with_output_buffer("", &proc)
167
+ else
168
+ proc.call
169
+ end
170
+ end
171
+ end
172
+
173
+ def test_instance_variables_should_work_inside_templates
174
+ @base.instance_variable_set("@content_for_layout", 'something')
175
+ assert_equal("<p>something</p>", render("%p= @content_for_layout").chomp)
176
+
177
+ @base.instance_eval("@author = 'Hampton Catlin'")
178
+ assert_equal("<div class='author'>Hampton Catlin</div>", render(".author= @author").chomp)
179
+
180
+ @base.instance_eval("@author = 'Hampton'")
181
+ assert_equal("Hampton", render("= @author").chomp)
182
+
183
+ @base.instance_eval("@author = 'Catlin'")
184
+ assert_equal("Catlin", render("= @author").chomp)
185
+ end
186
+
187
+ def test_instance_variables_should_work_inside_attributes
188
+ @base.instance_eval("@author = 'hcatlin'")
189
+ assert_equal("<p class='hcatlin'>foo</p>", render("%p{:class => @author} foo").chomp)
190
+ end
191
+
192
+ def test_template_renders_should_eval
193
+ assert_equal("2\n", render("= 1+1"))
194
+ end
195
+
196
+ unless Haml::Util.ap_geq_3?
197
+ def test_form_for_error_return
198
+ assert_raise(Haml::Error) { render(<<HAML) }
199
+ = form_for :article, @article, :url => '' do |f|
200
+ Title:
201
+ = f.text_field :title
202
+ Body:
203
+ = f.text_field :body
204
+ HAML
205
+ end
206
+
207
+ def test_form_tag_error_return
208
+ assert_raise(Haml::Error) { render(<<HAML) }
209
+ = form_tag '' do
210
+ Title:
211
+ Body:
212
+ HAML
213
+ end
214
+ end
215
+
216
+ def test_haml_options
217
+ old_options = Haml::Template.options.dup
218
+ Haml::Template.options[:suppress_eval] = true
219
+ old_base, @base = @base, create_base
220
+ assert_renders_correctly("eval_suppressed")
221
+ ensure
222
+ @base = old_base
223
+ Haml::Template.options = old_options
224
+ end
225
+
226
+ def test_with_output_buffer_with_ugly
227
+ return unless Haml::Util.has?(:instance_method, ActionView::Base, :with_output_buffer)
228
+ assert_equal(<<HTML, render(<<HAML, :ugly => true))
229
+ <p>
230
+ foo
231
+ baz
232
+ </p>
233
+ HTML
234
+ %p
235
+ foo
236
+ -# Parenthesis required due to Rails 3.0 deprecation of block helpers
237
+ -# that return strings.
238
+ - (with_output_buffer do
239
+ bar
240
+ = "foo".gsub(/./) do |s|
241
+ - "flup"
242
+ - end; nil)
243
+ baz
244
+ HAML
245
+ end
246
+
247
+ def test_exceptions_should_work_correctly
248
+ begin
249
+ render("- raise 'oops!'")
250
+ rescue Exception => e
251
+ assert_equal("oops!", e.message)
252
+ assert_match(/^\(haml\):1/, e.backtrace[0])
253
+ else
254
+ assert false
255
+ end
256
+
257
+ template = <<END
258
+ %p
259
+ %h1 Hello!
260
+ = "lots of lines"
261
+ = "even more!"
262
+ - raise 'oh no!'
263
+ %p
264
+ this is after the exception
265
+ %strong yes it is!
266
+ ho ho ho.
267
+ END
268
+
269
+ begin
270
+ render(template.chomp)
271
+ rescue Exception => e
272
+ assert_match(/^\(haml\):5/, e.backtrace[0])
273
+ else
274
+ assert false
275
+ end
276
+ end
277
+
278
+ if defined?(ActionView::OutputBuffer) &&
279
+ Haml::Util.has?(:instance_method, ActionView::OutputBuffer, :append_if_string=)
280
+ def test_av_block_deprecation_warning
281
+ assert_warning(/^DEPRECATION WARNING: - style block helpers are deprecated\. Please use =\./) do
282
+ assert_equal <<HTML, render(<<HAML, :action_view)
283
+ <form #{rails_form_attr}action="" method="post">#{rails_form_opener}
284
+ Title:
285
+ <input id="article_title" name="article[title]" size="30" type="text" value="Hello" />
286
+ Body:
287
+ <input id="article_body" name="article[body]" size="30" type="text" value="World" />
288
+ </form>
289
+ HTML
290
+ - form_for #{form_for_calling_convention(:article)}, :url => '' do |f|
291
+ Title:
292
+ = f.text_field :title
293
+ Body:
294
+ = f.text_field :body
295
+ HAML
296
+ end
297
+ end
298
+ end
299
+
300
+ ## XSS Protection Tests
301
+
302
+ # In order to enable these, either test against Rails 3.0
303
+ # or test against Rails 2.2.5+ with the rails_xss plugin
304
+ # (http://github.com/NZKoz/rails_xss) in test/plugins.
305
+ if Haml::Util.rails_xss_safe?
306
+ def test_escape_html_option_set
307
+ assert Haml::Template.options[:escape_html]
308
+ end
309
+
310
+ def test_xss_protection
311
+ assert_equal("Foo &amp; Bar\n", render('= "Foo & Bar"', :action_view))
312
+ end
313
+
314
+ def test_xss_protection_with_safe_strings
315
+ assert_equal("Foo & Bar\n", render('= Haml::Util.html_safe("Foo & Bar")', :action_view))
316
+ end
317
+
318
+ def test_xss_protection_with_bang
319
+ assert_equal("Foo & Bar\n", render('!= "Foo & Bar"', :action_view))
320
+ end
321
+
322
+ def test_xss_protection_in_interpolation
323
+ assert_equal("Foo &amp; Bar\n", render('Foo #{"&"} Bar', :action_view))
324
+ end
325
+
326
+ def test_xss_protection_with_bang_in_interpolation
327
+ assert_equal("Foo & Bar\n", render('! Foo #{"&"} Bar', :action_view))
328
+ end
329
+
330
+ def test_xss_protection_with_safe_strings_in_interpolation
331
+ assert_equal("Foo & Bar\n", render('Foo #{Haml::Util.html_safe("&")} Bar', :action_view))
332
+ end
333
+
334
+ def test_xss_protection_with_mixed_strings_in_interpolation
335
+ assert_equal("Foo & Bar &amp; Baz\n", render('Foo #{Haml::Util.html_safe("&")} Bar #{"&"} Baz', :action_view))
336
+ end
337
+
338
+ def test_rendered_string_is_html_safe
339
+ assert(render("Foo").html_safe?)
340
+ end
341
+
342
+ def test_rendered_string_is_html_safe_with_action_view
343
+ assert(render("Foo", :action_view).html_safe?)
344
+ end
345
+
346
+ def test_xss_html_escaping_with_non_strings
347
+ assert_equal("4\n", render("= html_escape(4)"))
348
+ end
349
+
350
+ def test_xss_protection_with_concat
351
+ assert_equal("Foo &amp; Bar", render('- concat "Foo & Bar"', :action_view))
352
+ end
353
+
354
+ def test_xss_protection_with_concat_with_safe_string
355
+ assert_equal("Foo & Bar", render('- concat(Haml::Util.html_safe("Foo & Bar"))', :action_view))
356
+ end
357
+
358
+ if Haml::Util.has?(:instance_method, ActionView::Helpers::TextHelper, :safe_concat)
359
+ def test_xss_protection_with_safe_concat
360
+ assert_equal("Foo & Bar", render('- safe_concat "Foo & Bar"', :action_view))
361
+ end
362
+ end
363
+
364
+ ## Regression
365
+
366
+ def test_xss_protection_with_nested_haml_tag
367
+ assert_equal(<<HTML, render(<<HAML, :action_view))
368
+ <div>
369
+ <ul>
370
+ <li>Content!</li>
371
+ </ul>
372
+ </div>
373
+ HTML
374
+ - haml_tag :div do
375
+ - haml_tag :ul do
376
+ - haml_tag :li, "Content!"
377
+ HAML
378
+ end
379
+
380
+ def test_xss_protection_with_form_for
381
+ assert_equal(<<HTML, render(<<HAML, :action_view))
382
+ <form #{rails_form_attr}action="" method="post">#{rails_form_opener}
383
+ Title:
384
+ <input id="article_title" name="article[title]" size="30" type="text" value="Hello" />
385
+ Body:
386
+ <input id="article_body" name="article[body]" size="30" type="text" value="World" />
387
+ </form>
388
+ HTML
389
+ #{rails_block_helper_char} form_for #{form_for_calling_convention(:article)}, :url => '' do |f|
390
+ Title:
391
+ = f.text_field :title
392
+ Body:
393
+ = f.text_field :body
394
+ HAML
395
+ end
396
+
397
+ if defined?(ActionView::Helpers::PrototypeHelper)
398
+ def test_rjs
399
+ assert_equal(<<HTML, render(<<HAML, :action_view))
400
+ window.location.reload();
401
+ HTML
402
+ = update_page do |p|
403
+ - p.reload
404
+ HAML
405
+ end
406
+ end
407
+
408
+ def test_cache
409
+ @base.controller = ActionController::Base.new
410
+ @base.controller.perform_caching = false
411
+ assert_equal(<<HTML, render(<<HAML, :action_view))
412
+ Test
413
+ HTML
414
+ - cache do
415
+ Test
416
+ HAML
417
+ end
418
+ end
419
+ end