You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The FrontMatter extension expects the document to use linux \n line endings and fails to split frontmatter and markdown when this is not the case. Both YAML and Markdown support all line endings.
How to reproduce
$markdown = newCommonMarkConverter();
$markdown->getEnvironment()->addExtension(newFrontMatterExtension());
$document = "---\r\ntitle: Hello World!\r\n---\r\n# This is some markdown";
$document = $markdown->convert($document);
echo$document->getContent();
Possible solution
finalclass FrontMatterParser implements FrontMatterParserInterface
{
/** @psalm-readonly */privateFrontMatterDataParserInterface$frontMatterParser;
privateconstREGEX_FRONT_MATTER = '/^---\R.*?\R---\R/s';
publicfunction__construct(FrontMatterDataParserInterface$frontMatterParser)
{
$this->frontMatterParser = $frontMatterParser;
}
publicfunctionparse(string$markdownContent): MarkdownInputWithFrontMatter
{
$cursor = newCursor($markdownContent);
// Locate the front matter$frontMatter = $cursor->match(self::REGEX_FRONT_MATTER);
if ($frontMatter === null) {
returnnewMarkdownInputWithFrontMatter($markdownContent);
}
// Trim the last line (ending ---s and newline)$frontMatter = preg_replace('/---\R$/', '', $frontMatter);
// Parse the resulting YAML data$data = $this->frontMatterParser->parse($frontMatter);
// Advance through any remaining newlines which separated the front matter from the Markdown text$trailingNewlines = $cursor->match('/^\R+/');
// Calculate how many lines the Markdown is offset from the front matter by counting the number of newlines// Don't forget to add 1 because we stripped one out when trimming the trailing delims$lineOffset = \preg_match_all('/\R/', $frontMatter . $trailingNewlines) + 1;
returnnewMarkdownInputWithFrontMatter($cursor->getRemainder(), $lineOffset, $data);
}
}
Additional context
No response
Did this project help you today? Did it make you happy in any way?
No response
The text was updated successfully, but these errors were encountered:
SeriousKen
changed the title
FrontMatter extension only supports \n
FrontMatter extension only supports \n line endings
Feb 26, 2022
Version(s) affected
2.2
Description
The FrontMatter extension expects the document to use linux \n line endings and fails to split frontmatter and markdown when this is not the case. Both YAML and Markdown support all line endings.
How to reproduce
Possible solution
Additional context
No response
Did this project help you today? Did it make you happy in any way?
No response
The text was updated successfully, but these errors were encountered: