Hello dear list and thank you for looking at this stuff down below as
well as org-mode and many other things.
Best,
PHF
I get:
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
looking-at(nil)
org-agenda-skip()
org-scan-tags(proposition_org/if_proposition_then_get_content_else_nil t nil nil)
org-map-entries(proposition_org/if_proposition_then_get_content_else_nil t)
(seq-filter 'not (org-map-entries 'proposition_org/if_proposition_then_get_content_else_nil t))
proposition_org/list_propositions_in_buffer()
(progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer))
(unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))
(save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))))
(let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))
(cond ((file-exists-p file_name) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))) (t 'nil))
(let ((file_name (expand-file-name x))) (cond ((file-exists-p file_name) (let ((temp-buffer (generate-new-buffer " *temp*"))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn (insert-file-contents file_name) (proposition_org/list_propositions_in_buffer)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer)))))) (t 'nil)))
proposition_org/extract_posts("~/tmp.org")
(message (proposition_org/extract_posts "~/tmp.org"))
eval((message (proposition_org/extract_posts "~/tmp.org")) nil)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
By executing this program:
;; Import
(require 'seq)
(require 'cl-lib)
(require 'org)
;; Define
(defun proposition_org/extract_posts (x)
"file_name → [proposition_org]"
(let ((file_name (expand-file-name x)))
(cond ((file-exists-p file_name)
(with-temp-buffer
(insert-file-contents file_name)
(proposition_org/list_propositions_in_buffer)))
(t '()))))
(defun proposition_org/list_propositions_in_buffer ()
"current_buffer → [proposition_org]"
(seq-filter 'not (org-map-entries 'proposition_org/if_proposition_then_get_content_else_nil t)))
(defun proposition_org/if_proposition_then_get_content_else_nil ()
"current_heading → nil | proposition_org"
(cond ((proposition_org/is_publication) (proposition_org/get_content))
(t nil)))
(defun proposition_org/get_content ()
"current_heading → string"
(org-narrow-to-subtree)
(let ((content (buffer-string)))
(widen)
content))
(defun proposition_org/is_publication ()
"current_heading → boolean"
(eq (proposition_org/is_proposition_properties (org-entry-properties)) 'true))
(defun proposition_org/is_proposition_properties (properties)
"properties ≡ [[key,value]]
properties → 'true | 'false"
(let ((proposition_properties_pattern
(list
(cons
(lambda (x) (equal "PUBLIC" x))
(lambda (x) (equal "true" x)))
(cons
(lambda (x) (equal "TARGET_ID" x))
(lambda (x) (stringp x)))
(cons
(lambda (x) (equal "PREVIOUS_VERSION" x))
(lambda (x) (stringp x)))
(cons
(lambda (x) (equal "AUTHOR" x))
(lambda (x) (stringp x)))
(cons
(lambda (x) (equal "TYPE_NAME" x))
(lambda (x) (equal "proposition_org" x)))
(cons
(lambda (x) (equal "TYPE_ID" x))
(lambda (x) (equal "af7658fc-0541-4cbe-8a5c-04fd5cde74ff" x))))))
(proposition_org/properties_has_pattern properties proposition_properties_pattern)))
(defun proposition_org/properties_has_pattern (properties patterns &optional result)
"properties ≡ [[key,value]]
patterns ≡ [[predicate,predicate]]
properties patterns → 'true | 'false"
(proposition_org/to_truth
(cond ((null result) (proposition_org/properties_has_pattern properties patterns 'true))
((eq result 'false) result)
((null patterns) result)
(t (proposition_org/properties_has_pattern
properties
(cdr patterns)
(proposition_org/to_truth
(cl-some
(lambda (prop) (proposition_org/to_boolean (proposition_org/verify prop (car patterns))))
properties)))))))
(defun proposition_org/to_truth (x)
(cond ((or (eq x 'false) (eq x 'true)) x)
(x 'true)
((not x) 'false)))
(defun proposition_org/to_boolean (x)
(cond ((eq x 'true) t)
((eq x 'false) nil)
(t (error "Expecting 'true or 'false but got something else."))))
(defun proposition_org/verify (property pattern)
(proposition_org/to_truth
(and (funcall (car pattern) (car property))
(funcall (cdr pattern) (cdr property)))))
;; Export
(message (proposition_org/extract_posts "~/tmp.org"))
With ~/tmp.org pointing at this org file:
* post_1
:PROPERTIES:
:PUBLIC: true
:TARGET_ID: ab595e70-b729-4524-b614-fc4d46b50152
:PREVIOUS_VERSION:
:AUTHOR: XXX
:TYPE_NAME: proposition_org
:TYPE_ID: af7658fc-0541-4cbe-8a5c-04fd5cde74ff
:END:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent libero orci, auctor sed, faucibus
vestibulum, gravida vitae, arcu. Nunc posuere. Suspendisse potenti. Praesent in arcu ac nisl
ultricies ultricies. Fusce eros. Sed pulvinar vehicula ante. Maecenas urna dolor, egestas vel,
tristique et, porta eu, leo. Curabitur vitae sem eget arcu laoreet vulputate. Cras orci neque,
faucibus et, rhoncus ac, venenatis ac, magna. Aenean eu lacus. Aliquam luctus facilisis
augue. Nullam fringilla consectetuer sapien. Aenean neque augue, bibendum a, feugiat id, lobortis
vel, nunc. Suspendisse in nibh quis erat condimentum pretium. Vestibulum tempor odio et leo. Sed
sodales vestibulum justo. Cras convallis pellentesque augue. In eu magna. In pede turpis, feugiat
pulvinar, sodales eget, bibendum consectetuer, magna. Pellentesque vitae augue.
* post_2
lol !
xd
* post_3
why
Emacs : GNU Emacs 26.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.18.9)
of 2018-05-29
Package: Org mode version 9.1.13 (9.1.13-elpa @ /home/nomos/.emacs.d/elpa/org-20180716/)
current state:
==============
(setq
org-src-mode-hook '(org-src-babel-configure-edit-buffer org-src-mode-configure-edit-buffer)
org-after-todo-state-change-hook '(org-clock-out-if-current)
org-metadown-hook '(org-babel-pop-to-session-maybe)
org-clock-out-hook '(org-clock-remove-empty-clock-drawer)
org-refile-targets '((nil :maxlevel . 2))
org-enforce-todo-dependencies t
org-modules '(org-bbdb org-bibtex org-docview org-gnus org-habit org-id org-info org-irc org-mhe
org-rmail org-w3m)
org-mode-hook '(org-clock-load org-shortcuts er/add-org-mode-expansions
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook org-show-block-all append local] 5]
#[0 "\300\301\302\303\304$\207"
[add-hook change-major-mode-hook org-babel-show-result-all append local] 5]
org-babel-result-hide-spec org-babel-hide-all-hashes)
org-clock-persist 'history
org-archive-hook '(org-attach-archive-delete-maybe)
org-confirm-elisp-link-function 'yes-or-no-p
org-agenda-todo-list-sublevels nil
org-agenda-before-write-hook '(org-agenda-add-entry-text)
org-metaup-hook '(org-babel-load-in-session-maybe)
org-bibtex-headline-format-function #[257 "\300\236A\207" [:title] 3 "\n\n(fn ENTRY)"]
org-babel-pre-tangle-hook '(save-buffer)
org-tab-first-hook '(org-babel-hide-result-toggle-maybe org-babel-header-arg-expand)
org-hide-leading-stars t
org-clock-clocktable-default-properties '(:maxlevel 3 :scope file)
org-log-done t
org-export-backends '(ascii beamer html icalendar latex org md)
org-agenda-span 'month
org-src-lang-modes '(("ocaml" . tuareg) ("elisp" . emacs-lisp) ("ditaa" . artist)
("asymptote" . asy) ("dot" . graphviz-dot) ("sqlite" . sql)
("calc" . fundamental) ("C" . c) ("js" . js2) ("cpp" . c++) ("C++" . c++)
("screen" . shell-script))
org-occur-hook '(org-first-headline-recenter)
org-agenda-mode-hook '((lambda nil (local-set-key (kbd "<tab>") (quote org-agenda-goto))))
org-log-into-drawer t
org-cycle-hook '(org-cycle-hide-archived-subtrees org-cycle-hide-drawers org-cycle-show-empty-lines
org-optimize-window-after-visibility-change)
org-todo-keywords '("S(s!)" "D(d@/!)" "U(u)" "TODO(t)" "|" "DONE(o!)" "C(c@)")
org-speed-command-hook '(org-speed-command-activate org-babel-speed-command-activate)
org-capture-before-finalize-hook '(user/before-finalize-capture-hooks)
org-babel-tangle-lang-exts '(("latex" . "tex") ("emacs-lisp" . "el") ("elisp" . "el"))
org-confirm-shell-link-function 'yes-or-no-p
org-link-parameters '(("w3m" :store org-w3m-store-link)
("rmail" :follow org-rmail-open :store org-rmail-store-link)
("mhe" :follow org-mhe-open :store org-mhe-store-link)
("irc" :follow org-irc-visit :store org-irc-store-link)
("info" :follow org-info-open :export org-info-export :store
org-info-store-link)
("id" :follow org-id-open)
("gnus" :follow org-gnus-open :store org-gnus-store-link)
("docview" :follow org-docview-open :export org-docview-export :store
org-docview-store-link)
("bibtex" :follow org-bibtex-open :store org-bibtex-store-link)
("bbdb" :follow org-bbdb-open :export org-bbdb-export :complete
org-bbdb-complete-link :store org-bbdb-store-link)
("file+sys") ("file+emacs") ("doi" :follow org--open-doi-link)
("elisp" :follow org--open-elisp-link)
("file" :complete org-file-complete-link)
("ftp" :follow (lambda (path) (browse-url (concat "ftp:" path))))
("help" :follow org--open-help-link)
("http" :follow (lambda (path) (browse-url (concat "http:" path))))
("https" :follow (lambda (path) (browse-url (concat "https:" path))))
("mailto" :follow (lambda (path) (browse-url (concat "mailto:" path))))
("news" :follow (lambda (path) (browse-url (concat "news:" path))))
("shell" :follow org--open-shell-link))
org-agenda-skip-scheduled-if-done t
org-todo-keyword-faces '(("U" :foreground "red" :weight bold)
("D" :foreground "DarkOrange" :weight bold)
("S" :foreground "SpringGreen" :weight bold)
("DONE" :foreground "DeepSkyBlue" :weight bold)
("C" :foreground "white" :weight bold)
("TODO" :foreground "red" :weight bold))
org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate
org-deadline-warning-days 0
org-link-search-must-match-exact-headline nil
org-list-indent-offset 2
org-agenda-show-future-repeats 'next
)