RosettaCodeData/Task/Rosetta-Code-Find-unimpleme.../Clojure/rosetta-code-find-unimpleme...

20 lines
716 B
Clojure

(defn urlencode [s] (URLEncoder/encode s "UTF-8"))
(defn param [p v] (str p (urlencode v)))
(defn get-titles
([category]
(let [urlbase "http://www.rosettacode.org/w/api.php"
params ["action=query"
"list=categorymembers"
"format=xml"
"cmlimit=200"
(param "cmtitle=Category:" category)]
url (str urlbase "?" (string/join "&" params)]
(get-titles url nil)))
([url continue-at]
(let [continue-param (if continue-at (param "&cmcontinue=" continue-at))
[titles continue] (titles-cont (str url continue-param))]
(if continue
(lazy-cat titles (get-titles url continue))
titles))))