All notable changes to this project will be documented in this file. Updates should follow the Keep a CHANGELOG principles.
textarea
elements not being treated as a type 1 HTML block (like script
, style
, or pre
)UrlEncoder
utility (#509) or the Cursor
AttributesExtension
based on https://github.com/webuni/commonmark-attributes-extension (#474)FootnoteExtension
based on https://github.com/rezozero/commonmark-ext-footnotes (#474)MentionExtension
to replace InlineMentionParser
with more flexibility and customizationTableOfContents
nodes anywhere in a document (given by a placeholder)Node
objectsrel
attributes set via the ExternalLink
extension (#476)heading_permalink/slug_normalizer
configuration option to allow custom slug generation (#460)heading_permalink/symbol
configuration option to replace the now deprecated heading_permalink/inner_contents
configuration option (#505)SlugNormalizer
and TextNormalizer
classes to make normalization reusable by extensions (#485)TableOfContentsGenerator
TableOfContentsGeneratorInterface
TableOfContentsPlaceholder
TableOfContentsPlaceholderParser
TableOfContentsPlaceholderRenderer
TableOfContents
class into a new Node
sub-namespace (with backward-compatibility)Reference
, only the ReferenceMap
CommonMarkConverter::VERSION
constant (#496)League\CommonMark\Extension\Autolink\InlineMentionParser
(use League\CommonMark\Extension\Mention\MentionParser
instead)League\CommonMark\Extension\HeadingPermalink\Slug
(use the classes under League\CommonMark\Normalizer
instead)League\CommonMark\Extension\TableOfContents\TableOfContents
(use the one in the new Node
sub-namespace instead)STYLE_
and NORMALIZE_
constants in TableOfContentsBuilder
(use the ones in TableOfContentsGenerator
instead)\League\CommonMark\Extension\HeadingPermalink\HeadingPermalinkRenderer::DEFAULT_INNER_CONTENTS
constant (#505)heading_permalink/inner_contents
configuration option in the HeadingPermalink
extension (use the new heading_permalink/symbol
configuration option instead) (#505)MarkdownConverterInterface
as a long-term replacement for ConverterInterface
(#439)DocumentPreParsedEvent
event (#427, #359, #399)ListBlock::TYPE_BULLET
constant as a replacement for ListBlock::TYPE_UNORDERED
MarkdownInput
class and MarkdownInputInterface
to handle pre-parsing and allow listeners to replace Markdown contentsListBlock
constants now use fully-lowercased values instead of titlecased valuesStaggeredDelimiterProcessor
returning from a void
functionConverter
class has been deprecated; use CommonMarkConverter
instead (#438, #439)ConverterInterface
has been deprecated; use MarkdownConverterInterface
instead (#438, #439)bin/commonmark
script has been deprecatedArrayCollection
have been deprecated:
add()
set()
get()
remove()
isEmpty()
contains()
indexOf()
containsKey()
replaceWith()
removeGaps()
ListBlock::TYPE_UNORDERED
constant has been deprecated, use ListBlock::TYPE_BULLET
instead[$instance, 'method']
callable syntax (#440)EnvironmentAwareInterface
or ConfigurationAwareInterface
(#423)Environment::createCommonMarkEnvironment()
and Environment::createGFMEnvironment()
unordered_list_markers
configuration option (#408, #411)This release contains the same changes as 1.1.3:
Html5EntityDecoder
class (#387)Html5Entities
class - use Html5EntityDecoder
instead (#387)No changes were made since 1.0.0-rc1.
ReferenceMapInterface
from the ReferenceMap
classReferenceMapInterface
parameter to the Document
constructorReferenceMap
with ReferenceMapInterface
ReferenceMap::addReference()
no longer returns $this
"0"
wouldn't be rendered (#376)DocumentProcessorInterface
functionality in favor of event dispatching (#373)Delimiter
class final and extracted a new DelimiterInterface
Delimiter
methods:
getOrigDelims()
renamed to getOriginalLength()
getNumDelims()
renamed to getLength()
setNumDelims()
renamed to setLength()
DelimiterStack
ReferenceMap
ReferenceParser
ReferenceParser
into the Reference
sub-namespaceDelimiter
methods:
setCanOpen()
setCanClose()
setChar()
setIndex()
setInlineNode()
Delimiter
(setter methods now have no return values)DelimiterProcessorInterface::process()
will accept any type of AbstractStringContainer
now, not just Text
nodesDelimiter
constructor, getInlineNode()
, and setInlineNode()
no longer accept generic Node
elements - only AbstractStringContainer
ssafe
option (use html_input
and allow_unsafe_links
options instead)RegexHelper
constantsDocParser::getEnvironment()
(you should obtain it some other way)AbstractInlineContainer
(use AbstractInline
instead and make isContainer()
return true
)addDelimiterProcessor()
added to ConfigurableEnvironmentInterface
and Environment
AdjacentTextMerger::mergeTextNodesBetweenExclusive()
CommonMarkConveter::getEnvironment()
Configuration::set()
DocParserInterface
created from DocParser
ConfigurationInterface
created from Configuration
ReferenceInterface
created from Reference
Configuration
class:
getConfig()
renamed to get()
mergeConfig()
renamed to merge()
setConfig()
renamed to replace()
ConfigurationAwareInterface::setConfiguration()
to accept the new ConfigurationInterface
instead of the concrete classAdjoiningTextCollapser
class to AdjacentTextMerger
collapseTextNodes()
method with the new mergeChildNodes()
methodfinal
:
Configuration
DocParser
HtmlRenderer
InlineParserEngine
NodeWalker
Reference
private
:
DelimiterStack::findEarliest()
protected
methods in InlineParserEngine
@internal
ElementRendererInterface
now requires a public renderInline()
method; added this to HtmlRenderer
InlineParserEngine::parse()
to require an AbstractStringContainerBlock
instead of the generic Node
classCommonmarkConverter::VERSION
constantConverter
constructor now requires an instance of DocParserInterface
instead of the concrete DocParser
Emphasis
, Strong
, and AbstractWebResource
to directly extend AbstractInline
instead of the (now-deprecated) intermediary AbstractInlineContainer
classNode
s without parentsNodeWalkerEvent
not requiring a Node
via its constructorReference::normalizeReference()
improperly converting to uppercase instead of performing proper Unicode case-foldingenable_strong
is set to false
(it now works identically to enable_em
)DocParser::getEnvironment()
(you should obtain it some other way)AbstractInlineContainer
(use AbstractInline
instead and make isContainer()
return true
)addInlineProcessor()
from ConfigurableEnvironmentInterface
and Environment
getInlineProcessors()
from EnvironmentInterface
and Environment
EmphasisProcessor
InlineProcessorInterface
EmphasisParser
now that we have proper delimiter supportgetEncoding()
from ContextInterface
getEncoding()
, setEncoding()
, and $encoding
from Context
getEncoding()
and the second $encoding
constructor param from Cursor
DelimiterStack::getTop()
(no replacement)DelimiterStack::iterateByCharacters()
(use the new processDelimiters()
method instead)DelimiterStack::findMatchingOpener()
method