Initial data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 72d218235f
commit f23f22d71c
199087 changed files with 3378941 additions and 0 deletions

View file

@ -0,0 +1,5 @@
(require
'[clojure.xml :as xml]
'[clojure.set :as set]
'[clojure.string :as string])
(import '[java.net URLEncoder])

View file

@ -0,0 +1,7 @@
(defn titles-cont [url]
(let [docseq (-> url xml/parse xml-seq)]
((juxt #(filter string? %), #(-> (filter map? %) first :cmcontinue))
(for [{:keys [tag attrs content]} docseq :when (#{:cm :query-continue} tag)]
(if (= tag :cm)
(attrs :title)
(-> content first :attrs))))))

View file

@ -0,0 +1,19 @@
(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))))

View file

@ -0,0 +1,10 @@
(defn unimplemented [lang-name]
(let [title-set #(future (apply sorted-set (get-titles %)))
all-titles (title-set "Programming_Tasks")
lang-titles (title-set lang-name)]
(seq (set/difference @all-titles @lang-titles))))
(let [titles (unimplemented "Clojure")]
(doseq [title titles] (println title))
(println "count: " (count titles)))
(shutdown-agents)