From 7fba972decc3b0a7763d68dc753a3e8417eb3aae Mon Sep 17 00:00:00 2001 From: Jesse Millwood Date: Wed, 9 Oct 2024 10:36:22 -0400 Subject: [PATCH] Return stringified multi-valued list --- SpaceCompanies.org | 126 ++++++++++++++++++++++++--------------------- 1 file changed, 66 insertions(+), 60 deletions(-) diff --git a/SpaceCompanies.org b/SpaceCompanies.org index 143c49e..375220d 100644 --- a/SpaceCompanies.org +++ b/SpaceCompanies.org @@ -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