class Sass::Selector::Sequence

def weave(path)

Returns:
  • (Array>) - A list of fully-expanded selectors.

Parameters:
  • path (Array>) --
def weave(path)
  # This function works by moving through the selector path left-to-right,
  # building all possible prefixes simultaneously.
  prefixes = [[]]
  path.each do |current|
    next if current.empty?
    current = current.dup
    last_current = [current.pop]
    prefixes = prefixes.map do |prefix|
      sub = subweave(prefix, current)
      next [] unless sub
      sub.map {|seqs| seqs + last_current}
    end.flatten(1)
  end
  prefixes
end