Class: Sass::Selector::Universal
- Inherits:
-
Simple
- Object
- Simple
- Sass::Selector::Universal
- Defined in:
- .ruby-sass/lib/sass/selector.rb
Overview
A universal selector (`*` in CSS).
Instance Attribute Summary (collapse)
-
#namespace ⇒ String?
readonly
The selector namespace.
Attributes inherited from Simple
Instance Method Summary (collapse)
-
#initialize(namespace) ⇒ Universal
constructor
A new instance of Universal.
- #specificity ⇒ Object
- #to_s(opts = {}) ⇒ Object
-
#unify(sels) ⇒ Object
Unification of a universal selector is somewhat complicated, especially when a namespace is specified.
Methods inherited from Simple
#eql?, #hash, #inspect, #unique?
Constructor Details
#initialize(namespace) ⇒ Universal
Returns a new instance of Universal
149 150 151 |
# File '.ruby-sass/lib/sass/selector.rb', line 149 def initialize(namespace) @namespace = namespace end |
Constructor Details
#initialize(namespace) ⇒ Universal
Returns a new instance of Universal
149 150 151 |
# File '.ruby-sass/lib/sass/selector.rb', line 149 def initialize(namespace) @namespace = namespace end |
Instance Attribute Details
#namespace ⇒ String? (readonly)
The selector namespace. `nil` means the default namespace, `“”` means no namespace, `“*”` means any namespace.
146 147 148 |
# File '.ruby-sass/lib/sass/selector.rb', line 146 def namespace @namespace end |
Instance Method Details
#specificity ⇒ Object
200 201 202 |
# File '.ruby-sass/lib/sass/selector.rb', line 200 def specificity 0 end |
#to_s(opts = {}) ⇒ Object
154 155 156 |
# File '.ruby-sass/lib/sass/selector.rb', line 154 def to_s(opts = {}) @namespace ? "#{@namespace}|*" : "*" end |
#unify(sels) ⇒ Object
There are lots of cases that this documentation specifies; make sure we thoroughly test **all of them**.
Keep track of whether a default namespace has been declared and handle namespace-unspecified selectors accordingly.
If any branch of a CommaSequence ends up being just `“*”`, then all other branches should be eliminated
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 Sass::Selector::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.
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 |
# File '.ruby-sass/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 |