taskjuggler 3.6.0 → 3.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG +51 -0
  3. data/data/css/tjreport.css +4 -0
  4. data/data/tjp.vim +21 -15
  5. data/examples/ProjectTemplate/template.tjp +7 -7
  6. data/examples/Tutorial/tutorial.tjp +1 -1
  7. data/lib/taskjuggler/Allocation.rb +1 -1
  8. data/lib/taskjuggler/AttributeBase.rb +10 -4
  9. data/lib/taskjuggler/Attributes.rb +2 -2
  10. data/lib/taskjuggler/BatchProcessor.rb +1 -1
  11. data/lib/taskjuggler/Interval.rb +10 -12
  12. data/lib/taskjuggler/Journal.rb +2 -2
  13. data/lib/taskjuggler/LogicalFunction.rb +1 -1
  14. data/lib/taskjuggler/LogicalOperation.rb +7 -4
  15. data/lib/taskjuggler/MessageHandler.rb +1 -1
  16. data/lib/taskjuggler/PTNProxy.rb +1 -1
  17. data/lib/taskjuggler/Project.rb +27 -22
  18. data/lib/taskjuggler/PropertyList.rb +7 -1
  19. data/lib/taskjuggler/PropertySet.rb +1 -1
  20. data/lib/taskjuggler/PropertyTreeNode.rb +5 -3
  21. data/lib/taskjuggler/Query.rb +3 -3
  22. data/lib/taskjuggler/RealFormat.rb +1 -1
  23. data/lib/taskjuggler/Resource.rb +2 -2
  24. data/lib/taskjuggler/ResourceScenario.rb +37 -5
  25. data/lib/taskjuggler/RichText/Snip.rb +1 -1
  26. data/lib/taskjuggler/RuntimeConfig.rb +1 -1
  27. data/lib/taskjuggler/Scoreboard.rb +5 -2
  28. data/lib/taskjuggler/Shift.rb +2 -2
  29. data/lib/taskjuggler/ShiftAssignments.rb +1 -1
  30. data/lib/taskjuggler/TaskJuggler.rb +4 -4
  31. data/lib/taskjuggler/TextParser.rb +1 -1
  32. data/lib/taskjuggler/TextParser/Scanner.rb +3 -3
  33. data/lib/taskjuggler/TimeSheets.rb +2 -2
  34. data/lib/taskjuggler/Tj3AppBase.rb +23 -9
  35. data/lib/taskjuggler/Tj3Config.rb +5 -3
  36. data/lib/taskjuggler/TjpExample.rb +3 -1
  37. data/lib/taskjuggler/TjpSyntaxRules.rb +157 -130
  38. data/lib/taskjuggler/UTF8String.rb +3 -3
  39. data/lib/taskjuggler/WorkingHours.rb +3 -3
  40. data/lib/taskjuggler/XMLElement.rb +12 -1
  41. data/lib/taskjuggler/apps/Tj3.rb +3 -1
  42. data/lib/taskjuggler/apps/Tj3Client.rb +3 -2
  43. data/lib/taskjuggler/apps/Tj3Daemon.rb +3 -1
  44. data/lib/taskjuggler/apps/Tj3Man.rb +4 -2
  45. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +3 -1
  46. data/lib/taskjuggler/apps/Tj3SsSender.rb +3 -1
  47. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +3 -1
  48. data/lib/taskjuggler/apps/Tj3TsSender.rb +3 -1
  49. data/lib/taskjuggler/apps/Tj3TsSummary.rb +3 -1
  50. data/lib/taskjuggler/apps/Tj3WebD.rb +3 -1
  51. data/lib/taskjuggler/deep_copy.rb +1 -1
  52. data/lib/taskjuggler/reports/CSVFile.rb +3 -3
  53. data/lib/taskjuggler/reports/ChartPlotter.rb +1 -1
  54. data/lib/taskjuggler/reports/GanttChart.rb +8 -2
  55. data/lib/taskjuggler/reports/GanttHeader.rb +11 -1
  56. data/lib/taskjuggler/reports/GanttLine.rb +6 -0
  57. data/lib/taskjuggler/reports/ICalReport.rb +1 -1
  58. data/lib/taskjuggler/reports/Report.rb +1 -1
  59. data/lib/taskjuggler/reports/ReportTableCell.rb +1 -1
  60. data/lib/taskjuggler/reports/TableReport.rb +7 -12
  61. data/lib/taskjuggler/reports/TjpExportRE.rb +1 -5
  62. data/lib/taskjuggler/version.rb +1 -0
  63. data/man/tj3.1 +130 -0
  64. data/man/tj3client.1 +145 -0
  65. data/man/tj3d.1 +93 -0
  66. data/man/tj3man.1 +76 -0
  67. data/man/tj3ss_receiver.1 +86 -0
  68. data/man/tj3ss_sender.1 +100 -0
  69. data/man/tj3ts_receiver.1 +86 -0
  70. data/man/tj3ts_sender.1 +92 -0
  71. data/man/tj3ts_summary.1 +104 -0
  72. data/man/tj3webd.1 +86 -0
  73. data/manual/Day_To_Day_Juggling +8 -8
  74. data/manual/Installation +6 -6
  75. data/manual/List_Attributes +1 -1
  76. data/manual/Rich_Text_Attributes +6 -5
  77. data/manual/Software +6 -6
  78. data/manual/TaskJuggler_Internals +4 -4
  79. data/manual/The_TaskJuggler_Syntax +5 -5
  80. data/manual/Tutorial +13 -11
  81. data/manual/html/Day_To_Day_Juggling.html +9 -9
  82. data/manual/html/Getting_Started.html +2 -2
  83. data/manual/html/How_To_Contribute.html +2 -2
  84. data/manual/html/Installation.html +8 -8
  85. data/manual/html/Intro.html +2 -2
  86. data/manual/html/List_Attributes.html +3 -3
  87. data/manual/html/Reporting_Bugs.html +2 -2
  88. data/manual/html/Rich_Text_Attributes.html +5 -5
  89. data/manual/html/Software.html +7 -7
  90. data/manual/html/TaskJuggler_2x_Migration.html +2 -2
  91. data/manual/html/TaskJuggler_Internals.html +6 -6
  92. data/manual/html/The_TaskJuggler_Syntax.html +6 -6
  93. data/manual/html/Tutorial.html +17 -14
  94. data/manual/html/account.html +4 -4
  95. data/manual/html/account.task.html +2 -2
  96. data/manual/html/accountprefix.html +2 -2
  97. data/manual/html/accountreport.html +4 -4
  98. data/manual/html/accountroot.html +3 -3
  99. data/manual/html/active.html +3 -3
  100. data/manual/html/adopt.task.html +2 -2
  101. data/manual/html/aggregate.html +2 -2
  102. data/manual/html/alert.html +3 -3
  103. data/manual/html/alertlevels.html +2 -2
  104. data/manual/html/allocate.html +3 -3
  105. data/manual/html/alphabet.html +1 -1
  106. data/manual/html/alternative.html +2 -2
  107. data/manual/html/author.html +2 -2
  108. data/manual/html/auxdir.html +2 -2
  109. data/manual/html/auxdir.report.html +3 -3
  110. data/manual/html/balance.html +3 -3
  111. data/manual/html/booking.resource.html +4 -4
  112. data/manual/html/booking.task.html +4 -4
  113. data/manual/html/caption.html +3 -3
  114. data/manual/html/cellcolor.column.html +3 -3
  115. data/manual/html/celltext.column.html +3 -3
  116. data/manual/html/center.html +3 -3
  117. data/manual/html/charge.html +2 -2
  118. data/manual/html/chargeset.html +2 -2
  119. data/manual/html/columnid.html +17 -13
  120. data/manual/html/columns.html +3 -3
  121. data/manual/html/complete.html +2 -2
  122. data/manual/html/copyright.html +2 -2
  123. data/manual/html/credits.html +2 -2
  124. data/manual/html/css/tjreport.css +4 -0
  125. data/manual/html/currency.html +2 -2
  126. data/manual/html/currencyformat.html +4 -4
  127. data/manual/html/dailymax.html +2 -2
  128. data/manual/html/dailymin.html +3 -3
  129. data/manual/html/dailyworkinghours.html +2 -2
  130. data/manual/html/date.extend.html +2 -2
  131. data/manual/html/date.html +5 -5
  132. data/manual/html/definitions.html +4 -4
  133. data/manual/html/depends.html +4 -4
  134. data/manual/html/details.html +2 -2
  135. data/manual/html/disabled.html +2 -2
  136. data/manual/html/duration.html +2 -2
  137. data/manual/html/efficiency.html +3 -3
  138. data/manual/html/effort.html +2 -2
  139. data/manual/html/effortdone.html +2 -2
  140. data/manual/html/effortleft.html +2 -2
  141. data/manual/html/email.html +2 -2
  142. data/manual/html/enabled.html +2 -2
  143. data/manual/html/end.column.html +3 -3
  144. data/manual/html/end.html +4 -4
  145. data/manual/html/end.limit.html +2 -2
  146. data/manual/html/end.report.html +3 -3
  147. data/manual/html/end.timesheet.html +3 -3
  148. data/manual/html/endcredit.html +3 -3
  149. data/manual/html/epilog.html +3 -3
  150. data/manual/html/export.html +4 -4
  151. data/manual/html/extend.html +3 -3
  152. data/manual/html/fail.html +3 -3
  153. data/manual/html/fdl.html +2 -2
  154. data/manual/html/flags.account.html +2 -2
  155. data/manual/html/flags.html +2 -2
  156. data/manual/html/flags.journalentry.html +2 -2
  157. data/manual/html/flags.report.html +3 -3
  158. data/manual/html/flags.resource.html +2 -2
  159. data/manual/html/flags.statussheet.html +2 -2
  160. data/manual/html/flags.task.html +2 -2
  161. data/manual/html/flags.timesheet.html +2 -2
  162. data/manual/html/fontcolor.column.html +3 -3
  163. data/manual/html/footer.html +3 -3
  164. data/manual/html/formats.export.html +3 -3
  165. data/manual/html/formats.html +4 -4
  166. data/manual/html/functions.html +5 -5
  167. data/manual/html/gapduration.html +2 -2
  168. data/manual/html/gaplength.html +2 -2
  169. data/manual/html/halign.center.html +2 -2
  170. data/manual/html/halign.column.html +3 -3
  171. data/manual/html/halign.left.html +2 -2
  172. data/manual/html/halign.right.html +2 -2
  173. data/manual/html/hasalert.html +2 -2
  174. data/manual/html/header.html +3 -3
  175. data/manual/html/headline.html +3 -3
  176. data/manual/html/height.html +4 -4
  177. data/manual/html/hideaccount.html +4 -4
  178. data/manual/html/hidejournalentry.html +3 -3
  179. data/manual/html/hidereport.html +3 -3
  180. data/manual/html/hideresource.html +4 -4
  181. data/manual/html/hidetask.html +4 -4
  182. data/manual/html/icalreport.html +9 -3
  183. data/manual/html/include.macro.html +3 -3
  184. data/manual/html/include.project.html +3 -3
  185. data/manual/html/include.properties.html +3 -3
  186. data/manual/html/index.html +1 -1
  187. data/manual/html/inherit.extend.html +3 -3
  188. data/manual/html/interval1.html +3 -3
  189. data/manual/html/interval2.html +3 -3
  190. data/manual/html/interval3.html +2 -2
  191. data/manual/html/interval4.html +2 -2
  192. data/manual/html/isactive.html +2 -2
  193. data/manual/html/ischildof.html +2 -2
  194. data/manual/html/isdependencyof.html +2 -2
  195. data/manual/html/isdutyof.html +2 -2
  196. data/manual/html/isfeatureof.html +2 -2
  197. data/manual/html/isleaf.html +2 -2
  198. data/manual/html/ismilestone.html +2 -2
  199. data/manual/html/isongoing.html +3 -3
  200. data/manual/html/isresource.html +2 -2
  201. data/manual/html/isresponsibilityof.html +2 -2
  202. data/manual/html/istask.html +2 -2
  203. data/manual/html/isvalid.html +2 -2
  204. data/manual/html/journalattributes.html +3 -3
  205. data/manual/html/journalentry.html +3 -3
  206. data/manual/html/journalmode.html +4 -4
  207. data/manual/html/leaveallowance.html +3 -3
  208. data/manual/html/leaves.html +3 -3
  209. data/manual/html/left.html +3 -3
  210. data/manual/html/length.html +3 -3
  211. data/manual/html/limits.allocate.html +2 -2
  212. data/manual/html/limits.html +2 -2
  213. data/manual/html/limits.resource.html +2 -2
  214. data/manual/html/limits.task.html +2 -2
  215. data/manual/html/listitem.column.html +3 -3
  216. data/manual/html/listtype.column.html +2 -2
  217. data/manual/html/loadunit.html +3 -3
  218. data/manual/html/logicalexpression.html +4 -4
  219. data/manual/html/logicalflagexpression.html +4 -4
  220. data/manual/html/macro.html +4 -4
  221. data/manual/html/managers.html +2 -2
  222. data/manual/html/mandatory.html +4 -4
  223. data/manual/html/markdate.html +69 -0
  224. data/manual/html/maxend.html +4 -4
  225. data/manual/html/maximum.html +2 -2
  226. data/manual/html/maxstart.html +2 -2
  227. data/manual/html/milestone.html +3 -3
  228. data/manual/html/minend.html +2 -2
  229. data/manual/html/minimum.html +2 -2
  230. data/manual/html/minstart.html +2 -2
  231. data/manual/html/monthlymax.html +2 -2
  232. data/manual/html/monthlymin.html +3 -3
  233. data/manual/html/navbar.html +5 -1
  234. data/manual/html/navigator.html +2 -2
  235. data/manual/html/newtask.html +3 -3
  236. data/manual/html/nikureport.html +2 -2
  237. data/manual/html/note.task.html +4 -4
  238. data/manual/html/novevents.html +68 -0
  239. data/manual/html/now.html +4 -4
  240. data/manual/html/number.extend.html +2 -2
  241. data/manual/html/numberformat.html +3 -3
  242. data/manual/html/onend.html +2 -2
  243. data/manual/html/onstart.html +2 -2
  244. data/manual/html/opennodes.html +3 -3
  245. data/manual/html/outputdir.html +3 -3
  246. data/manual/html/overtime.booking.html +2 -2
  247. data/manual/html/period.column.html +2 -2
  248. data/manual/html/period.limit.html +2 -2
  249. data/manual/html/period.report.html +3 -3
  250. data/manual/html/period.task.html +2 -2
  251. data/manual/html/persistent.html +3 -3
  252. data/manual/html/precedes.html +5 -5
  253. data/manual/html/priority.html +4 -4
  254. data/manual/html/priority.timesheet.html +3 -3
  255. data/manual/html/project.html +4 -4
  256. data/manual/html/projectid.html +2 -2
  257. data/manual/html/projectid.task.html +3 -3
  258. data/manual/html/projectids.html +2 -2
  259. data/manual/html/projection.html +2 -2
  260. data/manual/html/prolog.html +3 -3
  261. data/manual/html/properties.html +3 -3
  262. data/manual/html/purge.html +3 -3
  263. data/manual/html/rate.html +2 -2
  264. data/manual/html/rate.resource.html +2 -2
  265. data/manual/html/rawhtmlhead.html +4 -4
  266. data/manual/html/reference.extend.html +2 -2
  267. data/manual/html/remaining.html +3 -3
  268. data/manual/html/replace.html +2 -2
  269. data/manual/html/reportprefix.html +2 -2
  270. data/manual/html/resource.html +3 -3
  271. data/manual/html/resourceattributes.html +2 -2
  272. data/manual/html/resourceprefix.html +2 -2
  273. data/manual/html/resourcereport.html +5 -5
  274. data/manual/html/resourceroot.html +4 -4
  275. data/manual/html/resources.limit.html +2 -2
  276. data/manual/html/responsible.html +2 -2
  277. data/manual/html/richtext.extend.html +2 -2
  278. data/manual/html/right.html +3 -3
  279. data/manual/html/rollupaccount.html +4 -4
  280. data/manual/html/rollupresource.html +4 -4
  281. data/manual/html/rolluptask.html +4 -4
  282. data/manual/html/scale.column.html +2 -2
  283. data/manual/html/scenario.html +3 -3
  284. data/manual/html/scenario.ical.html +3 -3
  285. data/manual/html/scenarios.export.html +2 -2
  286. data/manual/html/scenarios.html +3 -3
  287. data/manual/html/scenariospecific.extend.html +2 -2
  288. data/manual/html/scheduled.html +2 -2
  289. data/manual/html/scheduling.html +6 -6
  290. data/manual/html/schedulingmode.html +2 -2
  291. data/manual/html/select.html +4 -4
  292. data/manual/html/selfcontained.html +3 -3
  293. data/manual/html/shift.allocate.html +2 -2
  294. data/manual/html/shift.html +3 -3
  295. data/manual/html/shift.resource.html +4 -4
  296. data/manual/html/shift.task.html +2 -2
  297. data/manual/html/shift.timesheet.html +2 -2
  298. data/manual/html/shifts.allocate.html +2 -2
  299. data/manual/html/shifts.resource.html +2 -2
  300. data/manual/html/shifts.task.html +3 -3
  301. data/manual/html/shorttimeformat.html +3 -3
  302. data/manual/html/sloppy.booking.html +2 -2
  303. data/manual/html/sloppy.projection.html +2 -2
  304. data/manual/html/sortaccounts.html +3 -3
  305. data/manual/html/sortjournalentries.html +3 -3
  306. data/manual/html/sortresources.html +3 -3
  307. data/manual/html/sorttasks.html +3 -3
  308. data/manual/html/start.column.html +3 -3
  309. data/manual/html/start.html +4 -4
  310. data/manual/html/start.limit.html +2 -2
  311. data/manual/html/start.report.html +3 -3
  312. data/manual/html/startcredit.html +3 -3
  313. data/manual/html/status.statussheet.html +2 -2
  314. data/manual/html/status.timesheet.html +2 -2
  315. data/manual/html/statussheet.html +2 -2
  316. data/manual/html/statussheetreport.html +3 -3
  317. data/manual/html/strict.projection.html +2 -2
  318. data/manual/html/summary.html +2 -2
  319. data/manual/html/supplement.html +2 -2
  320. data/manual/html/supplement.resource.html +2 -2
  321. data/manual/html/supplement.task.html +2 -2
  322. data/manual/html/tagfile.html +3 -3
  323. data/manual/html/task.html +3 -3
  324. data/manual/html/task.statussheet.html +3 -3
  325. data/manual/html/task.timesheet.html +2 -2
  326. data/manual/html/taskattributes.html +2 -2
  327. data/manual/html/taskprefix.html +2 -2
  328. data/manual/html/taskreport.html +5 -5
  329. data/manual/html/taskroot.export.html +2 -2
  330. data/manual/html/taskroot.html +3 -3
  331. data/manual/html/text.extend.html +2 -2
  332. data/manual/html/textreport.html +5 -5
  333. data/manual/html/timeformat.html +4 -4
  334. data/manual/html/timeformat1.html +2 -2
  335. data/manual/html/timeformat2.html +2 -2
  336. data/manual/html/timeoff.nikureport.html +2 -2
  337. data/manual/html/timesheet.html +3 -3
  338. data/manual/html/timesheetreport.html +3 -3
  339. data/manual/html/timezone.export.html +2 -2
  340. data/manual/html/timezone.html +2 -2
  341. data/manual/html/timezone.report.html +3 -3
  342. data/manual/html/timezone.shift.html +2 -2
  343. data/manual/html/timingresolution.html +2 -2
  344. data/manual/html/title.column.html +2 -2
  345. data/manual/html/title.html +3 -3
  346. data/manual/html/toc.html +157 -143
  347. data/manual/html/tooltip.column.html +3 -3
  348. data/manual/html/tracereport.html +8 -8
  349. data/manual/html/trackingscenario.html +3 -3
  350. data/manual/html/treelevel.html +2 -2
  351. data/manual/html/vacation.html +2 -2
  352. data/manual/html/vacation.resource.html +2 -2
  353. data/manual/html/vacation.shift.html +2 -2
  354. data/manual/html/warn.html +4 -4
  355. data/manual/html/weeklymax.html +2 -2
  356. data/manual/html/weeklymin.html +3 -3
  357. data/manual/html/weekstartsmonday.html +2 -2
  358. data/manual/html/weekstartssunday.html +2 -2
  359. data/manual/html/width.column.html +2 -2
  360. data/manual/html/width.html +4 -4
  361. data/manual/html/work.html +3 -3
  362. data/manual/html/workinghours.project.html +3 -3
  363. data/manual/html/workinghours.resource.html +2 -2
  364. data/manual/html/workinghours.shift.html +2 -2
  365. data/manual/html/yearlyworkingdays.html +2 -2
  366. data/spec/ProjectBroker_spec.rb +6 -6
  367. data/spec/StatusSheets_spec.rb +1 -1
  368. data/spec/TimeSheets_spec.rb +1 -1
  369. data/taskjuggler.gemspec +7 -7
  370. data/tasks/changelog.rake +2 -0
  371. data/tasks/gem.rake +3 -0
  372. data/tasks/help2man.rake +18 -0
  373. data/tasks/kate.rake +2 -0
  374. data/tasks/manual.rake +2 -0
  375. data/tasks/test.rake +5 -0
  376. data/tasks/vim.rake +2 -0
  377. data/test/TestSuite/Export-Reports/refs/AccountReport.tjp +0 -1
  378. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +0 -2
  379. data/test/TestSuite/Export-Reports/refs/AlertLevels.tjp +0 -1
  380. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +0 -1
  381. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +0 -1
  382. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +0 -1
  383. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +0 -1
  384. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +0 -2
  385. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +0 -1
  386. data/test/TestSuite/Export-Reports/refs/Durations.tjp +0 -1
  387. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +0 -1
  388. data/test/TestSuite/Export-Reports/refs/Gap.tjp +0 -3
  389. data/test/TestSuite/Export-Reports/refs/Include.tjp +0 -1
  390. data/test/TestSuite/Export-Reports/refs/Journal.tjp +0 -1
  391. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +0 -1
  392. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +0 -2
  393. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +0 -1
  394. data/test/TestSuite/Export-Reports/refs/Manager.tjp +0 -1
  395. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +0 -2
  396. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +0 -1
  397. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +0 -1
  398. data/test/TestSuite/Export-Reports/refs/Project.tjp +0 -1
  399. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +0 -3
  400. data/test/TestSuite/Export-Reports/refs/Reports.tjp +0 -1
  401. data/test/TestSuite/Export-Reports/refs/Resource.tjp +0 -1
  402. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +0 -1
  403. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +0 -1
  404. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +0 -2
  405. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +0 -1
  406. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +0 -1
  407. data/test/TestSuite/Export-Reports/refs/navigator.tjp +0 -4
  408. data/test/TestSuite/Export-Reports/refs/template.tjp +0 -6
  409. data/test/TestSuite/Export-Reports/refs/textreport.tjp +0 -1
  410. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +0 -8
  411. data/test/TestSuite/Syntax/Correct/Booking.tjp +1 -1
  412. data/test/TestSuite/Syntax/Correct/Currencyformat.tjp +1 -1
  413. data/test/TestSuite/Syntax/Correct/tutorial.tjp +5 -0
  414. data/test/test_ProjectFileScanner.rb +8 -8
  415. metadata +43 -10
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # = Shift.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2019
7
7
  # by Chris Schlaeger <cs@taskjuggler.org>
