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,440 @@
1
+ module ErbTests
2
+ def test_erb
3
+ assert_equal '- foo = bar', render_erb('<% foo = bar %>')
4
+ assert_equal '- foo = bar', render_erb('<% foo = bar -%>')
5
+ assert_equal '= h @item.title', render_erb('<%=h @item.title %>')
6
+ assert_equal '= h @item.title', render_erb('<%=h @item.title -%>')
7
+ end
8
+
9
+ def test_inline_erb
10
+ assert_equal("%p= foo", render_erb("<p><%= foo %></p>"))
11
+ end
12
+
13
+ def test_non_inline_erb
14
+ assert_equal(<<HAML.rstrip, render_erb(<<HTML))
15
+ %p
16
+ = foo
17
+ HAML
18
+ <p>
19
+ <%= foo %>
20
+ </p>
21
+ HTML
22
+ assert_equal(<<HAML.rstrip, render_erb(<<HTML))
23
+ %p
24
+ = foo
25
+ HAML
26
+ <p>
27
+ <%= foo %></p>
28
+ HTML
29
+ assert_equal(<<HAML.rstrip, render_erb(<<HTML))
30
+ %p
31
+ = foo
32
+ HAML
33
+ <p><%= foo %>
34
+ </p>
35
+ HTML
36
+ end
37
+
38
+ def test_erb_in_cdata
39
+ assert_equal(<<HAML.rstrip, render_erb(<<HTML))
40
+ :cdata
41
+ Foo \#{bar} baz
42
+ HAML
43
+ <![CDATA[Foo <%= bar %> baz]]>
44
+ HTML
45
+ end
46
+
47
+ def test_erb_in_script
48
+ assert_equal(<<HAML.rstrip, render_erb(<<HTML))
49
+ :javascript
50
+ function foo() {
51
+ return \#{foo.to_json};
52
+ }
53
+ HAML
54
+ <script type="text/javascript">
55
+ function foo() {
56
+ return <%= foo.to_json %>;
57
+ }
58
+ </script>
59
+ HTML
60
+ end
61
+
62
+ def test_erb_in_style
63
+ assert_equal(<<HAML.rstrip, render_erb(<<HTML))
64
+ :css
65
+ foo {
66
+ bar: \#{"baz"};
67
+ }
68
+ HAML
69
+ <style type="text/css">
70
+ foo {
71
+ bar: <%= "baz" %>;
72
+ }
73
+ </style>
74
+ HTML
75
+ end
76
+
77
+ def test_erb_in_line
78
+ assert_equal 'foo bar #{baz}', render_erb('foo bar <%= baz %>')
79
+ assert_equal 'foo bar #{baz}! Bang.', render_erb('foo bar <%= baz %>! Bang.')
80
+ end
81
+
82
+ def test_erb_multi_in_line
83
+ assert_equal('foo bar #{baz}! Bang #{bop}.',
84
+ render_erb('foo bar <%= baz %>! Bang <%= bop %>.'))
85
+ assert_equal('foo bar #{baz}#{bop}!',
86
+ render_erb('foo bar <%= baz %><%= bop %>!'))
87
+ end
88
+
89
+ def test_erb_with_html_special_chars
90
+ assert_equal '= 3 < 5 ? "OK" : "Your computer is b0rken"',
91
+ render_erb('<%= 3 < 5 ? "OK" : "Your computer is b0rken" %>')
92
+ end
93
+
94
+ def test_erb_in_class_attribute
95
+ assert_equal "%div{:class => dyna_class} I have a dynamic attribute",
96
+ render_erb('<div class="<%= dyna_class %>">I have a dynamic attribute</div>')
97
+ end
98
+
99
+ def test_erb_in_id_attribute
100
+ assert_equal "%div{:id => dyna_id} I have a dynamic attribute",
101
+ render_erb('<div id="<%= dyna_id %>">I have a dynamic attribute</div>')
102
+ end
103
+
104
+ def test_erb_in_attribute_results_in_string_interpolation
105
+ assert_equal('%div{:id => "item_#{i}"} Ruby string interpolation FTW',
106
+ render_erb('<div id="item_<%= i %>">Ruby string interpolation FTW</div>'))
107
+ end
108
+
109
+ def test_erb_in_attribute_with_trailing_content
110
+ assert_equal('%div{:class => "#{12}!"} Bang!',
111
+ render_erb('<div class="<%= 12 %>!">Bang!</div>'))
112
+ end
113
+
114
+ def test_erb_in_html_escaped_attribute
115
+ assert_equal '%div{:class => "foo"} Bang!',
116
+ render_erb('<div class="<%= "foo" %>">Bang!</div>')
117
+ end
118
+
119
+ def test_erb_in_attribute_to_multiple_interpolations
120
+ assert_equal('%div{:class => "#{12} + #{13}"} Math is super',
121
+ render_erb('<div class="<%= 12 %> + <%= 13 %>">Math is super</div>'))
122
+ end
123
+
124
+ def test_whitespace_eating_erb_tags
125
+ assert_equal '- form_for', render_erb('<%- form_for -%>')
126
+ end
127
+
128
+ def test_interpolation_in_erb
129
+ assert_equal('= "Foo #{bar} baz"', render_erb('<%= "Foo #{bar} baz" %>'))
130
+ end
131
+
132
+ def test_interpolation_in_erb_attrs
133
+ assert_equal('%p{:foo => "#{bar} baz"}',
134
+ render_erb('<p foo="<%= "#{bar} baz" %>"></p>'))
135
+ end
136
+
137
+ def test_multiline_erb_silent_script
138
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
139
+ .blah
140
+ - foo
141
+ - bar
142
+ - baz
143
+ %p foo
144
+ HAML
145
+ <div class="blah">
146
+ <%
147
+ foo
148
+ bar
149
+ baz
150
+ %>
151
+ <p>foo</p>
152
+ </div>
153
+ ERB
154
+ end
155
+
156
+ def test_multiline_erb_loud_script
157
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
158
+ .blah
159
+ = foo + |
160
+ bar.baz.bang + |
161
+ baz |
162
+ %p foo
163
+ HAML
164
+ <div class="blah">
165
+ <%=
166
+ foo +
167
+ bar.baz.bang +
168
+ baz
169
+ %>
170
+ <p>foo</p>
171
+ </div>
172
+ ERB
173
+ end
174
+
175
+ def test_weirdly_indented_multiline_erb_loud_script
176
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
177
+ .blah
178
+ = foo + |
179
+ bar.baz.bang + |
180
+ baz |
181
+ %p foo
182
+ HAML
183
+ <div class="blah">
184
+ <%=
185
+ foo +
186
+ bar.baz.bang +
187
+ baz
188
+ %>
189
+ <p>foo</p>
190
+ </div>
191
+ ERB
192
+ end
193
+
194
+ def test_two_multiline_erb_loud_scripts
195
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
196
+ .blah
197
+ = foo + |
198
+ bar.baz.bang + |
199
+ baz |
200
+ -#
201
+ = foo.bar do |
202
+ bang |
203
+ end |
204
+ %p foo
205
+ HAML
206
+ <div class="blah">
207
+ <%=
208
+ foo +
209
+ bar.baz.bang +
210
+ baz
211
+ %>
212
+ <%= foo.bar do
213
+ bang
214
+ end %>
215
+ <p>foo</p>
216
+ </div>
217
+ ERB
218
+ end
219
+
220
+ def test_multiline_then_single_line_erb_loud_scripts
221
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
222
+ .blah
223
+ = foo + |
224
+ bar.baz.bang + |
225
+ baz |
226
+ = foo.bar
227
+ %p foo
228
+ HAML
229
+ <div class="blah">
230
+ <%=
231
+ foo +
232
+ bar.baz.bang +
233
+ baz
234
+ %>
235
+ <%= foo.bar %>
236
+ <p>foo</p>
237
+ </div>
238
+ ERB
239
+ end
240
+
241
+ def test_multiline_erb_but_really_single_line
242
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
243
+ .blah
244
+ = foo
245
+ %p foo
246
+ HAML
247
+ <div class="blah">
248
+ <%=
249
+ foo
250
+ %>
251
+ <p>foo</p>
252
+ </div>
253
+ ERB
254
+ end
255
+
256
+ ### Block Parsing
257
+
258
+ def test_block_parsing
259
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
260
+ - foo do
261
+ %p bar
262
+ HAML
263
+ <% foo do %>
264
+ <p>bar</p>
265
+ <% end %>
266
+ ERB
267
+ end
268
+
269
+ def test_block_parsing_with_args
270
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
271
+ - foo do |a, b, c|
272
+ %p bar
273
+ HAML
274
+ <% foo do |a, b, c| %>
275
+ <p>bar</p>
276
+ <% end %>
277
+ ERB
278
+ end
279
+
280
+ def test_block_parsing_with_equals
281
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
282
+ = foo do
283
+ %p bar
284
+ HAML
285
+ <%= foo do %>
286
+ <p>bar</p>
287
+ <% end %>
288
+ ERB
289
+ end
290
+
291
+ def test_block_parsing_with_modified_end
292
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
293
+ - foo do
294
+ blah
295
+ - end.bip
296
+ HAML
297
+ <% foo do %>
298
+ blah
299
+ <% end.bip %>
300
+ ERB
301
+ end
302
+
303
+ def test_block_parsing_with_modified_end_with_block
304
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
305
+ - foo do
306
+ blah
307
+ - end.bip do
308
+ brang
309
+ HAML
310
+ <% foo do %>
311
+ blah
312
+ <% end.bip do %>
313
+ brang
314
+ <% end %>
315
+ ERB
316
+ end
317
+
318
+ def test_multiline_block_opener
319
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
320
+ - foo bar
321
+ - baz bang
322
+ - biddle do
323
+ foo
324
+ HAML
325
+ <% foo bar
326
+ baz bang
327
+ biddle do %>
328
+ foo
329
+ <% end %>
330
+ ERB
331
+ end
332
+
333
+ def test_if_elsif_else_parsing
334
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
335
+ - if foo
336
+ %p bar
337
+ - elsif bar.foo("zip")
338
+ #bang baz
339
+ - else
340
+ %strong bibble
341
+ HAML
342
+ <% if foo %>
343
+ <p>bar</p>
344
+ <% elsif bar.foo("zip") %>
345
+ <div id="bang">baz</div>
346
+ <% else %>
347
+ <strong>bibble</strong>
348
+ <% end %>
349
+ ERB
350
+ end
351
+
352
+ def test_case_when_parsing
353
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
354
+ - case foo.bar
355
+ - when "bip"
356
+ %p bip
357
+ - when "bop"
358
+ %p BOP
359
+ - when bizzle.bang.boop.blip
360
+ %em BIZZLE BANG BOOP BLIP
361
+ HAML
362
+ <% case foo.bar %>
363
+ <% when "bip" %>
364
+ <p>bip</p>
365
+ <% when "bop" %>
366
+ <p>BOP</p>
367
+ <% when bizzle.bang.boop.blip %>
368
+ <em>BIZZLE BANG BOOP BLIP</em>
369
+ <% end %>
370
+ ERB
371
+
372
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
373
+ - case foo.bar
374
+ - when "bip"
375
+ %p bip
376
+ - when "bop"
377
+ %p BOP
378
+ - when bizzle.bang.boop.blip
379
+ %em BIZZLE BANG BOOP BLIP
380
+ HAML
381
+ <% case foo.bar
382
+ when "bip" %>
383
+ <p>bip</p>
384
+ <% when "bop" %>
385
+ <p>BOP</p>
386
+ <% when bizzle.bang.boop.blip %>
387
+ <em>BIZZLE BANG BOOP BLIP</em>
388
+ <% end %>
389
+ ERB
390
+ end
391
+
392
+ def test_begin_rescue_ensure
393
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
394
+ - begin
395
+ %p a
396
+ - rescue FooException => e
397
+ %p b
398
+ - ensure
399
+ %p c
400
+ HAML
401
+ <% begin %>
402
+ <p>a</p>
403
+ <% rescue FooException => e %>
404
+ <p>b</p>
405
+ <% ensure %>
406
+ <p>c</p>
407
+ <% end %>
408
+ ERB
409
+ end
410
+
411
+ # Regression
412
+
413
+ def test_tag_inside_block
414
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
415
+ %table
416
+ - foo.each do
417
+ %tr
418
+ HAML
419
+ <table>
420
+ <% foo.each do %>
421
+ <tr></tr>
422
+ <% end %>
423
+ </table>
424
+ ERB
425
+ end
426
+
427
+ def test_silent_inside_block_inside_tag
428
+ assert_equal(<<HAML.rstrip, render_erb(<<ERB))
429
+ %table
430
+ - foo.each do
431
+ - haml_puts "foo"
432
+ HAML
433
+ <table>
434
+ <% foo.each do %>
435
+ <% haml_puts "foo" %>
436
+ <% end %>
437
+ </table>
438
+ ERB
439
+ end
440
+ end
@@ -0,0 +1,336 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+ require File.dirname(__FILE__) + '/html2haml/erb_tests'
4
+ require 'haml/html'
5
+
6
+ class Html2HamlTest < Test::Unit::TestCase
7
+ def test_empty_render_should_remain_empty
8
+ assert_equal '', render('')
9
+ end
10
+
11
+ def test_doctype
12
+ assert_equal '!!!', render("<!DOCTYPE html>")
13
+ assert_equal '!!! 1.1', render('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">')
14
+ assert_equal '!!! Strict', render('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">')
15
+ assert_equal '!!! Frameset', render('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">')
16
+ assert_equal '!!! Mobile 1.2', render('<!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.2//EN" "http://www.openmobilealliance.org/tech/DTD/xhtml-mobile12.dtd">')
17
+ assert_equal '!!! Basic 1.1', render('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML Basic 1.1//EN" "http://www.w3.org/TR/xhtml-basic/xhtml-basic11.dtd">')
18
+ assert_equal '!!!', render('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">')
19
+ assert_equal '!!! Strict', render('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">')
20
+ assert_equal '!!! Frameset', render('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">')
21
+ assert_equal '!!!', render('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">')
22
+ end
23
+
24
+ def test_id_and_class_should_be_removed_from_hash
25
+ assert_equal '%span#foo.bar', render('<span id="foo" class="bar"> </span>')
26
+ end
27
+
28
+ def test_no_tag_name_for_div_if_class_or_id_is_present
29
+ assert_equal '#foo', render('<div id="foo"> </div>')
30
+ assert_equal '.foo', render('<div class="foo"> </div>')
31
+ end
32
+
33
+ def test_multiple_class_names
34
+ assert_equal '.foo.bar.baz', render('<div class=" foo bar baz "> </div>')
35
+ end
36
+
37
+ def test_should_have_pretty_attributes
38
+ assert_equal('%input{:name => "login", :type => "text"}/',
39
+ render('<input type="text" name="login" />'))
40
+ assert_equal('%meta{:content => "text/html", "http-equiv" => "Content-Type"}/',
41
+ render('<meta http-equiv="Content-Type" content="text/html" />'))
42
+ end
43
+
44
+ def test_class_with_dot_and_hash
45
+ assert_equal('%div{:class => "foo.bar"}', render("<div class='foo.bar'></div>"))
46
+ assert_equal('%div{:class => "foo#bar"}', render("<div class='foo#bar'></div>"))
47
+ assert_equal('.foo.bar{:class => "foo#bar foo.bar"}', render("<div class='foo foo#bar bar foo.bar'></div>"))
48
+ end
49
+
50
+ def test_id_with_dot_and_hash
51
+ assert_equal('%div{:id => "foo.bar"}', render("<div id='foo.bar'></div>"))
52
+ assert_equal('%div{:id => "foo#bar"}', render("<div id='foo#bar'></div>"))
53
+ end
54
+
55
+ def test_interpolation
56
+ assert_equal('Foo \#{bar} baz', render('Foo #{bar} baz'))
57
+ end
58
+
59
+ def test_interpolation_in_attrs
60
+ assert_equal('%p{:foo => "\#{bar} baz"}', render('<p foo="#{bar} baz"></p>'))
61
+ end
62
+
63
+ def test_cdata
64
+ assert_equal(<<HAML.strip, render(<<HTML))
65
+ %p
66
+ :cdata
67
+ <a foo="bar" baz="bang">
68
+ <div id="foo">flop</div>
69
+ </a>
70
+ HAML
71
+ <p><![CDATA[
72
+ <a foo="bar" baz="bang">
73
+ <div id="foo">flop</div>
74
+ </a>
75
+ ]]></p>
76
+ HTML
77
+ end
78
+
79
+ def test_self_closing_tag
80
+ assert_equal("%foo/", render("<foo />"))
81
+ end
82
+
83
+ def test_inline_text
84
+ assert_equal("%p foo", render("<p>foo</p>"))
85
+ end
86
+
87
+ def test_inline_comment
88
+ assert_equal("/ foo", render("<!-- foo -->"))
89
+ assert_equal(<<HAML.strip, render(<<HTML))
90
+ / foo
91
+ %p bar
92
+ HAML
93
+ <!-- foo -->
94
+ <p>bar</p>
95
+ HTML
96
+ end
97
+
98
+ def test_non_inline_comment
99
+ assert_equal(<<HAML.rstrip, render(<<HTML))
100
+ /
101
+ Foo
102
+ Bar
103
+ HAML
104
+ <!-- Foo
105
+ Bar -->
106
+ HTML
107
+ end
108
+
109
+ def test_non_inline_text
110
+ assert_equal(<<HAML.rstrip, render(<<HTML))
111
+ %p
112
+ foo
113
+ HAML
114
+ <p>
115
+ foo
116
+ </p>
117
+ HTML
118
+ assert_equal(<<HAML.rstrip, render(<<HTML))
119
+ %p
120
+ foo
121
+ HAML
122
+ <p>
123
+ foo</p>
124
+ HTML
125
+ assert_equal(<<HAML.rstrip, render(<<HTML))
126
+ %p
127
+ foo
128
+ HAML
129
+ <p>foo
130
+ </p>
131
+ HTML
132
+ end
133
+
134
+ def test_script_tag
135
+ assert_equal(<<HAML.rstrip, render(<<HTML))
136
+ :javascript
137
+ function foo() {
138
+ return "12" & "13";
139
+ }
140
+ HAML
141
+ <script type="text/javascript">
142
+ function foo() {
143
+ return "12" &amp; "13";
144
+ }
145
+ </script>
146
+ HTML
147
+ end
148
+
149
+ def test_script_tag_with_cdata
150
+ assert_equal(<<HAML.rstrip, render(<<HTML))
151
+ :javascript
152
+ function foo() {
153
+ return "&amp;";
154
+ }
155
+ HAML
156
+ <script type="text/javascript">
157
+ <![CDATA[
158
+ function foo() {
159
+ return "&amp;";
160
+ }
161
+ ]]>
162
+ </script>
163
+ HTML
164
+ end
165
+
166
+ def test_pre
167
+ assert_equal(<<HAML.rstrip, render(<<HTML))
168
+ %pre
169
+ :preserve
170
+ foo
171
+ bar
172
+ baz
173
+ HAML
174
+ <pre>foo
175
+ bar
176
+ baz</pre>
177
+ HTML
178
+ end
179
+
180
+ def test_pre_code
181
+ assert_equal(<<HAML.rstrip, render(<<HTML))
182
+ %pre
183
+ %code
184
+ :preserve
185
+ foo
186
+ bar
187
+ baz
188
+ HAML
189
+ <pre><code>foo
190
+ bar
191
+ baz</code></pre>
192
+ HTML
193
+ end
194
+
195
+ def test_code_without_pre
196
+ assert_equal(<<HAML.rstrip, render(<<HTML))
197
+ %code
198
+ foo
199
+ bar
200
+ baz
201
+ HAML
202
+ <code>foo
203
+ bar
204
+ baz</code>
205
+ HTML
206
+ end
207
+
208
+ def test_conditional_comment
209
+ assert_equal(<<HAML.rstrip, render(<<HTML))
210
+ /[if foo]
211
+ bar
212
+ baz
213
+ HAML
214
+ <!--[if foo]>
215
+ bar
216
+ baz
217
+ <![endif]-->
218
+ HTML
219
+ end
220
+
221
+ def test_style_to_css_filter
222
+ assert_equal(<<HAML.rstrip, render(<<HTML))
223
+ :css
224
+ foo {
225
+ bar: baz;
226
+ }
227
+ HAML
228
+ <style type="text/css">
229
+ foo {
230
+ bar: baz;
231
+ }
232
+ </style>
233
+ HTML
234
+ end
235
+
236
+ def test_inline_conditional_comment
237
+ assert_equal(<<HAML.rstrip, render(<<HTML))
238
+ /[if foo] bar baz
239
+ HAML
240
+ <!--[if foo]> bar baz <![endif]-->
241
+ HTML
242
+ end
243
+
244
+ def test_minus_in_tag
245
+ assert_equal("%p - foo bar -", render("<p>- foo bar -</p>"))
246
+ end
247
+
248
+ def test_equals_in_tag
249
+ assert_equal("%p = foo bar =", render("<p>= foo bar =</p>"))
250
+ end
251
+
252
+ def test_hash_in_tag
253
+ assert_equal("%p # foo bar #", render("<p># foo bar #</p>"))
254
+ end
255
+
256
+ def test_comma_post_tag
257
+ assert_equal(<<HAML.rstrip, render(<<HTML))
258
+ #foo
259
+ %span> Foo
260
+ ,
261
+ %span bar
262
+ Foo
263
+ %span> bar
264
+ ,
265
+ %span baz
266
+ HAML
267
+ <div id="foo">
268
+ <span>Foo</span>, <span>bar</span>
269
+ Foo<span>bar</span>, <span>baz</span>
270
+ </div>
271
+ HTML
272
+ end
273
+
274
+ def test_comma_post_tag_with_text_before
275
+ assert_equal(<<HAML.rstrip, render(<<HTML))
276
+ #foo
277
+ Batch
278
+ = succeed "," do
279
+ %span Foo
280
+ %span Bar
281
+ HAML
282
+ <div id="foo">
283
+ Batch
284
+ <span>Foo</span>, <span>Bar</span>
285
+ </div>
286
+ HTML
287
+ end
288
+
289
+ begin
290
+ require 'haml/html/erb'
291
+ include ErbTests
292
+ rescue LoadError => e
293
+ puts "\n** Couldn't require #{e.message[/-- (.*)$/, 1]}, skipping some tests"
294
+ end
295
+
296
+ # Encodings
297
+
298
+ unless Haml::Util.ruby1_8?
299
+ def test_encoding_error
300
+ render("foo\nbar\nb\xFEaz".force_encoding("utf-8"))
301
+ assert(false, "Expected exception")
302
+ rescue Haml::Error => e
303
+ assert_equal(3, e.line)
304
+ assert_equal('Invalid UTF-8 character "\xFE"', e.message)
305
+ end
306
+
307
+ def test_ascii_incompatible_encoding_error
308
+ template = "foo\nbar\nb_z".encode("utf-16le")
309
+ template[9] = "\xFE".force_encoding("utf-16le")
310
+ render(template)
311
+ assert(false, "Expected exception")
312
+ rescue Haml::Error => e
313
+ assert_equal(3, e.line)
314
+ assert_equal('Invalid UTF-16LE character "\xFE"', e.message)
315
+ end
316
+ end
317
+
318
+ # Regression Tests
319
+
320
+ def test_xhtml_strict_doctype
321
+ assert_equal('!!! Strict', render(<<HTML))
322
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
323
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
324
+ HTML
325
+ end
326
+
327
+ protected
328
+
329
+ def render(text, options = {})
330
+ Haml::HTML.new(text, options).render.rstrip
331
+ end
332
+
333
+ def render_erb(text)
334
+ render(text, :erb => true)
335
+ end
336
+ end