haml 3.2.0.alpha.10 → 3.2.0.alpha.13

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of haml might be problematic. Click here for more details.

Files changed (389) hide show
  1. data/.yardopts +19 -7
  2. data/CHANGELOG.md +1224 -0
  3. data/FAQ.md +157 -0
  4. data/README.md +99 -62
  5. data/REFERENCE.md +1404 -0
  6. data/Rakefile +52 -341
  7. data/init.rb +1 -18
  8. data/lib/haml.rb +6 -30
  9. data/lib/haml/buffer.rb +37 -16
  10. data/lib/haml/compiler.rb +52 -13
  11. data/lib/haml/engine.rb +61 -44
  12. data/lib/haml/exec.rb +21 -4
  13. data/lib/haml/filters.rb +136 -166
  14. data/lib/haml/helpers.rb +37 -10
  15. data/lib/haml/helpers/action_view_extensions.rb +2 -1
  16. data/lib/haml/helpers/action_view_mods.rb +67 -181
  17. data/lib/haml/helpers/rails_323_textarea_fix.rb +39 -0
  18. data/lib/haml/helpers/xss_mods.rb +9 -11
  19. data/lib/haml/html.rb +22 -9
  20. data/lib/haml/html/erb.rb +1 -1
  21. data/lib/haml/parser.rb +22 -15
  22. data/lib/haml/railtie.rb +2 -13
  23. data/lib/haml/template.rb +18 -85
  24. data/lib/haml/template/options.rb +1 -1
  25. data/lib/haml/template/plugin.rb +15 -101
  26. data/lib/haml/util.rb +120 -603
  27. data/lib/haml/version.rb +1 -107
  28. data/test/{haml/engine_test.rb → engine_test.rb} +137 -143
  29. data/test/{haml/erb → erb}/_av_partial_1.erb +1 -1
  30. data/test/{haml/erb → erb}/_av_partial_2.erb +1 -1
  31. data/test/{haml/erb → erb}/action_view.erb +1 -1
  32. data/test/{haml/erb → erb}/standard.erb +0 -0
  33. data/test/filters_test.rb +141 -0
  34. data/test/gemfiles/Gemfile.rails-3.0.x +4 -6
  35. data/test/gemfiles/Gemfile.rails-3.1.x +5 -6
  36. data/test/gemfiles/Gemfile.rails-3.2.x +6 -0
  37. data/test/haml-spec/LICENSE +14 -0
  38. data/test/{haml/spec → haml-spec}/README.md +26 -17
  39. data/test/haml-spec/lua_haml_spec.lua +38 -0
  40. data/test/haml-spec/perl_haml_test.pl +81 -0
  41. data/test/haml-spec/ruby_haml_test.rb +23 -0
  42. data/test/{haml/spec → haml-spec}/tests.json +132 -54
  43. data/test/{haml/helper_test.rb → helper_test.rb} +50 -36
  44. data/test/{haml/html2haml → html2haml}/erb_tests.rb +0 -0
  45. data/test/{haml/html2haml_test.rb → html2haml_test.rb} +11 -5
  46. data/test/{haml/markaby → markaby}/standard.mab +0 -0
  47. data/test/{haml/mocks → mocks}/article.rb +0 -0
  48. data/test/{haml/results → results}/content_for_layout.xhtml +0 -0
  49. data/test/{haml/results → results}/eval_suppressed.xhtml +0 -0
  50. data/test/{haml/results → results}/helpers.xhtml +0 -0
  51. data/test/{haml/results → results}/helpful.xhtml +0 -0
  52. data/test/{haml/results → results}/just_stuff.xhtml +0 -0
  53. data/test/{haml/results → results}/list.xhtml +0 -0
  54. data/test/{haml/results → results}/nuke_inner_whitespace.xhtml +0 -0
  55. data/test/{haml/results → results}/nuke_outer_whitespace.xhtml +0 -0
  56. data/test/{haml/results → results}/original_engine.xhtml +0 -0
  57. data/test/{haml/results → results}/partial_layout.xhtml +0 -0
  58. data/test/{haml/results → results}/partials.xhtml +0 -0
  59. data/test/{haml/results → results}/render_layout.xhtml +0 -0
  60. data/test/{haml/results → results}/silent_script.xhtml +1 -1
  61. data/test/{haml/results → results}/standard.xhtml +0 -0
  62. data/test/{haml/results → results}/tag_parsing.xhtml +0 -0
  63. data/test/{haml/results → results}/very_basic.xhtml +0 -0
  64. data/test/{haml/results → results}/whitespace_handling.xhtml +46 -50
  65. data/test/{haml/template_test.rb → template_test.rb} +20 -81
  66. data/test/{haml/templates → templates}/_av_partial_1.haml +1 -1
  67. data/test/{haml/templates → templates}/_av_partial_1_ugly.haml +1 -1
  68. data/test/{haml/templates → templates}/_av_partial_2.haml +1 -1
  69. data/test/{haml/templates → templates}/_av_partial_2_ugly.haml +1 -1
  70. data/test/{haml/templates → templates}/_layout.erb +0 -0
  71. data/test/{haml/templates → templates}/_layout_for_partial.haml +0 -0
  72. data/test/{haml/templates → templates}/_partial.haml +0 -0
  73. data/test/{haml/templates → templates}/_text_area.haml +0 -0
  74. data/test/{haml/templates → templates}/action_view.haml +1 -1
  75. data/test/{haml/templates → templates}/action_view_ugly.haml +1 -1
  76. data/test/{haml/templates → templates}/breakage.haml +0 -0
  77. data/test/{haml/templates → templates}/content_for_layout.haml +0 -0
  78. data/test/{haml/templates → templates}/eval_suppressed.haml +0 -0
  79. data/test/{haml/templates → templates}/helpers.haml +0 -0
  80. data/test/{haml/templates → templates}/helpful.haml +0 -0
  81. data/test/{haml/templates → templates}/just_stuff.haml +0 -0
  82. data/test/{haml/templates → templates}/list.haml +0 -0
  83. data/test/{haml/templates → templates}/nuke_inner_whitespace.haml +0 -0
  84. data/test/{haml/templates → templates}/nuke_outer_whitespace.haml +0 -0
  85. data/test/{haml/templates → templates}/original_engine.haml +0 -0
  86. data/test/templates/partial_layout.haml +3 -0
  87. data/test/{haml/templates → templates}/partialize.haml +0 -0
  88. data/test/{haml/templates → templates}/partials.haml +0 -0
  89. data/test/{haml/templates → templates}/render_layout.haml +0 -0
  90. data/test/{haml/templates → templates}/silent_script.haml +2 -2
  91. data/test/{haml/templates → templates}/standard.haml +0 -0
  92. data/test/{haml/templates → templates}/standard_ugly.haml +0 -0
  93. data/test/{haml/templates → templates}/tag_parsing.haml +0 -0
  94. data/test/{haml/templates → templates}/very_basic.haml +0 -0
  95. data/test/{haml/templates → templates}/whitespace_handling.haml +0 -0
  96. data/test/test_helper.rb +42 -34
  97. data/test/util_test.rb +80 -0
  98. metadata +259 -427
  99. data/CONTRIBUTING +0 -3
  100. data/REVISION +0 -1
  101. data/VERSION +0 -1
  102. data/VERSION_NAME +0 -1
  103. data/extra/update_watch.rb +0 -13
  104. data/lib/haml/root.rb +0 -7
  105. data/lib/haml/shared.rb +0 -78
  106. data/lib/haml/template/patch.rb +0 -58
  107. data/lib/sass.rb +0 -8
  108. data/lib/sass/plugin.rb +0 -10
  109. data/lib/sass/rails2_shim.rb +0 -9
  110. data/lib/sass/rails3_shim.rb +0 -16
  111. data/test/benchmark.rb +0 -91
  112. data/test/gemfiles/Gemfile.rails-2.0.x +0 -8
  113. data/test/gemfiles/Gemfile.rails-2.0.x.lock +0 -38
  114. data/test/gemfiles/Gemfile.rails-2.1.x +0 -8
  115. data/test/gemfiles/Gemfile.rails-2.1.x.lock +0 -38
  116. data/test/gemfiles/Gemfile.rails-2.2.x +0 -8
  117. data/test/gemfiles/Gemfile.rails-2.2.x.lock +0 -38
  118. data/test/gemfiles/Gemfile.rails-2.3.x +0 -8
  119. data/test/gemfiles/Gemfile.rails-2.3.x.lock +0 -40
  120. data/test/gemfiles/Gemfile.rails-3.0.x.lock +0 -85
  121. data/test/gemfiles/Gemfile.rails-3.1.x.lock +0 -98
  122. data/test/gemfiles/Gemfile.rails-xss-2.3.x +0 -9
  123. data/test/gemfiles/Gemfile.rails-xss-2.3.x.lock +0 -42
  124. data/test/haml/results/filters.xhtml +0 -62
  125. data/test/haml/spec/lua_haml_spec.lua +0 -30
  126. data/test/haml/spec/ruby_haml_test.rb +0 -19
  127. data/test/haml/spec_test.rb +0 -44
  128. data/test/haml/templates/filters.haml +0 -66
  129. data/test/haml/templates/partial_layout.haml +0 -10
  130. data/test/haml/util_test.rb +0 -300
  131. data/test/linked_rails.rb +0 -42
  132. data/vendor/sass/CONTRIBUTING +0 -3
  133. data/vendor/sass/MIT-LICENSE +0 -20
  134. data/vendor/sass/README.md +0 -201
  135. data/vendor/sass/Rakefile +0 -339
  136. data/vendor/sass/TODO +0 -39
  137. data/vendor/sass/VERSION +0 -1
  138. data/vendor/sass/VERSION_NAME +0 -1
  139. data/vendor/sass/bin/sass +0 -8
  140. data/vendor/sass/bin/sass-convert +0 -7
  141. data/vendor/sass/bin/scss +0 -8
  142. data/vendor/sass/doc-src/FAQ.md +0 -35
  143. data/vendor/sass/doc-src/INDENTED_SYNTAX.md +0 -210
  144. data/vendor/sass/doc-src/SASS_CHANGELOG.md +0 -2327
  145. data/vendor/sass/doc-src/SASS_REFERENCE.md +0 -1965
  146. data/vendor/sass/doc-src/SCSS_FOR_SASS_USERS.md +0 -155
  147. data/vendor/sass/ext/extconf.rb +0 -10
  148. data/vendor/sass/extra/update_watch.rb +0 -13
  149. data/vendor/sass/init.rb +0 -18
  150. data/vendor/sass/lib/sass.rb +0 -73
  151. data/vendor/sass/lib/sass/cache_stores.rb +0 -15
  152. data/vendor/sass/lib/sass/cache_stores/base.rb +0 -86
  153. data/vendor/sass/lib/sass/cache_stores/chain.rb +0 -33
  154. data/vendor/sass/lib/sass/cache_stores/filesystem.rb +0 -60
  155. data/vendor/sass/lib/sass/cache_stores/memory.rb +0 -47
  156. data/vendor/sass/lib/sass/cache_stores/null.rb +0 -25
  157. data/vendor/sass/lib/sass/callbacks.rb +0 -66
  158. data/vendor/sass/lib/sass/css.rb +0 -295
  159. data/vendor/sass/lib/sass/engine.rb +0 -878
  160. data/vendor/sass/lib/sass/environment.rb +0 -166
  161. data/vendor/sass/lib/sass/error.rb +0 -201
  162. data/vendor/sass/lib/sass/exec.rb +0 -672
  163. data/vendor/sass/lib/sass/importers.rb +0 -22
  164. data/vendor/sass/lib/sass/importers/base.rb +0 -139
  165. data/vendor/sass/lib/sass/importers/filesystem.rb +0 -149
  166. data/vendor/sass/lib/sass/less.rb +0 -382
  167. data/vendor/sass/lib/sass/logger.rb +0 -15
  168. data/vendor/sass/lib/sass/logger/base.rb +0 -32
  169. data/vendor/sass/lib/sass/logger/log_level.rb +0 -49
  170. data/vendor/sass/lib/sass/plugin.rb +0 -132
  171. data/vendor/sass/lib/sass/plugin/compiler.rb +0 -383
  172. data/vendor/sass/lib/sass/plugin/configuration.rb +0 -123
  173. data/vendor/sass/lib/sass/plugin/generic.rb +0 -15
  174. data/vendor/sass/lib/sass/plugin/merb.rb +0 -48
  175. data/vendor/sass/lib/sass/plugin/rack.rb +0 -60
  176. data/vendor/sass/lib/sass/plugin/rails.rb +0 -47
  177. data/vendor/sass/lib/sass/plugin/staleness_checker.rb +0 -173
  178. data/vendor/sass/lib/sass/railtie.rb +0 -9
  179. data/vendor/sass/lib/sass/repl.rb +0 -58
  180. data/vendor/sass/lib/sass/root.rb +0 -7
  181. data/vendor/sass/lib/sass/script.rb +0 -40
  182. data/vendor/sass/lib/sass/script/bool.rb +0 -18
  183. data/vendor/sass/lib/sass/script/color.rb +0 -480
  184. data/vendor/sass/lib/sass/script/css_lexer.rb +0 -29
  185. data/vendor/sass/lib/sass/script/css_parser.rb +0 -31
  186. data/vendor/sass/lib/sass/script/funcall.rb +0 -175
  187. data/vendor/sass/lib/sass/script/functions.rb +0 -1386
  188. data/vendor/sass/lib/sass/script/interpolation.rb +0 -79
  189. data/vendor/sass/lib/sass/script/lexer.rb +0 -339
  190. data/vendor/sass/lib/sass/script/list.rb +0 -83
  191. data/vendor/sass/lib/sass/script/literal.rb +0 -250
  192. data/vendor/sass/lib/sass/script/node.rb +0 -99
  193. data/vendor/sass/lib/sass/script/number.rb +0 -452
  194. data/vendor/sass/lib/sass/script/operation.rb +0 -99
  195. data/vendor/sass/lib/sass/script/parser.rb +0 -474
  196. data/vendor/sass/lib/sass/script/string.rb +0 -51
  197. data/vendor/sass/lib/sass/script/string_interpolation.rb +0 -103
  198. data/vendor/sass/lib/sass/script/unary_operation.rb +0 -64
  199. data/vendor/sass/lib/sass/script/variable.rb +0 -59
  200. data/vendor/sass/lib/sass/scss.rb +0 -17
  201. data/vendor/sass/lib/sass/scss/css_parser.rb +0 -46
  202. data/vendor/sass/lib/sass/scss/parser.rb +0 -960
  203. data/vendor/sass/lib/sass/scss/rx.rb +0 -128
  204. data/vendor/sass/lib/sass/scss/sass_parser.rb +0 -11
  205. data/vendor/sass/lib/sass/scss/script_lexer.rb +0 -15
  206. data/vendor/sass/lib/sass/scss/script_parser.rb +0 -25
  207. data/vendor/sass/lib/sass/scss/static_parser.rb +0 -40
  208. data/vendor/sass/lib/sass/selector.rb +0 -361
  209. data/vendor/sass/lib/sass/selector/abstract_sequence.rb +0 -62
  210. data/vendor/sass/lib/sass/selector/comma_sequence.rb +0 -81
  211. data/vendor/sass/lib/sass/selector/sequence.rb +0 -233
  212. data/vendor/sass/lib/sass/selector/simple.rb +0 -113
  213. data/vendor/sass/lib/sass/selector/simple_sequence.rb +0 -134
  214. data/vendor/sass/lib/sass/shared.rb +0 -78
  215. data/vendor/sass/lib/sass/tree/charset_node.rb +0 -22
  216. data/vendor/sass/lib/sass/tree/comment_node.rb +0 -90
  217. data/vendor/sass/lib/sass/tree/debug_node.rb +0 -18
  218. data/vendor/sass/lib/sass/tree/directive_node.rb +0 -23
  219. data/vendor/sass/lib/sass/tree/each_node.rb +0 -24
  220. data/vendor/sass/lib/sass/tree/extend_node.rb +0 -29
  221. data/vendor/sass/lib/sass/tree/for_node.rb +0 -36
  222. data/vendor/sass/lib/sass/tree/function_node.rb +0 -27
  223. data/vendor/sass/lib/sass/tree/if_node.rb +0 -52
  224. data/vendor/sass/lib/sass/tree/import_node.rb +0 -68
  225. data/vendor/sass/lib/sass/tree/media_node.rb +0 -32
  226. data/vendor/sass/lib/sass/tree/mixin_def_node.rb +0 -27
  227. data/vendor/sass/lib/sass/tree/mixin_node.rb +0 -32
  228. data/vendor/sass/lib/sass/tree/node.rb +0 -201
  229. data/vendor/sass/lib/sass/tree/prop_node.rb +0 -148
  230. data/vendor/sass/lib/sass/tree/return_node.rb +0 -18
  231. data/vendor/sass/lib/sass/tree/root_node.rb +0 -28
  232. data/vendor/sass/lib/sass/tree/rule_node.rb +0 -136
  233. data/vendor/sass/lib/sass/tree/variable_node.rb +0 -30
  234. data/vendor/sass/lib/sass/tree/visitors/base.rb +0 -75
  235. data/vendor/sass/lib/sass/tree/visitors/check_nesting.rb +0 -133
  236. data/vendor/sass/lib/sass/tree/visitors/convert.rb +0 -260
  237. data/vendor/sass/lib/sass/tree/visitors/cssize.rb +0 -175
  238. data/vendor/sass/lib/sass/tree/visitors/deep_copy.rb +0 -87
  239. data/vendor/sass/lib/sass/tree/visitors/perform.rb +0 -332
  240. data/vendor/sass/lib/sass/tree/visitors/set_options.rb +0 -97
  241. data/vendor/sass/lib/sass/tree/visitors/to_css.rb +0 -210
  242. data/vendor/sass/lib/sass/tree/warn_node.rb +0 -18
  243. data/vendor/sass/lib/sass/tree/while_node.rb +0 -18
  244. data/vendor/sass/lib/sass/util.rb +0 -721
  245. data/vendor/sass/lib/sass/util/subset_map.rb +0 -101
  246. data/vendor/sass/lib/sass/version.rb +0 -112
  247. data/vendor/sass/rails/init.rb +0 -1
  248. data/vendor/sass/sass.gemspec +0 -33
  249. data/vendor/sass/test/Gemfile +0 -4
  250. data/vendor/sass/test/Gemfile.lock +0 -19
  251. data/vendor/sass/test/sass/cache_test.rb +0 -89
  252. data/vendor/sass/test/sass/callbacks_test.rb +0 -61
  253. data/vendor/sass/test/sass/conversion_test.rb +0 -1199
  254. data/vendor/sass/test/sass/css2sass_test.rb +0 -373
  255. data/vendor/sass/test/sass/data/hsl-rgb.txt +0 -319
  256. data/vendor/sass/test/sass/engine_test.rb +0 -2567
  257. data/vendor/sass/test/sass/extend_test.rb +0 -1348
  258. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.css +0 -1
  259. data/vendor/sass/test/sass/fixtures/test_staleness_check_across_importers.scss +0 -1
  260. data/vendor/sass/test/sass/functions_test.rb +0 -1038
  261. data/vendor/sass/test/sass/importer_test.rb +0 -192
  262. data/vendor/sass/test/sass/less_conversion_test.rb +0 -653
  263. data/vendor/sass/test/sass/logger_test.rb +0 -58
  264. data/vendor/sass/test/sass/mock_importer.rb +0 -49
  265. data/vendor/sass/test/sass/more_results/more1.css +0 -9
  266. data/vendor/sass/test/sass/more_results/more1_with_line_comments.css +0 -26
  267. data/vendor/sass/test/sass/more_results/more_import.css +0 -29
  268. data/vendor/sass/test/sass/more_templates/_more_partial.sass +0 -2
  269. data/vendor/sass/test/sass/more_templates/more1.sass +0 -23
  270. data/vendor/sass/test/sass/more_templates/more_import.sass +0 -11
  271. data/vendor/sass/test/sass/plugin_test.rb +0 -472
  272. data/vendor/sass/test/sass/results/alt.css +0 -4
  273. data/vendor/sass/test/sass/results/basic.css +0 -9
  274. data/vendor/sass/test/sass/results/compact.css +0 -5
  275. data/vendor/sass/test/sass/results/complex.css +0 -86
  276. data/vendor/sass/test/sass/results/compressed.css +0 -1
  277. data/vendor/sass/test/sass/results/expanded.css +0 -19
  278. data/vendor/sass/test/sass/results/if.css +0 -3
  279. data/vendor/sass/test/sass/results/import.css +0 -31
  280. data/vendor/sass/test/sass/results/import_charset.css +0 -4
  281. data/vendor/sass/test/sass/results/import_charset_1_8.css +0 -4
  282. data/vendor/sass/test/sass/results/import_charset_ibm866.css +0 -4
  283. data/vendor/sass/test/sass/results/line_numbers.css +0 -49
  284. data/vendor/sass/test/sass/results/mixins.css +0 -95
  285. data/vendor/sass/test/sass/results/multiline.css +0 -24
  286. data/vendor/sass/test/sass/results/nested.css +0 -22
  287. data/vendor/sass/test/sass/results/options.css +0 -1
  288. data/vendor/sass/test/sass/results/parent_ref.css +0 -13
  289. data/vendor/sass/test/sass/results/script.css +0 -16
  290. data/vendor/sass/test/sass/results/scss_import.css +0 -31
  291. data/vendor/sass/test/sass/results/scss_importee.css +0 -2
  292. data/vendor/sass/test/sass/results/subdir/nested_subdir/nested_subdir.css +0 -1
  293. data/vendor/sass/test/sass/results/subdir/subdir.css +0 -3
  294. data/vendor/sass/test/sass/results/units.css +0 -11
  295. data/vendor/sass/test/sass/results/warn.css +0 -0
  296. data/vendor/sass/test/sass/results/warn_imported.css +0 -0
  297. data/vendor/sass/test/sass/script_conversion_test.rb +0 -285
  298. data/vendor/sass/test/sass/script_test.rb +0 -514
  299. data/vendor/sass/test/sass/scss/css_test.rb +0 -922
  300. data/vendor/sass/test/sass/scss/rx_test.rb +0 -156
  301. data/vendor/sass/test/sass/scss/scss_test.rb +0 -1273
  302. data/vendor/sass/test/sass/scss/test_helper.rb +0 -37
  303. data/vendor/sass/test/sass/templates/_imported_charset_ibm866.sass +0 -4
  304. data/vendor/sass/test/sass/templates/_imported_charset_utf8.sass +0 -4
  305. data/vendor/sass/test/sass/templates/_partial.sass +0 -2
  306. data/vendor/sass/test/sass/templates/alt.sass +0 -16
  307. data/vendor/sass/test/sass/templates/basic.sass +0 -23
  308. data/vendor/sass/test/sass/templates/bork1.sass +0 -2
  309. data/vendor/sass/test/sass/templates/bork2.sass +0 -2
  310. data/vendor/sass/test/sass/templates/bork3.sass +0 -2
  311. data/vendor/sass/test/sass/templates/bork4.sass +0 -2
  312. data/vendor/sass/test/sass/templates/bork5.sass +0 -3
  313. data/vendor/sass/test/sass/templates/compact.sass +0 -17
  314. data/vendor/sass/test/sass/templates/complex.sass +0 -305
  315. data/vendor/sass/test/sass/templates/compressed.sass +0 -15
  316. data/vendor/sass/test/sass/templates/expanded.sass +0 -17
  317. data/vendor/sass/test/sass/templates/if.sass +0 -11
  318. data/vendor/sass/test/sass/templates/import.sass +0 -12
  319. data/vendor/sass/test/sass/templates/import_charset.sass +0 -7
  320. data/vendor/sass/test/sass/templates/import_charset_1_8.sass +0 -4
  321. data/vendor/sass/test/sass/templates/import_charset_ibm866.sass +0 -9
  322. data/vendor/sass/test/sass/templates/importee.less +0 -2
  323. data/vendor/sass/test/sass/templates/importee.sass +0 -19
  324. data/vendor/sass/test/sass/templates/line_numbers.sass +0 -13
  325. data/vendor/sass/test/sass/templates/mixin_bork.sass +0 -5
  326. data/vendor/sass/test/sass/templates/mixins.sass +0 -76
  327. data/vendor/sass/test/sass/templates/multiline.sass +0 -20
  328. data/vendor/sass/test/sass/templates/nested.sass +0 -25
  329. data/vendor/sass/test/sass/templates/nested_bork1.sass +0 -2
  330. data/vendor/sass/test/sass/templates/nested_bork2.sass +0 -2
  331. data/vendor/sass/test/sass/templates/nested_bork3.sass +0 -2
  332. data/vendor/sass/test/sass/templates/nested_bork4.sass +0 -2
  333. data/vendor/sass/test/sass/templates/nested_bork5.sass +0 -2
  334. data/vendor/sass/test/sass/templates/nested_import.sass +0 -2
  335. data/vendor/sass/test/sass/templates/nested_mixin_bork.sass +0 -6
  336. data/vendor/sass/test/sass/templates/options.sass +0 -2
  337. data/vendor/sass/test/sass/templates/parent_ref.sass +0 -25
  338. data/vendor/sass/test/sass/templates/script.sass +0 -101
  339. data/vendor/sass/test/sass/templates/scss_import.scss +0 -11
  340. data/vendor/sass/test/sass/templates/scss_importee.scss +0 -1
  341. data/vendor/sass/test/sass/templates/subdir/nested_subdir/_nested_partial.sass +0 -2
  342. data/vendor/sass/test/sass/templates/subdir/nested_subdir/nested_subdir.sass +0 -3
  343. data/vendor/sass/test/sass/templates/subdir/subdir.sass +0 -6
  344. data/vendor/sass/test/sass/templates/units.sass +0 -11
  345. data/vendor/sass/test/sass/templates/warn.sass +0 -3
  346. data/vendor/sass/test/sass/templates/warn_imported.sass +0 -4
  347. data/vendor/sass/test/sass/test_helper.rb +0 -8
  348. data/vendor/sass/test/sass/util/subset_map_test.rb +0 -91
  349. data/vendor/sass/test/sass/util_test.rb +0 -266
  350. data/vendor/sass/test/test_helper.rb +0 -69
  351. data/vendor/sass/vendor/fssm/Gemfile +0 -3
  352. data/vendor/sass/vendor/fssm/LICENSE +0 -20
  353. data/vendor/sass/vendor/fssm/README.markdown +0 -83
  354. data/vendor/sass/vendor/fssm/Rakefile +0 -11
  355. data/vendor/sass/vendor/fssm/example.rb +0 -12
  356. data/vendor/sass/vendor/fssm/fssm.gemspec +0 -24
  357. data/vendor/sass/vendor/fssm/lib/fssm.rb +0 -37
  358. data/vendor/sass/vendor/fssm/lib/fssm/backends/fsevents.rb +0 -36
  359. data/vendor/sass/vendor/fssm/lib/fssm/backends/inotify.rb +0 -26
  360. data/vendor/sass/vendor/fssm/lib/fssm/backends/polling.rb +0 -25
  361. data/vendor/sass/vendor/fssm/lib/fssm/backends/rbfsevent.rb +0 -42
  362. data/vendor/sass/vendor/fssm/lib/fssm/backends/rubycocoa/fsevents.rb +0 -131
  363. data/vendor/sass/vendor/fssm/lib/fssm/monitor.rb +0 -36
  364. data/vendor/sass/vendor/fssm/lib/fssm/path.rb +0 -94
  365. data/vendor/sass/vendor/fssm/lib/fssm/pathname.rb +0 -36
  366. data/vendor/sass/vendor/fssm/lib/fssm/state/directory.rb +0 -75
  367. data/vendor/sass/vendor/fssm/lib/fssm/state/file.rb +0 -24
  368. data/vendor/sass/vendor/fssm/lib/fssm/support.rb +0 -92
  369. data/vendor/sass/vendor/fssm/lib/fssm/tree.rb +0 -176
  370. data/vendor/sass/vendor/fssm/lib/fssm/version.rb +0 -3
  371. data/vendor/sass/vendor/fssm/profile/prof-cache.rb +0 -40
  372. data/vendor/sass/vendor/fssm/profile/prof-fssm-pathname.html +0 -1231
  373. data/vendor/sass/vendor/fssm/profile/prof-pathname-rubinius.rb +0 -35
  374. data/vendor/sass/vendor/fssm/profile/prof-pathname.rb +0 -68
  375. data/vendor/sass/vendor/fssm/profile/prof-plain-pathname.html +0 -988
  376. data/vendor/sass/vendor/fssm/profile/prof.html +0 -2379
  377. data/vendor/sass/vendor/fssm/spec/count_down_latch.rb +0 -151
  378. data/vendor/sass/vendor/fssm/spec/monitor_spec.rb +0 -202
  379. data/vendor/sass/vendor/fssm/spec/path_spec.rb +0 -96
  380. data/vendor/sass/vendor/fssm/spec/root/duck/quack.txt +0 -0
  381. data/vendor/sass/vendor/fssm/spec/root/file.css +0 -0
  382. data/vendor/sass/vendor/fssm/spec/root/file.rb +0 -0
  383. data/vendor/sass/vendor/fssm/spec/root/file.yml +0 -0
  384. data/vendor/sass/vendor/fssm/spec/root/moo/cow.txt +0 -0
  385. data/vendor/sass/vendor/fssm/spec/spec_helper.rb +0 -14
  386. data/vendor/sass/yard/callbacks.rb +0 -29
  387. data/vendor/sass/yard/default/fulldoc/html/css/common.sass +0 -26
  388. data/vendor/sass/yard/default/layout/html/footer.erb +0 -12
  389. data/vendor/sass/yard/inherited_hash.rb +0 -41