8
8
  #
9
9
  # This program is free software; you can redistribute it and/or modify
@@ -34,7 +34,7 @@ class TaskJuggler
34
34
  # provided by the class ShiftScenario. In case we can't find a
35
35
  # function called for the Shift class we try to find it in
36
36
  # ShiftScenario.
37
- def method_missing(func, scenarioIdx, *args)
37
+ def method_missing(func, scenarioIdx = 0, *args)
38
38
  @data[scenarioIdx].method(func).call(*args)
39
39
  end
40
40
 
@@ -79,7 +79,7 @@ class TaskJuggler
79
79
  # To optimize memory usage and computation time the Scoreboard objects for
80
80
  # similar ShiftAssignments are shared.
81
81
  #
82
- # Scoreboard may be nil or a bit vector encoded as a Fixnum
82
+ # Scoreboard may be nil or a bit vector encoded as an Integer
83
83
  # nil: Value has not been determined yet.
84
84
  # Bit 0: 0: No assignment
85
85
  # 1: Has assignement
@@ -29,7 +29,7 @@ class TaskJuggler
29
29
  attr_accessor :maxCpuCores, :warnTsDeltas, :generateTraces
30
30
 
31
31
  # Create a new TaskJuggler object. _console_ is a boolean that determines
32
- # whether or not messsages can be written to $stderr.
32
+ # whether or not messages can be written to $stderr.
33
33
  def initialize
