Class: Sass::Selector::Element
- Inherits:
-
Simple
- Object
- Simple
- Sass::Selector::Element
- Defined in:
- .ruby-sass/lib/sass/selector.rb
Overview
An element selector (e.g. `h1`).
Instance Attribute Summary (collapse)
-
#name ⇒ String
readonly
The element name.
-
#namespace ⇒ String?
readonly
The selector namespace.
Attributes inherited from Simple
Instance Method Summary (collapse)
-
#initialize(name, namespace) ⇒ Element
constructor
A new instance of Element.
- #specificity ⇒ Object
- #to_s(opts = {}) ⇒ Object
-
#unify(sels) ⇒ Object
Unification of an element selector is somewhat complicated, especially when a namespace is specified.
Methods inherited from Simple
#eql?, #hash, #inspect, #unique?
Constructor Details
#initialize(name, namespace) ⇒ Element
Returns a new instance of Element
220 221 222 223 |
# File '.ruby-sass/lib/sass/selector.rb', line 220 def initialize(name, namespace) @name = name @namespace = namespace end |
Constructor Details
#initialize(name, namespace) ⇒ Element
Returns a new instance of Element
220 221 222 223 |
# File '.ruby-sass/lib/sass/selector.rb', line 220 def initialize(name, namespace) @name = name @namespace = namespace end |
Instance Attribute Details
#name ⇒ String (readonly)
The element name.
210 211 212 |
# File '.ruby-sass/lib/sass/selector.rb', line 210 def name @name end |
#namespace ⇒ String? (readonly)
The selector namespace. `nil` means the default namespace, `“”` means no namespace, `“*”` means any namespace.
216 217 218 |
# File '.ruby-sass/lib/sass/selector.rb', line 216 def namespace @namespace end |
Instance Method Details
#specificity ⇒ Object
265 266 267 |
# File '.ruby-sass/lib/sass/selector.rb', line 265 def specificity 1 end |
#to_s(opts = {}) ⇒ Object
226 227 228 |
# File '.ruby-sass/lib/sass/selector.rb', line 226 def to_s(opts = {}) @namespace ? "#{@namespace}|#{@name}" : @name 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.
Unification of an element selector is somewhat complicated, especially when a namespace is specified. First, if `sel` contains another Sass::Selector::Element with a different #name, then the selectors can't be unified and `nil` is returned.
Otherwise, if `sel` doesn't specify a namespace, or it specifies any namespace (via `“*”`), then it's returned with this element selector (e.g. `.foo` becomes `a.foo` or `svg|a.foo`). Similarly, if this selector doesn't specify a namespace, the namespace from `sel` is used.
If both this selector and `sel` specify namespaces, those namespaces are unified via Simple#unify_namespaces and the unified namespace is used, if possible.
252 253 254 255 256 257 258 259 260 261 262 |
# File '.ruby-sass/lib/sass/selector.rb', line 252 def unify(sels) case sels.first when Universal; when Element; return unless name == sels.first.name else return [self] + sels end ns, accept = unify_namespaces(namespace, sels.first.namespace) return unless accept [Element.new(name, ns)] + sels[1..-1] end |