taskjuggler 0.0.5 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (544) hide show
  1. data/CHANGELOG +2086 -0
  2. data/benchmarks/666tasks.tjp +3183 -0
  3. data/benchmarks/booking.tjp +14 -10
  4. data/doc/AppConfig.html +95 -73
  5. data/doc/Arguments.html +22 -2
  6. data/doc/CHANGELOG.html +2587 -0
  7. data/doc/COPYING.html +21 -1
  8. data/doc/Object.html +161 -122
  9. data/doc/README.html +21 -1
  10. data/doc/RuntimeConfig.html +26 -6
  11. data/doc/String.html +38 -18
  12. data/doc/StringIO.html +579 -0
  13. data/doc/TaskJuggler.html +251 -143
  14. data/doc/TaskJuggler/Account.html +26 -6
  15. data/doc/TaskJuggler/AccountAttribute.html +28 -8
  16. data/doc/TaskJuggler/AccountScenario.html +24 -4
  17. data/doc/TaskJuggler/Allocation.html +30 -10
  18. data/doc/TaskJuggler/AllocationAttribute.html +28 -8
  19. data/doc/TaskJuggler/AttributeBase.html +46 -26
  20. data/doc/TaskJuggler/AttributeDefinition.html +22 -2
  21. data/doc/TaskJuggler/BatchProcessor.html +40 -20
  22. data/doc/TaskJuggler/Booking.html +26 -6
  23. data/doc/TaskJuggler/BookingListAttribute.html +28 -8
  24. data/doc/TaskJuggler/BooleanAttribute.html +28 -8
  25. data/doc/TaskJuggler/CSVFile.html +308 -146
  26. data/doc/TaskJuggler/CellSettingPattern.html +22 -2
  27. data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
  28. data/doc/TaskJuggler/Charge.html +26 -6
  29. data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
  30. data/doc/TaskJuggler/ChargeSet.html +33 -13
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
  32. data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
  33. data/doc/TaskJuggler/ColumnTable.html +24 -4
  34. data/doc/TaskJuggler/Daemon.html +26 -6
  35. data/doc/TaskJuggler/DateAttribute.html +26 -6
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
  37. data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
  38. data/doc/TaskJuggler/DurationAttribute.html +28 -8
  39. data/doc/TaskJuggler/FixnumAttribute.html +24 -4
  40. data/doc/TaskJuggler/FlagListAttribute.html +28 -8
  41. data/doc/TaskJuggler/FloatAttribute.html +26 -6
  42. data/doc/TaskJuggler/FormatListAttribute.html +24 -4
  43. data/doc/TaskJuggler/GanttChart.html +147 -126
  44. data/doc/TaskJuggler/GanttContainer.html +34 -14
  45. data/doc/TaskJuggler/GanttHeader.html +28 -8
  46. data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
  47. data/doc/TaskJuggler/GanttLine.html +38 -18
  48. data/doc/TaskJuggler/GanttLoadStack.html +26 -6
  49. data/doc/TaskJuggler/GanttMilestone.html +34 -14
  50. data/doc/TaskJuggler/GanttRouter.html +50 -30
  51. data/doc/TaskJuggler/GanttTaskBar.html +34 -14
  52. data/doc/TaskJuggler/HTMLDocument.html +26 -6
  53. data/doc/TaskJuggler/HTMLGraphics.html +30 -10
  54. data/doc/TaskJuggler/Interval.html +40 -22
  55. data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
  56. data/doc/TaskJuggler/JobInfo.html +24 -4
  57. data/doc/TaskJuggler/Journal.html +226 -147
  58. data/doc/TaskJuggler/JournalEntry.html +22 -2
  59. data/doc/TaskJuggler/JournalEntryList.html +129 -112
  60. data/doc/TaskJuggler/KeywordArray.html +26 -6
  61. data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
  62. data/doc/TaskJuggler/Limits.html +152 -123
  63. data/doc/TaskJuggler/Limits/Limit.html +149 -70
  64. data/doc/TaskJuggler/LimitsAttribute.html +36 -51
  65. data/doc/TaskJuggler/ListAttributeBase.html +24 -4
  66. data/doc/TaskJuggler/Log.html +50 -32
  67. data/doc/TaskJuggler/LogFile.html +37 -17
  68. data/doc/TaskJuggler/LogicalAttribute.html +53 -33
  69. data/doc/TaskJuggler/LogicalExpression.html +26 -6
  70. data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
  71. data/doc/TaskJuggler/LogicalFlag.html +42 -22
  72. data/doc/TaskJuggler/LogicalFunction.html +204 -140
  73. data/doc/TaskJuggler/LogicalOperation.html +135 -111
  74. data/doc/TaskJuggler/Macro.html +22 -2
  75. data/doc/TaskJuggler/MacroParser.html +32 -12
  76. data/doc/TaskJuggler/MacroTable.html +32 -12
  77. data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
  78. data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
  79. data/doc/TaskJuggler/Message.html +24 -4
  80. data/doc/TaskJuggler/MessageHandler.html +24 -4
  81. data/doc/TaskJuggler/Navigator.html +104 -71
  82. data/doc/TaskJuggler/NavigatorElement.html +32 -12
  83. data/doc/TaskJuggler/NikuProject.html +22 -2
  84. data/doc/TaskJuggler/NikuReport.html +310 -228
  85. data/doc/TaskJuggler/NikuResource.html +22 -2
  86. data/doc/TaskJuggler/NodeListAttribute.html +615 -0
  87. data/doc/TaskJuggler/OnShiftCache.html +32 -12
  88. data/doc/TaskJuggler/ProcessIntercom.html +205 -78
  89. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
  90. data/doc/TaskJuggler/Project.html +708 -660
  91. data/doc/TaskJuggler/ProjectBroker.html +506 -304
  92. data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
  93. data/doc/TaskJuggler/ProjectFileParser.html +429 -373
  94. data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
  95. data/doc/TaskJuggler/ProjectRecord.html +80 -60
  96. data/doc/TaskJuggler/ProjectServer.html +312 -237
  97. data/doc/TaskJuggler/ProjectServerIface.html +101 -43
  98. data/doc/TaskJuggler/PropertyAttribute.html +32 -12
  99. data/doc/TaskJuggler/PropertyList.html +166 -145
  100. data/doc/TaskJuggler/PropertySet.html +254 -224
  101. data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
  102. data/doc/TaskJuggler/Query.html +169 -148
  103. data/doc/TaskJuggler/RTFHandlers.html +622 -0
  104. data/doc/TaskJuggler/RTFNavigator.html +28 -8
  105. data/doc/TaskJuggler/RTFQuery.html +40 -20
  106. data/doc/TaskJuggler/RTFReport.html +62 -25
  107. data/doc/TaskJuggler/RTFReportLink.html +765 -0
  108. data/doc/TaskJuggler/RealFormat.html +26 -6
  109. data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
  110. data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
  111. data/doc/TaskJuggler/Report.html +402 -251
  112. data/doc/TaskJuggler/ReportBase.html +162 -137
  113. data/doc/TaskJuggler/ReportContext.html +112 -29
  114. data/doc/TaskJuggler/ReportServer.html +89 -64
  115. data/doc/TaskJuggler/ReportServerIface.html +75 -55
  116. data/doc/TaskJuggler/ReportServerRecord.html +54 -31
  117. data/doc/TaskJuggler/ReportServlet.html +980 -0
  118. data/doc/TaskJuggler/ReportTable.html +41 -21
  119. data/doc/TaskJuggler/ReportTableCell.html +214 -170
  120. data/doc/TaskJuggler/ReportTableColumn.html +30 -10
  121. data/doc/TaskJuggler/ReportTableLegend.html +36 -16
  122. data/doc/TaskJuggler/ReportTableLine.html +32 -12
  123. data/doc/TaskJuggler/Resource.html +99 -87
  124. data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
  125. data/doc/TaskJuggler/ResourceListRE.html +47 -26
  126. data/doc/TaskJuggler/ResourceScenario.html +403 -437
  127. data/doc/TaskJuggler/RichText.html +26 -6
  128. data/doc/TaskJuggler/RichTextAttribute.html +50 -30
  129. data/doc/TaskJuggler/RichTextDocument.html +37 -17
  130. data/doc/TaskJuggler/RichTextElement.html +475 -413
  131. data/doc/TaskJuggler/RichTextException.html +22 -2
  132. data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
  133. data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
  134. data/doc/TaskJuggler/RichTextImage.html +22 -2
  135. data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
  136. data/doc/TaskJuggler/RichTextParser.html +56 -34
  137. data/doc/TaskJuggler/RichTextScanner.html +82 -61
  138. data/doc/TaskJuggler/RichTextSnip.html +34 -14
  139. data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
  140. data/doc/TaskJuggler/Scenario.html +22 -2
  141. data/doc/TaskJuggler/ScenarioData.html +30 -46
  142. data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
  143. data/doc/TaskJuggler/Scoreboard.html +42 -22
  144. data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
  145. data/doc/TaskJuggler/SheetReceiver.html +333 -295
  146. data/doc/TaskJuggler/SheetSender.html +253 -230
  147. data/doc/TaskJuggler/Shift.html +26 -6
  148. data/doc/TaskJuggler/ShiftAssignment.html +89 -73
  149. data/doc/TaskJuggler/ShiftAssignments.html +226 -234
  150. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
  151. data/doc/TaskJuggler/ShiftScenario.html +28 -8
  152. data/doc/TaskJuggler/SortListAttribute.html +34 -14
  153. data/doc/TaskJuggler/SourceFileInfo.html +24 -4
  154. data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
  155. data/doc/TaskJuggler/StatusSheetReport.html +168 -153
  156. data/doc/TaskJuggler/StatusSheetSender.html +24 -3
  157. data/doc/TaskJuggler/StringAttribute.html +38 -18
  158. data/doc/TaskJuggler/SymbolAttribute.html +32 -12
  159. data/doc/TaskJuggler/SyntaxReference.html +40 -20
  160. data/doc/TaskJuggler/TOCEntry.html +26 -6
  161. data/doc/TaskJuggler/TSResourceRecord.html +22 -2
  162. data/doc/TaskJuggler/TSTaskRecord.html +22 -2
  163. data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
  164. data/doc/TaskJuggler/TableOfContents.html +26 -6
  165. data/doc/TaskJuggler/TableReport.html +937 -904
  166. data/doc/TaskJuggler/Task.html +55 -36
  167. data/doc/TaskJuggler/TaskDependency.html +24 -4
  168. data/doc/TaskJuggler/TaskListAttribute.html +50 -30
  169. data/doc/TaskJuggler/TaskListRE.html +27 -7
  170. data/doc/TaskJuggler/TaskScenario.html +1273 -1153
  171. data/doc/TaskJuggler/TextFormatter.html +28 -8
  172. data/doc/TaskJuggler/TextParser.html +585 -338
  173. data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
  174. data/doc/TaskJuggler/TextParser/Rule.html +95 -73
  175. data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
  176. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
  177. data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
  178. data/doc/TaskJuggler/TextReport.html +28 -8
  179. data/doc/TaskJuggler/TextScanner.html +400 -1404
  180. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
  181. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
  182. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
  183. data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
  184. data/doc/TaskJuggler/TimeSheet.html +48 -28
  185. data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
  186. data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
  187. data/doc/TaskJuggler/TimeSheetReport.html +154 -133
  188. data/doc/TaskJuggler/TimeSheetSender.html +24 -3
  189. data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
  190. data/doc/TaskJuggler/TimeSheets.html +26 -6
  191. data/doc/TaskJuggler/Tj3AppBase.html +85 -58
  192. data/doc/TaskJuggler/Tj3Client.html +292 -238
  193. data/doc/TaskJuggler/Tj3Daemon.html +159 -74
  194. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
  195. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
  196. data/doc/TaskJuggler/Tj3SsSender.html +53 -26
  197. data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
  198. data/doc/TaskJuggler/Tj3TsSender.html +26 -6
  199. data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
  200. data/doc/TaskJuggler/TjException.html +22 -2
  201. data/doc/TaskJuggler/TjTime.html +216 -160
  202. data/doc/TaskJuggler/TjpExample.html +34 -14
  203. data/doc/TaskJuggler/TjpExportRE.html +403 -407
  204. data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
  205. data/doc/TaskJuggler/URLParameter.html +649 -0
  206. data/doc/TaskJuggler/UserManual.html +42 -22
  207. data/doc/TaskJuggler/WebServer.html +702 -0
  208. data/doc/TaskJuggler/WorkingHours.html +38 -18
  209. data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
  210. data/doc/TaskJuggler/XMLBlob.html +24 -4
  211. data/doc/TaskJuggler/XMLComment.html +24 -4
  212. data/doc/TaskJuggler/XMLDocument.html +30 -10
  213. data/doc/TaskJuggler/XMLElement.html +34 -14
  214. data/doc/TaskJuggler/XMLNamedText.html +22 -2
  215. data/doc/TaskJuggler/XMLText.html +24 -4
  216. data/doc/index.html +1841 -1666
  217. data/doc/lib/AccountScenario_rb.html +1 -1
  218. data/doc/lib/Account_rb.html +1 -1
  219. data/doc/lib/Allocation_rb.html +1 -1
  220. data/doc/lib/AppConfig_rb.html +2 -2
  221. data/doc/lib/AttributeBase_rb.html +1 -1
  222. data/doc/lib/AttributeDefinition_rb.html +1 -1
  223. data/doc/lib/Attributes_rb.html +2 -2
  224. data/doc/lib/BatchProcessor_rb.html +1 -1
  225. data/doc/lib/Booking_rb.html +1 -1
  226. data/doc/lib/ChargeSet_rb.html +1 -1
  227. data/doc/lib/Charge_rb.html +1 -1
  228. data/doc/lib/HTMLDocument_rb.html +1 -1
  229. data/doc/lib/Interval_rb.html +1 -1
  230. data/doc/lib/Journal_rb.html +2 -2
  231. data/doc/lib/KeywordArray_rb.html +1 -1
  232. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  233. data/doc/lib/Limits_rb.html +2 -2
  234. data/doc/lib/LogFile_rb.html +2 -2
  235. data/doc/lib/Log_rb.html +1 -1
  236. data/doc/lib/LogicalExpression_rb.html +1 -1
  237. data/doc/lib/LogicalFunction_rb.html +2 -2
  238. data/doc/lib/LogicalOperation_rb.html +2 -2
  239. data/doc/lib/MacroParser_rb.html +1 -1
  240. data/doc/lib/MacroTable_rb.html +1 -1
  241. data/doc/lib/MessageHandler_rb.html +1 -1
  242. data/doc/lib/Message_rb.html +1 -1
  243. data/doc/lib/ProjectFileParser_rb.html +4 -8
  244. data/doc/lib/ProjectFileScanner_rb.html +67 -0
  245. data/doc/lib/Project_rb.html +2 -2
  246. data/doc/lib/PropertyList_rb.html +2 -2
  247. data/doc/lib/PropertySet_rb.html +2 -2
  248. data/doc/lib/PropertyTreeNode_rb.html +2 -2
  249. data/doc/lib/Query_rb.html +2 -2
  250. data/doc/lib/RTFHandlers_rb.html +73 -0
  251. data/doc/lib/RTFNavigator_rb.html +1 -1
  252. data/doc/lib/RTFQuery_rb.html +1 -1
  253. data/doc/lib/RTFReportLink_rb.html +71 -0
  254. data/doc/lib/RTFReport_rb.html +2 -2
  255. data/doc/lib/RealFormat_rb.html +1 -1
  256. data/doc/lib/ResourceScenario_rb.html +2 -2
  257. data/doc/lib/Resource_rb.html +2 -2
  258. data/doc/lib/RichTextDocument_rb.html +1 -1
  259. data/doc/lib/RichTextElement_rb.html +2 -2
  260. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  261. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  262. data/doc/lib/RichTextParser_rb.html +2 -2
  263. data/doc/lib/RichTextScanner_rb.html +2 -2
  264. data/doc/lib/RichTextSnip_rb.html +1 -1
  265. data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
  266. data/doc/lib/RichText_rb.html +1 -1
  267. data/doc/lib/RuntimeConfig_rb.html +1 -1
  268. data/doc/lib/ScenarioData_rb.html +2 -2
  269. data/doc/lib/Scenario_rb.html +1 -1
  270. data/doc/lib/Scoreboard_rb.html +1 -1
  271. data/doc/lib/SheetHandlerBase_rb.html +1 -1
  272. data/doc/lib/SheetReceiver_rb.html +2 -2
  273. data/doc/lib/SheetSender_rb.html +4 -2
  274. data/doc/lib/ShiftAssignments_rb.html +4 -2
  275. data/doc/lib/ShiftScenario_rb.html +1 -1
  276. data/doc/lib/Shift_rb.html +1 -1
  277. data/doc/lib/SourceFileInfo_rb.html +1 -1
  278. data/doc/lib/StatusSheetReceiver_rb.html +2 -2
  279. data/doc/lib/StatusSheetSender_rb.html +2 -2
  280. data/doc/lib/SyntaxReference_rb.html +1 -1
  281. data/doc/lib/TOCEntry_rb.html +1 -1
  282. data/doc/lib/TableColumnDefinition_rb.html +2 -2
  283. data/doc/lib/TableOfContents_rb.html +1 -1
  284. data/doc/lib/TaskDependency_rb.html +1 -1
  285. data/doc/lib/TaskJuggler_rb.html +2 -2
  286. data/doc/lib/TaskScenario_rb.html +2 -2
  287. data/doc/lib/Task_rb.html +2 -2
  288. data/doc/lib/TextFormatter_rb.html +1 -1
  289. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  290. data/doc/lib/TextParser/Rule_rb.html +2 -2
  291. data/doc/lib/TextParser/StackElement_rb.html +2 -2
  292. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  293. data/doc/lib/TextParser_rb.html +2 -2
  294. data/doc/lib/TextScanner_rb.html +6 -2
  295. data/doc/lib/TimeSheetReceiver_rb.html +2 -2
  296. data/doc/lib/TimeSheetSender_rb.html +2 -2
  297. data/doc/lib/TimeSheetSummary_rb.html +2 -2
  298. data/doc/lib/TimeSheets_rb.html +2 -2
  299. data/doc/lib/Tj3AppBase_rb.html +2 -2
  300. data/doc/lib/Tj3Config_rb.html +2 -2
  301. data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
  302. data/doc/lib/TjException_rb.html +1 -1
  303. data/doc/lib/TjTime_rb.html +2 -2
  304. data/doc/lib/TjpExample_rb.html +1 -1
  305. data/doc/lib/TjpSyntaxRules_rb.html +2 -2
  306. data/doc/lib/URLParameter_rb.html +67 -0
  307. data/doc/lib/UTF8String_rb.html +1 -1
  308. data/doc/lib/UserManual_rb.html +1 -1
  309. data/doc/lib/WorkingHours_rb.html +1 -1
  310. data/doc/lib/XMLDocument_rb.html +2 -2
  311. data/doc/lib/XMLElement_rb.html +1 -1
  312. data/doc/lib/daemon/Daemon_rb.html +1 -1
  313. data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
  314. data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
  315. data/doc/lib/daemon/ProjectServer_rb.html +2 -2
  316. data/doc/lib/daemon/ReportServer_rb.html +2 -2
  317. data/doc/lib/daemon/WebServer_rb.html +75 -0
  318. data/doc/lib/deep_copy_rb.html +2 -2
  319. data/doc/lib/reports/CSVFile_rb.html +2 -2
  320. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  321. data/doc/lib/reports/GanttChart_rb.html +2 -2
  322. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  323. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  324. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  325. data/doc/lib/reports/GanttLine_rb.html +1 -1
  326. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  327. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  328. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  329. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  330. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  331. data/doc/lib/reports/Navigator_rb.html +2 -2
  332. data/doc/lib/reports/NikuReport_rb.html +2 -2
  333. data/doc/lib/reports/ReportBase_rb.html +2 -2
  334. data/doc/lib/reports/ReportContext_rb.html +2 -2
  335. data/doc/lib/reports/ReportTableCell_rb.html +2 -2
  336. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  337. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  338. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  339. data/doc/lib/reports/ReportTable_rb.html +2 -2
  340. data/doc/lib/reports/Report_rb.html +2 -2
  341. data/doc/lib/reports/ResourceListRE_rb.html +2 -2
  342. data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
  343. data/doc/lib/reports/TableReport_rb.html +2 -2
  344. data/doc/lib/reports/TaskListRE_rb.html +2 -2
  345. data/doc/lib/reports/TextReport_rb.html +1 -1
  346. data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
  347. data/doc/lib/reports/TjpExportRE_rb.html +2 -2
  348. data/doc/lib/ruby-signal-bug_rb.html +1 -1
  349. data/doc/lib/taskjuggler3_rb.html +2 -2
  350. data/doc/lib/tj3client_rb.html +2 -2
  351. data/doc/lib/tj3d_rb.html +2 -2
  352. data/doc/lib/tj3man_rb.html +1 -1
  353. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  354. data/doc/lib/tj3ss_sender_rb.html +2 -2
  355. data/doc/lib/tj3ts_receiver_rb.html +2 -2
  356. data/doc/lib/tj3ts_sender_rb.html +1 -1
  357. data/doc/lib/tj3ts_summary_rb.html +1 -1
  358. data/doc/rdoc.css +9 -4
  359. data/examples/tutorial.tjp +17 -15
  360. data/gem_spec.rb +3 -0
  361. data/lib/AppConfig.rb +3 -1
  362. data/lib/Attributes.rb +10 -8
  363. data/lib/Journal.rb +55 -20
  364. data/lib/Limits.rb +72 -46
  365. data/lib/LogFile.rb +3 -3
  366. data/lib/LogicalFunction.rb +19 -6
  367. data/lib/LogicalOperation.rb +5 -1
  368. data/lib/Project.rb +37 -9
  369. data/lib/ProjectFileParser.rb +25 -22
  370. data/lib/ProjectFileScanner.rb +365 -0
  371. data/lib/PropertyList.rb +2 -1
  372. data/lib/PropertySet.rb +14 -4
  373. data/lib/PropertyTreeNode.rb +42 -29
  374. data/lib/Query.rb +3 -1
  375. data/lib/RTFHandlers.rb +35 -0
  376. data/lib/RTFReport.rb +23 -6
  377. data/lib/RTFReportLink.rb +72 -0
  378. data/lib/Resource.rb +8 -16
  379. data/lib/ResourceScenario.rb +1 -22
  380. data/lib/RichTextElement.rb +42 -0
  381. data/lib/RichTextParser.rb +6 -4
  382. data/lib/RichTextScanner.rb +5 -5
  383. data/lib/RichTextSyntaxRules.rb +48 -10
  384. data/lib/ScenarioData.rb +5 -3
  385. data/lib/SheetReceiver.rb +24 -6
  386. data/lib/SheetSender.rb +17 -13
  387. data/lib/ShiftAssignments.rb +56 -52
  388. data/lib/StatusSheetReceiver.rb +1 -0
  389. data/lib/StatusSheetSender.rb +1 -0
  390. data/lib/TableColumnDefinition.rb +4 -2
  391. data/lib/Task.rb +8 -9
  392. data/lib/TaskJuggler.rb +21 -11
  393. data/lib/TaskScenario.rb +61 -26
  394. data/lib/TextParser.rb +268 -106
  395. data/lib/TextParser/Rule.rb +4 -2
  396. data/lib/TextParser/StackElement.rb +6 -4
  397. data/lib/TextScanner.rb +283 -700
  398. data/lib/TimeSheetReceiver.rb +1 -0
  399. data/lib/TimeSheetSender.rb +1 -0
  400. data/lib/TimeSheetSummary.rb +51 -26
  401. data/lib/TimeSheets.rb +1 -1
  402. data/lib/Tj3AppBase.rb +8 -1
  403. data/lib/Tj3Config.rb +1 -1
  404. data/lib/TjTime.rb +5 -0
  405. data/lib/TjpSyntaxRules.rb +360 -144
  406. data/lib/URLParameter.rb +30 -0
  407. data/lib/XMLDocument.rb +2 -2
  408. data/lib/daemon/ProcessIntercom.rb +50 -9
  409. data/lib/daemon/ProjectBroker.rb +63 -10
  410. data/lib/daemon/ProjectServer.rb +47 -16
  411. data/lib/daemon/ReportServer.rb +9 -4
  412. data/lib/daemon/WebServer.rb +204 -0
  413. data/lib/deep_copy.rb +4 -1
  414. data/lib/reports/CSVFile.rb +150 -66
  415. data/lib/reports/GanttChart.rb +2 -1
  416. data/lib/reports/Navigator.rb +18 -5
  417. data/lib/reports/NikuReport.rb +32 -2
  418. data/lib/reports/Report.rb +65 -37
  419. data/lib/reports/ReportBase.rb +14 -9
  420. data/lib/reports/ReportContext.rb +19 -4
  421. data/lib/reports/ReportTable.rb +2 -2
  422. data/lib/reports/ReportTableCell.rb +54 -30
  423. data/lib/reports/ResourceListRE.rb +4 -3
  424. data/lib/reports/StatusSheetReport.rb +8 -13
  425. data/lib/reports/TableReport.rb +47 -32
  426. data/lib/reports/TaskListRE.rb +3 -3
  427. data/lib/reports/TimeSheetReport.rb +14 -5
  428. data/lib/reports/TjpExportRE.rb +14 -19
  429. data/lib/taskjuggler3.rb +15 -0
  430. data/lib/tj3client.rb +9 -7
  431. data/lib/tj3d.rb +38 -10
  432. data/lib/tj3ss_sender.rb +7 -0
  433. data/lib/tj3ts_receiver.rb +1 -0
  434. data/manual/Day_To_Day_Juggling +1 -1
  435. data/manual/Rich_Text_Attributes +8 -0
  436. data/manual/TaskJuggler_2x_Migration +7 -0
  437. data/manual/The_TaskJuggler_Syntax +20 -6
  438. data/prj_cfg.rb +3 -2
  439. data/tasks/changelog.rake +36 -0
  440. data/tasks/csts.rake +2 -3
  441. data/tasks/gem.rake +10 -0
  442. data/tasks/missing.rake +0 -17
  443. data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
  444. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
  445. data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
  446. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
  447. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
  448. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
  449. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
  450. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  451. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  452. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  453. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  454. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  455. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  456. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  457. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  458. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  459. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  460. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  461. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
  462. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
  463. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
  464. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
  465. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
  466. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
  467. data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
  468. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
  469. data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
  470. data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
  471. data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
  472. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
  473. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
  474. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
  475. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
  476. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
  477. data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
  478. data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
  479. data/test/TestSuite/StatusSheets/run +3 -2
  480. data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
  481. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
  482. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
  483. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
  484. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
  485. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
  486. data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
  487. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  488. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  489. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  490. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  491. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  492. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  493. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  494. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  495. data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
  496. data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
  497. data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
  498. data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
  499. data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
  500. data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
  501. data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
  502. data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
  503. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  504. data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
  505. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  506. data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
  507. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
  508. data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
  509. data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
  510. data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
  511. data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
  512. data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
  513. data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
  514. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  515. data/test/TestSuite/TimeSheets/run +5 -5
  516. data/test/test_CSVFile.rb +75 -0
  517. data/test/test_Limits.rb +63 -5
  518. data/test/test_ProjectFileScanner.rb +163 -0
  519. data/test/test_ReportGenerator.rb +81 -0
  520. data/test/test_RichText.rb +21 -3
  521. data/test/test_Scheduler.rb +1 -1
  522. data/test/test_ShiftAssignments.rb +4 -4
  523. data/test/test_Syntax.rb +1 -1
  524. data/test/test_URLParameter.rb +30 -0
  525. metadata +126 -32
  526. data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
  527. data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
  528. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
  529. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
  530. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
  531. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
  532. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
  533. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
  534. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
  535. data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
  536. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
  537. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
  538. data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
  539. data/test/TestSuite/TimeSheets/receiver.log +0 -102
  540. data/test/TestSuite/TimeSheets/sender.log +0 -794
  541. data/test/TestSuite/TimeSheets/summary.log +0 -884
  542. data/test/TestSuite/TimeSheets/timesheets.log +0 -45
  543. data/test/TestSuite/TimeSheets/tj3d.log +0 -292
  544. data/test/test_TextScanner.rb +0 -95