34
34
  @project = nil
35
35
  @parser = nil
@@ -141,7 +141,7 @@ class TaskJuggler
141
141
  res
142
142
  end
143
143
 
144
- # Generate all specified reports. The project must have be scheduled before
144
+ # Generate all specified reports. The project must have been scheduled before
145
145
  # this method can be called. It returns true if no error occured, false
146
146
  # otherwise.
147
147
  def generateReports(outputDir = nil)
@@ -289,7 +289,7 @@ class TaskJuggler
289
289
  end
290
290
 
291
291
  # Check the content of the file _fileName_ and interpret it as a time sheet.
292
- # If the sheet is syntaxtically correct and matches the loaded project, true
292
+ # If the sheet is syntactically correct and matches the loaded project, true
293
293
  # is returned. Otherwise false.
294
294
  def checkTimeSheet(fileName)
295
295
  begin
@@ -333,7 +333,7 @@ class TaskJuggler
333
333
  end
334
334
 
335
335
  # Check the content of the file _fileName_ and interpret it as a status
336
- # sheet. If the sheet is syntaxtically correct and matches the loaded
336
+ # sheet. If the sheet is syntactically correct and matches the loaded
337
337
  # project, true is returned. Otherwise false.
338
338
  def checkStatusSheet(fileName)
339
339
  begin
@@ -123,7 +123,7 @@ class TaskJuggler
123
123
  # Add a new rule to the rule set. _name_ must be a unique identifier. The
124
124
  # function also sets the class variable @cr to the new rule. Subsequent
125
125
  # calls to TextParser#pattern, TextParser#optional or
126
- # TextParser#repeatable will then implicitely operate on the most recently
126
+ # TextParser#repeatable will then implicitly operate on the most recently
127
127
  # added rule.
128
128
  def newRule(name)
129
129
  # Use a symbol instead of a String.
@@ -43,9 +43,9 @@ class TaskJuggler::TextParser
43
43
 
44
44
  # This class is used to handle the low-level input operations. It knows
45
45
  # whether it deals with a text buffer or a file and abstracts this to the
46
- # Scanner. For each nested file the scanner puts an StreamHandle on the
46
+ # Scanner. For each nested file the scanner puts a StreamHandle on the
47
47
  # stack while the file is scanned. With this stack the scanner can resume
48
- # the processing of the enclosing file once the included files has been
48
+ # the processing of the enclosing file once the included files have been
49
49
  # completely processed.
50
50
  class StreamHandle
51
51
 
@@ -281,7 +281,7 @@ class TaskJuggler::TextParser
281
281
  end
282
282
 
283
283
 
284
- # Start the processing. if _fileNameIsBuffer_ is true, we operate on a
284
+ # Start the processing. If _fileNameIsBuffer_ is true, we operate on a
285
285
  # String, else on a File.
286
286
  def open(fileNameIsBuffer = false)
287
287
  @fileNameIsBuffer = fileNameIsBuffer
@@ -46,11 +46,11 @@ class TaskJuggler
46
46
  @sourceFileInfo = nil
47
47
  end
48
48
 
49
- # Store the number of worked time slots. If the value is a Fixnum, it can
49
+ # Store the number of worked time slots. If the value is an Integer, it can
50
50
  # be directly assigned. A Float is interpreted as percentage and must be
51
51
  # in the rage of 0.0 to 1.0.
52
52
  def work=(value)
53
- if value.is_a?(Fixnum)
53
+ if value.is_a?(Integer)
54
54
  @work = value
55
55
  else
56
56
  # Must be percent value
@@ -51,16 +51,15 @@ class TaskJuggler
51
51
  @opts.summary_width = @optsSummaryWidth
52
52
  @opts.summary_indent = ' ' * @optsSummaryIndent
53
53
 
54
- @opts.banner = "#{AppConfig.softwareName} v#{AppConfig.version} - " +
55
- "#{AppConfig.packageInfo}\n\n" +
56
- "Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
54
+ @opts.banner = "Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
57
55
  " by #{AppConfig.authors.join(', ')}\n\n" +
58
56
  "#{AppConfig.license}\n" +
59
57
  "For more info about #{AppConfig.softwareName} see " +
60
58
  "#{AppConfig.contact}\n\n" +
61
59
  "Usage: #{AppConfig.appName} [options] " +
62
60
  "#{@mandatoryArgs}\n\n"
63
- @opts.separator ""
61
+
62
+ @opts.separator "\nOptions:"
64
63
  @opts.on('-c', '--config <FILE>', String,
65
64
  format('Use the specified YAML configuration file')) do |arg|
66
65
  @configFile = arg
@@ -75,7 +74,7 @@ class TaskJuggler
75
74
  format(<<'EOT'
76
75
  Don't use ANSI contol sequences to color the terminal output. Colors should
77
76
  only be used when spooling to an ANSI terminal. In case the detection fails,
78
- you can this option to force colors to be off.
77
+ you can use this option to force colors to be off.
79
78
  EOT
80
79
  )) do
81
80
  Term::ANSIColor::coloring = false
@@ -91,8 +90,23 @@ EOT
91
90
  quit
92
91
  end
93
92
  @opts.on_tail('--version', format('Show version info')) do
94
- puts "#{AppConfig.softwareName} v#{AppConfig.version} - " +
95
- "#{AppConfig.packageInfo}"
93
+ # Display the software name and version in GNU format
94
+ # as expected by help2man
95
+ # https://www.gnu.org/prep/standards/standards.html#g_t_002d_002dversion
96
+ puts "#{AppConfig.appName} (#{AppConfig.softwareName}) #{AppConfig.version}\n"
97
+ # To also display the copyright and license statements in GNU format
98
+ # uncomment the following and remove the equivalent statements from
99
+ # --help
100
+ # +
101
+ #<<'EOT'
102
+ #Copyright (C) 2016 Chris Schlaeger <cs@taskjuggler.org>
103
+ #License GPLv2: GNU GPL version 2 <http://gnu.org/licenses/gpl.html>
104
+ #This is free software; you can redistribute it and/or modify it under
105
+ #the terms of version 2 of the GNU General Public License as published by the
106
+ #Free Software Foundation.
107
+ #
108
+ #For more info about TaskJuggler see http://www.taskjuggler.org
109
+ #EOT
96
110
  quit
97
111
  end
98
112
 
@@ -128,7 +142,7 @@ EOT
128
142
  args = processArguments(argv)
129
143
 
130
144
  # If DEBUG mode has been enabled, we restore the INT trap handler again
131
- # to get Ruby backtrackes.
145
+ # to get Ruby backtraces.
132
146
  Kernel.trap('INT', intHandler) if $DEBUG
133
147
 
134
148
  unless @silent
@@ -146,7 +160,7 @@ EOT
146
160
  retVal = appMain(args)
147
161
  MessageHandlerInstance.instance.trapSetup = false
148
162
  rescue TjRuntimeError
149
- # We have hit a sitatuation that we can't recover from. A message
163
+ # We have hit a situation that we can't recover from. A message
150
164
  # was severed via the MessageHandler to inform the user and we now
151
165
  # abort the program.
152
166
  return 1
@@ -3,7 +3,8 @@
3
3
  #
4
4
  # = Tj3Config.rb -- The TaskJuggler III Project Management Software
5
5
  #
6
- # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016,
7
+ # 2020
7
8
  # by Chris Schlaeger <cs@taskjuggler.org>
8
9
  #
9
10
  # This program is free software; you can redistribute it and/or modify
@@ -13,12 +14,13 @@
13
14
 
14
15
  require 'taskjuggler/UTF8String'
15
16
  require 'taskjuggler/AppConfig'
17
+ require 'taskjuggler/version'
16
18
 
17
- AppConfig.version = '3.6.0'
19
+ AppConfig.version = VERSION
18
20
  AppConfig.packageName = 'taskjuggler'
19
21
  AppConfig.softwareName = 'TaskJuggler'
20
22
  AppConfig.packageInfo = 'A Project Management Software'
21
- AppConfig.copyright = [ (2006..2016).to_a ]
23
+ AppConfig.copyright = [ (2006..2020).to_a ]
22
24
  AppConfig.authors = [ 'Chris Schlaeger <cs@taskjuggler.org>' ]
23
25
  AppConfig.contact = 'http://www.taskjuggler.org'
24
26
  AppConfig.license = <<'EOT'
@@ -75,7 +75,9 @@ class TaskJuggler
75
75
  @file.each_line do |line|
76
76
  if line[0, mark.length] == mark
77
77
  # We've found an annotation line. Get the tag and indicator.
78
- dum, dum, dum, tag, indicator = line.split
78
+ tokens = line.split
79
+ tag = tokens[3]
80
+ indicator = tokens[4]
79
81
 
80
82
  if indicator == '+'
81
83
  # Start a new snip
@@ -76,7 +76,7 @@ EOT
76
76
  def rule_accountHeader
77
77
  pattern(%w( _account !optionalID $STRING ), lambda {
78
78
  if @property.nil? && !@accountprefix.empty?
79
- @property = @project.accout(@accountprefix)
79
+ @property = @project.account(@accountprefix)
80
80
  end
81
81
  if @val[1] && @project.account(@val[1])
82
82
  error('account_exists', "Account #{@val[1]} has already been defined.",
@@ -239,7 +239,7 @@ certain maximum per time period. The purge statement can be used to remove
239
239
  inherited allocations or flags.
240
240
 
241
241
  For effort-based tasks the task duration is clipped to only extend from the
242
- begining of the first allocation to the end of the last allocation. This is
242
+ beginning of the first allocation to the end of the last allocation. This is
243
243
  done to optimize for an overall minimum project duration as dependent tasks
244
244
  can potentially use the unallocated, clipped slots.
245
245
  EOT
@@ -287,7 +287,7 @@ EOT
287
287
  @allocate.setSelectionMode(@val[1])
288
288
  })
289
289
  doc('select', <<'EOT'
290
- The select functions controls which resource is picked from an allocation and
290
+ The select function controls which resource is picked from an allocation and
291
291
  it's alternatives. The selection is re-evaluated each time the resource used
292
292
  in the previous time slot becomes unavailable.
293
293
 
@@ -301,7 +301,7 @@ EOT
301
301
  @allocate.persistent = true
302
302
  })
