Changelog
All notable changes made in 1.x
releases are shown below. See the full list of releases for the complete changelog.
1.3.4 - 2020-04-13
Fixed
- Fixed configuration/environment not being injected into event listeners when adding them via
[$instance, 'method']
callable syntax (#440)
1.3.3 - 2020-04-05
Fixed
- Fixed event listeners not having the environment or configuration injected if they implemented the
EnvironmentAwareInterface
orConfigurationAwareInterface
(#423)
1.3.2 - 2020-03-25
Fixed
- Optimized URL normalization in cases where URLs don’t contain special characters (#417, #418)
1.3.1 - 2020-02-28
Fixed
- Fixed return types of
Environment::createCommonMarkEnvironment()
andEnvironment::createGFMEnvironment()
1.3.0 - 2020-02-09
ℹ️ Do you use league/commonmark-ext*
packages? Those features are now included directly in this library! See #409 for details on making the switch.
Added
- Added (optional) full GFM support! 🎉🎉🎉 (#409)
- Added check to ensure Markdown input is valid UTF-8 (#401, #405)
- Added new
unordered_list_markers
configuration option (#408, #411)
Changed
- Introduced several micro-optimizations for a 5-10% performance boost
1.2.2 - 2020-01-16
This release contains the same changes as 1.1.3:
Fixed
- Fixed link parsing edge case (#403)
1.1.3 - 2020-01-16
Fixed
- Fixed link parsing edge case (#403)
1.2.1 - 2020-01-15
Changed
- Introduced several micro-optimizations, reducing the parse time by 8%
1.2.0 - 2020-01-09
Changed
- Removed URL decoding step before encoding (more performant and better matches the JS library)
- Removed redundant token from HTML tag regex
1.1.2 - 2019-12-10
Fixed
- Fixed URL normalization not handling non-UTF-8 sequences properly (#395, #396)
1.1.1 - 2019-11-11
Fixed
- Fixed handling of link destinations with unbalanced unescaped parens
- Fixed adding delimiters to stack which can neither open nor close a run
1.1.0 - 2019-10-31
Added
- Added a new
Html5EntityDecoder
class (#387)
Changed
- Improved performance by 10% (#389)
- Made entity decoding less memory-intensive (#386, #387)
Fixed
- Fixed PHP 7.4 compatibility issues
Deprecated
- Deprecated the
Html5Entities
class - useHtml5EntityDecoder
instead (#387)
1.0.0 - 2019-06-29
First stable release! 🎉
No code changes have been introduced since 1.0.0-rc1
1.0.0-rc1 - 2019-06-20
Added
- Extracted a
ReferenceMapInterface
from theReferenceMap
class - Added optional
ReferenceMapInterface
parameter to theDocument
constructor
Changed
- Replaced all references to
ReferenceMap
withReferenceMapInterface
ReferenceMap::addReference()
no longer returns$this
Fixed
- Fixed bug where elements with content of
"0"
wouldn’t be rendered (#376)
1.0.0-beta4 - 2019-06-05
Added
- Added event dispatcher functionality (#359, #372)
Removed
- Removed
DocumentProcessorInterface
functionality in favor of event dispatching (#373)
1.0.0-beta3 - 2019-05-28
Changed
- Made the
Delimiter
class final and extracted a newDelimiterInterface
- Modified most external usages to use this new interface
- Renamed three
Delimiter
methods:getOrigDelims()
renamed togetOriginalLength()
getNumDelims()
renamed togetLength()
setNumDelims()
renamed tosetLength()
- Made additional classes final:
DelimiterStack
ReferenceMap
ReferenceParser
- Moved
ReferenceParser
into theReference
sub-namespace
Removed
- Removed unused
Delimiter
methods:setCanOpen()
setCanClose()
setChar()
setIndex()
setInlineNode()
- Removed fluent interface from
Delimiter
(setter methods now have no return values)
1.0.0-beta2 - 2019-05-27
This beta release fixes a couple of items that were not addressed in the previous beta.
Changed
DelimiterProcessorInterface::process()
will accept any type ofAbstractStringContainer
now, not justText
nodes- The
Delimiter
constructor,getInlineNode()
, andsetInlineNode()
no longer accept genericNode
elements - onlyAbstractStringContainer
s
Removed
- Removed all deprecated functionality:
- The
safe
option (usehtml_input
andallow_unsafe_links
options instead) - All deprecated
RegexHelper
constants DocParser::getEnvironment()
(you should obtain it some other way)AbstractInlineContainer
(useAbstractInline
instead and makeisContainer()
returntrue
)
- The
1.0.0-beta1 - 2019-05-26
See the upgrading guide for additional information.
Added
- Added proper support for delimiters, including custom delimiters
addDelimiterProcessor()
added toConfigurableEnvironmentInterface
andEnvironment
- 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 fromDocParser
ConfigurationInterface
created fromConfiguration
ReferenceInterface
created fromReference
Changed
- Renamed several methods of the
Configuration
class:getConfig()
renamed toget()
mergeConfig()
renamed tomerge()
setConfig()
renamed toreplace()
- Changed
ConfigurationAwareInterface::setConfiguration()
to accept the newConfigurationInterface
instead of the concrete class - Renamed the
AdjoiningTextCollapser
class toAdjacentTextMerger
- Replaced its
collapseTextNodes()
method with the newmergeChildNodes()
method
- Replaced its
- 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 inInlineParserEngine
- Marked some classes and methods as
@internal
ElementRendererInterface
now requires a publicrenderInline()
method; added this toHtmlRenderer
- Changed
InlineParserEngine::parse()
to require anAbstractStringContainerBlock
instead of the genericNode
class - Un-deprecated the
CommonmarkConverter::VERSION
constant - The
Converter
constructor now requires an instance ofDocParserInterface
instead of the concreteDocParser
- Changed
Emphasis
,Strong
, andAbstractWebResource
to directly extendAbstractInline
instead of the (now-deprecated) intermediaryAbstractInlineContainer
class
Fixed
- Fixed null errors when inserting sibling
Node
s without parents - Fixed
NodeWalkerEvent
not requiring aNode
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 tofalse
(it now works identically toenable_em
)
Deprecated
- Deprecated
DocParser::getEnvironment()
(you should obtain it some other way) - Deprecated
AbstractInlineContainer
(useAbstractInline
instead and makeisContainer()
returntrue
)
Removed
- Removed inline processor functionality now that we have proper delimiter support:
- Removed
addInlineProcessor()
fromConfigurableEnvironmentInterface
andEnvironment
- Removed
getInlineProcessors()
fromEnvironmentInterface
andEnvironment
- Removed
EmphasisProcessor
- Removed
InlineProcessorInterface
- Removed
- Removed
EmphasisParser
now that we have proper delimiter support - Removed support for non-UTF-8-compatible encodings
- Removed
getEncoding()
fromContextInterface
- Removed
getEncoding()
,setEncoding()
, and$encoding
fromContext
- Removed
getEncoding()
and the second$encoding
constructor param fromCursor
- Removed
- Removed now-unused methods
- Removed
DelimiterStack::getTop()
(no replacement) - Removed
DelimiterStack::iterateByCharacters()
(use the newprocessDelimiters()
method instead) - Removed the protected
DelimiterStack::findMatchingOpener()
method
- Removed
Older Versions
Please see the full list of releases for the complete changelog.