Parent

Class/Module Index [+]

Quicksearch

Sass::Selector::Sequence

An operator-separated sequence of {SimpleSequence simple selector sequences}.

Attributes

members[R]

The array of {SimpleSequence simple selector sequences}, operators, and newlines. The operators are strings such as `"+"` and `">"` representing the corresponding CSS operators. Newlines are also newline strings; these aren't semantically relevant, but they do affect formatting.

@return [Array<SimpleSequence, String>]

Public Class Methods

new(seqs_and_ops) click to toggle source

@param seqs_and_ops [Array<SimpleSequence, String>] See {#members}

# File lib/sass/selector/sequence.rb, line 38
def initialize(seqs_and_ops)
  @members = seqs_and_ops
end

Public Instance Methods

do_extend(extends, parent_directives, seen = Set.new) click to toggle source

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

@overload def do_extend(extends) @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 [Array<Sequence>] A list of selectors generated

by extending this selector with `extends`.
These correspond to a {CommaSequence}'s {CommaSequence#members members array}.

@see CommaSequence#do_extend

# File lib/sass/selector/sequence.rb, line 81
def do_extend(extends, parent_directives, seen = Set.new)
  paths = Sass::Util.paths(members.map do |sseq_or_op|
      next [[sseq_or_op]] unless sseq_or_op.is_a?(SimpleSequence)
      extended = sseq_or_op.do_extend(extends, parent_directives, seen)
      choices = extended.map {|seq| seq.members}
      choices.unshift([sseq_or_op]) unless extended.any? {|seq| seq.superselector?(sseq_or_op)}
      choices
    end)
  Sass::Util.flatten(paths.map {|path| weave(path)}, 1).map {|p| Sequence.new(p)}
end
filename=(filename) click to toggle source

Sets the name of the file in which this selector was declared, or `nil` if it was not declared in a file (e.g. on stdin). This also sets the filename for all child selectors.

@param filename [String, nil] @return [String, nil]

# File lib/sass/selector/sequence.rb, line 22
def filename=(filename)
  members.each {|m| m.filename = filename if m.is_a?(SimpleSequence)}
  filename
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/sequence.rb, line 116
def inspect
  members.map {|m| m.inspect}.join(" ")
end
line=(line) click to toggle source

Sets the line of the Sass template on which this selector was declared. This also sets the line for all child selectors.

@param line [Fixnum] @return [Fixnum]

# File lib/sass/selector/sequence.rb, line 11
def line=(line)
  members.each {|m| m.line = line if m.is_a?(SimpleSequence)}
  line
end
resolve_parent_refs(super_seq) click to toggle source

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

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

# File lib/sass/selector/sequence.rb, line 49
def resolve_parent_refs(super_seq)
  members = @members
  nl = (members.first == "\n" && members.shift)
  unless members.any? do |seq_or_op|
      seq_or_op.is_a?(SimpleSequence) && seq_or_op.members.first.is_a?(Parent)
    end
    members = []
    members << nl if nl
    members << SimpleSequence.new([Parent.new])
    members += @members
  end

  Sequence.new(
    members.map do |seq_or_op|
      next seq_or_op unless seq_or_op.is_a?(SimpleSequence)
      seq_or_op.resolve_parent_refs(super_seq)
    end.flatten)
end
superselector?(sseq) click to toggle source

Returns whether or not this selector matches all elements that the given selector matches (as well as possibly more).

@example

(.foo).superselector?(.foo.bar) #=> true
(.foo).superselector?(.bar) #=> false
(.bar .foo).superselector?(.foo) #=> false

@param sseq [SimpleSequence] @return [Boolean]

# File lib/sass/selector/sequence.rb, line 101
def superselector?(sseq)
  return false unless members.size == 1
  members.last.superselector?(sseq)
end
to_a() click to toggle source

@see Simple#to_a

# File lib/sass/selector/sequence.rb, line 107
def to_a
  ary = @members.map {|seq_or_op| seq_or_op.is_a?(SimpleSequence) ? seq_or_op.to_a : seq_or_op}
  Sass::Util.intersperse(ary, " ").flatten.compact
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.