summaryrefslogtreecommitdiff
path: root/src/utils.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.clj')
-rwxr-xr-xsrc/utils.clj67
1 files changed, 27 insertions, 40 deletions
diff --git a/src/utils.clj b/src/utils.clj
index 1a9e09e..8aaffba 100755
--- a/src/utils.clj
+++ b/src/utils.clj
@@ -18,6 +18,7 @@
clojure.contrib.sql
clojure.contrib.def
clojure.contrib.duck-streams
+ clojure.contrib.seq-utils
clojure.contrib.str-utils
compojure
config))
@@ -34,29 +35,6 @@
(.setPassword db-pass)
(.setMaxConnections 10))}))
-;; moved this to here which doesn't seem right... maybe a 'settings.clj' or something?
-(def *dumps-per-page* 20)
-(def *vip-dumps-per-page* 200)
-
-;; Message parsing
-
-;; http://snippets.dzone.com/posts/show/6995
-(def url-regex #"(?i)^((http\:\/\/|https\:\/\/|ftp\:\/\/)|(www\.))+(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$")
-(def pic-regex #"(?i)\.(jpg|jpeg|png|gif|bmp|svg)(\?|&|$)")
-
-(defn is-image? [word]
- (and (re-find url-regex word)
- (re-find pic-regex word)))
-
-(defn take-images [content]
- (filter is-image? (.split content " ")))
-
-(defn classify-msg [msg]
- (let [words (.split msg " ")
- imgs (map is-image? words)]
- (cond (every? boolean imgs) :image
- (some boolean imgs) :mixed
- :else :text)))
;; Misc
@@ -82,11 +60,12 @@
(declare stringify-and-escape)
(defn escape-html-deep [o]
- (if (map? o)
- (stringify-and-escape o)
- (cond (seq? o) (map escape-html-deep o)
- (or (true? o) (false? o)) o
- :else (escape-html o))))
+ (cond (map? o) (stringify-and-escape o)
+ (vector? o) (map escape-html-deep o)
+ (seq? o) (map escape-html-deep o)
+ (true? o) o
+ (false? o) o
+ :else (escape-html o)))
(defn stringify-and-escape [m]
(zipmap (map str* (keys m)) (map escape-html-deep (vals m))))
@@ -343,18 +322,21 @@
;; Parsing
-(= (type 0) java.lang.Integer)
-
(defn maybe-parse-int
([s] (maybe-parse-int s 0))
- ([s default]
- (if (= (type s) java.lang.Integer)
- s
- (try (Integer/parseInt s)
- (catch NumberFormatException _ default)))))
+ ([s a]
+ (if (number? s)
+ (int s)
+ (try (Integer/parseInt s)
+ (catch NumberFormatException _ a)))))
-(defn maybe-parse-long [s f]
- (if s (Long/parseLong s) f))
+(defn maybe-parse-long
+ ([s] (maybe-parse-long s 0))
+ ([s a]
+ (if (number? s)
+ (long s)
+ (try (Long/parseLong s)
+ (catch NumberFormatException _ a)))))
(defn parse-yyyy-mm-dd-date [s]
(try (.parse yyyy-mm-dd-formatter s)
@@ -413,9 +395,6 @@
(defn serve-template [template session]
(.toString (fetch-template template session)))
-(defn first-or-nil [l]
- (if (empty? l) nil (first l)))
-
;; VIP
(defn is-vip? [session]
@@ -466,3 +445,11 @@
(swap! cached-results assoc arguments
{ :result result :time (System/currentTimeMillis)})
result)))))
+
+;; Taken from Programming Clojure by Stuart Halloway
+
+(defn index-filter [pred coll]
+ (for [[idx elt] (indexed coll) :when (pred elt)] idx))
+
+(defn index-of [pred coll]
+ (first (index-filter pred coll)))