diff options
| author | Asko Nomm <asko@bien.ee> | 2022-04-10 05:16:34 +0200 |
|---|---|---|
| committer | Asko Nomm <asko@bien.ee> | 2022-04-10 05:16:34 +0200 |
| commit | d4fd8d01eb9b57f1ee7b770ca24fc5e121b49edc (patch) | |
| tree | 0170a42d350401bd897a8ca26269ea68928c8c94 /src | |
| parent | 9fae4b6dfabc7485a8a2debf108d8190761590f5 (diff) | |
Fix #9: Underscores in links get rendered into
Diffstat (limited to 'src')
| -rw-r--r-- | src/clarktown/parsers.clj | 12 | ||||
| -rw-r--r-- | src/clarktown/parsers/link_and_image.clj | 12 |
2 files changed, 15 insertions, 9 deletions
diff --git a/src/clarktown/parsers.clj b/src/clarktown/parsers.clj index b5b6132..cd909b3 100644 --- a/src/clarktown/parsers.clj +++ b/src/clarktown/parsers.clj @@ -20,26 +20,26 @@ {:matcher horizontal-line-block/is? :renderers [horizontal-line-block/render]} {:matcher heading-block/is? - :renderers [bold/render + :renderers [link-and-image/render + bold/render italic/render inline-code/render strikethrough/render - link-and-image/render heading-block/render]} {:matcher quote-block/is? :renderers [quote-block/render]} {:matcher code-block/is? :renderers [code-block/render]} {:matcher list-block/is? - :renderers [bold/render + :renderers [link-and-image/render + bold/render italic/render inline-code/render strikethrough/render - link-and-image/render list-block/render]} - {:renderers [bold/render + {:renderers [link-and-image/render + bold/render italic/render inline-code/render strikethrough/render - link-and-image/render paragraph-block/render]}]) diff --git a/src/clarktown/parsers/link_and_image.clj b/src/clarktown/parsers/link_and_image.clj index 3dbbac7..fb8ad31 100644 --- a/src/clarktown/parsers/link_and_image.clj +++ b/src/clarktown/parsers/link_and_image.clj @@ -3,18 +3,24 @@ [clojure.string :as string])) +(defn encode-href + [href] + (-> href + (string/replace "_" "_"))) + + (defn render "Renders all occurring links and images." [block _] (loop [block block - matches (-> (re-seq #"\!?\[(\w+( \w+|\.|\,)*)\]\((.*?)\)" block) + matches (-> (re-seq #"\!?\[(\w+( \w+)*)\]\((.*?)\)" block) distinct)] (if (empty? matches) block (let [[whole-match label _ href] (first matches) image? (string/starts-with? whole-match "!") - image (str "<img src=\"" href "\" alt=\"" label "\">") - link (str "<a href=\"" href "\">" label "</a>")] + image (str "<img src=\"" (encode-href href) "\" alt=\"" label "\">") + link (str "<a href=\"" (encode-href href) "\">" label "</a>")] (recur (if image? (string/replace block whole-match image) (string/replace block whole-match link)) |
