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
data/doc/COPYING.html CHANGED
@@ -6,7 +6,7 @@
6
6
  <head>
7
7
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
8
8
 
9
- <title>File: COPYING [RDoc Documentation]</title>
9
+ <title>File: COPYING [TaskJuggler III API documentation]</title>
10
10
 
11
11
  <link type="text/css" media="screen" href="./rdoc.css" rel="stylesheet" />
12
12
 
@@ -39,6 +39,8 @@
39
39
  <h3 class="section-header">Files</h3>
40
40
  <ul>
41
41
 
42
+ <li class="file"><a href="./CHANGELOG.html">CHANGELOG</a></li>
43
+
42
44
  <li class="file"><a href="./COPYING.html">COPYING</a></li>
43
45
 
44
46
  <li class="file"><a href="./README.html">README</a></li>
@@ -208,6 +210,8 @@
208
210
 
209
211
  <li><a href="./TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
210
212
 
213
+ <li><a href="./TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
214
+
211
215
  <li><a href="./TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
212
216
 
213
217
  <li><a href="./TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -222,6 +226,8 @@
222
226
 
223
227
  <li><a href="./TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
224
228
 
229
+ <li><a href="./TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
230
+
225
231
  <li><a href="./TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
226
232
 
227
233
  <li><a href="./TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -238,12 +244,16 @@
238
244
 
239
245
  <li><a href="./TaskJuggler/Query.html">TaskJuggler::Query</a></li>
240
246
 
247
+ <li><a href="./TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
248
+
241
249
  <li><a href="./TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
242
250
 
243
251
  <li><a href="./TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
244
252
 
245
253
  <li><a href="./TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
246
254
 
255
+ <li><a href="./TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
256
+
247
257
  <li><a href="./TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
248
258
 
249
259
  <li><a href="./TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -262,6 +272,8 @@
262
272
 
263
273
  <li><a href="./TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
264
274
 
275
+ <li><a href="./TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
276
+
265
277
  <li><a href="./TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
266
278
 
267
279
  <li><a href="./TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -390,6 +402,8 @@
390
402
 
391
403
  <li><a href="./TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
392
404
 
405
+ <li><a href="./TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
406
+
393
407
  <li><a href="./TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
394
408
 
395
409
  <li><a href="./TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -434,8 +448,12 @@
434
448
 
435
449
  <li><a href="./TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
436
450
 
451
+ <li><a href="./TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
452
+
437
453
  <li><a href="./TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
438
454
 
455
+ <li><a href="./TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
456
+
439
457
  <li><a href="./TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
440
458
 
441
459
  <li><a href="./TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -462,6 +480,8 @@
462
480
 
463
481
  <li><a href="./String.html">String</a></li>
464
482
 
483
+ <li><a href="./StringIO.html">StringIO</a></li>
484
+
465
485
  </ul>
466
486
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
467
487
  </div>
data/doc/Object.html CHANGED
@@ -69,17 +69,17 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M000060">#deep_clone</a></li>
72
+ <li><a href="#method-i-deep_clone">#deep_clone</a></li>
73
73
 
74
- <li><a href="#M001576">#doRun</a></li>
74
+ <li><a href="#method-i-doRun">#doRun</a></li>
75
75
 
76
- <li><a href="#M001493">#main</a></li>
76
+ <li><a href="#method-i-main">#main</a></li>
77
77
 
78
- <li><a href="#M000533">#main</a></li>
78
+ <li><a href="#method-i-main">#main</a></li>
79
79
 
80
- <li><a href="#M001492">#processArguments</a></li>
80
+ <li><a href="#method-i-processArguments">#processArguments</a></li>
81
81
 
82
- <li><a href="#M001575">#test_fileIO</a></li>
82
+ <li><a href="#method-i-test_fileIO">#test_fileIO</a></li>
83
83
 
84
84
  </ul>
85
85
  </div>
@@ -96,6 +96,8 @@
96
96
  <h3 class="section-header">Files</h3>
97
97
  <ul>
98
98
 
99
+ <li class="file"><a href="./CHANGELOG.html">CHANGELOG</a></li>
100
+
99
101
  <li class="file"><a href="./COPYING.html">COPYING</a></li>
100
102
 
101
103
  <li class="file"><a href="./README.html">README</a></li>
@@ -265,6 +267,8 @@
265
267
 
266
268
  <li><a href="./TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
267
269
 
270
+ <li><a href="./TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
271
+
268
272
  <li><a href="./TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
269
273
 
