settings moved to a separate module
This commit is contained in:
@@ -3,6 +3,7 @@
|
|||||||
:dependencies [[org.clojure/clojure "1.5.1"]
|
:dependencies [[org.clojure/clojure "1.5.1"]
|
||||||
[hiccup "1.0.0"]
|
[hiccup "1.0.0"]
|
||||||
[zeus "0.1.0"]
|
[zeus "0.1.0"]
|
||||||
|
[iokv "0.1.1"]
|
||||||
[cheshire "5.3.1"]
|
[cheshire "5.3.1"]
|
||||||
[ring/ring-core "1.2.0"]
|
[ring/ring-core "1.2.0"]
|
||||||
[com.taoensso/carmine "2.4.4"]
|
[com.taoensso/carmine "2.4.4"]
|
||||||
|
|||||||
+1
-1
@@ -2,7 +2,7 @@
|
|||||||
(:import
|
(:import
|
||||||
[java.util Calendar])
|
[java.util Calendar])
|
||||||
(:use
|
(:use
|
||||||
[notehub.settings]
|
[iokv.core]
|
||||||
[ring.util.codec :only [url-encode]]
|
[ring.util.codec :only [url-encode]]
|
||||||
[clojure.string :rename {replace sreplace}
|
[clojure.string :rename {replace sreplace}
|
||||||
:only [replace blank? trim lower-case split-lines split]])
|
:only [replace blank? trim lower-case split-lines split]])
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
(ns notehub.handler
|
(ns notehub.handler
|
||||||
(:use compojure.core
|
(:use
|
||||||
[notehub.views]
|
compojure.core
|
||||||
[notehub.settings]
|
iokv.core
|
||||||
|
notehub.views
|
||||||
[clojure.string :rename {replace sreplace} :only [replace]]
|
[clojure.string :rename {replace sreplace} :only [replace]]
|
||||||
[clojure.core.incubator :only [-?>]])
|
[clojure.core.incubator :only [-?>]])
|
||||||
(:require
|
(:require
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
(ns notehub.settings
|
|
||||||
(:use [clojure.string
|
|
||||||
:rename {replace sreplace}
|
|
||||||
:only [blank? trim split split-lines replace upper-case]]))
|
|
||||||
|
|
||||||
; Loads and parses any file with each line consisting a key and
|
|
||||||
; a value separated by a "=", and returns a corresponding key-value map.
|
|
||||||
(defn- get-pairs-map [file]
|
|
||||||
(let [file-content (slurp file)
|
|
||||||
pairs (map #(map trim (split % #"=" 2))
|
|
||||||
(remove blank? (split-lines file-content)))]
|
|
||||||
(apply hash-map
|
|
||||||
(mapcat #(list (keyword (first %)) (second %)) pairs))))
|
|
||||||
|
|
||||||
; Loads the setting file to a map
|
|
||||||
(def settings-map
|
|
||||||
(get-pairs-map "settings"))
|
|
||||||
|
|
||||||
; Loads the messages file to a map
|
|
||||||
(def messages-map
|
|
||||||
(get-pairs-map "messages"))
|
|
||||||
|
|
||||||
(defn get-message [key]
|
|
||||||
"Returns messages used in layouts. Every key should be a keyword, e.g. (get-message :title)."
|
|
||||||
(messages-map key))
|
|
||||||
|
|
||||||
(defn get-setting
|
|
||||||
"Takes a settings key, a converter function and a default value, and returns a corresponding
|
|
||||||
setting value. The default value is returned back when no setting value was found.
|
|
||||||
The converter function can be provided to convert the setting from string to a needed type.
|
|
||||||
This function is not applied to the specified default value!
|
|
||||||
Every specified key should be a keyword, e.g. (get-setting :page-width)."
|
|
||||||
[key & more]
|
|
||||||
(let [converter (first more)
|
|
||||||
default (second more)
|
|
||||||
value (settings-map key)
|
|
||||||
; Through this hack we can read security-critical settings from (previously
|
|
||||||
; set) shell variables without commiting their content to CVS
|
|
||||||
value (if value value
|
|
||||||
(System/getenv
|
|
||||||
(upper-case
|
|
||||||
(sreplace (name key) #"-" ""))))]
|
|
||||||
(if value
|
|
||||||
(if (fn? converter) (converter value) value)
|
|
||||||
default)))
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
(ns notehub.storage
|
(ns notehub.storage
|
||||||
(:use [notehub.settings]
|
(:use [iokv.core]
|
||||||
[zeus.core]
|
[zeus.core]
|
||||||
[clojure.string :only (blank? replace) :rename {replace sreplace}])
|
[clojure.string :only (blank? replace) :rename {replace sreplace}])
|
||||||
(:require [taoensso.carmine :as car :refer (wcar)]))
|
(:require [taoensso.carmine :as car :refer (wcar)]))
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
(ns notehub.views
|
(ns notehub.views
|
||||||
(:use [notehub.settings]
|
(:use
|
||||||
|
iokv.core
|
||||||
[clojure.string :rename {replace sreplace} :only [replace]]
|
[clojure.string :rename {replace sreplace} :only [replace]]
|
||||||
[clojure.core.incubator :only [-?>]]
|
[clojure.core.incubator :only [-?>]]
|
||||||
[hiccup.form]
|
[hiccup.form]
|
||||||
@@ -9,6 +10,8 @@
|
|||||||
[hiccup.page :only [include-js html5]])
|
[hiccup.page :only [include-js html5]])
|
||||||
(:require [notehub.api :as api]))
|
(:require [notehub.api :as api]))
|
||||||
|
|
||||||
|
(def get-message (get-map "messages"))
|
||||||
|
|
||||||
; Creates the main html layout
|
; Creates the main html layout
|
||||||
(defn layout
|
(defn layout
|
||||||
[title & content]
|
[title & content]
|
||||||
|
|||||||
Reference in New Issue
Block a user