#pragma once

#include <string>
#include <vector>
#include "machine.h"
#include "file.h"

inline
std::vector<std::string> sks_basenames { // removed "book"
    "kutil", "color", "document", "block", "font", "link", "section",
    "list", "image", "table", "code", "target", "date" };

const std::string caption_delimiter = "__CAPTION__";

std::string read_file(const std::string& filename);

std::string klammertext_dir();

std::vector<std::string> old_sks_files_of_type(const std::string& extension);
std::vector<std::string> sks_files_of_type(const std::string& extension, const std::vector<std::string>& subset={});

std::string caption_marker(const std::string& name, const std::string& caption, const std::string& delimiter=" – ");

std::string find_kt_file(const std::string& filename);

std::string process(Machine& M, const std::string& target, const std::string& source_text,
                    bool post_process=false, bool unescape_chars=false);

std::string process(Machine& M, const std::string& target, const fs::path& source_filename,
                    bool post_process=false, bool unescape_chars=false);

std::string process(Machine& M, const std::string& target,
                    const std::string& source_text, const fs::path& source_filename,
                    bool post_process, bool unescape_chars);

