The 50th release of league/commonmark is here! 🎉
The Environment and extension framework underwent some major changes in this release. Be sure to read the upgrade notes if you maintain any community extensions or have written custom functionality on top of this library.
Added
- The priority of parsers, processors, and renderers can now be set when
add()ing them; you no longer need to rely on the order in which they are added - Added support for trying multiple parsers per block/inline
- Extracted two new base interfaces from
Environment:EnvironmentInterfaceConfigurableEnvironmentInterface
- Extracted a new
AbstractStringContainerBlockbase class and correspondingStringContainerInterfacefromAbstractBlock - Added
Cursor::getEncoding()method - Added
.phpstorm.meta.phpfile for better IDE code completion - Made some minor optimizations here and there
Changed
- Pretty much everything now has parameter and return types (#346)
- Attributes passed to
HtmlElementwill now be escaped by default Environmentis now afinalclassEnvironment::getBlockRendererForClass()was replaced withEnvironment::getBlockRenderersForClass()(note the addeds)Environment::getInlineRendererForClass()was replaced withEnvironment::getInlineRenderersForClass()(note the addeds)- The
Environment::get____()methods now return an iterator instead of an array Context::addBlock()no longer returns the same block instance you passed into the method, as this served no useful purposeRegexHelper::isEscapable()no longer acceptsnullvaluesNode::replaceChildren()now accepts any type ofiterable, not justarrays- Some block elements now extend
AbstractStringContainerBlockinstead ofAbstractBlockInlineContainerInterfacenow extends the newStringContainerInterface- The
handleRemainingContents()method (formerly onAbstractBlock, now onAbstractStringContainerBlock) is now an `abstract method - The
InlineParserContextconstructor now requires anAbstractStringContainerBlockinstead of anAbstractBlock
Removed
- Removed support for PHP 5.6 and 7.0 (#346)
- Removed support for
add()ing parsers with just the target block/inline class name - you need to include the full namespace now - Removed the following unused methods from
Environment:getInlineParser($name)getInlineParsers()createInlineParserEngine()
- Removed the unused
getName()methods:AbstractBlockParser::getName()AbstractInlineParser::getName()BlockParserInterface::getName()InlinerParserInterface::getName()
- Removed the now-useless classes:
AbstractBlockParserAbstractInlinerParserInlineContainer
- Removed the
AbstractBlock::acceptsLines()method - Removed the now-useless constructor from
AbstractBlock - Removed previously-deprecated functionality:
InlineContainerclassRegexHelper::$instanceRegexHelper::getInstance()RegexHelper::getPartialRegex()RegexHelper::getHtmlTagRegex()RegexHelper::getLinkTitleRegex()RegexHelper::getLinkDestinationBracesRegex()RegexHelper::getThematicBreakRegex()
- Removed the second
$preserveEntitiesparameter fromXml:escape()