|
|
@@ -34,7 +34,6 @@
|
|
|
(outliner-tree/blocks->vec-tree
|
|
|
(db/get-page-blocks-no-cache page) page) {:init-level 1
|
|
|
:heading-to-list? true}))
|
|
|
-
|
|
|
(defn- get-file-content
|
|
|
[file-path]
|
|
|
(if-let [page-name
|
|
|
@@ -196,7 +195,10 @@
|
|
|
(if v v
|
|
|
(let [[ref-blocks ref-pages]
|
|
|
(->> (if is-block?
|
|
|
- [page-or-block]
|
|
|
+ (if (or (seq? page-or-block)
|
|
|
+ (vector? page-or-block))
|
|
|
+ (vec page-or-block)
|
|
|
+ [page-or-block])
|
|
|
(db/get-page-blocks-no-cache
|
|
|
repo page-or-block {:pull-keys '[:block/refs]}))
|
|
|
(filterv :block/refs)
|
|
|
@@ -242,9 +244,9 @@
|
|
|
f)))
|
|
|
|
|
|
(defn- get-page&block-refs-by-query
|
|
|
- [repo page get-page&block-refs-by-query-aux]
|
|
|
+ [repo page-or-block get-page&block-refs-by-query-aux {:keys [is-block?] :or {is-block? false}}]
|
|
|
(let [[block-ids page-ids]
|
|
|
- (get-page&block-refs-by-query-aux repo page false #{} #{})
|
|
|
+ (get-page&block-refs-by-query-aux repo page-or-block is-block? #{} #{})
|
|
|
blocks
|
|
|
(db/pull-many repo '[*] block-ids)
|
|
|
pages-name-and-content
|
|
|
@@ -420,7 +422,7 @@
|
|
|
[repo files heading-to-list?]
|
|
|
(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)
|
|
|
+ #(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
|
|
|
@@ -436,7 +438,7 @@
|
|
|
[repo files]
|
|
|
(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)
|
|
|
+ #(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
|
|
|
@@ -452,6 +454,22 @@
|
|
|
(clj->js (f (first names)))))]))))
|
|
|
(remove nil?))))
|
|
|
|
|
|
+(defn- export-blocks-as-opml
|
|
|
+ [repo root-block-uuid]
|
|
|
+ (let [get-page&block-refs-by-query-aux (get-embed-and-refs-blocks-pages-aux)
|
|
|
+ f #(get-page&block-refs-by-query repo % get-page&block-refs-by-query-aux {:is-block? true})
|
|
|
+ root-block (db/entity [:block/uuid root-block-uuid])
|
|
|
+ blocks (db/get-block-and-children repo root-block-uuid)
|
|
|
+ refs (f blocks)
|
|
|
+ content (get-blocks-contents repo root-block-uuid)
|
|
|
+ format (or (:block/format root-block) (state/get-preferred-format))]
|
|
|
+ (fp/exportOPML f/mldoc-record content
|
|
|
+ (f/get-default-config format)
|
|
|
+ "untitled"
|
|
|
+ (js/JSON.stringify (clj->js refs)))))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
(defn- convert-md-files-unordered-list-or-heading
|
|
|
[repo files heading-to-list?]
|
|
|
(->> files
|