haml_ejs 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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,144 @@
1
+ %p
2
+ %p
3
+ %q>
4
+ Foo
5
+ %p
6
+ %p
7
+ %q{:a => 1 + 1}>
8
+ Foo
9
+ %p
10
+ %p
11
+ %q> Foo
12
+ %p
13
+ %p
14
+ %q{:a => 1 + 1}> Foo
15
+ %p
16
+ %p
17
+ %q>
18
+ = "Foo"
19
+ %p
20
+ %p
21
+ %q{:a => 1 + 1}>
22
+ = "Foo"
23
+ %p
24
+ %p
25
+ %q>= "Foo"
26
+ %p
27
+ %p
28
+ %q{:a => 1 + 1}>= "Foo"
29
+ %p
30
+ %p
31
+ %q>
32
+ = "Foo\nBar"
33
+ %p
34
+ %p
35
+ %q{:a => 1 + 1}>
36
+ = "Foo\nBar"
37
+ %p
38
+ %p
39
+ %q>= "Foo\nBar"
40
+ %p
41
+ %p
42
+ %q{:a => 1 + 1}>= "Foo\nBar"
43
+ %p
44
+ %p
45
+ - tab_up
46
+ foo
47
+ %q>
48
+ Foo
49
+ bar
50
+ - tab_down
51
+ %p
52
+ %p
53
+ - tab_up
54
+ foo
55
+ %q{:a => 1 + 1}>
56
+ Foo
57
+ bar
58
+ - tab_down
59
+ %p
60
+ %p
61
+ - tab_up
62
+ foo
63
+ %q> Foo
64
+ bar
65
+ - tab_down
66
+ %p
67
+ %p
68
+ - tab_up
69
+ foo
70
+ %q{:a => 1 + 1}> Foo
71
+ bar
72
+ - tab_down
73
+ %p
74
+ %p
75
+ - tab_up
76
+ foo
77
+ %q>
78
+ = "Foo"
79
+ bar
80
+ - tab_down
81
+ %p
82
+ %p
83
+ - tab_up
84
+ foo
85
+ %q{:a => 1 + 1}>
86
+ = "Foo"
87
+ bar
88
+ - tab_down
89
+ %p
90
+ %p
91
+ - tab_up
92
+ foo
93
+ %q>= "Foo"
94
+ bar
95
+ - tab_down
96
+ %p
97
+ %p
98
+ - tab_up
99
+ foo
100
+ %q{:a => 1 + 1}>= "Foo"
101
+ bar
102
+ - tab_down
103
+ %p
104
+ %p
105
+ - tab_up
106
+ foo
107
+ %q>
108
+ = "Foo\nBar"
109
+ bar
110
+ - tab_down
111
+ %p
112
+ %p
113
+ - tab_up
114
+ foo
115
+ %q{:a => 1 + 1}>
116
+ = "Foo\nBar"
117
+ bar
118
+ - tab_down
119
+ %p
120
+ %p
121
+ - tab_up
122
+ foo
123
+ %q>= "Foo\nBar"
124
+ bar
125
+ - tab_down
126
+ %p
127
+ %p
128
+ - tab_up
129
+ foo
130
+ %q{:a => 1 + 1}>= "Foo\nBar"
131
+ bar
132
+ - tab_down
133
+ %p
134
+ %p
135
+ %q>
136
+ %p
137
+ %p
138
+ %q>/
139
+ %p
140
+ %p
141
+ %q{:a => 1 + 1}>
142
+ %p
143
+ %p
144
+ %q{:a => 1 + 1}>/
@@ -0,0 +1,17 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %title Stop. haml time
5
+ #content
6
+ %h1 This is a title!
7
+ %p Lorem ipsum dolor sit amet, consectetur adipisicing elit
8
+ %p{:class => 'foo'} Cigarettes!
9
+ %h2 Man alive!
10
+ %ul.things
11
+ %li Slippers
12
+ %li Shoes
13
+ %li Bathrobe
14
+ %li Coffee
15
+ %pre
16
+ This is some text that's in a pre block!
17
+ Let's see what happens when it's rendered! What about now, since we're on a new line?
@@ -0,0 +1,10 @@
1
+ %h1 Partial layout used with for block:
2
+ - if Haml::Util.ap_geq?("3.2.0.alpha1")
3
+ = render :layout => 'layout_for_partial' do
4
+ %p Some content within a layout
5
+ - elsif Haml::Util.ap_geq_3?
6
+ = render :layout => 'layout_for_partial.haml' do
7
+ %p Some content within a layout
8
+ - else
9
+ - render :layout => 'layout_for_partial.haml' do
10
+ %p Some content within a layout
@@ -0,0 +1 @@
1
+ = render :file => "#{name}.haml"
@@ -0,0 +1,12 @@
1
+ - @foo = 'value one'
2
+ %p
3
+ @foo =
4
+ = @foo
5
+ - @foo = 'value two'
6
+ %p
7
+ @foo =
8
+ = @foo
9
+ = test_partial "partial"
10
+ %p
11
+ @foo =
12
+ = @foo
@@ -0,0 +1,2 @@
1
+ = render :layout => 'layout' do
2
+ During
@@ -0,0 +1,40 @@
1
+ %div
2
+ %h1 I can count!
3
+ - (1..20).each do |i|
4
+ = i
5
+ %h1 I know my ABCs!
6
+ %ul
7
+ - ('a'..'z').each do |i|
8
+ %li= i
9
+ %h1 I can catch errors!
10
+ - begin
11
+ - String.silly
12
+ - rescue NameError => e
13
+ = "Oh no! \"#{e}\" happened!"
14
+ %p
15
+ "false" is:
16
+ - if false
17
+ = "true"
18
+ - else
19
+ = "false"
20
+ - if true
21
+ - 5.times do |i|
22
+ - if i % 2 == 1
23
+ Odd!
24
+ - else
25
+ Even!
26
+ - else
27
+ = "This can't happen!"
28
+ - 13 |
29
+ .foo
30
+ %strong foobar
31
+ - 5.times |
32
+ do |
33
+ |a| |
34
+ %strong= a
35
+ .test
36
+ - "foo |
37
+ bar |
38
+ baz" |
39
+
40
+ %p boom
@@ -0,0 +1,43 @@
1
+ !!!
2
+ %html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en-US", "lang" => "en-US"}
3
+ %head
4
+ %title Hampton Catlin Is Totally Awesome
5
+ %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}
6
+ %body
7
+ / You're In my house now!
8
+ .header
9
+ Yes, ladies and gentileman. He is just that egotistical.
10
+ Fantastic! This should be multi-line output
11
+ The question is if this would translate! Ahah!
12
+ = 1 + 9 + 8 + 2 #numbers should work and this should be ignored
13
+ #body= " Quotes should be loved! Just like people!"
14
+ - 120.times do |number|
15
+ = number
16
+ Wow.|
17
+ %p{:code => 1 + 2}
18
+ = "Holy cow " + |
19
+ "multiline " + |
20
+ "tags! " + |
21
+ "A pipe (|) even!" |
22
+ = [1, 2, 3].collect { |n| "PipesIgnored|" }.join
23
+ = [1, 2, 3].collect { |n| |
24
+ n.to_s |
25
+ }.join("|") |
26
+ - bar = 17
27
+ %div.silent{:foo => bar}
28
+ - foo = String.new
29
+ - foo << "this"
30
+ - foo << " shouldn't"
31
+ - foo << " evaluate"
32
+ = foo + " but now it should!"
33
+ -# Woah crap a comment!
34
+
35
+ -# That was a line that shouldn't close everything.
36
+ %ul.really.cool
37
+ - ('a'..'f').each do |a|
38
+ %li= a
39
+ #combo.of_divs_with_underscore= @should_eval = "with this text"
40
+ = "foo".each_line do |line|
41
+ - nil
42
+ .footer
43
+ %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works"
@@ -0,0 +1,43 @@
1
+ !!!
2
+ %html{:xmlns => "http://www.w3.org/1999/xhtml", "xml:lang" => "en-US", "lang" => "en-US"}
3
+ %head
4
+ %title Hampton Catlin Is Totally Awesome
5
+ %meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}
6
+ %body
7
+ / You're In my house now!
8
+ .header
9
+ Yes, ladies and gentileman. He is just that egotistical.
10
+ Fantastic! This should be multi-line output
11
+ The question is if this would translate! Ahah!
12
+ = 1 + 9 + 8 + 2 #numbers should work and this should be ignored
13
+ #body= " Quotes should be loved! Just like people!"
14
+ - 120.times do |number|
15
+ = number
16
+ Wow.|
17
+ %p{:code => 1 + 2}
18
+ = "Holy cow " + |
19
+ "multiline " + |
20
+ "tags! " + |
21
+ "A pipe (|) even!" |
22
+ = [1, 2, 3].collect { |n| "PipesIgnored|" }.join
23
+ = [1, 2, 3].collect { |n| |
24
+ n.to_s |
25
+ }.join("|") |
26
+ - bar = 17
27
+ %div.silent{:foo => bar}
28
+ - foo = String.new
29
+ - foo << "this"
30
+ - foo << " shouldn't"
31
+ - foo << " evaluate"
32
+ = foo + " but now it should!"
33
+ -# Woah crap a comment!
34
+
35
+ -# That was a line that shouldn't close everything.
36
+ %ul.really.cool
37
+ - ('a'..'f').each do |a|
38
+ %li= a
39
+ #combo.of_divs_with_underscore= @should_eval = "with this text"
40
+ = "foo".each_line do |line|
41
+ - nil
42
+ .footer
43
+ %strong.shout= "This is a really long ruby quote. It should be loved and wrapped because its more than 50 characters. This value may change in the future and this test may look stupid. \nSo, I'm just making it *really* long. God, I hope this works"
@@ -0,0 +1,21 @@
1
+ %div.tags
2
+ %foo 1
3
+ %FOO 2
4
+ %fooBAR 3
5
+ %fooBar 4
6
+ %foo_bar 5
7
+ %foo-bar 6
8
+ %foo:bar 7
9
+ %foo.bar 8
10
+ %fooBAr_baz:boom_bar 9
11
+ %foo13 10
12
+ %foo2u 11
13
+ %div.classes
14
+ %p.foo.bar#baz#boom
15
+ .fooBar a
16
+ .foo-bar b
17
+ .foo_bar c
18
+ .FOOBAR d
19
+ .foo16 e
20
+ .123 f
21
+ .foo2u g
@@ -0,0 +1,4 @@
1
+ !!!
2
+ %html
3
+ %head
4
+ %body
@@ -0,0 +1,87 @@
1
+ #whitespace_test
2
+ = test_partial "text_area", :value => "Oneline"
3
+ = test_partial "text_area", :value => "Two\nlines"
4
+ ~ test_partial "text_area", :value => "Oneline"
5
+ ~ test_partial "text_area", :value => "Two\nlines"
6
+ #flattened~ test_partial "text_area", :value => "Two\nlines"
7
+ .hithere
8
+ ~ "Foo bar"
9
+ ~ "<pre>foo bar</pre>"
10
+ ~ "<pre>foo\nbar</pre>"
11
+ %p~ "<pre>foo\nbar</pre>"
12
+ %p~ "foo\nbar"
13
+ .foo
14
+ ~ 13
15
+ ~ "<textarea>\na\n</textarea>".each_line do |l|
16
+ - haml_concat l.strip
17
+ #whitespace_test
18
+ = test_partial "text_area", :value => "Oneline"
19
+ = test_partial "text_area", :value => "Two\nlines"
20
+ = find_and_preserve test_partial("text_area", :value => "Oneline")
21
+ = find_and_preserve test_partial("text_area", :value => "Two\nlines")
22
+ #flattened= find_and_preserve test_partial("text_area", :value => "Two\nlines")
23
+ .hithere
24
+ = find_and_preserve("Foo bar")
25
+ = find_and_preserve("<pre>foo bar</pre>")
26
+ = find_and_preserve("<pre>foo\nbar</pre>")
27
+ %p= find_and_preserve("<pre>foo\nbar</pre>")
28
+ %p= find_and_preserve("foo\nbar")
29
+ %pre
30
+ :preserve
31
+ ___
32
+ ,o88888
33
+ ,o8888888'
34
+ ,:o:o:oooo. ,8O88Pd8888"
35
+ ,.::.::o:ooooOoOoO. ,oO8O8Pd888'"
36
+ ,.:.::o:ooOoOoOO8O8OOo.8OOPd8O8O"
37
+ , ..:.::o:ooOoOOOO8OOOOo.FdO8O8"
38
+ , ..:.::o:ooOoOO8O888O8O,COCOO"
39
+ , . ..:.::o:ooOoOOOO8OOOOCOCO"
40
+ . ..:.::o:ooOoOoOO8O8OCCCC"o
41
+ . ..:.::o:ooooOoCoCCC"o:o
42
+ . ..:.::o:o:,cooooCo"oo:o:
43
+ ` . . ..:.:cocoooo"'o:o:::'
44
+ .` . ..::ccccoc"'o:o:o:::'
45
+ :.:. ,c:cccc"':.:.:.:.:.'
46
+ ..:.:"'`::::c:"'..:.:.:.:.:.' http://www.chris.com/ASCII/
47
+ ...:.'.:.::::"' . . . . .'
48
+ .. . ....:."' ` . . . ''
49
+ . . . ...."'
50
+ .. . ."' -hrr-
51
+ .
52
+
53
+
54
+ It's a planet!
55
+ %strong This shouldn't be bold!
56
+ %strong This should!
57
+ %textarea
58
+ :preserve
59
+ ___ ___ ___ ___
60
+ /\__\ /\ \ /\__\ /\__\
61
+ /:/ / /::\ \ /::| | /:/ /
62
+ /:/__/ /:/\:\ \ /:|:| | /:/ /
63
+ /::\ \ ___ /::\~\:\ \ /:/|:|__|__ /:/ /
64
+ /:/\:\ /\__\ /:/\:\ \:\__\ /:/ |::::\__\ /:/__/
65
+ \/__\:\/:/ / \/__\:\/:/ / \/__/~~/:/ / \:\ \
66
+ \::/ / \::/ / /:/ / \:\ \
67
+ /:/ / /:/ / /:/ / \:\ \
68
+ /:/ / /:/ / /:/ / \:\__\
69
+ \/__/ \/__/ \/__/ \/__/
70
+
71
+ Many
72
+ thanks
73
+ to
74
+ http://www.network-science.de/ascii/
75
+ %strong indeed!
76
+ .foo
77
+ = find_and_preserve(13)
78
+ %pre
79
+ :preserve
80
+ __ ______ __ ______
81
+ .----.| |--.|__ |.----.| |--..--------.| __ |
82
+ | __|| ||__ || __|| < | || __ |
83
+ |____||__|__||______||____||__|__||__|__|__||______|
84
+ %pre
85
+ :preserve
86
+ foo
87
+ bar
@@ -0,0 +1,300 @@
1
+ #!/usr/bin/env ruby
2
+ require File.dirname(__FILE__) + '/../test_helper'
3
+ require 'pathname'
4
+
5
+ class UtilTest < Test::Unit::TestCase
6
+ include Haml::Util
7
+
8
+ class Dumpable
9
+ attr_reader :arr
10
+ def initialize; @arr = []; end
11
+ def _before_dump; @arr << :before; end
12
+ def _after_dump; @arr << :after; end
13
+ def _around_dump
14
+ @arr << :around_before
15
+ yield
16
+ @arr << :around_after
17
+ end
18
+ def _after_load; @arr << :loaded; end
19
+ end
20
+
21
+ def test_scope
22
+ assert(File.exist?(scope("Rakefile")))
23
+ end
24
+
25
+ def test_to_hash
26
+ assert_equal({
27
+ :foo => 1,
28
+ :bar => 2,
29
+ :baz => 3
30
+ }, to_hash([[:foo, 1], [:bar, 2], [:baz, 3]]))
31
+ end
32
+
33
+ def test_map_keys
34
+ assert_equal({
35
+ "foo" => 1,
36
+ "bar" => 2,
37
+ "baz" => 3
38
+ }, map_keys({:foo => 1, :bar => 2, :baz => 3}) {|k| k.to_s})
39
+ end
40
+
41
+ def test_map_vals
42
+ assert_equal({
43
+ :foo => "1",
44
+ :bar => "2",
45
+ :baz => "3"
46
+ }, map_vals({:foo => 1, :bar => 2, :baz => 3}) {|k| k.to_s})
47
+ end
48
+
49
+ def test_map_hash
50
+ assert_equal({
51
+ "foo" => "1",
52
+ "bar" => "2",
53
+ "baz" => "3"
54
+ }, map_hash({:foo => 1, :bar => 2, :baz => 3}) {|k, v| [k.to_s, v.to_s]})
55
+ end
56
+
57
+ def test_powerset
58
+ return unless Set[Set[]] == Set[Set[]] # There's a bug in Ruby 1.8.6 that breaks nested set equality
59
+ assert_equal([[].to_set].to_set,
60
+ powerset([]))
61
+ assert_equal([[].to_set, [1].to_set].to_set,
62
+ powerset([1]))
63
+ assert_equal([[].to_set, [1].to_set, [2].to_set, [1, 2].to_set].to_set,
64
+ powerset([1, 2]))
65
+ assert_equal([[].to_set, [1].to_set, [2].to_set, [3].to_set,
66
+ [1, 2].to_set, [2, 3].to_set, [1, 3].to_set, [1, 2, 3].to_set].to_set,
67
+ powerset([1, 2, 3]))
68
+ end
69
+
70
+ def test_restrict
71
+ assert_equal(0.5, restrict(0.5, 0..1))
72
+ assert_equal(1, restrict(2, 0..1))
73
+ assert_equal(1.3, restrict(2, 0..1.3))
74
+ assert_equal(0, restrict(-1, 0..1))
75
+ end
76
+
77
+ def test_merge_adjacent_strings
78
+ assert_equal(["foo bar baz", :bang, "biz bop", 12],
79
+ merge_adjacent_strings(["foo ", "bar ", "baz", :bang, "biz", " bop", 12]))
80
+ str = "foo"
81
+ assert_equal(["foo foo foo", :bang, "foo foo", 12],
82
+ merge_adjacent_strings([str, " ", str, " ", str, :bang, str, " ", str, 12]))
83
+ end
84
+
85
+ def test_intersperse
86
+ assert_equal(["foo", " ", "bar", " ", "baz"],
87
+ intersperse(%w[foo bar baz], " "))
88
+ assert_equal([], intersperse([], " "))
89
+ end
90
+
91
+ def test_substitute
92
+ assert_equal(["foo", "bar", "baz", 3, 4],
93
+ substitute([1, 2, 3, 4], [1, 2], ["foo", "bar", "baz"]))
94
+ assert_equal([1, "foo", "bar", "baz", 4],
95
+ substitute([1, 2, 3, 4], [2, 3], ["foo", "bar", "baz"]))
96
+ assert_equal([1, 2, "foo", "bar", "baz"],
97
+ substitute([1, 2, 3, 4], [3, 4], ["foo", "bar", "baz"]))
98
+
99
+ assert_equal([1, "foo", "bar", "baz", 2, 3, 4],
100
+ substitute([1, 2, 2, 2, 3, 4], [2, 2], ["foo", "bar", "baz"]))
101
+ end
102
+
103
+ def test_strip_string_array
104
+ assert_equal(["foo ", " bar ", " baz"],
105
+ strip_string_array([" foo ", " bar ", " baz "]))
106
+ assert_equal([:foo, " bar ", " baz"],
107
+ strip_string_array([:foo, " bar ", " baz "]))
108
+ assert_equal(["foo ", " bar ", :baz],
109
+ strip_string_array([" foo ", " bar ", :baz]))
110
+ end
111
+
112
+ def test_paths
113
+ assert_equal([[1, 3, 5], [2, 3, 5], [1, 4, 5], [2, 4, 5]],
114
+ paths([[1, 2], [3, 4], [5]]))
115
+ assert_equal([[]], paths([]))
116
+ assert_equal([[1, 2, 3]], paths([[1], [2], [3]]))
117
+ end
118
+
119
+ def test_lcs
120
+ assert_equal([1, 2, 3], lcs([1, 2, 3], [1, 2, 3]))
121
+ assert_equal([], lcs([], [1, 2, 3]))
122
+ assert_equal([], lcs([1, 2, 3], []))
123
+ assert_equal([1, 2, 3], lcs([5, 1, 4, 2, 3, 17], [0, 0, 1, 2, 6, 3]))
124
+
125
+ assert_equal([1], lcs([1, 2, 3, 4], [4, 3, 2, 1]))
126
+ assert_equal([1, 2], lcs([1, 2, 3, 4], [3, 4, 1, 2]))
127
+ end
128
+
129
+ def test_lcs_with_block
130
+ assert_equal(["1", "2", "3"],
131
+ lcs([1, 4, 2, 5, 3], [1, 2, 3]) {|a, b| a == b && a.to_s})
132
+ assert_equal([-4, 2, 8],
133
+ lcs([-5, 3, 2, 8], [-4, 1, 8]) {|a, b| (a - b).abs <= 1 && [a, b].max})
134
+ end
135
+
136
+ def test_silence_warnings
137
+ old_stderr, $stderr = $stderr, StringIO.new
138
+ warn "Out"
139
+ assert_equal("Out\n", $stderr.string)
140
+ silence_warnings {warn "In"}
141
+ assert_equal("Out\n", $stderr.string)
142
+ ensure
143
+ $stderr = old_stderr
144
+ end
145
+
146
+ def test_haml_warn
147
+ assert_warning("Foo!") {haml_warn "Foo!"}
148
+ end
149
+
150
+ def test_silence_haml_warnings
151
+ old_stderr, $stderr = $stderr, StringIO.new
152
+ silence_haml_warnings {warn "Out"}
153
+ assert_equal("Out\n", $stderr.string)
154
+ silence_haml_warnings {haml_warn "In"}
155
+ assert_equal("Out\n", $stderr.string)
156
+ ensure
157
+ $stderr = old_stderr
158
+ end
159
+
160
+ def test_has
161
+ assert(has?(:instance_method, String, :chomp!))
162
+ assert(has?(:private_instance_method, Haml::Engine, :set_locals))
163
+ end
164
+
165
+ def test_enum_with_index
166
+ assert_equal(%w[foo0 bar1 baz2],
167
+ enum_with_index(%w[foo bar baz]).map {|s, i| "#{s}#{i}"})
168
+ end
169
+
170
+ def test_enum_cons
171
+ assert_equal(%w[foobar barbaz],
172
+ enum_cons(%w[foo bar baz], 2).map {|s1, s2| "#{s1}#{s2}"})
173
+ end
174
+
175
+ def test_ord
176
+ assert_equal(102, ord("f"))
177
+ assert_equal(98, ord("bar"))
178
+ end
179
+
180
+ def test_flatten
181
+ assert_equal([1, 2, 3], flatten([1, 2, 3], 0))
182
+ assert_equal([1, 2, 3], flatten([1, 2, 3], 1))
183
+ assert_equal([1, 2, 3], flatten([1, 2, 3], 2))
184
+
185
+ assert_equal([[1, 2], 3], flatten([[1, 2], 3], 0))
186
+ assert_equal([1, 2, 3], flatten([[1, 2], 3], 1))
187
+ assert_equal([1, 2, 3], flatten([[1, 2], 3], 2))
188
+
189
+ assert_equal([[[1], 2], [3], 4], flatten([[[1], 2], [3], 4], 0))
190
+ assert_equal([[1], 2, 3, 4], flatten([[[1], 2], [3], 4], 1))
191
+ assert_equal([1, 2, 3, 4], flatten([[[1], 2], [3], 4], 2))
192
+ end
193
+
194
+ def test_set_hash
195
+ assert(set_hash(Set[1, 2, 3]) == set_hash(Set[3, 2, 1]))
196
+ assert(set_hash(Set[1, 2, 3]) == set_hash(Set[1, 2, 3]))
197
+
198
+ s1 = Set[]
199
+ s1 << 1
200
+ s1 << 2
201
+ s1 << 3
202
+ s2 = Set[]
203
+ s2 << 3
204
+ s2 << 2
205
+ s2 << 1
206
+ assert(set_hash(s1) == set_hash(s2))
207
+ end
208
+
209
+ def test_set_eql
210
+ assert(set_eql?(Set[1, 2, 3], Set[3, 2, 1]))
211
+ assert(set_eql?(Set[1, 2, 3], Set[1, 2, 3]))
212
+
213
+ s1 = Set[]
214
+ s1 << 1
215
+ s1 << 2
216
+ s1 << 3
217
+ s2 = Set[]
218
+ s2 << 3
219
+ s2 << 2
220
+ s2 << 1
221
+ assert(set_eql?(s1, s2))
222
+ end
223
+
224
+ def test_caller_info
225
+ assert_equal(["/tmp/foo.rb", 12, "fizzle"], caller_info("/tmp/foo.rb:12: in `fizzle'"))
226
+ assert_equal(["/tmp/foo.rb", 12, nil], caller_info("/tmp/foo.rb:12"))
227
+ assert_equal(["(haml)", 12, "blah"], caller_info("(haml):12: in `blah'"))
228
+ assert_equal(["", 12, "boop"], caller_info(":12: in `boop'"))
229
+ assert_equal(["/tmp/foo.rb", -12, "fizzle"], caller_info("/tmp/foo.rb:-12: in `fizzle'"))
230
+ assert_equal(["/tmp/foo.rb", 12, "fizzle"], caller_info("/tmp/foo.rb:12: in `fizzle {}'"))
231
+ end
232
+
233
+ def test_version_gt
234
+ assert_version_gt("2.0.0", "1.0.0")
235
+ assert_version_gt("1.1.0", "1.0.0")
236
+ assert_version_gt("1.0.1", "1.0.0")
237
+ assert_version_gt("1.0.0", "1.0.0.rc")
238
+ assert_version_gt("1.0.0.1", "1.0.0.rc")
239
+ assert_version_gt("1.0.0.rc", "0.9.9")
240
+ assert_version_gt("1.0.0.beta", "1.0.0.alpha")
241
+
242
+ assert_version_eq("1.0.0", "1.0.0")
243
+ assert_version_eq("1.0.0", "1.0.0.0")
244
+ end
245
+
246
+ def assert_version_gt(v1, v2)
247
+ #assert(version_gt(v1, v2), "Expected #{v1} > #{v2}")
248
+ assert(!version_gt(v2, v1), "Expected #{v2} < #{v1}")
249
+ end
250
+
251
+ def assert_version_eq(v1, v2)
252
+ assert(!version_gt(v1, v2), "Expected #{v1} = #{v2}")
253
+ assert(!version_gt(v2, v1), "Expected #{v2} = #{v1}")
254
+ end
255
+
256
+ def test_dump_and_load
257
+ obj = Dumpable.new
258
+ data = dump(obj)
259
+ assert_equal([:before, :around_before, :around_after, :after], obj.arr)
260
+ obj2 = load(data)
261
+ assert_equal([:before, :around_before, :loaded], obj2.arr)
262
+ end
263
+
264
+ class FooBar
265
+ def foo
266
+ Haml::Util.abstract(self)
267
+ end
268
+ end
269
+
270
+ def test_abstract
271
+ assert_raise_message(NotImplementedError,
272
+ "UtilTest::FooBar must implement #foo") {FooBar.new.foo}
273
+ end
274
+
275
+ def test_def_static_method
276
+ klass = Class.new
277
+ def_static_method(klass, :static_method, [:arg1, :arg2],
278
+ :sarg1, :sarg2, <<RUBY)
279
+ s = "Always " + arg1
280
+ s << " <% if sarg1 %>and<% else %>but never<% end %> " << arg2
281
+
282
+ <% if sarg2 %>
283
+ s << "."
284
+ <% end %>
285
+ RUBY
286
+ c = klass.new
287
+ assert_equal("Always brush your teeth and comb your hair.",
288
+ c.send(static_method_name(:static_method, true, true),
289
+ "brush your teeth", "comb your hair"))
290
+ assert_equal("Always brush your teeth and comb your hair",
291
+ c.send(static_method_name(:static_method, true, false),
292
+ "brush your teeth", "comb your hair"))
293
+ assert_equal("Always brush your teeth but never play with fire.",
294
+ c.send(static_method_name(:static_method, false, true),
295
+ "brush your teeth", "play with fire"))
296
+ assert_equal("Always brush your teeth but never play with fire",
297
+ c.send(static_method_name(:static_method, false, false),
298
+ "brush your teeth", "play with fire"))
299
+ end
300
+ end