NAME

Pandoc::Selector - Pandoc document selector language

SYNOPSIS

  my $selector = Pandoc::Selector->new('Code.perl|CodeBlock.perl');

  # check whether an element matches
  $selector->match($element);

  # use as element method
  $element->match('Code.perl|CodeBlock.perl')

DESCRIPTION

Pandoc::Selector provides a language to select elements of a Pandoc document. It borrows ideas from CSS Selectors, XPath and similar languages.

The language is being developed together with this implementation.

EXAMPLES

  Header#main
  Code.perl
  Code.perl.raw
  :inline

SELECTOR GRAMMAR

Whitespace between parts of the syntax is optional and not included in the following grammar. A Selector is a list of one or more expression lists separated by pipes (|). For instance the selector Subscript|Superscript selects both Subscript elements and Superscript elements.

  Selector        ::= ExpressionList ( '|' ExpressionList )*

An expression list is a list of one or more expressions:

  ExpressionList  ::= Expression ( Expression )*

An expression is any of name expression, id expression, class expression, and type expression.

  Expression      ::= NameExpression
                      | IdExpression
                      | ClassExpression
                      | TypeExpression

  NameExpression  ::= Name

  Name            ::= [A-Za-z]+

  IdExpression    ::= '#' [\p{L}\p{N}_-]+

  ClassExpression ::= '.' [\p{L}\p{N}_-]+

  TypeExpression  ::= ':' Name

SEE ALSO

See example filter select to select parts of a document.