Start adding markdown conversion to site generator.
This commit is contained in:
parent
f0091f9e04
commit
f44c79dc1f
31 changed files with 692 additions and 461 deletions
124
src/web/markdown/MarkdownComponents.h
Normal file
124
src/web/markdown/MarkdownComponents.h
Normal file
|
@ -0,0 +1,124 @@
|
|||
#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;
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue