Skip to content

Releases: thephpleague/commonmark

1.0.0-beta1

26 May 21:56
211be90
Compare
Choose a tag to compare
1.0.0-beta1 Pre-release
Pre-release

See the upgrading guide for additional information.

Added

  • Added proper support for delimiters, including custom delimiters
    • addDelimiterProcessor() added to ConfigurableEnvironmentInterface and Environment
  • Basic delimiters no longer need custom parsers - they'll be parsed automatically
  • Added new methods:
    • AdjacentTextMerger::mergeTextNodesBetweenExclusive()
    • CommonMarkConveter::getEnvironment()
    • Configuration::set()
  • Extracted some new interfaces from base classes:
    • DocParserInterface created from DocParser
    • ConfigurationInterface created from Configuration
    • ReferenceInterface created from Reference

Changed

  • Renamed several methods of the Configuration class:
    • getConfig() renamed to get()
    • mergeConfig() renamed to merge()
    • setConfig() renamed to replace()
  • Changed ConfigurationAwareInterface::setConfiguration() to accept the new ConfigurationInterface instead of the concrete class
  • Renamed the AdjoiningTextCollapser class to AdjacentTextMerger
    • Replaced its collapseTextNodes() method with the new mergeChildNodes() method
  • Made several classes final:
    • Configuration
    • DocParser
    • HtmlRenderer
    • InlineParserEngine
    • NodeWalker
    • Reference
    • All of the block/inline parsers and renderers
  • Reduced visibility of several internal methods to private:
    • DelimiterStack::findEarliest()
    • All protected methods in InlineParserEngine
  • Marked some classes and methods as @internal
  • ElementRendererInterface now requires a public renderInline() method; added this to HtmlRenderer
  • Changed InlineParserEngine::parse() to require an AbstractStringContainerBlock instead of the generic Node class
  • Un-deprecated the CommonmarkConverter::VERSION constant
  • The Converter constructor now requires an instance of DocParserInterface instead of the concrete DocParser
  • Changed Emphasis, Strong, and AbstractWebResource to directly extend AbstractInline instead of the (now-deprecated) intermediary AbstractInlineContainer class

Fixed

  • Fixed null errors when inserting sibling Nodes without parents
  • Fixed NodeWalkerEvent not requiring a Node via its constructor
  • Fixed Reference::normalizeReference() improperly converting to uppercase instead of performing proper Unicode case-folding
  • Fixed strong emphasis delimiters not being preserved when enable_strong is set to false (it now works identically to enable_em)

Deprecated

  • Deprecated DocParser::getEnvironment() (you should obtain it some other way)
  • Deprecated AbstractInlineContainer (use AbstractInline instead and make isContainer() return true)

Removed

  • Removed inline processor functionality now that we have proper delimiter support:
    • Removed addInlineProcessor() from ConfigurableEnvironmentInterface and Environment
    • Removed getInlineProcessors() from EnvironmentInterface and Environment
    • Removed EmphasisProcessor
    • Removed InlineProcessorInterface
  • Removed EmphasisParser now that we have proper delimiter support
  • Removed support for non-UTF-8-compatible encodings
    • Removed getEncoding() from ContextInterface
    • Removed getEncoding(), setEncoding(), and $encoding from Context
    • Removed getEncoding() and the second $encoding constructor param from Cursor
  • Removed now-unused methods
    • Removed DelimiterStack::getTop() (no replacement)
    • Removed DelimiterStack::iterateByCharacters() (use the new processDelimiters() method instead)
    • Removed the protected DelimiterStack::findMatchingOpener() method

0.19.2

19 May 13:42
8401e1c
Compare
Choose a tag to compare

Fixed

  • Fixed bug where default values for nested configuration paths were inadvertently cast to strings

0.19.1

11 Apr 04:42
0.19.1
d42b2d4
Compare
Choose a tag to compare

0.19.1 is an immediate follow-up to 0.19.0 which fixes issues with extensions that register other extensions.

