From b3535481ff793aaa4b4bd86c321c766c267d1a2d Mon Sep 17 00:00:00 2001 From: "Alexander A. Klimov" Date: Wed, 13 Dec 2017 13:27:15 +0100 Subject: [PATCH] Don't interpret shell comments inside fenced code blocks as MD headers refs #3200 --- modules/doc/library/Doc/DocParser.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/modules/doc/library/Doc/DocParser.php b/modules/doc/library/Doc/DocParser.php index cdaaff81a..67a171fee 100644 --- a/modules/doc/library/Doc/DocParser.php +++ b/modules/doc/library/Doc/DocParser.php @@ -161,10 +161,19 @@ class DocParser $lastLine = null; $stack = new SplStack(); $cachingIterator = new CachingIterator($file, CachingIterator::TOSTRING_USE_CURRENT); + $insideFencedCodeBlock = false; + for ($cachingIterator->rewind(); $line = $cachingIterator->valid(); $cachingIterator->next()) { $fileIterator = $cachingIterator->getInnerIterator(); $line = $cachingIterator->current(); - $header = $this->extractHeader($line, $fileIterator->valid() ? $fileIterator->current() : null); + $header = null; + + if (substr($line, 0, 3) === '```') { + $insideFencedCodeBlock = ! $insideFencedCodeBlock; + } elseif (! $insideFencedCodeBlock) { + $header = $this->extractHeader($line, $fileIterator->valid() ? $fileIterator->current() : null); + } + if ($header !== null) { list($title, $id, $level, $headerStyle) = $header; while (! $stack->isEmpty() && $stack->top()->getLevel() >= $level) {