class Sass::Selector::Sequence
def subweave(seq1, seq2, cache = {})
-
(Array
->)
Parameters:
-
seq2
(Array
) -- -
seq1
(Array
) --
Overloads:
-
def subweave(seq1, seq2)
def subweave(seq1, seq2, cache = {}) return [seq2] if seq1.empty? return [seq1] if seq2.empty? seq1 = group_selectors(seq1) seq2 = group_selectors(seq2) lcs = Haml::Util.lcs(seq2, seq1) do |s1, s2| next s1 if s1 == s2 next unless s1.first.is_a?(SimpleSequence) && s2.first.is_a?(SimpleSequence) next s2 if subweave_superselector?(s1, s2) next s1 if subweave_superselector?(s2, s1) end diff = [] until lcs.empty? diff << chunks(seq1, seq2) {|s| subweave_superselector?(s.first, lcs.first)} << [lcs.shift] seq1.shift seq2.shift end diff << chunks(seq1, seq2) {|s| s.empty?} diff.reject! {|c| c.empty?} Haml::Util.paths(diff).map {|p| p.flatten} end