From a17bb85a5a7170efc92f110d11cff1cef43e92b2 Mon Sep 17 00:00:00 2001 From: Asko Nomm Date: Sun, 12 Dec 2021 19:52:08 -0300 Subject: Add code block --- src/clarktown/parsers/code_block.clj | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/clarktown/parsers/code_block.clj (limited to 'src/clarktown/parsers') diff --git a/src/clarktown/parsers/code_block.clj b/src/clarktown/parsers/code_block.clj new file mode 100644 index 0000000..9d41ae7 --- /dev/null +++ b/src/clarktown/parsers/code_block.clj @@ -0,0 +1,29 @@ +(ns clarktown.parsers.code-block + (:require + [clojure.string :as string])) + + +(defn is? + "Determines whether or not we're dealing with a code block." + [block] + (and (string/starts-with? block "```") + (string/ends-with? block "```"))) + + +(defn render + "Renders the code block." + [block _] + (let [language (->> block + (re-find #"\`\`\`(\w+)") + second) + code (as-> block n + (string/replace-first n #"\`\`\`(\w+)?\n" "") + (subs n 0 (- (count n) 5)) + (string/replace n #"&" "&") + (string/replace n #"<" "<") + (string/replace n #">" ">") + (string/replace n #"\n" "
") + (string/trim n))] + (if language + (str "
" code "
") + (str "
" code "
")))) -- cgit v1.2.3