summaryrefslogtreecommitdiff
path: root/vendor/league/commonmark/CHANGELOG.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/league/commonmark/CHANGELOG.md')
-rw-r--r--vendor/league/commonmark/CHANGELOG.md892
1 files changed, 102 insertions, 790 deletions
diff --git a/vendor/league/commonmark/CHANGELOG.md b/vendor/league/commonmark/CHANGELOG.md
index 17b2335049..73aadb95e1 100644
--- a/vendor/league/commonmark/CHANGELOG.md
+++ b/vendor/league/commonmark/CHANGELOG.md
@@ -4,842 +4,154 @@ Updates should follow the [Keep a CHANGELOG](https://keepachangelog.com/) princi
## [Unreleased][unreleased]
-## [0.19.3] - 2019-06-18
+## [1.0.0] - 2019-06-29
-### Fixed
-
- - Fixed bug where elements with content of `"0"` wouldn't be rendered (#376)
-
-## [0.19.2] - 2019-05-19
-
-### Fixed
-
- - Fixed bug where default values for nested configuration paths were inadvertently cast to strings
-
-## [0.19.1] - 2019-04-10
-
-### Added
-
- - Added the missing `addExtension()` method to the new `ConfigurableEnvironmentInterface`
-
-### Fixed
-
- - Fixed extensions not being able to register other extensions
-
-## [0.19.0] - 2019-04-10
-
-### 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 `array`s
- - 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] - 2019-03-28
-
-### Fixed
-
- - Fixed the adjoining `Text` collapser not handling the full tree (thephpleague/commonmark-ext-autolink#10)
-
-## [0.18.4] - 2019-03-23
-
-### 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] - 2019-03-21
-
-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] - 2019-03-16
-
-### 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] - 2018-12-29
-
-This is a **security update** release.
-
-### Fixed
-
- - Fix XSS vulnerability caused by URL normalization not handling/encoding newlines properly (#337, CVE-2018-20583)
-
-## [0.18.0] - 2018-09-18
-
-### 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)
-
-## [0.17.5] - 2018-03-29
-
-### Fixed
-
- - Fixed incorrect version constant value (again)
- - Fixed release checklist to prevent the above from happening
- - Fixed incorrect dates in CHANGELOG
-
-## [0.17.4] - 2018-03-28
-
-### Added
-
- - Added `ListBlock::setTight()` method
-
-## [0.17.3] - 2018-03-26
-
-### Fixed
-
- - Fixed incorrect version constant value
-
-## [0.17.2] - 2018-03-25
-
-### Added
-
- - Added new `RegexHelper::isEscapable()` method
-
-### Fixed
-
- - Fixed spec compliance bug where escaped spaces should not be allowed in link destinations
-
-## [0.17.1] - 2018-03-18
-
-### Added
-
- - Added a new constant containing the current version: `CommonMarkConverter::VERSION` (#314)
-
-## [0.17.0] - 2017-12-30
-
-This release contains several breaking changes and a minimum PHP version bump - see <UPGRADE.md> for more details.
-
-### Added
-
- - Added new `max_nesting_level` setting (#243)
- - Added minor performance optimizations to `Cursor`
-
-### Changed
-
- - Minimum PHP version is now 5.6.5.
- - All full and partial regular expressions in `RegexHelper` are now defined as constants instead of being built on-the-fly.
- - `Cursor::saveState()` now returns an `array` instead of a `CursorState` object.
- - `Cursor::restoreState()` now accepts an `array` parameter instead of a `CursorState` object.
- - Saving/restoring the Cursor state no longer tracks things that don't change (like the text content).
- - `RegexHelper` is now `final`.
- - References to `InlineContainer` changed to new `InlineContainerInterface` interface.
- - `MiscExtension::addInlineParser()` and `MiscExtension::addBlockRenderer()` now return `$this` instead of nothing.
-
-### Fixed
- - Fixed `Reference::normalizeReference()` not properly collapsing whitespace to a single space
-
-### Deprecated
-
- - `RegexHelper::getInstance()` and all instance (non-static) methods have been deprecated.
- - The `InlineContainer` interface has been deprecated. Use `InlineContainerInterface` instead.
-
-### Removed
-
- - Removed support for PHP 5.4 and 5.5.
- - Removed `CursorState` class
- - Removed all previous deprecations:
- - `Cursor::getFirstNonSpacePosition()`
- - `Cursor::getFirstNonSpaceCharacter()`
- - `Cursor::advanceWhileMatches()`
- - `Cursor::advanceToFirstNonSpace()`
- - `ElementRendererInterface::escape()`
- - `HtmlRenderer::escape()`
- - `RegexHelper::REGEX_UNICODE_WHITESPACE`
- - `RegexHelper::getLinkDestinationRegex()`
-
-## [0.16.0] - 2017-10-30
-
-This release contains breaking changes, several performance improvements, and two deprecations:
-
-### Added
-
- - Added new `Xml` utility class; moved HTML/XML escaping logic into there (see deprecations below)
-
-### Changed
-
- - `Environment::getInlineParsersForCharacter()` now returns an empty array (instead of `null`) when no matching parsers are found
- - Three utility classes are now marked `final`:
- - `Html5Entities`
- - `LinkParserHelper`
- - `UrlEncoder`
-
-### Fixed
-
- - Improved performance of several methods (for a 10% overall performance boost - #292)
-
-### Deprecated
-
-The following methods were deprecated and are scheduled for removal in 0.17.0 or 1.0.0 (whichever comes first). See <UPGRADE.md> for more information.
-
- - `Cursor::advanceWhileMatches()` deprecated; use `Cursor::match()` instead.
- - `HtmlRenderer::escape()` deprecated; use `Xml::escape()` instead.
-
-### Removed
-
- - Removed `DelimiterStack::findFirstMatchingOpener()` which was previously deprecated in 0.15.0
-
-## [0.15.7] - 2017-10-26
-
-### Fixed
-
- - Improved performance of `Cursor::advanceBy()` (for a 16% performance boost)
-
-## [0.15.6] - 2017-08-08
-
-### Fixed
-
- - Fixed URI normalization not properly encoding/decoding special characters in certain cases (#287)
-
-## [0.15.5] - 2017-08-05
-
-This release bumps spec compliance to 0.28 without breaking changes to the API.
-
-### Added
-
- - Project is now tested against PHP 7.2
-
-### Changed
-
- - Bumped CommonMark spec target to 0.28
- - Changed internal implementation of `LinkParserHelper::parseLinkDestination()` to allow nested parens
- - Changed precedence of strong/emph when both nestings are possible (rule 14)
- - Allow tabs before and after ATX closing header
-
-### Fixed
-
- - Fixed HTML type 6 block regex matching against `<pre>` (it shouldn't) and not matching `<iframe>` (it should)
- - Fixed reference parser incorrectly handling escaped `]` characters
- - Fixed "multiple of 3" delimiter run calculations
+No changes were made since 1.0.0-rc1.
-### Deprecated
-
-An unused constant and static method were deprecated and will be removed in a future release. See <UPGRADE.md> for more information.
-
- - Deprecated `RegexHelper::REGEX_UNICODE_WHITESPACE` (no longer used)
- - Deprecated `RegexHelper::getLinkDestinationRegex()` (no longer used)
-
-## [0.15.4] - 2017-05-09
+## [1.0.0-rc1] - 2019-06-19
### Added
- - Added new methods to `Cursor` (#280):
- - `advanceToNextNonSpaceOrNewline()` - Identical replacement for the (now-deprecated) `advanceToFirstNonSpace()` method
- - `advanceToNextNonSpaceOrTab()` - Similar replacement for `advanceToFirstNonSpace()` but with proper tab handling
- - `getNextNonSpaceCharacter()` - Identical replacement for the (now-deprecated) `getFirstNonSpaceCharacter()` method
- - `getNextNonSpacePosition()` - Identical replacement for the (now-deprecated) `getFirstNonSpacePosition()` method
- - Added new method to `CursorState` (#280):
- - `getNextNonSpaceCache()` - Identical replacement for the (now-deprecated) `getFirstNonSpaceCache()` method
-
-### Fixed
-
- - Fixed duplicate characters in non-intended lines containing tabs (#279)
-
-### Deprecated
-
-**All deprecations listed here will be removed in a future 0.x release.** See [UPGRADE.md](UPGRADE.md) for instructions on preparing your code for the eventual removal of these methods.
-
- - Deprecated `Cursor::advanceToFirstNonSpace()` (#280)
- - Use `advanceToNextNonSpaceOrTab()` or `advanceToNextNonSpaceOrNewline()` instead, depending on your requirements
- - Deprecated `Cursor::getFirstNonSpaceCharacter()` (#280)
- - Use `Cursor::getNextNonSpaceCharacter()` instead
- - Deprecated `Cursor::getFirstNonSpacePosition()` (#280)
- - Use `Cursor::getNextNonSpacePosition()` instead
- - Deprecated `CursorState::getFirstNonSpaceCache()` (#280)
- - Use `CursorState::getNextNonSpaceCache()` instead
-
-## [0.15.3] - 2016-12-18
-
-### Fixed
- - Allow inline parsers matching regex delimiter to be created (#271, #272)
-
-## [0.15.2] - 2016-11-22
-
-### Changed
- - Bumped spec target version to 0.27 (#268)
- - H2-H6 elements are now parsed as HTML block elements instead of HTML inlines
-
-### Fixed
- - Fixed incomplete punctuation regex
- - Fixed shortcut links not being allowed before a `(`
- - Fixed distinction between Unicode whitespace and regular whitespace
-
-## [0.15.1] - 2016-11-08
-
-### Fixed
- - Fixed setext heading underlines not allowing trailing tabs (#266)
-
-## [0.15.0] - 2016-09-14
-
-### Added
- - Added preliminary support for PHP 7.1 (#259)
- - Added more regression tests (#258, #260)
+ - Extracted a `ReferenceMapInterface` from the `ReferenceMap` class
+ - Added optional `ReferenceMapInterface` parameter to the `Document` constructor
### Changed
- - Bumped spec target version to 0.26 (#260)
- - The `CursorState` constructor requires an additional parameter (#258)
- - Ordered lists cannot interupt a paragraph unless they start with `1` (#260)
- - Blank list items cannot interupt a paragraph (#260)
-
-### Deprecated
- - Deprecated `DelimiterStack::findFirstMatchingOpener()` - use `findMatchingOpener()` instead (#260)
-
-### Fixed
- - Fixed tabs in ATX headers and thematic breaks (#260)
- - Fixed issue where cursor state was not being restored properly (#258, #260)
- - This fixed the lists-with-tabs regression reported in #258
-
-### Removed
- - Removed an unnecessary check in `Cursor::advanceBy()` (#260)
- - Removed the two-blanks-break-out-of-lists feature (#260)
-
-
-## [0.14.0] - 2016-07-02
-### Added
- - The `safe` option is deprecated and replaced by 2 new options (#253, #255):
- - `html_input` (`strip`, `allow` or `escape`): how to handle untrusted HTML input (the default is `strip` for BC reasons)
- - `allow_unsafe_links` (`true` or `false`): whether to allow risky image URLs and links (the default is `true` for BC reasons)
-
-### Deprecated
- - The `safe` option is now deprecated and will be removed in the 1.0.0 release.
-## [0.13.4] - 2016-06-14
+ - Replaced all references to `ReferenceMap` with `ReferenceMapInterface`
+ - `ReferenceMap::addReference()` no longer returns `$this`
### Fixed
- - Fixed path to `autoload.php` within bin/commonmark (#250)
-## [0.13.3] - 2016-05-21
-
-### Added
- - Added `setUrl()` method for `Link` and `Image` elements (#227, #244)
- - Added cebe/markdown to the benchmark tool (#245)
+ - Fixed bug where elements with content of `"0"` wouldn't be rendered (#376)
-## [0.13.2] - 2016-03-27
+## [1.0.0-beta4] - 2019-06-05
### Added
- - Added ability to invoke `Converter` as a function (#233, #239)
- - Added new `advanceBySpaceOrTab` convenience method to `Cursor`
-
-### Changed
- - Bumped spec target version to 0.25
- - Adjusted how tabs are handled by the `Cursor` (#234)
- - Made a couple small micro-optimizations to heavily used functions (#240)
- - Updated URLs in docblocks to use HTTPS where possible (#238)
-## [0.13.1] - 2016-03-09
-
-### Changed
- - Refactored `EmphasisParser::parse()` to simplify it (#223)
- - Updated dev dependencies (#218 & #220)
-
-### Fixed
- - Fixed invalid regex generated when no inline parsers are defined (#224)
- - Fixed logic bug with blank line after empty list item (#230)
- - Fixed some incorrect code comments
+ - Added event dispatcher functionality (#359, #372)
### Removed
- - Removed unused variables (#223)
-## [0.13.0] - 2016-01-13
+ - Removed `DocumentProcessorInterface` functionality in favor of event dispatching (#373)
-### Added
- - Added AST document processors (#210)
- - Added optional `Environment` parameter to `CommonMarkConverter` constructor
+## [1.0.0-beta3] - 2019-05-27
### Changed
- - Renamed "header" things to "heading" for spec consistency
- - `Header` => `Heading`
- - `ATXHeaderParser` => `ATXHeadingParser`
- - `SetExtHeaderParser` => `SetExtHeadingParser`
- - `HeaderRenderer` => `HeadingRenderer`
- - Renamed "HorizontalRule" to "ThematicBreak" for spec consistency
- - `HorizontalRule` => `ThematicBreak`
- - `HorizontalRuleParser` => `ThematicBreakParser`
- - `HorizontalRuleRenderer` => `ThematicBreakRenderer`
- - `HorizontalRuleRendererTest` => `ThematicBreakRendererTest`
- - `RegexHelper::getHRuleRegex()` => `RegexHelper::getThematicBreakRegex()`
- - Renamed inline "Html" and "RawHtml" to "HtmlInline" for consistency
- - `Html` => `HtmlInline`
- - `RawHtmlParser` => `HtmlInlineParser`
- - `RawHtmlRenderer` => `HtmlInlineRenderer`
- - Don't allow whitespace between link text and link label of a reference link (spec change)
- - Don't allow spaces in link destinations, even in `<>`
- - Allow multiline setext header content
- - The `Heading` constructor now allows `$contents` to be a `string` (old behavior) or `string[]` (new)
-### Fixed
- - Fixed several list issues and regressions (jgm/commonmark.js#59)
+ - Made the `Delimiter` class final and extracted a new `DelimiterInterface`
+ - Modified most external usages to use this new interface
+ - Renamed three `Delimiter` methods:
+ - `getOrigDelims()` renamed to `getOriginalLength()`
+ - `getNumDelims()` renamed to `getLength()`
+ - `setNumDelims()` renamed to `setLength()`
+ - Made additional classes final:
+ - `DelimiterStack`
+ - `ReferenceMap`
+ - `ReferenceParser`
+ - Moved `ReferenceParser` into the `Reference` sub-namespace
### Removed
- - Removed schema whitelist from autolink regex
- - Moved SmartPunct functionality into new [league/commonmark-extras](https://github.com/thephpleague/commonmark-extras) package
-## [0.12.0] - 2015-11-04
+ - Removed unused `Delimiter` methods:
+ - `setCanOpen()`
+ - `setCanClose()`
+ - `setChar()`
+ - `setIndex()`
+ - `setInlineNode()`
+ - Removed fluent interface from `Delimiter` (setter methods now have no return values)
-### Added
- - Added ability to configure characters and disable emphasis/strong (#135)
- - Added new ConfigurationAwareInterface support for all parsers, processors, and renderers (#201)
- - Added HTML safe mode to handle untrusted input (#200, #201)
- - Safe mode is disabled by default for backwards-compatibility
- - To enable it, set the `safe` option to `true`
- - Added AppVeyor integration for automated unit/functional testing on Windows (#195)
+## [1.0.0-beta2] - 2019-05-27
### Changed
- - `AbstractBlock::finalize()` now requires a second parameter, `$endLineNumber`
- - `RegexHelper::REGEX_ENTITY` no longer includes the starting `/` or the ending `/i` (#194)
- - `Node::setParent()` now accepts null values (#203)
-### Fixed
- - Fixed incorrect `endLine` positions (#187)
- - Fixed `DocParser::preProcessInput` dropping up to 2 ending newlines instead of just one
- - Fixed `EntityParser` not checking for ampersands at the start of the current position (#192, #194)
+ - `DelimiterProcessorInterface::process()` will accept any type of `AbstractStringContainer` now, not just `Text` nodes
+ - The `Delimiter` constructor, `getInlineNode()`, and `setInlineNode()` no longer accept generic `Node` elements - only `AbstractStringContainer`s
-### Removed
- - Removed protected function Context::addChild()
- - It was a duplicate of the Context::addBlock() method
- - Disabled STDIN reading on `bin/commonmark` for Windows due to PHP issues (#189, #195)
-
-## [0.11.3] - 2015-09-25
-### Fixed
- - Reset container after closing containing lists (#183; jgm/commonmark.js#67)
- - The temporary fix from 0.11.2 was reverted
-
-## [0.11.2] - 2015-09-23
-### Fixed
- - Fixed parser checking acceptsLines on the wrong element (#183)
-
-## [0.11.1] - 2015-09-22
-### Changed
- - Tightened up some loose comparisons
-
-### Fixed
- - Fixed missing "bin" directive in composer.json
- - Updated a docblock to match recent changes to method parameters
### Removed
- - Removed unused variable from within QuoteProcessor's closure
-## [0.11.0] - 2015-09-19
-### Added
- - Added new `Node` class, which both `AbstractBlock` and `AbstractInline` extend from (#169)
- - Added a `NodeWalker` and `NodeWalkerEvent` to traverse the AST without using recursion
- - Added new `InlineContainer` interface for blocks
- - Added new `getContainer()` and `getReferenceMap()` methods to `InlineParserContext`
- - Added `iframe` to whitelist of HTML block tags (as per spec)
- - Added `./bin/commonmark` for converting Markdown at the command line
+ - Removed all deprecated functionality:
+ - The `safe` option (use `html_input` and `allow_unsafe_links` options instead)
+ - All deprecated `RegexHelper` constants
+ - `DocParser::getEnvironment()` (you should obtain it some other way)
+ - `AbstractInlineContainer` (use `AbstractInline` instead and make `isContainer()` return `true`)
-### Changed
- - Bumped spec target version to 0.22
- - Revised AST to use a double-linked list (#169)
- - `AbstractBlock` and `AbstractInline` both extend from `Node`
- - Sub-classes must implement new `isContainer()` method
- - Other major changes to `AbstractBlock`:
- - `getParent()` is now `parent()`
- - `setParent()` now expects a `Node` instead of an `AbstractBlock`
- - `getChildren()` is now `children()`
- - `getLastChild()` is now `lastChild()`
- - `addChild()` is now `appendChild()`
- - `InlineParserContext` is constructed using the container `AbstractBlock` and the document's `RefereceMap`
- - The constructor will automatically create the `Cursor` using the container's string contents
- - `InlineParserEngine::parse` now requires the `Node` container and the document's `ReferenceMap` instead of a `ContextInterface` and `Cursor`
- - Changed `Delimiter` to reference the actual inline `Node` instead of the position
- - The `int $pos` protected member and constructor arg is now `Node $node`
- - Use `getInlineNode()` and `setInlineNode()` instead of `getPos()` and `setPos()`
- - Changed `DocParser::processInlines` to use a `NodeWalker` to iterate through inlines
- - Walker passed as second argument instead of `AbstractBlock`
- - Uses a `while` loop instead of recursion to traverse the AST
- - `Image` and `Link` now only accept a string as their second argument
- - Refactored how `CloseBracketParser::parse()` works internally
- - `CloseBracketParser::createInline` no longer accepts label inlines
- - Disallow list item starting with multiple blank lines (see jgm/CommonMark#332)
- - Modified `AbstractBlock::setLastLineBlank()`
- - Functionality moved to `AbstractBlock::shouldLastLineBeBlank()` and new `DocParser::setAndPropagateLastLineBlank()` method
- - `AbstractBlock::setLastLineBlank()` is now a setter method for `AbstractBlock::$lastLineBlank`
- - `AbstractBlock::handleRemainingContents()` is no longer abstract
- - A default implementation is provided
- - Removed duplicate code from sub-classes which used the default implementation - they'll just use the parent method from now on
-
-### Fixed
- - Fixed logic error in calculation of offset (see jgm/commonmark.js@94053a8)
- - Fixed bug where `DocParser` checked the wrong method to determine remainder handling behavior
- - Fixed bug where `HorizontalRuleParser` failed to advance the cursor beyond the parsed horizontal rule characters
- - Fixed `DocParser` not ignoring the final newline of the input (like the reference parser does)
+## [1.0.0-beta1] - 2019-05-26
-### Removed
- - Removed `Block\Element\AbstractInlineContainer`
- - Extend `AbstractBlock` and implement `InlineContainer` instead
- - Use child methods instead of `getInlines` and `setInlines`
- - Removed `AbstractBlock::replaceChild()`
- - Call `Node::replaceWith()` directly the child node instead
- - Removed the `getInlines()` method from `InlineParserContext`
- - Add parsed inlines using `$inlineContext->getContainer()->appendChild()` instead of `$inlineContext->getInlines()->add()`
- - Removed the `ContextInterface` argument from `AbstractInlineParser::parse()` and `InlineParserEngine::parseCharacter`
- - Removed the first `ArrayCollection $inlines` argument from `InlineProcessorInterface::processInlines()`
- - Removed `CloseBracketParser::nullify()`
- - Removed `pre` from rule 6 of HTML blocks (see jgm/CommonMark#355)
-
-## [0.10.0] - 2015-07-25
### Added
- - Added parent references to inline elements (#124)
- - Added smart punctuation extension (#134)
- - Added HTML block types
- - Added indentation caching to the cursor
- - Added automated code style checks (#133)
- - Added support for tag attributes in renderers (#101, #165)
-
-### Changed
- - Bumped spec target version to 0.21
- - Revised HTML block parsing to conform to new spec (jgm/commonmark.js@99bd473)
- - Imposed 9-digit limit on ordered list markers, per spec
- - Allow non-initial hyphens in html tag names (jgm/CommonMark#239)
- - Updated list of block tag names
- - Changed tab/indentation handling to meet the new spec behavior
- - Modified spec tests to show spaces and tabs in test results
- - Replaced `HtmlRendererInterface` with `ElementRendererInterface` (#141)
- - Removed the unnecessary `trim()` and string cast from `ListItemRenderer`
-
-### Fixed
- - Fixed link reference definition edge case (#120)
- - Allow literal (non-escaping) backslashes in link destinations (#118)
- - Allow backslash-escaped backslashes in link labels (#119)
- - Allow link labels up to 999 characters (per the spec)
- - Properly split on whitespace when determining code block class (jgm/commonmark.js#54)
- - Fixed code style issues (#132, #133, #151, #152)
- - Fixed wording for invalid inline exception (#136)
-
-### Removed
- - Removed the advance-by-one optimization due to added cursor complexity
-## [0.9.0] - 2015-06-18
-### Added
- - Added public $data array to block elements (#95)
- - Added `isIndented` helper method to `Cursor`
- - Added a new `Converter` base class which `CommonMarkConverter` extends from (#105)
+ - 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
- - Bumped spec target version to 0.20 (#112)
- - Renamed ListBlock::$data and ListItem::$data to $listData
- - Require link labels to contain non-whitespace (jgm/CommonMark#322)
- - Use U+FFFD for entities resolving to 0 (jgm/CommonMark#323)
- - Moved `IndentedCodeParser::CODE_INDENT_LEVEL` to `Cursor::INDENT_LEVEL`
- - Changed arrays to short syntax (#116)
- - Improved efficiency of DelimiterStack iteration (jgm/commonmark.js#43)
-### Fixed
- - Fixed open block tag followed by newline not being recognized (jgm/CommonMark#324)
- - Fixed indented lists sometimes being parsed incorrectly (jgm/commonmark.js#42)
-
-## [0.8.0] - 2015-04-29
-### Added
- - Allow swapping built-in renderers without using their fully qualified names (#84)
- - Lots of unit tests (for existing code)
- - Ability to include arbitrary functional tests in addition to spec-based tests
-
-### Changed
- - Dropped support for PHP 5.3 (#64 and #76)
- - Bumped spec target version to 0.19
- - Made the AbstractInlineContainer be abstract
- - Moved environment config. logic into separate class
-
-### Fixed
- - Fixed underscore emphasis to conform to spec changes (jgm/CommonMark#317)
-
-### Removed
- - Removed PHP 5.3 workaround (see commit 5747822)
- - Removed unused AbstractWebResource::setUrl() method
- - Removed unnecessary check for hrule when parsing lists (#85)
-
-## [0.7.2] - 2015-03-08
-### Changed
- - Bumped spec target version to 0.18
-
-### Fixed
- - Fixed broken parsing of emphasized text ending with a '0' character (#81)
-
-## [0.7.1] - 2015-03-01
-### Added
- - All references can now be obtained from the `ReferenceMap` via `listReferences()` (#73)
- - Test against PHP 7.0 (nightly) but allow failures
-
-### Changed
- - ListData::$start now defaults to null instead of 0 (#74)
- - Replace references to HtmlRenderer with new HtmlRendererInterface
-
-### Fixed
- - Fixed 0-based ordered lists starting at 1 instead of 0 (#74)
- - Fixed errors parsing multi-byte characters (#78 and #79)
-
-## [0.7.0] - 2015-02-16
-### Added
- - More unit tests to increase code coverage
-
-### Changed
- - Enabled the InlineParserEngine to parse several non-special characters at once (performance boost)
- - NewlineParser no longer attempts to parse spaces; look-behind is used instead (major performance boost)
- - Moved closeUnmatchedBlocks into its own class
- - Image and link elements now extend AbstractInlineContainer; label data is stored via $inlineContents instead
- - Renamed AbstractInlineContainer::$inlineContents and its getter/setter
-
-### Removed
- - Removed the InlineCollection class
- - Removed the unused ArrayCollection::splice() method
- - Removed impossible-to-reach code in Cursor::advanceToFirstNonSpace
- - Removed unnecessary test from the InlineParserEngine
- - Removed unnecessary/unused RegexHelper::getMainRegex() method
-
-## [0.6.1] - 2015-01-25
-### Changed
- - Bumped spec target version to 0.17
- - Updated emphasis parsing for underscores to prevent intra-word emphasis
- - Deferred closing of fenced code blocks
-
-## [0.6.0] - 2015-01-09
-### Added
- - Bulk registration of parsers/renderers via extensions (#45)
- - Proper UTF-8 support, especially in the Cursor; mbstring extension is now required (#49)
- - Environment is now configurable; options can be accessed in its parsers/renderers (#56)
- - Added some unit tests
-
-### Changed
- - Bumped spec target version to 0.15 (#50)
- - Parsers/renderers are now lazy-initialized (#52)
- - Some private elements are now protected for easier extending, especially on Element classes (#53)
- - Renderer option keys changed from camelCase to underscore_case (#56)
- - Moved CommonMark parser/render definitions into CommonMarkCoreExtension
-
-### Fixed
- - Improved parsing of emphasis around punctuation
- - Improved regexes for CDATA and HTML comments
- - Fixed issue with HTML content that is considered false in loose comparisons, like `'0'` (#55)
- - Fixed DocParser trying to add empty strings to closed containers (#58)
- - Fixed incorrect use of a null parameter value in the HtmlElementTest
-
-### Removed
- - Removed unused ReferenceDefinition* classes (#51)
- - Removed UnicodeCaseFolder in favor of mb_strtoupper
+ - 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
-## [0.5.1] - 2014-12-27
### Fixed
- - Fixed infinite loop and link-in-link-in-image parsing (#37)
-### Removed
- - Removed hard dependency on mbstring extension; workaround used if not installed (#38)
-
-## [0.5.0] - 2014-12-24
-### Added
- - Support for custom directives, parsers, and renderers
-
-### Changed
- - Major refactoring to de-couple directives from the parser, support custom directive functionality, and reduce complexity
- - Updated references to stmd.js in README and docblocks
- - Modified CHANGELOG formatting
- - Improved travis configuration
- - Put tests in autoload-dev
-
-### Fixed
- - Fixed CommonMarkConverter re-creating object each time new text is converted (#26)
-
-### Removed
- - Removed HtmlRenderer::render() (use the renderBlock method instead)
- - Removed dependency on symfony/options-resolver (fixes #20)
+ - Fixed null errors when inserting sibling `Node`s 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`)
-## [0.4.0] - 2014-12-15
-### Added
- - Added some missing copyright info
-
-### Changed
- - Changed namespace to League\CommonMark
- - Made compatible with spec version 0.13
- - Moved delimiter stack functionality into separate class
-
-### Fixed
- - Fixed regex which caused HHVM tests to fail
-
-## [0.3.0] - 2014-11-28
-### Added
- - Made renderer options configurable (issue #7)
-
-### Changed
- - Made compatible with spec version 0.12
- - Stack-based parsing now used for emphasis, links and images
- - Protected some of the internal renderer methods which shouldn't have been `public`
- - Minor code clean-up (including PSR-2 compliance)
-
-### Removed
- - Removed unnecessary distinction between ATX and Setext headers
-
-## [0.2.1] - 2014-11-09
-### Added
- - Added simpler string replacement to a method
-
-### Changed
- - Removed "is" prefix from boolean methods
- * Updated to latest version of PHPUnit
- * Target specific spec version
+### Deprecated
-## [0.2.0] - 2014-11-09
-### Changed
- - Mirrored significant changes and improvements from stmd.js
- - Made compatible with spec version 0.10
- - Updated location of JGM's repository
- - Allowed HHVM tests to fail without affecting overall build success
+ - Deprecated `DocParser::getEnvironment()` (you should obtain it some other way)
+ - Deprecated `AbstractInlineContainer` (use `AbstractInline` instead and make `isContainer()` return `true`)
### Removed
- - Removed composer.lock
- - Removed fixed reference to jgm/stmd@0275f34
-## [0.1.2] - 2014-09-28
-### Added
- - Added performance benchmarking tool (issue #2)
- - Added more badges to the README
-
-### Changed
- - Fix JS -> PHP null judgement (issue #4)
- - Updated phpunit dependency
-
-## [0.1.1] - 2014-09-08
-### Added
- - Add anchors to regexes
-
-### Changed
- - Updated target spec (now compatible with jgm/stmd:spec.txt @ 2cf0750)
- - Adjust HTML output for fenced code
- - Adjust block-level tag regex (remove "br", add "iframe")
- - Fix incorrect handling of nested emphasis
-
-## 0.1.0
-### Added
- - Initial commit (compatible with jgm/stmd:spec.txt @ 0275f34)
+ - 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
-[unreleased]: https://github.com/thephpleague/commonmark/compare/0.19.3...HEAD
-[0.19.3]: https://github.com/thephpleague/commonmark/compare/0.19.2...0.19.3
-[0.19.2]: https://github.com/thephpleague/commonmark/compare/0.19.1...0.19.2
-[0.19.1]: https://github.com/thephpleague/commonmark/compare/0.19.0...0.19.1
-[0.19.0]: https://github.com/thephpleague/commonmark/compare/0.18.5...0.19.0
-[0.18.5]: https://github.com/thephpleague/commonmark/compare/0.18.4...0.18.5
-[0.18.4]: https://github.com/thephpleague/commonmark/compare/0.18.3...0.18.4
-[0.18.3]: https://github.com/thephpleague/commonmark/compare/0.18.2...0.18.3
-[0.18.2]: https://github.com/thephpleague/commonmark/compare/0.18.1...0.18.2
-[0.18.1]: https://github.com/thephpleague/commonmark/compare/0.18.0...0.18.1
-[0.18.0]: https://github.com/thephpleague/commonmark/compare/0.17.5...0.18.0
-[0.17.5]: https://github.com/thephpleague/commonmark/compare/0.17.4...0.17.5
-[0.17.4]: https://github.com/thephpleague/commonmark/compare/0.17.3...0.17.4
-[0.17.3]: https://github.com/thephpleague/commonmark/compare/0.17.2...0.17.3
-[0.17.2]: https://github.com/thephpleague/commonmark/compare/0.17.1...0.17.2
-[0.17.1]: https://github.com/thephpleague/commonmark/compare/0.17.0...0.17.1
-[0.17.0]: https://github.com/thephpleague/commonmark/compare/0.16.0...0.17.0
-[0.16.0]: https://github.com/thephpleague/commonmark/compare/0.15.7...0.16.0
-[0.15.7]: https://github.com/thephpleague/commonmark/compare/0.15.6...0.15.7
-[0.15.6]: https://github.com/thephpleague/commonmark/compare/0.15.5...0.15.6
-[0.15.5]: https://github.com/thephpleague/commonmark/compare/0.15.4...0.15.5
-[0.15.4]: https://github.com/thephpleague/commonmark/compare/0.15.3...0.15.4
-[0.15.3]: https://github.com/thephpleague/commonmark/compare/0.15.2...0.15.3
-[0.15.2]: https://github.com/thephpleague/commonmark/compare/0.15.1...0.15.2
-[0.15.1]: https://github.com/thephpleague/commonmark/compare/0.15.0...0.15.1
-[0.15.0]: https://github.com/thephpleague/commonmark/compare/0.14.0...0.15.0
-[0.14.0]: https://github.com/thephpleague/commonmark/compare/0.13.4...0.14.0
-[0.13.4]: https://github.com/thephpleague/commonmark/compare/0.13.3...0.13.4
-[0.13.3]: https://github.com/thephpleague/commonmark/compare/0.13.2...0.13.3
-[0.13.2]: https://github.com/thephpleague/commonmark/compare/0.13.1...0.13.2
-[0.13.1]: https://github.com/thephpleague/commonmark/compare/0.13.0...0.13.1
-[0.13.0]: https://github.com/thephpleague/commonmark/compare/0.12.0...0.13.0
-[0.12.0]: https://github.com/thephpleague/commonmark/compare/0.11.3...0.12.0
-[0.11.3]: https://github.com/thephpleague/commonmark/compare/0.11.2...0.11.3
-[0.11.2]: https://github.com/thephpleague/commonmark/compare/0.11.1...0.11.2
-[0.11.1]: https://github.com/thephpleague/commonmark/compare/0.11.0...0.11.1
-[0.11.0]: https://github.com/thephpleague/commonmark/compare/0.10.0...0.11.0
-[0.10.0]: https://github.com/thephpleague/commonmark/compare/0.9.0...0.10.0
-[0.9.0]: https://github.com/thephpleague/commonmark/compare/0.8.0...0.9.0
-[0.8.0]: https://github.com/thephpleague/commonmark/compare/0.7.2...0.8.0
-[0.7.2]: https://github.com/thephpleague/commonmark/compare/0.7.1...0.7.2
-[0.7.1]: https://github.com/thephpleague/commonmark/compare/0.7.0...0.7.1
-[0.7.0]: https://github.com/thephpleague/commonmark/compare/0.6.1...0.7.0
-[0.6.1]: https://github.com/thephpleague/commonmark/compare/0.6.0...0.6.1
-[0.6.0]: https://github.com/thephpleague/commonmark/compare/0.5.1...0.6.0
-[0.5.1]: https://github.com/thephpleague/commonmark/compare/0.5.0...0.5.1
-[0.5.0]: https://github.com/thephpleague/commonmark/compare/0.4.0...0.5.0
-[0.4.0]: https://github.com/thephpleague/commonmark/compare/0.3.0...0.4.0
-[0.3.0]: https://github.com/thephpleague/commonmark/compare/0.2.1...0.3.0
-[0.2.1]: https://github.com/thephpleague/commonmark/compare/0.2.0...0.2.1
-[0.2.0]: https://github.com/thephpleague/commonmark/compare/0.1.2...0.2.0
-[0.1.2]: https://github.com/thephpleague/commonmark/compare/0.1.1...0.1.2
-[0.1.1]: https://github.com/thephpleague/commonmark/compare/0.1.0...0.1.1
+[unreleased]: https://github.com/thephpleague/commonmark/compare/1.0.0...HEAD
+[1.0.0]: https://github.com/thephpleague/commonmark/compare/1.0.0-rc1...1.0.0
+[1.0.0-rc1]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta4...1.0.0-rc1
+[1.0.0-beta4]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta3...1.0.0-beta4
+[1.0.0-beta3]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta2...1.0.0-beta3
+[1.0.0-beta2]: https://github.com/thephpleague/commonmark/compare/1.0.0-beta1...1.0.0-beta2
+[1.0.0-beta1]: https://github.com/thephpleague/commonmark/compare/0.19.2...1.0.0-beta1