diff options
| -rw-r--r-- | src/clarktown/correctors/code_block.clj | 24 | ||||
| -rw-r--r-- | test/clarktown/correctors/atx_heading_block_test.clj | 30 | ||||
| -rw-r--r-- | test/clarktown/correctors/code_block_test.clj | 37 |
3 files changed, 79 insertions, 12 deletions
diff --git a/src/clarktown/correctors/code_block.clj b/src/clarktown/correctors/code_block.clj index e767390..fcda19b 100644 --- a/src/clarktown/correctors/code_block.clj +++ b/src/clarktown/correctors/code_block.clj @@ -5,23 +5,23 @@ (defn empty-line-above? [lines line index] - (and (= (string/trim line) "```") - (> index 0) - (->> (take index lines) - (filter #(= (string/trim %) "```")) - count - odd?) - (not (= (-> (nth lines (- index 1)) - string/trim) "")))) + (let [occurences (->> (take index lines) + (filter #(string/starts-with? (string/trim %) "```")) + count)] + (and (string/starts-with? (string/trim line) "```") + (> index 0) + (even? occurences) + (not (= (-> (nth lines (- index 1)) + string/trim) ""))))) (defn empty-line-below? [lines line index] - (and (= (string/trim line) "```") + (and (string/starts-with? (string/trim line) "```") (< index (- (count lines) 1)) (->> (take index lines) - (filter #(= (string/trim %) "```")) + (filter #(string/starts-with? (string/trim %) "```")) count - even?) + odd?) (not (= (-> (nth lines (+ index 1)) - string/trim) ""))))
\ No newline at end of file + string/trim) "")))) diff --git a/test/clarktown/correctors/atx_heading_block_test.clj b/test/clarktown/correctors/atx_heading_block_test.clj new file mode 100644 index 0000000..3ece304 --- /dev/null +++ b/test/clarktown/correctors/atx_heading_block_test.clj @@ -0,0 +1,30 @@ +(ns clarktown.correctors.atx-heading-block-test + (:require + [clojure.test :refer [deftest testing is]] + [clarktown.correctors.atx-heading-block :as corrector])) + + +(deftest atx-heading-block-corrector + (testing "Empty line above" + (let [line "# Hello" + lines ["Some text goes here" line] + index 1] + (is (true? (corrector/empty-line-above? lines line index))))) + + (testing "No empty line above" + (let [line "# Hello" + lines ["Some text goes here" "\n" line] + index 2] + (is (false? (corrector/empty-line-above? lines line index))))) + + (testing "Empty line below" + (let [line "# Hello" + lines [line "Some text goes here"] + index 0] + (is (true? (corrector/empty-line-below? lines line index))))) + + (testing "No empty line below" + (let [line "# Hello" + lines [line "\n" "Some text goes here"] + index 0] + (is (false? (corrector/empty-line-below? lines line index)))))) diff --git a/test/clarktown/correctors/code_block_test.clj b/test/clarktown/correctors/code_block_test.clj new file mode 100644 index 0000000..16711da --- /dev/null +++ b/test/clarktown/correctors/code_block_test.clj @@ -0,0 +1,37 @@ +(ns clarktown.correctors.code-block-test + (:require + [clojure.test :refer [deftest testing is]] + [clarktown.correctors.code-block :as corrector])) + + +(deftest code-block-corrector + (testing "Empty line above" + (let [line "```clojure" + lines ["Some text goes here" line "some code here" "```"] + index 1] + (is (true? (corrector/empty-line-above? lines line index))))) + + (testing "No empty line above" + (let [line "```" + lines ["Some text goes here" "\n" line "some code" "```"] + index 2] + (is (false? (corrector/empty-line-above? lines line index))))) + + (testing "Empty line below" + (let [line "```" + lines ["Some text goes here" line "some code" line "some text"] + index 3] + (is (true? (corrector/empty-line-below? lines line index))))) + + (testing "No empty line below" + (let [line "```" + lines ["Some text goes here" line "some code" line "\n" "some text"] + index 3] + (is (false? (corrector/empty-line-below? lines line index))))) + + (testing "No empty line below when ending with code block" + (let [line "```" + lines ["Some text goes here" line "some code" line] + index 3] + (is (false? (corrector/empty-line-below? lines line index)))))) + |
