From b47826d69d70c12c3b5d9792d870e9a0ef7700dc Mon Sep 17 00:00:00 2001 From: Gabriel Horner Date: Fri, 26 Aug 2022 14:32:14 -0400 Subject: [PATCH] Fix page block not saving invalid-properties --- .../src/logseq/graph_parser/extract.cljc | 27 ++++++++++++------- .../test/logseq/graph_parser_test.cljs | 23 +++++++++++++--- 2 files changed, 37 insertions(+), 13 deletions(-) diff --git a/deps/graph-parser/src/logseq/graph_parser/extract.cljc b/deps/graph-parser/src/logseq/graph_parser/extract.cljc index 8f642c369..374f6f865 100644 --- a/deps/graph-parser/src/logseq/graph_parser/extract.cljc +++ b/deps/graph-parser/src/logseq/graph_parser/extract.cljc @@ -42,12 +42,12 @@ (defn- build-page-entity [properties file page-name page ref-tags {:keys [date-formatter db]}] (let [alias (:alias properties) - alias (if (string? alias) [alias] alias) - aliases (and alias + alias' (if (string? alias) [alias] alias) + aliases (and alias' (seq (remove #(or (= page-name (gp-util/page-name-sanity-lc %)) (string/blank? %)) ;; disable blank alias - alias))) - aliases (->> + alias'))) + aliases' (->> (map (fn [alias] (let [page-name (gp-util/page-name-sanity-lc alias) @@ -65,17 +65,26 @@ :block/alias aliases} {:block/name page-name}))) aliases) - (remove nil?))] + (remove nil?)) + [*valid-properties *invalid-properties] + ((juxt filter remove) + (fn [[k _v]] (gp-property/valid-property-name? (str k))) properties) + valid-properties (into {} *valid-properties) + invalid-properties (set (map (comp name first) *invalid-properties))] (cond-> (gp-util/remove-nils (assoc (gp-block/page-name->map page false db true date-formatter) :block/file {:file/path (gp-util/path-normalize file)})) - (seq properties) - (assoc :block/properties properties) - (seq aliases) - (assoc :block/alias aliases) + (seq valid-properties) + (assoc :block/properties valid-properties) + + (seq invalid-properties) + (assoc :block/invalid-properties invalid-properties) + + (seq aliases') + (assoc :block/alias aliases') (:tags properties) (assoc :block/tags (let [tags (:tags properties) diff --git a/deps/graph-parser/test/logseq/graph_parser_test.cljs b/deps/graph-parser/test/logseq/graph_parser_test.cljs index e9b8c06e5..55b91c1f4 100644 --- a/deps/graph-parser/test/logseq/graph_parser_test.cljs +++ b/deps/graph-parser/test/logseq/graph_parser_test.cljs @@ -210,15 +210,30 @@ (let [conn (ldb/start-conn) properties {"foo" "valid" "[[foo]]" "invalid" - "some,prop" "invalid"}] - (graph-parser/parse-file conn "foo.md" (gp-property/->block-content properties) {}) + "some,prop" "invalid"} + body (str (gp-property/->block-content properties) + "\n- " (gp-property/->block-content properties))] + (graph-parser/parse-file conn "foo.md" body {}) (is (= [{:block/properties {:foo "valid"} :block/invalid-properties #{"[[foo]]" "some,prop"}}] (->> (d/q '[:find (pull ?b [*]) :in $ - :where [?b :block/properties] [(missing? $ ?b :block/name)]] + :where + [?b :block/properties] + [(missing? $ ?b :block/pre-block?)] + [(missing? $ ?b :block/name)]] @conn) (map first) (map #(select-keys % [:block/properties :block/invalid-properties])))) - "Has correct (in)valid block properties"))) + "Has correct (in)valid block properties") + + (is (= [{:block/properties {:foo "valid"} + :block/invalid-properties #{"[[foo]]" "some,prop"}}] + (->> (d/q '[:find (pull ?b [*]) + :in $ + :where [?b :block/properties] [?b :block/name]] + @conn) + (map first) + (map #(select-keys % [:block/properties :block/invalid-properties])))) + "Has correct (in)valid page properties")))