summaryrefslogtreecommitdiff
path: root/src/clarktown/parsers/bold.clj
blob: 79579bfe26c997456b8f3bbe5077977f78bcd00b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
(ns clarktown.parsers.bold
  (:require
    [clojure.string :as string]))


(defn render
  "Renders all occurring bold text as bold."
  [block _]
  (loop [block block
         matches (-> (re-seq #"(\*{2}|\_{2})[^\*|\_](.*?)[^\*|\_](\*{2}|\_{2})" block)
                     distinct)]
    (if (empty? matches)
      block
      (let [match (ffirst matches)
            value (subs match 2 (- (count match) 2))
            replacement (str "<strong>" value "</strong>")]
        (recur (string/replace block match replacement)
               (drop 1 matches))))))