303
303
  doc('persistent', <<'EOT'
304
- Specifies that once a resource is picked from the list of alternatives this
304
+ Specifies that once a resource is picked from the list of alternatives, this
305
305
  resource is used for the whole task. This is useful when several alternative
306
306
  resources have been specified. Normally the selected resource can change after
307
307
  each break. A break is an interval of at least one timeslot where no resources
@@ -389,7 +389,7 @@ EOT
389
389
  descr(<<'EOT'
390
390
  Pick the resource that has the smallest allocation factor. The
391
391
  allocation factor is calculated from the various allocations of the resource
392
- across the tasks. This is the default setting.)
392
+ across the tasks. This is the default setting.
393
393
  EOT
394
394
  )
395
395
 
@@ -748,7 +748,7 @@ EOT
748
748
  Normally, columns with calculated values take the specified report period into
749
749
  account when calculating their values. With this attribute, the user can
750
750
  specify an end date for the period that should be used when calculating the
751
- values of this column. It does not have an impact on column with time
751
+ values of this column. It does not have an impact on columns with time
752
752
  invariant values.
753
753
  EOT
754
754
  )
@@ -781,7 +781,7 @@ EOT
781
781
  @column.listItem = @val[1]
782
782
  })
783
783
  doc('listitem.column', <<'EOT'
784
- Specifies a RichText pattern that is used to generate the text for the list
784
+ Specifies a [[Rich_Text_Attributes|Rich Text]] pattern that is used to generate the text for the list
785
785
  items. The pattern should contain at least one ''''<nowiki><</nowiki>-query
786
786
  attribute='XXX'->'''' element that will be replaced with the value of
787
787
  attribute XXX. For the replacement, the property of the query will be the list
@@ -824,7 +824,7 @@ EOT
824
824
  Normally, columns with calculated values take the specified report period into
825
825
  account when calculating their values. With this attribute, the user can
826
826
  specify a start date for the period that should be used when calculating the
827
- values of this column. It does not have an impact on column with time
827
+ values of this column. It does not have an impact on columns with time
828
828
  invariant values.
829
829
  EOT
830
830
  )
@@ -930,19 +930,19 @@ are set to 0. ''''TIMEZONE'''' must be an offset to GMT or UTC, specified as
930
930
  ''''+HHMM'''' or ''''-HHMM''''. Dates must always be aligned with the
931
931
  [[timingresolution]].
932
932
 
933
- TaskJuggler also supports simple date calculations. You can add or substract a
933
+ TaskJuggler also supports simple date calculations. You can add or subtract a
934
934
  given interval from a fixed date.
935
935
 
936
936
  %{2009-11-01 + 8m}
937
937
 
938
- This will result in an actual date of around 2009-07-01. Keep in mind that due
938
+ This will result in an actual date of around 2010-07-01. Keep in mind that due
939
939
  to the varying lengths of months TaskJuggler cannot add exactly 8 calendar
940
940
  months. The date calculation functionality makes most sense when used with
941
941
  macros.
942
942
 
943
943
  %{${now} - 2w}
944
944
 
945
- This is result in a date 2 weeks earlier than the current (or specified) date.
945
+ This results in a date 2 weeks earlier than the current (or specified) date.
946
946
  See [[duration]] for a complete list of supported time intervals. Don't forget
947
947
  to put at least one space character after the date to prevent TaskJuggler from
948
948
  interpreting the interval as an hour.
@@ -1065,11 +1065,11 @@ EOT
1065
1065
  @property.set('definitions', @val[1])
1066
1066
  })
1067
1067
  doc('definitions', <<"EOT"
1068
- This attributes controls what definitions will be contained in the report. If
1068
+ This attribute controls what definitions will be contained in the report. If
1069
1069
  the list includes ''project'', the generated file will have a ''''.tjp''''
1070
1070
  extension. Otherwise it will have a ''''.tji'''' extension.
1071
1071
 
1072
- By default, the report contains everything and the generated files has a ''''.tjp'''' extension.
1072
+ By default, the report contains everything and the generated files have a ''''.tjp'''' extension.
1073
1073
  EOT
1074
1074
  )
1075
1075
  allOrNothingListRule('exportDefinitions',
@@ -1188,13 +1188,13 @@ EOT
1188
1188
  descr(<<'EOT'
1189
1189
  Export of the scheduled project in Microsoft Project XML format. This will
1190
1190
  export the data of the fully scheduled project. The exported data include the
1191
- tasks, resources and the assignments of resources to task. This is only a
1191
+ tasks, resources and the assignments of resources to tasks. This is only a
1192
1192
  small subset of the data that TaskJuggler can manage. This export is intended
1193
1193
  to share resource assignment data with other teams using Microsoft Project.
1194
- TaskJuggler manages assignments with a larger accuracy than the Microsft
1194
+ TaskJuggler manages assignments with a larger accuracy than the Microsoft
1195
1195
  Project XML format can represent. This will inevitably lead to some rounding
1196
1196
  errors and different interpretation of the data. The numbers you will see in
1197
- Project are not necessarily an exact match of the numbers you see in
1197
+ Microsoft Project are not necessarily an exact match of the numbers you see in
1198
1198
  TaskJuggler. The XML file format requires the sequence of the tasks in the
1199
1199
  file to follow the work breakdown structure. Hence all user provided sorting
1200
1200
  directions will be ignored for this format.
@@ -1385,7 +1385,7 @@ EOT
1385
1385
 
1386
1386
  singlePattern('_inherit')
1387
1387
  doc('inherit.extend', <<'EOT'
1388
- If the this attribute is used, the property extension will be inherited by
1388
+ If this attribute is used, the property extension will be inherited by
1389
1389
  child properties from their parent property.
1390
1390
  EOT
1391
1391
  )
@@ -1457,7 +1457,7 @@ A logical flag expression is a combination of operands and mathematical
1457
1457
  operations. The final result of a logical expression is always true or false.
1458
1458
  Logical expressions are used the reduce the properties in a report to a
1459
1459
  certain subset or to select alternatives for the cell content of a table. When
1460
- used with attributes like [[hidejournalentry]] the logical expression
1460
+ the logical expression is used with attributes like [[hidejournalentry]] and
1461
1461
  evaluates to true for a certain property, this property is hidden or rolled-up
1462
1462
  in the report.
1463
1463
 
@@ -1507,7 +1507,7 @@ EOT
1507
1507
  })
1508
1508
  arg(0, 'operand', <<'EOT'
1509
1509
  An operand is a declared flag. An operand can be a negated operand by
1510
- prefixing a ~ charater or it can be another logical expression enclosed in
1510
+ prefixing a ~ character or it can be another logical expression enclosed in
1511
1511
  braces.
1512
1512
  EOT
1513
1513
  )
@@ -1527,7 +1527,7 @@ EOT
1527
1527
  })
1528
1528
  arg(1, 'operand', <<'EOT'
1529
1529
  An operand is a declared flag. An operand can be a negated operand by
1530
- prefixing a ~ charater or it can be another logical expression enclosed in
1530
+ prefixing a ~ character or it can be another logical expression enclosed in
1531
1531
  braces.
1532
1532
  EOT
1533
1533
  )
@@ -1582,18 +1582,18 @@ the evaluation, implicit and explicit parameters are used.
1582
1582
 
1583
1583
  All functions may operate on the current property and the scope property. The
1584
1584
  scope property is the enclosing property in reports with nested properties.
1585
- Imagine e. g a task report with nested resources. When the function is called
1585
+ Imagine e. g. a task report with nested resources. When the function is called
1586
1586
  for a task line, the task is the property and we don't have a scope property.
1587
1587
  When the function is called for a resource line, the resource is the property
1588
1588
  and the enclosing task is the scope property.
1589
1589
 
1590
- These number of arguments that are passed in brackets to the function depends
1590
+ The number of arguments that are passed in brackets to the function depends
1591
1591
  on the specific function. See the reference for details on each function.
1592
1592
 
1593
1593
  All functions can be suffixed with an underscore character. In that case, the
1594
1594
  function is operating on the scope property as if it were the property. The
1595
1595
  original property is ignored in that case. In our task report example from
1596
- above, calling a function with an appended dash would mean that a task
1596
+ above, calling a function with an appended underscore would mean that a task
1597
1597
  line would be evaluated for the enclosing resource.
1598
1598
 
1599
1599
  In the example below you can see how this can be used. To generate a task
@@ -1684,7 +1684,7 @@ EOT
1684
1684
 
1685
1685
  pattern(%w( _isongoing _( $ID _) ))
1686
1686
  doc('isongoing', <<'EOT'
1687
- Will evaluate to true for tasks that overlap with the report period in given
1687
+ Will evaluate to true for tasks that overlap with the report period in the given
1688
1688
  scenario.
1689
1689
  EOT
1690
1690
  )
@@ -1825,6 +1825,11 @@ EOT
1825
1825
  pattern(%w( !reportStart ))
1826
1826
  pattern(%w( !rollupresource ))
1827
1827
  pattern(%w( !rolluptask ))
1828
+ pattern(%w( _novevents), lambda { @property.set('novevents', [ true ]) })
1829
+ doc('novevents', <<'EOT'
1830
+ Don't add VEVENT entries to generated [[icalreport]]s.
1831
+ EOT
1832
+ )
1828
1833
 
1829
1834
  pattern(%w( _scenario !scenarioId ), lambda {
1830
1835
  # Don't include disabled scenarios in the report
@@ -1837,8 +1842,8 @@ EOT
1837
1842
  end
1838
1843
  })
1839
1844
  doc('scenario.ical', <<'EOT'
1840
- Id of the scenario that should be included in the report. By default, the
1841
- top-level scenario will be included. This attribute can be used select another
1845
+ ID of the scenario that should be included in the report. By default, the
1846
+ top-level scenario will be included. This attribute can be used to select another
1842
1847
  scenario.
1843
1848
  EOT
1844
1849
  )
@@ -1863,6 +1868,8 @@ EOT
1863
1868
  # Show all journal entries.
1864
1869
  @property.set('hideJournalEntry',
1865
1870
  LogicalExpression.new(LogicalOperation.new(0)))
1871
+ # Add VEVENT entries to icalreports by default
1872
+ @property.set('novevents', [ false ])
1866
1873
  end
1867
1874
  })
1868
1875
  arg(1, 'file name', <<'EOT'
@@ -2021,7 +2028,7 @@ dates without a time specification! Date specifications are 0 extended. An
2021
2028
  end date without a time is expanded to midnight that day. So the day of the
2022
2029
  end date is not included in the interval! The start and end dates must be separated by a hyphen character.
2023
2030
 
2024
- In the second form specifies the start date and an interval duration. The
2031
+ The second form specifies the start date and an interval duration. The
2025
2032
  duration must be prefixed by a plus character.
2026
2033
  EOT
2027
2034
  )
