!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); }