[Turn on line numbering]
arg name, @info;
var i;
(> .perms(sender()) <);
if (info) {
info = info[1];
for i in (info) {
if (!(> .valid_setting_attr(@i) <))
info = dict_del(info, i[1]);
}
} else {
info = #[];
}
if (.all_defined_settings().contains(name))
throw(~setexists, "Setting \"" + name + "\" is already defined.");
if (!$code_lib.valid_setting_id(name))
throw(~setbad, "Setting name \"" + name + "\" is unacceptable.");
defined_settings = .defined_settings().add(name, info);
return defined_settings[name];
["// Created as a part of ColdCore, see: @help Credit"]