@@ -2161,7 +2168,7 @@ EOT
2161
2168
  pattern(%w( _alerts_dep ), lambda { :alerts_dep })
2162
2169
  descr(<<'EOT'
2163
2170
  In this mode only the last entries before the report end date for the context
2164
- property and all its sub-properties and their dependencies is included. If
2171
+ property and all its sub-properties and their dependencies are included. If
2165
2172
  there are multiple entries at the exact same date, then all these entries are
2166
2173
  included. In contrast to the ''''status_down'''' mode, only entries with an
2167
2174
  alert level above the default level, and only those with the highest overall
@@ -2190,7 +2197,7 @@ used to record events, decisions or news that happened at a particular moment
2190
2197
  during the project. Depending on the context, a journal entry may or may not
2191
2198
  be associated with a specific property or author.
2192
2199
 
2193
- A journal entry can consists of up to three parts. The headline is mandatory
2200
+ A journal entry can consist of up to three parts. The headline is mandatory
2194
2201
  and should be only 5 to 10 words long. The introduction is optional and should
2195
2202
  be only one or two sentences long. All other details should be put into the
2196
2203
  third part.
@@ -2209,7 +2216,7 @@ EOT
2209
2216
  @journalEntry.alertLevel = @val[1]
2210
2217
  })
2211
2218
  doc('alert', <<'EOT'
2212
- Specify the alert level for this entry. This attribute is inteded to be used for
2219
+ Specify the alert level for this entry. This attribute is intended to be used for
2213
2220
  status reporting. When used for a journal entry that is associated with a
2214
2221
  property, the value can be reported in the alert column. When multiple entries
2215
2222
  have been specified for the property, the entry with the date closest to the
@@ -2330,7 +2337,7 @@ allowances. The ''''leaveallowancebalance'''' report [[columns|column]] can be
2330
2337
  used to report the current annual leave balance.
2331
2338
 
2332
2339
  Leaves outside of the project period are silently ignored and will not be
2333
- considered in the leave balance calculation. Therefor, leave allowances are
2340
+ considered in the leave balance calculation. Therefore, leave allowances are
2334
2341
  only allowed within the project period.
2335
2342
  EOT
2336
2343
  )
@@ -2352,7 +2359,7 @@ Leaves can be defined at global level, at resource level and at shift level
2352
2359
  and intervals may overlap. The leave types have different priorities. A higher
2353
2360
  priority leave type can overwrite a lower priority type. This means that
2354
2361
  resource level leaves can overwrite global leaves when they have a higher
2355
- priority. A sub resource can overwrite a leave of a enclosing resource.
2362
+ priority. A sub resource can overwrite a leave of an enclosing resource.
2356
2363
 
2357
2364
  Leave periods outside of the project interval are silently ignored. For leave
2358
2365
  periods that are partially outside of the project period only the part inside
@@ -2469,7 +2476,7 @@ EOT
2469
2476
  doc('dailymin', <<'EOT'
2470
2477
  Minimum required effort for any calendar day. This value cannot be guaranteed by
2471
2478
  the scheduler. It is only checked after the schedule is complete. In case the
2472
- minium required amount has not been reached, a warning will be generated.
2479
+ minimum required amount has not been reached, a warning will be generated.
2473
2480
  EOT
2474
2481
  )
2475
2482
  example('Limits-1', '4')
@@ -2506,7 +2513,7 @@ EOT
2506
2513
  doc('monthlymin', <<'EOT'
2507
2514
  Minimum required effort for any calendar month. This value cannot be
2508
2515
  guaranteed by the scheduler. It is only checked after the schedule is
2509
- complete. In case the minium required amount has not been reached, a warning
2516
+ complete. In case the minimum required amount has not been reached, a warning
2510
2517
  will be generated.
2511
2518
  EOT
2512
2519
  )
@@ -2525,7 +2532,7 @@ EOT
2525
2532
  doc('weeklymin', <<'EOT'
2526
2533
  Minimum required effort for any calendar week. This value cannot be guaranteed by
2527
2534
  the scheduler. It is only checked after the schedule is complete. In case the
2528
- minium required amount has not been reached, a warning will be generated.
2535
+ minimum required amount has not been reached, a warning will be generated.
2529
2536
  EOT
2530
2537
  )
2531
2538
  end
@@ -2632,8 +2639,8 @@ EOT
2632
2639
  A logical expression is a combination of operands and mathematical operations.
2633
2640
  The final result of a logical expression is always true or false. Logical
2634
2641
  expressions are used the reduce the properties in a report to a certain subset
2635
- or to select alternatives for the cell content of a table. When used with
2636
- attributes like [[hidetask]] or [[hideresource]] the logical expression
2642
+ or to select alternatives for the cell content of a table. When the
2643
+ logical expression is used with attributes like [[hidetask]] or [[hideresource]] and
2637
2644
  evaluates to true for a certain property, this property is hidden or rolled-up
2638
2645
  in the report.
2639
2646
 
@@ -2655,7 +2662,7 @@ be undefined. To use such an attribute in a comparison, you need to test for
2655
2662
  the validity first. E. g. to compare the end date of the ''''plan''''
2656
2663
  scenario with the ''''maxend'''' value use ''''isvalid(plan.maxend) &
2657
2664
  (plan.end > plan.maxend)''''. The ''''&'''' and ''''|'''' operators are lazy.
2658
- If the result is already known after evaluation the first operand, the second
2665
+ If the result is already known after evaluation of the first operand, the second
2659
2666
  operand will not be evaluated any more.
2660
2667
  EOT
2661
2668
  )
@@ -2690,9 +2697,9 @@ numbers as names. The number specifies the index of the argument.
2690
2697
  will expand to ''''This stupid text'''' if called as ''''${FOO "stupid"}''''.
2691
2698
  Macros may call other macros. All macro arguments must be enclosed by double
2692
2699
  quotes. In case the argument contains a double quote, it must be escaped by a
2693
- slash (''''/'''').
2700
+ backslash (''''\'''').
2694
2701
 
2695
- User defined macro IDs must have at least one uppercase letter as all
2702
+ User defined macro IDs should start with one uppercase letter as all
2696
2703
  lowercase letter IDs are reserved for built-in macros.
2697
2704
 
2698
2705
  To terminate the macro definition, the ''''<nowiki>]</nowiki>'''' must be the
@@ -3018,7 +3025,7 @@ them from flags. See [[columnid]] for a list of available attributes. The use
3018
3025
  of list attributes is not recommended. User defined attributes are available
3019
3026
  as well.
3020
3027
 
3021
- An operand can be a negated operand by prefixing a ~ charater or it can be
3028
+ An operand can be a negated operand by prefixing a ~ character or it can be
3022
3029
  another logical expression enclosed in braces.
3023
3030
  EOT
3024
3031
  )
@@ -3037,7 +3044,7 @@ EOT
3037
3044
  [ @val[0], @val[1] ]
3038
3045
  })
3039
3046
  arg(1, 'operand', <<'EOT'
3040
- An operand can consist of a date, a text string or a numerical value. It can also be the name of a declared flag. Finally, an operand can be a negated operand by prefixing a ~ charater or it can be another operation enclosed in braces.
3047
+ An operand can consist of a date, a text string or a numerical value. It can also be the name of a declared flag. Finally, an operand can be a negated operand by prefixing a ~ character or it can be another operation enclosed in braces.
3041
3048
  EOT
3042
3049
  )
3043
3050
  end
@@ -3075,7 +3082,7 @@ EOT
3075
3082
  })
3076
3083
  arg(0, 'id', <<"EOT"
3077
3084
  An optional ID. If you ever want to reference this property, you must specify
3078
- your own unique ID. If no ID is specified one will be automatically generated.
3085
+ your own unique ID. If no ID is specified, one will be automatically generated.
3079
3086
  These IDs may become visible in reports, but may change at any time. You may
3080
3087
  never rely on automatically generated IDs.
3081
3088
  EOT
@@ -3140,7 +3147,7 @@ EOT
3140
3147
  pattern(%w( _niku ), lambda {
3141
3148
  :niku
3142
3149
  })
3143
- descr('Generate a XOG XML file to be used with Clarity.')
3150
+ descr('Generate an XOG XML file to be used with Clarity.')
3144
3151
  end
3145
3152
 
3146
3153
  def rule_outputFormats
@@ -3238,7 +3245,7 @@ EOT
3238
3245
  doc('extend', <<'EOT'
3239
3246
  Often it is desirable to collect more information in the project file than is
3240
3247
  necessary for task scheduling and resource allocation. To add such information
3241
- to tasks, resources or accounts the user can extend these properties with
3248
+ to tasks, resources or accounts, the user can extend these properties with
3242
3249
  user-defined attributes. The new attributes can be of various types such as
3243
3250
  text, date or reference to capture various types of data. Optionally the user
3244
3251
  can specify if the attribute value should be inherited from the enclosing
@@ -3267,6 +3274,21 @@ EOT
3267
3274
  arg(1, 'date', 'Alternative date to be used as current date for all ' +
3268
3275
  'computations')
3269
3276
 
3277
+ pattern(%w( _markdate !date ), lambda {
3278
+ @project['markdate'] = @val[1]
3279
+ @scanner.addMacro(TextParser::Macro.new('markdate', @val[1].to_s,
3280
+ @sourceFileInfo[0]))
3281
+ @scanner.addMacro(TextParser::Macro.new(
3282
+ 'today', @val[1].to_s(@project['timeFormat']), @sourceFileInfo[0]))
3283
+ })
3284
+ doc('markdate', <<'EOT'
3285
+ Specify the reference date that TaskJuggler uses as date that can be specified
3286
+ and set by the user. It can be used as additional point in time to help with
3287
+ tracking tasks. If no value is specified, the current value of the system clock is used.
3288
+ EOT
3289
+ )
3290
+ arg(1, 'date', 'Alternative date to be used as custom date specified by the user')
3291
+
3270
3292
  pattern(%w( !numberFormat ), lambda {
3271
3293
  @project['numberFormat'] = @val[0]
3272
3294
  })
@@ -3285,8 +3307,8 @@ EOT
3285
3307
  })
3286
3308
  doc('outputdir',
3287
3309
  'Specifies the directory into which the reports should be generated. ' +
3288
- 'This will not affect reports whos name start with a slash. This ' +
3289
- 'setting can be overwritten by the command line option.')
3310
+ 'This will not affect reports whose name start with a slash. This ' +
3311
+ 'setting can be overwritten by the command line option -o or --output-dir.')
3290
3312
  arg(1, 'directory', 'Path to an existing directory')
3291
3313
 
3292
3314
  pattern(%w( !scenario ))
@@ -3294,8 +3316,8 @@ EOT
3294
3316
  @project['shortTimeFormat'] = @val[1]
3295
3317
  })
3296
3318
  doc('shorttimeformat',
3297
- 'Specifies time format for time short specifications. This is normal' +
3298
- 'just the hour and minutes.')
3319
+ 'Specifies time format for short time specifications. This is normal ' +
3320
+ 'just hours and minutes.')
3299
3321
  arg(1, 'format', 'strftime like format string')
3300
3322
 