270
274
  <li><a href="./TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -279,6 +283,8 @@
279
283
 
280
284
  <li><a href="./TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
281
285
 
286
+ <li><a href="./TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
287
+
282
288
  <li><a href="./TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
283
289
 
284
290
  <li><a href="./TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -295,12 +301,16 @@
295
301
 
296
302
  <li><a href="./TaskJuggler/Query.html">TaskJuggler::Query</a></li>
297
303
 
304
+ <li><a href="./TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
305
+
298
306
  <li><a href="./TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
299
307
 
300
308
  <li><a href="./TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
301
309
 
302
310
  <li><a href="./TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
303
311
 
312
+ <li><a href="./TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
313
+
304
314
  <li><a href="./TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
305
315
 
306
316
  <li><a href="./TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -319,6 +329,8 @@
319
329
 
320
330
  <li><a href="./TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
321
331
 
332
+ <li><a href="./TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
333
+
322
334
  <li><a href="./TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
323
335
 
324
336
  <li><a href="./TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -447,6 +459,8 @@
447
459
 
448
460
  <li><a href="./TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
449
461
 
462
+ <li><a href="./TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
463
+
450
464
  <li><a href="./TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
451
465
 
452
466
  <li><a href="./TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -491,8 +505,12 @@
491
505
 
492
506
  <li><a href="./TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
493
507
 
508
+ <li><a href="./TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
509
+
494
510
  <li><a href="./TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
495
511
 
512
+ <li><a href="./TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
513
+
496
514
  <li><a href="./TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
497
515
 
498
516
  <li><a href="./TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -519,6 +537,8 @@
519
537
 
520
538
  <li><a href="./String.html">String</a></li>
521
539
 
540
+ <li><a href="./StringIO.html">StringIO</a></li>
541
+
522
542
  </ul>
523
543
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
524
544
  </div>
@@ -555,8 +575,9 @@ than Array and Hash, but this file works for me.
555
575
  <p>
556
576
  In certain cases the full deep copy may not be desired. To preserve
557
577
  references to objects, you need to overload <a
558
- href="Object.html#M000060">deep_clone</a> and handle the special cases.
559
- Alternatively, an object can be frozen to prevent deep copies.
578
+ href="Object.html#method-i-deep_clone">deep_clone</a> and handle the
579
+ special cases. Alternatively, an object can be frozen to prevent deep
580
+ copies.
560
581
  </p>
561
582
 
562
583
  </div>
@@ -574,7 +595,7 @@ Alternatively, an object can be frozen to prevent deep copies.
574
595
 
575
596
 
576
597
  <div id="deep-clone-method" class="method-detail ">
577
- <a name="M000060"></a>
598
+ <a name="method-i-deep_clone"></a>
578
599
 
579
600
  <div class="method-heading">
580
601
 
@@ -598,39 +619,42 @@ This is a variant of Object#clone that returns a deep copy of an object.
598
619
  <span class="ruby-comment cmt"># File lib/deep_copy.rb, line 35</span>
599
620
  35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
600
621
  36: <span class="ruby-comment cmt"># We can't clone frozen objects. So just return a reference to them.</span>
