From 34e1a4172e95b93efa26263a4f132d2a4138fcfa Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Tue, 27 Apr 2010 01:11:35 -0700 Subject: [PATCH] [Sass] [Less] Support selector sequences. --- lib/sass/less.rb | 17 +++++++++++------ test/sass/less_conversion_test.rb | 27 +++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/lib/sass/less.rb b/lib/sass/less.rb index 0bb396f6..3fb8e633 100755 --- a/lib/sass/less.rb +++ b/lib/sass/less.rb @@ -50,13 +50,18 @@ WARNING return root end - sel = - case @selector - when /[+>~]/; "#{@selector} " - else @selector + sel = [] + el = self + loop do + case el.selector + when ":", "::"; sel << "#{el.selector}#{el.name}" + else sel << el.selector << el.name end - rule = Sass::Tree::RuleNode.new([sel, @name]) - rules.each {|r| rule << r.to_sass_tree} + break unless el.rules.size == 1 && el.rules.first.is_a?(Element) + el = el.rules.first + end + rule = Sass::Tree::RuleNode.new(sel.reject {|s| s.empty?}.join(" ")) + el.rules.each {|r| rule << r.to_sass_tree} return rule end diff --git a/test/sass/less_conversion_test.rb b/test/sass/less_conversion_test.rb index c60e7653..9f8efae0 100755 --- a/test/sass/less_conversion_test.rb +++ b/test/sass/less_conversion_test.rb @@ -89,6 +89,33 @@ a.foo#bar[attr=val] {a: b} LESS end + def test_descendant_selector + assert_renders < .bar { + a: b; } +SCSS +.foo > .bar {a: b} +LESS + end + + def test_adjacent_selector + assert_renders <