[Turn off line numbering]
1: arg name, @info;
2: var i;
3:
4: (> .perms(sender()) <);
5: if (info) {
6: info = info[1];
7: for i in (info) {
8: if (!(> .valid_setting_attr(@i) <))
9: info = dict_del(info, i[1]);
10: }
11: } else {
12: info = #[];
13: }
14: if (.all_defined_settings().contains(name))
15: throw(~setexists, "Setting \"" + name + "\" is already defined.");
16: if (!$code_lib.valid_setting_id(name))
17: throw(~setbad, "Setting name \"" + name + "\" is unacceptable.");
18: defined_settings = .defined_settings().add(name, info);
19: return defined_settings[name];
["// Created as a part of ColdCore, see: @help Credit"]