diff options
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/export-to-html.el | 56 | ||||
| -rw-r--r-- | scripts/export-to-text.el | 48 | 
2 files changed, 104 insertions, 0 deletions
| diff --git a/scripts/export-to-html.el b/scripts/export-to-html.el new file mode 100644 index 0000000..5e66e9d --- /dev/null +++ b/scripts/export-to-html.el @@ -0,0 +1,56 @@ +(unless (= 2 (length argv)) +  (error "Usage: emacs --script scripts/export-to-html <source-file> <output-file>")) + +(let* ((source-filename (elt argv 0)) +       (output-filename (elt argv 1)) +       (source-buffer (find-file source-filename)) +       (output-buffer (find-file output-filename)) +       (html-buffer (get-buffer-create "*Org HTML Export*")) +       (pt nil) +       (file-buffer (current-buffer)) +       (org-html-toplevel-hlevel 1) +       (org-html-head "") +       (org-html-head-extra "") +       (org-html-head-include-default-style nil) +       (org-html-head-include-scripts nil) +       (org-html-preamble nil) +       (org-html-postamble nil) +       (org-html-use-infojs nil)) +  (with-current-buffer output-buffer +    (erase-buffer)) + +  (set-buffer source-buffer) +  (org-next-visible-heading 1) +  (while (not (equal pt (point))) +    (setq pt (point)) +    (terpri) +    (let ((title (org-get-heading t)) +          (id (org-element-property :CUSTOM_ID (org-element-at-point))) +          (timestamp (org-read-date nil +                                    t +                                    (org-element-property :TIMESTAMP (org-element-at-point)) +                                    nil)) +          (tags (org-get-tags)) +          (subtree nil) +          (html nil) +          (hash nil)) +      (org-copy-subtree) +      (setq subtree (with-temp-buffer (yank) (buffer-string))) + +      (org-html-export-as-html nil t t t) +      (set-buffer html-buffer) +      (setq html (buffer-string)) + +      (set-buffer output-buffer) +      (json-insert `((id . ,id) +                     (title . ,title) +                     (timestamp . ,(format-time-string "%FT%T%z" timestamp)) +                     (tags . ,(vconcat tags)) +                     (hash . ,(secure-hash 'sha256 subtree)) +                     (html . ,html))) + +      (set-buffer source-buffer)) +    (org-forward-heading-same-level 1)) + +  (set-buffer output-buffer) +  (save-buffer)) diff --git a/scripts/export-to-text.el b/scripts/export-to-text.el new file mode 100644 index 0000000..97f6e2a --- /dev/null +++ b/scripts/export-to-text.el @@ -0,0 +1,48 @@ +(unless (= 2 (length argv)) +  (error "Usage: emacs --script scripts/export-to-text <source-file> <output-file>")) + +(let* ((source-filename (elt argv 0)) +       (output-filename (elt argv 1)) +       (source-buffer (find-file source-filename)) +       (output-buffer (find-file output-filename)) +       (text-buffer (get-buffer-create "*Org ASCII Export*")) +       (pt nil) +       (file-buffer (current-buffer))) +  (with-current-buffer output-buffer +    (erase-buffer)) + +  (set-buffer source-buffer) +  (org-next-visible-heading 1) +  (while (not (equal pt (point))) +    (setq pt (point)) +    (terpri) +    (let ((title (org-get-heading t)) +          (id (org-element-property :CUSTOM_ID (org-element-at-point))) +          (timestamp (org-read-date nil +                                    t +                                    (org-element-property :TIMESTAMP (org-element-at-point)) +                                    nil)) +          (tags (org-get-tags)) +          (subtree nil) +          (text nil) +          (hash nil)) +      (org-copy-subtree) +      (setq subtree (with-temp-buffer (yank) (buffer-string))) + +      (org-ascii-export-as-ascii nil t t t) +      (set-buffer text-buffer) +      (setq text (buffer-string)) + +      (set-buffer output-buffer) +      (json-insert `((id . ,id) +                     (title . ,title) +                     (timestamp . ,(format-time-string "%FT%T%z" timestamp)) +                     (tags . ,(vconcat tags)) +                     (hash . ,(secure-hash 'sha256 subtree)) +                     (text . ,text))) + +      (set-buffer source-buffer)) +    (org-forward-heading-same-level 1)) + +  (set-buffer output-buffer) +  (save-buffer)) | 
