diff --git a/src/leiningen/equilibrium.clj b/src/leiningen/equilibrium.clj
index 130c813..bcec78d 100644
--- a/src/leiningen/equilibrium.clj
+++ b/src/leiningen/equilibrium.clj
@@ -1,144 +1,6 @@
(ns leiningen.equilibrium
- (:require [leiningen.core.main :refer [info warn]]
- [clojure.java.io :as io]
- [clojure.string :as string]
- [markdown.core :as md]))
-
-(def input-root "resources/page")
-
-(defn filename [file]
- (-> file
- .toPath
- .getFileName
- .toString))
-
-(defn is-md-file? [file]
- (.endsWith (filename file) ".md"))
-
-(defn md-files [root]
- (->> root
- io/file
- file-seq
- (filter is-md-file?)))
-
-(defn render-markdown [content]
- (md/md-to-html-string content))
-
-(defn index-template []
- (slurp (str input-root "/index.html")))
-
-(defn clean-name [filename]
- (let [end (- (count filename) 3)
- start (inc (or (string/index-of filename "+") -1))]
- (subs filename start end)))
-
-(defn navcode [sites]
- (let [sorted-sites (sort-by #(filename %) sites)
- clean-file-name-fn #(clean-name (filename %))
- nav-line-fn #(str "
"
- ""
- (clean-file-name-fn %)
- "")]
- (str ""
- (reduce #(str %1 (nav-line-fn %2))
- ""
- sorted-sites)
- "
")))
-
-(defn site-destination [filename]
- (str "target/page/"
- (clean-name filename)
- ".html"))
-
-(comment
- (site-destination "01+allo.md")
- (site-destination "aside.md"))
-
-(defn particle-content [particle]
- (-> (str input-root "/particles/" particle ".md")
- io/file
- slurp
- render-markdown))
-
-(comment
- (particle-content "aside"))
-
-(def metadata-regex #"^---\n(.+?)\n---")
-
-(defn page-metadata [content]
- (let [metadata (re-find metadata-regex content)]
- (if metadata
- (read-string (second metadata))
- {})))
-
-(comment
- (page-metadata "---\nDINGE\n---\nwullwupp")
- (page-metadata "---\n{:a \"b\"}\n---dingedinge")
- (page-metadata "---\n{:a \"b\"}---dingedinge")
- (page-metadata "aiuaiaia"))
-
-(defn page-content [content]
- (if-let [metadata (re-find metadata-regex content)]
- (subs content (inc (count (first metadata))))
- content))
-
-(comment
- (page-content "---\nDINGE\n---\nwulle")
- (page-content "aiaiaiai"))
-
-(defn particles-in-content [content]
- (re-seq #"&particle:([^\s]+)" content))
-
-(comment
- (particles-in-content "asd &particle:hullu"))
-
-(defn fill-in-placeholders [context html page]
- (let [simple (-> html
- (string/replace #"&nav" (:navcode context))
- (string/replace #"&content" (:content page))
- (string/replace #"&title" (get-in page [:metadata :title])))
- particles (particles-in-content simple)]
- (reduce (fn [result particle]
- (string/replace result
- (first particle)
- (particle-content (second particle))))
- simple
- particles)))
-
-(comment
- (fill-in-placeholders {:navcode "hhh"}
- "&nav &content &particle:aside\n "
- {:content "dinge"})
- )
-
-(defn write-sites [context template sites]
- (doseq [site sites
- :let [translated (fill-in-placeholders context template site)
- filename (filename (:file site))
- destination (site-destination filename)]]
- (spit destination translated)))
-
-(defn analysed-page [file]
- (let [content (slurp file)]
- {:file file
- :content (-> content page-content render-markdown)
- :metadata (page-metadata content)}))
-
-(defn render
- "Renders all markdown pages under resources/user using the structure in resources/user/structure to target/page"
- [project]
- (.mkdirs (io/file "target/page"))
- (let [sites (md-files (str input-root "/sites"))
- rendered-sites (map analysed-page sites)
- template (index-template)
- context {:navcode (navcode sites)}]
- (write-sites context template rendered-sites)))
-
-(comment
- (render {})
- (doall (navcode (md-files "resources/user/sites"))))
+ (:require [leiningen.render :as render]
+ [leiningen.core.main :refer [info warn]]))
(defn deploy
"Deploys the rendered page under target/page to the configured ftp target"
@@ -148,12 +10,12 @@
(warn "refer to 'lein help equilibrium' for available tasks"))
(def argmapping
- {:render render
+ {:render render/render
:deploy deploy
:? invalid-input})
(defn equilibrium
- {:subtasks [#'render #'deploy]}
+ {:subtasks [#'render/render #'deploy]}
[project & args]
(let [kwarg (keyword (or (first args) "?"))
callfn (kwarg argmapping invalid-input)]
diff --git a/src/leiningen/render.clj b/src/leiningen/render.clj
new file mode 100644
index 0000000..28a515d
--- /dev/null
+++ b/src/leiningen/render.clj
@@ -0,0 +1,140 @@
+(ns leiningen.render
+ (:require [clojure.java.io :as io]
+ [clojure.string :as string]
+ [markdown.core :as md]))
+
+(def input-root "resources/page")
+
+(defn filename [file]
+ (-> file
+ .toPath
+ .getFileName
+ .toString))
+
+(defn is-md-file? [file]
+ (.endsWith (filename file) ".md"))
+
+(defn md-files [root]
+ (->> root
+ io/file
+ file-seq
+ (filter is-md-file?)))
+
+(defn render-markdown [content]
+ (md/md-to-html-string content))
+
+(defn index-template []
+ (slurp (str input-root "/index.html")))
+
+(defn clean-name [filename]
+ (let [end (- (count filename) 3)
+ start (inc (or (string/index-of filename "+") -1))]
+ (subs filename start end)))
+
+(defn navcode [sites]
+ (let [sorted-sites (sort-by #(filename %) sites)
+ clean-file-name-fn #(clean-name (filename %))
+ nav-line-fn #(str ""
+ ""
+ (clean-file-name-fn %)
+ "")]
+ (str ""
+ (reduce #(str %1 (nav-line-fn %2))
+ ""
+ sorted-sites)
+ "
")))
+
+(defn site-destination [filename]
+ (str "target/page/"
+ (clean-name filename)
+ ".html"))
+
+(comment
+ (site-destination "01+allo.md")
+ (site-destination "aside.md"))
+
+(defn particle-content [particle]
+ (-> (str input-root "/particles/" particle ".md")
+ io/file
+ slurp
+ render-markdown))
+
+(comment
+ (particle-content "aside"))
+
+(def metadata-regex #"^---\n(.+?)\n---")
+
+(defn page-metadata [content]
+ (let [metadata (re-find metadata-regex content)]
+ (if metadata
+ (read-string (second metadata))
+ {})))
+
+(comment
+ (page-metadata "---\nDINGE\n---\nwullwupp")
+ (page-metadata "---\n{:a \"b\"}\n---dingedinge")
+ (page-metadata "---\n{:a \"b\"}---dingedinge")
+ (page-metadata "aiuaiaia"))
+
+(defn page-content [content]
+ (if-let [metadata (re-find metadata-regex content)]
+ (subs content (inc (count (first metadata))))
+ content))
+
+(comment
+ (page-content "---\nDINGE\n---\nwulle")
+ (page-content "aiaiaiai"))
+
+(defn particles-in-content [content]
+ (re-seq #"&particle:([^\s]+)" content))
+
+(comment
+ (particles-in-content "asd &particle:hullu"))
+
+(defn fill-in-placeholders [context html page]
+ (let [simple (-> html
+ (string/replace #"&nav" (:navcode context))
+ (string/replace #"&content" (:content page))
+ (string/replace #"&title" (get-in page [:metadata :title])))
+ particles (particles-in-content simple)]
+ (reduce (fn [result particle]
+ (string/replace result
+ (first particle)
+ (particle-content (second particle))))
+ simple
+ particles)))
+
+(comment
+ (fill-in-placeholders {:navcode "hhh"}
+ "&nav &content &particle:aside\n "
+ {:content "dinge"})
+ )
+
+(defn write-sites [context template sites]
+ (doseq [site sites
+ :let [translated (fill-in-placeholders context template site)
+ filename (filename (:file site))
+ destination (site-destination filename)]]
+ (spit destination translated)))
+
+(defn analysed-page [file]
+ (let [content (slurp file)]
+ {:file file
+ :content (-> content page-content render-markdown)
+ :metadata (page-metadata content)}))
+
+(defn render
+ "Renders all markdown pages under resources/user using the structure in resources/user/structure to target/page"
+ [project]
+ (.mkdirs (io/file "target/page"))
+ (let [sites (md-files (str input-root "/sites"))
+ rendered-sites (map analysed-page sites)
+ template (index-template)
+ context {:navcode (navcode sites)}]
+ (write-sites context template rendered-sites)))
+
+(comment
+ (render {})
+ (doall (navcode (md-files "resources/user/sites"))))