commit - 7785fefb1a8b53450df148c2bb6a57d7497a9ad2
commit + 965388145931751bf314276404816f631c27d01d
blob - bfb54fb821ff4452111e821d37e13b9c5208aae1
blob + 79244a398f341406894da2031e9ea6b2ac5b4117
--- src/blog/gemtext.clj
+++ src/blog/gemtext.clj
(defn- match-code-blocks []
(fn [rf]
- (let [acc (volatile! [])
+ (let [acc (volatile! [])
state (volatile! :normal)]
(fn
([] (rf))
([result] (rf result))
([result line]
(let [in-verbatim? (= :verbatim @state)
- marker? (starts-with? line "```")]
+ marker? (starts-with? line "```")]
(cond
(and (not in-verbatim?) marker?) ;go to verbatim
(do (vreset! state :verbatim)
result)
- (and in-verbatim? marker?) ;return what we've got and go to :normal
+ ;; return what we've got and go to :normal
+ (and in-verbatim? marker?)
(let [res [:verbatim (str/join "\n" @acc)]]
(vreset! state :normal)
(vreset! acc [])
([] (rf))
([result] (rf result))
([result line]
- (let [spaces? #{\space \tab}
+ (let [spaces? #{\space \tab}
nonblank? (complement spaces?)]
(rf result
(if-not (starts-with? line "=>")
(walk/prewalk
(fn [t]
(cond
- (nil? t) nil
+ (nil? t) nil
(or (seq? t)
(vector? t))
- (if (keyword? (first t))
+ (if-not (keyword? (first t))
+ t
(let [[type a b] t]
(.append sw
(case type
:link (str "=> " a " " b)
:paragraph a))
(.append sw "\n")
- nil)
- t)))
+ nil))))
thing)
(.toString sw)))
(or (seq? t)
(vector? t))
- (if (keyword? (first t))
+ (if-not (keyword? (first t))
+ t
(let [[type a b] t]
(swap! l conj
(case type
:blockquote [:blockquote a]
:link [:p.link [:a {:href a} b]]
:paragraph [:p a]))
- nil)
- t)))
+ nil))))
doc)
(seq @l)))