Small fix

This commit is contained in:
fed 2023-02-22 05:48:38 +01:00
parent f9c4522899
commit 7781ca6daf
3 changed files with 28 additions and 12 deletions

View File

@ -32,7 +32,7 @@ namespace config
std::unordered_map<std::string, field_definition_t> field_definitions = std::unordered_map<std::string, field_definition_t> field_definitions =
{ {
{define_field("language", config::field_type::string, language::get_default_language(), language::is_valid_language)}, {define_field("language", field_type::string, language::get_default_language(), language::is_valid_language)},
}; };
} }
@ -61,6 +61,28 @@ namespace config
return value; return value;
} }
nlohmann::json get_default_value(const std::string& key)
{
const auto iter = field_definitions.find(key);
if (iter == field_definitions.end())
{
return {};
}
return iter->second.default_value;
}
nlohmann::json get_raw(const std::string& key)
{
const auto cfg = read_config();
if (!cfg.is_object() || !cfg.contains(key))
{
return get_default_value(key);
}
return validate_config_field(key, cfg[key]);
}
void write_config(const nlohmann::json& json) void write_config(const nlohmann::json& json)
{ {
try try

View File

@ -9,6 +9,7 @@ namespace config
void write_config(const nlohmann::json& json); void write_config(const nlohmann::json& json);
nlohmann::json validate_config_field(const std::string& key, const field_value& value); nlohmann::json validate_config_field(const std::string& key, const field_value& value);
nlohmann::json get_default_value(const std::string& key);
template <typename T> template <typename T>
std::optional<T> get(const std::string& key) std::optional<T> get(const std::string& key)
@ -23,6 +24,8 @@ namespace config
return {value.get<T>()}; return {value.get<T>()};
} }
nlohmann::json get_raw(const std::string& key);
template <typename T> template <typename T>
void set(const std::string& key, const T& value) void set(const std::string& key, const T& value)
{ {

View File

@ -482,17 +482,8 @@ namespace ui_scripting
config_table["get"] = [](const std::string& key, const variadic_args& va) config_table["get"] = [](const std::string& key, const variadic_args& va)
-> script_value -> script_value
{ {
const auto default_value = va.size() >= 1 ? va[0] : script_value(); const auto value = config::get_raw(key);
const auto value = config::get<nlohmann::json>(key); return json_to_lua(value);
if (value.has_value())
{
return json_to_lua(value.value());
}
else
{
return default_value;
}
}; };
config_table["getstring"] = [](const std::string& key, const variadic_args& va) config_table["getstring"] = [](const std::string& key, const variadic_args& va)