[Turn off line numbering]
1: arg @parent;
2: var par, data, out;
3:
4: if (!.has_flag('variables, sender()))
5: throw(~perm, sender().namef('ref) + " is not allowed to read variables on " + .namef('ref));
6: if (parent) {
7: if (type(parent[1]) != 'objnum)
8: throw(~type, parent[1] + " is not an object.");
9: return (> data(parent[1]) <);
10: } else {
11: data = (> data() <);
12: out = #[];
13: for par in (data) {
14: // if the parent doesn't exist anymore, just let them see the data.
15: if (!valid(par[1]) || par[1].has_flag('variables, sender()))
16: out = out.add(par[1], par[2]);
17: else
18: out = out.add(par[1], ["*** Permission Denied ***"]);
19: }
20: return out;
21: }
["// Created as a part of ColdCore, see: @help Credit"]