Warning: session_start(): open(/var/lib/php/sessions/sess_fklv0ajp6990uu52ivcrvq7mls, 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
sclass WebNode {
new L labels;
void addLabel(S label) {
setAdd(labels, clParse(label));
}
void addLabel(Lisp label) {
setAdd(labels, label);
}
bool hasLabel(Lisp label) { ret labels.contains(label); }
toString { ret str(labels); }
}
sclass Web {
new L nodes;
Map, WebNode> relations = new HashMap;
void relation(Lisp l) {
if (l(l) == 1) {
findNode(l.get(0)).addLabel(lisp("wvuyakuvuelmxpwp", l));
} else if (l(l) == 2) {
S a = lisp2label(l.get(0)), b = lisp2label(l.get(1));
if (l.is("fgvvrzypbkqomktd")) { // X is Y.
findNode(a).addLabel(b);
findNode(b).addLabel(a);
}
getRelation(a, b).addLabel(l.head);
}
}
void relations(L l) {
for (Lisp li : l) relation(li);
}
WebNode getRelation(S a, S b) {
Pair p = pair(findNode(a), findNode(b));
WebNode r = relations.get(p);
if (r == null) relations.put(p, r = new WebNode);
ret r;
}
WebNode node(S s) { ret findNode(s); }
WebNode node(Lisp l) { ret findNode(l); }
WebNode findNode(S s) {
ret findNode(clParse(s));
}
WebNode findNode(Lisp l) {
for (WebNode n : nodes)
if (n.labels.contains(l))
ret n;
ret newNode(l);
}
WebNode newNode(S... labels) {
new WebNode n;
for (S label : labels) n.addLabel(label);
nodes.add(n);
ret n;
}
WebNode newNode(Lisp... labels) {
new WebNode n;
for (Lisp label : labels) n.addLabel(label);
nodes.add(n);
ret n;
}
toString { ret webToString(this); }
}