/* * Mirai. Copyright (C) 2024 Vyn * This file is licensed under version 3 of the GNU General Public License (GPL-3.0-only) * The license can be found in the LICENSE file or at https://www.gnu.org/licenses/gpl-3.0.txt */ #pragma once #include "BaseSource.h" #include "DateTime.h" #include "Day.h" #include "Event.h" #include "TaskItem.h" #include #include #include #include #include #include namespace mirai { struct MiraiMarkdownFormatParseResult { std::string name; std::vector days; std::vector unscheduledTasks; }; class TodoMdFormat { public: static std::string stringify(BaseSource &source); static MiraiMarkdownFormatParseResult parse(const std::string &content); static std::string taskToString(const TaskItem &task); static TaskItemData stringToTask(const std::string &str, const std::string &date); static EventData stringToEvent(const std::string &str, const std::string &date); private: static std::string fieldWithSpace(const std::string &field); static TaskItem parseLine(const std::string &line); static Tags extractTagsFromMetadata(std::string metadata); }; } // namespace mirai