(ns bitgloo-web.content (:gen-class) (:require [clojure.java.io :as io]) (:require [clojure.string :as str]) (:require [hiccup.page :as page]) (:require [markdown.core :refer [md-to-html-string]])) (def page-header [:div#header [:div#title [:img#logo {:src "/logo.jpg" :alt "bitgloo logo"}] [:a {:href "/"} [:h1 "bitgloo"]]]]) ;[:div#subtitle "Electronics design services"]]) (def page-menu [:div#menu [:a.menu-item {:href "/"} "Home"] [:a.menu-item {:href "/projects"} "Projects"]]) (def page-footer [:div#footer "© Clyne Sullivan 2023"]) (defn md-file? [path] (str/ends-with? path ".md")) (defn get-file-list [path] (->> path io/file .listFiles sort)) (defn parse-md-file [file] (-> file slurp md-to-html-string)) (defn render-md-files [file-list] (for [f file-list] [:div.content (parse-md-file f)])) (defn load-page [path] (let [file-list (filter md-file? (get-file-list path))] (when-not (empty? file-list) (page/html5 [:head [:title "bitgloo"] (page/include-css "/main.css")] [:body [:div#container page-header page-menu (render-md-files file-list) page-footer]]))))