CommonMark The CommonMark\CQL class

(cmark >= 1.0.0)


소개

CommonMark Query Language는 작은 명령어 세트에 대한 파서 및 컴파일러로 구현된 CommonMark 노드 트리와 이러한 명령어를 실행하기 위한 가상 머신을 통해 이동하는 방법을 설명하기 위한 DSL입니다.

Paths:

가장 단순한 형태의 CQL 쿼리는 다음 경로를 결합하고/트리를 통해 이동하는 방법을 설명합니다.

  • firstChild
  • lastChild
  • previous
  • next
  • parent

예를 들어 /firstChild/lastChild는 첫 번째 자식 노드의 마지막 자식 노드로 이동합니다.

Loops

CQL은 경로 children 또는 siblings를 사용하여 특정 노드의 하위 또는 형제를 통해 루프하도록 지시할 수 있습니다. 예를 들어 /firstChild/children은 첫 번째 자식 노드의 모든 자식으로 이동합니다.

Subqueries

CQL은 [/firstChild]와 같은 하위 쿼리를 사용하여 이동하는 방법을 지시할 수 있습니다. 예를 들어 /firstChild/children[/firstChild]는 첫 번째 자식 노드의 모든 자식 중 첫 번째 자식 노드로 이동합니다.

Loop Constraints

루핑하는 동안 CQL은 이동 경로를 특정 유형의 노드로 제한하도록 지시할 수 있습니다. 예를 들어 /children(BlockQuote)은 유형이 BlockQuote인 노드의 자식으로 이동합니다. 다음 유형이 인식됩니다(대소문자 구분 안 함).

  • BlockQuote
  • List
  • Item
  • CodeBlock
  • HtmlBlock
  • CustomBlock
  • Paragraph
  • Heading
  • ThematicBreak
  • Text
  • SoftBreak
  • LineBreak
  • Code
  • HtmlInline
  • CustomInline
  • Emphasis
  • Strong
  • Link
  • Image

유형은 공용체로 사용될 수 있습니다. 예를 들어 /children(BlockQuote|List)은 유형이 BlockQuote 또는 List인 노드의 자식으로 이동합니다. 유형 또는 유형의 합집합도 부정될 수 있습니다.

예를 들어 /children(~BlockQuote)은 유형이 BlockQuote가 아닌 노드의 자식으로 이동하고 /children(~BlockQuote|Paragraph)은 유형이 BlockQuote 또는 Paragraph가 아닌 노드의 자식으로 이동합니다.

Path Constraints

CQL은 특정 경로에서 특정 유형의 노드로 이동하는 루프를 생성하도록 지시할 수 있습니다. 예를 들어 /firstChild(BlockQuote)는 유형이 BlockQuote인 첫 번째 자식 노드로 이동합니다. childrensiblings에 대한 다른 루프와 마찬가지로 이러한 종류의 경로 뒤에는 하위 쿼리만 올 수 있습니다.

Implementation Notes

CQL은 PHP CommonMark 확장의 일부로 구현되었지만 PHP와 별도로 존재하며 PHP의 가상 머신이나 값의 내부 표현을 사용하지 않습니다.


클래스 개요

                  
class CommonMark\CQL {

  /* Constructor */
  public __construct(string $query)

  /* Methods */
  public __invoke(CommonMark\Node $root, callable $handler)
}
                  
                

목차