diff options
Diffstat (limited to 'vendor/league')
-rw-r--r-- | vendor/league/html-to-markdown/CHANGELOG.md | 9 | ||||
-rw-r--r-- | vendor/league/html-to-markdown/src/HtmlConverter.php | 32 |
2 files changed, 40 insertions, 1 deletions
diff --git a/vendor/league/html-to-markdown/CHANGELOG.md b/vendor/league/html-to-markdown/CHANGELOG.md index 36fb1249e..03c3f6f5c 100644 --- a/vendor/league/html-to-markdown/CHANGELOG.md +++ b/vendor/league/html-to-markdown/CHANGELOG.md @@ -4,6 +4,12 @@ Updates should follow the [Keep a CHANGELOG](http://keepachangelog.com/) princip ## [Unreleased][unreleased] +## [5.0.2] - 2021-11-06 + +### Fixed + + - Fixed missplaced comment nodes appearing at the start of the HTML input (#212) + ## [5.0.1] - 2021-09-17 ### Fixed @@ -299,7 +305,8 @@ not ideally set, so this releases fixes that. Moving forwards this should reduce ### Added - Initial release -[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/5.0.1...master +[unreleased]: https://github.com/thephpleague/html-to-markdown/compare/5.0.2...master +[5.0.2]: https://github.com/thephpleague/html-to-markdown/compare/5.0.1...5.0.2 [5.0.1]: https://github.com/thephpleague/html-to-markdown/compare/5.0.0...5.0.1 [5.0.0]: https://github.com/thephpleague/html-to-markdown/compare/4.10.0...5.0.0 [4.10.0]: https://github.com/thephpleague/html-to-markdown/compare/4.9.1...4.10.0 diff --git a/vendor/league/html-to-markdown/src/HtmlConverter.php b/vendor/league/html-to-markdown/src/HtmlConverter.php index 7cd543b34..7162b256d 100644 --- a/vendor/league/html-to-markdown/src/HtmlConverter.php +++ b/vendor/league/html-to-markdown/src/HtmlConverter.php @@ -121,6 +121,8 @@ class HtmlConverter implements HtmlConverterInterface $document->loadHTML('<?xml encoding="UTF-8">' . $html); $document->encoding = 'UTF-8'; + $this->replaceMisplacedComments($document); + if ($this->getConfig()->getOption('suppress_errors')) { \libxml_clear_errors(); } @@ -129,6 +131,36 @@ class HtmlConverter implements HtmlConverterInterface } /** + * Finds any comment nodes outside <html> element and moves them into <body>. + * + * @see https://github.com/thephpleague/html-to-markdown/issues/212 + * @see https://3v4l.org/7bC33 + */ + private function replaceMisplacedComments(\DOMDocument $document): void + { + // Find ny comment nodes at the root of the document. + $misplacedComments = (new \DOMXPath($document))->query('/comment()'); + if ($misplacedComments === false) { + return; + } + + $body = $document->getElementsByTagName('body')->item(0); + if ($body === null) { + return; + } + + // Loop over comment nodes in reverse so we put them inside <body> in + // their original order. + for ($index = $misplacedComments->length - 1; $index >= 0; $index--) { + if ($body->firstChild === null) { + $body->insertBefore($misplacedComments[$index]); + } else { + $body->insertBefore($misplacedComments[$index], $body->firstChild); + } + } + } + + /** * Convert Children * * Recursive function to drill into the DOM and convert each node into Markdown from the inside out. |