Module: CSS::Selectors::Serializer

Extended by:
Serializer
Included in:
Serializer
Defined in:
lib/css/selectors/serializer.rb

Constant Summary collapse

COMBINATOR_GLUE =
{
  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



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/css/selectors/serializer.rb', line 22

def serialize(node)
  case node
  when SelectorList      then node.selectors.map { serialize(it) }.join(', ')
  when ComplexSelector   then serialize_complex(node)
  when CompoundSelector  then node.components.map { serialize(it) }.join
  when TypeSelector      then Escape.ident(node.name)
  when UniversalSelector then '*'
  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)
  else
    raise ArgumentError, "cannot serialize selector node #{node.class}"
  end
end