Add nohighlight to klipsified code blocks.

This commit is contained in:
Aleksander Madland Stapnes 2017-02-02 00:49:51 -03:00
parent 70c95b41d8
commit 60c4ec0054
2 changed files with 27 additions and 6 deletions

View file

@ -471,21 +471,26 @@
(catch Exception _ (catch Exception _
(throw (IllegalArgumentException. "Failed to parse config.edn"))))) (throw (IllegalArgumentException. "Failed to parse config.edn")))))
(defn klipsify
"Add the klipse html under the :klipse key and adds nohighlight
classes to any code blocks that are to be klipsified. Expects
configuration to be under :klipse, if there's none it does nothing."
[{:keys [klipse content] :as post-or-page}]
(-> post-or-page
(update :klipse klipse/emit content)
(update :content klipse/tag-nohighlight (:settings klipse))))
(defn compile-assets (defn compile-assets
"Generates all the html and copies over resources specified in the config" "Generates all the html and copies over resources specified in the config"
[] []
(println (green "compiling assets...")) (println (green "compiling assets..."))
(let [{:keys [^String site-url blog-prefix rss-name recent-posts sass-dest keep-files ignored-files previews? author-root-uri theme] (let [{:keys [^String site-url blog-prefix rss-name recent-posts sass-dest keep-files ignored-files previews? author-root-uri theme]
:as config} (read-config) :as config} (read-config)
posts (map (fn [{:keys [klipse content] :as post}] posts (map klipsify (add-prev-next (read-posts config)))
(assoc post :klipse (klipse/emit klipse content)))
(add-prev-next (read-posts config)))
posts-by-tag (group-by-tags posts) posts-by-tag (group-by-tags posts)
posts (tag-posts posts config) posts (tag-posts posts config)
latest-posts (->> posts (take recent-posts) vec) latest-posts (->> posts (take recent-posts) vec)
pages (map (fn [{:keys [klipse content] :as page}] pages (map klipsify (read-pages config))
(assoc page :klipse (klipse/emit klipse content)))
(read-pages config))
home-page (->> pages home-page (->> pages
(filter #(boolean (:home? %))) (filter #(boolean (:home? %)))
(first)) (first))

View file

@ -51,6 +51,22 @@
;;;;;;;;;;;; ;;;;;;;;;;;;
;; klipse ;; klipse
(defn eval-classes
"Takes the :settings map and returns all values that are css class selectors."
[settings]
(filter #(str/starts-with? % ".") (vals settings)))
(defn tag-nohighlight
"Takes html as a string and a coll of class-selectors and adds
nohighlight to all code blocks that includes one of them."
[html settings]
(letfn [(tag [h clas]
(enlive/sniptest h
[(keyword (str "code" clas))]
(fn [x]
(update-in x [:attrs :class] #(str % " nohighlight")))))]
(reduce tag html (eval-classes settings))))
(def defaults (def defaults
{:js-src {:js-src
{:min "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js" {:min "https://storage.googleapis.com/app.klipse.tech/plugin_prod/js/klipse_plugin.min.js"