class Sass::Selector::CommaSequence - sass-3.2.19 Documentation

# class Sass::Selector::CommaSequence

A comma-separated sequence of selectors.

### Attributes

members[R]

The comma-separated selector sequences represented by this class.

@return [Array<Sequence>]

### Public Class Methods

new(seqs) click to toggle source

@param seqs [Array<Sequence>] See {#members}

    # File lib/sass/selector/comma_sequence.rb, line 12
    def initialize(seqs)
      @members = seqs
    end

### Public Instance Methods

do_extend(extends, parent_directives) click to toggle source

Non-destrucively extends this selector with the extensions specified in a hash (which should come from {Sass::Tree::Visitors::Cssize}).

@todo Link this to the reference documentation on `@extend`

    when such a thing exists.

@param extends [Sass::Util::SubsetMap{Selector::Simple =>

                                        Sass::Tree::Visitors::Cssize::Extend}]
    The extensions to perform on this selector

@param parent_directives [Array<Sass::Tree::DirectiveNode>]

    The directives containing this selector.

@return [CommaSequence] A copy of this selector,

    with extensions made according to `extends`

    # File lib/sass/selector/comma_sequence.rb, line 54
    def do_extend(extends, parent_directives)
      CommaSequence.new(members.map do |seq|
          extended = seq.do_extend(extends, parent_directives)
          # First Law of Extend: the result of extending a selector should
          # always contain the base selector.
          #
          # See https://github.com/nex3/sass/issues/324.
          extended.unshift seq unless seq.has_placeholder? || extended.include?(seq)
          extended
        end.flatten)
    end

inspect() click to toggle source

Returns a string representation of the sequence. This is basically the selector string.

@return [String]

    # File lib/sass/selector/comma_sequence.rb, line 70
    def inspect
      members.map {|m| m.inspect}.join(", ")
    end

resolve_parent_refs(super_cseq) click to toggle source

Resolves the {Parent} selectors within this selector by replacing them with the given parent selector, handling commas appropriately.

@param super_cseq [CommaSequence] The parent selector @return [CommaSequence] This selector, with parent references resolved @raise [Sass::SyntaxError] If a parent selector is invalid

    # File lib/sass/selector/comma_sequence.rb, line 23
    def resolve_parent_refs(super_cseq)
      if super_cseq.nil?
        if @members.any? do |sel|
            sel.members.any? do |sel_or_op|
              sel_or_op.is_a?(SimpleSequence) && sel_or_op.members.any? {|ssel| ssel.is_a?(Parent)}
            end
          end
          raise Sass::SyntaxError.new("Base-level rules cannot contain the parent-selector-referencing character '&'.")
        end
        return self
      end

      CommaSequence.new(
        super_cseq.members.map do |super_seq|
          @members.map {|seq| seq.resolve_parent_refs(super_seq)}
        end.flatten)
    end

to_a() click to toggle source

@see Sass::Selector::Simple#to_a

    # File lib/sass/selector/comma_sequence.rb, line 75
    def to_a
      arr = Sass::Util.intersperse(@members.map {|m| m.to_a}, ", ").flatten
      arr.delete("\n")
      arr
    end

### Private Instance Methods

_eql?(other) click to toggle source

    # File lib/sass/selector/comma_sequence.rb, line 87
    def _eql?(other)
      other.class == self.class && other.members.eql?(self.members)
    end

_hash() click to toggle source

    # File lib/sass/selector/comma_sequence.rb, line 83
    def _hash
      members.hash
    end