Method code for $foundation._parse_msg_branches()

[Turn on line numbering]
arg name, attr, value;
var branch, p, varkeys, sub, m, attrs;

if (!value)
    value = ["general"];
attrs = defined_msgs[name];
for branch in (value) {
    sub = explode(branch, ".");
    if (listlen(sub) > 2)
        throw(~msgbad, "Too many message branches '" + branch + "'.");
    for p in (sub) {
        if (p[1] == "(" || p == "*")
            varkeys++;
        else if (!$code_lib.valid_message_id(p))
            throw(~msgbad, "Branch '" + p + "' contains invalid characters.");
    }
}
if (varkeys) {
    varkeys = #[];
    for branch in (value) {
        if ("(" in branch || "*" in branch) {
            if ((m = regexp(branch, "\.\(([^)]+)\)$"))) {
                sub = strsed(branch, "\.\(([^)]+)\)$", "");
                value = replace(value, branch in value, sub + ".*");
                varkeys = dict_add(varkeys, sub, m[1]);
            } else if ((branch = strsed(branch, "\.\*$", ""))) {
                varkeys = dict_add(varkeys, branch, "$" + branch);
            } else {
                throw(~msgbad, "Variable branch part must be last.");
            }
        }
    }
    attrs = dict_add(attrs, 'varkeys, varkeys);
} else if (dict_contains(attrs, 'varkeys)) {
    attrs = dict_del(attrs, 'varkeys);
}
return [attrs, value];

// $#Edited: 09 Feb 98 01:28 $user_bruce

["// Created 26-Mar-1995 as a part of ColdCore, see: @help Credit"]

the Cold Dark