Skip to content

Commit

Permalink
Clean up use of intermediate alist representation of org-roam-node
Browse files Browse the repository at this point in the history
  • Loading branch information
nanzhong committed Dec 10, 2021
1 parent 61eb76c commit ab36dd1
Showing 1 changed file with 40 additions and 38 deletions.
78 changes: 40 additions & 38 deletions weblorg-org-roam.el
Original file line number Diff line number Diff line change
Expand Up @@ -24,48 +24,50 @@ each node."
(org-roam-db-sync)
(setq weblorg--org-roam-db-synced t))

(let* ((org-roam-files (mapcar (lambda (file)
`(("file" . ,(nth 0 file))
("atime" . ,(nth 1 file))
("mtime" . ,(nth 2 file))))
(org-roam-db-query [:select [file atime mtime] :from files])))
(org-roam-files (sort org-roam-files (or sort-fn
(lambda (a b)
(string< (cdr (assoc "file" a))
(cdr (assoc "file" b)))))))
(org-roam-files (if limit (seq-take org-roam-files limit)
org-roam-files)))

(let ((org-roam-files (mapcar (lambda (result)
(car result))
(org-roam-db-query [:select file :from files]))))
;; Update id locations based on the org-roam-files.
(unless weblorg--org-id-updated
(org-id-update-id-locations (mapcar (lambda (file) (cdr (assoc "file" file))) org-roam-files))
(org-id-update-id-locations org-roam-files)
(setq weblorg--org-id-updated t))

(delq nil (mapcar (lambda (file)
(let ((file-path (cdr (assoc "file" file))))
(org-roam-with-temp-buffer file-path
'(print (current-buffer)))
(org-roam-with-temp-buffer file-path
(let* ((slug (weblorg--slugify (file-name-sans-extension (file-name-nondirectory file-path))))
(node (org-roam-node-at-point))
(tags (car (org-roam-db-query [:select [tag] :from tags :where (= node-id $s1)]
(org-roam-node-id node))))
(backlinks (mapcar (lambda (node)
(let* ((source-node (org-roam-backlink-source-node node))
(source-slug (weblorg--slugify (file-name-sans-extension (file-name-nondirectory (org-roam-node-file source-node)))))
(source-title (org-roam-node-title source-node)))
`(("slug" . ,source-slug)
("title" . ,source-title))))
(org-roam-backlinks-get node)))
(keywords (if render-org (weblorg--parse-org (buffer-string) file-path)
`(("title" . ,(org-roam-node-title node))))))
(weblorg--prepend keywords (cons "backlinks" backlinks))
(weblorg--prepend keywords (cons "tags" tags))
(weblorg--prepend keywords (cons "slug" slug))
(if filter-fn (if (funcall filter-fn keywords) keywords
nil)
keywords)))))
org-roam-files))))
(let* ((org-roam-nodes (mapcar (lambda (file)
(org-roam-with-temp-buffer file
(org-roam-node-at-point)))
org-roam-files))
(org-roam-nodes (seq-filter (lambda (node)
(if filter-fn (funcall filter-fn node)
t))
org-roam-nodes))
(org-roam-nodes (sort org-roam-nodes (or sort-fn
(lambda (a b)
(string< (org-roam-node-title a)
(org-roam-node-title b))))))
(org-roam-nodes (if limit (seq-take org-roam-nodes limit)
org-roam-nodes))
(org-roam-nodes (mapcar (lambda (node)
(let ((slug (weblorg--slugify (file-name-sans-extension (file-name-nondirectory (org-roam-node-file node)))))
(tags (org-roam-node-tags node))
(backlinks (mapcar (lambda (node)
(let* ((source-node (org-roam-backlink-source-node node))
(source-slug (weblorg--slugify (file-name-sans-extension (file-name-nondirectory (org-roam-node-file source-node)))))
(source-title (org-roam-node-title source-node)))
`(("slug" . ,source-slug)
("title" . ,source-title))))
(org-roam-backlinks-get node)))
(atime (org-roam-node-file-atime node))
(mtime (org-roam-node-file-mtime node))
(keywords (if render-org (weblorg--parse-org-file (org-roam-node-file node))
`(("title" . ,(org-roam-node-title node))))))
(weblorg--prepend keywords (cons "backlinks" backlinks))
(weblorg--prepend keywords (cons "tags" tags))
(weblorg--prepend keywords (cons "atime" atime))
(weblorg--prepend keywords (cons "mtime" mtime))
(weblorg--prepend keywords (cons "slug" slug))
keywords))
org-roam-nodes))
org-roam-nodes))))

(defun weblorg-input-source-org-roam-nodes (&optional filter-fn sort-fn limit)
"Find all org-roam file nodes.
Expand Down

0 comments on commit ab36dd1

Please sign in to comment.