diff options
Diffstat (limited to 'project-config.el')
-rw-r--r-- | project-config.el | 34 |
1 files changed, 22 insertions, 12 deletions
diff --git a/project-config.el b/project-config.el index bc27ee7..5c08262 100644 --- a/project-config.el +++ b/project-config.el @@ -38,10 +38,10 @@ (defun project-config-parse-element (org-element) (pcase org-element - (`(keyword ,something) (cons (plist-get something :key) + (`(keyword ,something) (cons (intern (plist-get something :key)) (plist-get something :value))) (`(paragraph ,something) (cons - "BODY" + 'BODY (buffer-substring-no-properties (plist-get something :contents-begin) (plist-get something :contents-end)))))) @@ -50,21 +50,31 @@ (with-current-buffer (find-file document) (goto-char (point-min)) (let (alist) - (while (not (alist-get "BODY" alist nil nil #'equal)) + (while (not (alist-get 'BODY alist nil nil #'equal)) (setq alist (cons (project-config-parse-element (org-element-at-point)) alist)) (org-forward-element)) alist))) -(defun project-config-print-element (filename alist) - (format "* %s\n :PROPERTIES:\n :ID: %s\n :PUBDATE: %s\n :END:\n\n %s\n[[file:%s][Read more]]\n" - (alist-get "TITLE" alist nil nil #'equal) - (alist-get "ID" alist nil nil #'equal) - (alist-get "PUBDATE" alist nil nil #'equal) - (alist-get "BODY" alist nil nil #'equal) - filename)) +(defun project-config-print-element (alist) + (format "* %s\n :PROPERTIES:\n :ID: %s\n :PUBDATE: %s\n :END:\n\n %s\n[[file:%s][Read more (%d minutes)]]\n" + (alist-get 'TITLE alist) + (alist-get 'ID alist) + (alist-get 'PUBDATE alist) + (alist-get 'BODY alist) + (alist-get 'NAME alist) + (alist-get 'LENGTH alist))) + +(defun project-config-reading-time (file) + (with-current-buffer (find-file file) + (max 1 (/ (count-words (point-min) (point-max)) 225)))) + +(defun project-config-print-file (file) + (project-config-print-element + (append `((NAME . ,(concat "posts/" file)) + (LENGTH . ,(project-config-reading-time (concat "posts/" file)))) + (project-config-parse-document (concat "posts/" file))))) (defun org-dblock-write:blog-posts (params) (let ((files (cl-remove-if (lambda (item) (string-prefix-p "." item)) (directory-files "posts")))) - (insert (format "%s" (apply #'concat (mapcar (lambda (file) (project-config-print-element (concat "posts/" file) (project-config-parse-document (concat "posts/" file)))) - files)))))) + (insert (format "%s" (apply #'concat (mapcar #'project-config-print-file files)))))) |