1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 22:27:35 +00:00

LibMarkdown: Support up to 3 spaces before an ATX header

This commit is contained in:
Peter Elliott 2022-04-24 23:07:59 -06:00 committed by Andreas Kling
parent 116e0dc4de
commit 4d3454d700

View file

@ -50,17 +50,28 @@ OwnPtr<Heading> Heading::parse(LineIterator& lines)
return {};
StringView line = *lines;
size_t indent = 0;
// Allow for up to 3 spaces of indentation.
// https://spec.commonmark.org/0.30/#example-68
for (size_t i = 0; i < 3; ++i) {
if (line[i] != ' ')
break;
++indent;
}
size_t level;
for (level = 0; level < line.length(); level++) {
if (line[level] != '#')
for (level = 0; indent + level < line.length(); level++) {
if (line[indent + level] != '#')
break;
}
if (!level || level >= line.length() || line[level] != ' ' || level > 6)
if (!level || indent + level >= line.length() || line[indent + level] != ' ' || level > 6)
return {};
StringView title_view = line.substring_view(level + 1, line.length() - level - 1);
StringView title_view = line.substring_view(indent + level + 1);
auto text = Text::parse(title_view);
auto heading = make<Heading>(move(text), level);