Fix file links creating garbage pages

Fixes #6034, #6618, #6930
pull/7102/head
Gabriel Horner 2022-10-25 16:37:31 -04:00 committed by Tienson Qin
parent 0e4e02680e
commit 93dd107b8f
2 changed files with 28 additions and 16 deletions

View File

@ -67,11 +67,6 @@
(not (contains? supported-formats ext)))) (not (contains? supported-formats ext))))
value))) value)))
(and
(= typ "Complex")
(= (:protocol value) "file")
(:link value))
(and (and
(= typ "File") (= typ "File")
(second (first (:label (second block))))))) (second (first (:label (second block)))))))
@ -320,7 +315,7 @@
(let [refs (->> (concat tags refs [marker priority]) (let [refs (->> (concat tags refs [marker priority])
(remove string/blank?) (remove string/blank?)
(distinct)) (distinct))
refs (atom refs)] *refs (atom refs)]
(walk/prewalk (walk/prewalk
(fn [form] (fn [form]
;; skip custom queries ;; skip custom queries
@ -328,29 +323,29 @@
(= (first form) "Custom") (= (first form) "Custom")
(= (second form) "query")) (= (second form) "query"))
(when-let [page (get-page-reference form supported-formats)] (when-let [page (get-page-reference form supported-formats)]
(swap! refs conj page)) (swap! *refs conj page))
(when-let [tag (get-tag form)] (when-let [tag (get-tag form)]
(let [tag (text/page-ref-un-brackets! tag)] (let [tag (text/page-ref-un-brackets! tag)]
(when (gp-util/tag-valid? tag) (when (gp-util/tag-valid? tag)
(swap! refs conj tag)))) (swap! *refs conj tag))))
form)) form))
(concat title body)) (concat title body))
(let [refs (remove string/blank? @refs) (swap! *refs #(remove string/blank? %))
children-pages (->> (mapcat (fn [p] (let [children-pages (->> @*refs
(mapcat (fn [p]
(let [p (if (map? p) (let [p (if (map? p)
(:block/original-name p) (:block/original-name p)
p)] p)]
(when (string? p) (when (string? p)
(let [p (or (text/get-nested-page-name p) p)] (let [p (or (text/get-nested-page-name p) p)]
(when (text/namespace-page? p) (when (text/namespace-page? p)
(gp-util/split-namespace-pages p)))))) (gp-util/split-namespace-pages p)))))))
refs)
(remove string/blank?) (remove string/blank?)
(distinct)) (distinct))
refs (->> (distinct (concat refs children-pages)) refs' (->> (distinct (concat @*refs children-pages))
(remove nil?)) (remove nil?)
refs (map (fn [ref] (page-name->map ref with-id? db true date-formatter)) refs)] (map (fn [ref] (page-name->map ref with-id? db true date-formatter))))]
(assoc block :refs refs)))) (assoc block :refs refs'))))
(defn- with-block-refs (defn- with-block-refs
[{:keys [title body] :as block}] [{:keys [title body] :as block}]

View File

@ -322,6 +322,23 @@
"title:: core.async" "title:: core.async"
{}) {})
(is (= #{"core.async"} (is (= #{"core.async"}
(->> (d/q '[:find (pull ?b [*])
:in $
:where [?b :block/name]]
@conn)
(map (comp :block/name first))
(remove built-in-pages)
set)))))
(testing "for file and web uris"
(let [conn (ldb/start-conn)
built-in-pages (set (map string/lower-case default-db/built-in-pages-names))]
(graph-parser/parse-file conn
"foo.md"
(str "- [Filename.txt](file:///E:/test/Filename.txt)\n"
"- [example](https://example.com)")
{})
(is (= #{"foo"}
(->> (d/q '[:find (pull ?b [*]) (->> (d/q '[:find (pull ?b [*])
:in $ :in $
:where [?b :block/name]] :where [?b :block/name]]