The Environment

All parsers, renderers, etc. must be registered with the Environment class so that the library is aware of them.

A pre-configured Environment can be obtained like this:

<?php

use League\CommonMark;

$environment = Environment::createCommonMarkEnvironment();

All of the core renders, parsers, etc. will be pre-registered and ready to go.

You can customize this default Environment (or even a new, empty one) using any of the methods below (from the ConfigurableEnvironmentInterface interface). (These are the same methods used by Environment::createCommonMarkEnvironment() to register the standard functionality.)

addBlockParser()

<?php

public function addBlockParser(BlockParserInterface $parser, int $priority = 0);

Registers the given BlockParserInterface with the environment with the given priority (a higher number will be executed earlier).

See Block Parsing for details.

addBlockRenderer()

<?php

public function addBlockRenderer(string $blockClass, BlockRendererInterface $blockRenderer, int $priority = 0);

Registers a BlockRendererInterface to handle a specific type of block ($blockClass) with the given priority (a higher number will be executed earlier).

See Block Rendering for details.

addInlineParser()

<?php

public function addInlineParser(InlineParserInterface $parser, int $priority = 0);

Registers the given InlineParserInterface with the environment with the given priority (a higher number will be executed earlier).

See Inline Parsing for details.

addInlineProcessor()

<?php

public function addInlineProcessor(InlineProcessorInterface $processor);

Registers the given InlineProcessorInterface with the environment.

TODO: Add documentation for this.

addInlineRenderer()

<?php

public function addInlineRenderer(string $inlineClass, InlineRendererInterface $renderer, int $priority = 0);

Registers an InlineRendererInterface to handle a specific type of inline ($inlineClass) with the given priority (a higher number will be executed earlier). A single renderer can handle multiple inline classes, but you must register it separately for each type. (The same renderer instance can be re-used if desired.)

See Inline Rendering for details.

addDocumentProcessor()

<?php

public function addDocumentProcessor(DocumentProcessorInterface $processor, int $priority = 0);

Adds a new Document Processor which will manipulate the AST after parsing the document but before rendering it.

Priority

Each of these methods allows you to specify a numeric $priority. In cases where multiple things are registered, the internal engine will attempt to use the higher-priority ones first, falling back to lower priority ones if the first one(s) were unable to handle things.