summaryrefslogtreecommitdiff
path: root/src/clarktown/matchers/heading_block.clj
diff options
context:
space:
mode:
authorAsko Nõmm <84135165+askonomm@users.noreply.github.com>2022-04-23 02:43:49 +0300
committerGitHub <noreply@github.com>2022-04-23 02:43:49 +0300
commit70d88384ea788f7b2ad5ebb725762f7d27300504 (patch)
treeb371f12617949daf2b40538ba9a2e4457b657d0f /src/clarktown/matchers/heading_block.clj
parent059bfa7bd9bfdde0c75646bf1dfc20d23da8a02c (diff)
parentdc921cbe1c786995a8670efd9f5556ee9df064f9 (diff)
Merge pull request #17 from askonomm/16-improve-architecture
Improve architecture
Diffstat (limited to 'src/clarktown/matchers/heading_block.clj')
-rw-r--r--src/clarktown/matchers/heading_block.clj29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/clarktown/matchers/heading_block.clj b/src/clarktown/matchers/heading_block.clj
new file mode 100644
index 0000000..2295f26
--- /dev/null
+++ b/src/clarktown/matchers/heading_block.clj
@@ -0,0 +1,29 @@
+(ns clarktown.matchers.heading-block
+ (:require
+ [clojure.string :as string]))
+
+
+(defn is-atx-heading?
+ "Determines whether the given block is a atx heading."
+ [block]
+ (-> (string/replace block #"\n" "")
+ string/trim
+ (string/starts-with? "#")))
+
+
+(defn is-settext-heading?
+ "Determines whether the given block is a settext heading."
+ [block]
+ (let [lines (-> (string/split-lines block))
+ chars (-> (last lines)
+ string/trim
+ (string/split #""))]
+ (and (> (count lines) 1)
+ (every? #{"-" "="} chars))))
+
+
+(defn match?
+ "Determines whether the given block is a heading block."
+ [block]
+ (or (is-atx-heading? block)
+ (is-settext-heading? block))) \ No newline at end of file