Parent

Class/Module Index [+]

Quicksearch

Sass::Selector::Universal

A universal selector (`*` in CSS).

Attributes

namespace[R]

The selector namespace. `nil` means the default namespace, `[""]` means no namespace, `["*"]` means any namespace.

@return [Array<String, Sass::Script::Node>, nil]

Public Class Methods

new(namespace) click to toggle source

@param namespace [Array<String, Sass::Script::Node>, nil] See {#namespace}

# File lib/sass/selector.rb, line 138
def initialize(namespace)
  @namespace = namespace
end

Public Instance Methods

specificity() click to toggle source

@see AbstractSequence#specificity

# File lib/sass/selector.rb, line 189
def specificity
  0
end
to_a() click to toggle source

@see Selector#to_a

# File lib/sass/selector.rb, line 143
def to_a
  @namespace ? @namespace + ["|*"] : ["*"]
end
unify(sels) click to toggle source

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 172
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

[Validate]

Generated with the Darkfish Rdoc Generator 2.