$define RCINDEX "http://rosettacode.org/mw/api.php?format=xml&action=query&list=categorymembers&cmtitle=Category:Programming_Tasks&cmlimit=500" $define RCTASK "http://rosettacode.org/mw/index.php?action=raw&title=" $define RCUA "User-Agent: Unicon Rosetta 0.1" $define RCXUA "X-Unicon: http://unicon.org/" $define TASKTOT "* Total Tasks *" $define TOTTOT "* Total Headers*" link strings link hexcvt procedure main(A) # simple single threaded read all at once implementation lang := \A[1] | "Unicon" write("Unimplemented tasks for ",lang," as of ",&date) every task := taskNames() do { if lang == languages(task) then next write(task) } end # Generate task names procedure taskNames() continue := "" while \(txt := ReadURL(RCINDEX||continue)) do { txt ? { while tab(find("'\""),3,"0")||";",c) } dxml[1] := u # insert URI as 1st arg u := replacem!dxml # de-xml it every (c := "") ||:= tr[!u] # reencode everything c := replace(c,"%3E","'") # Hack to put single quotes back in c := replace(c,"%26quot%3B","\"") # Hack to put double quotes back in return c end procedure ReadURL(url) #: read URL into string page := open(url,"m",RCUA,RCXUA) | stop("Unable to open ",url) text := "" if page["Status-Code"] < 300 then while text ||:= reads(page,-1) else write(&errout,image(url),": ", page["Status-Code"]," ",page["Reason-Phrase"]) close(page) return text end