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?
-
(Boolean)
-
def contains_parent_ref? @members.any? {|sel| sel.contains_parent_ref?} end
def do_extend(extends, parent_directives = [], replace = false, seen = Set.new,
-
(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)
-
seqs
(Array
) -- See \{#members}
def initialize(seqs) @members = seqs end
def inspect
-
(String)
-
def inspect members.map {|m| m.inspect}.join(", ") end
def populate_extends(extends, extendee, extend_node = nil, parent_directives = [],
-
(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)
-
(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)
-
(Boolean)
-
Parameters:
-
cseq
(CommaSequence
) --
def superselector?(cseq) cseq.members.all? {|seq1| members.any? {|seq2| seq2.superselector?(seq1)}} end
def to_s(opts = {})
- 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
-
(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)
-
(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