浏览代码

fix: import fails hard on page names with '#'

Follow up to c3f0cc1953b09afd2e2a381788d16edd5025c42b
Gabriel Horner 1 年之前
父节点
当前提交
27c5d120ef

+ 6 - 1
deps/graph-parser/src/logseq/graph_parser/block.cljs

@@ -350,6 +350,11 @@
                 {}))]
     [page page-entity]))
 
+(defn sanitize-hashtag-name
+  "This must be kept in sync with its reverse operation in logseq.db.frontend.content"
+  [s]
+  (string/replace s "#" "HashTag-"))
+
 ;; TODO: refactor
 (defn page-name->map
   "Create a page's map structure given a original page name (string).
@@ -363,7 +368,7 @@
   (when-not (and db (common-util/uuid-string? original-page-name)
                  (not (ldb/page? (d/entity db [:block/uuid (uuid original-page-name)]))))
     (let [original-page-name (-> (string/trim original-page-name)
-                                 (string/replace "#" "HashTag-"))
+                                 sanitize-hashtag-name)
           [page _page-entity] (cond
                                 (and original-page-name (string? original-page-name))
                                 (page-name-string->map original-page-name db date-formatter

+ 13 - 8
deps/graph-parser/src/logseq/graph_parser/exporter.cljs

@@ -26,7 +26,8 @@
             [logseq.db.frontend.db-ident :as db-ident]
             [logseq.db.frontend.property.build :as db-property-build]
             [logseq.db.frontend.malli-schema :as db-malli-schema]
-            [logseq.graph-parser.property :as gp-property]))
+            [logseq.graph-parser.property :as gp-property]
+            [logseq.graph-parser.block :as gp-block]))
 
 (defn- add-missing-timestamps
   "Add updated-at or created-at timestamps if they doesn't exist"
@@ -75,7 +76,9 @@
                     (select-keys tag-block [:block/created-at :block/updated-at]))))))))
 
 (defn- get-page-uuid [page-names-to-uuids page-name]
-  (or (get page-names-to-uuids page-name)
+  (or (get page-names-to-uuids (if (string/includes? (str page-name) "#")
+                                 (string/lower-case (gp-block/sanitize-hashtag-name page-name))
+                                 page-name))
       (throw (ex-info (str "No uuid found for page name " (pr-str page-name))
                       {:page-name page-name}))))
 
@@ -377,11 +380,11 @@
                          ;; else
                          [(built-in-property-name-to-idents prop) prop-value]))))
              (into {}))]
-             (cond-> m
-               (and (contains? props :query-sort-desc) (:query-sort-by props))
-               (update :logseq.property.table/sorting
-                       (fn [v]
-                         (assoc-in v [0 :asc?] (not (:query-sort-desc props))))))))
+    (cond-> m
+      (and (contains? props :query-sort-desc) (:query-sort-by props))
+      (update :logseq.property.table/sorting
+              (fn [v]
+                (assoc-in v [0 :asc?] (not (:query-sort-desc props))))))))
 
 (defn- update-page-or-date-values
   "Converts :node or :date names to entity values"
@@ -933,7 +936,9 @@
                                 extract-options
                                 {:db db})]
     (cond (contains? common-config/mldoc-support-formats format)
-          (extract/extract file content extract-options')
+          (-> (extract/extract file content extract-options')
+              (update :pages (fn [pages]
+                               (map #(dissoc % :block.temp/original-page-name) pages))))
 
           (common-config/whiteboard? file)
           (-> (extract/extract-whiteboard-edn file content extract-options')

+ 1 - 1
deps/graph-parser/test/logseq/graph_parser/exporter_test.cljs

@@ -174,7 +174,7 @@
       (is (= 1 (count (d/q '[:find ?b :where [?b :block/tags :logseq.class/Query]] @conn))))
 
       ;; Don't count pages like url.md that have properties but no content
-      (is (= 7
+      (is (= 8
              (count (->> (d/q '[:find [(pull ?b [:block/title :block/type]) ...]
                                 :where [?b :block/title] [_ :block/page ?b]] @conn)
                          (filter #(= "page" (:block/type %))))))

+ 1 - 0
deps/graph-parser/test/resources/exporter-test-graph/pages/page with #tag.md

@@ -0,0 +1 @@
+- HA