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