From b97891cc45b9a087a372767e25aa36788bc979bf Mon Sep 17 00:00:00 2001 From: Asko Nõmm Date: Sun, 8 May 2022 12:23:35 +0300 Subject: Naming improvements, code block matcher test --- src/clarktown/correctors/fenced_code_block.clj | 37 ++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/clarktown/correctors/fenced_code_block.clj (limited to 'src/clarktown/correctors/fenced_code_block.clj') diff --git a/src/clarktown/correctors/fenced_code_block.clj b/src/clarktown/correctors/fenced_code_block.clj new file mode 100644 index 0000000..77bc023 --- /dev/null +++ b/src/clarktown/correctors/fenced_code_block.clj @@ -0,0 +1,37 @@ +(ns clarktown.correctors.fenced-code-block + (:require + [clojure.string :as string])) + + +(defn newline-above? + "Determines whether there's a need for an empty new line + above the `line` at the current `index`. In the case of a + code block, which starts with three backticks (```), if there's + no empty newline above, we need to create one, and so this + function must then return `true`." + [lines line index] + (and (string/starts-with? (string/trim line) "```") + (> index 0) + (->> (take index lines) + (filter #(string/starts-with? (string/trim %) "```")) + count + even?) + (not (= (-> (nth lines (- index 1)) + string/trim) "")))) + + +(defn newline-below? + "Determines whether there's a need for an empty new line + below the `line` at the current `index`. In the case of a + code block, which ends with three backticks (```), if there's + no empty newline above, we need to create one, and so this + function must then return `true`." + [lines line index] + (and (string/starts-with? (string/trim line) "```") + (< index (- (count lines) 1)) + (->> (take index lines) + (filter #(string/starts-with? (string/trim %) "```")) + count + odd?) + (not (= (-> (nth lines (+ index 1)) + string/trim) "")))) -- cgit v1.2.3