From 1be13d57dc8357576a8285c6dadc03db9e3ed7b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Delafond?= Date: Tue, 25 Aug 2015 12:27:35 +0200 Subject: Imported Upstream version 8.3.1 --- contrib/lisp/ox-taskjuggler.el | 61 +++++++++++++++++++++++++++++------------- 1 file changed, 43 insertions(+), 18 deletions(-) (limited to 'contrib/lisp/ox-taskjuggler.el') diff --git a/contrib/lisp/ox-taskjuggler.el b/contrib/lisp/ox-taskjuggler.el index 761e180..2bd47e6 100644 --- a/contrib/lisp/ox-taskjuggler.el +++ b/contrib/lisp/ox-taskjuggler.el @@ -64,7 +64,7 @@ ;; should end up with something similar to the example by Peter Jones ;; in: ;; -;; http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org. +;; http://www.devalot.com/assets/articles/2008/07/project-planning/project-planning.org. ;; ;; Now mark the top node of your tasks with a tag named ;; "taskjuggler_project" (or whatever you customized @@ -307,7 +307,23 @@ but before any resource and task declarations." startbuffer startcredit statusnote chargeset charge) "Valid attributes for Taskjuggler tasks. If one of these appears as a property for a headline, it will be -exported with the corresponding task." +exported with the corresponding task. + +Note that multiline properties are not supported, so attributes +like note or journalentry have to be on a single line." + :group 'org-export-taskjuggler) + +(defcustom org-taskjuggler-valid-project-attributes + '(timingresolution timezone alertlevels currency currencyformat + dailyworkinghours extend includejournalentry now numberformat + outputdir scenario shorttimeformat timeformat trackingscenario + weekstartsmonday weekstartssunday workinghours + yearlyworkingdays) + "Valid attributes for Taskjuggler project. +If one of these appears as a property for a headline that is a +project definition, it will be exported with the corresponding +task. Attribute 'timingresolution' should be the first in the +list." :group 'org-export-taskjuggler) (defcustom org-taskjuggler-valid-resource-attributes @@ -483,9 +499,9 @@ Return new string. If S is the empty string, return it." (if (equal "" s) s (replace-regexp-in-string "^ *\\S-" " \\&" s))) (defun org-taskjuggler--build-attributes (item attributes) - "Return attributes string for task, resource or report ITEM. -ITEM is a headline. ATTRIBUTES is a list of symbols -representing valid attributes for ITEM." + "Return attributes string for ITEM. +ITEM is a project, task, resource or report headline. ATTRIBUTES +is a list of symbols representing valid attributes for ITEM." (mapconcat (lambda (attribute) (let ((value (org-element-property @@ -587,7 +603,7 @@ doesn't include leading \"depends\"." (let ((id (org-element-property :TASK_ID dep))) (and id (string-match (concat id " +\\({.*?}\\)") dep-str) - (org-match-string-no-properties 1)))) + (org-match-string-no-properties 1 dep-str)))) path) ;; Compute number of exclamation marks by looking for the ;; common ancestor between TASK and DEP. @@ -715,18 +731,27 @@ PROJECT is a headline. INFO is a plist used as a communication channel. If no start date is specified, start today. If no end date is specified, end `org-taskjuggler-default-project-duration' days from now." - (format "project %s \"%s\" \"%s\" %s %s {\n}\n" - (org-taskjuggler-get-id project info) - (org-taskjuggler-get-name project) - ;; Version is obtained through :TASKJUGGLER_VERSION: - ;; property or `org-taskjuggler-default-project-version'. - (or (org-element-property :VERSION project) - org-taskjuggler-default-project-version) - (or (org-taskjuggler-get-start project) - (format-time-string "%Y-%m-%d")) - (let ((end (org-taskjuggler-get-end project))) - (or (and end (format "- %s" end)) - (format "+%sd" org-taskjuggler-default-project-duration))))) + (concat + ;; Opening project. + (format "project %s \"%s\" \"%s\" %s %s {\n" + (org-taskjuggler-get-id project info) + (org-taskjuggler-get-name project) + ;; Version is obtained through :TASKJUGGLER_VERSION: + ;; property or `org-taskjuggler-default-project-version'. + (or (org-element-property :VERSION project) + org-taskjuggler-default-project-version) + (or (org-taskjuggler-get-start project) + (format-time-string "%Y-%m-%d")) + (let ((end (org-taskjuggler-get-end project))) + (or (and end (format "- %s" end)) + (format "+%sd" + org-taskjuggler-default-project-duration)))) + ;; Add attributes. + (org-taskjuggler--indent-string + (org-taskjuggler--build-attributes + project org-taskjuggler-valid-project-attributes)) + ;; Closing project. + "}\n")) (defun org-taskjuggler--build-resource (resource info) "Return a resource declaration. -- cgit v1.2.3