601
- 37: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">frozen?</span>
602
- 38:
603
- 39: <span class="ruby-comment cmt"># In case we have loops in our graph, we return references, not</span>
604
- 40: <span class="ruby-comment cmt"># deep-copied objects.</span>
605
- 41: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value str">'1.9.0'</span>
606
- 42: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@clonedObject</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'@clonedObject'</span>)
607
- 43: <span class="ruby-keyword kw">else</span>
608
- 44: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@clonedObject</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value">:@clonedObject</span>)
609
- 45: <span class="ruby-keyword kw">end</span>
610
- 46:
611
- 47: <span class="ruby-comment cmt"># Clone the current Object (shallow copy with internal state)</span>
612
- 48: <span class="ruby-keyword kw">begin</span>
613
- 49: <span class="ruby-ivar">@clonedObject</span> = <span class="ruby-identifier">clone</span>
614
- 50: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TypeError</span>
615
- 51: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
616
- 52: <span class="ruby-keyword kw">end</span>
617
- 53: <span class="ruby-comment cmt"># Recursively copy all instance variables.</span>
618
- 54: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
619
- 55: <span class="ruby-identifier">val</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">var</span>).<span class="ruby-identifier">deep_clone</span>
620
- 56: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-identifier">var</span>, <span class="ruby-identifier">val</span>)
621
- 57: <span class="ruby-keyword kw">end</span>
622
- 58: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Array</span>)
623
- 59: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">deep_clone</span> }
624
- 60: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>)
625
- 61: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-identifier">store</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>.<span class="ruby-identifier">deep_clone</span>) }
626
- 62: <span class="ruby-keyword kw">end</span>
627
- 63: <span class="ruby-comment cmt"># Remove the @clonedObject again.</span>
628
- 64: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value str">'1.9.0'</span>
629
- 65: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value str">'@clonedObject'</span>)
630
- 66: <span class="ruby-keyword kw">else</span>
631
- 67: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value">:@clonedObject</span>)
632
- 68: <span class="ruby-keyword kw">end</span>
633
- 69: <span class="ruby-keyword kw">end</span></pre>
622
+ 37: <span class="ruby-comment cmt"># Built-in classed can't be cloned either. The check below is probably</span>
623
+ 38: <span class="ruby-comment cmt"># cheaper than the frequent (hiddent) exceptions from those objects.</span>
624
+ 39: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">frozen?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Float</span>) <span class="ruby-operator">||</span>
625
+ 40: <span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TrueClass</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">FalseClass</span>)
626
+ 41:
627
+ 42: <span class="ruby-comment cmt"># In case we have loops in our graph, we return references, not</span>
628
+ 43: <span class="ruby-comment cmt"># deep-copied objects.</span>
629
+ 44: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value str">'1.9.0'</span>
630
+ 45: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@clonedObject</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value str">'@clonedObject'</span>)
631
+ 46: <span class="ruby-keyword kw">else</span>
632
+ 47: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@clonedObject</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-value">:@clonedObject</span>)
633
+ 48: <span class="ruby-keyword kw">end</span>
634
+ 49:
635
+ 50: <span class="ruby-comment cmt"># Clone the current Object (shallow copy with internal state)</span>
636
+ 51: <span class="ruby-keyword kw">begin</span>
637
+ 52: <span class="ruby-ivar">@clonedObject</span> = <span class="ruby-identifier">clone</span>
638
+ 53: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TypeError</span>
639
+ 54: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
640
+ 55: <span class="ruby-keyword kw">end</span>
641
+ 56: <span class="ruby-comment cmt"># Recursively copy all instance variables.</span>
642
+ 57: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">instance_variables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
643
+ 58: <span class="ruby-identifier">val</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-identifier">var</span>).<span class="ruby-identifier">deep_clone</span>
644
+ 59: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-identifier">var</span>, <span class="ruby-identifier">val</span>)
645
+ 60: <span class="ruby-keyword kw">end</span>
646
+ 61: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Array</span>)
647
+ 62: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">x</span><span class="ruby-operator">|</span> <span class="ruby-identifier">x</span>.<span class="ruby-identifier">deep_clone</span> }
648
+ 63: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>)
649
+ 64: <span class="ruby-ivar">@clonedObject</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span> <span class="ruby-identifier">store</span>(<span class="ruby-identifier">key</span>, <span class="ruby-identifier">val</span>.<span class="ruby-identifier">deep_clone</span>) }
650
+ 65: <span class="ruby-keyword kw">end</span>
651
+ 66: <span class="ruby-comment cmt"># Remove the @clonedObject again.</span>
652
+ 67: <span class="ruby-keyword kw">if</span> <span class="ruby-constant">RUBY_VERSION</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value str">'1.9.0'</span>
653
+ 68: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value str">'@clonedObject'</span>)
654
+ 69: <span class="ruby-keyword kw">else</span>
655
+ 70: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value">:@clonedObject</span>)
656
+ 71: <span class="ruby-keyword kw">end</span>
657
+ 72: <span class="ruby-keyword kw">end</span></pre>
634
658
  </div>
635
659
 
636
660
  </div>
@@ -642,7 +666,7 @@ This is a variant of Object#clone that returns a deep copy of an object.
642
666
 
643
667
 
644
668
  <div id="do-un-method" class="method-detail ">
645
- <a name="M001576"></a>
669
+ <a name="method-i-doRun"></a>
646
670
 
647
671
  <div class="method-heading">
648
672
 
@@ -694,7 +718,7 @@ This is a variant of Object#clone that returns a deep copy of an object.
694
718
 
695
719
 
696
720
  <div id="main-method" class="method-detail ">
697
- <a name="M001493"></a>
721
+ <a name="method-i-main"></a>
698
722
 
699
723
  <div class="method-heading">
700
724
 
