Files
klammertext/sks/kutil/kutil.h
Andy Kopra ef77f03584 Klammerset: the @@@klammerset construct, its search path, and const correctness
The @@@klammerset system command formally declares a klammerset — a
named, logically related group of klammer definitions — with an
operative, idempotent declaration (:requires and :files load in order
at the declaration point, relative to the declaring file). A bare
symbol given to ktext -k, kdesc --input, or :requires resolves to
x/x.k on the search path: the document's directory, then
KLAMMERTEXT_KLAMMERSETS, then KLAMMERTEXT_HOME; kdesc --klammerset
lists the available sets. sks/sks.k is the first declared klammerset,
so `-k sks` loads the SKS by name. The engine's lookup classes were
renamed *_set → *_registry to keep the two concepts apart, and the
whole C++ tree now follows standard const-correctness conventions.
tst/ gains klammerset_test.sh (18 cases).

(from dev 64b1abf23e56)
2026-07-30 23:50:07 +02:00

36 lines
1.3 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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);