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,922 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # -*- coding: utf-8 -*-
3
- require File.dirname(__FILE__) + '/test_helper'
4
- require 'sass/scss/css_parser'
5
-
6
- # These tests just test the parsing of CSS
7
- # (both standard and any hacks we intend to support).
8
- # Tests of SCSS-specific behavior go in scss_test.rb.
9
- class ScssCssTest < Test::Unit::TestCase
10
- include ScssTestHelper
11
-
12
- def test_basic_scss
13
- assert_parses <<SCSS
14
- selector {
15
- property: value;
16
- property2: value; }
17
- SCSS
18
-
19
- assert_equal <<CSS, render('sel{p:v}')
20
- sel {
21
- p: v; }
22
- CSS
23
- end
24
-
25
- def test_empty_rule
26
- assert_equal "", render("#foo .bar {}")
27
- assert_equal "", render(<<SCSS)
28
- #foo .bar {
29
- }
30
- SCSS
31
- end
32
-
33
- def test_cdo_and_cdc_ignored_at_toplevel
34
- assert_equal <<CSS, render(<<SCSS)
35
- foo {
36
- bar: baz; }
37
-
38
- bar {
39
- bar: baz; }
40
-
41
- baz {
42
- bar: baz; }
43
- CSS
44
- foo {bar: baz}
45
- <!--
46
- bar {bar: baz}
47
- -->
48
- baz {bar: baz}
49
- SCSS
50
- end
51
-
52
- if Sass::Util.ruby1_8?
53
- def test_unicode
54
- assert_parses <<SCSS
55
- @charset "UTF-8";
56
- foo {
57
- bar: föö bâr; }
58
- SCSS
59
- assert_parses <<SCSS
60
- foo {
61
- bar: föö bâr; }
62
- SCSS
63
- end
64
- else
65
- def test_unicode
66
- assert_parses <<SCSS
67
- @charset "UTF-8";
68
- foo {
69
- bar: föö bâr; }
70
- SCSS
71
- assert_equal <<CSS, render(<<SCSS)
72
- @charset "UTF-8";
73
- foo {
74
- bar: föö bâr; }
75
- CSS
76
- foo {
77
- bar: föö bâr; }
78
- SCSS
79
- end
80
- end
81
-
82
- def test_invisible_comments
83
- assert_equal <<CSS, render(<<SCSS)
84
- foo {
85
- a: d; }
86
- CSS
87
- foo {a: /* b; c: */ d}
88
- SCSS
89
- assert_equal <<CSS, render(<<SCSS)
90
- foo {
91
- a: d; }
92
- CSS
93
- foo {a /*: b; c */: d}
94
- SCSS
95
- end
96
-
97
- def test_crazy_comments
98
- # http://www.w3.org/Style/CSS/Test/CSS2.1/current/xhtml1/t040109-c17-comments-00-b.xht
99
- assert_equal <<CSS, render(<<SCSS)
100
- /* This is a CSS comment. */
101
- .one {
102
- color: green; }
103
-
104
- /* Another comment */
105
- /* The following should not be used:
106
- .two {color: red;} */
107
- .three {
108
- color: green;
109
- /* color: red; */ }
110
-
111
- /**
112
- .four {color: red;} */
113
- .five {
114
- color: green; }
115
-
116
- /**/
117
- .six {
118
- color: green; }
119
-
120
- /*********/
121
- .seven {
122
- color: green; }
123
-
124
- /* a comment **/
125
- .eight {
126
- color: green; }
127
- CSS
128
- /* This is a CSS comment. */
129
- .one {color: green;} /* Another comment */
130
- /* The following should not be used:
131
- .two {color: red;} */
132
- .three {color: green; /* color: red; */}
133
- /**
134
- .four {color: red;} */
135
- .five {color: green;}
136
- /**/
137
- .six {color: green;}
138
- /*********/
139
- .seven {color: green;}
140
- /* a comment **/
141
- .eight {color: green;}
142
- SCSS
143
- end
144
-
145
- def test_rule_comments
146
- assert_parses <<SCSS
147
- /* Foo */
148
- .foo {
149
- a: b; }
150
- SCSS
151
- assert_equal <<CSS, render(<<SCSS)
152
- /* Foo
153
- * Bar */
154
- .foo {
155
- a: b; }
156
- CSS
157
- /* Foo
158
- * Bar */.foo {
159
- a: b; }
160
- SCSS
161
- end
162
-
163
- def test_property_comments
164
- assert_parses <<SCSS
165
- .foo {
166
- /* Foo */
167
- a: b; }
168
- SCSS
169
- assert_equal <<CSS, render(<<SCSS)
170
- .foo {
171
- /* Foo
172
- * Bar */
173
- a: b; }
174
- CSS
175
- .foo {
176
- /* Foo
177
- * Bar */a: b; }
178
- SCSS
179
- end
180
-
181
- def test_selector_comments
182
- assert_equal <<CSS, render(<<SCSS)
183
- .foo #bar:baz(bip) {
184
- a: b; }
185
- CSS
186
- .foo /* .a #foo */ #bar:baz(/* bang )*/ bip) {
187
- a: b; }
188
- SCSS
189
- end
190
-
191
- def test_lonely_comments
192
- assert_parses <<SCSS
193
- /* Foo
194
- * Bar */
195
- SCSS
196
- assert_parses <<SCSS
197
- .foo {
198
- /* Foo
199
- * Bar */ }
200
- SCSS
201
- end
202
-
203
- def test_multiple_comments
204
- assert_parses <<SCSS
205
- /* Foo
206
- * Bar */
207
- /* Baz
208
- * Bang */
209
- SCSS
210
- assert_parses <<SCSS
211
- .foo {
212
- /* Foo
213
- * Bar */
214
- /* Baz
215
- * Bang */ }
216
- SCSS
217
- assert_equal <<CSS, render(<<SCSS)
218
- .foo {
219
- /* Foo Bar */
220
- /* Baz Bang */ }
221
- CSS
222
- .foo {
223
- /* Foo Bar *//* Baz Bang */ }
224
- SCSS
225
- end
226
-
227
- def test_bizarrely_formatted_comments
228
- assert_parses <<SCSS
229
- .foo {
230
- /* Foo
231
- Bar
232
- Baz */
233
- a: b; }
234
- SCSS
235
- assert_parses <<SCSS
236
- .foo {
237
- /* Foo
238
- Bar
239
- Baz */
240
- a: b; }
241
- SCSS
242
- assert_equal <<CSS, render(<<SCSS)
243
- .foo {
244
- /* Foo
245
- Bar */
246
- a: b; }
247
- CSS
248
- .foo {/* Foo
249
- Bar */
250
- a: b; }
251
- SCSS
252
- assert_equal <<CSS, render(<<SCSS)
253
- .foo {
254
- /* Foo
255
- Bar
256
- Baz */
257
- a: b; }
258
- CSS
259
- .foo {/* Foo
260
- Bar
261
- Baz */
262
- a: b; }
263
- SCSS
264
- end
265
-
266
- ## Declarations
267
-
268
- def test_vendor_properties
269
- assert_parses <<SCSS
270
- foo {
271
- -moz-foo-bar: blat;
272
- -o-flat-blang: wibble; }
273
- SCSS
274
- end
275
-
276
- def test_empty_declarations
277
- assert_equal <<CSS, render(<<SCSS)
278
- foo {
279
- bar: baz; }
280
- CSS
281
- foo {;;;;
282
- bar: baz;;;;
283
- ;;}
284
- SCSS
285
- end
286
-
287
- def test_basic_property_types
288
- assert_parses <<SCSS
289
- foo {
290
- a: 2;
291
- b: 2.3em;
292
- c: 50%;
293
- d: "fraz bran";
294
- e: flanny-blanny-blan;
295
- f: url(http://sass-lang.com);
296
- g: U+ffa?;
297
- h: #aabbcc; }
298
- SCSS
299
- end
300
-
301
- def test_functions
302
- assert_parses <<SCSS
303
- foo {
304
- a: foo-bar(12);
305
- b: -foo-bar-baz(13, 14 15); }
306
- SCSS
307
- end
308
-
309
- def test_unary_minus
310
- assert_parses <<SCSS
311
- foo {
312
- a: -2;
313
- b: -2.3em;
314
- c: -50%;
315
- d: -foo(bar baz); }
316
- SCSS
317
- end
318
-
319
- def test_operators
320
- assert_parses <<SCSS
321
- foo {
322
- a: foo bar baz;
323
- b: foo, #aabbcc, -12;
324
- c: 1px/2px/-3px;
325
- d: foo bar, baz/bang; }
326
- SCSS
327
- end
328
-
329
- def test_important
330
- assert_parses <<SCSS
331
- foo {
332
- a: foo !important;
333
- b: foo bar !important;
334
- b: foo, bar !important; }
335
- SCSS
336
- end
337
-
338
- def test_initial_hyphen
339
- assert_parses <<SCSS
340
- foo {
341
- a: -moz-bar-baz;
342
- b: foo -o-bar-baz; }
343
- SCSS
344
- end
345
-
346
- def test_ms_long_filter_syntax
347
- assert_equal <<CSS, render(<<SCSS)
348
- foo {
349
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#c0ff3300, endColorstr=#ff000000);
350
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#c0ff3300, endColorstr=#ff000000); }
351
- CSS
352
- foo {
353
- filter: progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#c0ff3300, endColorstr=#ff000000);
354
- filter:progid:DXImageTransform.Microsoft.gradient(GradientType=1, startColorstr=#c0ff3300, endColorstr=#ff000000); }
355
- SCSS
356
- end
357
-
358
- def test_ms_short_filter_syntax
359
- assert_parses <<SCSS
360
- foo {
361
- filter: alpha(opacity=20);
362
- filter: alpha(opacity=20, enabled=true);
363
- filter: blaznicate(foo=bar, baz=bang bip, bart=#fa4600); }
364
- SCSS
365
- end
366
-
367
- def test_declaration_hacks
368
- assert_parses <<SCSS
369
- foo {
370
- _name: val;
371
- *name: val;
372
- :name: val;
373
- .name: val;
374
- #name: val;
375
- name/**/: val;
376
- name/*\\**/: val;
377
- name: val; }
378
- SCSS
379
- end
380
-
381
- def test_trailing_hash_hack
382
- assert_parses <<SCSS
383
- foo {
384
- foo: bar;
385
- #baz: bang;
386
- #bip: bop; }
387
- SCSS
388
- end
389
-
390
- def test_zero_arg_functions
391
- assert_parses <<SCSS
392
- foo {
393
- a: foo();
394
- b: bar baz-bang() bip; }
395
- SCSS
396
- end
397
-
398
- def test_expression_function
399
- assert_parses <<SCSS
400
- foo {
401
- a: 12px expression(1 + (3 / Foo.bar("baz" + "bang") + function() {return 12;}) % 12); }
402
- SCSS
403
- end
404
-
405
- def test_calc_function
406
- assert_parses <<SCSS
407
- foo {
408
- a: 12px calc(100%/3 - 2*1em - 2*1px);
409
- b: 12px -moz-calc(100%/3 - 2*1em - 2*1px);
410
- b: 12px -webkit-calc(100%/3 - 2*1em - 2*1px);
411
- b: 12px -foobar-calc(100%/3 - 2*1em - 2*1px); }
412
- SCSS
413
- end
414
-
415
- def test_unary_ops
416
- assert_equal <<CSS, render(<<SCSS)
417
- foo {
418
- a: -0.5em;
419
- b: 0.5em;
420
- c: -foo(12px);
421
- d: +foo(12px); }
422
- CSS
423
- foo {
424
- a: -0.5em;
425
- b: +0.5em;
426
- c: -foo(12px);
427
- d: +foo(12px); }
428
- SCSS
429
- end
430
-
431
- def test_css_string_escapes
432
- assert_parses <<SCSS
433
- foo {
434
- a: "\\foo bar";
435
- b: "foo\\ bar";
436
- c: "\\2022 \\0020";
437
- d: "foo\\\\bar";
438
- e: "foo\\"'bar"; }
439
- SCSS
440
- end
441
-
442
- def test_css_ident_escapes
443
- assert_parses <<SCSS
444
- foo {
445
- a: \\foo bar;
446
- b: foo\\ bar;
447
- c: \\2022 \\0020;
448
- d: foo\\\\bar;
449
- e: foo\\"\\'bar; }
450
- SCSS
451
- end
452
-
453
- ## Directives
454
-
455
- def test_namespace_directive
456
- assert_parses '@namespace "http://www.w3.org/Profiles/xhtml1-strict";'
457
- assert_parses '@namespace url(http://www.w3.org/Profiles/xhtml1-strict);'
458
- assert_parses '@namespace html url("http://www.w3.org/Profiles/xhtml1-strict");'
459
- end
460
-
461
- def test_media_directive
462
- assert_parses <<SCSS
463
- @media all {
464
- rule1 {
465
- prop: val; }
466
-
467
- rule2 {
468
- prop: val; } }
469
- SCSS
470
- assert_parses <<SCSS
471
- @media screen, print {
472
- rule1 {
473
- prop: val; }
474
-
475
- rule2 {
476
- prop: val; } }
477
- SCSS
478
- end
479
-
480
- def test_media_directive_with_keywords
481
- assert_parses <<SCSS
482
- @media screen and (-webkit-min-device-pixel-ratio:0) {
483
- a: b; }
484
- SCSS
485
- assert_parses <<SCSS
486
- @media only screen, print and (foo: 0px) and (bar: flam(12px solid)) {
487
- a: b; }
488
- SCSS
489
- end
490
-
491
- def test_import_directive
492
- assert_parses '@import "foo.css";'
493
- assert_parses "@import 'foo.css';"
494
- assert_parses '@import url("foo.css");'
495
- assert_parses "@import url('foo.css');"
496
- assert_parses '@import url(foo.css);'
497
- end
498
-
499
- def test_import_directive_with_media
500
- assert_parses '@import "foo.css" screen;'
501
- assert_parses '@import "foo.css" screen, print;'
502
- assert_parses '@import "foo.css" screen, print and (foo: 0);'
503
- assert_parses '@import "foo.css" screen, only print, screen and (foo: 0);'
504
- end
505
-
506
- def test_page_directive
507
- assert_parses <<SCSS
508
- @page {
509
- prop1: val;
510
- prop2: val; }
511
- SCSS
512
- assert_parses <<SCSS
513
- @page flap {
514
- prop1: val;
515
- prop2: val; }
516
- SCSS
517
- assert_parses <<SCSS
518
- @page :first {
519
- prop1: val;
520
- prop2: val; }
521
- SCSS
522
- assert_parses <<SCSS
523
- @page flap:first {
524
- prop1: val;
525
- prop2: val; }
526
- SCSS
527
- end
528
-
529
- def test_blockless_directive_without_semicolon
530
- assert_equal "@foo \"bar\";\n", render('@foo "bar"')
531
- end
532
-
533
- def test_directive_with_lots_of_whitespace
534
- assert_equal "@foo \"bar\";\n", render('@foo "bar" ;')
535
- end
536
-
537
- def test_empty_blockless_directive
538
- assert_parses "@foo;"
539
- end
540
-
541
- def test_multiple_blockless_directives
542
- assert_parses <<SCSS
543
- @foo bar;
544
- @bar baz;
545
- SCSS
546
- end
547
-
548
- def test_empty_block_directive
549
- assert_parses "@foo {}"
550
- assert_equal "@foo {}\n", render(<<SCSS)
551
- @foo {
552
- }
553
- SCSS
554
- end
555
-
556
- def test_multiple_block_directives
557
- assert_parses <<SCSS
558
- @foo bar {
559
- a: b; }
560
-
561
- @bar baz {
562
- c: d; }
563
- SCSS
564
- end
565
-
566
- def test_block_directive_with_rule_and_property
567
- assert_parses <<SCSS
568
- @foo {
569
- rule {
570
- a: b; }
571
-
572
- a: b; }
573
- SCSS
574
- end
575
-
576
- def test_block_directive_with_semicolon
577
- assert_equal <<CSS, render(<<SCSS)
578
- @foo {
579
- a: b; }
580
-
581
- @bar {
582
- a: b; }
583
- CSS
584
- @foo {a:b};
585
- @bar {a:b};
586
- SCSS
587
- end
588
-
589
- ## Selectors
590
-
591
- # Taken from http://www.w3.org/TR/css3-selectors/#selectors
592
- def test_summarized_selectors
593
- assert_selector_parses('*')
594
- assert_selector_parses('E')
595
- assert_selector_parses('E[foo]')
596
- assert_selector_parses('E[foo="bar"]')
597
- assert_selector_parses('E[foo~="bar"]')
598
- assert_selector_parses('E[foo^="bar"]')
599
- assert_selector_parses('E[foo$="bar"]')
600
- assert_selector_parses('E[foo*="bar"]')
601
- assert_selector_parses('E[foo|="en"]')
602
- assert_selector_parses('E:root')
603
- assert_selector_parses('E:nth-child(n)')
604
- assert_selector_parses('E:nth-last-child(n)')
605
- assert_selector_parses('E:nth-of-type(n)')
606
- assert_selector_parses('E:nth-last-of-type(n)')
607
- assert_selector_parses('E:first-child')
608
- assert_selector_parses('E:last-child')
609
- assert_selector_parses('E:first-of-type')
610
- assert_selector_parses('E:last-of-type')
611
- assert_selector_parses('E:only-child')
612
- assert_selector_parses('E:only-of-type')
613
- assert_selector_parses('E:empty')
614
- assert_selector_parses('E:link')
615
- assert_selector_parses('E:visited')
616
- assert_selector_parses('E:active')
617
- assert_selector_parses('E:hover')
618
- assert_selector_parses('E:focus')
619
- assert_selector_parses('E:target')
620
- assert_selector_parses('E:lang(fr)')
621
- assert_selector_parses('E:enabled')
622
- assert_selector_parses('E:disabled')
623
- assert_selector_parses('E:checked')
624
- assert_selector_parses('E::first-line')
625
- assert_selector_parses('E::first-letter')
626
- assert_selector_parses('E::before')
627
- assert_selector_parses('E::after')
628
- assert_selector_parses('E.warning')
629
- assert_selector_parses('E#myid')
630
- assert_selector_parses('E:not(s)')
631
- assert_selector_parses('E F')
632
- assert_selector_parses('E > F')
633
- assert_selector_parses('E + F')
634
- assert_selector_parses('E ~ F')
635
- end
636
-
637
- # Taken from http://www.w3.org/TR/css3-selectors/#selectors,
638
- # but without the element names
639
- def test_lonely_selectors
640
- assert_selector_parses('[foo]')
641
- assert_selector_parses('[foo="bar"]')
642
- assert_selector_parses('[foo~="bar"]')
643
- assert_selector_parses('[foo^="bar"]')
644
- assert_selector_parses('[foo$="bar"]')
645
- assert_selector_parses('[foo*="bar"]')
646
- assert_selector_parses('[foo|="en"]')
647
- assert_selector_parses(':root')
648
- assert_selector_parses(':nth-child(n)')
649
- assert_selector_parses(':nth-last-child(n)')
650
- assert_selector_parses(':nth-of-type(n)')
651
- assert_selector_parses(':nth-last-of-type(n)')
652
- assert_selector_parses(':first-child')
653
- assert_selector_parses(':last-child')
654
- assert_selector_parses(':first-of-type')
655
- assert_selector_parses(':last-of-type')
656
- assert_selector_parses(':only-child')
657
- assert_selector_parses(':only-of-type')
658
- assert_selector_parses(':empty')
659
- assert_selector_parses(':link')
660
- assert_selector_parses(':visited')
661
- assert_selector_parses(':active')
662
- assert_selector_parses(':hover')
663
- assert_selector_parses(':focus')
664
- assert_selector_parses(':target')
665
- assert_selector_parses(':lang(fr)')
666
- assert_selector_parses(':enabled')
667
- assert_selector_parses(':disabled')
668
- assert_selector_parses(':checked')
669
- assert_selector_parses('::first-line')
670
- assert_selector_parses('::first-letter')
671
- assert_selector_parses('::before')
672
- assert_selector_parses('::after')
673
- assert_selector_parses('.warning')
674
- assert_selector_parses('#myid')
675
- assert_selector_parses(':not(s)')
676
- end
677
-
678
- def test_attribute_selectors_with_identifiers
679
- assert_selector_parses('[foo~=bar]')
680
- assert_selector_parses('[foo^=bar]')
681
- assert_selector_parses('[foo$=bar]')
682
- assert_selector_parses('[foo*=bar]')
683
- assert_selector_parses('[foo|=en]')
684
- end
685
-
686
- def test_nth_selectors
687
- assert_selector_parses(':nth-child(-n)')
688
- assert_selector_parses(':nth-child(+n)')
689
-
690
- assert_selector_parses(':nth-child(even)')
691
- assert_selector_parses(':nth-child(odd)')
692
-
693
- assert_selector_parses(':nth-child(50)')
694
- assert_selector_parses(':nth-child(-50)')
695
- assert_selector_parses(':nth-child(+50)')
696
-
697
- assert_selector_parses(':nth-child(2n+3)')
698
- assert_selector_parses(':nth-child(2n-3)')
699
- assert_selector_parses(':nth-child(+2n-3)')
700
- assert_selector_parses(':nth-child(-2n+3)')
701
- assert_selector_parses(':nth-child(-2n+ 3)')
702
-
703
- assert_equal(<<CSS, render(<<SCSS))
704
- :nth-child(2n + 3) {
705
- a: b; }
706
- CSS
707
- :nth-child( 2n + 3 ) {
708
- a: b; }
709
- SCSS
710
- end
711
-
712
- def test_negation_selectors
713
- assert_selector_parses(':not(foo|bar)')
714
- assert_selector_parses(':not(*|bar)')
715
-
716
- assert_selector_parses(':not(foo|*)')
717
- assert_selector_parses(':not(*|*)')
718
-
719
- assert_selector_parses(':not(#blah)')
720
- assert_selector_parses(':not(.blah)')
721
-
722
- assert_selector_parses(':not([foo])')
723
- assert_selector_parses(':not([foo^="bar"])')
724
- assert_selector_parses(':not([baz|foo~="bar"])')
725
-
726
- assert_selector_parses(':not(:hover)')
727
- assert_selector_parses(':not(:nth-child(2n + 3))')
728
-
729
- # Not technically allowed, but what the heck
730
- assert_selector_parses(':not(:not(#foo))')
731
- assert_selector_parses(':not(a#foo.bar)')
732
- assert_selector_parses(':not(#foo .bar > baz)')
733
- assert_selector_parses(':not(h1, h2, h3)')
734
- end
735
-
736
- def test_moz_any_selector
737
- assert_selector_parses(':-moz-any(h1, h2, h3)')
738
- assert_selector_parses(':-moz-any(.foo)')
739
- assert_selector_parses(':-moz-any(foo bar, .baz > .bang)')
740
- end
741
-
742
- def test_namespaced_selectors
743
- assert_selector_parses('foo|E')
744
- assert_selector_parses('*|E')
745
- assert_selector_parses('foo|*')
746
- assert_selector_parses('*|*')
747
- end
748
-
749
- def test_namespaced_attribute_selectors
750
- assert_selector_parses('[foo|bar=baz]')
751
- assert_selector_parses('[*|bar=baz]')
752
- assert_selector_parses('[foo|bar|=baz]')
753
- end
754
-
755
- def test_comma_selectors
756
- assert_selector_parses('E, F')
757
- assert_selector_parses('E F, G H')
758
- assert_selector_parses('E > F, G > H')
759
- end
760
-
761
- def test_selectors_with_newlines
762
- assert_selector_parses("E,\nF")
763
- assert_selector_parses("E\nF")
764
- assert_selector_parses("E, F\nG, H")
765
- end
766
-
767
- def test_expression_fallback_selectors
768
- assert_selector_parses('0%')
769
- assert_selector_parses('60%')
770
- assert_selector_parses('100%')
771
- assert_selector_parses('12px')
772
- assert_selector_parses('"foo"')
773
- end
774
-
775
- def test_functional_pseudo_selectors
776
- assert_selector_parses(':foo("bar")')
777
- assert_selector_parses(':foo(bar)')
778
- assert_selector_parses(':foo(12px)')
779
- assert_selector_parses(':foo(+)')
780
- assert_selector_parses(':foo(-)')
781
- assert_selector_parses(':foo(+"bar")')
782
- assert_selector_parses(':foo(-++--baz-"bar"12px)')
783
- end
784
-
785
- def test_selector_hacks
786
- assert_selector_parses('> E')
787
- assert_selector_parses('+ E')
788
- assert_selector_parses('~ E')
789
- assert_selector_parses('> > E')
790
- assert_equal <<CSS, render(<<SCSS)
791
- > > E {
792
- a: b; }
793
- CSS
794
- >> E {
795
- a: b; }
796
- SCSS
797
-
798
- assert_selector_parses('E*')
799
- assert_selector_parses('E*.foo')
800
- assert_selector_parses('E*:hover')
801
- end
802
-
803
- def test_spaceless_combo_selectors
804
- assert_equal "E > F {\n a: b; }\n", render("E>F { a: b;} ")
805
- assert_equal "E ~ F {\n a: b; }\n", render("E~F { a: b;} ")
806
- assert_equal "E + F {\n a: b; }\n", render("E+F { a: b;} ")
807
- end
808
-
809
- ## Errors
810
-
811
- def test_invalid_directives
812
- assert_not_parses("identifier", '@<err> import "foo";')
813
- assert_not_parses("identifier", '@<err>12 "foo";')
814
- end
815
-
816
- def test_invalid_classes
817
- assert_not_parses("class name", 'p.<err> foo {a: b}')
818
- assert_not_parses("class name", 'p.<err>1foo {a: b}')
819
- end
820
-
821
- def test_invalid_ids
822
- assert_not_parses("id name", 'p#<err> foo {a: b}')
823
- end
824
-
825
- def test_no_properties_at_toplevel
826
- assert_not_parses('pseudoclass or pseudoelement', 'a:<err> b;')
827
- end
828
-
829
- def test_no_scss_directives
830
- assert_parses('@import "foo.sass";')
831
- assert_parses <<SCSS
832
- @mixin foo {
833
- a: b; }
834
- SCSS
835
- end
836
-
837
- def test_no_variables
838
- assert_not_parses("selector or at-rule", "<err>$var = 12;")
839
- assert_not_parses('"}"', "foo { <err>!var = 12; }")
840
- end
841
-
842
- def test_no_parent_selectors
843
- assert_not_parses('"{"', "foo <err>&.bar {a: b}")
844
- end
845
-
846
- def test_no_selector_interpolation
847
- assert_not_parses('"{"', 'foo <err>#{"bar"}.baz {a: b}')
848
- end
849
-
850
- def test_no_prop_name_interpolation
851
- assert_not_parses('":"', 'foo {a<err>#{"bar"}baz: b}')
852
- end
853
-
854
- def test_no_prop_val_interpolation
855
- assert_not_parses('"}"', 'foo {a: b <err>#{"bar"} c}')
856
- end
857
-
858
- def test_no_string_interpolation
859
- assert_parses <<SCSS
860
- foo {
861
- a: "bang \#{1 + " bar "} bip"; }
862
- SCSS
863
- end
864
-
865
- def test_no_sass_script_values
866
- assert_not_parses('"}"', 'foo {a: b <err>* c}')
867
- end
868
-
869
- def test_no_nested_rules
870
- assert_not_parses('":"', 'foo {bar <err>{a: b}}')
871
- assert_not_parses('"}"', 'foo {<err>[bar=baz] {a: b}}')
872
- end
873
-
874
- def test_no_nested_properties
875
- assert_not_parses('expression (e.g. 1px, bold)', 'foo {bar: <err>{a: b}}')
876
- assert_not_parses('expression (e.g. 1px, bold)', 'foo {bar: bang <err>{a: b}}')
877
- end
878
-
879
- def test_no_nested_directives
880
- assert_not_parses('"}"', 'foo {<err>@bar {a: b}}')
881
- end
882
-
883
- def test_error_with_windows_newlines
884
- render <<SCSS
885
- foo {bar}\r
886
- baz {a: b}
887
- SCSS
888
- assert(false, "Expected syntax error")
889
- rescue Sass::SyntaxError => e
890
- assert_equal 'Invalid CSS after "foo {bar": expected ":", was "}"', e.message
891
- assert_equal 1, e.sass_line
892
- end
893
-
894
- ## Regressions
895
-
896
- def test_closing_line_comment_end_with_compact_output
897
- assert_equal(<<CSS, render(<<SCSS, :style => :compact))
898
- /* foo */
899
- bar { baz: bang; }
900
- CSS
901
- /*
902
- * foo
903
- */
904
- bar {baz: bang}
905
- SCSS
906
- end
907
-
908
- private
909
-
910
- def assert_selector_parses(selector)
911
- assert_parses <<SCSS
912
- #{selector} {
913
- a: b; }
914
- SCSS
915
- end
916
-
917
- def render(scss, options = {})
918
- tree = Sass::SCSS::CssParser.new(scss, options[:filename]).parse
919
- tree.options = Sass::Engine::DEFAULT_OPTIONS.merge(options)
920
- tree.render
921
- end
922
- end