Warning: session_start(): open(/var/lib/php/sessions/sess_6ce2bo7eear73htond85qi5oq6, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
// data = output of jsonDecode()
sclass JSONKeyTree {
new TreeSet out;
new MultiMap examples;
S render(O data) {
process(data);
ret lines(out, key -> {
var examples = examples.get(key);
ret key + (empty(examples) ? "" : ", e.g. " + jsonEncode(first(examples)));
});
}
Set get(O data) {
process(data);
ret out;
}
void process(S prefix default "", O data) {
if (data cast L) {
out.add(prefix + " is a list");
S s = prefix + "[]";
for (O o : data)
process(s, o);
} else if (data cast Map) {
out.add(prefix + " is a map");
for (O key, O val : castMapToMapO(data)) {
S s = addDotIfNempty(prefix) + key;
out.add(s);
process(s, val);
}
} else if (data == null)
out.add(prefix + " is null");
else {
out.add(prefix + " is a " + shortClassName(data));
examples.put(prefix, data);
}
}
}