aboutsummaryrefslogtreecommitdiffstats
path: root/src/bitgloo_web/content.clj
blob: 948edf47e4e2fc0eae2a815f8476bcbc17e2ef70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
(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]]))))