summaryrefslogtreecommitdiff
path: root/src/clarktown/renderers/fenced_code_block.clj
diff options
context:
space:
mode:
authorAsko Nõmm <ano@ano.ee>2022-05-08 12:23:35 +0300
committerAsko Nõmm <ano@ano.ee>2022-05-08 12:23:35 +0300
commitb97891cc45b9a087a372767e25aa36788bc979bf (patch)
tree0401ef1f090575c36f9e110eaeb50412e3fd4139 /src/clarktown/renderers/fenced_code_block.clj
parentff2279150638b43aab4e65b2578a5dbd348e21d8 (diff)
Naming improvements, code block matcher test
Diffstat (limited to 'src/clarktown/renderers/fenced_code_block.clj')
-rw-r--r--src/clarktown/renderers/fenced_code_block.clj23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/clarktown/renderers/fenced_code_block.clj b/src/clarktown/renderers/fenced_code_block.clj
new file mode 100644
index 0000000..905c061
--- /dev/null
+++ b/src/clarktown/renderers/fenced_code_block.clj
@@ -0,0 +1,23 @@
+(ns clarktown.renderers.fenced-code-block
+ (:require
+ [clojure.string :as string]))
+
+
+(defn render
+ "Renders the code block."
+ [block _ _]
+ (let [language (->> block
+ (re-find #"\`\`\`(\w+)")
+ second)
+ lines (string/split-lines block)
+ block* (->> (next lines)
+ (take (- (count lines) 2))
+ (string/join \newline))
+ code (-> block*
+ (string/replace #"&" "&amp;")
+ (string/replace #"<" "&lt;")
+ (string/replace #">" "&gt;")
+ string/trim)]
+ (if language
+ (str "<pre><code class=\"language-" language "\">" code "</code></pre>")
+ (str "<pre><code>" code "</code></pre>"))))