@@ -713,43 +737,50 @@ This is a variant of Object#clone that returns a deep copy of an object.
713
737
  <div class="method-source-code"
714
738
  id="main-source">
715
739
  <pre>
716
- <span class="ruby-comment cmt"># File lib/taskjuggler3.rb, line 105</span>
717
- 105: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
718
- 106: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-value">1</span>
719
- 107: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">false</span>
720
- 108: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
721
- 109: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
722
- 110: <span class="ruby-ivar">@timeSheets</span> = []
723
- 111: <span class="ruby-ivar">@statusSheets</span> = []
724
- 112:
725
- 113: <span class="ruby-comment cmt"># Install signal handler to exit gracefully on CTRL-C.</span>
726
- 114: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">'INT'</span>) <span class="ruby-keyword kw">do</span>
727
- 115: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nAborting on user request!&quot;</span>
728
- 116: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
729
- 117: <span class="ruby-keyword kw">end</span>
730
- 118:
731
- 119: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">processArguments</span>(<span class="ruby-constant">ARGV</span>)
732
- 120: <span class="ruby-identifier">tj</span> = <span class="ruby-constant">TaskJuggler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
733
- 121: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">maxCpuCores</span> = <span class="ruby-ivar">@maxCpuCores</span>
734
- 122: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">warnTsDeltas</span> = <span class="ruby-ivar">@warnTsDeltas</span>
735
- 123: <span class="ruby-identifier">keepParser</span> = <span class="ruby-operator">!</span><span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@statusSheets</span>.<span class="ruby-identifier">empty?</span>
736
- 124: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">files</span>, <span class="ruby-identifier">keepParser</span>)
737
- 125: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">schedule</span>
738
- 126: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@forceReports</span>
740
+ <span class="ruby-comment cmt"># File lib/taskjuggler3.rb, line 113</span>
741
+ 113: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
742
+ 114: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-value">1</span>
743
+ 115: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">false</span>
744
+ 116: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
745
+ 117: <span class="ruby-ivar">@checkSyntax</span> = <span class="ruby-keyword kw">false</span>
746
+ 118: <span class="ruby-ivar">@noReports</span> = <span class="ruby-keyword kw">false</span>
747
+ 119: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
748
+ 120: <span class="ruby-ivar">@timeSheets</span> = []
749
+ 121: <span class="ruby-ivar">@statusSheets</span> = []
750
+ 122:
751
+ 123: <span class="ruby-comment cmt"># Install signal handler to exit gracefully on CTRL-C.</span>
752
+ 124: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">'INT'</span>) <span class="ruby-keyword kw">do</span>
753
+ 125: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nAborting on user request!&quot;</span>
754
+ 126: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
739
755
  127: <span class="ruby-keyword kw">end</span>
740
756
  128:
741
- 129: <span class="ruby-comment cmt"># The checks of time and status sheets is probably only used for debugging.</span>
742
- 130: <span class="ruby-comment cmt"># Normally, this function is provided by tj3client.</span>
743
- 131: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ts</span><span class="ruby-operator">|</span>
744
- 132: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">ts</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">errors</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
745
- 133: <span class="ruby-keyword kw">end</span>
746
- 134: <span class="ruby-ivar">@statusSheets</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ss</span><span class="ruby-operator">|</span>
747
- 135: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-identifier">ss</span>, <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">ss</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">errors</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
748
- 136: <span class="ruby-keyword kw">end</span>
757
+ 129: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">processArguments</span>(<span class="ruby-constant">ARGV</span>)
758
+ 130: <span class="ruby-identifier">tj</span> = <span class="ruby-constant">TaskJuggler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
759
+ 131: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">maxCpuCores</span> = <span class="ruby-ivar">@maxCpuCores</span>
760
+ 132: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">warnTsDeltas</span> = <span class="ruby-ivar">@warnTsDeltas</span>
761
+ 133: <span class="ruby-identifier">keepParser</span> = <span class="ruby-operator">!</span><span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@statusSheets</span>.<span class="ruby-identifier">empty?</span>
762
+ 134: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">files</span>, <span class="ruby-identifier">keepParser</span>)
763
+ 135:
764
+ 136: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@checkSyntax</span>
749
765
  137:
750
- 138: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">generateReports</span>(<span class="ruby-ivar">@outputDir</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">errors</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
751
- 139:
752
- 140: <span class="ruby-keyword kw">end</span></pre>
766
+ 138: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">schedule</span>
767
+ 139: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@forceReports</span>
768
+ 140: <span class="ruby-keyword kw">end</span>
769
+ 141:
770
+ 142: <span class="ruby-comment cmt"># The checks of time and status sheets is probably only used for debugging.</span>
771
+ 143: <span class="ruby-comment cmt"># Normally, this function is provided by tj3client.</span>
772
+ 144: <span class="ruby-ivar">@timeSheets</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ts</span><span class="ruby-operator">|</span>
773
+ 145: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">checkTimeSheet</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">ts</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">errors</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
774
+ 146: <span class="ruby-keyword kw">end</span>
775
+ 147: <span class="ruby-ivar">@statusSheets</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ss</span><span class="ruby-operator">|</span>
776
+ 148: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">checkStatusSheet</span>(<span class="ruby-identifier">ss</span>, <span class="ruby-constant">File</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">ss</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">errors</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
777
+ 149: <span class="ruby-keyword kw">end</span>
778
+ 150:
779
+ 151: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@noReports</span>
780
+ 152:
781
+ 153: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">generateReports</span>(<span class="ruby-ivar">@outputDir</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">errors</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
782
+ 154:
783
+ 155: <span class="ruby-keyword kw">end</span></pre>
753
784
  </div>
754
785
 
755
786
  </div>
@@ -761,7 +792,7 @@ This is a variant of Object#clone that returns a deep copy of an object.
761
792
 
762
793
 
763
794
  <div id="main-method" class="method-detail ">
764
- <a name="M000533"></a>
795
+ <a name="method-i-main"></a>
765
796
 
766
797
  <div class="method-heading">
767
798
 
@@ -814,7 +845,7 @@ This is a variant of Object#clone that returns a deep copy of an object.
814
845
 
815
846
 
816
847
  <div id="process-rguments-method" class="method-detail ">
817
- <a name="M001492"></a>
848
+ <a name="method-i-processArguments"></a>
818
849
 
819
850
  <div class="method-heading">
820
851
 
@@ -873,50 +904,58 @@ This is a variant of Object#clone that returns a deep copy of an object.
873
904
  57: <span class="ruby-value str">'Turn on warnings for requested changes in time sheets'</span>) <span class="ruby-keyword kw">do</span>
874
905
  58: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">true</span>
875
906
  59: <span class="ruby-keyword kw">end</span>
876
- 60: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-o'</span>, <span class="ruby-value str">'--output-dir &lt;directory&gt;'</span>, <span class="ruby-constant">String</span>,
877
- 61: <span class="ruby-value str">'Directory the reports should go into'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
878
- 62: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-identifier">arg</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
907
+ 60: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--check-syntax'</span>,
908
+ 61: <span class="ruby-value str">'Only parse the input files and check the syntax.'</span>) <span class="ruby-keyword kw">do</span>
909
+ 62: <span class="ruby-ivar">@checkSyntax</span> = <span class="ruby-keyword kw">true</span>
879
910
  63: <span class="ruby-keyword kw">end</span>
