diff options
| author | Asko Nõmm <asko@bien.ee> | 2022-04-19 17:50:19 +0300 |
|---|---|---|
| committer | Asko Nõmm <asko@bien.ee> | 2022-04-19 17:50:19 +0300 |
| commit | 52203a49aa544b2c11c96445d8732893160c436b (patch) | |
| tree | 84d7b0e9af92770647643bdf7ddbb898663bd7b8 /src/clarktown/renderers/heading_block.clj | |
| parent | 059bfa7bd9bfdde0c75646bf1dfc20d23da8a02c (diff) | |
WIP #16
Pretty much done. Needs more testing. And new documentation.
Diffstat (limited to 'src/clarktown/renderers/heading_block.clj')
| -rw-r--r-- | src/clarktown/renderers/heading_block.clj | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/clarktown/renderers/heading_block.clj b/src/clarktown/renderers/heading_block.clj new file mode 100644 index 0000000..f953d0a --- /dev/null +++ b/src/clarktown/renderers/heading_block.clj @@ -0,0 +1,44 @@ +(ns clarktown.renderers.heading-block + (:require + [clojure.string :as string] + [clarktown.matchers.heading-block :as matcher])) + + +(defn render-atx-heading + "Renders the hashbang heading block." + [block] + (let [single-line-block (-> (string/replace block #"\n" "") + string/trim) + size (-> (string/split single-line-block #" ") + first + string/trim + count) + value (->> (string/split single-line-block #" ") + next + (string/join " ") + string/trim)] + (str "<h" size ">" value "</h" size ">"))) + + +(defn render-settext-heading + "Renders the settext heading block." + [block] + (let [lines (string/split-lines block) + value (->> (split-at (- (count lines) 1) lines) + first + (string/join "\n")) + h1? (= "=" (-> (last lines) + string/trim + (string/split #"") + first))] + (if h1? + (str "<h1>" value "</h1>") + (str "<h2>" value "</h2>")))) + + +(defn render + "Renders the heading block." + [block _] + (if (matcher/is-atx-heading? block) + (render-atx-heading block) + (render-settext-heading block))) |
