about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/pronouns/pages.clj10
-rw-r--r--src/pronouns/util.clj34
-rw-r--r--src/pronouns/web.clj1
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"}