@@ -7,7 +7,7 @@
7
7
  */
8
8
  # *** EXAMPLE: header1 +
9
9
  # *** EXAMPLE: header2 +
10
- project "Accounting Software" 2002-01-16 +4m {
10
+ project acso "Accounting Software" 2002-01-16 +4m {
11
11
  # *** EXAMPLE: header1 -
12
12
  # Hide the clock time. Only show the date.
13
13
  # *** EXAMPLE: formats +
@@ -42,7 +42,6 @@ project "Accounting Software" 2002-01-16 +4m {
42
42
  # *** EXAMPLE: scenario -
43
43
  # *** EXAMPLE: extend +
44
44
  extend resource {
45
- text Email "Email"
46
45
  text Phone "Phone"
47
46
  }
48
47
  # *** EXAMPLE: extend -
@@ -100,22 +99,22 @@ balance cost rev
100
99
 
101
100
  # *** EXAMPLE: resources +
102
101
  resource boss "Paul Henry Bullock" {
103
- Email "phb@crappysoftware.com"
102
+ email "phb@crappysoftware.com"
104
103
  Phone "x100"
105
104
  rate 480
106
105
  }
107
106
  resource dev "Developers" {
108
107
  resource dev1 "Paul Smith" {
109
- Email "paul@crappysoftware.com"
108
+ email "paul@crappysoftware.com"
110
109
  Phone "x362"
111
110
  rate 350.0
112
111
  }
113
112
  resource dev2 "Sébastien Bono" {
114
- Email "SBono@crappysoftware.com"
113
+ email "SBono@crappysoftware.com"
115
114
  Phone "x234"
116
115
  }
117
116
  resource dev3 "Klaus Müller" {
118
- Email "Klaus.Mueller@crappysoftware.com"
117
+ email "Klaus.Mueller@crappysoftware.com"
119
118
  Phone "x490"
120
119
  vacation 2002-02-01 - 2002-02-05
121
120
  }
@@ -124,13 +123,13 @@ resource dev "Developers" {
124
123
  }
125
124
  resource misc "The Others" {
126
125
  resource test "Peter Murphy" {
127
- Email "murphy@crappysoftware.com"
126
+ email "murphy@crappysoftware.com"
128
127
  Phone "x666"
129
128
  limits { dailymax 6.4h }
130
129
  rate 310.0
131
130
  }
132
131
  resource doc "Dim Sung" {
133
- Email "sung@crappysoftware.com"
132
+ email "sung@crappysoftware.com"
134
133
  Phone "x482"
135
134
  rate 300.0
136
135
  vacation 2002-03-11 - 2002-03-16
@@ -463,7 +462,7 @@ textreport frame "" {
463
462
  ->8-
464
463
  }
465
464
 
466
- textreport "Development" {
465
+ textreport development "Development" {
467
466
  formats html
468
467
  center '<[report id="development"]>'
469
468
  }
@@ -501,7 +500,7 @@ taskreport overview "" {
501
500
  The project is structured into 3 phases.
502
501
 
503
502
  # Specification
504
- # [[Development]]
503
+ # <-reportlink id='frame.development'->
505
504
  # Testing
506
505
 
507
506
  === Original Project Plan ===
@@ -552,7 +551,8 @@ macro AlertColor [
552
551
  ]
553
552
 
554
553
  taskreport status "" {
555
- columns wbs, name, start, end, effort, alert, status
554
+ columns wbs, name, start, end, effort, alert { tooltip plan.journal
555
+ != '' "<-query attribute='journal'->" }, status
556
556
  scenarios delayed
557
557
 
558
558
  taskreport dashboard "" {
@@ -561,7 +561,7 @@ taskreport status "" {
561
561
  resources { width 200 ${AlertColor}
562
562
  start ${projectstart} end ${projectend} },
563
563
  alerttrend { title "Trend" ${AlertColor} },
564
- alertmessage { width 260 ${AlertColor} }
564
+ journalmessages { width 260 ${AlertColor} }
565
565
  hidetask ~hasalert(0)
566
566
  sorttasks alert.down, delayed.end.up
567
567
  period %{${now} - 1w} +1w
@@ -605,7 +605,7 @@ resourcereport contactList "" {
605
605
  scenarios delayed
606
606
  headline "Contact list and duty plan"
607
607
  columns name,
608
- Email { celltext 1 "[mailto:<-Email-> <-Email->]" },
608
+ email { celltext 1 "[mailto:<-email-> <-email->]" },
609
609
  Phone,
610
610
  chart { scale day }
611
611
  hideresource ~isleaf()
@@ -1 +1 @@
1
- # MARK: error 0 unexpctd_token
1
+ # MARK: error 1 unexpctd_token
@@ -5,3 +5,4 @@ project "Test" 2009-10-06 +2m
5
5
  # MARK: error 1 include_recursion
6
6
  include "include_recursion.tji"
7
7
 
8
+ task "Foo"
@@ -2,7 +2,8 @@ project "Macro Stack Overflow" 2009-11-01 +2m
2
2
 
3
3
  macro foo [ task "bar" { ${foo} } ]
4
4
 
5
- # MARK: error 27 macro_stack_overflow
5
+ # MARK: error 28 macro_stack_overflow
6
+ # MARK: info 3 macro_stack
6
7
  # MARK: info 3 macro_stack
7
8
  # MARK: info 3 macro_stack
8
9
  # MARK: info 3 macro_stack
@@ -1,5 +1,5 @@
1
1
  project test "Test" "1.0" 2009-08-25 +2m
2
2
 
3
- # MARK: error 5 eof_in_istring1
3
+ # MARK: error 5 no_token_match
4
4
  task t -8<-
5
-
5
+
@@ -1,5 +1,5 @@
1
1
  project test "Test" "1.0" 2009-08-25 +2m
2
2
 
3
- # MARK: error 5 eof_in_istring2
3
+ # MARK: error 5 no_token_match
4
4
  task t -8<-
5
- foo
5
+ foo
@@ -1,6 +1,6 @@
1
1
  project test "Test" "1.0" 2009-08-25 +2m
2
2
 
3
- # MARK: error 6 eof_in_istring3
3
+ # MARK: error 6 no_token_match
4
4
  task t -8<-
5
5
  foo
6
6
  -
@@ -1,6 +1,6 @@
1
1
  project test "Test" "1.0" 2009-08-25 +2m
2
2
 
3
- # MARK: error 6 eof_in_istring4
3
+ # MARK: error 6 no_token_match
4
4
  task t -8<-
5
5
  foo
6
6
  ->
@@ -1,6 +1,6 @@
1
1
  project test "Test" "1.0" 2009-08-25 +2m
2
2
 
3
- # MARK: error 6 eof_in_istring5
3
+ # MARK: error 6 no_token_match
4
4
  task t -8<-
5
5
  foo
6
6
  ->8
@@ -0,0 +1,13 @@
1
+ project test "Test" "1.0" 2010-04-28 +1w
2
+
3
+ resource r "R"
4
+
5
+ task "Foo" {
6
+ task bar "Bar" {
7
+ start ${projectstart}
8
+ effort 1d
9
+ allocate r
10
+ # MARK: error 11 not_scheduled
11
+ scheduled
12
+ }
13
+ }
@@ -2,7 +2,7 @@ project "Test" 2009-11-28 +2m
2
2
 
3
3
  task t "T" {
4
4
  journalentry 2009-11-28 "Just testing" {
5
- # MARK: error 8 unsupported_token
5
+ # MARK: error 7 unsupported_token
6
6
  summary -8<-
7
7
  This is all good.
8
8
  * This is bad.
@@ -37,7 +37,7 @@ check "^timesheet " sender.log 6
37
37
  tj3ts_receiver --dryrun < dev2_mail1 >> receiver.log || error "rec1"
38
38
  tj3ts_receiver --dryrun < dev2_mail2 >> receiver.log || error "rec2"
39
39
  check "From: foo@bar.com" receiver.log 2
40
- check "Report from " receiver.log 4
40
+ check "Report from " receiver.log 2
41
41
  check "Green" receiver.log 3
42
42
 
43
43
  # Update the project with the server to include the submitted time
@@ -49,11 +49,11 @@ tj3ts_summary --dryrun -e 2002-03-01 >> summary.log || error "summary"
49
49
  check "To: archive@bar.com" summary.log 2
50
50
  check "To: crew@bar.com" summary.log 1
51
51
  check "From: foo@bar.com" summary.log 7
52
- check "From: SBono@crappysoftware.com" summary.log 1
53
- check "Report from .* is missing" summary.log 10
52
+ check "From: =?UTF-8?B?U8OpYmFzdGllbg==?= Bono <SBono@crappysoftware.com>" summary.log 1
53
+ check "The following 5 person(s) have not yet submitted their time sheets" summary.log 2
54
54
  check "Weekly Report from" summary.log 2
55
55
  check "Green" summary.log 6
56
- check "Your weekly report 2002-03-01 is overdue" summary.log 5
56
+ check "Your time sheet for the period ending 2002-03-01 is overdue" summary.log 5
57
57
 
58
58
  tj3client --silent terminate
59
59
  sleep 2
@@ -69,7 +69,7 @@ check "WARN" tj3d.log 0
69
69
  check ERROR timesheets.log 0
70
70
  check WARN timesheets.log 1
71
71
  check INFO timesheets.log 44
72
- check "Your weekly report template" timesheets.log 6
72
+ check "Your weekly time sheet template" timesheets.log 6
73
73
 
74
74
  cleanup
75
75
  exit 0
@@ -0,0 +1,75 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = test_CSVFile.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
+ #
8
+ # This program is free software; you can redistribute it and/or modify
9
+ # it under the terms of version 2 of the GNU General Public License as
10
+ # published by the Free Software Foundation.
11
+ #
12
+
13
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib') if __FILE__ == $0
14
+
15
+ require 'test/unit'
16
+ require 'reports/CSVFile'
17
+
18
+ class TestCSVFile < Test::Unit::TestCase
19
+
20
+ def test_to_s
21
+ csv = TaskJuggler::CSVFile.new([ [ "foo", "bar" ], [ "rab", "oof" ] ])
22
+ s = csv.to_s
23
+ ref = <<EOT
24
+ "foo";"bar"
25
+ "rab";"oof"
26
+ EOT
27
+ assert_equal(ref, csv.to_s)
28
+ end
29
+
30
+ def test_simple
31
+ v = [ [ "foo" ], [ "bar" ] ]
32
+ check(v)
33
+ end
34
+
35
+ def test_justStrings
36
+ v = [ [ "foo1", "foo2" ], [ "bar2", "bar2" ] ]
37
+ check(v)
38
+ end
39
+
40
+ def test_stringsAndNumbers
41
+ v = [ [ "foo", 3.14 ], [ 42, "bar" ] ]
42
+ check(v)
43
+ end
44
+
45
+ def test_stringsAndNumbersAndEmtpy
46
+ v = [ [ "foo", nil, 3.14 ], [ 42, "bar", nil ] ]
47
+ check(v)
48
+ end
49
+
50
+ def test_allEmtpy
51
+ v = [ [ "", nil, "" ], [ nil, "", nil ] ]
52
+ check(v)
53
+ end
54
+
55
+ def test_multiLineStrings
56
+ s = <<'EOT'
57
+ This
58
+ is a
59
+ multi line
60
+ string
61
+ EOT
62
+ v = [ [ s, nil ], [ nil, s ] ]
63
+ check(v)
64
+ end
65
+
66
+ def check(vIn)
67
+ csvIn = TaskJuggler::CSVFile.new(vIn)
68
+ str = csvIn.to_s
69
+ csvOut = TaskJuggler::CSVFile.new
70
+ vOut = csvOut.parse(str)
71
+ assert_equal(vIn, vOut)
72
+ end
73
+
74
+ end
75
+
data/test/test_Limits.rb CHANGED
@@ -53,7 +53,7 @@ class TestLimits < Test::Unit::TestCase
53
53
  l = Limits.new
54
54
  l.setProject(@p)
55
55
  l.setLimit('weeklymax', 2, Interval.new(TjTime.new('2009-02-10'),
56
- TjTime.new('2009-02-15')))
56
+ TjTime.new('2009-02-15')))
57
57
  # Outside of limit interval, should be ignored
58
58
  l.inc(TjTime.new('2009-02-05-10:00'))
59
59
  l.inc(TjTime.new('2009-02-20-10:00'))
@@ -74,7 +74,9 @@ class TestLimits < Test::Unit::TestCase
74
74
  l.inc(TjTime.new('2009-02-01-10:00'))
75
75
  assert(l.ok?)
76
76
  l.inc(TjTime.new('2009-02-01-11:00'))
77
+ assert(l.ok?)
77
78
  l.inc(TjTime.new('2009-02-01-12:00'))
79
+ assert(l.ok?)
78
80
  l.inc(TjTime.new('2009-02-01-13:00'))
79
81
  assert(!l.ok?)
80
82
  assert(l.ok?(TjTime.new('2009-01-31')))
@@ -82,20 +84,76 @@ class TestLimits < Test::Unit::TestCase
82
84
  assert(l.ok?(TjTime.new('2009-02-01'), false))
83
85
  end
84
86
 
85
- def test_with_resource
87
+ def test_with_resource_1
86
88
  l = Limits.new
87
89
  l.setProject(@p)
88
90
  l.setLimit('dailymax', 4)
89
91
  r = Resource.new(@p, 'r', 'R', nil)
90
- l.setLimit('dailymax', 3, nil, r)
92
+ l.setLimit('dailymax', 5, nil, r)
91
93
  l.inc(TjTime.new('2009-02-01-10:00'))
92
94
  assert(l.ok?)
93
- l.inc(TjTime.new('2009-02-01-11:00'), r)
95
+ l.inc(TjTime.new('2009-02-01-11:00'))
94
96
  assert(l.ok?)
95
- l.inc(TjTime.new('2009-02-01-12:00'), r)
97
+ l.inc(TjTime.new('2009-02-01-12:00'))
98
+ assert(l.ok?)
99
+ l.inc(TjTime.new('2009-02-01-13:00'))
96
100
  assert(!l.ok?)
101
+ assert(l.ok?(nil, true, r))
102
+ end
103
+
104
+ def test_with_resource_2
105
+ l = Limits.new
106
+ l.setProject(@p)
107
+ l.setLimit('dailymax', 5)
108
+ r = Resource.new(@p, 'r', 'R', nil)
109
+ l.setLimit('dailymax', 1, nil, r)
110
+ l.inc(TjTime.new('2009-02-01-10:00'))
111
+ assert(l.ok?)
112
+ l.inc(TjTime.new('2009-02-01-11:00'))
113
+ assert(l.ok?)
114
+ l.inc(TjTime.new('2009-02-01-12:00'))
115
+ assert(l.ok?)
97
116
  l.inc(TjTime.new('2009-02-01-13:00'))
117
+ assert(l.ok?)
118
+ assert(l.ok?(nil, true, r))
119
+ l.inc(TjTime.new('2009-02-01-14:00'), r)
120
+ assert(!l.ok?)
121
+ assert(!l.ok?(nil, true, r))
122
+ end
123
+
124
+ def test_with_resource_3
125
+ l = Limits.new
126
+ l.setProject(@p)
127
+ l.setLimit('dailymax', 5)
128
+ r = Resource.new(@p, 'r', 'R', nil)
129
+ l.setLimit('dailymax', 3, nil, r)
130
+ l.inc(TjTime.new('2009-02-01-10:00'), r)
131
+ assert(l.ok?)
132
+ l.inc(TjTime.new('2009-02-01-11:00'))
133
+ assert(l.ok?)
134
+ l.inc(TjTime.new('2009-02-01-12:00'), r)
135
+ assert(l.ok?)
136
+ l.inc(TjTime.new('2009-02-01-13:00'), r)
137
+ assert(l.ok?)
138
+ assert(!l.ok?(nil, true, r))
139
+ end
140
+
141
+ def test_with_resource_4
142
+ l = Limits.new
143
+ l.setProject(@p)
144
+ l.setLimit('dailymax', 2)
145
+ r = Resource.new(@p, 'r', 'R', nil)
146
+ l.setLimit('dailymax', 3, nil, r)
147
+ l.inc(TjTime.new('2009-02-01-10:00'), r)
148
+ assert(l.ok?)
149
+ l.inc(TjTime.new('2009-02-01-11:00'))
150
+ assert(!l.ok?)
151
+ l.inc(TjTime.new('2009-02-01-12:00'), r)
152
+ assert(!l.ok?)
153
+ assert(l.ok?(nil, true, r))
154
+ l.inc(TjTime.new('2009-02-01-13:00'), r)
98
155
  assert(!l.ok?)
156
+ assert(!l.ok?(nil, true, r))
99
157
  end
100
158
 
101
159
  end
@@ -0,0 +1,163 @@
1
+ #!/usr/bin/env ruby -w
2
+ # encoding: UTF-8
3
+ #
4
+ # = test_ProjectFileScanner.rb -- The TaskJuggler III Project Management Software
5
+ #
6
+ # Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
7
+ #
8
+ # This program is free software; you can redistribute it and/or modify
9
+ # it under the terms of version 2 of the GNU General Public License as
10
+ # published by the Free Software Foundation.
11
+ #
12
+
13
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
14
+
15
+ require 'test/unit'
16
+ require 'ProjectFileScanner'
17
+ require 'MessageHandler'
18
+
19
+ class TaskJuggler
20
+
21
+ class TestProjectFileScanner < Test::Unit::TestCase
22
+
23
+ def setup
24
+ end
25
+
26
+ def teardown
27
+ end
28
+
29
+ def test_basic
30
+ text = <<'EOT'
31
+ Hello world 1
32
+ 2.0 # Comment
33
+ 2008-12-14 // Another comment
34
+
35
+ foo:
36
+ a.b.c - $ [A Macro]
37
+ 15:23 "A string"
38
+ 'It\'s a string'
39
+ "A
40
+ mult\"i line
41
+ string" /*
42
+ a
43
+ comment */
44
+ EOT
45
+
46
+ ref = [
47
+ ['ID', 'Hello', 1],
48
+ ['ID', 'world', 1],
49
+ ['INTEGER', 1, 1],
50
+ ['FLOAT', 2.0, 2],
51
+ ['DATE', TjTime.new('2008-12-14'), 3],
52
+ ['ID_WITH_COLON', 'foo', 5],
53
+ ['ABSOLUTE_ID', 'a.b.c', 6],
54
+ ['LITERAL', '-', 6],
55
+ ['LITERAL', '$', 6],
56
+ ['MACRO', 'A Macro', 6],
57
+ ['TIME', ((15 * 60) + 23) * 60, 7],
58
+ ['STRING', 'A string', 7],
59
+ ['STRING', "It's a string", 8],
60
+ ['STRING', "A\nmult\"i line\nstring", 9],
61
+ ['.', '<END>', 14 ]
62
+ ]
63
+
64
+ check(text, ref)
65
+ end
66
+
67
+ def test_macro
68
+ text = <<'EOT'
69
+ This ${adj} software
70
+ ${m1 "arg1"}
71
+ EOT
72
+
73
+ macros = [
74
+ [ 'adj', 'great' ],
75
+ [ 'm1', 'macro with ${1} argument' ]
76
+ ]
77
+
78
+ ref = [
79
+ ['ID', 'This', 1],
80
+ ['ID', 'great', 1],
81
+ ['ID', 'software', 1],
82
+ ['ID', 'macro', 2],
83
+ ['ID', 'with', 2],
84
+ ['ID', 'arg1', 2],
85
+ ['ID', 'argument', 2],
86
+ ['.', '<END>', 3]
87
+ ]
88
+
89
+ check(text, ref, macros)
90
+ end
91
+
92
+ def test_macroDef
93
+ text = <<'EOT'
94
+ [ foo ]
95
+ [
96
+ bar ]
97
+ [ foo
98
+ ]
99
+ [
100
+ bar
101
+ ]
102
+ []
103
+ [
104
+ ]
105
+
106
+ EOT
107
+
108
+ ref = [
109
+ [ 'MACRO', ' foo ', 1 ],
110
+ [ 'MACRO', "\n bar ", 2 ],
111
+ [ 'MACRO', " foo\n ", 4 ],
112
+ [ 'MACRO', "\n bar\n ", 6 ],
113
+ [ 'MACRO', '', 9 ],
114
+ [ 'MACRO', "\n ", 10 ],
115
+ [ '.', '<END>', 13 ]
116
+ ]
117
+
118
+ check(text, ref)
119
+ end
120
+
121
+ def test_macroCall
122
+ text = '${foo}'
123
+ macros = [
124
+ [ 'foo', 'hello' ]
125
+ ]
126
+ ref = [
127
+ [ 'ID', 'hello', 1 ]
128
+ ]
129
+
130
+ check(text, ref, macros)
131
+ end
132
+
133
+ private
134
+
135
+ def check(text, ref, macros = [])
136
+ s = TaskJuggler::ProjectFileScanner.new(text, MessageHandler.new(true))
137
+ s.open(true)
138
+
139
+ macros.each do |macro|
140
+ s.addMacro(TaskJuggler::Macro.new(macro[0], macro[1], nil))
141
+ end
142
+
143
+ ref.each do |type, val, line|
144
+ token = s.nextToken
145
+ assert_equal([ type, val ], token[0..1],
146
+ "1: Bad token #{token[1]} instead of #{val}")
147
+ assert_equal(line, token[2].lineNo,
148
+ "1: Bad line number #{token[2].lineNo} instead of #{line} for #{val}")
149
+ s.returnToken(token)
150
+ token = s.nextToken
151
+ assert_equal([ type, val ], token[0..1],
152
+ "2: Bad token #{token[1]} instead of #{val}")
153
+ assert_equal(line, token[2].lineNo,
154
+ "2: Bad line number #{token[2].lineNo} instead of #{line} for #{val}")
155
+ end
156
+
157
+ s.close
158
+ end
159
+
160
+ end
161
+
162
+ end
163
+