summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/clarktown/parsers/italic.clj4
-rw-r--r--test/clarktown/parsers/italic_test.clj17
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