Browse Source

fix: extract ref from mldoc Tag

Tienson Qin 3 years ago
parent
commit
7adf1c9d67
1 changed files with 25 additions and 20 deletions
  1. 25 20
      deps/graph-parser/src/logseq/graph_parser/text.cljs

+ 25 - 20
deps/graph-parser/src/logseq/graph_parser/text.cljs

@@ -92,31 +92,36 @@
     (re-find #"^\d+$" v)
     (parse-long v)))
 
-(defn extract-refs-from-mldoc-ast
-  [v]
-  (->> v
-       (remove gp-mldoc/ast-link?)
-       (keep
-        (fn [[typ data]]
-          (case typ
-            "Link"
-            (case (first (:url data))
-              "Page_ref"
-              (second (:url data))
+(defn get-ref-from-ast
+  [[typ data]]
+  (case typ
+    "Link"
+    (case (first (:url data))
+      "Page_ref"
+      (second (:url data))
+
+      "Search"
+      (second (:url data))
 
-              "Search"
-              (second (:url data))
+      nil)
 
-              nil)
+    "Nested_link"
+    (page-ref/get-page-name (:content data))
 
-            "Nested_link"
-            (page-ref/get-page-name (:content data))
+    "Tag"
+    (if (= "Plain" (ffirst data))
+      (second (first data))
+      (get-ref-from-ast (first data)))
 
-            "Tag"
-            (second (first data))
+    nil))
 
-            nil)))
-       (map string/trim)
+(defn extract-refs-from-mldoc-ast
+  [v]
+  (->> v
+       (remove gp-mldoc/ast-link?)
+       (keep get-ref-from-ast)
+       (map (fn [x]
+              (string/trim x)))
        (set)))
 
 (defn parse-property