mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 01:47:35 +00:00
LibMarkdown: Support up to 3 spaces before an ATX header
This commit is contained in:
parent
116e0dc4de
commit
4d3454d700
1 changed files with 15 additions and 4 deletions
|
@ -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);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue