aboutsummaryrefslogtreecommitdiffstats
path: root/project-config.el
diff options
context:
space:
mode:
Diffstat (limited to 'project-config.el')
-rw-r--r--project-config.el34
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))))))