summaryrefslogtreecommitdiff
path: root/src/clarktown/parsers/inline_code.clj
blob: b4323d7480dec1218c0de11b77b2b8579b90d190 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(ns clarktown.parsers.inline-code
  (:require
    [clojure.string :as string]))


(defn render
  "Renders all occuring inline code."
  [block]
  (loop [block block
         matches (-> (re-seq #"\`.*?\`" block)
                     distinct)]
    (if (empty? matches)
      block
      (let [match (first matches)
            value (-> (subs match 1 (- (count match) 1))
                      (string/replace #"&" "&")
                      (string/replace #"<" "&lt;")
                      (string/replace #">" "&gt;"))
            replacement (str "<code>" value "</code>")]
        (recur (string/replace block match replacement)
               (drop 1 matches))))))