MD::details::AlgoVisitor Class

class MD::details::AlgoVisitor

Visitor for algorithms. More...

Header: #include <md4qt/algo.h>
CMake: find_package(md4qt REQUIRED COMPONENTS md4qt)
target_link_libraries(mytarget PRIVATE md4qt::md4qt)
Inherits: MD::Visitor

Public Functions

AlgoVisitor(unsigned int mnl, const QVector<MD::ItemType> &t, MD::ItemFunctor f)
virtual void walk(QSharedPointer<MD::Document> doc)

Protected Types

Protected Functions

virtual void onFootnotes(QSharedPointer<MD::Document> doc)

Reimplemented Protected Functions

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

Protected Variables

unsigned int m_currentNestingLevel
MD::ItemFunctor m_func
unsigned int m_maxNestingLevel
const QVector<MD::ItemType> &m_types

Detailed Description

The main difference from MD::Visitor is that this class during walking through the document takes into account nesting level of the item. If nesting level reached defined value it won't process anything further. And if type of the item is in set types walking through the document will invoke a given function object for that item.

See also MD::Visitor.

Member Function Documentation

AlgoVisitor::AlgoVisitor(unsigned int mnl, const QVector<MD::ItemType> &t, MD::ItemFunctor f)

Constructor

mnl Maximum nesting level

t List of items' types.

f Functor.

[override virtual protected] void AlgoVisitor::onAnchor(MD::Anchor *a)

Reimplements: Visitor::onAnchor(MD::Anchor *a).

Process anchor.

a Anchor.

[override virtual protected] void AlgoVisitor::onBlockquote(MD::Blockquote *b)

Reimplements: Visitor::onBlockquote(MD::Blockquote *b).

Process blockquote.

b Blockquote.

[override virtual protected] void AlgoVisitor::onCode(MD::Code *c)

Reimplements: Visitor::onCode(MD::Code *c).

Process code block.

c Code.

[override virtual protected] void AlgoVisitor::onFootnote(MD::Footnote *f)

Reimplements: Visitor::onFootnote(MD::Footnote *f).

Process footnote.

f Footnote.

[override virtual protected] void AlgoVisitor::onFootnoteRef(MD::FootnoteRef *ref)

Reimplements: Visitor::onFootnoteRef(MD::FootnoteRef *ref).

Process footnote reference.

ref Footnote reference.

[virtual protected] void AlgoVisitor::onFootnotes(QSharedPointer<MD::Document> doc)

Process all footnotes.

doc Document.

[override virtual protected] void AlgoVisitor::onHeading(MD::Heading *h)

Reimplements: Visitor::onHeading(MD::Heading *h).

Process heading.

h Heading.

[override virtual protected] void AlgoVisitor::onHorizontalLine(MD::HorizontalLine *l)

Reimplements: Visitor::onHorizontalLine(MD::HorizontalLine *l).

Process horizontal line.

l Horizontal line.

[override virtual protected] void AlgoVisitor::onImage(MD::Image *i)

Reimplements: Visitor::onImage(MD::Image *i).

Process Image.

i Image.

[override virtual protected] void AlgoVisitor::onInlineCode(MD::Code *c)

Reimplements: Visitor::onInlineCode(MD::Code *c).

Process inline code.

c Code.

[override virtual protected] void AlgoVisitor::onLineBreak(MD::LineBreak *l)

Reimplements: Visitor::onLineBreak(MD::LineBreak *b).

Process line break.

l Line break.

Reimplements: Visitor::onLink(MD::Link *l).

Process link.

l Link.

[override virtual protected] void AlgoVisitor::onList(MD::List *l)

Reimplements: Visitor::onList(MD::List *l).

Process list.

l List.

[override virtual protected] void AlgoVisitor::onListItem(MD::ListItem *i, bool, bool skipOpeningWrap = false)

Reimplements: Visitor::onListItem(MD::ListItem *i, bool first, bool skipOpeningWrap).

Process list item.

i List item.

skipOpeningWrap Indicates that opening wrap should be added or no.

[override virtual protected] void AlgoVisitor::onMath(MD::Math *m)

Reimplements: Visitor::onMath(MD::Math *m).

Process LaTeX math item.

m Math.

[override virtual protected] void AlgoVisitor::onParagraph(MD::Paragraph *p, bool, bool skipOpeningWrap = false)

Reimplements: Visitor::onParagraph(MD::Paragraph *p, bool wrap, bool skipOpeningWrap).

Process paragraph.

p Paragraph.

skipOpeningWrap Indicates that opening wrap should be added or no.

[override virtual protected] void AlgoVisitor::onRawHtml(MD::RawHtml *h)

Reimplements: Visitor::onRawHtml(MD::RawHtml *h).

Process raw HTML block.

h Raw HTML.

[override virtual protected] void AlgoVisitor::onTable(MD::Table *t)

Reimplements: Visitor::onTable(MD::Table *t).

Process table.

t Table.

[override virtual protected] void AlgoVisitor::onTableCell(MD::TableCell *c)

Reimplements: Visitor::onTableCell(MD::TableCell *c).

Process table cell.

c Table cell.

[override virtual protected] void AlgoVisitor::onText(MD::Text *t)

Reimplements: Visitor::onText(MD::Text *t).

Process text item.

t Text.

[override virtual protected] void AlgoVisitor::onUserDefined(MD::Item *i)

Reimplements: Visitor::onUserDefined(MD::Item *item).

Process user defined item type.

i Item.

[virtual] void AlgoVisitor::walk(QSharedPointer<MD::Document> doc)

Walk through the document.

doc Document.

Member Variable Documentation

unsigned int AlgoVisitor::m_currentNestingLevel

Current nesting level, increments/decrements during walking through te document.

MD::ItemFunctor AlgoVisitor::m_func

Functor that will be invoked if all circumstances will be observed.

unsigned int AlgoVisitor::m_maxNestingLevel

Maximum allowed nesting level.

const QVector<MD::ItemType> &AlgoVisitor::m_types

List of types that should be processed.