Module: CSS::Selectors::Serializer
Constant Summary collapse
- COMBINATOR_GLUE =
{ descendant: ' ', child: ' > ', next_sibling: ' + ', subsequent_sibling: ' ~ ' }.freeze
- LEADING_COMBINATOR_GLUE =
Leading combinator of a ‘:has()` relative selector (descendant is implicit, so it has no prefix).
{ descendant: '', child: '> ', next_sibling: '+ ', subsequent_sibling: '~ ' }.freeze
- ATTR_OPS =
{ exact: '=', includes: '~=', dash: '|=', prefix: '^=', suffix: '$=', substring: '*=' }.freeze
Instance Method Summary collapse
Instance Method Details
#serialize(node) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/css/selectors/serializer.rb', line 31 def serialize(node) case node when SelectorList then node.selectors.map { serialize(_1) }.join(', ') when ComplexSelector then serialize_complex(node) when CompoundSelector then node.components.map { serialize(_1) }.join when TypeSelector then ns_prefix(node.namespace) + Escape.ident(node.name) when UniversalSelector then "#{ns_prefix(node.namespace)}*" when NestingSelector then '&' when IdSelector then "##{Escape.ident(node.name)}" when ClassSelector then ".#{Escape.ident(node.name)}" when AttributeSelector then serialize_attribute(node) when PseudoClass then serialize_pseudo(node, '') when PseudoElement then serialize_pseudo(node, ':') when AnB then serialize_anb(node) when RelativeSelectorList then node.selectors.map { serialize_relative(_1) }.join(', ') when RelativeSelector then serialize_relative(node) else raise ArgumentError, "cannot serialize selector node #{node.class}" end end |