3301
3323
  pattern(%w( !timeformat ), lambda {
@@ -3352,7 +3374,7 @@ the project. All sub-scenarios of this scenario inherit the bookings of the
3352
3374
  tracking scenario and may not have any bookings of their own. The tracking
3353
3375
  scenario must also be specified to use time and status sheet reports.
3354
3376
 
3355
- The tracking scenario must be defined after all scenario have been defined.
3377
+ The tracking scenario must be defined after all scenarios have been defined.
3356
3378
 
3357
3379
  The tracking scenario and all scenarios derived from it will be scheduled in
3358
3380
  projection mode. This means that the scheduler will only add bookings after
@@ -3472,7 +3494,7 @@ EOT
3472
3494
  # documentation.
3473
3495
  pattern(%w( !projectPropertiesBody ))
3474
3496
  doc('properties', <<'EOT'
3475
- The project properties. Every project must consists of at least one task. The other properties are optional. To save the scheduled data at least one output generating property should be used.
3497
+ The project properties. Every project must consist of at least one task. The other properties are optional. To save the scheduled data at least one output generating property should be used.
3476
3498
  EOT
3477
3499
  )
3478
3500
  end
@@ -3489,7 +3511,7 @@ EOT
3489
3511
  doc('include.project', <<'EOT'
3490
3512
  Includes the specified file name as if its contents would be written
3491
3513
  instead of the include property. When the included files contains other
3492
- include statements or report definitions, the filenames are relative to file
3514
+ include statements or report definitions, the filenames are relative to the file
3493
3515
  where they are defined in.
3494
3516
 
3495
3517
  This version of the include directive may only be used inside the [[project]]
@@ -3506,7 +3528,7 @@ EOT
3506
3528
  Includes the specified file name as if its contents would be written
3507
3529
  instead of the include property. The only exception is the include
3508
3530
  statement itself. When the included files contains other include
3509
- statements or report definitions, the filenames are relative to file
3531
+ statements or report definitions, the filenames are relative to the file
3510
3532
  where they are defined in.
3511
3533
 
3512
3534
  The included file may only contain macro definitions. This version of the
@@ -3667,7 +3689,7 @@ EOT
3667
3689
  Includes the specified file name as if its contents would be written
3668
3690
  instead of the include property. The only exception is the include
3669
3691
  statement itself. When the included files contains other include
3670
- statements or report definitions, the filenames are relative to file
3692
+ statements or report definitions, the filenames are relative to the file
3671
3693
  where they are defined in. include commands can be used in the project
3672
3694
  header, at global scope or between property declarations of tasks,
3673
3695
  resources, and accounts.
@@ -3689,13 +3711,11 @@ EOT
3689
3711
  end
3690
3712
  if attributeDefinition.scenarioSpecific
3691
3713
  @scenarioIdx = 0 unless @val[1]
3692
- attr = @property[attrId, 0]
3693
3714
  else
3694
3715
  if @val[1]
3695
3716
  error('purge_non_sc_spec_attr',
3696
3717
  'Scenario specified for a non-scenario specific attribute')
3697
3718
  end
3698
- attr = @property.get(attrId)
3699
3719
  end
3700
3720
  if @property.attributeDefinition(attrId).scenarioSpecific
3701
3721
  @property.getAttribute(attrId, @scenarioIdx).reset
@@ -3776,6 +3796,13 @@ EOT
3776
3796
  descr(<<'EOT'
3777
3797
  The balance of the annual leave at the end of the reporting interval. The unit
3778
3798
  can be adjusted with [[loadunit]].
3799
+ EOT
3800
+ )
3801
+
3802
+ singlePattern('_annualleavelist')
3803
+ descr(<<'EOT'
3804
+ A list with all annual leave intervals. The list can be customized with the
3805
+ [[listtype.column|listtype]] attribute.
3779
3806
  EOT
3780
3807
  )
3781
3808
 
@@ -3802,7 +3829,7 @@ EOT
3802
3829
  singlePattern('_alerttrend')
3803
3830
  descr(<<'EOT'
3804
3831
  Shows how the alert level at the end of the report period compares to the
3805
- alert level at the begining of the report period. Possible values are
3832
+ alert level at the beginning of the report period. Possible values are
3806
3833
  ''''Up'''', ''''Down'''' or ''''Flat''''.
3807
3834
  EOT
3808
3835
  )
@@ -3839,7 +3866,7 @@ EOT
3839
3866
  singlePattern('_closedtasks')
3840
3867
  descr(<<'EOT'
3841
3868
  The number of sub-tasks (including the current task) that have been closed
3842
- during the reported time period. Closed means that they have and end date
3869
+ during the reported time period. Closed means that they have an end date
3843
3870
  before the current time or [[now]] date.
3844
3871
  EOT
3845
3872
  )
@@ -3860,12 +3887,12 @@ EOT
3860
3887
  singlePattern('_complete')
3861
3888
  descr(<<'EOT'
3862
3889
  The completion degree of a task. Unless a completion degree is manually
3863
- provided, this is a computed value relative the [[now]] date of the project. A
3890
+ provided, this is a computed value relative to the [[now]] date of the project. A
3864
3891
  task that has ended before the now date is always 100% complete. A task that
3865
- starts at or after the now date is always 0%. For [[effort]] based task the
3892
+ starts at or after the now date is always 0%. For [[effort]] based tasks the
3866
3893
  computation degree is the percentage of done effort of the overall effort. For
3867
- other leaf task, the completion degree is the percentage of the already passed
3868
- duration of the overall task duration. For container task, it's always the
3894
+ other leaf tasks, the completion degree is the percentage of the already passed
3895
+ duration of the overall task duration. For container tasks, it's always the
3869
3896
  average of the direct sub tasks. If the sub tasks consist of a mixture of
3870
3897
  effort and non-effort tasks, the completion value is only of limited value.
3871
3898
  EOT
@@ -3879,8 +3906,8 @@ EOT
3879
3906
  descr('Deprecated alias for complete')
3880
3907
 
3881
3908
  singlePattern('_criticalness')
3882
- descr('A measure for how much effort the resource is allocated for, or' +
3883
- 'how strained the allocated resources of a task are')
3909
+ descr('A measure for how much effort the resource is allocated for, or ' +
3910
+ 'how strained the allocated resources of a task are.')
3884
3911
 
3885
3912
  singlePattern('_cost')
3886
3913
  descr(<<'EOT'
@@ -3932,7 +3959,7 @@ EOT
3932
3959
  descr(<<'EOT'
3933
3960
  A list of tasks that depend on the current task. The list contains the names,
3934
3961
  the IDs, the date and the type of dependency. For the type the following
3935
- symbols are used for <nowiki><dep></nowiki>.
3962
+ symbols are used for <nowiki><dep></nowiki>:
3936
3963
 
3937
3964
  * '''<nowiki>]->[</nowiki>''': End-to-Start dependency
3938
3965
  * '''<nowiki>[->[</nowiki>''': Start-to-Start dependency
@@ -3941,7 +3968,7 @@ symbols are used for <nowiki><dep></nowiki>.
3941
3968
 
3942
3969
  The list can be customized by the [[listitem.column|listitem]] and
3943
3970
  [[listtype.column]] attributes. The dependency symbol can be generated via
3944
- the ''''dependency'''' attribute inthe query, the target date via the
3971
+ the ''''dependency'''' attribute in the query, the target date via the
3945
3972
  ''''date'''' attribute.
3946
3973
  EOT
3947
3974
  )
@@ -4019,7 +4046,7 @@ EOT
4019
4046
  singlePattern('_journal')
4020
4047
  descr(<<'EOT'
4021
4048
  The journal entries for the task or resource for the reported interval. The
4022
- generated text can be customized with the [[journalmode]],
4049
+ generated text can be customized with [[journalmode]],
4023
4050
  [[journalattributes]], [[hidejournalentry]] and [[sortjournalentries]]. If
4024
4051
  used in queries without a property context, the journal for the complete
4025
4052
  project is generated.
@@ -4080,7 +4107,7 @@ EOT
4080
4107
  singlePattern('_opentasks')
4081
4108
  descr(<<'EOT'
4082
4109
  The number of sub-tasks (including the current task) that have not yet been
4083
- closed during the reported time period. Closed means that they have and end
4110
+ closed during the reported time period. Closed means that they have an end
4084
4111
  date before the current time or [[now]] date.
4085
4112
  EOT
4086
4113
  )
@@ -4102,7 +4129,7 @@ are used
4102
4129
 
4103
4130
  The list can be customized by the [[listitem.column|listitem]] and
4104
4131
  [[listtype.column|listtype]] attributes. The dependency symbol can be
4105
- generated via the ''''dependency'''' attribute inthe query, the target date
4132
+ generated via the ''''dependency'''' attribute in the query, the target date
4106
4133
  via the ''''date'''' attribute.
4107
4134
  EOT
4108
4135
  )
@@ -4364,7 +4391,7 @@ EOT
4364
4391
  })
4365
4392
  doc('height', <<'EOT'
4366
4393
  Set the height of the report in pixels. This attribute is only used for
4367
- reports that cannot determine the height based on the content. Such report can
4394
+ reports that cannot determine the height based on the content. Such reports can
4368
4395
  be freely resized to fit in. The vast majority of reports can determine their
4369
4396
  height based on the provided content. These reports will simply ignore this
4370
4397
  setting.
@@ -4421,7 +4448,7 @@ EOT
4421
4448
  @property.set('rawHtmlHead', @val[1])
4422
4449
  })
4423
4450
  doc('rawhtmlhead', <<'EOT'
4424
- Define a HTML fragment that will be inserted at the end of the HTML head
4451
+ Define an HTML fragment that will be inserted at the end of the HTML head
4425
4452
  section.
4426
4453
  EOT
4427
4454
  )
@@ -4485,7 +4512,7 @@ EOT
4485
4512
  doc('resourceroot', <<'EOT'
4486
4513
  Only resources below the specified root-level resources are exported. The
4487
4514
  exported resources will have the ID of the root-level resource stripped from
4488
- their ID, so that the sub-resourcess of the root-level resource become
4515
+ their ID, so that the sub-resources of the root-level resource become
4489
4516
  top-level resources in the report file.
4490
4517
  EOT
4491
4518
  )
@@ -4534,7 +4561,7 @@ EOT
4534
4561
  })
4535
4562
  doc('width', <<'EOT'
4536
4563
  Set the width of the report in pixels. This attribute is only used for
4537
- reports that cannot determine the width based on the content. Such report can
4564
+ reports that cannot determine the width based on the content. Such reports can
4538
4565
  be freely resized to fit in. The vast majority of reports can determine their
4539
4566
  width based on the provided content. These reports will simply ignore this
4540
4567
  setting.
@@ -4796,9 +4823,9 @@ EOT
4796
4823
  })
4797
4824
  doc('resourcereport', <<'EOT'
4798
4825
  The report lists resources and their respective values in a table. The task
4799
- that are the resources are allocated to can be listed as well. To reduce the
4826
+ that the resources are allocated to can be listed as well. To reduce the
4800
4827
  list of included resources, you can use the [[hideresource]],
4801
- [[rollupresource]] or [[resourceroot]] attributes. The order of the task can
4828
+ [[rollupresource]] or [[resourceroot]] attributes. The order of the tasks can
4802
4829
  be controlled with [[sortresources]]. If the first sorting criteria is tree
4803
4830
  sorting, the parent resources will always be included to form the tree.
4804
4831
  Tree sorting is the default. You need to change it if you do not want certain
@@ -4857,7 +4884,7 @@ it as a crude way to model a team. A team of 5 people should have an
4857
4884
  efficiency of 5.0. Keep in mind that you cannot track the members of the team
4858
4885
  individually if you use this feature. They always act as a group.
4859
4886
 
4860
- The other use is to model performance variations between your resources. Again, this is a fairly crude mechanism and should be used with care. A resource that isn't every good at some task might be pretty good at another. This can't be taken into account as the resource efficiency can only set globally for all tasks.
4887
+ The other use is to model performance variations between your resources. Again, this is a fairly crude mechanism and should be used with care. A resource that isn't very good at some task might be pretty good at another. This can't be taken into account as the resource efficiency can only be set globally for all tasks.
4861
4888
 
4862
4889
  All resources that do not contribute effort to the task, should have an
4863
4890
  efficiency of 0.0. A typical example would be a conference room. It's necessary for a meeting, but it does not contribute any work.
@@ -4874,7 +4901,7 @@ EOT
4874
4901
  pattern(%w( _booking !resourceBooking ))
4875
4902
  doc('booking.resource', <<'EOT'
4876
4903
  The booking attribute can be used to report actually completed work. A task
4877
- with bookings must be [[scheduling|scheduled]] in ''''asap'''' mode. If the
4904
+ with bookings must be [[scheduling|scheduled]] in ''''ASAP'''' mode. If the
4878
4905
  scenario is not the [[trackingscenario|tracking scenario]] or derived from it,
4879
4906
  the scheduler will not allocate resources prior to the current date or the
4880
4907
  date specified with [[now]] when a task has at least one booking.
@@ -4960,7 +4987,7 @@ EOT
4960
4987
  @shiftAssignments = nil
4961
4988
  })
