maddy is a C++ Markdown to HTML header-only parser library.
It actually should work on any OS, that supports the C++14 standard library.
It is tested to work on:
- Linux (gcc)
- OSX (clang)
- Windows (Visual Studio 17 2022, mingw)
- C++14
When I was looking for a Markdown parser in C++, I couldn't find any, that was fitting my needs. So I simply wrote my own one.
The supported syntax can be found in the definitions docs.
You can use FetchContent which was introduced in CMake 3.11.
This way you can add
include(FetchContent)
FetchContent_Declare(
maddy
URL https://github.com/progsource/maddy/.../maddy-src.zip
)
FetchContent_MakeAvailable(maddy)
add_executable(my_exe)
target_link_libraries(my_exe PUBLIC maddy)
to your CMake file to make it work. Check the release for the full zip-file-url.
The zip only contains a CMakeLists.txt
, the include
folder and the LICENSE
file.
To use maddy in your project, simply add the include path of maddy to yours and in the code, you can then do the following:
#include <memory>
#include <string>
#include "maddy/parser.h"
std::stringstream markdownInput("");
// config is optional
std::shared_ptr<maddy::ParserConfig> config = std::make_shared<maddy::ParserConfig>();
// config->isEmphasizedParserEnabled = false; // default true - this flag is deprecated
// config->isHTMLWrappedInParagraph = false; // default true - this flag is deprecated
config->enabledParsers &= ~maddy::types::EMPHASIZED_PARSER; // equivalent to !isEmphasizedParserEnabled
config->enabledParsers |= maddy::types::HTML_PARSER; // equivalent to !isHTMLWrappedInParagraph
std::shared_ptr<maddy::Parser> parser = std::make_shared<maddy::Parser>(config);
std::string htmlOutput = parser->Parse(markdownInput);
You can find all parser flags in
include/maddy/parserconfig.h
.
(tested on Linux with git and cmake installed)
Open your preferred terminal and type:
git clone https://github.com/progsource/maddy.git
cd maddy
mkdir tmp
cd tmp
cmake -DMADDY_BUILD_WITH_TESTS=ON ..
make
make test # or run the executable in ../build/MaddyTests
There are different possibilities:
- Create a GitHub issue
- Create a pull request with an own branch
Please also read CONTRIBUTING.md.