From 69e8e5c43b4f647782b1dadce7a2abd677182ce1 Mon Sep 17 00:00:00 2001 From: "Zed A. Shaw" Date: Sun, 17 Aug 2025 00:17:39 -0400 Subject: [PATCH] And now totally on the new parser and ready to push the features furthers. --- backup_parser.cpp | 62 ----------------------------------------------- main.cpp | 5 +--- meson.build | 1 - parser.cpp | 10 ++++++-- parser.hpp | 2 -- tests/parsing.cpp | 9 ------- 6 files changed, 9 insertions(+), 80 deletions(-) delete mode 100644 backup_parser.cpp diff --git a/backup_parser.cpp b/backup_parser.cpp deleted file mode 100644 index 68b2966..0000000 --- a/backup_parser.cpp +++ /dev/null @@ -1,62 +0,0 @@ -#include "parser.hpp" -#include "dbc.hpp" -#include -#include -#include -#include -#include -#include -#include - -using std::shared_ptr, std::string, nlohmann::json, std::string_view; -namespace fs = std::filesystem; - -shared_ptr parse_slides(const string& md_file) { - shared_ptr deck = std::make_shared(); - - dbc::check(fs::exists(md_file), "md file missing"); - - auto size = fs::file_size(md_file); - string line(size, '\0'); - bool started = false; - json config; - - if(std::ifstream in_file{md_file, std::ios::binary}) { - while(std::getline(in_file, line)) { - if(line == "{") { - string json_data; - - do { - json_data += line; - } while (std::getline(in_file, line) && line != "}"); - - json_data += "}"; - - config = json::parse(json_data); - std::cout << "JSON: " << config << '\n'; - } else if(line == "===") { - deck->config = config; - fmt::println("START"); - started = true; - } else if(line == "---") { - fmt::println("START SLIDE"); - } else { - if(started) { - string title = line; - string content; - - while(std::getline(in_file, line) && line != "---") { - content += line + "\n"; - } - - deck->slides.emplace_back(title, content, config); - config = json::parse("{}"); - } else { - fmt::println("JUNK: {}", line); - } - } - } - } - - return deck; -} diff --git a/main.cpp b/main.cpp index dc290c8..1e72e45 100644 --- a/main.cpp +++ b/main.cpp @@ -26,10 +26,7 @@ int main(int argc, char *argv[]) { presenter.setFramerateLimit(FRAME_LIMIT); presenter.setVerticalSyncEnabled(VSYNC); - auto contents = load_file(argv[1]); - Parser rp; - rp.parse(contents); - auto data = rp.results(); + auto data = parse_slides(argv[1]); SlidesUI slides(data); slides.init(); diff --git a/meson.build b/meson.build index db3f3d7..0b15ba1 100644 --- a/meson.build +++ b/meson.build @@ -85,7 +85,6 @@ sources = [ 'control_ui.cpp', 'slides_ui.cpp', 'parser.cpp', - 'backup_parser.cpp', ] tests = [ diff --git a/parser.cpp b/parser.cpp index f10e81b..884500d 100644 --- a/parser.cpp +++ b/parser.cpp @@ -11,7 +11,6 @@ using std::string, nlohmann::json, std::shared_ptr, std::make_shared; - string load_file(const string& md_file) { std::ifstream in_file{md_file, std::ios::binary}; dbc::check(bool(in_file), fmt::format("failed to load {}", md_file)); @@ -19,7 +18,12 @@ string load_file(const string& md_file) { return string(std::istreambuf_iterator(in_file), std::istreambuf_iterator()); } -#include "./md_parser.cpp" +std::shared_ptr parse_slides(const std::string& md_file) { + auto contents = load_file(md_file); + Parser rp; + rp.parse(contents); + return rp.results(); +} Parser::Parser() { @@ -28,3 +32,5 @@ Parser::Parser() void Parser::finalize() { } + +#include "./md_parser.cpp" diff --git a/parser.hpp b/parser.hpp index 8c17de1..37aa13d 100644 --- a/parser.hpp +++ b/parser.hpp @@ -5,8 +5,6 @@ std::shared_ptr parse_slides(const std::string& md_file); -std::string load_file(const std::string& md_file); - struct Parser { int last = 0; bool error = false; diff --git a/tests/parsing.cpp b/tests/parsing.cpp index a21d981..7f90bfe 100644 --- a/tests/parsing.cpp +++ b/tests/parsing.cpp @@ -10,13 +10,4 @@ TEST_CASE("parse a simple example", "[parsing]") { auto data = parse_slides("./sample/01-a-good-first-program.md"); REQUIRE(data->slides.size() > 0); - - auto contents = load_file("./sample/01-a-good-first-program.md"); - Parser rp; - rp.parse(contents); - - REQUIRE(!rp.error); - auto deck = rp.results(); - - REQUIRE(deck->slides.size() > 0); }