Return stringified multi-valued list

This commit is contained in:
Jesse Millwood 2024-10-09 10:36:22 -04:00
parent 82f7522809
commit 7fba972dec

View File

@ -14,70 +14,76 @@
#+name: export_block #+name: export_block
#+begin_src emacs-lisp :exports none #+begin_src emacs-lisp :exports none
(setq export-file "SpaceCompanies.csv") (setq export-file "SpaceCompanies.csv")
(defun get-multi-valued (pom prop) (defun get-multi-valued (pom prop)
(let ((end (save-excursion (search-forward ":END:"))) (let ((end (save-excursion (search-forward ":END:")))
(elt-b nil) (elt-b nil)
(elt-e nil) (elt-e nil)
(elt nil) (elt nil)
(values '())) (values '())
(save-excursion (values-str ""))
(setq elt-b (search-forward-regexp (format ":%s\\+?:" prop) end t)) (save-excursion
(while elt-b (setq elt-b (search-forward-regexp (format ":%s\\+?:" prop) end t))
(setq elt-e (line-end-position)) (while elt-b
(setq elt (format "%s" (buffer-substring-no-properties (setq elt-e (line-end-position))
elt-b elt-e))) (setq elt (format "%s" (buffer-substring-no-properties
(setq values (cons elt values)) elt-b elt-e)))
(setq elt-b (search-forward-regexp (format ":%s\\+?:" prop) end t))) (setq values (cons elt values))
) (setq elt-b (search-forward-regexp (format ":%s\\+?:" prop) end t)))
values
))
(defun extract-company-data ()
(let* ((cur-point (point))
(entry (org-element-at-point))
(level (org-element-property :level entry))
(props (org-entry-properties))
(name (org-entry-get cur-point "ITEM"))
(homepage (org-entry-get cur-point "HOME_PAGE"))
(category (get-multi-valued cur-point "CATEGORY"))
(jobsurl (org-entry-get cur-point "JOB_POSTS_URL"))
(headquarters (org-entry-get cur-point "HEADQUARTERS"))
(usoffice (get-multi-valued cur-point "US_OFFICE"))
(remotefreindly (org-entry-get cur-point "REMOTE_FREINDLY")))
(if (eq level 2)
(with-current-buffer export-file
;; (message (format "PROPS: %S" props))
(insert (format "\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\"\n"
name
homepage
category
jobsurl
headquarters
usoffice
remotefreindly
))
))
)
)
;; Main
(save-excursion
(goto-char (point-min))
(search-forward-regexp "^\* Companies" nil t)
(beginning-of-line)
(get-buffer-create export-file)
(with-current-buffer export-file
(erase-buffer)
(insert "Name,Homepage,Category,Job Posts URL,Headquarters,US Office,Remote Friendly,Notes\n"))
(org-map-entries 'extract-company-data nil 'tree)
(with-current-buffer export-file
(write-file export-file)
) )
) (dolist (elt values values-str)
(let ((sep (if (> (length values-str) 0) ", " "") ))
(setq values-str (format "%s%s%s" values-str sep elt))
))))
(defun extract-company-data ()
(let* ((cur-point (point))
(entry (org-element-at-point))
(level (org-element-property :level entry))
(props (org-entry-properties))
(name (org-entry-get cur-point "ITEM"))
(homepage (org-entry-get cur-point "HOME_PAGE"))
(category (get-multi-valued cur-point "CATEGORY"))
(jobsurl (org-entry-get cur-point "JOB_POSTS_URL"))
(headquarters (org-entry-get cur-point "HEADQUARTERS"))
(usoffice (get-multi-valued cur-point "US_OFFICE"))
(remotefreindly (org-entry-get cur-point "REMOTE_FREINDLY")))
(if (eq level 2)
(with-current-buffer export-file
;; (message (format "PROPS: %S" props))
(insert (format "\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\",\"%s\"\n"
name
homepage
category
jobsurl
headquarters
usoffice
remotefreindly
))
))
)
)
;; Main
(save-excursion
(goto-char (point-min))
(search-forward-regexp "^\* Companies" nil t)
(beginning-of-line)
(get-buffer-create export-file)
(with-current-buffer export-file
(erase-buffer)
(insert "Name,Homepage,Category,Job Posts URL,Headquarters,US Office,Remote Friendly,Notes\n"))
(org-map-entries 'extract-company-data nil 'tree)
(with-current-buffer export-file
(write-file export-file)
)
)
#+end_src #+end_src
#+RESULTS: export_block
: t
* Terms * Terms
- SBIR - SBIR
- STTR - STTR