diff --git a/doerg/resources/net/deertopia/doerg/tuftesque.css b/doerg/resources/net/deertopia/doerg/tuftesque.css index af1619c..eb771cc 100644 --- a/doerg/resources/net/deertopia/doerg/tuftesque.css +++ b/doerg/resources/net/deertopia/doerg/tuftesque.css @@ -1,9 +1,9 @@ @charset "UTF-8"; -@import "/vendor/ibm-plex-serif/css/ibm-plex-serif-default.min.css"; -@import "/vendor/ibm-plex-sans-kr/css/ibm-plex-sans-kr-default.min.css"; -@import "/vendor/ibm-plex-math/css/ibm-plex-math-default.min.css"; -@import "deerstar.css"; +/* @import "/vendor/ibm-plex-serif/css/ibm-plex-serif-default.min.css"; */ +/* @import "/vendor/ibm-plex-sans-kr/css/ibm-plex-sans-kr-default.min.css"; */ +/* @import "/vendor/ibm-plex-math/css/ibm-plex-math-default.min.css"; */ +/* @import "deerstar.css"; */ html { font-size: 15px; diff --git a/doerg/src/net/deertopia/doerg/config.clj b/doerg/src/net/deertopia/doerg/config.clj index f86565b..54e753f 100644 --- a/doerg/src/net/deertopia/doerg/config.clj +++ b/doerg/src/net/deertopia/doerg/config.clj @@ -1,10 +1,19 @@ (ns net.deertopia.doerg.config (:require [clojure.spec.alpha :as s] + [babashka.fs :as fs] [spec-dict.main :refer [dict]])) (s/def ::config - (s/keys :req [])) + (s/keys :req [::ibm-plex-web])) -(def default {}) +(def default + {::ibm-plex-web + (fs/file + (or (System/getenv "IBM_PLEX_WEB") + (some #(let [x (fs/path % "ibm-plex-web")] + (and (fs/exists? x) x)) + (fs/split-paths (System/getenv "XDG_DATA_DIRS")))))}) (def ^:dynamic *cfg* default) + +(s/def ::ibm-plex-web string?) diff --git a/doerg/src/net/deertopia/doerg/html.clj b/doerg/src/net/deertopia/doerg/html.clj index 74f01cd..01658fa 100644 --- a/doerg/src/net/deertopia/doerg/html.clj +++ b/doerg/src/net/deertopia/doerg/html.clj @@ -1,6 +1,8 @@ (ns net.deertopia.doerg.html "Common HTML elements and utilities" - (:require [clojure.java.io :as io])) + (:require [clojure.java.io :as io] + [net.deertopia.doerg.config :as cfg] + [babashka.fs :as fs])) #_ (def navbar @@ -25,13 +27,32 @@ (def charset [:meta {:charset "utf-8"}]) +(defn external-stylesheet [href] + [:link {:rel "stylesheet" :type "text/css" :href href}]) + +(def ibm-plex + (for [family ["serif" "sans-kr" "math"]] + #_ + [:style (-> cfg/*cfg* ::cfg/ibm-plex-web + (fs/file (format "css/ibm-plex-%s-default.min.css" family)) + slurp)] + (external-stylesheet + (format "ibm-plex-web/css/ibm-plex-%s-default.min.css" family)))) + +(def deerstar + (external-stylesheet "deerstar.css") + #_ + [:style (slurp (io/resource "net/deertopia/doerg/deerstar.css"))]) + (def tuftesque + (external-stylesheet "tuftesque.css") #_ [:link {:rel "stylesheet" :type "text/css" :href "/resources/tuftesque.css"}] + #_ [:style (slurp (io/resource "net/deertopia/doerg/tuftesque.css"))]) (def head - (list viewport charset tuftesque)) + (list viewport charset ibm-plex deerstar tuftesque)) diff --git a/doerg/src/net/deertopia/doerg/render.clj b/doerg/src/net/deertopia/doerg/render.clj index 548b7a5..b02b9eb 100644 --- a/doerg/src/net/deertopia/doerg/render.clj +++ b/doerg/src/net/deertopia/doerg/render.clj @@ -56,9 +56,7 @@ [:html [:head [:title "org document"] - doerg-html/viewport - doerg-html/charset - doerg-html/tuftesque] + doerg-html/head] [:body [:article rendered]]])))) diff --git a/doerg/src/net/deertopia/doerg/repl.clj b/doerg/src/net/deertopia/doerg/repl.clj index a572a64..b6c4d63 100644 --- a/doerg/src/net/deertopia/doerg/repl.clj +++ b/doerg/src/net/deertopia/doerg/repl.clj @@ -1,14 +1,28 @@ (ns net.deertopia.doerg.repl (:require [net.deertopia.doerg.element :as element] [net.deertopia.doerg.render :as render] - [hiccup2.core :as h])) + [net.deertopia.doerg.config :as cfg] + [clojure.java.io :as io] + [hiccup2.core :as h] + [babashka.fs :as fs])) (def some-org-file "/home/msyds/org/20251228003307-prerequisite_context_in_korean.org") +(defn- force-create-sym-link [path target] + (fs/delete-if-exists path) + (fs/create-sym-link path target)) + (defn render-html [& {:keys [src dest] :or {src some-org-file - dest "/tmp/t.html"}}] - (->> (h/html (-> src - slurp element/read-string render/org-document)) - str (spit dest))) + dest "/tmp/doerg-test"}}] + (fs/create-dirs dest) + (force-create-sym-link (fs/file dest "ibm-plex-web") + (-> cfg/*cfg* ::cfg/ibm-plex-web)) + (force-create-sym-link (fs/file dest "deerstar.css") + (io/resource "net/deertopia/doerg/deerstar.css")) + (force-create-sym-link (fs/file dest "tuftesque.css") + (io/resource "net/deertopia/doerg/tuftesque.css")) + (fs/delete-if-exists (fs/file dest "index.html")) + (->> (h/html (-> src slurp element/read-string render/org-document)) + str (spit (fs/file dest "index.html"))))