Add initial working version with simple templating
This version supports copying over HTML files and including simple static template files.
This commit is contained in:
parent
60bff98ac2
commit
a7c9b1feff
|
@ -1,8 +1,7 @@
|
|||
(ns website.core
|
||||
(:require
|
||||
[clojure.java.io :as io]
|
||||
[clojure.string :as string]
|
||||
))
|
||||
[clojure.java.io :as io]
|
||||
[clojure.string :as string]))
|
||||
|
||||
(def template-reg #"#\{\{(.*)\}\}")
|
||||
(def template-dir "./site/templates")
|
||||
|
@ -14,11 +13,8 @@
|
|||
(defn generate-template-map [template-dir]
|
||||
"Grab all files in the template directory and insert them into a map with
|
||||
the filenames as keyword keys"
|
||||
(let [files (filter #(.isFile %) (file-seq (io/file template-dir)))
|
||||
]
|
||||
(reduce #(assoc %1 (keyword (.getName %2)) (slurp %2)) {} files)
|
||||
)
|
||||
)
|
||||
(let [files (filter #(.isFile %) (file-seq (io/file template-dir)))]
|
||||
(reduce #(assoc %1 (keyword (.getName %2)) (slurp %2)) {} files)))
|
||||
|
||||
; Generate a string-string map of the new filepaths and the unprocessed contents
|
||||
(defn generate-output-file-map [html-dir, output-dir]
|
||||
|
@ -29,20 +25,16 @@ the filenames as keyword keys"
|
|||
and :path keyword.
|
||||
"
|
||||
(let [file-listing (filter #(.isFile %) (file-seq (io/file html-dir)))
|
||||
contents (map slurp file-listing)
|
||||
old-paths (map #(.getPath %) file-listing)
|
||||
rootless-paths (map #(subs % (count html-dir)) old-paths)
|
||||
new-paths (map #(string/join [output-dir %]) rootless-paths)
|
||||
]
|
||||
(zipmap new-paths contents)
|
||||
)
|
||||
)
|
||||
contents (map slurp file-listing)
|
||||
old-paths (map #(.getPath %) file-listing)
|
||||
rootless-paths (map #(subs % (count html-dir)) old-paths)
|
||||
new-paths (map #(string/join [output-dir %]) rootless-paths)]
|
||||
(zipmap new-paths contents)))
|
||||
|
||||
(defn put_file [file_map_entry]
|
||||
"Output a file to a location while ensuring the required parent directories exist."
|
||||
(io/make-parents (first file_map_entry))
|
||||
(spit (first file_map_entry) (second file_map_entry))
|
||||
)
|
||||
(spit (first file_map_entry) (second file_map_entry)))
|
||||
|
||||
(defn insert_templates [file-map-entry template-map]
|
||||
; Will go through and check all the template names in the file then
|
||||
|
@ -53,10 +45,8 @@ the filenames as keyword keys"
|
|||
file (first file-map-entry)
|
||||
contents (second file-map-entry)
|
||||
templates-used (re-seq template-reg contents)
|
||||
new-contents (reduce #(string/replace %1 (first %2) ((keyword (second %2)) template-map)) contents templates-used)
|
||||
]
|
||||
[file new-contents]
|
||||
))
|
||||
new-contents (reduce #(string/replace %1 (first %2) ((keyword (second %2)) template-map)) contents templates-used)]
|
||||
[file new-contents]))
|
||||
|
||||
; Main routine
|
||||
; Read all the templates
|
||||
|
@ -69,6 +59,6 @@ the filenames as keyword keys"
|
|||
; * Stick it in the out directory
|
||||
(for [of output-file-map]
|
||||
; of is a key-value pair
|
||||
(put_file (insert_templates of template-map))
|
||||
(put_file (insert_templates of template-map))
|
||||
;(put_file of)
|
||||
)
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
(ns website.main
|
||||
(:require [website.core :as core])
|
||||
(:gen-class)
|
||||
)
|
||||
(:gen-class))
|
||||
|
||||
(defn -main [&args]
|
||||
(core/foo 1)
|
||||
)
|
||||
(core/foo 1))
|
||||
|
|
Loading…
Reference in New Issue