0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-08-24 19:32:52 +00:00

org-taskjuggler.el: Make taskjuggler compatible with org-publish

* lisp/org-publish.el (org-publish-org-to-taskjuggler): New function to
publish taskjuggler projects.
* lisp/org-taskjuggler.el (org-export-as-taskjuggler): Adapt signature
to reflect standard interface, in particular allow export to buffer.
This commit is contained in:
Yann Hodique 2012-08-16 21:02:09 +02:00 committed by Bastien Guerry
parent e48d77aa98
commit dc116516be
2 changed files with 29 additions and 10 deletions

View file

@ -649,6 +649,12 @@ See `org-publish-org-to' to the list of arguments."
(org-publish-with-aux-preprocess-maybe (org-publish-with-aux-preprocess-maybe
(org-publish-org-to "utf8" plist filename pub-dir))) (org-publish-org-to "utf8" plist filename pub-dir)))
(defun org-publish-org-to-taskjuggler (plist filename pub-dir)
"Publish an org file to TaskJuggler.
See `org-publish-org-to' to the list of arguments."
(org-publish-with-aux-preprocess-maybe
(org-publish-org-to "taskjuggler" plist filename pub-dir)))
(defun org-publish-attachment (plist filename pub-dir) (defun org-publish-attachment (plist filename pub-dir)
"Publish a file with no transformation of any kind. "Publish a file with no transformation of any kind.
See `org-publish-org-to' to the list of arguments." See `org-publish-org-to' to the list of arguments."

View file

@ -298,7 +298,8 @@ but before any resource and task declarations."
(defvar org-export-taskjuggler-old-level) (defvar org-export-taskjuggler-old-level)
;;;###autoload ;;;###autoload
(defun org-export-as-taskjuggler () (defun org-export-as-taskjuggler (&optional arg hidden ext-plist
to-buffer body-only pub-dir)
"Export parts of the current buffer as a TaskJuggler file. "Export parts of the current buffer as a TaskJuggler file.
The exporter looks for a tree with tag, property or todo that The exporter looks for a tree with tag, property or todo that
matches `org-export-taskjuggler-project-tag' and takes this as matches `org-export-taskjuggler-project-tag' and takes this as
@ -310,11 +311,12 @@ resources for the project. If no resources are specified, a
default resource is created and allocated to the project. Also default resource is created and allocated to the project. Also
the taskjuggler project will be created with default reports as the taskjuggler project will be created with default reports as
defined in `org-export-taskjuggler-default-reports'." defined in `org-export-taskjuggler-default-reports'."
(interactive) (interactive "P")
(message "Exporting...") (message "Exporting...")
(setq-default org-done-keywords org-done-keywords) (setq-default org-done-keywords org-done-keywords)
(let* ((opt-plist (org-combine-plists (org-default-export-plist) (let* ((opt-plist (org-combine-plists (org-default-export-plist)
ext-plist
(org-infile-export-plist))) (org-infile-export-plist)))
(org-export-opt-plist opt-plist) (org-export-opt-plist opt-plist)
(tasks (tasks
@ -333,12 +335,20 @@ defined in `org-export-taskjuggler-default-reports'."
(org-map-entries (org-map-entries
'org-taskjuggler-components 'org-taskjuggler-components
org-export-taskjuggler-report-tag nil 'archive 'comment)) org-export-taskjuggler-report-tag nil 'archive 'comment))
(filename (expand-file-name (filename (if to-buffer
(concat nil
(file-name-sans-extension (concat (file-name-as-directory
(file-name-nondirectory buffer-file-name)) (or pub-dir
org-export-taskjuggler-extension))) (org-export-directory :tj opt-plist)))
(buffer (find-file-noselect filename)) (file-name-sans-extension
(file-name-nondirectory buffer-file-name))
org-export-taskjuggler-extension)))
(buffer (if to-buffer
(cond
((eq to-buffer 'string)
(get-buffer-create "*Org Taskjuggler Export*"))
(t (get-buffer-create to-buffer)))
(find-file-noselect filename)))
(old-buffer (current-buffer)) (old-buffer (current-buffer))
(org-export-taskjuggler-old-level 0) (org-export-taskjuggler-old-level 0)
task resource) task resource)
@ -399,10 +409,13 @@ defined in `org-export-taskjuggler-default-reports'."
(if org-export-taskjuggler-keep-project-as-task (if org-export-taskjuggler-keep-project-as-task
1 2)) 1 2))
(org-taskjuggler-insert-reports reports) (org-taskjuggler-insert-reports reports)
(save-buffer) (or to-buffer (save-buffer))
(or (org-export-push-to-kill-ring "TaskJuggler") (or (org-export-push-to-kill-ring "TaskJuggler")
(message "Exporting... done")) (message "Exporting... done"))
(current-buffer)))) (if (eq to-buffer 'string)
(prog1 (buffer-substring (point-min) (point-max))
(kill-buffer (current-buffer)))
(current-buffer)))))
;;;###autoload ;;;###autoload
(defun org-export-as-taskjuggler-and-open () (defun org-export-as-taskjuggler-and-open ()