From 3ac96798bbffd34e854ecab22d077841dc3775ee Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Mon, 26 Apr 2010 19:32:36 -0700 Subject: [PATCH] [Sass] Clean up the @extend impl a little. --- lib/sass/selector/simple_sequence.rb | 15 ++++++--------- test/sass/extend_test.rb | 4 ++-- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/lib/sass/selector/simple_sequence.rb b/lib/sass/selector/simple_sequence.rb index f8cc7802..a3302caf 100644 --- a/lib/sass/selector/simple_sequence.rb +++ b/lib/sass/selector/simple_sequence.rb @@ -62,21 +62,18 @@ module Sass # by extending this selector with `extends`. # @see CommaSequence#do_extend def do_extend(extends, supers = []) - seqs = extends.get(members.to_set).map do |seq, sels| + extends.get(members.to_set).map do |seq, sels| # If A {@extend B} and C {...}, # seq is A, sels is B, and self is C self_without_sel = self.members - sels next unless unified = seq.members.last.unify(self_without_sel) [sels, seq.members[0...-1] + [unified]] - end.compact.map {|sels, seq| [sels, Sequence.new(seq)]} - - seqs.map {|_, seq| seq}.concat( - seqs.map do |sels, seq| - new_seqs = seq.do_extend(extends, supers.unshift(sels))[1..-1] - supers.shift - new_seqs - end.flatten.uniq) + end.compact.map {|sels, seq| [sels, Sequence.new(seq)]}.map do |sels, seq| + seqs = seq.do_extend(extends, supers.unshift(sels)) + supers.shift + seqs + end.flatten.uniq rescue SystemStackError handle_extend_loop(supers) end diff --git a/test/sass/extend_test.rb b/test/sass/extend_test.rb index 1439dfd4..fe0d9ad4 100755 --- a/test/sass/extend_test.rb +++ b/test/sass/extend_test.rb @@ -102,7 +102,7 @@ CSS SCSS assert_equal <