4962
4989
  level(:deprecated)
4963
- also('shift.resource')
4990
+ also('shifts.resource')
4964
4991
  doc('shift.resource', <<'EOT'
4965
4992
  This keyword has been deprecated. Please use [[shifts.resource|shifts
4966
4993
  (resource)]] instead.
@@ -5070,10 +5097,10 @@ that are listed as scenario specific may differ between the various
5070
5097
  scenarios. A nested scenario uses all attributes from the enclosing scenario
5071
5098
  unless the user has specified a different value for this attribute.
5072
5099
 
5073
- By default, the scheduler assigns resources to task beginning with the project
5100
+ By default, the scheduler assigns resources to tasks beginning with the project
5074
5101
  start date. If the scenario is switched to projection mode, no assignments
5075
5102
  will be made prior to the current date or the date specified by [[now]]. In
5076
- this case, TaskJuggler assumes, that all assignements prior to the
5103
+ this case, TaskJuggler assumes, that all assignments prior to the
5077
5104
  current date have been provided by [[booking.task]] statements.
5078
5105
  EOT
5079
5106
  )
@@ -5088,7 +5115,7 @@ EOT
5088
5115
  })
5089
5116
  doc('active', <<'EOT'
5090
5117
  Enable the scenario to be scheduled or not. By default, all scenarios will be
5091
- scheduled. If a scenario is marked as inactive, it not be scheduled and will
5118
+ scheduled. If a scenario is marked as inactive, it cannot be scheduled and will
5092
5119
  be ignored in the reports.
5093
5120
  EOT
5094
5121
  )
@@ -5703,7 +5730,7 @@ EOT
5703
5730
  @property = @propertyStack.pop
5704
5731
  })
5705
5732
  doc('task.statussheet', <<'EOT'
5706
- Opens the task with the specified ID to add a status report. Child task can be
5733
+ Opens the task with the specified ID to add a status report. Child tasks can be
5707
5734
  opened inside this context by specifying their relative ID to this parent.
5708
5735
  EOT
5709
5736
  )
@@ -6043,7 +6070,7 @@ EOT
6043
6070
  )
6044
6071
 
6045
6072
  singlePattern('$ID')
6046
- arg(0, 'ID', 'Just the ID of the task without and parent IDs.')
6073
+ arg(0, 'ID', 'Just the ID of the task without any parent IDs.')
6047
6074
 
6048
6075
  pattern(%w( !relativeId ), lambda {
6049
6076
  task = @property
@@ -6159,7 +6186,7 @@ EOT
6159
6186
  doc('taskreport', <<'EOT'
6160
6187
  The report lists tasks and their respective values in a table. To reduce the
6161
6188
  list of included tasks, you can use the [[hidetask]], [[rolluptask]] or
6162
- [[taskroot]] attributes. The order of the task can be controlled with
6189
+ [[taskroot]] attributes. The order of the tasks can be controlled with
6163
6190
  [[sorttasks]]. If the first sorting criteria is tree sorting, the parent tasks
6164
6191
  will always be included to form the tree. Tree sorting is the default. You
6165
6192
  need to change it if you do not want certain parent tasks to be included in
@@ -6218,7 +6245,7 @@ EOT
6218
6245
  pattern(%w( _booking !taskBooking ))
6219
6246
  doc('booking.task', <<'EOT'
6220
6247
  The booking attribute can be used to report actually completed work. A task
6221
- with bookings must be [[scheduling|scheduled]] in ''''asap'''' mode. If the
6248
+ with bookings must be [[scheduling|scheduled]] in ''''ASAP'''' mode. If the
6222
6249
  scenario is not the [[trackingscenario|tracking scenario]] or derived from it,
6223
6250
  the scheduler will not allocate resources prior to the current date or the
6224
6251
  date specified with [[now]] when a task has at least one booking.
@@ -6321,7 +6348,7 @@ Specifies that the task cannot start before the specified tasks have been
6321
6348
  finished.
6322
6349
 
6323
6350
  By using the 'depends' attribute, the scheduling policy is automatically set
6324
- to asap. If both depends and precedes are used, the last policy counts.
6351
+ to ASAP. If both depends and precedes are used, the last policy counts.
6325
6352
  EOT
6326
6353
  )
6327
6354
  example('Depends1')
@@ -6418,10 +6445,10 @@ EOT
6418
6445
  The end attribute provides a guideline to the scheduler when the task should
6419
6446
  end. It will never end later, but it may end earlier when allocated
6420
6447
  resources are not available that long. When an end date is provided for a
6421
- container task, it will be passed down to ALAP task that don't have a well
6448
+ container task, it will be passed down to ALAP tasks that don't have a well
6422
6449
  defined end criteria.
6423
6450
 
6424
- Setting an end date will implicitely set the scheduling policy for this task
6451
+ Setting an end date will implicitly set the scheduling policy for this task
6425
6452
  to ALAP.
6426
6453
  EOT
6427
6454
  )
@@ -6434,7 +6461,7 @@ EOT
6434
6461
  level(:deprecated)
6435
6462
  doc('endcredit', <<'EOT'
6436
6463
  Specifies an amount that is credited to the accounts specified by the
6437
- [[chargeset]] attributes at the moment the tasks ends.
6464
+ [[chargeset]] attributes at the moment the task ends.
6438
6465
  EOT
6439
6466
  )
6440
6467
  also('charge')
@@ -6466,7 +6493,7 @@ and global working hours are defined accordingly.
6466
6493
  For the length calculation, the global working hours and the global leaves
6467
6494
  matter unless the task has [[shifts.task|shifts]] assigned. In the latter case
6468
6495
  the working hours and leaves of the shift apply for the specified period to
6469
- determine if a slot is working time or not. If a resource has additinal
6496
+ determine if a slot is working time or not. If a resource has additional
6470
6497
  working hours defined, it's quite possible that a task with a length of 5d
6471
6498
  will have an allocated effort larger than 40 hours. Resource working hours
6472
6499
  only have an impact on whether an allocation is made or not for a particular
@@ -6514,7 +6541,7 @@ EOT
6514
6541
  })
6515
6542
  doc('milestone', <<'EOT'
6516
6543
  Turns the task into a special task that has no duration. You may not specify a
6517
- duration, length, effort or subtasks for a milestone task.
6544
+ duration, length, effort or subtask for a milestone task.
6518
6545
 
6519
6546
  A task that only has a start or an end specification and no duration
6520
6547
  specification, inherited start or end dates, no dependencies or sub tasks,
@@ -6551,7 +6578,7 @@ EOT
6551
6578
  level(:deprecated)
6552
6579
  doc('startcredit', <<'EOT'
6553
6580
  Specifies an amount that is credited to the account specified by the
6554
- [[chargeset]] attributes at the moment the tasks starts.
6581
+ [[chargeset]] attributes at the moment the task starts.
6555
6582
  EOT
6556
6583
  )
6557
6584
  also('charge')
@@ -6566,14 +6593,14 @@ EOT
6566
6593
  end
6567
6594
  })
6568
6595
  doc('precedes', <<'EOT'
6569
- Specifies that the tasks with the specified IDs cannot start before the task
6596
+ Specifies that the tasks with the specified IDs cannot start before this task
6570
6597
  has been finished. If multiple IDs are specified, they must be separated by
6571
6598
  commas. IDs must be either global or relative. A relative ID starts with a
6572
6599
  number of '!'. Each '!' moves the scope to the parent task. Global IDs do not
6573
6600
  contain '!', but have IDs separated by dots.
6574
6601
 
6575
6602
  By using the 'precedes' attribute, the scheduling policy is automatically set
6576
- to alap. If both depends and precedes are used within a task, the last policy
6603
+ to ALAP. If both depends and precedes are used within a task, the last policy
6577
6604
  counts.
6578
6605
  EOT
6579
6606
  )
@@ -6589,13 +6616,13 @@ EOT
6589
6616
  Specifies the priority of the task. A task with higher priority is more
6590
6617
  likely to get the requested resources. The default priority value of all tasks
6591
6618
  is 500. Don't confuse the priority of a tasks with the importance or urgency
6592
- of a task. It only increases the chances that the tasks gets the requested
6619
+ of a task. It only increases the chances that the task gets the requested
6593
6620
  resources. It does not mean that the task happens earlier, though that is
6594
6621
  usually the effect you will see. It also does not have any effect on tasks
6595
6622
  that don't have any resources assigned (e.g. milestones).
6596
6623
 
6597
- For milestones it will raise or lower the chances that task leading up the
6598
- milestone will get their resources over task with equal priority that compete
6624
+ For milestones, it will raise or lower the chances that tasks leading up the
6625
+ milestone will get their resources over tasks with equal priority that compete
6599
6626
  for the same resources.
6600
6627
 
6601
6628
  This attribute is inherited by subtasks if specified prior to the definition
@@ -6613,12 +6640,12 @@ EOT
6613
6640
  begin
6614
6641
  @property['projectid', @scenarioIdx] = @val[1]
6615
6642
  rescue AttributeOverwrite
6616
- # This attribute always overwrites the implicitely provided ID.
6643
+ # This attribute always overwrites the implicitly provided ID.
6617
6644
  end
6618
6645
  })
6619
6646
  doc('projectid.task', <<'EOT'
6620
- In larger projects it may be desireable to work with different project IDs for
6621
- parts of the project. This attribute assignes a new project ID to this task an
6647
+ In larger projects it may be desirable to work with different project IDs for
6648
+ parts of the project. This attribute assignes a new project ID to this task and
6622
6649
  all subsequently defined sub tasks. The project ID needs to be declared first using [[projectid]] or [[projectids]].
6623
6650
  EOT
6624
6651
  )
@@ -6662,8 +6689,8 @@ EOT
6662
6689
  })
