12 KiB
12 KiB
Change Log
All notable changes to this project will be documented in this file. Updates should follow the Keep a CHANGELOG principles.
Unreleased
1.4.3 - 2020-05-04
Fixed
- Fixed certain Unicode letters, numbers, and marks not being preserved when generating URL slugs (#467)
1.4.2 - 2020-04-24
Fixed
- Fixed inline code blocks not be included within heading permalinks (#457)
1.4.1 - 2020-04-20
Fixed
- Fixed BC break caused by ConverterInterface alias not being used by some DI containers (#454)
1.4.0 - 2020-04-18
Added
- Added new Heading Permalink extension (#420)
- Added new Table of Contents extension (#441)
- Added new
MarkdownConverterInterfaceas a long-term replacement forConverterInterface(#439) - Added new
DocumentPreParsedEventevent (#427, #359, #399) - Added new
ListBlock::TYPE_BULLETconstant as a replacement forListBlock::TYPE_UNORDERED - Added new
MarkdownInputclass andMarkdownInputInterfaceto handle pre-parsing and allow listeners to replace Markdown contents
Changed
- Block & inline renderers will now render child classes automatically (#222, #209)
- The
ListBlockconstants now use fully-lowercased values instead of titlecased values - Significantly improved typing
Fixed
- Fixed loose comparison when checking for table alignment
- Fixed
StaggeredDelimiterProcessorreturning from avoidfunction
Deprecated
- The
Converterclass has been deprecated; useCommonMarkConverterinstead (#438, #439) - The
ConverterInterfacehas been deprecated; useMarkdownConverterInterfaceinstead (#438, #439) - The
bin/commonmarkscript has been deprecated - The following methods of
ArrayCollectionhave been deprecated:add()set()get()remove()isEmpty()contains()indexOf()containsKey()replaceWith()removeGaps()
- The
ListBlock::TYPE_UNORDEREDconstant has been deprecated, useListBlock::TYPE_BULLETinstead
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
EnvironmentAwareInterfaceorConfigurationAwareInterface(#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-08
Added
- Added (optional) full GFM support! 🎉🎉🎉 (#409)
- Added check to ensure Markdown input is valid UTF-8 (#401, #405)
- Added new
unordered_list_markersconfiguration option (#408, #411)
Changed
- Introduced several micro-optimizations for a 5-10% performance boost
1.2.2 - 2020-01-15
This release contains the same changes as 1.1.3:
Fixed
- Fixed link parsing edge case (#403)
1.1.3 - 2020-01-15
Fixed
- Fixed link parsing edge case (#403)
1.2.1 - 2020-01-14
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-09
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
Html5EntityDecoderclass (#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
Html5Entitiesclass - useHtml5EntityDecoderinstead (#387)
1.0.0 - 2019-06-29
No changes were made since 1.0.0-rc1.
1.0.0-rc1 - 2019-06-19
Added
- Extracted a
ReferenceMapInterfacefrom theReferenceMapclass - Added optional
ReferenceMapInterfaceparameter to theDocumentconstructor
Changed
- Replaced all references to
ReferenceMapwithReferenceMapInterface 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
DocumentProcessorInterfacefunctionality in favor of event dispatching (#373)
1.0.0-beta3 - 2019-05-27
Changed
- Made the
Delimiterclass final and extracted a newDelimiterInterface- Modified most external usages to use this new interface
- Renamed three
Delimitermethods:getOrigDelims()renamed togetOriginalLength()getNumDelims()renamed togetLength()setNumDelims()renamed tosetLength()
- Made additional classes final:
DelimiterStackReferenceMapReferenceParser
- Moved
ReferenceParserinto theReferencesub-namespace
Removed
- Removed unused
Delimitermethods:setCanOpen()setCanClose()setChar()setIndex()setInlineNode()
- Removed fluent interface from
Delimiter(setter methods now have no return values)
1.0.0-beta2 - 2019-05-27
Changed
DelimiterProcessorInterface::process()will accept any type ofAbstractStringContainernow, not justTextnodes- The
Delimiterconstructor,getInlineNode(), andsetInlineNode()no longer accept genericNodeelements - onlyAbstractStringContainers
Removed
- Removed all deprecated functionality:
- The
safeoption (usehtml_inputandallow_unsafe_linksoptions instead) - All deprecated
RegexHelperconstants DocParser::getEnvironment()(you should obtain it some other way)AbstractInlineContainer(useAbstractInlineinstead and makeisContainer()returntrue)
- The
1.0.0-beta1 - 2019-05-26
Added
- Added proper support for delimiters, including custom delimiters
addDelimiterProcessor()added toConfigurableEnvironmentInterfaceandEnvironment
- 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:
DocParserInterfacecreated fromDocParserConfigurationInterfacecreated fromConfigurationReferenceInterfacecreated fromReference
Changed
- Renamed several methods of the
Configurationclass:getConfig()renamed toget()mergeConfig()renamed tomerge()setConfig()renamed toreplace()
- Changed
ConfigurationAwareInterface::setConfiguration()to accept the newConfigurationInterfaceinstead of the concrete class - Renamed the
AdjoiningTextCollapserclass toAdjacentTextMerger- Replaced its
collapseTextNodes()method with the newmergeChildNodes()method
- Replaced its
- Made several classes
final:ConfigurationDocParserHtmlRendererInlineParserEngineNodeWalkerReference- All of the block/inline parsers and renderers
- Reduced visibility of several internal methods to
private:DelimiterStack::findEarliest()- All
protectedmethods inInlineParserEngine
- Marked some classes and methods as
@internal ElementRendererInterfacenow requires a publicrenderInline()method; added this toHtmlRenderer- Changed
InlineParserEngine::parse()to require anAbstractStringContainerBlockinstead of the genericNodeclass - Un-deprecated the
CommonmarkConverter::VERSIONconstant - The
Converterconstructor now requires an instance ofDocParserInterfaceinstead of the concreteDocParser - Changed
Emphasis,Strong, andAbstractWebResourceto directly extendAbstractInlineinstead of the (now-deprecated) intermediaryAbstractInlineContainerclass
Fixed
- Fixed null errors when inserting sibling
Nodes without parents - Fixed
NodeWalkerEventnot requiring aNodevia 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_strongis set tofalse(it now works identically toenable_em)
Deprecated
- Deprecated
DocParser::getEnvironment()(you should obtain it some other way) - Deprecated
AbstractInlineContainer(useAbstractInlineinstead and makeisContainer()returntrue)
Removed
- Removed inline processor functionality now that we have proper delimiter support:
- Removed
addInlineProcessor()fromConfigurableEnvironmentInterfaceandEnvironment - Removed
getInlineProcessors()fromEnvironmentInterfaceandEnvironment - Removed
EmphasisProcessor - Removed
InlineProcessorInterface
- Removed
- Removed
EmphasisParsernow that we have proper delimiter support - Removed support for non-UTF-8-compatible encodings
- Removed
getEncoding()fromContextInterface - Removed
getEncoding(),setEncoding(), and$encodingfromContext - Removed
getEncoding()and the second$encodingconstructor 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