Browse Source

settings moved to a separate module

master
Christian Mueller 12 years ago
parent
commit
94d3bad342
  1. 1
      project.clj
  2. 2
      src/notehub/api.clj
  3. 11
      src/notehub/handler.clj
  4. 45
      src/notehub/settings.clj
  5. 2
      src/notehub/storage.clj
  6. 19
      src/notehub/views.clj

1
project.clj

@ -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"]

2
src/notehub/api.clj

@ -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]])

11
src/notehub/handler.clj

@ -1,9 +1,10 @@
(ns notehub.handler (ns notehub.handler
(:use compojure.core (:use
[notehub.views] compojure.core
[notehub.settings] iokv.core
[clojure.string :rename {replace sreplace} :only [replace]] notehub.views
[clojure.core.incubator :only [-?>]]) [clojure.string :rename {replace sreplace} :only [replace]]
[clojure.core.incubator :only [-?>]])
(:require (:require
[hiccup.util :as util] [hiccup.util :as util]
[compojure.handler :as handler] [compojure.handler :as handler]

45
src/notehub/settings.clj

@ -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)))

2
src/notehub/storage.clj

@ -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)]))

19
src/notehub/views.clj

@ -1,14 +1,17 @@
(ns notehub.views (ns notehub.views
(:use [notehub.settings] (:use
[clojure.string :rename {replace sreplace} :only [replace]] iokv.core
[clojure.core.incubator :only [-?>]] [clojure.string :rename {replace sreplace} :only [replace]]
[hiccup.form] [clojure.core.incubator :only [-?>]]
[hiccup.core] [hiccup.form]
[hiccup.element] [hiccup.core]
[hiccup.util :only [escape-html]] [hiccup.element]
[hiccup.page :only [include-js html5]]) [hiccup.util :only [escape-html]]
[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]

Loading…
Cancel
Save