static L wordNet(S word, O... _) { optPar bool verbose; new L out; for (LS li : html_contentsOfLIs(wordNet_rawPage(word))) { new WordNet w; w.word = htmlDecode(stringContentsOfFirstContainerTag(li, "b")); w.wordType = deRoundBracket(trimJoin(contentsOfContainerTag(first(findContainerTagWithParams(li, "a", class := "pos"))))); w.examples = htmlDecode(deRoundBracket(trim(stringContentsOfFirstContainerTag(li, "i")))); S raw = join(dropContainerTags(cloneList(li))); w.description = htmlDecode(deRoundBracket(dropLeadingCommas(trim(raw)))); w.synonyms = new L; for (LS a : findContainerTag(li, "a")) if (nempty(tagParam(a, "href"))) addUnlessEqualTo(w.synonyms, htmlDecode(trimJoin(contentsOfContainerTag(a))), "S:"); if (verbose) print(w); out.add(w); } ret out; }