(While this technically introduces a BC-break, it's allowed under SemVer's rules for 0.x releases and is necessary for 0.19.x code to work as expected.)

Added

  • Added the missing addExtension() method to the new ConfigurableEnvironmentInterface

Fixed

  • Fixed extensions not being able to register other extensions

0.19.0

11 Apr 02:33
0.19.0
deb4f7e
Compare
Choose a tag to compare

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:
    • EnvironmentInterface
    • ConfigurableEnvironmentInterface
  • Extracted a new AbstractStringContainerBlock base class and corresponding StringContainerInterface from AbstractBlock
  • Added Cursor::getEncoding() method
  • Added .phpstorm.meta.php file 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 HtmlElement will now be escaped by default
  • Environment is now a final class
  • Environment::getBlockRendererForClass() was replaced with Environment::getBlockRenderersForClass() (note the added s)
  • Environment::getInlineRendererForClass() was replaced with Environment::getInlineRenderersForClass() (note the added s)
  • 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 purpose
  • RegexHelper::isEscapable() no longer accepts null values
  • Node::replaceChildren() now accepts any type of iterable, not just arrays
  • Some block elements now extend AbstractStringContainerBlock instead of AbstractBlock
    • InlineContainerInterface now extends the new StringContainerInterface
    • The handleRemainingContents() method (formerly on AbstractBlock, now on AbstractStringContainerBlock) is now an `abstract method
    • The InlineParserContext constructor now requires an AbstractStringContainerBlock instead of an AbstractBlock

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:
    • AbstractBlockParser
    • AbstractInlinerParser
    • InlineContainer
  • Removed the AbstractBlock::acceptsLines() method
  • Removed the now-useless constructor from AbstractBlock
  • Removed previously-deprecated functionality:
    • InlineContainer class
    • RegexHelper::$instance
    • RegexHelper::getInstance()
    • RegexHelper::getPartialRegex()
    • RegexHelper::getHtmlTagRegex()
    • RegexHelper::getLinkTitleRegex()
    • RegexHelper::getLinkDestinationBracesRegex()
    • RegexHelper::getThematicBreakRegex()
  • Removed the second $preserveEntities parameter from Xml:escape()

0.18.5

09 Apr 12:40
0.18.5
f94e18d
Compare
Choose a tag to compare

Fixed

0.18.4

24 Mar 02:47
0.18.4
93fa5e8
Compare
Choose a tag to compare

Changed

  • Modified how URL normalization decodes certain characters in order to align with the JS library's output
  • Disallowed unescaped ( in parenthesized link title

Fixed

  • Fixed two exponential backtracking issues

0.18.3

21 Mar 22:52
0.18.3
b1ec41c
Compare
Choose a tag to compare

This is a security update release.

Changed

  • XML/HTML entities in attributes will no longer be preserved when rendering (#353)

Fixed

  • Fix XSS vulnerability caused by improper preservation of entities when rendering (#353)

Deprecated

  • Deprecated the $preserveEntites argument of Xml::escape() for removal in the next release (#353)

0.18.2

17 Mar 01:45
Compare
Choose a tag to compare

Fixed

  • Fixed adjoining Text elements not being collapsed after delimiter processing

Deprecated

  • Deprecated the CommonmarkConverter::VERSION constant for removal in 1.0.0

0.18.1

30 Dec 02:36
e5029f7
Compare
Choose a tag to compare

This release contains an important security update for CVE-2018-20583.

Fixed

  • Fix XSS vulnerability caused by URL normalization not handling/encoding newlines properly (#337, CVE-2018-20583)

0.18.0

18 Sep 13:18
Compare
Choose a tag to compare

No breaking changes were introduced, but we did add a new interface: ConverterInterface. Consider depending on this interface in your code instead of the concrete implementation. (See #330)

Added

  • Added ConverterInterface to Converter and CommonMarkConverter (#330)
  • Added ListItem::getListData() method (#329)

Changed

  • Links with target="_blank" will also get rel="noopener noreferrer" by default (#331)
  • Implemented several performance optimizations (#324)