(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#title-container [:a {:href "/"} [:img#logo {:src "/logo.jpg" :alt "bitgloo logo"}] [:h1 "bitgloo"]]]) (def page-footer [:div#footer [:span "© 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.block (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 page-header [:div#posts (render-md-files file-list)] page-footer]))))