Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 621 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
# Change Log
2
All notable changes to this project will be documented in this file.
3
Updates should follow the [Keep a CHANGELOG](https://keepachangelog.com/) principles.
4
 
5
**Upgrading from 1.x?** See <https://commonmark.thephpleague.com/2.0/upgrading/> for additional information.
6
 
7
## [Unreleased][unreleased]
8
 
991 lars 9
## [2.4.0] - 2023-03-24
10
 
11
### Added
12
 
13
- Added generic `CommonMarkException` marker interface for all exceptions thrown by the library
14
- Added several new specific exception types implementing that marker interface:
15
    - `AlreadyInitializedException`
16
    - `InvalidArgumentException`
17
    - `IOException`
18
    - `LogicException`
19
    - `MissingDependencyException`
20
    - `NoMatchingRendererException`
21
    - `ParserLogicException`
22
- Added more configuration options to the Heading Permalinks extension (#939):
23
    - `heading_permalink/apply_id_to_heading` - When `true`, the `id` attribute will be applied to the heading element itself instead of the `<a>` tag
24
    - `heading_permalink/heading_class` - class to apply to the heading element
25
    - `heading_permalink/insert` - now accepts `none` to prevent the creation of the `<a>` link
26
- Added new `table/alignment_attributes` configuration option to control how table cell alignment is rendered (#959)
27
 
28
### Changed
29
 
30
- Change several thrown exceptions from `RuntimeException` to `LogicException` (or something extending it), including:
31
    - `CallbackGenerator`s that fail to set a URL or return an expected value
32
    - `MarkdownParser` when deactivating the last block parser or attempting to get an active block parser when they've all been closed
33
    - Adding items to an already-initialized `Environment`
34
    - Rendering a `Node` when no renderer has been registered for it
35
- `HeadingPermalinkProcessor` now throws `InvalidConfigurationException` instead of `RuntimeException` when invalid config values are given.
36
- `HtmlElement::setAttribute()` no longer requires the second parameter for boolean attributes
37
- Several small micro-optimizations
38
- Changed Strikethrough to only allow 1 or 2 tildes per the updated GFM spec
39
 
40
### Fixed
41
 
42
- Fixed inaccurate `@throws` docblocks throughout the codebase, including `ConverterInterface`, `MarkdownConverter`, and `MarkdownConverterInterface`.
43
    - These previously suggested that only `\RuntimeException`s were thrown, which was inaccurate as `\LogicException`s were also possible.
44
 
621 lars 45
## [2.3.9] - 2023-02-15
46
 
47
### Fixed
48
 
49
- Fixed autolink extension not detecting some URIs with underscores (#956)
50
 
148 lars 51
## [2.3.8] - 2022-12-10
52
 
53
### Fixed
54
 
55
- Fixed parsing issues when `mb_internal_encoding()` is set to something other than `UTF-8` (#951)
56
 
57
## [2.3.7] - 2022-11-03
58
 
59
### Fixed
60
 
61
- Fixed `TaskListItemMarkerRenderer` not including HTML attributes set on the node by other extensions (#947)
62
 
63
## [2.3.6] - 2022-10-30
64
 
65
### Fixed
66
 
67
- Fixed unquoted attribute parsing when closing curly brace is followed by certain characters (like a `.`) (#943)
68
 
69
## [2.3.5] - 2022-07-29
70
 
71
### Fixed
72
 
73
- Fixed error using `InlineParserEngine` when no inline parsers are registered in the `Environment` (#908)
74
 
75
## [2.3.4] - 2022-07-17
76
 
77
### Changed
78
 
79
- Made a number of small tweaks to the embed extension's parsing behavior to fix #898:
80
    - Changed `EmbedStartParser` to always capture embed-like lines in container blocks, regardless of parent block type
81
    - Changed `EmbedProcessor` to also remove `Embed` blocks that aren't direct children of the `Document`
82
    - Increased the priority of `EmbedProcessor` to `1010`
83
 
84
### Fixed
85
 
86
- Fixed `EmbedExtension` not parsing embeds following a list block (#898)
87
 
88
## [2.3.3] - 2022-06-07
89
 
90
### Fixed
91
 
92
- Fixed `DomainFilteringAdapter` not reindexing the embed list (#884, #885)
93
 
94
## [2.3.2] - 2022-06-03
95
 
96
### Fixed
97
 
98
- Fixed FootnoteExtension stripping extra characters from tab-indented footnotes (#881)
99
 
100
## [2.2.5] - 2022-06-03
101
 
102
### Fixed
103
 
104
- Fixed FootnoteExtension stripping extra characters from tab-indented footnotes (#881)
105
 
106
## [2.3.1] - 2022-05-14
107
 
108
### Fixed
109
 
110
- Fixed AutolinkExtension not ignoring trailing strikethrough syntax (#867)
111
 
112
## [2.2.4] - 2022-05-14
113
 
114
### Fixed
115
 
116
- Fixed AutolinkExtension not ignoring trailing strikethrough syntax (#867)
117
 
118
## [2.3.0] - 2022-04-07
119
 
120
### Added
121
 
122
- Added new `EmbedExtension` (#805)
123
- Added `DocumentRendererInterface` as a replacement for the now-deprecated `MarkdownRendererInterface`
124
 
125
### Deprecated
126
 
127
- Deprecated `MarkdownRendererInterface`; use `DocumentRendererInterface` instead
128
 
129
## [2.2.3] - 2022-02-26
130
 
131
### Fixed
132
 
133
- Fixed front matter parsing with Windows line endings (#821)
134
 
135
## [2.1.3] - 2022-02-26
136
 
137
### Fixed
138
 
139
- Fixed front matter parsing with Windows line endings (#821)
140
 
141
## [2.0.4] - 2022-02-26
142
 
143
### Fixed
144
 
145
- Fixed front matter parsing with Windows line endings (#821)
146
 
147
## [2.2.2] - 2022-02-13
148
 
149
### Fixed
150
 
151
- Fixed double-escaping of image alt text (#806, #810)
152
- Fixed Psalm typehints for event class names
153
 
154
## [2.2.1] - 2022-01-25
155
 
156
### Fixed
157
 
158
 - Fixed `symfony/deprecation-contracts` constraint
159
 
160
### Removed
161
 
162
 - Removed deprecation trigger from `MarkdownConverterInterface` to reduce noise
163
 
164
## [2.2.0] - 2022-01-22
165
 
166
### Added
167
 
168
 - Added new `ConverterInterface`
169
 - Added new `MarkdownToXmlConverter` class
170
 - Added new `HtmlDecorator` class which can wrap existing renderers with additional HTML tags
171
 - Added new `table/wrap` config to apply an optional wrapping/container element around a table (#780)
172
 
173
### Changed
174
 
175
 - `HtmlElement` contents can now consist of any `Stringable`, not just `HtmlElement` and `string`
176
 
177
### Deprecated
178
 
179
 - Deprecated `MarkdownConverterInterface` and its `convertToHtml()` method; use `ConverterInterface` and `convert()` instead
180
 
181
## [2.1.2] - 2022-02-13
182
 
183
### Fixed
184
 
185
- Fixed double-escaping of image alt text (#806, #810)
186
- Fixed Psalm typehints for event class names
187
 
188
## [2.1.1] - 2022-01-02
189
 
190
### Added
191
 
192
 - Added missing return type to `Environment::dispatch()` to fix deprecation warning (#778)
193
 
194
## [2.1.0] - 2021-12-05
195
 
196
### Added
197
 
198
- Added support for ext-yaml in FrontMatterExtension (#715)
199
- Added support for symfony/yaml v6.0 in FrontMatterExtension (#739)
200
- Added new `heading_permalink/aria_hidden` config option (#741)
201
 
202
### Fixed
203
 
204
 - Fixed PHP 8.1 deprecation warning (#759, #762)
205
 
206
## [2.0.3] - 2022-02-13
207
 
208
### Fixed
209
 
210
- Fixed double-escaping of image alt text (#806, #810)
211
- Fixed Psalm typehints for event class names
212
 
213
## [2.0.2] - 2021-08-14
214
 
215
### Changed
216
 
217
- Bumped minimum version of league/config to support PHP 8.1
218
 
219
### Fixed
220
 
221
- Fixed ability to register block parsers that identify lines starting with letters (#706)
222
 
223
## [2.0.1] - 2021-07-31
224
 
225
### Fixed
226
 
227
- Fixed nested autolinks (#689)
228
- Fixed description lists being parsed incorrectly (#692)
229
- Fixed Table of Contents not respecting Heading Permalink prefixes (#690)
230
 
231
## [2.0.0] - 2021-07-24
232
 
233
No changes were introduced since the previous RC2 release.
234
See all entries below for a list of changes between 1.x and 2.0.
235
 
236
## [2.0.0-rc2] - 2021-07-17
237
 
238
### Fixed
239
 
240
- Fixed Mentions inside of links creating nested links against the spec's rules (#688)
241
 
242
## [2.0.0-rc1] - 2021-07-10
243
 
244
No changes were introduced since the previous release.
245
 
246
## [2.0.0-beta3] - 2021-07-03
247
 
248
### Changed
249
 
250
 - Any leading UTF-8 BOM will be stripped from the input
251
 - The `getEnvironment()` method of `CommonMarkConverter` and `GithubFlavoredMarkdownConverter` will always return the concrete, configurable `Environment` for upgrading convenience
252
 - Optimized AST iteration
253
 - Lots of small micro-optimizations
254
 
255
## [2.0.0-beta2] - 2021-06-27
256
 
257
### Added
258
 
259
- Added new `Node::iterator()` method and `NodeIterator` class for faster AST iteration (#683, #684)
260
 
261
### Changed
262
 
263
- Made compatible with CommonMark spec 0.30.0
264
- Optimized link label parsing
265
- Optimized AST iteration for a 50% performance boost in some event listeners (#683, #684)
266
 
267
### Fixed
268
 
269
- Fixed processing instructions with EOLs
270
- Fixed case-insensitive matching for HTML tag types
271
- Fixed type 7 HTML blocks incorrectly interrupting lazy paragraphs
272
- Fixed newlines in reference labels not collapsing into spaces
273
- Fixed link label normalization with escaped newlines
274
- Fixed unnecessary AST iteration when no default attributes are configured
275
 
276
## [2.0.0-beta1] - 2021-06-20
277
 
278
### Added
279
 
280
 - **Added three new extensions:**
281
   - `FrontMatterExtension` ([see documentation](https://commonmark.thephpleague.com/extensions/front-matter/))
282
   - `DescriptionListExtension` ([see documentation](https://commonmark.thephpleague.com/extensions/description-lists/))
283
   - `DefaultAttributesExtension` ([see documentation](https://commonmark.thephpleague.com/extensions/default-attributes/))
284
 - **Added new `XmlRenderer` to simplify AST debugging** ([see documentation](https://commonmark.thephpleague.com/xml/)) (#431)
285
 - **Added the ability to configure disallowed raw HTML tags** (#507)
286
 - **Added the ability for Mentions to use multiple characters for their symbol** (#514, #550)
287
 - **Added the ability to delegate event dispatching to PSR-14 compliant event dispatcher libraries**
288
 - **Added new configuration options:**
289
   - Added `heading_permalink/min_heading_level` and `heading_permalink/max_heading_level` options to control which headings get permalinks (#519)
290
   - Added `heading_permalink/fragment_prefix` to allow customizing the URL fragment prefix (#602)
291
   - Added `footnote/backref_symbol` option for customizing backreference link appearance (#522)
292
   - Added `slug_normalizer/max_length` option to control the maximum length of generated URL slugs
293
   - Added `slug_normalizer/unique` option to control whether unique slugs should be generated per-document or per-environment
294
 - **Added purity markers throughout the codebase** (verified with Psalm)
295
 - Added `Query` class to simplify Node traversal when looking to take action on certain Nodes
296
 - Added new `HtmlFilter` and `StringContainerHelper` utility classes
297
 - Added new `AbstractBlockContinueParser` class to simplify the creation of custom block parsers
298
 - Added several new classes and interfaces:
299
   - `BlockContinue`
300
   - `BlockContinueParserInterface`
301
   - `BlockContinueParserWithInlinesInterface`
302
   - `BlockStart`
303
   - `BlockStartParserInterface`
304
   - `ChildNodeRendererInterface`
305
   - `ConfigurableExtensionInterface`
306
   - `CursorState`
307
   - `DashParser` (extracted from `PunctuationParser`)
308
   - `DelimiterParser`
309
   - `DocumentBlockParser`
310
   - `DocumentPreRenderEvent`
311
   - `DocumentRenderedEvent`
312
   - `EllipsesParser` (extracted from `PunctuationParser`)
313
   - `ExpressionInterface`
314
   - `FallbackNodeXmlRenderer`
315
   - `InlineParserEngineInterface`
316
   - `InlineParserMatch`
317
   - `MarkdownParserState`
318
   - `MarkdownParserStateInterface`
319
   - `MarkdownRendererInterface`
320
   - `Query`
321
   - `RawMarkupContainerInterface`
322
   - `ReferenceableInterface`
323
   - `RenderedContent`
324
   - `RenderedContentInterface`
325
   - `ReplaceUnpairedQuotesListener`
326
   - `SpecReader`
327
   - `TableOfContentsRenderer`
328
   - `UniqueSlugNormalizer`
329
   - `UniqueSlugNormalizerInterface`
330
   - `XmlRenderer`
331
   - `XmlNodeRendererInterface`
332
 - Added several new methods:
333
   - `Cursor::getCurrentCharacter()`
334
   - `Environment::createDefaultConfiguration()`
335
   - `Environment::setEventDispatcher()`
336
   - `EnvironmentInterface::getExtensions()`
337
   - `EnvironmentInterface::getInlineParsers()`
338
   - `EnvironmentInterface::getSlugNormalizer()`
339
   - `FencedCode::setInfo()`
340
   - `Heading::setLevel()`
341
   - `HtmlRenderer::renderDocument()`
342
   - `InlineParserContext::getFullMatch()`
343
   - `InlineParserContext::getFullMatchLength()`
344
   - `InlineParserContext::getMatches()`
345
   - `InlineParserContext::getSubMatches()`
346
   - `LinkParserHelper::parsePartialLinkLabel()`
347
   - `LinkParserHelper::parsePartialLinkTitle()`
348
   - `Node::assertInstanceOf()`
349
   - `RegexHelper::isLetter()`
350
   - `StringContainerInterface::setLiteral()`
351
   - `TableCell::getType()`
352
   - `TableCell::setType()`
353
   - `TableCell::getAlign()`
354
   - `TableCell::setAlign()`
355
 
356
### Changed
357
 
358
 - **Changed the converter return type**
359
   - `CommonMarkConverter::convertToHtml()` now returns an instance of `RenderedContentInterface`. This can be cast to a string for backward compatibility with 1.x.
360
 - **Table of Contents items are no longer wrapped with `<p>` tags** (#613)
361
 - **Heading Permalinks now link to element IDs instead of using `name` attributes** (#602)
362
 - **Heading Permalink IDs and URL fragments now have a `content` prefix by default** (#602)
363
 - **Changes to configuration options:**
364
     - `enable_em` has been renamed to `commonmark/enable_em`
365
     - `enable_strong` has been renamed to `commonmark/enable_strong`
366
     - `use_asterisk` has been renamed to `commonmark/use_asterisk`
367
     - `use_underscore` has been renamed to `commonmark/use_underscore`
368
     - `unordered_list_markers` has been renamed to `commonmark/unordered_list_markers`
369
     - `mentions/*/symbol` has been renamed to `mentions/*/prefix`
370
     - `mentions/*/regex` has been renamed to `mentions/*/pattern` and requires partial regular expressions (without delimiters or flags)
371
     - `max_nesting_level` now defaults to `PHP_INT_MAX` and no longer supports floats
372
     - `heading_permalink/slug_normalizer` has been renamed to `slug_normalizer/instance`
373
 - **Event dispatching is now fully PSR-14 compliant**
374
 - **Moved and renamed several classes** - [see the full list here](https://commonmark.thephpleague.com/2.0/upgrading/#classesnamespaces-renamed)
375
 - The `HeadingPermalinkExtension` and `FootnoteExtension` were modified to ensure they never produce a slug which conflicts with slugs created by the other extension
376
 - `SlugNormalizer::normalizer()` now supports optional prefixes and max length options passed in via the `$context` argument
377
 - The `AbstractBlock::$data` and `AbstractInline::$data` arrays were replaced with a `Data` array-like object on the base `Node` class
378
 - **Implemented a new approach to block parsing.** This was a massive change, so here are the highlights:
379
   - Functionality previously found in block parsers and node elements has moved to block parser factories and block parsers, respectively ([more details](https://commonmark.thephpleague.com/2.0/upgrading/#new-block-parsing-approach))
380
   - `ConfigurableEnvironmentInterface::addBlockParser()` is now `EnvironmentBuilderInterface::addBlockParserFactory()`
381
   - `ReferenceParser` was re-implemented and works completely different than before
382
   - The paragraph parser no longer needs to be added manually to the environment
383
 - **Implemented a new approach to inline parsing** where parsers can now specify longer strings or regular expressions they want to parse (instead of just single characters):
384
   - `InlineParserInterface::getCharacters()` is now `getMatchDefinition()` and returns an instance of `InlineParserMatch`
385
   - `InlineParserContext::__construct()` now requires the contents to be provided as a `Cursor` instead of a `string`
386
 - **Implemented delimiter parsing as a special type of inline parser** (via the new `DelimiterParser` class)
387
 - **Changed block and inline rendering to use common methods and interfaces**
388
   - `BlockRendererInterface` and `InlineRendererInterface` were replaced by `NodeRendererInterface` with slightly different parameters. All core renderers now implement this interface.
389
   - `ConfigurableEnvironmentInterface::addBlockRenderer()` and `addInlineRenderer()` were combined into `EnvironmentBuilderInterface::addRenderer()`
390
   - `EnvironmentInterface::getBlockRenderersForClass()` and `getInlineRenderersForClass()` are now just `getRenderersForClass()`
391
 - **Completely refactored the Configuration implementation**
392
   - All configuration-specific classes have been moved into a new `league/config` package with a new namespace
393
   - `Configuration` objects must now be configured with a schema and all options must match that schema - arbitrary keys are no longer permitted
394
   - `Configuration::__construct()` no longer accepts the default configuration values - use `Configuration::merge()` instead
395
   - `ConfigurationInterface` now only contains a `get(string $key)`; this method no longer allows arbitrary default values to be returned if the option is missing
396
   - `ConfigurableEnvironmentInterface` was renamed to `EnvironmentBuilderInterface`
397
   - `ExtensionInterface::register()` now requires an `EnvironmentBuilderInterface` param instead of `ConfigurableEnvironmentInterface`
398
 - **Added missing return types to virtually every class and interface method**
399
 - Re-implemented the GFM Autolink extension using the new inline parser approach instead of document processors
400
   - `EmailAutolinkProcessor` is now `EmailAutolinkParser`
401
   - `UrlAutolinkProcessor` is now `UrlAutolinkParser`
402
 - `HtmlElement` can now properly handle array (i.e. `class`) and boolean (i.e. `checked`) attribute values
403
 - `HtmlElement` automatically flattens any attributes with array values into space-separated strings, removing duplicate entries
404
 - Combined separate classes/interfaces into one:
405
   - `DisallowedRawHtmlRenderer` replaces `DisallowedRawHtmlBlockRenderer` and `DisallowedRawHtmlInlineRenderer`
406
   - `NodeRendererInterface` replaces `BlockRendererInterface` and `InlineRendererInterface`
407
 - Renamed the following methods:
408
   - `Environment` and `ConfigurableEnvironmentInterface`:
409
     - `addBlockParser()` is now `addBlockStartParser()`
410
   - `ReferenceMap` and `ReferenceMapInterface`:
411
     - `addReference()` is now `add()`
412
     - `getReference()` is now `get()`
413
     - `listReferences()` is now `getIterator()`
414
   - Various node (block/inline) classes:
415
     - `getContent()` is now `getLiteral()`
416
     - `setContent()` is now `setLiteral()`
417
 - Moved and renamed the following constants:
418
   - `EnvironmentInterface::HTML_INPUT_ALLOW` is now `HtmlFilter::ALLOW`
419
   - `EnvironmentInterface::HTML_INPUT_ESCAPE` is now `HtmlFilter::ESCAPE`
420
   - `EnvironmentInterface::HTML_INPUT_STRIP` is now `HtmlFilter::STRIP`
421
   - `TableCell::TYPE_HEAD` is now `TableCell::TYPE_HEADER`
422
   - `TableCell::TYPE_BODY` is now `TableCell::TYPE_DATA`
423
 - Changed the visibility of the following properties:
424
   - `AttributesInline::$attributes` is now `private`
425
   - `AttributesInline::$block` is now `private`
426
   - `TableCell::$align` is now `private`
427
   - `TableCell::$type` is now `private`
428
   - `TableSection::$type` is now `private`
429
 - Several methods which previously returned `$this` now return `void`
430
   - `Delimiter::setPrevious()`
431
   - `Node::replaceChildren()`
432
   - `Context::setTip()`
433
   - `Context::setContainer()`
434
   - `Context::setBlocksParsed()`
435
   - `AbstractStringContainer::setContent()`
436
   - `AbstractWebResource::setUrl()`
437
 - Several classes are now marked `final`:
438
   - `ArrayCollection`
439
   - `Emphasis`
440
   - `FencedCode`
441
   - `Heading`
442
   - `HtmlBlock`
443
   - `HtmlElement`
444
   - `HtmlInline`
445
   - `IndentedCode`
446
   - `Newline`
447
   - `Strikethrough`
448
   - `Strong`
449
   - `Text`
450
 - `Heading` nodes no longer directly contain a copy of their inner text
451
 - `StringContainerInterface` can now be used for inlines, not just blocks
452
 - `ArrayCollection` only supports integer keys
453
 - `HtmlElement` now implements `Stringable`
454
 - `Cursor::saveState()` and `Cursor::restoreState()` now use `CursorState` objects instead of arrays
455
 - `NodeWalker::next()` now enters, traverses any children, and leaves all elements which may have children (basically all blocks plus any inlines with children). Previously, it only did this for elements explicitly marked as "containers".
456
 - `InvalidOptionException` was removed
457
 - Anything with a `getReference(): ReferenceInterface` method now implements `ReferencableInterface`
458
 - The `SmartPunct` extension now replaces all unpaired `Quote` elements with `Text` elements towards the end of parsing, making the `QuoteRenderer` unnecessary
459
 - Several changes made to the Footnote extension:
460
   - Footnote identifiers can no longer contain spaces
461
   - Anonymous footnotes can now span subsequent lines
462
   - Footnotes can now contain multiple lines of content, including sub-blocks, by indenting them
463
   - Footnote event listeners now have numbered priorities (but still execute in the same order)
464
   - Footnotes must now be separated from previous content by a blank line
465
 - The line numbers (keys) returned via `MarkdownInput::getLines()` now start at 1 instead of 0
466
 - `DelimiterProcessorCollectionInterface` now extends `Countable`
467
 - `RegexHelper::PARTIAL_` constants must always be used in case-insensitive contexts
468
 - `HeadingPermalinkProcessor` no longer accepts text normalizers via the constructor - these must be provided via configuration instead
469
 - Blocks which can't contain inlines will no longer be asked to render inlines
470
 - `AnonymousFootnoteRefParser` and `HeadingPermalinkProcessor` now implement `EnvironmentAwareInterface` instead of `ConfigurationAwareInterface`
471
 - The second argument to `TextNormalizerInterface::normalize()` must now be an array
472
 - The `title` attribute for `Link` and `Image` nodes is now stored using a dedicated property instead of stashing it in `$data`
473
 - `ListData::$delimiter` now returns either `ListBlock::DELIM_PERIOD` or `ListBlock::DELIM_PAREN` instead of the literal delimiter
474
 
475
### Fixed
476
 
477
 - **Fixed parsing of footnotes without content**
478
 - **Fixed rendering of orphaned footnotes and footnote refs**
479
 - **Fixed some URL autolinks breaking too early** (#492)
480
 - Fixed `AbstractStringContainer` not actually being `abstract`
481
 
482
### Removed
483
 
484
 - **Removed support for PHP 7.1, 7.2, and 7.3** (#625, #671)
485
 - **Removed all previously-deprecated functionality:**
486
   - Removed the ability to pass custom `Environment` instances into the `CommonMarkConverter` and `GithubFlavoredMarkdownConverter` constructors
487
   - Removed the `Converter` class and `ConverterInterface`
488
   - Removed the `bin/commonmark` script
489
   - Removed the `Html5Entities` utility class
490
   - Removed the `InlineMentionParser` (use `MentionParser` instead)
491
   - Removed `DefaultSlugGenerator` and `SlugGeneratorInterface` from the `Extension/HeadingPermalink/Slug` sub-namespace (use the new ones under `./SlugGenerator` instead)
492
   - Removed the following `ArrayCollection` methods:
493
     - `add()`
494
     - `set()`
495
     - `get()`
496
     - `remove()`
497
     - `isEmpty()`
498
     - `contains()`
499
     - `indexOf()`
500
     - `containsKey()`
501
     - `replaceWith()`
502
     - `removeGaps()`
503
   - Removed the `ConfigurableEnvironmentInterface::setConfig()` method
504
   - Removed the `ListBlock::TYPE_UNORDERED` constant
505
   - Removed the `CommonMarkConverter::VERSION` constant
506
   - Removed the `HeadingPermalinkRenderer::DEFAULT_INNER_CONTENTS` constant
507
   - Removed the `heading_permalink/inner_contents` configuration option
508
 - **Removed now-unused classes:**
509
   - `AbstractStringContainerBlock`
510
   - `BlockRendererInterface`
511
   - `Context`
512
   - `ContextInterface`
513
   - `Converter`
514
   - `ConverterInterface`
515
   - `InlineRendererInterface`
516
   - `PunctuationParser` (was split into two classes: `DashParser` and `EllipsesParser`)
517
   - `QuoteRenderer`
518
   - `UnmatchedBlockCloser`
519
 - Removed the following methods, properties, and constants:
520
   - `AbstractBlock::$open`
521
   - `AbstractBlock::$lastLineBlank`
522
   - `AbstractBlock::isContainer()`
523
   - `AbstractBlock::canContain()`
524
   - `AbstractBlock::isCode()`
525
   - `AbstractBlock::matchesNextLine()`
526
   - `AbstractBlock::endsWithBlankLine()`
527
   - `AbstractBlock::setLastLineBlank()`
528
   - `AbstractBlock::shouldLastLineBeBlank()`
529
   - `AbstractBlock::isOpen()`
530
   - `AbstractBlock::finalize()`
531
   - `AbstractBlock::getData()`
532
   - `AbstractInline::getData()`
533
   - `ConfigurableEnvironmentInterface::addBlockParser()`
534
   - `ConfigurableEnvironmentInterface::mergeConfig()`
535
   - `Delimiter::setCanClose()`
536
   - `EnvironmentInterface::getConfig()`
537
   - `EnvironmentInterface::getInlineParsersForCharacter()`
538
   - `EnvironmentInterface::getInlineParserCharacterRegex()`
539
   - `HtmlRenderer::renderBlock()`
540
   - `HtmlRenderer::renderBlocks()`
541
   - `HtmlRenderer::renderInline()`
542
   - `HtmlRenderer::renderInlines()`
543
   - `Node::isContainer()`
544
   - `RegexHelper::matchAll()` (use the new `matchFirst()` method instead)
545
   - `RegexHelper::REGEX_WHITESPACE`
546
 - Removed the second `$contents` argument from the `Heading` constructor
547
 
548
### Deprecated
549
 
550
**The following things have been deprecated and will not be supported in v3.0:**
551
 
552
 - `Environment::mergeConfig()` (set configuration before instantiation instead)
553
 - `Environment::createCommonMarkEnvironment()` and `Environment::createGFMEnvironment()`
554
    - Alternative 1: Use `CommonMarkConverter` or `GithubFlavoredMarkdownConverter` if you don't need to customize the environment
555
    - Alternative 2: Instantiate a new `Environment` and add the necessary extensions yourself
556
 
991 lars 557
[unreleased]: https://github.com/thephpleague/commonmark/compare/2.4.0...main
558
[2.4.0]: https://github.com/thephpleague/commonmark/compare/2.3.9...2.4.0
621 lars 559
[2.3.9]: https://github.com/thephpleague/commonmark/compare/2.3.8...2.3.9
148 lars 560
[2.3.8]: https://github.com/thephpleague/commonmark/compare/2.3.7...2.3.8
561
[2.3.7]: https://github.com/thephpleague/commonmark/compare/2.3.6...2.3.7
562
[2.3.6]: https://github.com/thephpleague/commonmark/compare/2.3.5...2.3.6
563
[2.3.5]: https://github.com/thephpleague/commonmark/compare/2.3.4...2.3.5
564
[2.3.4]: https://github.com/thephpleague/commonmark/compare/2.3.3...2.3.4
565
[2.3.3]: https://github.com/thephpleague/commonmark/compare/2.3.2...2.3.3
566
[2.3.2]: https://github.com/thephpleague/commonmark/compare/2.3.2...main
567
[2.3.1]: https://github.com/thephpleague/commonmark/compare/2.3.0...2.3.1
568
[2.3.0]: https://github.com/thephpleague/commonmark/compare/2.2.3...2.3.0
569
[2.2.5]: https://github.com/thephpleague/commonmark/compare/2.2.4...2.2.5
570
[2.2.4]: https://github.com/thephpleague/commonmark/compare/2.2.3...2.2.4
571
[2.2.3]: https://github.com/thephpleague/commonmark/compare/2.2.2...2.2.3
572
[2.2.2]: https://github.com/thephpleague/commonmark/compare/2.2.1...2.2.2
573
[2.2.1]: https://github.com/thephpleague/commonmark/compare/2.2.0...2.2.1
574
[2.2.0]: https://github.com/thephpleague/commonmark/compare/2.1.1...2.2.0
575
[2.1.3]: https://github.com/thephpleague/commonmark/compare/2.1.2...2.1.3
576
[2.1.2]: https://github.com/thephpleague/commonmark/compare/2.1.1...2.1.2
577
[2.1.1]: https://github.com/thephpleague/commonmark/compare/2.0.2...2.1.1
578
[2.1.0]: https://github.com/thephpleague/commonmark/compare/2.0.2...2.1.0
579
[2.0.4]: https://github.com/thephpleague/commonmark/compare/2.0.3...2.0.4
580
[2.0.3]: https://github.com/thephpleague/commonmark/compare/2.0.2...2.0.3
581
[2.0.2]: https://github.com/thephpleague/commonmark/compare/2.0.1...2.0.2
582
[2.0.1]: https://github.com/thephpleague/commonmark/compare/2.0.0...2.0.1
583
[2.0.0]: https://github.com/thephpleague/commonmark/compare/2.0.0-rc2...2.0.0
584
[2.0.0-rc2]: https://github.com/thephpleague/commonmark/compare/2.0.0-rc1...2.0.0-rc2
585
[2.0.0-rc1]: https://github.com/thephpleague/commonmark/compare/2.0.0-beta3...2.0.0-rc1
586
[2.0.0-beta3]: https://github.com/thephpleague/commonmark/compare/2.0.0-beta2...2.0.0-beta3
587
[2.0.0-beta2]: https://github.com/thephpleague/commonmark/compare/2.0.0-beta1...2.0.0-beta2
588
[2.0.0-beta1]: https://github.com/thephpleague/commonmark/compare/1.6...2.0.0-beta1