Warning: session_start(): open(/var/lib/php/sessions/sess_t6mhb6dvmad5l7ns1cr6sdf1lf, 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
!7
sclass WikiResult {
S rawPage, firstPart;
S firstSentence() {
L lines = toLines(firstPart);
ret get(lines, indexOfNotStartingWith(lines, "[["));
}
}
WikiResult > Redirect {
S toWord;
}
p {
testWord("fun");
testWord("recreation");
}
svoid testWord(S word) {
print("= " + word + " =");
WikiResult result = querySimpleWikipedia(word);
print(result.rawPage);
print();
if (result >> Redirect)
print("Redirect to: " + quote(result/Redirect.toWord));
else
print("First sentence:\n" + indent(dropContainerTags(result.firstSentence())));
print();
}
static WikiResult querySimpleWikipedia(S word) {
S raw = loadPageSilently("https://simple.wikipedia.org/wiki/" + urlencode(word) + "?action=raw"), rawPage = raw;
// check for redirect
S p = "#REDIRECT [[";
if (startsWith(raw, p) && endsWith(raw, "]]"))
ret nu(Redirect, +rawPage,
toWord := dropPrefix(p, dropSuffix("]]", raw)));
L lines = toLines(raw);
int n = smartIndexOfStartsWith(lines, "==");
S firstPart = joinLines(subList(lines, 0, n));
print("First part:\n" + indent(firstPart));
ret nu(WikiResult, +rawPage, +firstPart);
}