diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/site.clj | 43 | ||||
| -rwxr-xr-x | src/utils.clj | 18 |
2 files changed, 27 insertions, 34 deletions
diff --git a/src/site.clj b/src/site.clj index 43e17a8..b3e7e70 100755 --- a/src/site.clj +++ b/src/site.clj @@ -70,22 +70,6 @@ ;; Utils -(defn ms-in-future [ms] - (+ ms (System/currentTimeMillis))) - -(defn swap [f] - (fn [& more] (apply f (reverse more)))) - -(def YYYYMMDD-format (new SimpleDateFormat "yyyyMMdd")) - -(defn today [] - (.format YYYYMMDD-format (new Date))) - -(def formatter (new SimpleDateFormat "h:mm a EEE M/d")) - -(defn non-empty-string? [s] - (and s (> (count s) 0))) - (defn open-file [dir-comps filename] (let [d (str-join (System/getProperty "file.separator") (cons *root-directory* dir-comps)) @@ -134,6 +118,9 @@ ;; Output +(defn strip-empty-vals [m] + (into {} (filter (fn [[k v]] (non-empty-string? v)) m))) + (defn stringify-and-escape [m] (zipmap (map name (keys m)) (map escape-html (vals m)))) @@ -141,11 +128,9 @@ (assoc d :created_on (.getTime (d :created_on)))) (defn process-message-for-output [d] - {"nick" (escape-html (d :nick)) - "avatar" (escape-html (d :avatar)) - "message_id" (d :message_id) - "created_on" (.format formatter (d :created_on)) - "content" (escape-html (d :content))}) + (stringify-and-escape + (strip-empty-vals + (assoc d :created_on (.format formatter (d :created_on)))))) (defn new-messages [room since-ts] (let [since-date (new Date (long since-ts))] @@ -153,19 +138,11 @@ @(room :messages))))) (defn process-user [u] - (if (non-empty-string? (u :avatar)) - {"nick" (u :nick) - "avatar" (escape-html (u :avatar))} - {"nick" (u :nick)})) + (stringify-and-escape (strip-empty-vals u))) (defn process-directory-listing [d] - (let [base {"nick" (escape-html (d :nick)) - "content" (escape-html (d :content)) - "count" (d :count)} - avatar (d :avatar)] - (if (non-empty-string? avatar) - (assoc base "avatar" avatar) - base))) + (stringify-and-escape + (strip-empty-vals d))) (defn prepare-user-list [room] (map process-user (sort-by #(% :nick) @@ -427,7 +404,7 @@ dict (zipmap keys res)] (map (fn [u] (let [u-id (u :user_id)] - (stringify-and-escape (merge u (dict u-id))))) + (process-directory-listing (merge u (dict u-id))))) users))))) (defn update-directory! [] diff --git a/src/utils.clj b/src/utils.clj index ea0176a..92fdad6 100755 --- a/src/utils.clj +++ b/src/utils.clj @@ -16,11 +16,27 @@ ;; Misc +(defn ms-in-future [ms] + (+ ms (System/currentTimeMillis))) + +(defn swap [f] + (fn [& more] (apply f (reverse more)))) + +(def YYYYMMDD-format (new SimpleDateFormat "yyyyMMdd")) + +(defn today [] + (.format YYYYMMDD-format (new Date))) + +(def formatter (new SimpleDateFormat "h:mm a EEE M/d")) + +(defn non-empty-string? [s] + (cond (string? s) (> (count s) 0) + :else s)) + (defn seconds [t] (* t 1000)) (defn minutes [t] (* t 60 1000)) (defn kbytes [b] (* b 1024)) - (defn mbytes [b] (* b 1024 1024)) ;; JSON responses |
