diff options
| -rw-r--r-- | src/clarktown/parsers/bold.clj | 4 | ||||
| -rw-r--r-- | test/clarktown/parsers/bold_test.clj | 17 |
2 files changed, 19 insertions, 2 deletions
diff --git a/src/clarktown/parsers/bold.clj b/src/clarktown/parsers/bold.clj index cc209e6..e672153 100644 --- a/src/clarktown/parsers/bold.clj +++ b/src/clarktown/parsers/bold.clj @@ -7,11 +7,11 @@ "Renders all occurring bold text as bold." [block _] (loop [block block - matches (-> (re-seq #"\*\*.*?\*\*" block) + matches (-> (re-seq #"(\*{2}|\_{2})(.*?)(\*{2}|\_{2})" block) distinct)] (if (empty? matches) block - (let [match (first matches) + (let [match (ffirst matches) value (subs match 2 (- (count match) 2)) replacement (str "<strong>" value "</strong>")] (recur (string/replace block match replacement) diff --git a/test/clarktown/parsers/bold_test.clj b/test/clarktown/parsers/bold_test.clj new file mode 100644 index 0000000..9689052 --- /dev/null +++ b/test/clarktown/parsers/bold_test.clj @@ -0,0 +1,17 @@ +(ns clarktown.parsers.bold-test + (:require [clojure.test :refer [deftest testing is]] + [clarktown.parsers.bold :as bold])) + + +(deftest bold-test + (testing "Creating bold text with two surrounding asterisk characters" + (is (= "<strong>This is bold.</strong>" + (bold/render "**This is bold.**" nil)))) + + (testing "Creating bold text with two surrounding underscore characters" + (is (= "<strong>This is bold.</strong>" + (bold/render "__This is bold.__" nil)))) + + (testing "Creating bold text with both underscores and asterisks mixed" + (is (= "Hi, my name is <strong>John</strong>, what is <strong>your name?</strong>" + (bold/render "Hi, my name is **John**, what is __your name?__" nil)))))
\ No newline at end of file |
