The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

CSS::SAC::Selector - base class for SAC selectors

SYNOPSIS

  use CSS::SAC::Selector qw(:constants);
  foo if $sel->is_type(SELECTOR_TYPE_CONSTANT);

DESCRIPTION

SAC Selectors describe selectors that can be expressed in CSS such as ElementSelector or SiblingSelector. This class provides everything that is needed to implement simple selectors (methods, constants) as well as what is needed by subclasses defining more complex selectors.

The constants are those defined in the SAC spec, with the leading SAC_ removed. What the constants map to is to be considered an opaque token that can be tested for equality. If there is demand for it, I will add a way to add new constants (for people wishing to define new condition types).

I have also added the UNKNOWN_SELECTOR constant. It shouldn't occur in normal processing but it's always useful to have such fallback values.

The Selector interface adds $sel->is_type($selector_type) to the interface defined in the SAC spec. This allows for more flexible type checking. The advantages are the same as those described for the same extension in the CSS::SAC::Condition class.

CONSTANTS

  • UNKNOWN_SELECTOR

  • ANY_NODE_SELECTOR

  • CDATA_SECTION_NODE_SELECTOR

  • CHILD_SELECTOR

  • COMMENT_NODE_SELECTOR

  • CONDITIONAL_SELECTOR

  • DESCENDANT_SELECTOR

  • DIRECT_ADJACENT_SELECTOR

  • ELEMENT_NODE_SELECTOR

  • NEGATIVE_SELECTOR

  • PROCESSING_INSTRUCTION_NODE_SELECTOR

  • PSEUDO_ELEMENT_SELECTOR

  • ROOT_NODE_SELECTOR

  • TEXT_NODE_SELECTOR

METHODS

  • CSS::SAC::Selector->new($type) or $sel->new($type)

    Creates a new selector. The $type must be one of the type constants.

  • $sel->SelectorType() or $sel->getSelectorType

    Returns the constant corresponding to the type of this selector.

  • $sel->is_type($selector_type)

    Returns a boolean indicating whether this selector is of type $selector_type (a selector constant).

AUTHOR

Robin Berjon <robin@knowscape.com>

This module is licensed under the same terms as Perl itself.