6663
6690
  doc('scheduling', <<'EOT'
6664
6691
  Specifies the scheduling policy for the task. A task can be scheduled from
6665
- start to end (As Soon As Possible, asap) or from end to start (As Late As
6666
- Possible, alap).
6692
+ start to end (As Soon As Possible, ASAP) or from end to start (As Late As
6693
+ Possible, ALAP).
6667
6694
 
6668
6695
  A task can be scheduled from start to end (ASAP mode) when it has a hard
6669
6696
  (start) or soft (depends) criteria for the start time. A task can be scheduled
@@ -6672,21 +6699,21 @@ criteria for the end time.
6672
6699
 
6673
6700
  Some task attributes set the scheduling policy implicitly. This attribute can
6674
6701
  be used to explicitly set the scheduling policy of the task to a certain
6675
- direction. To avoid it being overwritten again by an implicit attribute this
6702
+ direction. To avoid it being overwritten again by an implicit attribute, this
6676
6703
  attribute should always be the last attribute of the task.
6677
6704
 
6678
6705
  A random mixture of ASAP and ALAP tasks can have unexpected side effects on
6679
6706
  the scheduling of the project. It increases significantly the scheduling
6680
6707
  complexity and results in much longer scheduling times. Especially in projects
6681
- with many hundreds of tasks the scheduling time of a project with a mixture of
6682
- ASAP and ALAP times can be 2 to 10 times longer. When the projects contains
6683
- chains of ALAP and ASAP tasks the tasks further down the dependency chain will
6684
- be served much later than other non-chained task even when they have a much
6708
+ with many hundreds of tasks, the scheduling time of a project with a mixture of
6709
+ ASAP and ALAP times can be 2 to 10 times longer. When the project contains
6710
+ chains of ALAP and ASAP tasks, the tasks further down the dependency chain will
6711
+ be served much later than other non-chained tasks, even when they have a much
6685
6712
  higher priority. This can result in situations where high priority tasks do
6686
- not get their resources even though the parallel competing tasks have a much
6713
+ not get their resources, even though the parallel competing tasks have a much
6687
6714
  lower priority.
6688
6715
 
6689
- ALAP tasks may not have [[booking.task|bookings]] since the first booked slot
6716
+ ALAP tasks may not have [[booking.task|bookings]], since the first booked slot
6690
6717
  determines the start date of the task and prevents it from being scheduled
6691
6718
  from end to start.
6692
6719
 
@@ -6745,7 +6772,7 @@ EOT
6745
6772
  Limits the working time for this task during the specified interval
6746
6773
  to the working hours of the given shift. Multiple shifts can be defined, but
6747
6774
  shift intervals may not overlap. This is an additional working time
6748
- restriction ontop of the working hours of the allocated resources. It does not
6775
+ restriction on top of the working hours of the allocated resources. It does not
6749
6776
  replace the resource working hour restrictions. For a resource to be assigned
6750
6777
  to a time slot, both the respective task shift as well as the resource working
6751
6778
  hours must declare the time slot as duty slot.
@@ -6763,10 +6790,10 @@ EOT
6763
6790
  The start attribute provides a guideline to the scheduler when the task should
6764
6791
  start. It will never start earlier, but it may start later when allocated
6765
6792
  resources are not available immediately. When a start date is provided for a
6766
- container task, it will be passed down to ASAP task that don't have a well
6793
+ container task, it will be passed down to ASAP tasks that don't have a well
6767
6794
  defined start criteria.
6768
6795
 
6769
- Setting a start date will implicitely set the scheduling policy for this task
6796
+ Setting a start date will implicitly set the scheduling policy for this task
6770
6797
  to ASAP.
6771
6798
  EOT
6772
6799
  )
@@ -6794,7 +6821,7 @@ EOT
6794
6821
  @property = @property.parent
6795
6822
  })
6796
6823
  doc('textreport', <<'EOT'
6797
- This report consists of 5 RichText sections, a header, a center section with a
6824
+ This report consists of 5 [[Rich_Text_Attributes|Rich Text]] sections, a header, a center section with a
6798
6825
  left and right margin and a footer. The sections may contain the output of
6799
6826
  other defined reports.
6800
6827
  EOT
@@ -6819,7 +6846,7 @@ EOT
6819
6846
  arg(1, 'format', <<'EOT'
6820
6847
  Ordinary characters placed in the format string are copied without
6821
6848
  conversion. Conversion specifiers are introduced by a `%' character, and are
6822
- replaced in s as follows:
6849
+ replaced as follows:
6823
6850
 
6824
6851
  * ''''%a'''' The abbreviated weekday name according to the current locale.
6825
6852
 
@@ -6979,7 +7006,7 @@ The work is booked for the scenario specified by [[trackingscenario]].
6979
7006
 
6980
7007
  The intended use for time sheets is to have all resources report a time sheet
6981
7008
  every day, week or month. All time sheets can be added to the project plan.
6982
- The status information is always used to determin the current status of the
7009
+ The status information is always used to determine the current status of the
6983
7010
  project. The [[work]], [[remaining]] and [[end.timesheet|end]] attributes are
6984
7011
  ignored if there are also [[booking.task|bookings]] for the resource in the
6985
7012
  time sheet period. The non-ignored attributes of the time sheets will be
@@ -7014,7 +7041,7 @@ EOT
7014
7041
  })
7015
7042
  doc('newtask', <<'EOT'
7016
7043
  The keyword can be used to request a new task to the project. If the task ID
7017
- requires further parent task that don't exist yet, these tasks will be
7044
+ requires further parent tasks that don't exist yet, these tasks will be
7018
7045
  requested as well. If the task exists already, an error will be generated. The
7019
7046
  newly requested task can be used immediately to report progress and status
7020
7047
  against it. These tasks will not automatically be added to the project plan.
@@ -7148,14 +7175,14 @@ the [[columns]] attribute. This column set is then repeated for all properties
7148
7175
  that are not hidden by [[hideaccount]], [[hideresource]] and [[hidetask]]. By
7149
7176
  default, all properties are excluded. You must provide at least one of the
7150
7177
  ''''hide...'''' attributes to select the properties you want to have included
7151
- in the report. Please be aware that total number of columns is the product of
7178
+ in the report. Please be aware that the total number of columns is the product of
7152
7179
  attributes defined with [[columns]] times the number of included properties.
7153
- Select you values carefully or you will end up with very large reports.
7180
+ Select your values carefully or you will end up with very large reports.
7154
7181
 
7155
7182
  The column headers can be customized by using the [[title.column|title]]
7156
7183
  attribute. When you include multiple properties, these headers are not unique
7157
- unless you include mini-queries to modify them based on the property they
7158
- colum is represeting. You can use the queries
7184
+ unless you include mini-queries to modify them based on the property the
7185
+ column is representing. You can use the queries
7159
7186
  ''''<nowiki><-id-></nowiki>'''', ''''<nowiki><-name-></nowiki>'''',
7160
7187
  ''''<nowiki><-scenario-></nowiki>'''' and
7161
7188
  ''''<nowiki><-attribute-></nowiki>''''. ''''<nowiki><-id-></nowiki>'''' is
@@ -7170,12 +7197,12 @@ shows the tracked values over time will be generated. The CSV file may contain
7170
7197
  all kinds of values that are being tracked. Report formats that don't support
7171
7198
  a mix of different values will just show the values of the second column.
7172
7199
 
7173
- The values in the CSV files are fixed units and cannot be formated. Effort
7200
+ The values in the CSV files are fixed units and cannot be formatted. Effort
7174
7201
  values are always in resource-days. This allows other software to interpret
7175
7202
  the file without any need for additional context information.
7176
7203
 
7177
7204
  The HTML version generates SVG graphs that are embedded in the HTML page.
7178
- These graphs are only visble if the web browser supports HTML5. This is true
7205
+ These graphs are only visible if the web browser supports HTML5. This is true
7179
7206
  for the latest generation of browsers, but older browsers may not support this
7180
7207
  format.
7181
7208
  EOT
@@ -7187,7 +7214,7 @@ EOT
7187
7214
  pattern(%w( _tracereport !optionalID !reportName ), lambda {
7188
7215
  newReport(@val[1], @val[2], :tracereport, @sourceFileInfo[0]) do
7189
7216
  # The top-level always inherits the global timeFormat setting. This is
7190
- # not desireable in this case, so we ignore this.
7217
+ # not desirable in this case, so we ignore this.
7191
7218
  if (@property.level == 0 && !@property.provided('timeFormat')) ||
7192
7219
  (@property.level > 0 && !@property.modified?('timeFormat'))
7193
7220
  # CSV readers such of Libre-/OpenOffice can't deal with time zones. We
@@ -7370,7 +7397,7 @@ EOT
7370
7397
  })
7371
7398
  doc('end.timesheet', <<'EOT'
7372
7399
  The expected end date for the task. This can only be used for duration based
7373
- task. For effort based task [[remaining]] has to be used.
7400
+ tasks. For effort based tasks [[remaining]] has to be used.
7374
7401
  EOT
7375
7402
  )
7376
7403
  example('TimeSheet1', '5')
@@ -7386,7 +7413,7 @@ EOT
7386
7413
  })
7387
7414
  doc('priority.timesheet', <<'EOT'
7388
7415
  The priority is a value between 1 and 1000. It is used to determine the
7389
- sequence of task when converting [[work]] to [[booking.task|bookings]]. Tasks
7416
+ sequence of tasks when converting [[work]] to [[booking.task|bookings]]. Tasks
7390
7417
  that need to finish earlier in the period should have a high priority, tasks
7391
7418
  that end later in the period should have a low priority. For tasks that don't
7392
7419
  get finished in the reported period the priority should be set to 1.
@@ -7400,7 +7427,7 @@ EOT
7400
7427
  The remaining effort for the task. This value is ignored if there are
7401
7428
  [[booking.task|bookings]] for the resource that overlap with the time sheet
7402
7429
  period. If there are no bookings, the value is compared with the [[effort]]
7403
- specification of the task. If there a mismatch between the accumulated effort
7430
+ specification of the task. If there is a mismatch between the accumulated effort
7404
7431
  specified with bookings, [[work]] and [[remaining]] on one side and the
7405
7432
  specified [[effort]] on the other, a warning is generated.
7406
7433
 
@@ -7416,7 +7443,7 @@ EOT
7416
7443
  @timeSheetRecord.work = @val[1]
7417
7444
  })
7418
7445
  doc('work', <<'EOT'
7419
- The amount of time that the resource has spend with the task during the
7446
+ The amount of time that the resource has spent with the task during the
7420
7447
  reported period. This value is ignored when there are
7421
7448
  [[booking.task|bookings]] for the resource overlapping with the time sheet
7422
7449
  period. If there are no bookings, TaskJuggler will try to convert the work
@@ -7552,7 +7579,7 @@ specifications are 0 extended. An end date without a time is expanded to
7552
7579
  midnight that day. So the day of the end date is not included in the interval!
7553
7580
  The start and end dates must be separated by a hyphen character.
7554
7581
 
7555
- In the second form specifies the start date and an interval duration. The
7582
+ The second form specifies the start date and an interval duration. The
7556
7583
  duration must be prefixed by a plus character.
7557
7584
  EOT
7558
7585
  )
@@ -7572,7 +7599,7 @@ EOT
7572
7599
  doc('warn', <<'EOT'
7573
7600
  The warn attribute adds a [[logicalexpression|logical expression]] to the
7574
7601
  property. The condition described by the logical expression is checked after
7575
- the scheduling and an warning is generated if the condition evaluates to true.
7602
+ the scheduling and a warning is generated if the condition evaluates to true.
7576
7603
  This attribute is primarily intended for testing purposes.
7577
7604
  EOT
7578
7605
  )
@@ -7708,7 +7735,7 @@ EOT
7708
7735
  pattern(%w( !workinghours ))
7709
7736
  doc('workinghours.project', <<'EOT'
7710
7737
  Set the default working hours for all subsequent resource definitions. The
7711
- standard working hours are 9:00am - 12:00am, 1:00pm - 18:00pm, Monday to
7738
+ standard working hours are 9:00am - 12:00am, 1:00pm - 6:00pm, Monday to
7712
7739
  Friday. The working hours specification limits the availability of resources
7713
7740
  to certain time slots of week days.
7714
7741