summaryrefslogtreecommitdiff
path: root/src/clarktown/parsers
diff options
context:
space:
mode:
authorAsko Nõmm <asko@bien.ee>2021-12-07 21:38:01 -0300
committerAsko Nõmm <asko@bien.ee>2021-12-07 21:38:01 -0300
commit0faad35a2bb98eda9aa59dc6b95bb1978f3fda71 (patch)
treed6c95cfabf4de31ee362c0fc51643009a709b49f /src/clarktown/parsers
parent3099a0f7cc132a15c4ea1114937c34c07f751318 (diff)
Pass renderers down to parsers for potential recursiveness and add quote block
Diffstat (limited to 'src/clarktown/parsers')
-rw-r--r--src/clarktown/parsers/bold.clj2
-rw-r--r--src/clarktown/parsers/empty_block.clj2
-rw-r--r--src/clarktown/parsers/heading_block.clj2
-rw-r--r--src/clarktown/parsers/horizontal_line_block.clj2
-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/quote_block.clj23
-rw-r--r--src/clarktown/parsers/strikethrough.clj2
9 files changed, 31 insertions, 8 deletions
diff --git a/src/clarktown/parsers/bold.clj b/src/clarktown/parsers/bold.clj
index 5840a6e..296f002 100644
--- a/src/clarktown/parsers/bold.clj
+++ b/src/clarktown/parsers/bold.clj
@@ -5,7 +5,7 @@
(defn render
"Renders all occuring bold text as bold."
- [block]
+ [block _]
(loop [block block
matches (-> (re-seq #"\*\*.*?\*\*" block)
distinct)]
diff --git a/src/clarktown/parsers/empty_block.clj b/src/clarktown/parsers/empty_block.clj
index 57d4655..f16bf6a 100644
--- a/src/clarktown/parsers/empty_block.clj
+++ b/src/clarktown/parsers/empty_block.clj
@@ -13,5 +13,5 @@
(defn render
"Renders an empty block."
- [block]
+ [block _]
"")
diff --git a/src/clarktown/parsers/heading_block.clj b/src/clarktown/parsers/heading_block.clj
index 1bc1faf..84a5fdb 100644
--- a/src/clarktown/parsers/heading_block.clj
+++ b/src/clarktown/parsers/heading_block.clj
@@ -13,7 +13,7 @@
(defn render
"Renders the heading block."
- [block]
+ [block _]
(let [single-line-block (-> (string/replace block #"\n" "")
string/trim)
size (-> (string/split single-line-block #" ")
diff --git a/src/clarktown/parsers/horizontal_line_block.clj b/src/clarktown/parsers/horizontal_line_block.clj
index 213b295..06997a6 100644
--- a/src/clarktown/parsers/horizontal_line_block.clj
+++ b/src/clarktown/parsers/horizontal_line_block.clj
@@ -12,5 +12,5 @@
(defn render
"Renders the horizontal line block."
- [_]
+ [_ _]
"<hr>")
diff --git a/src/clarktown/parsers/inline_code.clj b/src/clarktown/parsers/inline_code.clj
index b4323d7..c75adf4 100644
--- a/src/clarktown/parsers/inline_code.clj
+++ b/src/clarktown/parsers/inline_code.clj
@@ -5,7 +5,7 @@
(defn render
"Renders all occuring inline code."
- [block]
+ [block _]
(loop [block block
matches (-> (re-seq #"\`.*?\`" block)
distinct)]
diff --git a/src/clarktown/parsers/italic.clj b/src/clarktown/parsers/italic.clj
index 5b90d12..d8c7c03 100644
--- a/src/clarktown/parsers/italic.clj
+++ b/src/clarktown/parsers/italic.clj
@@ -5,7 +5,7 @@
(defn render
"Renders all occuring italic text as italic."
- [block]
+ [block _]
(loop [block block
matches (-> (re-seq #"_.*?_" block)
distinct)]
diff --git a/src/clarktown/parsers/link_and_image.clj b/src/clarktown/parsers/link_and_image.clj
index 5ef8857..7964448 100644
--- a/src/clarktown/parsers/link_and_image.clj
+++ b/src/clarktown/parsers/link_and_image.clj
@@ -5,7 +5,7 @@
(defn render
"Renders all occuring links and images."
- [block]
+ [block _]
(loop [block block
matches (-> (re-seq #"\!?\[(.*?)\]\((.*?)\)" block)
distinct)]
diff --git a/src/clarktown/parsers/quote_block.clj b/src/clarktown/parsers/quote_block.clj
new file mode 100644
index 0000000..8b9c997
--- /dev/null
+++ b/src/clarktown/parsers/quote_block.clj
@@ -0,0 +1,23 @@
+(ns clarktown.parsers.quote-block
+ (:require
+ [clojure.string :as string]
+ [clarktown.parser :as parser]))
+
+
+(defn is?
+ "Determines whether the given block is a quote block."
+ [block]
+ (-> (string/replace block #"\n" "")
+ string/trim
+ (string/starts-with? ">")))
+
+
+(defn render
+ "Renders a quote block."
+ [block parsers]
+ (let [matches (re-seq #">.*" block)
+ blocks (for [match matches]
+ (-> (subs match 1)
+ string/trim
+ (parser/parse parsers)))]
+ (str "<blockquote>" (string/join "\n" blocks) "</blockquote>")))
diff --git a/src/clarktown/parsers/strikethrough.clj b/src/clarktown/parsers/strikethrough.clj
index add4f6b..31e4cc3 100644
--- a/src/clarktown/parsers/strikethrough.clj
+++ b/src/clarktown/parsers/strikethrough.clj
@@ -5,7 +5,7 @@
(defn render
"Renders all occuring strikethrough text."
- [block]
+ [block _]
(loop [block block
matches (-> (re-seq #"~~.*?~~" block)
distinct)]