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
#+begin_src emacs-lisp :exports none
(setq export-file "SpaceCompanies.csv")
(setq export-file "SpaceCompanies.csv")
(defun get-multi-valued (pom prop)
(let ((end (save-excursion (search-forward ":END:")))
(elt-b nil)
(elt-e nil)
(elt nil)
(values '()))
(save-excursion
(setq elt-b (search-forward-regexp (format ":%s\\+?:" prop) end t))
(while elt-b
(setq elt-e (line-end-position))
(setq elt (format "%s" (buffer-substring-no-properties
elt-b elt-e)))
(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)
(defun get-multi-valued (pom prop)
(let ((end (save-excursion (search-forward ":END:")))
(elt-b nil)
(elt-e nil)
(elt nil)
(values '())
(values-str ""))
(save-excursion
(setq elt-b (search-forward-regexp (format ":%s\\+?:" prop) end t))
(while elt-b
(setq elt-e (line-end-position))
(setq elt (format "%s" (buffer-substring-no-properties
elt-b elt-e)))
(setq values (cons elt values))
(setq elt-b (search-forward-regexp (format ":%s\\+?:" prop) end t)))
)
)
(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
#+RESULTS: export_block
: t
* Terms
- SBIR
- STTR