diff --git a/Userland/md.cpp b/Userland/md.cpp new file mode 100644 index 0000000000..cf76c6f89d --- /dev/null +++ b/Userland/md.cpp @@ -0,0 +1,44 @@ +#include +#include +#include +#include + +int main(int argc, char* argv[]) +{ + const char* file_name = nullptr; + bool html = false; + + for (int i = 1; i < argc; i++) + if (strcmp(argv[i], "--html") == 0) + html = true; + else + file_name = argv[i]; + + auto file = CFile::construct();; + bool success; + if (file_name == nullptr) { + success = file->open(STDIN_FILENO, CIODevice::OpenMode::ReadOnly, CFile::ShouldCloseFileDescription::No); + } else { + file->set_filename(file_name); + success = file->open(CIODevice::OpenMode::ReadOnly); + } + if (!success) { + fprintf(stderr, "Error: %s\n", file->error_string()); + return 1; + } + + auto buffer = file->read_all(); + dbg() << "Read size " << buffer.size(); + + String input { (char*)buffer.data(), buffer.size() }; + MDDocument document; + success = document.parse(input); + + if (!success) { + fprintf(stderr, "Error parsing\n"); + return 1; + } + + String res = html ? document.render_to_html() : document.render_for_terminal(); + printf("%s", res.characters()); +}