La classe CommonMark\CQL

(cmark >= 1.1.0)

Introduction

Le CommonMark Query Language est un DSL pour dĂ©crire comment voyager Ă  travers un arbre de nƓuds CommonMark implĂ©mentĂ© comme un analyseur et un compilateur pour un petit ensemble d'instructions, et une machine virtuelle pour exĂ©cuter ces instructions.

Chemins :

Dans sa forme la plus simpliste, une requĂȘte CQL combine les chemins suivants et / pour dĂ©crire comment voyager Ă  travers un arbre :

  • firstChild
  • lastChild
  • previous
  • next
  • parent
Par exemple, /firstChild/lastChild voyage au dernier nƓud enfant du premier nƓud enfant.

Boucles

CQL peut effectuer des boucles, par exemple à travers les enfants ou les frùres et sƓurs d'un nƓud particulier, en utilisant le chemin children, ou siblings. Par exemple, /firstChild/children parcourra tous les enfants du premier nƓud enfant.

Sous-requĂȘtes

CQL peut ĂȘtre instruit de voyager en utilisant une sous-requĂȘte comme [/firstChild]. Par exemple, /firstChild/children[/firstChild] voyagera au premier nƓud enfant de tous les enfants du premier nƓud enfant.

Contraintes de boucle

En bouclant, CQL peut ĂȘtre instruit de restreindre le chemin parcouru aux nƓuds d'un type particulier. Par exemple /children(BlockQuote) voyagera aux enfants d'un nƓud oĂč le type est BlockQuote. Les types suivants sont reconnus (insensibles Ă  la casse) :

  • BlockQuote
  • List
  • Item
  • CodeBlock
  • HtmlBlock
  • CustomBlock
  • Paragraph
  • Heading
  • ThematicBreak
  • Text
  • SoftBreak
  • LineBreak
  • Code
  • HtmlInline
  • CustomInline
  • Emphasis
  • Strong
  • Link
  • Image
Les types peuvent ĂȘtre utilisĂ©s comme une union, par exemple /children(BlockQuote|List) voyagera aux enfants d'un nƓud oĂč le type est BlockQuote ou List. Les types, ou unions de types, peuvent Ă©galement ĂȘtre niĂ©s. Par exemple /children(~BlockQuote) voyagera aux enfants d'un nƓud oĂč le type n'est pas BlockQuote, et /children(~BlockQuote|Paragraph) voyagera aux enfants d'un nƓud oĂč le type n'est pas BlockQuote ou Paragraph.

Contraintes de chemins

CQL peut ĂȘtre instruit de crĂ©er une boucle pour voyager Ă  un nƓud d'un type particulier, Ă  un chemin particulier. Par exemple, /firstChild(BlockQuote) voyagera au premier nƓud enfant oĂč le type est BlockQuote. Il est Ă  noter que comme d'autres boucles pour children et siblings, ce type de chemin ne peut ĂȘtre suivi que par une sous-requĂȘte.

Notes d'implémentation

Bien que CQL ait été implémenté en tant que partie de l'extension PHP CommonMark, il est séparé de PHP et n'utilise pas la machine virtuelle de PHP ou la représentation interne des valeurs.

Synopsis de la classe

class CommonMark\CQL {
/* Constructeur */
public function __construct(string $query)
/* Méthodes */
public function __invoke(CommonMark\Node $root, callable $handler)
}

Sommaire

add a note

User Contributed Notes

There are no user contributed notes for this page.