summaryrefslogtreecommitdiff
path: root/src/clarktown/parsers
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
parenta17bb85a5a7170efc92f110d11cff1cef43e92b2 (diff)
bump
Diffstat (limited to 'src/clarktown/parsers')
-rw-r--r--src/clarktown/parsers/bold.clj2
-rw-r--r--src/clarktown/parsers/code_block.clj3
-rw-r--r--src/clarktown/parsers/inline_code.clj2
-rw-r--r--src/clarktown/parsers/italic.clj2
-rw-r--r--src/clarktown/parsers/link_and_image.clj2
-rw-r--r--src/clarktown/parsers/ordered_list_block.clj25
-rw-r--r--src/clarktown/parsers/strikethrough.clj2
7 files changed, 32 insertions, 6 deletions
diff --git a/src/clarktown/parsers/bold.clj b/src/clarktown/parsers/bold.clj
index 296f002..cc209e6 100644
--- a/src/clarktown/parsers/bold.clj
+++ b/src/clarktown/parsers/bold.clj
@@ -4,7 +4,7 @@
(defn render
- "Renders all occuring bold text as bold."
+ "Renders all occurring bold text as bold."
[block _]
(loop [block block
matches (-> (re-seq #"\*\*.*?\*\*" block)
diff --git a/src/clarktown/parsers/code_block.clj b/src/clarktown/parsers/code_block.clj
index 9d41ae7..b1699d7 100644
--- a/src/clarktown/parsers/code_block.clj
+++ b/src/clarktown/parsers/code_block.clj
@@ -4,7 +4,7 @@
(defn is?
- "Determines whether or not we're dealing with a code block."
+ "Determines whether we're dealing with a code block."
[block]
(and (string/starts-with? block "```")
(string/ends-with? block "```")))
@@ -23,6 +23,7 @@
(string/replace n #"<" "&lt;")
(string/replace n #">" "&gt;")
(string/replace n #"\n" "<br>")
+ (string/replace n #"\tab" "<tab>")
(string/trim n))]
(if language
(str "<pre class=\"language-" language "\"><code>" code "</code></pre>")
diff --git a/src/clarktown/parsers/inline_code.clj b/src/clarktown/parsers/inline_code.clj
index c75adf4..1de73bf 100644
--- a/src/clarktown/parsers/inline_code.clj
+++ b/src/clarktown/parsers/inline_code.clj
@@ -4,7 +4,7 @@
(defn render
- "Renders all occuring inline code."
+ "Renders all occurring inline code."
[block _]
(loop [block block
matches (-> (re-seq #"\`.*?\`" block)
diff --git a/src/clarktown/parsers/italic.clj b/src/clarktown/parsers/italic.clj
index d8c7c03..5dfe46e 100644
--- a/src/clarktown/parsers/italic.clj
+++ b/src/clarktown/parsers/italic.clj
@@ -4,7 +4,7 @@
(defn render
- "Renders all occuring italic text as italic."
+ "Renders all occurring italic text as italic."
[block _]
(loop [block block
matches (-> (re-seq #"_.*?_" block)
diff --git a/src/clarktown/parsers/link_and_image.clj b/src/clarktown/parsers/link_and_image.clj
index 7964448..dd8c9d0 100644
--- a/src/clarktown/parsers/link_and_image.clj
+++ b/src/clarktown/parsers/link_and_image.clj
@@ -4,7 +4,7 @@
(defn render
- "Renders all occuring links and images."
+ "Renders all occurring links and images."
[block _]
(loop [block block
matches (-> (re-seq #"\!?\[(.*?)\]\((.*?)\)" block)
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))))))
diff --git a/src/clarktown/parsers/strikethrough.clj b/src/clarktown/parsers/strikethrough.clj
index 31e4cc3..6f03152 100644
--- a/src/clarktown/parsers/strikethrough.clj
+++ b/src/clarktown/parsers/strikethrough.clj
@@ -4,7 +4,7 @@
(defn render
- "Renders all occuring strikethrough text."
+ "Renders all occurring strikethrough text."
[block _]
(loop [block block
matches (-> (re-seq #"~~.*?~~" block)