Typed arguments, calculated tables, spans, closed-world fonts, top-level fnt/ and env/
Sync with klammertext-dev through b90b0e09: - Argument types end to end: :python_cast values are applied (Python @eval receives real bools/numbers/lists), argument values are validated against their argtype patterns with the argtype's description as the error message, argtypes can declare :default (overridable per declaration), and parameterized type families are supported: rest(N) casts a rest argument to an N-dimensional list (bar-count = dimension). - Unified indexed_range syntax (selector with parenthesized subsets, composable mnemonic names) for table lines and spans. - Table klammer: caption fonts fixed in both targets, :column_width / :leading / :colsep wired, :colspan and :rowspan render (HTML attributes; \multicolumn / \multirow), calculated cell values (:calc) with prefix operators, display-precision semantics, :calc_format and :decimal period|comma. - Fonts: closed-world resolution on the Klammertext font store (infrastructure in mac/font_store; no Google Fonts links or fetch). Default fonts live in the top-level fnt/; additional fonts install into KLAMMERTEXT_FONTS directories via kdesc --font (list, samples, preview, install — classification by font metadata). CSS font family names are quoted (digit-initial families were silently lost). - Environment files moved from mac/env/ to the top-level env/; shell profiles source env/runtime.env. Dead per-host variants removed. - Container: fnt/ ships in the image; curl removed (no network use).
This commit is contained in:
@@ -25,9 +25,9 @@ std::vector<std::string> Frame::names() const
|
||||
}
|
||||
|
||||
void Frame::set(std::string name, std::string value,
|
||||
std::string delim, std::string desc, Locator loc)
|
||||
std::string delim, std::string desc, Locator loc, Argtype argtype)
|
||||
{
|
||||
Var v(name, value, delim, desc, loc);
|
||||
Var v(name, value, delim, desc, loc, argtype);
|
||||
m_vars[name] = v;
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ void State::close_frame()
|
||||
}
|
||||
|
||||
void State::set(std::string name, std::string value, bool update,
|
||||
std::string delim, std::string desc, Locator loc)
|
||||
std::string delim, std::string desc, Locator loc, Argtype argtype)
|
||||
{
|
||||
if (m_frames.empty()) {
|
||||
std::stringstream ss {};
|
||||
@@ -86,7 +86,7 @@ void State::set(std::string name, std::string value, bool update,
|
||||
<< q_(current.m_value) << ".";
|
||||
throw Argument_error(ss.str(), current.m_loc);
|
||||
}
|
||||
m_frames[0].set(name, value, delim, desc, loc);
|
||||
m_frames[0].set(name, value, delim, desc, loc, argtype);
|
||||
}
|
||||
|
||||
void State::set(std::map<std::string, std::string> varmap)
|
||||
@@ -96,6 +96,16 @@ void State::set(std::map<std::string, std::string> varmap)
|
||||
}
|
||||
}
|
||||
|
||||
void State::set(const std::map<std::string, std::string>& varmap,
|
||||
const Parameter_set& parameters)
|
||||
{
|
||||
for (const auto& [name, value] : varmap) {
|
||||
const Parameter* parameter = parameters.find(name);
|
||||
set(name, value, false, " ", "", Locator(),
|
||||
parameter ? parameter->m_argtype : Argtype());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void State::replace(std::string name, std::string value, bool error_if_not_defined)
|
||||
{
|
||||
@@ -269,13 +279,8 @@ std::string State::python_code()
|
||||
<< margin << std::left << std::setw(name_length) << "K_eval_id" << " = "
|
||||
<< State::class_id++ << "\n";
|
||||
for (const auto& name : names) {
|
||||
// auto [var_value, argtype] = value_type(name);
|
||||
// ss << argtype.python_value(name, var_value, name_length) << "\n";
|
||||
std::string v = value(name);
|
||||
v = string_replace(v, "\\", "\\\\");
|
||||
v = string_replace(v, "\"", "\\\"");
|
||||
std::string var_value = qq_(v);
|
||||
ss << margin << std::left << std::setw(name_length) << name << " = " << var_value << "\n";
|
||||
Var var = get(name);
|
||||
ss << var.m_argtype.python_value(name, {var.m_value}, name_length) << "\n";
|
||||
}
|
||||
}
|
||||
// msg() << ss.str() << "\n";
|
||||
|
||||
Reference in New Issue
Block a user