MD::Visitor Class

template <typename Trait> class MD::Visitor

Visitor interface to walk through Document. More...

Header: #include <md4qt/visitor.h>
CMake: find_package(md4qt REQUIRED COMPONENTS md4qt)
target_link_libraries(mytarget PRIVATE md4qt::md4qt)
Inherited By:

MD::details::AlgoVisitor, MD::details::HtmlVisitor, and MD::PosCache

Public Functions

void process(std::shared_ptr<MD::Document<Trait>> d)

Protected Functions

virtual void onAddLineEnding() = 0
virtual void onAnchor(MD::Anchor<Trait> *a) = 0
virtual void onBlockquote(MD::Blockquote<Trait> *b)
virtual void onCode(MD::Code<Trait> *c) = 0
virtual void onFootnote(MD::Footnote<Trait> *f)
virtual void onFootnoteRef(MD::FootnoteRef<Trait> *ref) = 0
virtual void onHeading(MD::Heading<Trait> *h) = 0
virtual void onHorizontalLine(MD::HorizontalLine<Trait> *l) = 0
virtual void onImage(MD::Image<Trait> *i) = 0
virtual void onInlineCode(MD::Code<Trait> *c) = 0
virtual void onLineBreak(MD::LineBreak<Trait> *b) = 0
virtual void onLink(MD::Link<Trait> *l) = 0
virtual void onList(MD::List<Trait> *l) = 0
virtual void onListItem(MD::ListItem<Trait> *i, bool first)
virtual void onMath(MD::Math<Trait> *m) = 0
virtual void onParagraph(MD::Paragraph<Trait> *p, bool wrap)
virtual void onRawHtml(MD::RawHtml<Trait> *h) = 0
virtual void onTable(MD::Table<Trait> *t) = 0
virtual void onTableCell(MD::TableCell<Trait> *c)
virtual void onText(MD::Text<Trait> *t) = 0
virtual void onUserDefined(MD::Item<Trait> *item)

Protected Variables

typename Trait::template Vector<typename Trait::String> m_anchors
std::shared_ptr<MD::Document<Trait>> m_doc

Detailed Description

Member Function Documentation

[pure virtual protected] void Visitor::onAddLineEnding()

For some generator it's important to keep line endings like they were in Markdown. So onParagraph() method invokes this method when necessary to add line ending.

[pure virtual protected] void Visitor::onAnchor(MD::Anchor<Trait> *a)

Handle anchor.

a Anchor.

[virtual protected] void Visitor::onBlockquote(MD::Blockquote<Trait> *b)

Handle blockquote.

b Blockquote.

[pure virtual protected] void Visitor::onCode(MD::Code<Trait> *c)

Handle code.

c Code.

[virtual protected] void Visitor::onFootnote(MD::Footnote<Trait> *f)

Handle footnote.

f Footnote.

[pure virtual protected] void Visitor::onFootnoteRef(MD::FootnoteRef<Trait> *ref)

Handle footnote reference.

ref Footnote reference.

[pure virtual protected] void Visitor::onHeading(MD::Heading<Trait> *h)

Handle heading.

h Heading.

[pure virtual protected] void Visitor::onHorizontalLine(MD::HorizontalLine<Trait> *l)

Handle horizontal line.

l Horizontal line.

[pure virtual protected] void Visitor::onImage(MD::Image<Trait> *i)

Handle image.

i Image.

[pure virtual protected] void Visitor::onInlineCode(MD::Code<Trait> *c)

Handle inline code.

c Code

[pure virtual protected] void Visitor::onLineBreak(MD::LineBreak<Trait> *b)

Handle line break.

b Line break.

Handle link.

l Link.

[pure virtual protected] void Visitor::onList(MD::List<Trait> *l)

Handle list.

l List.

[virtual protected] void Visitor::onListItem(MD::ListItem<Trait> *i, bool first)

Handle list item.

i List item.

first Is this item first in the list?

[pure virtual protected] void Visitor::onMath(MD::Math<Trait> *m)

Handle LaTeX math expression.

m Math.

[virtual protected] void Visitor::onParagraph(MD::Paragraph<Trait> *p, bool wrap)

Handle paragraph.

p Paragraph.

wrap Wrap this paragraph with something or no? It's useful to not wrap standalone paragraph in list item, for example.

[pure virtual protected] void Visitor::onRawHtml(MD::RawHtml<Trait> *h)

Handle raw HTML.

h Raw HTML.

[pure virtual protected] void Visitor::onTable(MD::Table<Trait> *t)

Handle table.

t Table.

[virtual protected] void Visitor::onTableCell(MD::TableCell<Trait> *c)

Handle table cell.

c Table cell.

[pure virtual protected] void Visitor::onText(MD::Text<Trait> *t)

Handle text item.

t Text.

[virtual protected] void Visitor::onUserDefined(MD::Item<Trait> *item)

Handle user-defined item.

item Item.

void Visitor::process(std::shared_ptr<MD::Document<Trait>> d)

Walk through the document.

d Markdown document.

Member Variable Documentation

typename Trait::template Vector<typename Trait::String> Visitor::m_anchors

All available m_anchors in the document.

std::shared_ptr<MD::Document<Trait>> Visitor::m_doc

Document.