#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(std::string filename);

std::string klammertext_dir();

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

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

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

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

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

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