880
- 64: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-c N'</span>, <span class="ruby-constant">Integer</span>, <span class="ruby-value str">'Maximum number of CPU cores to use'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
881
- 65: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-identifier">arg</span>
882
- 66: <span class="ruby-keyword kw">end</span>
883
- 67: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'-h'</span>, <span class="ruby-value str">'--help'</span>, <span class="ruby-value str">'Show this message'</span>) <span class="ruby-keyword kw">do</span>
884
- 68: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
885
- 69: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
886
- 70: <span class="ruby-keyword kw">end</span>
887
- 71:
888
- 72: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'--version'</span>, <span class="ruby-value str">'Show version info'</span>) <span class="ruby-keyword kw">do</span>
889
- 73: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
890
- 74: <span class="ruby-node">&quot;#{AppConfig.packageInfo}&quot;</span>
891
- 75: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
892
- 76: <span class="ruby-keyword kw">end</span>
893
- 77:
894
- 78: <span class="ruby-comment cmt"># Show some progress information by default</span>
895
- 79: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">silent</span> = <span class="ruby-keyword kw">false</span>
896
- 80: <span class="ruby-keyword kw">begin</span>
897
- 81: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">argv</span>)
898
- 82: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OptionParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">msg</span>
899
- 83: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span>
900
- 84: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span>
901
- 85: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
902
- 86: <span class="ruby-keyword kw">end</span>
903
- 87:
904
- 88: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
905
- 89: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
906
- 90: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nNo project file name specified!&quot;</span>
907
- 91: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
908
- 92: <span class="ruby-keyword kw">end</span>
909
- 93:
910
- 94: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">silent</span>
911
- 95: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
912
- 96: <span class="ruby-node">&quot;#{AppConfig.packageInfo}\n\n&quot;</span> <span class="ruby-operator">+</span>
913
- 97: <span class="ruby-node">&quot;Copyright (c) #{AppConfig.copyright.join(', ')}&quot;</span> <span class="ruby-operator">+</span>
914
- 98: <span class="ruby-node">&quot; by #{AppConfig.authors.join(', ')}\n\n&quot;</span> <span class="ruby-operator">+</span>
915
- 99: <span class="ruby-node">&quot;#{AppConfig.license}\n&quot;</span>
911
+ 64: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--no-reports'</span>,
912
+ 65: <span class="ruby-value str">'Just schedule the project, but don\t generate any reports.'</span>) <span class="ruby-keyword kw">do</span>
913
+ 66: <span class="ruby-ivar">@noReports</span> = <span class="ruby-keyword kw">true</span>
914
+ 67: <span class="ruby-keyword kw">end</span>
915
+ 68: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-o'</span>, <span class="ruby-value str">'--output-dir &lt;directory&gt;'</span>, <span class="ruby-constant">String</span>,
916
+ 69: <span class="ruby-value str">'Directory the reports should go into'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
917
+ 70: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-identifier">arg</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
918
+ 71: <span class="ruby-keyword kw">end</span>
919
+ 72: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-c N'</span>, <span class="ruby-constant">Integer</span>, <span class="ruby-value str">'Maximum number of CPU cores to use'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
920
+ 73: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-identifier">arg</span>
921
+ 74: <span class="ruby-keyword kw">end</span>
922
+ 75: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'-h'</span>, <span class="ruby-value str">'--help'</span>, <span class="ruby-value str">'Show this message'</span>) <span class="ruby-keyword kw">do</span>
923
+ 76: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
924
+ 77: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
925
+ 78: <span class="ruby-keyword kw">end</span>
926
+ 79:
927
+ 80: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'--version'</span>, <span class="ruby-value str">'Show version info'</span>) <span class="ruby-keyword kw">do</span>
928
+ 81: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
929
+ 82: <span class="ruby-node">&quot;#{AppConfig.packageInfo}&quot;</span>
930
+ 83: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
931
+ 84: <span class="ruby-keyword kw">end</span>
932
+ 85:
933
+ 86: <span class="ruby-comment cmt"># Show some progress information by default</span>
934
+ 87: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">silent</span> = <span class="ruby-keyword kw">false</span>
935
+ 88: <span class="ruby-keyword kw">begin</span>
936
+ 89: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">argv</span>)
937
+ 90: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OptionParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">msg</span>
938
+ 91: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n&quot;</span>
939
+ 92: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span>
940
+ 93: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
941
+ 94: <span class="ruby-keyword kw">end</span>
942
+ 95:
943
+ 96: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
944
+ 97: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
945
+ 98: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nNo project file name specified!&quot;</span>
946
+ 99: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
916
947
  100: <span class="ruby-keyword kw">end</span>
917
948
  101:
918
- 102: <span class="ruby-identifier">files</span>
919
- 103: <span class="ruby-keyword kw">end</span></pre>
949
+ 102: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">silent</span>
950
+ 103: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
951
+ 104: <span class="ruby-node">&quot;#{AppConfig.packageInfo}\n\n&quot;</span> <span class="ruby-operator">+</span>
952
+ 105: <span class="ruby-node">&quot;Copyright (c) #{AppConfig.copyright.join(', ')}&quot;</span> <span class="ruby-operator">+</span>
953
+ 106: <span class="ruby-node">&quot; by #{AppConfig.authors.join(', ')}\n\n&quot;</span> <span class="ruby-operator">+</span>
954
+ 107: <span class="ruby-node">&quot;#{AppConfig.license}\n&quot;</span>
955
+ 108: <span class="ruby-keyword kw">end</span>
956
+ 109:
957
+ 110: <span class="ruby-identifier">files</span>
958
+ 111: <span class="ruby-keyword kw">end</span></pre>
920
959
  </div>
921
960
 
922
961
  </div>
@@ -928,7 +967,7 @@ This is a variant of Object#clone that returns a deep copy of an object.
928
967
 
929
968
 
930
969
  <div id="test-file--method" class="method-detail ">
931
- <a name="M001575"></a>
970
+ <a name="method-i-test_fileIO"></a>
932
971
 
933
972
  <div class="method-heading">
934
973