124 lines
2.3 KiB
C++
124 lines
2.3 KiB
C++
#pragma once
|
|
|
|
#include "MarkdownElement.h"
|
|
|
|
#include <vector>
|
|
#include <memory>
|
|
|
|
class MarkdownTextSpan : public MarkdownInlineElement
|
|
{
|
|
public:
|
|
virtual ~MarkdownTextSpan() = default;
|
|
|
|
Type getType() const override;
|
|
};
|
|
|
|
class MarkdownParagraph : public MarkdownElement
|
|
{
|
|
public:
|
|
virtual ~MarkdownParagraph() = default;
|
|
|
|
Type getType() const override;
|
|
|
|
void addChild(std::unique_ptr<MarkdownInlineElement> child);
|
|
|
|
std::size_t getNumChildren() const;
|
|
|
|
MarkdownInlineElement* getChild(std::size_t idx) const;
|
|
|
|
private:
|
|
std::vector<std::unique_ptr<MarkdownInlineElement> > mChildren;
|
|
};
|
|
|
|
class MarkdownBulletItem : public MarkdownElement
|
|
{
|
|
public:
|
|
virtual ~MarkdownBulletItem() = default;
|
|
|
|
Type getType() const override;
|
|
};
|
|
|
|
class MarkdownBulletList : public MarkdownElement
|
|
{
|
|
public:
|
|
virtual ~MarkdownBulletList() = default;
|
|
|
|
Type getType() const override;
|
|
|
|
void addChild(std::unique_ptr<MarkdownBulletItem> child);
|
|
|
|
std::size_t getNumChildren() const;
|
|
|
|
MarkdownBulletItem* getChild(std::size_t idx) const;
|
|
|
|
private:
|
|
std::vector<std::unique_ptr<MarkdownBulletItem> > mChildren;
|
|
};
|
|
|
|
class MarkdownHeading : public MarkdownElement
|
|
{
|
|
public:
|
|
MarkdownHeading(unsigned level);
|
|
|
|
virtual ~MarkdownHeading() = default;
|
|
|
|
Type getType() const override;
|
|
|
|
unsigned getLevel() const;
|
|
|
|
private:
|
|
unsigned mLevel{1};
|
|
};
|
|
|
|
class MarkdownInlineQuote : public MarkdownInlineElement
|
|
{
|
|
public:
|
|
|
|
virtual ~MarkdownInlineQuote() = default;
|
|
|
|
Type getType() const override;
|
|
};
|
|
|
|
class MarkdownLink : public MarkdownInlineElement
|
|
{
|
|
public:
|
|
MarkdownLink(const std::string& target);
|
|
|
|
virtual ~MarkdownLink() = default;
|
|
|
|
const std::string& getTarget() const;
|
|
|
|
Type getType() const override;
|
|
private:
|
|
std::string mTarget;
|
|
};
|
|
|
|
class MarkdownImage : public MarkdownInlineElement
|
|
{
|
|
public:
|
|
MarkdownImage(const std::string& source, const std::string& alt);
|
|
|
|
virtual ~MarkdownImage() = default;
|
|
|
|
Type getType() const override;
|
|
|
|
const std::string& getSource() const;
|
|
|
|
const std::string& getAlt() const;
|
|
|
|
private:
|
|
std::string mSource;
|
|
std::string mAlt;
|
|
};
|
|
|
|
class MarkdownMultilineQuote : public MarkdownElement
|
|
{
|
|
public:
|
|
MarkdownMultilineQuote(const std::string& tag);
|
|
|
|
virtual ~MarkdownMultilineQuote() = default;
|
|
|
|
Type getType() const override;
|
|
private:
|
|
std::string mTag;
|
|
};
|