site

Website's source files.
Log | Files | Refs | Submodules | LICENSE

commit af0ea3c184bdd535d2e6fbb537f3e06eb8284393
parent 0d2164d93fc8adb49f2046814ba0fbf9308cc3a1
Author: Ryan Jeffrey <ryan@ryanmj.xyz>
Date:   Sat, 29 Jan 2022 03:41:50 -0800

Express handlebars, more engine stuff, more page generation utility functions

Diffstat:
Msrc/main/rmjxyz/app.cljs | 36++++++++++++++++++++++++++----------
1 file changed, 26 insertions(+), 10 deletions(-)

diff --git a/src/main/rmjxyz/app.cljs b/src/main/rmjxyz/app.cljs @@ -1,7 +1,7 @@ (ns rmjxyz.app (:require [cljs.nodejs :as nodejs] ["express" :as express] - ["express-handlebars" :as exphbs] + ["express-handlebars" :refer [engine]] [cljs.core.async :refer-macros [go]] [cljs.pprint :refer [pprint]] [cljs.core.async.interop :refer-macros [<p!]])) @@ -71,23 +71,40 @@ (defn create-command "Create a command object for rendering in the website." ;; LS list. - ([dir ext names]) + ([dir ext paths] (js-obj "args" dir + "lsList" (ls-list dir ext paths))) ;; Cat. - ([path args])) + ([path] (js-obj "args" path + "markup" (.readdirSync fs path "utf8")))) (defn create-windows "Create the window data for the site." - [] - (set! index-windows [])) + [commands] + (js-obj "commands" commands)) (defn init-server "Set the server's routes." [] (println "Starting server...") (let [server (express)] - (.engine server "handlebars" (exphbs (js-obj "defaultlayout" "main"))) - (.get server "/" (fn [req res next] (.render (.status res 200) "index" - (js-obj)))) + (.engine server "handlebars" (engine (js-obj "defaultlayout" "main"))) + (.get server "/:item" (fn [req res next] + (let [item (.toLowerCase (.-item (.-params req)))] + (if (some #(= item %) (ls-list "." ".html" ["main software" "sneed"])) + (go + (try + (<p! (.readFile fs item "utf8" (fn [err buf] + (if err + (js/console.log "Error when looking for item " item) + (.render (.status res 200) "post" (js-obj "text" buf)))))) + (catch js/Error err (js/console.error err)))) + (.render (.status res 404) "404"))))) + (.get server "/" (fn [req res next] + (.render (.status res 200) "index" + (create-windows [(create-command "public/figlet.html") + (create-command "." ".html" ["main" "software" "sneed"]) + (create-command "public/front.html")])))) + (.get server "*" (fn [req res next] (.render (.status res 404) "404"))) (.listen server 3000 (fn [] (println "Starting server on port 3000"))))) (defn start! @@ -98,8 +115,7 @@ (defn main! "Main function" [] - ; (start!) - ) + (start!)) (defn reload! "Stop the server."