소스 검색

enhance: unlinked ref search alias as well

Weihua Lu 4 년 전
부모
커밋
cb59e9d0ce
1개의 변경된 파일18개의 추가작업 그리고 8개의 파일을 삭제
  1. 18 8
      src/main/frontend/db/model.cljs

+ 18 - 8
src/main/frontend/db/model.cljs

@@ -971,19 +971,29 @@
                (sort-by-left-recursive)
                db-utils/group-by-page))))))
 
+(defn- pattern [name]
+  (re-pattern (str "(?i)(?<!#)(?<!\\[\\[)"
+                   (util/regex-escape name)
+                   "(?!\\]\\])")))
+
 (defn get-page-unlinked-references
   [page]
   (when-let [repo (state/get-current-repo)]
     (when-let [conn (conn/get-conn repo)]
-      (let [page-id (:db/id (db-utils/entity [:block/name page]))
-            pattern (re-pattern (str "(?i)(?<!#)(?<!\\[\\[)" (util/regex-escape page) "(?!\\]\\])"))]
+      (let [page-id     (:db/id (db-utils/entity [:block/name page]))
+            alias-names (get-page-alias-names repo page)
+            patterns    (->> (conj alias-names page)
+                             (map pattern))
+            filter-fn   (fn [datom]
+                          (some (fn [p] (re-find p (:v datom))) patterns))]
         (->> (react/q repo [:block/unlinked-refs page-id]
-               {:query-fn (fn [db]
-                            (let [ids (->> (d/datoms db :aevt :block/content)
-                                           (filter #(re-find pattern (:v %)))
-                                           (map :e))
-                                  result (d/pull-many db block-attrs ids)]
-                              (remove (fn [block] (= page-id (:db/id (:block/page block)))) result)))}
+                      {:query-fn (fn [db]
+                                   (let [ids
+                                         (->> (d/datoms db :aevt :block/content)
+                                              (filter filter-fn)
+                                              (map :e))
+                                         result (d/pull-many db block-attrs ids)]
+                                     (remove (fn [block] (= page-id (:db/id (:block/page block)))) result)))}
                nil)
              react
              (sort-by-left-recursive)