class Sass::Selector::CommaSequence

A comma-separated sequence of selectors.

def _eql?(other)

def _eql?(other)
  other.class == self.class && other.members.eql?(members)
end

def _hash

def _hash
  members.hash
end

def contains_parent_ref?

Returns:
  • (Boolean) -
def contains_parent_ref?
  @members.any? {|sel| sel.contains_parent_ref?}
end

def do_extend(extends, parent_directives = [], replace = false, seen = Set.new,

Returns:
  • (CommaSequence) - A copy of this selector,

Parameters:
  • original (Boolean) --
  • seen (Set>) --
  • replace (Boolean) --
  • parent_directives (Array) --
  • extends (Sass::Util::SubsetMap{Selector::Simple =>) -- xtends [Sass::Util::SubsetMap{Selector::Simple =>

Other tags:
    Todo: - Link this to the reference documentation on `@extend`
def do_extend(extends, parent_directives = [], replace = false, seen = Set.new,
    original = true)
  CommaSequence.new(members.map do |seq|
    seq.do_extend(extends, parent_directives, replace, seen, original)
  end.flatten)
end

def initialize(seqs)

Parameters:
  • seqs (Array) -- See \{#members}
def initialize(seqs)
  @members = seqs
end

def inspect

Returns:
  • (String) -
def inspect
  members.map {|m| m.inspect}.join(", ")
end

def populate_extends(extends, extendee, extend_node = nil, parent_directives = [],

Raises:
  • (Sass::SyntaxError) - if this extension is invalid.

Parameters:
  • allow_compound_target (Boolean) --
  • parent_directives (Array) --
  • extend_node (Sass::Tree::ExtendNode) --
  • extendee (CommaSequence) -- The selector being extended.
  • extends (Sass::Util::SubsetMap{Selector::Simple =>) -- xtends [Sass::Util::SubsetMap{Selector::Simple =>
def populate_extends(extends, extendee, extend_node = nil, parent_directives = [],
    allow_compound_target = false)
  extendee.members.each do |seq|
    if seq.members.size > 1
      raise Sass::SyntaxError.new("Can't extend #{seq}: can't extend nested selectors")
    end
    sseq = seq.members.first
    if !sseq.is_a?(Sass::Selector::SimpleSequence)
      raise Sass::SyntaxError.new("Can't extend #{seq}: invalid selector")
    elsif sseq.members.any? {|ss| ss.is_a?(Sass::Selector::Parent)}
      raise Sass::SyntaxError.new("Can't extend #{seq}: can't extend parent selectors")
    end
    sel = sseq.members
    if !allow_compound_target && sel.length > 1
      @@compound_extend_deprecation.warn(sseq.filename, sseq.line, <<WARNING)
ing a compound selector, #{sseq}, is deprecated and will not be supported in a future release.
er "@extend #{sseq.members.join(', ')}" instead.
tp://bit.ly/ExtendCompound for details.
G
    end
    members.each do |member|
      unless member.members.last.is_a?(Sass::Selector::SimpleSequence)
        raise Sass::SyntaxError.new("#{member} can't extend: invalid selector")
      end
      extends[sel] = Sass::Tree::Visitors::Cssize::Extend.new(
        member, sel, extend_node, parent_directives, false)
    end
  end
end

def resolve_parent_refs(super_cseq, implicit_parent = true)

Raises:
  • (Sass::SyntaxError) - If a parent selector is invalid

Returns:
  • (CommaSequence) - This selector, with parent references resolved

Parameters:
  • implicit_parent (Boolean) -- Whether the the parent
  • super_cseq (CommaSequence) -- The parent selector
def resolve_parent_refs(super_cseq, implicit_parent = true)
  if super_cseq.nil?
    if contains_parent_ref?
      raise Sass::SyntaxError.new(
        "Base-level rules cannot contain the parent-selector-referencing character '&'.")
    end
    return self
  end
  CommaSequence.new(Sass::Util.flatten_vertically(@members.map do |seq|
    seq.resolve_parent_refs(super_cseq, implicit_parent).members
  end))
end

def superselector?(cseq)

Returns:
  • (Boolean) -

Parameters:
  • cseq (CommaSequence) --
def superselector?(cseq)
  cseq.members.all? {|seq1| members.any? {|seq2| seq2.superselector?(seq1)}}
end

def to_s(opts = {})

Other tags:
    See: AbstractSequence#to_s -
def to_s(opts = {})
  @members.map do |m|
    next if opts[:placeholder] == false && m.invisible?
    m.to_s(opts)
  end.compact.
    join(opts[:style] == :compressed ? "," : ", ").
    gsub(", \n", ",\n")
end

def to_sass_script

Returns:
  • (Sass::Script::Value::List) -
def to_sass_script
  Sass::Script::Value::List.new(members.map do |seq|
    Sass::Script::Value::List.new(seq.members.map do |component|
      next if component == "\n"
      Sass::Script::Value::String.new(component.to_s)
    end.compact, separator: :space)
  end, separator: :comma)
end

def unify(other)

Raises:
  • (Sass::SyntaxError) - If this selector cannot be unified.

Returns:
  • (CommaSequence, nil) - The unified selector, or nil if unification failed.

Parameters:
  • other (CommaSequence) --
def unify(other)
  results = members.map {|seq1| other.members.map {|seq2| seq1.unify(seq2)}}.flatten.compact
  results.empty? ? nil : CommaSequence.new(results.map {|cseq| cseq.members}.flatten)
end