diff options
| author | Asko Nõmm <asko@bien.ee> | 2021-12-07 21:38:01 -0300 |
|---|---|---|
| committer | Asko Nõmm <asko@bien.ee> | 2021-12-07 21:38:01 -0300 |
| commit | 0faad35a2bb98eda9aa59dc6b95bb1978f3fda71 (patch) | |
| tree | d6c95cfabf4de31ee362c0fc51643009a709b49f /src/clarktown/parsers | |
| parent | 3099a0f7cc132a15c4ea1114937c34c07f751318 (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.clj | 2 | ||||
| -rw-r--r-- | src/clarktown/parsers/empty_block.clj | 2 | ||||
| -rw-r--r-- | src/clarktown/parsers/heading_block.clj | 2 | ||||
| -rw-r--r-- | src/clarktown/parsers/horizontal_line_block.clj | 2 | ||||
| -rw-r--r-- | src/clarktown/parsers/inline_code.clj | 2 | ||||
| -rw-r--r-- | src/clarktown/parsers/italic.clj | 2 | ||||
| -rw-r--r-- | src/clarktown/parsers/link_and_image.clj | 2 | ||||
| -rw-r--r-- | src/clarktown/parsers/quote_block.clj | 23 | ||||
| -rw-r--r-- | src/clarktown/parsers/strikethrough.clj | 2 |
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)] |
