Browse Source

feat(export): replace embed & block-refs in opml

rcmerci 4 years ago
parent
commit
7fff4c9cb5

+ 1 - 1
src/main/frontend/format/adoc.cljs

@@ -29,5 +29,5 @@
      ok-handler))
   (exportMarkdown [this content config references]
     (throw "not support"))
-  (exportOPML [this content config title]
+  (exportOPML [this content config title references]
     (throw "not support")))

+ 7 - 4
src/main/frontend/format/mldoc.cljs

@@ -62,8 +62,11 @@
                           (or references default-references)))
 
 (defn parse-export-opml
-  [content config title]
-  (parseAndExportOPML content config title))
+  [content config title references]
+  (parseAndExportOPML content
+                      config
+                      title
+                      (or references default-references)))
 
 (defn ast-export-markdown
   [ast config references]
@@ -244,8 +247,8 @@
     true)
   (exportMarkdown [this content config references]
     (parse-export-markdown content config references))
-  (exportOPML [this content config title]
-    (parse-export-opml content config title)))
+  (exportOPML [this content config title references]
+    (parse-export-opml content config title references)))
 
 (defn plain->text
   [plains]

+ 1 - 1
src/main/frontend/format/protocol.cljs

@@ -6,4 +6,4 @@
   (loaded? [this])
   (lazyLoad [this ok-handler])
   (exportMarkdown [this content config references])
-  (exportOPML [this content config title]))
+  (exportOPML [this content config title references]))

+ 17 - 10
src/main/frontend/handler/export.cljs

@@ -436,16 +436,23 @@
 
 (defn- export-files-as-opml
   [repo files]
-  (->> files
-       (mapv (fn [{:keys [path content names format]}]
-               (when (first names)
-                 (let [path
-                       (string/replace
-                        (string/lower-case path) #"(.+)\.(md|markdown|org)" "$1.opml")]
-                   [path (fp/exportOPML f/mldoc-record content
-                                        (f/get-default-config format)
-                                        (first names))]))))
-       (remove nil?)))
+  (let [get-page&block-refs-by-query-aux (get-embed-and-refs-blocks-pages-aux)
+        f (if (< (count files) 30)      ;query db for per page if (< (count files) 30), or pre-compute whole graph's page&block-refs
+            #(get-page&block-refs-by-query repo % get-page&block-refs-by-query-aux)
+            (let [page&block-refs (page&block-refs repo)]
+              #(get-page&block-refs repo % page&block-refs)))]
+    (->> files
+         (mapv (fn [{:keys [path content names format]}]
+                 (when (first names)
+                   (let [path
+                         (string/replace
+                          (string/lower-case path) #"(.+)\.(md|markdown|org)" "$1.opml")]
+                     [path (fp/exportOPML f/mldoc-record content
+                                          (f/get-default-config format)
+                                          (first names)
+                                          (js/JSON.stringify
+                                           (clj->js (f (first names)))))]))))
+         (remove nil?))))
 
 (defn- convert-md-files-unordered-list-or-heading
   [repo files heading-to-list?]