mirror of
https://github.com/RGBCube/serenity
synced 2025-07-27 04:37:34 +00:00
LibMarkdown: Implement introspection of the document tree
This commit is contained in:
parent
aca01932bd
commit
24e7196158
23 changed files with 319 additions and 0 deletions
|
@ -7,6 +7,7 @@
|
|||
#include <AK/Debug.h>
|
||||
#include <AK/StringBuilder.h>
|
||||
#include <LibMarkdown/Table.h>
|
||||
#include <LibMarkdown/Visitor.h>
|
||||
|
||||
namespace Markdown {
|
||||
|
||||
|
@ -96,6 +97,21 @@ String Table::render_to_html(bool) const
|
|||
return builder.to_string();
|
||||
}
|
||||
|
||||
RecursionDecision Table::walk(Visitor& visitor) const
|
||||
{
|
||||
RecursionDecision rd = visitor.visit(*this);
|
||||
if (rd != RecursionDecision::Recurse)
|
||||
return rd;
|
||||
|
||||
for (auto const& column : m_columns) {
|
||||
rd = column.walk(visitor);
|
||||
if (rd == RecursionDecision::Break)
|
||||
return rd;
|
||||
}
|
||||
|
||||
return RecursionDecision::Continue;
|
||||
}
|
||||
|
||||
OwnPtr<Table> Table::parse(LineIterator& lines)
|
||||
{
|
||||
auto peek_it = lines;
|
||||
|
@ -207,4 +223,23 @@ OwnPtr<Table> Table::parse(LineIterator& lines)
|
|||
return table;
|
||||
}
|
||||
|
||||
RecursionDecision Table::Column::walk(Visitor& visitor) const
|
||||
{
|
||||
RecursionDecision rd = visitor.visit(*this);
|
||||
if (rd != RecursionDecision::Recurse)
|
||||
return rd;
|
||||
|
||||
rd = header.walk(visitor);
|
||||
if (rd != RecursionDecision::Recurse)
|
||||
return rd;
|
||||
|
||||
for (auto const& row : rows) {
|
||||
rd = row.walk(visitor);
|
||||
if (rd == RecursionDecision::Break)
|
||||
return rd;
|
||||
}
|
||||
|
||||
return RecursionDecision::Continue;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue