class Sass::Selector::Universal
A universal selector (‘*` in CSS
).
Attributes
The selector namespace. ‘nil` means the default namespace, `“”` means no namespace, `“*”` means any namespace.
@return [String, nil]
Public Class Methods
@param namespace [String, nil] See {#namespace}
# File lib/sass/selector.rb, line 149 def initialize(namespace) @namespace = namespace end
Public Instance Methods
@see AbstractSequence#specificity
# File lib/sass/selector.rb, line 200 def specificity 0 end
@see Selector#to_s
# File lib/sass/selector.rb, line 154 def to_s(opts = {}) @namespace ? "#{@namespace}|*" : "*" end
Unification of a universal selector is somewhat complicated, especially when a namespace is specified. If there is no namespace specified or any namespace is specified (namespace ‘“*”`), then `sel` is returned without change (unless it’s empty, in which case ‘“*”` is required).
If a namespace is specified but ‘sel` does not specify a namespace, then the given namespace is applied to `sel`, either by adding this {Universal} selector or applying this namespace to an existing {Element} selector.
If both this selector and ‘sel` specify namespaces, those namespaces are unified via {Simple#unify_namespaces} and the unified namespace is used, if possible.
@todo There are lots of cases that this documentation specifies;
make sure we thoroughly test **all of them**.
@todo Keep track of whether a default namespace has been declared
and handle namespace-unspecified selectors accordingly.
@todo If any branch of a CommaSequence
ends up being just ‘“*”`,
then all other branches should be eliminated
@see Selector#unify
# File lib/sass/selector.rb, line 183 def unify(sels) name = case sels.first when Universal; :universal when Element; sels.first.name else return [self] + sels unless namespace.nil? || namespace == '*' return sels unless sels.empty? return [self] end ns, accept = unify_namespaces(namespace, sels.first.namespace) return unless accept [name == :universal ? Universal.new(ns) : Element.new(name, ns)] + sels[1..-1] end