Return stringified multi-valued list
This commit is contained in:
		
							parent
							
								
									82f7522809
								
							
						
					
					
						commit
						7fba972dec
					
				@ -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
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user