From d74578c804df4053dec45c23e20369978a390dae Mon Sep 17 00:00:00 2001 From: Morgan Date: Sat, 4 Jul 2015 01:46:21 +0000 Subject: [PATCH] DRY up pages definition using minimum-unambiguous-path closes #16 (woo big negative line-count commit thanks @duckinator!) --- src/pronouns/pages.clj | 10 +++++----- src/pronouns/util.clj | 34 +++++----------------------------- src/pronouns/web.clj | 1 - 3 files changed, 10 insertions(+), 35 deletions(-) diff --git a/src/pronouns/pages.clj b/src/pronouns/pages.clj index 82f1535..7c1e92c 100644 --- a/src/pronouns/pages.clj +++ b/src/pronouns/pages.clj @@ -96,14 +96,14 @@ (take 5 inputs) (u/table-lookup inputs pronouns-table)))) -(defn make-link [abbrev row] - (let [link (str "/" (s/join "/" row)) - label (s/join "/" abbrev)] +(defn make-link [path] + (let [link (str "/" path) + label path] [:li [:a {:href link} label]])) (defn front [pronouns-table] - (let [abbreviations (u/abbreviate (sort pronouns-table)) - links (map (fn [entry] (make-link (first entry) (second entry))) abbreviations) + (let [abbreviations (u/abbreviate pronouns-table) + links (map make-link abbreviations) title "Pronoun Island"] (html [:html diff --git a/src/pronouns/util.clj b/src/pronouns/util.clj index 9a7d886..4d4f928 100644 --- a/src/pronouns/util.clj +++ b/src/pronouns/util.clj @@ -15,35 +15,6 @@ [query-key tabfile] (table-lookup query-key (slurp-tabfile tabfile))) -(defn disambiguate - "given a row and its lexically-closest neighbors, - determine the smallest abbreviation which is still - distinct." - [prev row next] - (loop [n 1] - (let [row-n (take n row)] - (cond - (>= n 5) row - (= row-n (take n prev)) (recur (+ n 1)) - (= row-n (take n next)) (recur (+ n 1)) - :else row-n)))) - -(defn abbreviate - "given a list of pronoun rows, return a list of - pairs, where the first item is the abbreviation - and the second is the original pronoun row." - [sorted-table] - (loop [acc nil - prev nil - row (first sorted-table) - todo (rest sorted-table)] - (let [next (first todo) - abbrev (disambiguate prev row next) - pair (list abbrev row) - acc2 (conj acc pair)] - (if (empty? todo) (reverse acc2) - (recur acc2 row next (rest todo)))))) - (defn minimum-unambiguous-path ([pronouns-table sections] (minimum-unambiguous-path pronouns-table sections 1)) ([pronouns-table sections number-of-sections] @@ -53,3 +24,8 @@ 0 nil 1 (clojure.string/join "/" sections-subset) (recur pronouns-table sections (+ number-of-sections 1)))))) + +(defn abbreviate + "given a list of pronoun rows, return a list of minimum unabiguous paths" + [pronouns-table] + (map (partial minimum-unambiguous-path pronouns-table) pronouns-table)) diff --git a/src/pronouns/web.clj b/src/pronouns/web.clj index 04acd5d..23ac603 100644 --- a/src/pronouns/web.clj +++ b/src/pronouns/web.clj @@ -28,7 +28,6 @@ :headers {"Content-Type" "text/css"} :body (slurp (io/resource "pronouns.css"))}) - (GET "/*" {params :params} {:status 200 :headers {"Content-Type" "text/html"}