!7 sclass WikiResult { S rawPage, firstPart; } 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)); print(); } static WikiResult querySimpleWikipedia(S word) { S raw = loadPageSilently("https://simple.wikipedia.org/wiki/" + urlencode(word) + "?action=raw"), rawPage = raw; // check for redirect new Matches m; 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(i, "=="); S firstPart = joinLines(subList(lines, 0, n)); ret nu(WikiResult, +rawPage, +firstPart); }