@@ -1,192 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../test_helper'
3
- require File.dirname(__FILE__) + '/test_helper'
4
-
5
- require 'sass/plugin'
6
-
7
- class ImporterTest < Test::Unit::TestCase
8
-
9
- class FruitImporter < Sass::Importers::Base
10
- def find(name, context = nil)
11
- if name =~ %r{fruits/(\w+)(\.s[ac]ss)?}
12
- fruit = $1
13
- color = case $1
14
- when "apple"
15
- "red"
16
- when "orange"
17
- "orange"
18
- else
19
- "blue"
20
- end
21
- contents = %Q{
22
- $#{fruit}-color: #{color} !default;
23
- @mixin #{fruit} {
24
- color: $#{fruit}-color;
25
- }
26
- }
27
- Sass::Engine.new(contents, :filename => name, :syntax => :scss, :importer => self)
28
- end
29
- end
30
-
31
- def key(name, context)
32
- [self.class.name, name]
33
- end
34
- end
35
-
36
- # This class proves that you can override the extension scheme for importers
37
- class ReversedExtImporter < Sass::Importers::Filesystem
38
- def extensions
39
- {"sscs" => :scss, "ssas" => :sass}
40
- end
41
- end
42
-
43
- # This importer maps one import to another import
44
- # based on the mappings passed to importer's constructor.
45
- class IndirectImporter < Sass::Importers::Base
46
- def initialize(mappings, mtimes)
47
- @mappings = mappings
48
- @mtimes = mtimes
49
- end
50
- def find_relative(uri, base, options)
51
- nil
52
- end
53
- def find(name, options)
54
- if @mappings.has_key?(name)
55
- Sass::Engine.new(
56
- %Q[@import "#{@mappings[name]}";],
57
- options.merge(
58
- :filename => name,
59
- :syntax => :scss,
60
- :importer => self
61
- )
62
- )
63
- end
64
- end
65
- def mtime(uri, options)
66
- @mtimes.fetch(uri, @mtimes.has_key?(uri) ? Time.now : nil)
67
- end
68
- def key(uri, options)
69
- [self.class.name, uri]
70
- end
71
- def to_s
72
- "IndirectImporter(#{@mappings.keys.join(", ")})"
73
- end
74
- end
75
-
76
- # This importer maps the import to single class
77
- # based on the mappings passed to importer's constructor.
78
- class ClassImporter < Sass::Importers::Base
79
- def initialize(mappings, mtimes)
80
- @mappings = mappings
81
- @mtimes = mtimes
82
- end
83
- def find_relative(uri, base, options)
84
- nil
85
- end
86
- def find(name, options)
87
- if @mappings.has_key?(name)
88
- Sass::Engine.new(
89
- %Q[.#{name}{#{@mappings[name]}}],
90
- options.merge(
91
- :filename => name,
92
- :syntax => :scss,
93
- :importer => self
94
- )
95
- )
96
- end
97
- end
98
- def mtime(uri, options)
99
- @mtimes.fetch(uri, @mtimes.has_key?(uri) ? Time.now : nil)
100
- end
101
- def key(uri, options)
102
- [self.class.name, uri]
103
- end
104
- def to_s
105
- "ClassImporter(#{@mappings.keys.join(", ")})"
106
- end
107
- end
108
-
109
- def test_can_resolve_generated_imports
110
- scss_file = %Q{
111
- $pear-color: green;
112
- @import "fruits/apple"; @import "fruits/orange"; @import "fruits/pear";
113
- .apple { @include apple; }
114
- .orange { @include orange; }
115
- .pear { @include pear; }
116
- }
117
- css_file = <<CSS
118
- .apple { color: red; }
119
-
120
- .orange { color: orange; }
121
-
122
- .pear { color: green; }
123
- CSS
124
- options = {:style => :compact, :load_paths => [FruitImporter.new], :syntax => :scss}
125
- assert_equal css_file, Sass::Engine.new(scss_file, options).render
126
- end
127
-
128
- def test_extension_overrides
129
- FileUtils.mkdir_p(absolutize("tmp"))
130
- open(absolutize("tmp/foo.ssas"), "w") {|f| f.write(".foo\n reversed: true\n")}
131
- open(absolutize("tmp/bar.sscs"), "w") {|f| f.write(".bar {reversed: true}\n")}
132
- scss_file = %Q{
133
- @import "foo", "bar";
134
- @import "foo.ssas", "bar.sscs";
135
- }
136
- css_file = <<CSS
137
- .foo { reversed: true; }
138
-
139
- .bar { reversed: true; }
140
-
141
- .foo { reversed: true; }
142
-
143
- .bar { reversed: true; }
144
- CSS
145
- options = {:style => :compact, :load_paths => [ReversedExtImporter.new(absolutize("tmp"))], :syntax => :scss}
146
- assert_equal css_file, Sass::Engine.new(scss_file, options).render
147
- ensure
148
- FileUtils.rm_rf(absolutize("tmp"))
149
- end
150
-
151
- def test_staleness_check_across_importers
152
- file_system_importer = Sass::Importers::Filesystem.new(fixture_dir)
153
- # Make sure the first import is older
154
- indirect_importer = IndirectImporter.new({"apple" => "pear"}, {"apple" => Time.now - 1})
155
- # Make css file is newer so the dependencies are the only way for the css file to be out of date.
156
- FileUtils.touch(fixture_file("test_staleness_check_across_importers.css"))
157
- # Make sure the first import is older
158
- class_importer = ClassImporter.new({"pear" => %Q{color: green;}}, {"pear" => Time.now + 1})
159
-
160
- options = {
161
- :style => :compact,
162
- :filename => fixture_file("test_staleness_check_across_importers.scss"),
163
- :importer => file_system_importer,
164
- :load_paths => [file_system_importer, indirect_importer, class_importer],
165
- :syntax => :scss
166
- }
167
-
168
- assert_equal File.read(fixture_file("test_staleness_check_across_importers.css")),
169
- Sass::Engine.new(File.read(fixture_file("test_staleness_check_across_importers.scss")), options).render
170
-
171
- checker = Sass::Plugin::StalenessChecker.new(options)
172
-
173
- assert checker.stylesheet_needs_update?(
174
- fixture_file("test_staleness_check_across_importers.css"),
175
- fixture_file("test_staleness_check_across_importers.scss"),
176
- file_system_importer
177
- )
178
- end
179
-
180
- def fixture_dir
181
- File.join(File.dirname(__FILE__), "fixtures")
182
- end
183
-
184
- def fixture_file(path)
185
- File.join(fixture_dir, path)
186
- end
187
-
188
- def test_absolute_files_across_template_locations
189
- importer = Sass::Importers::Filesystem.new(absolutize 'templates')
190
- assert_not_nil importer.mtime(absolutize('more_templates/more1.sass'), {})
191
- end
192
- end
@@ -1,653 +0,0 @@
1
- #!/usr/bin/env ruby
2
- require File.dirname(__FILE__) + '/../test_helper'
3
-
4
- begin
5
- require 'sass/less'
6
-
7
- class LessConversionTest < Test::Unit::TestCase
8
- def test_variable_declarations
9
- assert_renders <<SCSS, <<LESS
10
- $var1: 2px 3px;
11
- $var2: $var1 + 7px;
12
-
13
- $var3: fizz;
14
-
15
- foo {
16
- prop: $var1 $var2 $var3; }
17
- SCSS
18
- @var1: 2px 3px;
19
- @var2: @var1 + 7px;
20
-
21
- @var3: fizz;
22
-
23
- foo {prop: @var1 @var2 @var3}
24
- LESS
25
- end
26
-
27
- def test_nested_variable_declarations
28
- assert_renders <<SCSS, <<LESS
29
- .foo {
30
- $var: 2px;
31
- prop: $var; }
32
- SCSS
33
- .foo {
34
- @var: 2px;
35
- prop: @var; }
36
- LESS
37
- end
38
-
39
- def test_import
40
- path = relative_path_to(File.dirname(__FILE__) + "/templates/importee.less")
41
- resolved_path = relative_path_to(File.dirname(__FILE__) + "/templates/importee")
42
- assert_renders <<SCSS, <<LESS
43
- @import "#{resolved_path}";
44
- @import "#{resolved_path}";
45
-
46
- @import "#{resolved_path}";
47
- @import "#{resolved_path}";
48
- @import "#{resolved_path}";
49
- SCSS
50
- @import url(#{path});
51
- @import url("#{path}");
52
-
53
- @import url('#{path}');
54
- @import '#{path}';
55
- @import "#{path}";
56
- LESS
57
- end
58
-
59
- def test_mixins_found_through_import
60
- path = relative_path_to(File.dirname(__FILE__) + "/templates/importee.less")
61
- resolved_path = relative_path_to(File.dirname(__FILE__) + "/templates/importee")
62
- assert_renders <<SCSS, <<LESS
63
- @import "#{resolved_path}";
64
-
65
- .baz {
66
- @extend .foo;
67
- @include bar; }
68
- SCSS
69
- @import "#{path}";
70
-
71
- .baz {.foo; .bar;}
72
- LESS
73
- end
74
-
75
- # Selectors
76
-
77
- def test_element_selector
78
- assert_renders <<SCSS, <<LESS
79
- foo {
80
- a: b; }
81
- SCSS
82
- foo {a: b}
83
- LESS
84
- end
85
-
86
- def test_class_selector
87
- assert_renders <<SCSS, <<LESS
88
- .foo {
89
- a: b; }
90
- SCSS
91
- .foo {a: b}
92
- LESS
93
- end
94
-
95
- def test_id_selector
96
- assert_renders <<SCSS, <<LESS
97
- #foo {
98
- a: b; }
99
- SCSS
100
- #foo {a: b}
101
- LESS
102
- end
103
-
104
- def test_pseudoclass_selector
105
- assert_renders <<SCSS, <<LESS
106
- :foo {
107
- a: b; }
108
- SCSS
109
- :foo {a: b}
110
- LESS
111
- end
112
-
113
- def test_pseudoelement_selector
114
- assert_renders <<SCSS, <<LESS
115
- ::foo {
116
- a: b; }
117
- SCSS
118
- ::foo {a: b}
119
- LESS
120
- end
121
-
122
- def test_comma_selector
123
- assert_renders <<SCSS, <<LESS
124
- foo, .bar .baz, :bang {
125
- a: b; }
126
- SCSS
127
- foo, .bar .baz, :bang {a: b}
128
- LESS
129
- end
130
-
131
- def test_nested_comma_selector
132
- assert_renders <<SCSS, <<LESS
133
- foo bar, .baz {
134
- .bang, &:bip bap {
135
- a: b; } }
136
- SCSS
137
- foo bar, .baz {
138
- .bang, :bip bap {a: b} }
139
- LESS
140
- end
141
-
142
- def test_simple_selector_sequence
143
- assert_renders <<SCSS, <<LESS
144
- a.foo#bar[attr=val] {
145
- a: b; }
146
- SCSS
147
- a.foo#bar[attr=val] {a: b}
148
- LESS
149
- end
150
-
151
- def test_descendant_selector
152
- assert_renders <<SCSS, <<LESS
153
- .foo .bar {
154
- a: b; }
155
- SCSS
156
- .foo .bar {a: b}
157
- LESS
158
- end
159
-
160
- def test_child_selector
161
- assert_renders <<SCSS, <<LESS
162
- .foo > .bar {
163
- a: b; }
164
- SCSS
165
- .foo > .bar {a: b}
166
- LESS
167
- end
168
-
169
- def test_adjacent_selector
170
- assert_renders <<SCSS, <<LESS
171
- .foo + .bar {
172
- a: b; }
173
- SCSS
174
- .foo + .bar {a: b}
175
- LESS
176
- end
177
-
178
- def test_pseudoclass_in_sequence
179
- assert_renders <<SCSS, <<LESS
180
- .foo:bar {
181
- a: b; }
182
- SCSS
183
- .foo:bar {a: b}
184
- LESS
185
- end
186
-
187
- def test_pseudoelement_in_sequence
188
- assert_renders <<SCSS, <<LESS
189
- .foo::bar {
190
- a: b; }
191
- SCSS
192
- .foo::bar {a: b}
193
- LESS
194
- end
195
-
196
- # Properties
197
-
198
- def test_space_separated_props
199
- assert_renders <<SCSS, <<LESS
200
- foo {
201
- a: foo bar baz; }
202
- SCSS
203
- foo {a: foo bar baz}
204
- LESS
205
- end
206
-
207
- def test_comma_separated_props
208
- assert_renders <<SCSS, <<LESS
209
- foo {
210
- a: foo, bar, baz; }
211
- SCSS
212
- foo {a: foo, bar, baz}
213
- LESS
214
- end
215
-
216
- def test_numbers
217
- assert_renders <<SCSS, <<LESS
218
- foo {
219
- a: 1 2.3 -8 5px 3%; }
220
- SCSS
221
- foo {a: 1 2.3 -8 5px 3%}
222
- LESS
223
- end
224
-
225
- def test_colors
226
- assert_renders <<SCSS, <<LESS
227
- foo {
228
- a: red #abcdef blue; }
229
- SCSS
230
- foo {a: #f00 #abcdef blue}
231
- LESS
232
- end
233
-
234
- def test_strings
235
- assert_renders <<SCSS, <<LESS
236
- foo {
237
- a: "foo @var bar" "baz bang" "quote'quote" 'quote"quote'; }
238
- SCSS
239
- foo {a: "foo @var bar" 'baz bang' "quote'quote" 'quote"quote'}
240
- LESS
241
- end
242
-
243
- def test_slash
244
- assert_renders <<SCSS, <<LESS
245
- foo {
246
- a: small/8px 7em/8px;
247
- b: 8/4;
248
- c: (8 / 4); }
249
- SCSS
250
- foo {
251
- a: small/8px 7em/8px;
252
- b: 8/4;
253
- c: 8 / 4; }
254
- LESS
255
- end
256
-
257
- def test_url
258
- assert_renders <<SCSS, <<LESS
259
- foo {
260
- a: url("http://foobar.com/fizzle.html?foo=bar&bar=baz");
261
- b: url("http://foobar.com/fizzle.html?foo=bar&bar=baz");
262
- c: url("http://foobar.com/fizzle.html?foo=bar&bar=baz"); }
263
- SCSS
264
- foo {
265
- a: url(http://foobar.com/fizzle.html?foo=bar&bar=baz);
266
- b: url("http://foobar.com/fizzle.html?foo=bar&bar=baz");
267
- c: url('http://foobar.com/fizzle.html?foo=bar&bar=baz'); }
268
- LESS
269
- end
270
-
271
- def test_functions
272
- assert_renders <<SCSS, <<LESS
273
- foo {
274
- a: baz(12px) rgba(80, 70 120, 0.76);
275
- b: faz(1px + 3px) bang($var, #aaaaaa * 3); }
276
- SCSS
277
- foo {
278
- a: baz(12px) rgba(80, 70 120, 0.76);
279
- b: faz(1px + 3px) bang(@var, #aaa * 3); }
280
- LESS
281
- end
282
-
283
- def test_alpha_function
284
- assert_renders <<SCSS, <<LESS
285
- foo {
286
- a: alpha(opacity=2px);
287
- b: alpha(opacity = $var); }
288
- SCSS
289
- foo {
290
- a: alpha(opacity=2px);
291
- b: alpha(opacity=@var); }
292
- LESS
293
- end
294
-
295
- def test_variables
296
- assert_renders <<SCSS, <<LESS
297
- foo {
298
- a: $var1 $var-foo; }
299
- SCSS
300
- foo {a: @var1 @var-foo}
301
- LESS
302
- end
303
-
304
- def test_operators
305
- assert_renders <<SCSS, <<LESS
306
- foo {
307
- a: 1px + 2px;
308
- b: #bbaa88 - #aa1122;
309
- c: 5 * 3;
310
- d: (8 / 4); }
311
- SCSS
312
- foo {
313
- a: 1px + 2px;
314
- b: #ba8 - #a12;
315
- c: 5 * 3;
316
- d: 8 / 4; }
317
- LESS
318
- end
319
-
320
- def test_operator_precedence
321
- assert_renders <<SCSS, <<LESS
322
- foo {
323
- a: 1 + 2 * 3 + 4;
324
- b: 1 * 2 + 3 * 4;
325
- c: 1 - 2 + 2 - 4;
326
- d: 1 + 2 - 3 + 4;
327
- e: 1 / 2 - 3 / 4;
328
- f: 1 - 2 / 3 - 4;
329
- g: 1 / 2 * 3 / 4;
330
- h: (1 + 2) * (3 + 4);
331
- i: 1 * (2 + 3) * 4;
332
- j: 1 - (2 + 2) - 4;
333
- k: 1 + 2 - (3 + 4);
334
- l: 1 / (2 - 3) / 4;
335
- m: (1 - 2) / (3 - 4);
336
- n: 1 / (2 * 3) / 4; }
337
- SCSS
338
- foo {
339
- a: 1 + 2 * 3 + 4;
340
- b: 1 * 2 + 3 * 4;
341
- c: 1 - 2 + 2 - 4;
342
- d: 1 + 2 - 3 + 4;
343
- e: 1 / 2 - 3 / 4;
344
- f: 1 - 2 / 3 - 4;
345
- g: 1 / 2 * 3 / 4;
346
- h: (1 + 2) * (3 + 4);
347
- i: 1 * (2 + 3) * 4;
348
- j: 1 - (2 + 2) - 4;
349
- k: 1 + 2 - (3 + 4);
350
- l: 1 / (2 - 3) / 4;
351
- m: (1 - 2) / (3 - 4);
352
- n: 1 / (2 * 3) / 4; }
353
- LESS
354
- end
355
-
356
- def test_operators_with_parens
357
- assert_renders <<SCSS, <<LESS
358
- foo {
359
- a: 1px + 2px * 3;
360
- b: (1px - 2px) / 3; }
361
- SCSS
362
- foo {
363
- a: 1px + (2px * 3);
364
- b: (1px - (2px)) / 3; }
365
- LESS
366
- end
367
-
368
- def test_unary_minus
369
- assert_renders <<SCSS, <<LESS
370
- foo {
371
- a: 1px + -3px; }
372
- SCSS
373
- foo {a: 1px + (- 3px)}
374
- LESS
375
- end
376
-
377
- # Nested Rules
378
-
379
- def test_single_nested_rule
380
- assert_renders <<SCSS, <<LESS
381
- foo bar {
382
- a: b; }
383
- SCSS
384
- foo {bar {a: b}}
385
- LESS
386
- end
387
-
388
- def test_single_nested_rule_with_props
389
- assert_renders <<SCSS, <<LESS
390
- foo {
391
- bar {
392
- a: b; }
393
- c: d;
394
- e: f; }
395
- SCSS
396
- foo {
397
- bar {a: b}
398
- c: d;
399
- e: f; }
400
- LESS
401
- end
402
-
403
- def test_two_nested_rules
404
- assert_renders <<SCSS, <<LESS
405
- foo {
406
- bar {
407
- a: b; }
408
- baz {
409
- c: d; } }
410
- SCSS
411
- foo {
412
- bar {a: b}
413
- baz {c: d} }
414
- LESS
415
- end
416
-
417
- def test_two_nested_rules_with_props
418
- assert_renders <<SCSS, <<LESS
419
- foo {
420
- bar {
421
- a: b; }
422
- baz {
423
- c: d; }
424
- e: f;
425
- g: h; }
426
- SCSS
427
- foo {
428
- bar {a: b}
429
- baz {c: d}
430
- e: f;
431
- g: h; }
432
- LESS
433
- end
434
-
435
- def test_nested_rules_with_combinators
436
- assert_renders <<SCSS, <<LESS
437
- foo {
438
- > bar {
439
- a: b; }
440
- + baz {
441
- c: d; } }
442
- SCSS
443
- foo {
444
- > bar {a: b}
445
- + baz {c: d} }
446
- LESS
447
- end
448
-
449
- def test_nested_pseudo_rules
450
- assert_renders <<SCSS, <<LESS
451
- foo {
452
- &:bar {
453
- a: b; }
454
- &::baz {
455
- c: d; } }
456
- SCSS
457
- foo {
458
- :bar {a: b}
459
- ::baz {c: d} }
460
- LESS
461
- end
462
-
463
- # Mixins
464
-
465
- def test_class_inheritance
466
- assert_renders <<SCSS, <<LESS
467
- .foo {
468
- a: b; }
469
-
470
- .bar {
471
- @extend .foo; }
472
- SCSS
473
- .foo {a: b}
474
- .bar {.foo;}
475
- LESS
476
- end
477
-
478
- def test_multiple_class_inheritance
479
- assert_renders <<SCSS, <<LESS
480
- .foo {
481
- a: b; }
482
-
483
- .bar {
484
- c: d; }
485
-
486
- .baz {
487
- @extend .foo;
488
- @extend .bar; }
489
- SCSS
490
- .foo {a: b}
491
- .bar {c: d}
492
- .baz {.foo, .bar;}
493
- LESS
494
- end
495
-
496
- def test_pseudoclass_inheritance
497
- assert_renders <<SCSS, <<LESS
498
- :foo {
499
- a: b; }
500
-
501
- :bar {
502
- @extend :foo; }
503
- SCSS
504
- :foo {a: b}
505
- :bar {:foo;}
506
- LESS
507
- end
508
-
509
- def test_multiple_pseudoclass_inheritance
510
- assert_renders <<SCSS, <<LESS
511
- :foo:bar {
512
- a: b; }
513
-
514
- :baz {
515
- @extend :foo:bar; }
516
- SCSS
517
- :foo:bar {a: b}
518
- :baz {:foo:bar;}
519
- LESS
520
- end
521
-
522
- def test_abstract_mixin
523
- assert_renders <<SCSS, <<LESS
524
- @mixin foo {
525
- a: b; }
526
-
527
- .bar {
528
- @include foo; }
529
- SCSS
530
- .foo() {a: b}
531
- .bar {.foo;}
532
- LESS
533
- end
534
-
535
- def test_mixin_with_args
536
- assert_renders <<SCSS, <<LESS
537
- @mixin foo($a: 2px, $b: red) {
538
- a: $a; }
539
-
540
- .bar {
541
- @include foo; }
542
- SCSS
543
- .foo(@a: 2px, @b: #f00) {a: @a}
544
- .bar {.foo;}
545
- LESS
546
-
547
- assert_renders <<SCSS, <<LESS
548
- @mixin foo($a: 2px + 3px, $b: red) {
549
- a: $a; }
550
-
551
- .bar {
552
- @include foo(5px); }
553
- SCSS
554
- .foo(@a: 2px + 3px, @b: #f00) {a: @a}
555
- .bar {.foo(5px);}
556
- LESS
557
- end
558
-
559
- ## Disallowed Mixins
560
-
561
- def test_nested_mixin
562
- assert_warning(<<WARN) {assert_renders <<SCSS, <<LESS}
563
- WARNING: Sass doesn't support mixing in selector sequences.
564
- Replacing ".foo .bar" with "@extend .bar"
565
- WARN
566
- .foo .bar {
567
- a: b; }
568
-
569
- .bar {
570
- // .foo .bar;
571
- @extend .bar; }
572
- SCSS
573
- .foo .bar {a: b}
574
- .bar {.foo .bar;}
575
- LESS
576
- end
577
-
578
- def test_child_selector_mixin
579
- assert_warning(<<WARN) {assert_renders <<SCSS, <<LESS}
580
- WARNING: Sass doesn't support mixing in selector sequences.
581
- Replacing "> .bar" with "@extend .bar"
582
- WARN
583
- .foo > .bar {
584
- a: b; }
585
-
586
- .bar {
587
- // > .bar;
588
- @extend .bar; }
589
- SCSS
590
- .foo > .bar {a: b}
591
- .bar {> .bar;}
592
- LESS
593
- end
594
-
595
- # Accessors
596
-
597
- def test_property_accessor
598
- assert_warning(<<WARN) {assert_renders <<SCSS, <<LESS}
599
- WARNING: Sass doesn't support attribute accessors.
600
- Ignoring .magic-box['content']
601
- WARN
602
- .magic-box {
603
- content: "gold"; }
604
-
605
- .foo {
606
- content: /* .magic-box['content'] */; }
607
- SCSS
608
- .magic-box {content: "gold"}
609
- .foo {content: .magic-box['content']}
610
- LESS
611
- end
612
-
613
- def test_variable_accessor
614
- assert_warning(<<WARN) {assert_renders <<SCSS, <<LESS}
615
- WARNING: Sass doesn't support attribute accessors.
616
- Ignoring .magic-box[@content]
617
- WARN
618
- .magic-box {
619
- $content: "gold";
620
- content: $content; }
621
-
622
- .foo {
623
- content: /* .magic-box[@content] */; }
624
- SCSS
625
- .magic-box {@content: "gold"; content: @content}
626
- .foo {content: .magic-box[@content]}
627
- LESS
628
- end
629
-
630
- private
631
-
632
- def assert_renders(scss, less)
633
- assert_equal(scss, Less::Engine.new(less).to_tree.to_sass_tree.to_scss)
634
- end
635
-
636
- # Necessary because Less can't import absolute files
637
- def relative_path_to(file)
638
- file = Pathname.new(file)
639
- pwd = file.absolute? ? Dir.pwd : "."
640
- file.relative_path_from(Pathname.new(pwd))
641
- end
642
- end
643
-
644
- rescue LoadError => e
645
- unless defined?(Gem)
646
- begin
647
- require 'rubygems'
648
- retry
649
- rescue Exception
650
- end
651
- end
652
- puts "\nCouldn't require less, skipping some tests."
653
- end