summaryrefslogtreecommitdiff
path: root/src/clarktown/parsers/ordered_list_block.clj
diff options
context:
space:
mode:
authorAsko Nomm <asko@bien.ee>2022-04-05 01:38:03 +0200
committerAsko Nomm <asko@bien.ee>2022-04-05 01:38:03 +0200
commit3770175783d53f9008d81dca8b19741b218d925f (patch)
treeb56482908485599d23afde3de3a91340eb96fb0a /src/clarktown/parsers/ordered_list_block.clj
parenta17bb85a5a7170efc92f110d11cff1cef43e92b2 (diff)
bump
Diffstat (limited to 'src/clarktown/parsers/ordered_list_block.clj')
-rw-r--r--src/clarktown/parsers/ordered_list_block.clj25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/clarktown/parsers/ordered_list_block.clj b/src/clarktown/parsers/ordered_list_block.clj
new file mode 100644
index 0000000..4dfaf38
--- /dev/null
+++ b/src/clarktown/parsers/ordered_list_block.clj
@@ -0,0 +1,25 @@
+(ns clarktown.parsers.ordered-list-block
+ (:require
+ [clojure.string :as string]
+ [clarktown.parser :as parser]))
+
+
+(defn is?
+ "Determines whether we're dealing with a list block or not."
+ [block]
+ (re-matches #"(?s)^\d\..*$" (string/trim block)))
+
+
+(defn render
+ "Renders the ordered list block"
+ [block parsers]
+ (loop [result ""
+ items (string/split-lines block)]
+ (if (empty? items)
+ (str "<ol>" result "</ol>")
+ (let [value (-> (first items)
+ (string/replace-first #"\d\." "")
+ string/trim
+ (parser/parse parsers))]
+ (recur (str result "<li>" value "</li>")
+ (drop 1 items))))))