about summary refs log tree commit diff
path: root/src/pronouns/web.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/pronouns/web.clj')
-rw-r--r--src/pronouns/web.clj41
1 files changed, 7 insertions, 34 deletions
diff --git a/src/pronouns/web.clj b/src/pronouns/web.clj
index 83f25e6..32d0883 100644
--- a/src/pronouns/web.clj
+++ b/src/pronouns/web.clj
@@ -9,51 +9,24 @@
             [ring.middleware.session :as session]
             [ring.middleware.session.cookie :as cookie]
             [ring.adapter.jetty :as jetty]
-            [environ.core :refer [env]]))
+            [environ.core :refer [env]]
+            [pronouns.util :as u]
+            [pronouns.pages :as pages]))
 
 (def config {:default-server-port 5000
              :pronoun-table-path "resources/pronouns.tab"})
-
-(defn slurp-tabfile [path]
-  (let [lines (s/split (slurp path) #"\n")]
-    (map #(s/split % #"\t") lines)))
-
-(defn lookup [inputs]
-  (let [pronouns-table (slurp-tabfile (:pronoun-table-path config))
-        n (count inputs)
-        filtered-table (filter #(= inputs (take n %)) pronouns-table)]
-    (first filtered-table)))
-
-(defn parse-pronouns-with-lookup [pronouns-string]
-  (let [inputs (s/split pronouns-string #"/")
-        n (count inputs)]
-    (if (>= n 5)
-      (take 5 inputs)
-      (lookup inputs))))
-
-(defn render-examples-page
-  ([subject object possessive-determiner possessive-pronoun reflexive]
-     (s/join "\n"
-             [(str subject " went to the park")
-              (str "I went with " object)
-              (str subject " brought " possessive-determiner " frisbee")
-              (str "at least I think it was " possessive-pronoun)
-              (str subject " threw it to " reflexive)]))
-  ([nothing]
-     (str "We couldn't find those pronouns in our database, please ask us to "
-          "add them, or issue a pull request at "
-          "https://github.com/witch-house/pronoun.is/blob/master/resources/pronouns.tab")))
+(def pronouns-table (u/slurp-tabfile (:pronoun-table-path config)))
 
 (defroutes app-routes
   (GET "/" []
        {:status 200
         :headers {"Content-Type" "text/plain"}
-        :body "a blurb explaining how to use this site"})
+        :body (pages/front)})
+
   (GET "/*" {params :params}
        {:status 200
         :headers {"Content-Type" "text/plain"}
-        :body (let [pronouns (parse-pronouns-with-lookup (:* params))]
-                (apply render-examples-page (or pronouns [:error])))})
+        :body (pages/pronouns (:* params) pronouns-table)})
 
   (ANY "*" []
        (route/not-found (slurp (io/resource "404.html")))))