;ELC ;;; Compiled ;;; in Emacs version 28.0.50 ;;; with all optimizations. (byte-code "\300\301!\210\302\303\304\305\306\307\310\311&\210\312\313\314\315\310\303\316\317&\210\312\320\321\322\310\303\316\317&\210\312\323\324\325\310\303\316\317&\210\312\326\327\330\310\303\316\317&\210\312\331\332\333\310\303\316\334&\210\312\335\336\337\310\303\316\317&\210\312\340\341\342\310\303\316\343&\210\312\344\345\346\310\303\316\347&\210\312\350\351\352\310\303\316\353&\210\312\354\355\356\310\303\316\357&\210\312\360\361\362\310\303%\210\312\363\364\365\310\303%\210\312\366\367\370\310\303%\210\312\371\372\373\310\303%\210\312\374\375\376\310\303%\210\312\377\201@\201A\310\303%\210\312\201B\201C\201D\310\303\316\201E&\207" [require ox custom-declare-group org-export-taskjuggler nil "Options specific for TaskJuggler export back-end." :tag "Org Export TaskJuggler" :group org-export custom-declare-variable org-taskjuggler-extension ".tjp" "Extension of TaskJuggler files." :type string org-taskjuggler-project-tag "taskjuggler_project" "Tag marking project's tasks.\nThis tag is used to find the tree containing all the tasks for\nthe project." org-taskjuggler-resource-tag "taskjuggler_resource" "Tag marking project's resources.\nThis tag is used to find the tree containing all the resources\nfor the project." org-taskjuggler-report-tag "taskjuggler_report" "Tag marking project's reports.\nThis tag is used to find the tree containing all the reports for\nthe project." org-taskjuggler-target-version 3.0 "Which version of TaskJuggler the exporter is targeting.\nBy default a project plan is exported which conforms to version\n3.x of TaskJuggler. For a project plan that is compatible with\nversions of TaskJuggler older than 3.0 set this to 2.4.\n\nIf you change this variable be sure to also change\n`org-taskjuggler-default-reports' as the format of reports has\nchanged considerably between version 2.x and 3.x of TaskJuggler" number org-taskjuggler-default-project-version "1.0" "Default version string for the project.\nThis value can also be set with the \":VERSION:\" property\nassociated to the headline defining the project." org-taskjuggler-default-project-duration 280 "Default project duration.\nThe value will be used if no start and end date have been defined\nin the root node of the task tree, i.e. the tree that has been\nmarked with `org-taskjuggler-project-tag'" integer org-taskjuggler-default-reports '("textreport report \"Plan\" {\n formats html\n header '== %title =='\n\n center -8<-\n [#Plan Plan] | [#Resource_Allocation Resource Allocation]\n ----\n === Plan ===\n <[report id=\"plan\"]>\n ----\n === Resource Allocation ===\n <[report id=\"resourceGraph\"]>\n ->8-\n}\n\n# A traditional Gantt chart with a project overview.\ntaskreport plan \"\" {\n headline \"Project Plan\"\n columns bsi, name, start, end, effort, chart\n loadunit shortauto\n hideresource 1\n}\n\n# A graph showing resource allocation. It identifies whether each\n# resource is under- or over-allocated for.\nresourcereport resourceGraph \"\" {\n headline \"Resource Allocation Graph\"\n columns no, name, effort, weekly\n loadunit shortauto\n hidetask ~(isleaf() & isleaf_())\n sorttasks plan.start.up\n}") "Default reports for the project.\nThese are sensible default reports to give a good out-of-the-box\nresult when exporting without defining any reports. \"%title\"\nanywhere in the reports will be replaced with the document title.\nIf you want to define your own reports you can change them here\nor simply define the default reports so that they include an\nexternal report definition as follows:\n\ninclude reports.tji\n\nThese default are made to work with tj3. If you are targeting\nTaskJuggler 2.4 (see `org-taskjuggler-target-version') please\nchange these defaults to something like the following:\n\ntaskreport \"Gantt Chart\" {\n headline \"Project Gantt Chart\"\n columns hierarchindex, name, start, end, effort, duration, completed, chart\n timeformat \"%Y-%m-%d\"\n hideresource 1\n loadunit shortauto\n}\n\nresourcereport \"Resource Graph\" {\n headline \"Resource Allocation Graph\"\n columns no, name, utilization, freeload, chart\n loadunit shortauto\n sorttasks startup\n hidetask ~isleaf()\n}" (repeat (string :tag "Report")) org-taskjuggler-default-global-header "" "Default global header for the project.\nThis goes before project declaration, and might be useful for\nearly macros." (string :tag "Preamble") org-taskjuggler-default-global-properties "shift s40 \"Part time shift\" {\n workinghours wed, thu, fri off\n}\n" "Default global properties for the project.\n\nHere you typically define global properties such as shifts,\naccounts, rates, vacation, macros and flags. Any property that\nis allowed within the TaskJuggler file can be inserted. You\ncould for example include another TaskJuggler file.\n\nThe global properties are inserted after the project declaration\nbut before any resource and task declarations." (string :tag "Preamble") org-taskjuggler-valid-task-attributes '(account start note duration endbuffer endcredit end flags journalentry length limits maxend maxstart minend minstart period reference responsible scheduling startbuffer startcredit statusnote chargeset charge) "Valid attributes for Taskjuggler tasks.\nIf one of these appears as a property for a headline, it will be\nexported with the corresponding task.\n\nNote that multiline properties are not supported, so attributes\nlike note or journalentry have to be on a single line." 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.\nIf one of these appears as a property for a headline that is a\nproject definition, it will be exported with the corresponding\ntask. Attribute 'timingresolution' should be the first in the\nlist." org-taskjuggler-valid-resource-attributes '(limits vacation shift booking efficiency journalentry rate workinghours flags) "Valid attributes for Taskjuggler resources.\nIf one of these appears as a property for a headline, it will be\nexported with the corresponding resource." org-taskjuggler-valid-report-attributes '(headline columns definitions timeformat hideresource hidetask loadunit sorttasks formats period) "Valid attributes for Taskjuggler reports.\nIf one of these appears as a property for a headline, it will be\nexported with the corresponding report." org-taskjuggler-process-command "tj3 --silent --no-color --output-dir %o %f" "Command to process a Taskjuggler file.\nThe command will be given to the shell as a command to process a\nTaskjuggler file. \"%f\" in the command will be replaced by the\nfull file name, \"%o\" by the reports directory (see\n`org-taskjuggler-reports-directory').\n\nIf you are targeting Taskjuggler 2.4 (see\n`org-taskjuggler-target-version') this setting is ignored." org-taskjuggler-reports-directory "reports" "Default directory to generate the Taskjuggler reports in.\nThe command `org-taskjuggler-process-command' generates the\nreports and associated files such as CSS inside this directory.\n\nIf the directory is not an absolute path it is relative to the\ndirectory of the exported file. The directory is created if it\ndoesn't exist.\n\nIf you are targeting Taskjuggler 2.4 (see\n`org-taskjuggler-target-version') this setting is ignored." org-taskjuggler-keep-project-as-task t "Non-nil keeps the project headline as an umbrella task for all tasks.\nSetting this to nil will allow maintaining completely separated\ntask buckets, while still sharing the same resources pool." boolean] 8) #@108 Hook run after a TaskJuggler files has been saved. This hook is run with the name of the file as argument. (defvar org-taskjuggler-final-hook nil (#$ . 7873)) (org-export-define-backend 'taskjuggler '((template . org-taskjuggler-project-plan)) :menu-entry '(74 "Export to TaskJuggler" ((106 "As TJP file" (lambda (a s v b) (org-taskjuggler-export a s v))) (112 "As TJP file and process" (lambda (a s v b) (if a (org-taskjuggler-export a s v) (org-taskjuggler-export-and-process s v)))) (111 "As TJP file, process and open" (lambda (a s v b) (if a (org-taskjuggler-export a s v) (org-taskjuggler-export-process-and-open s v)))))) :options-alist '((:taskjuggler-unique-ids nil nil nil))) #@280 Assign a unique ID to each task in TASKS. TASKS is a list of headlines. INFO is a plist used as a communication channel. Return value is an alist between headlines and their associated ID. IDs are hierarchical, which means they only need to be unique among the task siblings. (defalias 'org-taskjuggler-assign-task-ids #[(tasks info) "\303\211\304\211\n\303\"\210+\207" [alist build-id tasks nil #[(tasks local-ids) "\302\303\304 \305\303&\207" [tasks info org-element-map headline #[(task) "\305 \"\211 B\nB B\f\211:\204\306\262\202'\211@9\203'\211AA\262\306\")\207" [task local-ids id alist build-id org-taskjuggler--build-unique-id nil] 4] nil] 7]] 4 (#$ . 8566)]) #@208 Assign a unique ID to each resource within RESOURCES. RESOURCES is a list of headlines. INFO is a plist used as a communication channel. Return value is an alist between headlines and their associated ID. (defalias 'org-taskjuggler-assign-resource-ids #[(resources info) "\303\304 \305\306\n$)\207" [ids resources info nil org-element-map headline #[(resource) "\303 \"\211 B\n)B\207" [resource ids id org-taskjuggler--build-unique-id] 4]] 5 (#$ . 9262)]) #@269 Return project in parse tree. INFO is a plist used as a communication channel. First headline in buffer with `org-taskjuggler-project-tag' defines the project. If no such task is defined, pick the first headline in buffer. If there is no headline at all, return nil. (defalias 'org-taskjuggler-get-project #[(info) "\302\303\"\304 \305\306\307%\206\304 \305\310\307%)\207" [info tree plist-get :parse-tree org-element-map headline #[(hl) "\303 \n\"\235\205\n \207" [org-taskjuggler-project-tag hl info org-export-get-tags] 4] t identity] 6 (#$ . 9732)]) #@135 Return id for task or resource ITEM. ITEM is a headline. INFO is a plist used as a communication channel. Return value is a string. (defalias 'org-taskjuggler-get-id #[(item info) "\302 \303\"\236A\207" [item info plist-get :taskjuggler-unique-ids] 4 (#$ . 10302)]) #@87 Return name for task or resource ITEM. ITEM is a headline. Return value is a string. (defalias 'org-taskjuggler-get-name #[(item) "\301\302\303\304\211;\203\305\306#\266\202\202\307A@\"\266\202\310\211%\207" [item replace-regexp-in-string "\"" "\\\"" :raw-value get-text-property 0 plist-get t] 9 (#$ . 10577)]) #@144 Return start date for task or resource ITEM. ITEM is a headline. Return value is a string or nil if ITEM doesn't have any start date defined. (defalias 'org-taskjuggler-get-start #[(item) "\303\211;\203\304\305#\266\202\202\306A@\"\266\202\211\203%\307 \310\"\206D\311\n>\205D\312\211;\203<\304\305#\266\202\202D\306A@\"\266\202)\207" [item scheduled org-taskjuggler-valid-task-attributes :scheduled get-text-property 0 plist-get org-timestamp-format "%Y-%02m-%02d" start :START] 7 (#$ . 10906)]) #@140 Return end date for task or resource ITEM. ITEM is a headline. Return value is a string or nil if ITEM doesn't have any end date defined. (defalias 'org-taskjuggler-get-end #[(item) "\302\211;\203\303\304#\266\202\202\305A@\"\266\202\211\205\"\306 \307\")\207" [item deadline :deadline get-text-property 0 plist-get org-timestamp-format "%Y-%02m-%02d"] 7 (#$ . 11431)]) #@87 Indent string S by 2 spaces. Return new string. If S is the empty string, return it. (defalias 'org-taskjuggler--indent-string #[(s) "\301\232\203\207\302\303\304#\207" [s "" replace-regexp-in-string "^ *\\S-" " \\&"] 4 (#$ . 11819)]) #@163 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. (defalias 'org-taskjuggler--build-attributes #[(item attributes) "\301\302\303\304\"\305#\207" [attributes mapconcat #[(attribute) "\303\304\305\"\226! \211;\203\306\307#\266\202\202\310A@\"\266\202\211\205)\304\311\n#)\207" [attribute item value intern format ":%s" get-text-property 0 plist-get "%s %s\n"] 7] remq nil ""] 5 (#$ . 12068)]) #@353 Return a unique id for a given task or a resource. ITEM is an `headline' type element representing the task or resource. Its id is derived from its name and made unique against UNIQUE-IDS. If the (downcased) first token of the headline is not unique try to add more (downcased) tokens of the headline or finally add more underscore characters ("_"). (defalias 'org-taskjuggler--build-unique-id #[(item unique-ids) "\304\305\211;\203\306\307#\266\202\202\310A@\"\266\202!\211\203* \n\235\204* \202y\311\312\211;\203<\306\307#\266\202\202D\310A@\"\266\202!\313 \211A\242\227! @\203i \n\235\203i \314\313 \211A\242\227!Q\202O \n\235\203w \314P\211\202j *)\207" [item id unique-ids parts org-string-nw-p :TASK_ID get-text-property 0 plist-get split-string :raw-value org-taskjuggler--clean-id "_"] 8 (#$ . 12591)]) #@76 Clean and return ID to make it acceptable for TaskJuggler. ID is a string. (defalias 'org-taskjuggler--clean-id #[(id) "\301\302\303\301\304\305##\207" [id replace-regexp-in-string "[^a-zA-Z0-9_]" "_" "^\\([0-9]\\)" "_\\1"] 7 (#$ . 13441)]) #@115 Return a list of all tasks TASK depends on. TASK is a headline. INFO is a plist used as a communication channel. (defalias 'org-taskjuggler-resolve-dependencies #[(task info) "\306\211;\203\307\310#\266\202\202\311A@\"\266\202\312\211;\203*\307\310#\266\202\2022\311A@\"\266\202P\211\205@\313\314\315\316 #\317\")\320\211\203\227\321\f!\203U \202l \211:\204a\320\262\202l\211@9\203l\211AA\262\322\323\324\f$*\325\326 \"\203\227\327\f\"\204\227\330\f\"\211\n>\204\226\nB)\331\211;\203\251\307\310#\266\203\202\261\311A@\"\266\203\211\203\342\332\211;\203\311\307\310#\266\202\202\321\311A@\"\266\202\203\342\327\f\"\204\342\330\f\"\nB)\n*\207" [task deps depends deps-ids info project :BLOCKER get-text-property 0 plist-get :DEPENDS split-string replace-regexp-in-string "{.*?}" "" "[ ,]* +" nil org-taskjuggler-get-project org-element-map headline #[(task) "\303\211;\203\304\305#\266\202\202\306A@\"\266\202\2065\307\211;\203-\304\305#\266\202\2025\306A@\"\266\202\211\205A \n\235\205A)\207" [task task-id deps-ids :TASK_ID get-text-property 0 plist-get :ID] 7] member-ignore-case "previous-sibling" org-export-first-sibling-p org-export-get-previous-element :parent :ORDERED org-taskjuggler-keep-project-as-task tasks prev parent] 8 (#$ . 13690)]) #@270 Format DEPENDENCIES to match TaskJuggler syntax. DEPENDENCIES is list of dependencies for TASK, as returned by `org-taskjuggler-resolve-depedencies'. TASK is a headline. INFO is a plist used as a communication channel. Return value doesn't include leading "depends". (defalias 'org-taskjuggler-format-dependencies #[(dependencies task info) "\304\211;\203\305\306#\266\202\202\307A@\"\266\202\310\311\211;\203+\305\306#\266\202\2023\307A@\"\266\202Q\312\313\314 \315#*\207" [task dep-str get-path dependencies :BLOCKER get-text-property 0 plist-get " " :DEPENDS #[(dep) "\306\211;\203\307\310#\266\203\202\311A@\"\266\203\312\313 \211;\203,\307\310#\266\202\2024\311A@\"\266\202\211\205F\314\n\315P \"\205F\316\312 \")\317\320\321\322#\204|T\306\211;\203o\307\310#\266\203\202w\311A@\"\266\203\202N =\204\251\323 \"\fB \306\211;\203\235\307\310#\266\203\202\245\311A@\"\266\203\202|\324\325\"\326\327\f\330# \205\272\331 PQ,\207" [task dep id dep-str path option :parent get-text-property 0 plist-get 1 :TASK_ID string-match " +\\({.*?}\\)" match-string-no-properties nil org-element-map headline #[(hl) " =\207" [hl dep] 2] org-taskjuggler-get-id make-string 33 mapconcat identity "." " " exclamations parent info] 9] mapconcat #[(dep) " !\207" [get-path dep] 2] ", "] 8 (#$ . 15039)]) #@159 Build TaskJuggler project plan. CONTENTS is ignored. INFO is a plist holding export options. Return complete project plan as a string in TaskJuggler syntax. (defalias 'org-taskjuggler-project-plan #[(contents info) "\306\307\"\310!\206\311\312!\313 !\314\n\"\313\f!\315\316\317 \320\321\322\320&\"\323\324\325 \"# \203;\326\327 \330#\202B\331\332\333 ,#-\203L\nC\202q\317\n\211:\204Y\322\262\202d\211@9\203d\211AA\262\320\334\322\320&\206q\311\335!.\323\324\316\336.\"\306\324\"\"#\317.\320\337\340%\204\272.@\341\342 @\"\206\234\333 ;\203\254\343\322$\266\202\272A\323A@#\240\210\266\326\344.\330#)\315\316\317 \320\345\322\320&\"\211/\203\334\326\346/\330#\202\377\347\306\350\"\"\2110\330\230\203\361\351\n!\202\36301\326\313\352\3532\"\330#*)Q)R*\207" [info tree project org-taskjuggler-default-global-header org-taskjuggler-default-global-properties main-resources plist-get :parse-tree org-taskjuggler-get-project error "No project specified" org-element-normalize-string org-taskjuggler--build-project apply append org-element-map headline #[(hl) "\303 \n\"\235\205(\304 \211:\204\305\262\202!\211@9\203!\211AA\262\306\307\n\305\306&\207" [org-taskjuggler-resource-tag hl info org-export-get-tags org-element-map nil headline identity] 7] nil plist-put :taskjuggler-unique-ids org-taskjuggler-assign-resource-ids mapconcat #[(resource) "\302 \"\207" [resource info org-taskjuggler--build-resource] 3] "" format "resource %s \"%s\" {\n}\n" user-login-name identity "No task specified" org-taskjuggler-assign-task-ids #[(task) "\301\211;\203 \302\303#\207\304A@\"\207" [task :ALLOCATE get-text-property 0 plist-get] 6] t :ALLOCATE org-taskjuggler-get-id org-add-props #[(task) "\302 \"\207" [task info org-taskjuggler--build-task] 3] #[(hl) "\303 \n\"\235\205(\304 \211:\204\305\262\202!\211@9\203!\211AA\262\306\307\n\305\306&\207" [org-taskjuggler-report-tag hl info org-export-get-tags org-element-map nil headline identity] 7] #[(report) "\302 \"\207" [report info org-taskjuggler--build-report] 3] org-export-data :title org-taskjuggler-get-name mapcar #[(report) "\302\303 \304\211%\207" [report-title report replace-regexp-in-string "%title" t] 6] user-full-name org-taskjuggler-keep-project-as-task main-tasks main-reports title report-title org-taskjuggler-default-reports] 15 (#$ . 16417)]) #@241 Return a project declaration. 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. (defalias 'org-taskjuggler--build-project #[(project info) "\306\307\310 \"\311!\312\211;\203\313\314#\266\202\202\"\315A@\"\266\202\206&\n\316!\206/\317\320!\321!\211\203>\306\322 \"\206B\306\323\f\")&\324\325 \"!\326Q\207" [project info org-taskjuggler-default-project-version end org-taskjuggler-default-project-duration org-taskjuggler-valid-project-attributes format "project %s \"%s\" \"%s\" %s %s {\n" org-taskjuggler-get-id org-taskjuggler-get-name :VERSION get-text-property 0 plist-get org-taskjuggler-get-start format-time-string "%Y-%m-%d" org-taskjuggler-get-end "- %s" "+%sd" org-taskjuggler--indent-string org-taskjuggler--build-attributes "}\n"] 11 (#$ . 18826)]) #@349 Return a resource declaration. RESOURCE is a headline. INFO is a plist used as a communication channel. All valid attributes from RESOURCE are inserted. If RESOURCE defines a property "resource_id" it will be used as the id for this resource. Otherwise it will use the ID property. If neither is defined a unique id will be associated to it. (defalias 'org-taskjuggler--build-resource #[(resource info) "\303\304\305\306\211;\203\307\310#\266\202\202\311A@\"\266\202\206?\312\211;\2030\307\310#\266\202\2028\311A@\"\266\202\206?\313 \"!\314!#\315\316\n\"!\315\317\320\321\211:\204Z\322\262\202e\211@9\203e\211AA\262\323\324 \322\323&\325#!\326R\207" [resource info org-taskjuggler-valid-resource-attributes format "resource %s \"%s\" {\n" org-taskjuggler--clean-id :RESOURCE_ID get-text-property 0 plist-get :ID org-taskjuggler-get-id org-taskjuggler-get-name org-taskjuggler--indent-string org-taskjuggler--build-attributes mapconcat identity org-element-map nil headline #[(hl) "\302 \"\207" [hl info org-taskjuggler--build-resource] 3] "" "}\n"] 12 (#$ . 19772)]) #@102 Return a report declaration. REPORT is a headline. INFO is a plist used as a communication channel. (defalias 'org-taskjuggler--build-report #[(report info) "\303\304\305\211;\203\306\307#\266\202\202\310A@\"\266\202\206\311\312!#\313\314 \"!\313\315\316\317\211:\2049\320\262\202D\211@9\203D\211AA\262\321\322\n\320\321&\323#!\324R\207" [report org-taskjuggler-valid-report-attributes info format "%s \"%s\" {\n" :REPORT_KIND get-text-property 0 plist-get "taskreport" org-taskjuggler-get-name org-taskjuggler--indent-string org-taskjuggler--build-attributes mapconcat identity org-element-map nil headline #[(hl) "\302 \"\207" [hl info org-taskjuggler--build-report] 3] "" "}\n"] 12 (#$ . 20881)]) #@324 Return a task declaration. TASK is a headline. INFO is a plist used as a communication channel. All valid attributes from TASK are inserted. If TASK defines a property "task_id" it will be used as the id for this task. Otherwise it will use the ID property. If neither is defined a unique id will be associated to it. (defalias 'org-taskjuggler--build-task #[(task info) "\306\211;\203\307\310#\266\202\202\311A@\"\266\202\312\211;\203+\307\310#\266\202\2023\311A@\"\266\202\313=\203<\314\202U\315\211;\203M\307\310#\266\202\202U\311A@\"\266\202\316 \"\317\320 \226P!\2113\211;\203t\307\310#\266\202\202|\311A@\"\266\202)4\321\211;\203\220\307\310#\266\202\202\230\311A@\"\266\202\206\322\211:\204\250\323\262\202\263\211@9\203\263\211AA\262\324\325 \326%\2064\206\327\211;\203\321\307\310#\266\202\202\331\311A@\"\266\202\206\330\211;\203\355\307\310#\266\202\202\365\311A@\"\266\202\206\331!\203\332!\206\333\211;\203\307\310#\266\202\202\311A@\"\266\202?5\334\211;\2031\307\310#\266\202\2029\311A@\"\266\202\2116\205N\335\33676Z_78Z\245])9\337\340\341 \"\342!#\f\205g\337\343\344\f #\" \205{\337\345:\346Y\203x\347\202y\350 #\n\205\203\337\351\n\"4\205\215\337\3524\"9\205\227\337\3539\"5\205\235\354\355\356;\"!\355\357\325\322\211:\204\264\323\262\202\277\211@9\203\277\211AA\262\324\360 \323\324&\361#!\362\260\n.\207" [task allocate complete info depends org-effort-property :ALLOCATE get-text-property 0 plist-get :todo-type done "100" :COMPLETE org-taskjuggler-resolve-dependencies intern ":" :MILESTONE org-element-map nil headline identity t :LENGTH :DURATION org-taskjuggler-get-start org-taskjuggler-get-end :PERIOD :priority 1 1000 format "task %s \"%s\" {\n" org-taskjuggler-get-id org-taskjuggler-get-name " depends %s\n" org-taskjuggler-format-dependencies " purge %s\n allocate %s\n" 3.0 "allocate" "allocations" " complete %s\n" " effort %s\n" " priority %s\n" " milestone\n" org-taskjuggler--indent-string org-taskjuggler--build-attributes mapconcat #[(hl) "\302 \"\207" [hl info org-taskjuggler--build-task] 3] "" "}\n" property effort milestone pri org-priority-lowest org-priority-highest priority org-taskjuggler-target-version org-taskjuggler-valid-task-attributes] 19 (#$ . 21610)]) #@1147 Export current buffer to a TaskJuggler file. The exporter looks for a tree with tag that matches `org-taskjuggler-project-tag' and takes this as the tasks for this project. The first node of this tree defines the project properties such as project name and project period. If there is a tree with tag that matches `org-taskjuggler-resource-tag' this tree is taken as resources for the project. If no resources are specified, a default resource is created and allocated to the project. Also the TaskJuggler project will be created with default reports as defined in `org-taskjuggler-default-reports'. If narrowing is active in the current buffer, only export its narrowed part. If a region is active, export that region. A non-nil optional argument ASYNC means the process should happen asynchronously. The resulting file should be accessible through the `org-export-stack' interface. When optional argument SUBTREEP is non-nil, export the sub-tree at point, extracting information from the headline properties first. When optional argument VISIBLE-ONLY is non-nil, don't export contents of hidden elements. Return output file's name. (defalias 'org-taskjuggler-export #[(&optional async subtreep visible-only) "\305 \"\306\307\n \f\310\211\311&)\207" [org-taskjuggler-extension subtreep outfile async visible-only org-export-output-file-name org-export-to-file taskjuggler nil #[(file) "\301\302\"\210\303\207" [file run-hook-with-args org-taskjuggler-final-hook nil] 3]] 9 (#$ . 23973) nil]) #@995 Export current buffer to a TaskJuggler file and process it. The exporter looks for a tree with tag that matches `org-taskjuggler-project-tag' and takes this as the tasks for this project. The first node of this tree defines the project properties such as project name and project period. If there is a tree with tag that matches `org-taskjuggler-resource-tag' this tree is taken as resources for the project. If no resources are specified, a default resource is created and allocated to the project. Also the TaskJuggler project will be created with default reports as defined in `org-taskjuggler-default-reports'. If narrowing is active in the current buffer, only export its narrowed part. If a region is active, export that region. When optional argument SUBTREEP is non-nil, export the sub-tree at point, extracting information from the headline properties first. When optional argument VISIBLE-ONLY is non-nil, don't export contents of hidden elements. Return a list of reports. (defalias 'org-taskjuggler-export-and-process #[(&optional subtreep visible-only) "\303\304 #\305\n!)\207" [subtreep visible-only file org-taskjuggler-export nil org-taskjuggler-compile] 4 (#$ . 25490) nil]) #@340 Export current buffer to a TaskJuggler file, process and open it. Export and process the file using `org-taskjuggler-export-and-process' and open the generated reports with a browser. If you are targeting TaskJuggler 2.4 (see `org-taskjuggler-target-version') the processing and display of the reports is done using the TaskJuggler GUI. (defalias 'org-taskjuggler-export-process-and-open #[(&optional subtreep visible-only) "\306W\203\307\211\310\311\312\n #Q\313 \312\f#*\207\314\n \"\312\211\2056@\315 !\210A\211\204$\312*\207" [org-taskjuggler-target-version process-name subtreep visible-only command report 3.0 "TaskJugglerUI" " " org-taskjuggler-export nil start-process-shell-command org-taskjuggler-export-and-process org-open-file --dolist-tail--] 7 (#$ . 26701) nil]) #@186 Compile a TaskJuggler file. FILE is the name of the file being compiled. Processing is done through the command given in `org-taskjuggler-process-command'. Return a list of reports. (defalias 'org-taskjuggler-compile #[(file) "\306!\307\n\310!\"\311\312\313\314\"!\210\315 \316\216\317\320! \321 !\204)\322 \323\"\210r q\210\324 \210)\325\326\327\330 !\326\331\330 !!\323\211%\323\211% \"\210\332 !)\f\204Z\312\333!\210\202a\334\313\335\f\"!\210*\336\313\337 \"!+\207" [file full-name org-taskjuggler-reports-directory out-dir errors #1=#:wconfig file-truename expand-file-name file-name-directory nil message format "Processing TaskJuggler file %s..." current-window-configuration #[nil "\301!\207" [#1# set-window-configuration] 2] get-buffer-create "*Org Taskjuggler Output*" file-directory-p make-directory t erase-buffer shell-command replace-regexp-in-string "%f" shell-quote-argument "%o" org-taskjuggler--collect-errors "Process completed." error "TaskJuggler failed with errors: %s" file-expand-wildcards "%s/*.html" outbuf org-taskjuggler-process-command] 10 (#$ . 27505)]) #@166 Collect some kind of errors from "tj3" command output. BUFFER is the buffer containing output. Return collected error types as a string, or nil if there was none. (defalias 'org-taskjuggler--collect-errors #[(buffer) "rq\210\212eb\210\303\304\305\306\307\303#\203 \310\311\312!Q\202\f\313 !\205: \307\314\203/\315\2020\316\304\314\317\304##\266\202,\207" [buffer errors case-fold-search t "" re-search-forward "^.+:[0-9]+: \\(.*\\)$" nil " " match-string 1 org-string-nw-p replace-regexp-in-string "\\`\\([ ]*\n\\)+" "\\`[ \n ]+" "[ \n ]+\\'"] 9 (#$ . 28616)]) (provide 'ox-taskjuggler)