apps | ||
data | ||
editorconfig | ||
include | ||
scripts | ||
src | ||
tests | ||
.clang-format | ||
.clang-tidy | ||
.gitattributes | ||
.gitignore | ||
Catch2.LICENSE | ||
CMakeLists.txt | ||
cmark.COPYING | ||
Doxyfile | ||
LICENSE | ||
README.md |
mdml-cgi
mdml-cgi
is a C++ application designed to be used as a Common Gateway Interface (CGI) script by web servers. It facilitates the generation of HTML content by combining a template and a Markdown file. The project utilizes the cmark library for Markdown parsing. The license for the cmark library can be found in the root directory.
Features
- Markdown to HTML: Convert Markdown content to HTML using the powerful cmark library.
- Template Support: Generate HTML by combining a template with the parsed Markdown content.
- CGI Integration: Seamless integration with web servers as a CGI script for dynamic content generation.
Dependencies
- cmark: A C library for parsing CommonMark Markdown documents.
- License: cmark License
- Catch2: A modern, C++-native, header-only framework for unit testing.
- License: Catch2 License
Building and Installation
-
Clone the repository:
git clone https://github.com/your-username/mdml-cgi.git
-
Build the project:
cmake -B release -DCMAKE_BUILD_TYPE=Release make -C release
or
cmake -B release -DCMAKE_BUILD_TYPE=Release -G Ninja ninja -C release
Testing
Unit tests for mdml-cgi
are implemented using the Catch2 framework. To run the tests, execute:
cmake -B debug -DCMAKE_BUILD_TYPE=Debug
make -C debug ctest
or
cmake -B debug -DCMAKE_BUILD_TYPE=Debug -G ninja
ninja -C debug ctest
Usage
To use mdml-cgi
as a CGI script, follow these steps:
- Configure your web server to recognize
mdml-cgi
as a CGI script. - Ensure the required dependencies are installed.
- Place your Markdown file and template in a designated directory.
- Make a request to the CGI script, passing the Markdown file and template as parameters.
License
This project is licensed under the Mozilla Public License.
Contributing
Please feel free to submit pull requests, but this project is a small personal project for now, that I'm using to build a portfolio and expose myself to modern C++.