summaryrefslogtreecommitdiff
path: root/src/clarktown/correctors
diff options
context:
space:
mode:
Diffstat (limited to 'src/clarktown/correctors')
-rw-r--r--src/clarktown/correctors/list_block.clj36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/clarktown/correctors/list_block.clj b/src/clarktown/correctors/list_block.clj
new file mode 100644
index 0000000..cf84bb1
--- /dev/null
+++ b/src/clarktown/correctors/list_block.clj
@@ -0,0 +1,36 @@
+(ns clarktown.correctors.list-block
+ (:require
+ [clojure.string :as string]
+ [clarktown.matchers.list-block :as matcher]))
+
+
+(defn empty-line-above?
+ "Determines whether there's a need for an empty new line
+ above the `line` at the current `index`. In the list block
+ case that's when the above line is not a newline and is not
+ a list block line."
+ [lines line index]
+ (and (matcher/match? line)
+ (> index 0)
+ (nil? (-> (nth lines (- index 1))
+ string/trim
+ matcher/match?))
+ (not (= (-> (nth lines (- index 1))
+ string/trim)
+ ""))))
+
+
+(defn empty-line-below?
+ "Determines whether there's a need for an empty new line
+ above the `line` at the current `index`. In the list block
+ case that's when the below line is not a newline and is not
+ a list block line."
+ [lines line index]
+ (and (matcher/match? line)
+ (> (- (count lines) 1) index)
+ (nil? (-> (nth lines (+ index 1))
+ string/trim
+ matcher/match?))
+ (not (= (-> (nth lines (+ index 1))
+ string/trim)
+ ""))))