taskjuggler 0.0.8 → 0.0.9

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 (613) hide show
  1. data/CHANGELOG +1144 -2047
  2. data/README +1 -1
  3. data/Rakefile +6 -6
  4. data/data/css/tjmanual.css +20 -0
  5. data/data/css/tjreport.css +7 -6
  6. data/doc/AppConfig.html +136 -130
  7. data/doc/Arguments.html +46 -40
  8. data/doc/CHANGELOG.html +1162 -2057
  9. data/doc/COPYING.html +8 -2
  10. data/doc/Object.html +205 -199
  11. data/doc/README.html +9 -3
  12. data/doc/RuntimeConfig.html +75 -69
  13. data/doc/String.html +69 -63
  14. data/doc/TaskJuggler.html +350 -291
  15. data/doc/TaskJuggler/Account.html +26 -20
  16. data/doc/TaskJuggler/AccountAttribute.html +24 -18
  17. data/doc/TaskJuggler/AccountScenario.html +24 -18
  18. data/doc/TaskJuggler/Allocation.html +74 -68
  19. data/doc/TaskJuggler/AllocationAttribute.html +54 -48
  20. data/doc/TaskJuggler/AttributeBase.html +172 -93
  21. data/doc/TaskJuggler/AttributeDefinition.html +22 -16
  22. data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
  23. data/doc/TaskJuggler/BatchProcessor.html +263 -257
  24. data/doc/TaskJuggler/Booking.html +44 -38
  25. data/doc/TaskJuggler/BookingListAttribute.html +25 -21
  26. data/doc/TaskJuggler/BooleanAttribute.html +24 -18
  27. data/doc/TaskJuggler/CSVFile.html +193 -187
  28. data/doc/TaskJuggler/CellSettingPattern.html +13 -7
  29. data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
  30. data/doc/TaskJuggler/Charge.html +49 -43
  31. data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
  32. data/doc/TaskJuggler/ChargeSet.html +94 -88
  33. data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
  34. data/doc/TaskJuggler/CollisionDetector.html +142 -136
  35. data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
  36. data/doc/TaskJuggler/ColumnTable.html +50 -44
  37. data/doc/TaskJuggler/Daemon.html +71 -50
  38. data/doc/TaskJuggler/DataCache.html +110 -58
  39. data/doc/TaskJuggler/DataCacheEntry.html +22 -16
  40. data/doc/TaskJuggler/DateAttribute.html +24 -18
  41. data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
  42. data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
  43. data/doc/TaskJuggler/DurationAttribute.html +25 -19
  44. data/doc/TaskJuggler/FileList.html +25 -19
  45. data/doc/TaskJuggler/FileRecord.html +17 -11
  46. data/doc/TaskJuggler/FixnumAttribute.html +16 -10
  47. data/doc/TaskJuggler/FlagListAttribute.html +25 -21
  48. data/doc/TaskJuggler/FloatAttribute.html +20 -14
  49. data/doc/TaskJuggler/FormatListAttribute.html +17 -11
  50. data/doc/TaskJuggler/GanttChart.html +242 -236
  51. data/doc/TaskJuggler/GanttContainer.html +71 -67
  52. data/doc/TaskJuggler/GanttHeader.html +113 -107
  53. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
  54. data/doc/TaskJuggler/GanttLine.html +217 -210
  55. data/doc/TaskJuggler/GanttLoadStack.html +89 -83
  56. data/doc/TaskJuggler/GanttMilestone.html +11 -6
  57. data/doc/TaskJuggler/GanttRouter.html +194 -186
  58. data/doc/TaskJuggler/GanttTaskBar.html +41 -34
  59. data/doc/TaskJuggler/HTMLDocument.html +52 -46
  60. data/doc/TaskJuggler/HTMLGraphics.html +58 -52
  61. data/doc/TaskJuggler/Interval.html +90 -84
  62. data/doc/TaskJuggler/IntervalList.html +777 -0
  63. data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
  64. data/doc/TaskJuggler/JobInfo.html +36 -30
  65. data/doc/TaskJuggler/Journal.html +188 -177
  66. data/doc/TaskJuggler/JournalEntry.html +36 -30
  67. data/doc/TaskJuggler/JournalEntryList.html +88 -82
  68. data/doc/TaskJuggler/KeywordArray.html +12 -6
  69. data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
  70. data/doc/TaskJuggler/Limits.html +111 -105
  71. data/doc/TaskJuggler/Limits/Limit.html +71 -65
  72. data/doc/TaskJuggler/LimitsAttribute.html +21 -15
  73. data/doc/TaskJuggler/ListAttributeBase.html +16 -10
  74. data/doc/TaskJuggler/Log.html +111 -105
  75. data/doc/TaskJuggler/LogFile.html +54 -48
  76. data/doc/TaskJuggler/LogicalAttribute.html +35 -29
  77. data/doc/TaskJuggler/LogicalExpression.html +32 -26
  78. data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
  79. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
  80. data/doc/TaskJuggler/LogicalFlag.html +24 -18
  81. data/doc/TaskJuggler/LogicalFunction.html +164 -158
  82. data/doc/TaskJuggler/LogicalOperation.html +138 -132
  83. data/doc/TaskJuggler/Macro.html +14 -8
  84. data/doc/TaskJuggler/MacroTable.html +42 -36
  85. data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
  86. data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
  87. data/doc/TaskJuggler/Message.html +56 -50
  88. data/doc/TaskJuggler/MessageHandler.html +73 -67
  89. data/doc/TaskJuggler/Navigator.html +92 -86
  90. data/doc/TaskJuggler/NavigatorElement.html +88 -82
  91. data/doc/TaskJuggler/NikuProject.html +15 -9
  92. data/doc/TaskJuggler/NikuReport.html +405 -370
  93. data/doc/TaskJuggler/NikuResource.html +13 -7
  94. data/doc/TaskJuggler/NodeListAttribute.html +13 -9
  95. data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
  96. data/doc/TaskJuggler/ProcessIntercom.html +116 -110
  97. data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
  98. data/doc/TaskJuggler/Project.html +1064 -895
  99. data/doc/TaskJuggler/ProjectBroker.html +439 -366
  100. data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
  101. data/doc/TaskJuggler/ProjectFileParser.html +329 -319
  102. data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
  103. data/doc/TaskJuggler/ProjectRecord.html +66 -60
  104. data/doc/TaskJuggler/ProjectServer.html +287 -280
  105. data/doc/TaskJuggler/ProjectServerIface.html +43 -37
  106. data/doc/TaskJuggler/PropertyAttribute.html +16 -10
  107. data/doc/TaskJuggler/PropertyList.html +205 -199
  108. data/doc/TaskJuggler/PropertySet.html +264 -296
  109. data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
  110. data/doc/TaskJuggler/Query.html +309 -524
  111. data/doc/TaskJuggler/RTFHandlers.html +17 -11
  112. data/doc/TaskJuggler/RTFNavigator.html +33 -27
  113. data/doc/TaskJuggler/RTFQuery.html +135 -129
  114. data/doc/TaskJuggler/RTFReport.html +63 -57
  115. data/doc/TaskJuggler/RTFReportLink.html +55 -49
  116. data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
  117. data/doc/TaskJuggler/RealFormat.html +64 -58
  118. data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
  119. data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
  120. data/doc/TaskJuggler/Report.html +294 -249
  121. data/doc/TaskJuggler/ReportBase.html +229 -223
  122. data/doc/TaskJuggler/ReportContext.html +52 -46
  123. data/doc/TaskJuggler/ReportServer.html +143 -137
  124. data/doc/TaskJuggler/ReportServerIface.html +51 -43
  125. data/doc/TaskJuggler/ReportServerRecord.html +36 -30
  126. data/doc/TaskJuggler/ReportServlet.html +167 -140
  127. data/doc/TaskJuggler/ReportTable.html +137 -131
  128. data/doc/TaskJuggler/ReportTableCell.html +332 -292
  129. data/doc/TaskJuggler/ReportTableColumn.html +46 -40
  130. data/doc/TaskJuggler/ReportTableLegend.html +43 -38
  131. data/doc/TaskJuggler/ReportTableLine.html +66 -60
  132. data/doc/TaskJuggler/Resource.html +166 -160
  133. data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
  134. data/doc/TaskJuggler/ResourceListRE.html +47 -41
  135. data/doc/TaskJuggler/ResourceScenario.html +671 -644
  136. data/doc/TaskJuggler/RichText.html +51 -45
  137. data/doc/TaskJuggler/RichTextAttribute.html +28 -22
  138. data/doc/TaskJuggler/RichTextDocument.html +96 -90
  139. data/doc/TaskJuggler/RichTextElement.html +503 -497
  140. data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
  141. data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
  142. data/doc/TaskJuggler/RichTextImage.html +14 -8
  143. data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
  144. data/doc/TaskJuggler/RichTextParser.html +59 -53
  145. data/doc/TaskJuggler/RichTextScanner.html +184 -178
  146. data/doc/TaskJuggler/RichTextSnip.html +69 -63
  147. data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
  148. data/doc/TaskJuggler/Scenario.html +13 -7
  149. data/doc/TaskJuggler/ScenarioData.html +40 -34
  150. data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
  151. data/doc/TaskJuggler/Scoreboard.html +129 -107
  152. data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
  153. data/doc/TaskJuggler/SheetReceiver.html +333 -327
  154. data/doc/TaskJuggler/SheetSender.html +227 -221
  155. data/doc/TaskJuggler/Shift.html +26 -20
  156. data/doc/TaskJuggler/ShiftAssignment.html +45 -39
  157. data/doc/TaskJuggler/ShiftAssignments.html +178 -172
  158. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
  159. data/doc/TaskJuggler/ShiftScenario.html +29 -23
  160. data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
  161. data/doc/TaskJuggler/SortListAttribute.html +17 -13
  162. data/doc/TaskJuggler/SourceFileInfo.html +19 -13
  163. data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
  164. data/doc/TaskJuggler/StatusSheetReport.html +166 -159
  165. data/doc/TaskJuggler/StatusSheetSender.html +80 -74
  166. data/doc/TaskJuggler/StringAttribute.html +20 -14
  167. data/doc/TaskJuggler/SymbolAttribute.html +16 -10
  168. data/doc/TaskJuggler/SyntaxReference.html +231 -225
  169. data/doc/TaskJuggler/TOCEntry.html +46 -40
  170. data/doc/TaskJuggler/TSResourceRecord.html +15 -9
  171. data/doc/TaskJuggler/TSTaskRecord.html +16 -10
  172. data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
  173. data/doc/TaskJuggler/TableOfContents.html +28 -22
  174. data/doc/TaskJuggler/TableReport.html +906 -866
  175. data/doc/TaskJuggler/Task.html +99 -93
  176. data/doc/TaskJuggler/TaskDependency.html +24 -18
  177. data/doc/TaskJuggler/TaskListAttribute.html +29 -25
  178. data/doc/TaskJuggler/TaskListRE.html +46 -39
  179. data/doc/TaskJuggler/TaskScenario.html +2218 -1965
  180. data/doc/TaskJuggler/TextFormatter.html +154 -148
  181. data/doc/TaskJuggler/TextParser.html +362 -348
  182. data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
  183. data/doc/TaskJuggler/TextParser/Rule.html +147 -141
  184. data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
  185. data/doc/TaskJuggler/TextParser/State.html +88 -82
  186. data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
  187. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
  188. data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
  189. data/doc/TaskJuggler/TextReport.html +80 -74
  190. data/doc/TaskJuggler/TextScanner.html +284 -272
  191. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
  192. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
  193. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
  194. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  195. data/doc/TaskJuggler/TimeSheet.html +123 -117
  196. data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
  197. data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
  198. data/doc/TaskJuggler/TimeSheetReport.html +206 -199
  199. data/doc/TaskJuggler/TimeSheetSender.html +27 -21
  200. data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
  201. data/doc/TaskJuggler/TimeSheets.html +20 -14
  202. data/doc/TaskJuggler/Tj3AppBase.html +100 -94
  203. data/doc/TaskJuggler/Tj3Client.html +407 -483
  204. data/doc/TaskJuggler/Tj3Daemon.html +116 -107
  205. data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
  206. data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
  207. data/doc/TaskJuggler/Tj3SsSender.html +64 -58
  208. data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
  209. data/doc/TaskJuggler/Tj3TsSender.html +51 -45
  210. data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
  211. data/doc/TaskJuggler/TjException.html +13 -7
  212. data/doc/TaskJuggler/TjTime.html +444 -438
  213. data/doc/TaskJuggler/TjpExample.html +84 -78
  214. data/doc/TaskJuggler/TjpExportRE.html +356 -349
  215. data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
  216. data/doc/TaskJuggler/URLParameter.html +16 -10
  217. data/doc/TaskJuggler/UserManual.html +185 -179
  218. data/doc/TaskJuggler/VimSyntax.html +144 -138
  219. data/doc/TaskJuggler/WebServer.html +46 -39
  220. data/doc/TaskJuggler/WelcomePage.html +769 -0
  221. data/doc/TaskJuggler/WorkingHours.html +185 -179
  222. data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
  223. data/doc/TaskJuggler/XMLBlob.html +21 -15
  224. data/doc/TaskJuggler/XMLComment.html +17 -11
  225. data/doc/TaskJuggler/XMLDocument.html +33 -27
  226. data/doc/TaskJuggler/XMLElement.html +97 -91
  227. data/doc/TaskJuggler/XMLNamedText.html +13 -7
  228. data/doc/TaskJuggler/XMLText.html +32 -26
  229. data/doc/index.html +601 -563
  230. data/doc/lib/AccountScenario_rb.html +5 -3
  231. data/doc/lib/Account_rb.html +5 -3
  232. data/doc/lib/Allocation_rb.html +5 -3
  233. data/doc/lib/AppConfig_rb.html +5 -3
  234. data/doc/lib/AttributeBase_rb.html +5 -3
  235. data/doc/lib/AttributeDefinition_rb.html +5 -3
  236. data/doc/lib/Attributes_rb.html +5 -3
  237. data/doc/lib/BatchProcessor_rb.html +5 -3
  238. data/doc/lib/Booking_rb.html +5 -3
  239. data/doc/lib/ChargeSet_rb.html +5 -3
  240. data/doc/lib/Charge_rb.html +5 -3
  241. data/doc/lib/DataCache_rb.html +5 -3
  242. data/doc/lib/FileList_rb.html +5 -3
  243. data/doc/lib/HTMLDocument_rb.html +5 -3
  244. data/doc/lib/IntervalList_rb.html +69 -0
  245. data/doc/lib/Interval_rb.html +5 -3
  246. data/doc/lib/Journal_rb.html +5 -3
  247. data/doc/lib/KeywordArray_rb.html +5 -3
  248. data/doc/lib/KeywordDocumentation_rb.html +5 -3
  249. data/doc/lib/Limits_rb.html +5 -3
  250. data/doc/lib/LogFile_rb.html +5 -3
  251. data/doc/lib/Log_rb.html +5 -3
  252. data/doc/lib/LogicalExpression_rb.html +5 -3
  253. data/doc/lib/LogicalFunction_rb.html +5 -3
  254. data/doc/lib/LogicalOperation_rb.html +5 -3
  255. data/doc/lib/MacroTable_rb.html +5 -3
  256. data/doc/lib/MessageHandler_rb.html +5 -3
  257. data/doc/lib/ProjectFileParser_rb.html +5 -3
  258. data/doc/lib/ProjectFileScanner_rb.html +5 -3
  259. data/doc/lib/Project_rb.html +5 -3
  260. data/doc/lib/PropertyList_rb.html +5 -3
  261. data/doc/lib/PropertySet_rb.html +5 -3
  262. data/doc/lib/PropertyTreeNode_rb.html +5 -3
  263. data/doc/lib/Query_rb.html +5 -3
  264. data/doc/lib/RTFHandlers_rb.html +5 -3
  265. data/doc/lib/RTFNavigator_rb.html +5 -3
  266. data/doc/lib/RTFQuery_rb.html +5 -3
  267. data/doc/lib/RTFReportLink_rb.html +5 -3
  268. data/doc/lib/RTFReport_rb.html +5 -3
  269. data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
  270. data/doc/lib/RealFormat_rb.html +5 -3
  271. data/doc/lib/ResourceScenario_rb.html +5 -3
  272. data/doc/lib/Resource_rb.html +5 -3
  273. data/doc/lib/RichTextDocument_rb.html +5 -3
  274. data/doc/lib/RichTextElement_rb.html +5 -3
  275. data/doc/lib/RichTextFunctionExample_rb.html +5 -3
  276. data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
  277. data/doc/lib/RichTextParser_rb.html +5 -3
  278. data/doc/lib/RichTextScanner_rb.html +5 -3
  279. data/doc/lib/RichTextSnip_rb.html +5 -3
  280. data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
  281. data/doc/lib/RichText_rb.html +5 -3
  282. data/doc/lib/RuntimeConfig_rb.html +5 -3
  283. data/doc/lib/ScenarioData_rb.html +5 -3
  284. data/doc/lib/Scenario_rb.html +5 -3
  285. data/doc/lib/Scoreboard_rb.html +7 -3
  286. data/doc/lib/SheetHandlerBase_rb.html +5 -3
  287. data/doc/lib/SheetReceiver_rb.html +5 -3
  288. data/doc/lib/SheetSender_rb.html +5 -3
  289. data/doc/lib/ShiftAssignments_rb.html +5 -3
  290. data/doc/lib/ShiftScenario_rb.html +5 -3
  291. data/doc/lib/Shift_rb.html +5 -3
  292. data/doc/lib/SimpleQueryExpander_rb.html +5 -3
  293. data/doc/lib/SourceFileInfo_rb.html +5 -3
  294. data/doc/lib/StatusSheetReceiver_rb.html +5 -3
  295. data/doc/lib/StatusSheetSender_rb.html +5 -3
  296. data/doc/lib/SyntaxReference_rb.html +5 -3
  297. data/doc/lib/TOCEntry_rb.html +5 -3
  298. data/doc/lib/TableColumnDefinition_rb.html +5 -3
  299. data/doc/lib/TableOfContents_rb.html +5 -3
  300. data/doc/lib/TaskDependency_rb.html +5 -3
  301. data/doc/lib/TaskJuggler_rb.html +5 -3
  302. data/doc/lib/TaskScenario_rb.html +5 -3
  303. data/doc/lib/Task_rb.html +5 -3
  304. data/doc/lib/TextFormatter_rb.html +6 -4
  305. data/doc/lib/TextParser/Pattern_rb.html +5 -3
  306. data/doc/lib/TextParser/Rule_rb.html +5 -3
  307. data/doc/lib/TextParser/StackElement_rb.html +5 -3
  308. data/doc/lib/TextParser/State_rb.html +6 -4
  309. data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
  310. data/doc/lib/TextParser_rb.html +5 -3
  311. data/doc/lib/TextScanner_rb.html +5 -3
  312. data/doc/lib/TimeSheetReceiver_rb.html +5 -3
  313. data/doc/lib/TimeSheetSender_rb.html +5 -3
  314. data/doc/lib/TimeSheetSummary_rb.html +6 -4
  315. data/doc/lib/TimeSheets_rb.html +5 -3
  316. data/doc/lib/Tj3AppBase_rb.html +5 -3
  317. data/doc/lib/Tj3Config_rb.html +5 -3
  318. data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
  319. data/doc/lib/TjException_rb.html +5 -3
  320. data/doc/lib/TjTime_rb.html +5 -3
  321. data/doc/lib/TjpExample_rb.html +5 -3
  322. data/doc/lib/TjpSyntaxRules_rb.html +5 -3
  323. data/doc/lib/URLParameter_rb.html +5 -3
  324. data/doc/lib/UTF8String_rb.html +5 -3
  325. data/doc/lib/UserManual_rb.html +5 -3
  326. data/doc/lib/VimSyntax_rb.html +6 -4
  327. data/doc/lib/WorkingHours_rb.html +5 -3
  328. data/doc/lib/XMLDocument_rb.html +5 -3
  329. data/doc/lib/XMLElement_rb.html +5 -3
  330. data/doc/lib/daemon/Daemon_rb.html +5 -3
  331. data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
  332. data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
  333. data/doc/lib/daemon/ProjectServer_rb.html +5 -3
  334. data/doc/lib/daemon/ReportServer_rb.html +5 -3
  335. data/doc/lib/daemon/ReportServlet_rb.html +69 -0
  336. data/doc/lib/daemon/WebServer_rb.html +9 -3
  337. data/doc/lib/daemon/WelcomePage_rb.html +71 -0
  338. data/doc/lib/deep_copy_rb.html +5 -3
  339. data/doc/lib/reports/CSVFile_rb.html +5 -3
  340. data/doc/lib/reports/CollisionDetector_rb.html +5 -3
  341. data/doc/lib/reports/ColumnTable_rb.html +5 -3
  342. data/doc/lib/reports/GanttChart_rb.html +5 -3
  343. data/doc/lib/reports/GanttContainer_rb.html +5 -3
  344. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
  345. data/doc/lib/reports/GanttHeader_rb.html +5 -3
  346. data/doc/lib/reports/GanttLine_rb.html +5 -3
  347. data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
  348. data/doc/lib/reports/GanttMilestone_rb.html +5 -3
  349. data/doc/lib/reports/GanttRouter_rb.html +5 -3
  350. data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
  351. data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
  352. data/doc/lib/reports/Navigator_rb.html +5 -3
  353. data/doc/lib/reports/NikuReport_rb.html +5 -3
  354. data/doc/lib/reports/ReportBase_rb.html +5 -3
  355. data/doc/lib/reports/ReportContext_rb.html +5 -3
  356. data/doc/lib/reports/ReportTableCell_rb.html +5 -3
  357. data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
  358. data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
  359. data/doc/lib/reports/ReportTableLine_rb.html +5 -3
  360. data/doc/lib/reports/ReportTable_rb.html +5 -3
  361. data/doc/lib/reports/Report_rb.html +5 -3
  362. data/doc/lib/reports/ResourceListRE_rb.html +5 -3
  363. data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
  364. data/doc/lib/reports/TableReport_rb.html +5 -3
  365. data/doc/lib/reports/TaskListRE_rb.html +5 -3
  366. data/doc/lib/reports/TextReport_rb.html +5 -3
  367. data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
  368. data/doc/lib/reports/TjpExportRE_rb.html +5 -3
  369. data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
  370. data/doc/lib/tj3client_rb.html +5 -3
  371. data/doc/lib/tj3d_rb.html +6 -4
  372. data/doc/lib/tj3man_rb.html +5 -3
  373. data/doc/lib/tj3ss_receiver_rb.html +5 -3
  374. data/doc/lib/tj3ss_sender_rb.html +5 -3
  375. data/doc/lib/tj3ts_receiver_rb.html +5 -3
  376. data/doc/lib/tj3ts_sender_rb.html +5 -3
  377. data/doc/lib/tj3ts_summary_rb.html +5 -3
  378. data/examples/tutorial.tjp +13 -5
  379. data/gem_spec.rb +3 -0
  380. data/lib/Account.rb +2 -1
  381. data/lib/AccountScenario.rb +2 -1
  382. data/lib/Allocation.rb +2 -1
  383. data/lib/AppConfig.rb +2 -1
  384. data/lib/AttributeBase.rb +19 -5
  385. data/lib/AttributeDefinition.rb +2 -1
  386. data/lib/Attributes.rb +49 -38
  387. data/lib/BatchProcessor.rb +2 -1
  388. data/lib/Booking.rb +2 -1
  389. data/lib/Charge.rb +2 -1
  390. data/lib/ChargeSet.rb +2 -1
  391. data/lib/DataCache.rb +15 -1
  392. data/lib/FileList.rb +2 -1
  393. data/lib/HTMLDocument.rb +2 -1
  394. data/lib/Interval.rb +2 -1
  395. data/lib/IntervalList.rb +100 -0
  396. data/lib/Journal.rb +8 -2
  397. data/lib/KeywordArray.rb +2 -1
  398. data/lib/KeywordDocumentation.rb +10 -6
  399. data/lib/Limits.rb +2 -1
  400. data/lib/Log.rb +3 -2
  401. data/lib/LogFile.rb +2 -1
  402. data/lib/LogicalExpression.rb +2 -1
  403. data/lib/LogicalFunction.rb +2 -1
  404. data/lib/LogicalOperation.rb +2 -1
  405. data/lib/MacroTable.rb +2 -1
  406. data/lib/MessageHandler.rb +2 -1
  407. data/lib/Project.rb +92 -25
  408. data/lib/ProjectFileParser.rb +7 -2
  409. data/lib/ProjectFileScanner.rb +2 -1
  410. data/lib/PropertyList.rb +2 -1
  411. data/lib/PropertySet.rb +2 -6
  412. data/lib/PropertyTreeNode.rb +22 -44
  413. data/lib/Query.rb +32 -13
  414. data/lib/RTFHandlers.rb +2 -1
  415. data/lib/RTFNavigator.rb +2 -1
  416. data/lib/RTFQuery.rb +3 -2
  417. data/lib/RTFReport.rb +2 -1
  418. data/lib/RTFReportLink.rb +2 -1
  419. data/lib/RTFWithQuerySupport.rb +2 -1
  420. data/lib/RealFormat.rb +2 -1
  421. data/lib/Resource.rb +2 -1
  422. data/lib/ResourceScenario.rb +35 -14
  423. data/lib/RichText.rb +2 -1
  424. data/lib/RichTextDocument.rb +2 -1
  425. data/lib/RichTextElement.rb +2 -1
  426. data/lib/RichTextFunctionExample.rb +2 -1
  427. data/lib/RichTextFunctionHandler.rb +2 -1
  428. data/lib/RichTextParser.rb +2 -1
  429. data/lib/RichTextScanner.rb +2 -1
  430. data/lib/RichTextSnip.rb +2 -1
  431. data/lib/RichTextSyntaxRules.rb +2 -1
  432. data/lib/RuntimeConfig.rb +2 -1
  433. data/lib/Scenario.rb +2 -1
  434. data/lib/ScenarioData.rb +2 -1
  435. data/lib/Scoreboard.rb +27 -8
  436. data/lib/SheetHandlerBase.rb +2 -1
  437. data/lib/SheetReceiver.rb +2 -1
  438. data/lib/SheetSender.rb +2 -1
  439. data/lib/Shift.rb +2 -1
  440. data/lib/ShiftAssignments.rb +2 -1
  441. data/lib/ShiftScenario.rb +2 -1
  442. data/lib/SimpleQueryExpander.rb +2 -1
  443. data/lib/SourceFileInfo.rb +2 -1
  444. data/lib/StatusSheetReceiver.rb +2 -1
  445. data/lib/StatusSheetSender.rb +2 -1
  446. data/lib/SyntaxReference.rb +2 -1
  447. data/lib/TOCEntry.rb +2 -1
  448. data/lib/TableColumnDefinition.rb +9 -2
  449. data/lib/TableOfContents.rb +2 -1
  450. data/lib/Task.rb +2 -1
  451. data/lib/TaskDependency.rb +2 -1
  452. data/lib/TaskJuggler.rb +8 -6
  453. data/lib/TaskScenario.rb +337 -153
  454. data/lib/TextFormatter.rb +3 -2
  455. data/lib/TextParser.rb +7 -2
  456. data/lib/TextParser/Pattern.rb +2 -1
  457. data/lib/TextParser/Rule.rb +2 -1
  458. data/lib/TextParser/StackElement.rb +2 -1
  459. data/lib/TextParser/State.rb +3 -2
  460. data/lib/TextParser/TokenDoc.rb +2 -1
  461. data/lib/TextScanner.rb +12 -5
  462. data/lib/TimeSheetReceiver.rb +2 -1
  463. data/lib/TimeSheetSender.rb +2 -1
  464. data/lib/TimeSheetSummary.rb +3 -2
  465. data/lib/TimeSheets.rb +2 -1
  466. data/lib/Tj3AppBase.rb +6 -5
  467. data/lib/Tj3Config.rb +5 -4
  468. data/lib/Tj3SheetAppBase.rb +2 -1
  469. data/lib/TjException.rb +2 -1
  470. data/lib/TjTime.rb +2 -1
  471. data/lib/TjpExample.rb +2 -1
  472. data/lib/TjpSyntaxRules.rb +264 -65
  473. data/lib/URLParameter.rb +2 -1
  474. data/lib/UTF8String.rb +2 -1
  475. data/lib/UserManual.rb +2 -1
  476. data/lib/VimSyntax.rb +3 -2
  477. data/lib/WorkingHours.rb +2 -1
  478. data/lib/XMLDocument.rb +2 -1
  479. data/lib/XMLElement.rb +2 -1
  480. data/lib/daemon/Daemon.rb +3 -1
  481. data/lib/daemon/ProcessIntercom.rb +3 -1
  482. data/lib/daemon/ProjectBroker.rb +84 -32
  483. data/lib/daemon/ProjectServer.rb +5 -3
  484. data/lib/daemon/ReportServer.rb +8 -5
  485. data/lib/daemon/ReportServlet.rb +166 -0
  486. data/lib/daemon/WebServer.rb +6 -150
  487. data/lib/daemon/WelcomePage.rb +80 -0
  488. data/lib/deep_copy.rb +2 -1
  489. data/lib/reports/CSVFile.rb +2 -1
  490. data/lib/reports/CollisionDetector.rb +2 -1
  491. data/lib/reports/ColumnTable.rb +2 -1
  492. data/lib/reports/GanttChart.rb +2 -1
  493. data/lib/reports/GanttContainer.rb +3 -4
  494. data/lib/reports/GanttHeader.rb +2 -1
  495. data/lib/reports/GanttHeaderScaleItem.rb +2 -1
  496. data/lib/reports/GanttLine.rb +12 -10
  497. data/lib/reports/GanttLoadStack.rb +2 -1
  498. data/lib/reports/GanttMilestone.rb +3 -3
  499. data/lib/reports/GanttRouter.rb +4 -1
  500. data/lib/reports/GanttTaskBar.rb +9 -7
  501. data/lib/reports/HTMLGraphics.rb +2 -1
  502. data/lib/reports/Navigator.rb +2 -1
  503. data/lib/reports/NikuReport.rb +79 -49
  504. data/lib/reports/Report.rb +42 -10
  505. data/lib/reports/ReportBase.rb +2 -1
  506. data/lib/reports/ReportContext.rb +2 -1
  507. data/lib/reports/ReportTable.rb +2 -1
  508. data/lib/reports/ReportTableCell.rb +63 -28
  509. data/lib/reports/ReportTableColumn.rb +2 -1
  510. data/lib/reports/ReportTableLegend.rb +5 -5
  511. data/lib/reports/ReportTableLine.rb +2 -1
  512. data/lib/reports/ResourceListRE.rb +2 -1
  513. data/lib/reports/StatusSheetReport.rb +4 -2
  514. data/lib/reports/TableReport.rb +42 -38
  515. data/lib/reports/TaskListRE.rb +4 -2
  516. data/lib/reports/TextReport.rb +2 -1
  517. data/lib/reports/TimeSheetReport.rb +4 -2
  518. data/lib/reports/TjpExportRE.rb +4 -2
  519. data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
  520. data/lib/tj3client.rb +19 -36
  521. data/lib/tj3d.rb +6 -2
  522. data/lib/tj3man.rb +4 -3
  523. data/lib/tj3ss_receiver.rb +2 -1
  524. data/lib/tj3ss_sender.rb +2 -1
  525. data/lib/tj3ts_receiver.rb +2 -1
  526. data/lib/tj3ts_sender.rb +2 -1
  527. data/lib/tj3ts_summary.rb +2 -1
  528. data/manual/Day_To_Day_Juggling +36 -0
  529. data/manual/How_To_Contribute +9 -4
  530. data/manual/Installation +10 -3
  531. data/manual/TaskJuggler_Internals +0 -2
  532. data/manual/Tutorial +25 -3
  533. data/prj_cfg.rb +4 -2
  534. data/spec/IntervalList_spec.rb +138 -0
  535. data/spec/ProjectBroker_spec.rb +133 -0
  536. data/tasks/changelog.rake +41 -24
  537. data/tasks/csts.rake +1 -0
  538. data/tasks/gem.rake +1 -0
  539. data/tasks/rcov.rake +1 -1
  540. data/tasks/spec.rake +7 -0
  541. data/tasks/test.rake +1 -0
  542. data/test/MessageChecker.rb +2 -1
  543. data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
  544. data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
  545. data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
  546. data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
  547. data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
  548. data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
  549. data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
  550. data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
  551. data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
  552. data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
  553. data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
  554. data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
  555. data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
  556. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
  557. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
  558. data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
  559. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
  560. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
  561. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
  562. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
  563. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
  564. data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
  565. data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
  566. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
  567. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
  568. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
  569. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
  570. data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
  571. data/test/TestSuite/StatusSheets/sender.log +256 -0
  572. data/test/TestSuite/StatusSheets/statussheets.log +9 -0
  573. data/test/TestSuite/StatusSheets/tj3d.log +395 -0
  574. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
  575. data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
  576. data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
  577. data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
  578. data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
  579. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
  580. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
  581. data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
  582. data/test/all.rb +2 -4
  583. data/test/test_BatchProcessor.rb +2 -1
  584. data/test/test_CSV-Reports.rb +34 -23
  585. data/test/test_CSVFile.rb +2 -1
  586. data/test/test_CollisionDetector.rb +3 -2
  587. data/test/test_Journal.rb +2 -1
  588. data/test/test_Limits.rb +2 -1
  589. data/test/test_LogicalExpression.rb +2 -1
  590. data/test/test_MacroTable.rb +2 -1
  591. data/test/test_Project.rb +3 -2
  592. data/test/test_ProjectFileScanner.rb +2 -1
  593. data/test/test_PropertySet.rb +2 -1
  594. data/test/test_Query.rb +2 -1
  595. data/test/test_RealFormat.rb +2 -1
  596. data/test/test_ReportGenerator.rb +2 -1
  597. data/test/test_RichText.rb +2 -1
  598. data/test/test_Scheduler.rb +2 -1
  599. data/test/test_ShiftAssignments.rb +2 -1
  600. data/test/test_SimpleQueryExpander.rb +2 -1
  601. data/test/test_Syntax.rb +2 -1
  602. data/test/test_TextFormatter.rb +3 -2
  603. data/test/test_TjTime.rb +2 -1
  604. data/test/test_TjpExample.rb +2 -1
  605. data/test/test_URLParameter.rb +2 -1
  606. data/test/test_UTF8String.rb +2 -1
  607. data/test/test_WorkingHours.rb +2 -1
  608. data/test/test_deep_copy.rb +2 -1
  609. metadata +74 -20
  610. data/doc/StringIO.html +0 -595
  611. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
  612. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
  613. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
data/doc/COPYING.html CHANGED
@@ -80,6 +80,8 @@
80
80
 
81
81
  <li><a href="./TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
82
82
 
83
+ <li><a href="./TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
84
+
83
85
  <li><a href="./TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
84
86
 
85
87
  <li><a href="./TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -158,6 +160,8 @@
158
160
 
159
161
  <li><a href="./TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
160
162
 
163
+ <li><a href="./TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
164
+
161
165
  <li><a href="./TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
162
166
 
163
167
  <li><a href="./TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -190,6 +194,8 @@
190
194
 
191
195
  <li><a href="./TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
192
196
 
197
+ <li><a href="./TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
198
+
193
199
  <li><a href="./TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
194
200
 
195
201
  <li><a href="./TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -470,6 +476,8 @@
470
476
 
471
477
  <li><a href="./TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
472
478
 
479
+ <li><a href="./TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
480
+
473
481
  <li><a href="./TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
474
482
 
475
483
  <li><a href="./TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -496,8 +504,6 @@
496
504
 
497
505
  <li><a href="./String.html">String</a></li>
498
506
 
499
- <li><a href="./StringIO.html">StringIO</a></li>
500
-
501
507
  </ul>
502
508
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
503
509
  </div>
data/doc/Object.html CHANGED
@@ -133,6 +133,8 @@
133
133
 
134
134
  <li><a href="./TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
135
135
 
136
+ <li><a href="./TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
137
+
136
138
  <li><a href="./TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
137
139
 
138
140
  <li><a href="./TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -211,6 +213,8 @@
211
213
 
212
214
  <li><a href="./TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
213
215
 
216
+ <li><a href="./TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
217
+
214
218
  <li><a href="./TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
215
219
 
216
220
  <li><a href="./TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -243,6 +247,8 @@
243
247
 
244
248
  <li><a href="./TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
245
249
 
250
+ <li><a href="./TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
251
+
246
252
  <li><a href="./TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
247
253
 
248
254
  <li><a href="./TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -523,6 +529,8 @@
523
529
 
524
530
  <li><a href="./TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
525
531
 
532
+ <li><a href="./TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
533
+
526
534
  <li><a href="./TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
527
535
 
528
536
  <li><a href="./TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -549,8 +557,6 @@
549
557
 
550
558
  <li><a href="./String.html">String</a></li>
551
559
 
552
- <li><a href="./StringIO.html">StringIO</a></li>
553
-
554
560
  </ul>
555
561
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
556
562
  </div>
@@ -628,45 +634,45 @@ This is a variant of Object#clone that returns a deep copy of an object.
628
634
  <div class="method-source-code"
629
635
  id="deep-clone-source">
630
636
  <pre>
631
- <span class="ruby-comment cmt"># File lib/deep_copy.rb, line 35</span>
632
- 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
633
- 36: <span class="ruby-comment cmt"># We can't clone frozen objects. So just return a reference to them.</span>
634
- 37: <span class="ruby-comment cmt"># Built-in classed can't be cloned either. The check below is probably</span>
635
- 38: <span class="ruby-comment cmt"># cheaper than the frequent (hiddent) exceptions from those objects.</span>
636
- 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>
637
- 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>) <span class="ruby-operator">||</span> <span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>)
638
- 41:
639
- 42: <span class="ruby-comment cmt"># In case we have loops in our graph, we return references, not</span>
640
- 43: <span class="ruby-comment cmt"># deep-copied objects.</span>
641
- 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>
642
- 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>)
643
- 46: <span class="ruby-keyword kw">else</span>
644
- 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>)
645
- 48: <span class="ruby-keyword kw">end</span>
646
- 49:
647
- 50: <span class="ruby-comment cmt"># Clone the current Object (shallow copy with internal state)</span>
648
- 51: <span class="ruby-keyword kw">begin</span>
649
- 52: <span class="ruby-ivar">@clonedObject</span> = <span class="ruby-identifier">clone</span>
650
- 53: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TypeError</span>
651
- 54: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
652
- 55: <span class="ruby-keyword kw">end</span>
653
- 56: <span class="ruby-comment cmt"># Recursively copy all instance variables.</span>
654
- 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>
655
- 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>
656
- 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>)
657
- 60: <span class="ruby-keyword kw">end</span>
658
- 61: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Array</span>)
659
- 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> }
660
- 63: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>)
661
- 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>) }
662
- 65: <span class="ruby-keyword kw">end</span>
663
- 66: <span class="ruby-comment cmt"># Remove the @clonedObject again.</span>
664
- 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>
665
- 68: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value str">'@clonedObject'</span>)
666
- 69: <span class="ruby-keyword kw">else</span>
667
- 70: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value">:@clonedObject</span>)
668
- 71: <span class="ruby-keyword kw">end</span>
669
- 72: <span class="ruby-keyword kw">end</span></pre>
637
+ <span class="ruby-comment cmt"># File lib/deep_copy.rb, line 36</span>
638
+ 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">deep_clone</span>
639
+ 37: <span class="ruby-comment cmt"># We can't clone frozen objects. So just return a reference to them.</span>
640
+ 38: <span class="ruby-comment cmt"># Built-in classed can't be cloned either. The check below is probably</span>
641
+ 39: <span class="ruby-comment cmt"># cheaper than the frequent (hiddent) exceptions from those objects.</span>
642
+ 40: <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>
643
+ 41: <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>) <span class="ruby-operator">||</span> <span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Symbol</span>)
644
+ 42:
645
+ 43: <span class="ruby-comment cmt"># In case we have loops in our graph, we return references, not</span>
646
+ 44: <span class="ruby-comment cmt"># deep-copied objects.</span>
647
+ 45: <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>
648
+ 46: <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>)
649
+ 47: <span class="ruby-keyword kw">else</span>
650
+ 48: <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>)
651
+ 49: <span class="ruby-keyword kw">end</span>
652
+ 50:
653
+ 51: <span class="ruby-comment cmt"># Clone the current Object (shallow copy with internal state)</span>
654
+ 52: <span class="ruby-keyword kw">begin</span>
655
+ 53: <span class="ruby-ivar">@clonedObject</span> = <span class="ruby-identifier">clone</span>
656
+ 54: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TypeError</span>
657
+ 55: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">self</span>
658
+ 56: <span class="ruby-keyword kw">end</span>
659
+ 57: <span class="ruby-comment cmt"># Recursively copy all instance variables.</span>
660
+ 58: <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>
661
+ 59: <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>
662
+ 60: <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>)
663
+ 61: <span class="ruby-keyword kw">end</span>
664
+ 62: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Array</span>)
665
+ 63: <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> }
666
+ 64: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">kind_of?</span>(<span class="ruby-constant">Hash</span>)
667
+ 65: <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>) }
668
+ 66: <span class="ruby-keyword kw">end</span>
669
+ 67: <span class="ruby-comment cmt"># Remove the @clonedObject again.</span>
670
+ 68: <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>
671
+ 69: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value str">'@clonedObject'</span>)
672
+ 70: <span class="ruby-keyword kw">else</span>
673
+ 71: <span class="ruby-identifier">remove_instance_variable</span>(<span class="ruby-value">:@clonedObject</span>)
674
+ 72: <span class="ruby-keyword kw">end</span>
675
+ 73: <span class="ruby-keyword kw">end</span></pre>
670
676
  </div>
671
677
 
672
678
  </div>
@@ -697,49 +703,49 @@ This is a variant of Object#clone that returns a deep copy of an object.
697
703
  <div class="method-source-code"
698
704
  id="main-source">
699
705
  <pre>
700
- <span class="ruby-comment cmt"># File lib/taskjuggler3.rb, line 113</span>
701
- 113: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
702
- 114: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-value">1</span>
703
- 115: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">false</span>
704
- 116: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
705
- 117: <span class="ruby-ivar">@checkSyntax</span> = <span class="ruby-keyword kw">false</span>
706
- 118: <span class="ruby-ivar">@noReports</span> = <span class="ruby-keyword kw">false</span>
707
- 119: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
708
- 120: <span class="ruby-ivar">@timeSheets</span> = []
709
- 121: <span class="ruby-ivar">@statusSheets</span> = []
710
- 122:
711
- 123: <span class="ruby-comment cmt"># Install signal handler to exit gracefully on CTRL-C.</span>
712
- 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>
713
- 125: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nAborting on user request!&quot;</span>
714
- 126: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
715
- 127: <span class="ruby-keyword kw">end</span>
716
- 128:
717
- 129: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">processArguments</span>(<span class="ruby-constant">ARGV</span>)
718
- 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>)
719
- 131: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">maxCpuCores</span> = <span class="ruby-ivar">@maxCpuCores</span>
720
- 132: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">warnTsDeltas</span> = <span class="ruby-ivar">@warnTsDeltas</span>
721
- 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>
722
- 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>)
723
- 135:
724
- 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>
725
- 137:
726
- 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>
727
- 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>
728
- 140: <span class="ruby-keyword kw">end</span>
729
- 141:
730
- 142: <span class="ruby-comment cmt"># The checks of time and status sheets is probably only used for debugging.</span>
731
- 143: <span class="ruby-comment cmt"># Normally, this function is provided by tj3client.</span>
732
- 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>
733
- 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>
734
- 146: <span class="ruby-keyword kw">end</span>
735
- 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>
736
- 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>
737
- 149: <span class="ruby-keyword kw">end</span>
738
- 150:
739
- 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>
740
- 152:
741
- 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>
742
- 154: <span class="ruby-keyword kw">end</span></pre>
706
+ <span class="ruby-comment cmt"># File lib/tj3.rb, line 114</span>
707
+ 114: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
708
+ 115: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-value">1</span>
709
+ 116: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">false</span>
710
+ 117: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">false</span>
711
+ 118: <span class="ruby-ivar">@checkSyntax</span> = <span class="ruby-keyword kw">false</span>
712
+ 119: <span class="ruby-ivar">@noReports</span> = <span class="ruby-keyword kw">false</span>
713
+ 120: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
714
+ 121: <span class="ruby-ivar">@timeSheets</span> = []
715
+ 122: <span class="ruby-ivar">@statusSheets</span> = []
716
+ 123:
717
+ 124: <span class="ruby-comment cmt"># Install signal handler to exit gracefully on CTRL-C.</span>
718
+ 125: <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>
719
+ 126: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;\nAborting on user request!&quot;</span>
720
+ 127: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
721
+ 128: <span class="ruby-keyword kw">end</span>
722
+ 129:
723
+ 130: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">processArguments</span>(<span class="ruby-constant">ARGV</span>)
724
+ 131: <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>)
725
+ 132: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">maxCpuCores</span> = <span class="ruby-ivar">@maxCpuCores</span>
726
+ 133: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">warnTsDeltas</span> = <span class="ruby-ivar">@warnTsDeltas</span>
727
+ 134: <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>
728
+ 135: <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>)
729
+ 136:
730
+ 137: <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>
731
+ 138:
732
+ 139: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">schedule</span>
733
+ 140: <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>
734
+ 141: <span class="ruby-keyword kw">end</span>
735
+ 142:
736
+ 143: <span class="ruby-comment cmt"># The checks of time and status sheets is probably only used for debugging.</span>
737
+ 144: <span class="ruby-comment cmt"># Normally, this function is provided by tj3client.</span>
738
+ 145: <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>
739
+ 146: <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>
740
+ 147: <span class="ruby-keyword kw">end</span>
741
+ 148: <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>
742
+ 149: <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>
743
+ 150: <span class="ruby-keyword kw">end</span>
744
+ 151:
745
+ 152: <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>
746
+ 153:
747
+ 154: <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>
748
+ 155: <span class="ruby-keyword kw">end</span></pre>
743
749
  </div>
744
750
 
745
751
  </div>
@@ -770,29 +776,29 @@ This is a variant of Object#clone that returns a deep copy of an object.
770
776
  <div class="method-source-code"
771
777
  id="main-source">
772
778
  <pre>
773
- <span class="ruby-comment cmt"># File lib/tj3man.rb, line 64</span>
774
- 64: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
775
- 65: <span class="ruby-identifier">args</span> = <span class="ruby-constant">Arguments</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">ARGV</span>)
776
- 66:
777
- 67: <span class="ruby-identifier">man</span> = <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">SyntaxReference</span>.<span class="ruby-identifier">new</span>
778
- 68: <span class="ruby-identifier">keywords</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">keywords</span>
779
- 69:
780
- 70: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">manual</span>
781
- 71: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">UserManual</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">generate</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">directory</span>)
782
- 72: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">empty?</span>
783
- 73: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">man</span>.<span class="ruby-identifier">all</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
784
- 74: <span class="ruby-keyword kw">else</span>
785
- 75: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
786
- 76: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">man</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">keyword</span>)
787
- 77: <span class="ruby-keyword kw">end</span>
788
- 78: <span class="ruby-keyword kw">end</span>
789
- 79:
790
- 80: <span class="ruby-comment cmt">#$stderr.puts &quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot; +</span>
791
- 81: <span class="ruby-comment cmt"># &quot;#{AppConfig.packageInfo}\n\n&quot;</span>
792
- 82: <span class="ruby-comment cmt">#puts man.to_s(args.keyword)</span>
793
- 83:
794
- 84: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
795
- 85: <span class="ruby-keyword kw">end</span></pre>
779
+ <span class="ruby-comment cmt"># File lib/tj3man.rb, line 65</span>
780
+ 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
781
+ 66: <span class="ruby-identifier">args</span> = <span class="ruby-constant">Arguments</span>.<span class="ruby-identifier">new</span>(<span class="ruby-constant">ARGV</span>)
782
+ 67:
783
+ 68: <span class="ruby-identifier">man</span> = <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">SyntaxReference</span>.<span class="ruby-identifier">new</span>
784
+ 69: <span class="ruby-identifier">keywords</span> = <span class="ruby-identifier">args</span>.<span class="ruby-identifier">keywords</span>
785
+ 70:
786
+ 71: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">args</span>.<span class="ruby-identifier">manual</span>
787
+ 72: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">UserManual</span>.<span class="ruby-identifier">new</span>.<span class="ruby-identifier">generate</span>(<span class="ruby-identifier">args</span>.<span class="ruby-identifier">directory</span>)
788
+ 73: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">empty?</span>
789
+ 74: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">man</span>.<span class="ruby-identifier">all</span>.<span class="ruby-identifier">join</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
790
+ 75: <span class="ruby-keyword kw">else</span>
791
+ 76: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
792
+ 77: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">man</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">keyword</span>)
793
+ 78: <span class="ruby-keyword kw">end</span>
794
+ 79: <span class="ruby-keyword kw">end</span>
795
+ 80:
796
+ 81: <span class="ruby-comment cmt">#$stderr.puts &quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot; +</span>
797
+ 82: <span class="ruby-comment cmt"># &quot;#{AppConfig.packageInfo}\n\n&quot;</span>
798
+ 83: <span class="ruby-comment cmt">#puts man.to_s(args.keyword)</span>
799
+ 84:
800
+ 85: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
801
+ 86: <span class="ruby-keyword kw">end</span></pre>
796
802
  </div>
797
803
 
798
804
  </div>
@@ -823,98 +829,98 @@ This is a variant of Object#clone that returns a deep copy of an object.
823
829
  <div class="method-source-code"
824
830
  id="process-rguments-source">
825
831
  <pre>
826
- <span class="ruby-comment cmt"># File lib/taskjuggler3.rb, line 21</span>
827
- 21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
828
- 22: <span class="ruby-identifier">opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span>
829
- 23:
830
- 24: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
831
- 25: <span class="ruby-node">&quot;#{AppConfig.packageInfo}\n\n&quot;</span> <span class="ruby-operator">+</span>
832
- 26: <span class="ruby-node">&quot;Copyright (c) #{AppConfig.copyright.join(', ')}&quot;</span> <span class="ruby-operator">+</span>
833
- 27: <span class="ruby-node">&quot; by #{AppConfig.authors.join(', ')}\n\n&quot;</span> <span class="ruby-operator">+</span>
834
- 28: <span class="ruby-node">&quot;#{AppConfig.license}\n&quot;</span> <span class="ruby-operator">+</span>
835
- 29: <span class="ruby-node">&quot;For more info about #{AppConfig.softwareName} see &quot;</span> <span class="ruby-operator">+</span>
836
- 30: <span class="ruby-node">&quot;#{AppConfig.contact}\n\n&quot;</span> <span class="ruby-operator">+</span>
837
- 31: <span class="ruby-node">&quot;Usage: #{AppConfig.appName} [options] file.tjp &quot;</span> <span class="ruby-operator">+</span>
838
- 32: <span class="ruby-value str">&quot;[ file1.tji ... ]&quot;</span>
839
- 33: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
840
- 34: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--debuglevel N'</span>, <span class="ruby-constant">Integer</span>, <span class="ruby-value str">&quot;Verbosity of debug output&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
841
- 35: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">level</span> = <span class="ruby-identifier">arg</span>
842
- 36: <span class="ruby-keyword kw">end</span>
843
- 37: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--debugmodules x,y,z'</span>, <span class="ruby-constant">Array</span>,
844
- 38: <span class="ruby-value str">'Restrict debug output to a list of modules'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
845
- 39: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">segments</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">','</span>)
846
- 40: <span class="ruby-keyword kw">end</span>
847
- 41: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--silent'</span>, <span class="ruby-value str">&quot;Don't show program and progress information&quot;</span>) <span class="ruby-keyword kw">do</span>
848
- 42: <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">true</span>
849
- 43: <span class="ruby-keyword kw">end</span>
850
- 44: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-f'</span>, <span class="ruby-value str">'--force-reports'</span>,
851
- 45: <span class="ruby-value str">'Generate reports despite scheduling errors'</span>) <span class="ruby-keyword kw">do</span>
852
- 46: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">true</span>
853
- 47: <span class="ruby-keyword kw">end</span>
854
- 48: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--check-time-sheet &lt;tji-file&gt;'</span>, <span class="ruby-constant">String</span>,
855
- 49: <span class="ruby-value str">&quot;Check the given time sheet&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
856
- 50: <span class="ruby-ivar">@timeSheets</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span>
857
- 51: <span class="ruby-keyword kw">end</span>
858
- 52: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--check-status-sheet &lt;tji-file&gt;'</span>, <span class="ruby-constant">String</span>,
859
- 53: <span class="ruby-value str">&quot;Check the given status sheet&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
860
- 54: <span class="ruby-ivar">@statusSheets</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span>
861
- 55: <span class="ruby-keyword kw">end</span>
862
- 56: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--warn-ts-deltas'</span>,
863
- 57: <span class="ruby-value str">'Turn on warnings for requested changes in time sheets'</span>) <span class="ruby-keyword kw">do</span>
864
- 58: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">true</span>
865
- 59: <span class="ruby-keyword kw">end</span>
866
- 60: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--check-syntax'</span>,
867
- 61: <span class="ruby-value str">'Only parse the input files and check the syntax.'</span>) <span class="ruby-keyword kw">do</span>
868
- 62: <span class="ruby-ivar">@checkSyntax</span> = <span class="ruby-keyword kw">true</span>
869
- 63: <span class="ruby-keyword kw">end</span>
870
- 64: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--no-reports'</span>,
871
- 65: <span class="ruby-value str">'Just schedule the project, but don\t generate any reports.'</span>) <span class="ruby-keyword kw">do</span>
872
- 66: <span class="ruby-ivar">@noReports</span> = <span class="ruby-keyword kw">true</span>
873
- 67: <span class="ruby-keyword kw">end</span>
874
- 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>,
875
- 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>
876
- 70: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-identifier">arg</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
877
- 71: <span class="ruby-keyword kw">end</span>
878
- 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>
879
- 73: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-identifier">arg</span>
880
- 74: <span class="ruby-keyword kw">end</span>
881
- 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>
882
- 76: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
883
- 77: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
884
- 78: <span class="ruby-keyword kw">end</span>
885
- 79:
886
- 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>
887
- 81: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
888
- 82: <span class="ruby-node">&quot;#{AppConfig.packageInfo}&quot;</span>
889
- 83: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
890
- 84: <span class="ruby-keyword kw">end</span>
891
- 85:
892
- 86: <span class="ruby-comment cmt"># Show some progress information by default</span>
893
- 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>
894
- 88: <span class="ruby-keyword kw">begin</span>
895
- 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>)
896
- 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>
897
- 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>
898
- 92: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span>
899
- 93: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
900
- 94: <span class="ruby-keyword kw">end</span>
901
- 95:
902
- 96: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
903
- 97: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
904
- 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>
905
- 99: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
906
- 100: <span class="ruby-keyword kw">end</span>
907
- 101:
908
- 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>
909
- 103: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
910
- 104: <span class="ruby-node">&quot;#{AppConfig.packageInfo}\n\n&quot;</span> <span class="ruby-operator">+</span>
911
- 105: <span class="ruby-node">&quot;Copyright (c) #{AppConfig.copyright.join(', ')}&quot;</span> <span class="ruby-operator">+</span>
912
- 106: <span class="ruby-node">&quot; by #{AppConfig.authors.join(', ')}\n\n&quot;</span> <span class="ruby-operator">+</span>
913
- 107: <span class="ruby-node">&quot;#{AppConfig.license}\n&quot;</span>
914
- 108: <span class="ruby-keyword kw">end</span>
915
- 109:
916
- 110: <span class="ruby-identifier">files</span>
917
- 111: <span class="ruby-keyword kw">end</span></pre>
832
+ <span class="ruby-comment cmt"># File lib/tj3.rb, line 22</span>
833
+ 22: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
834
+ 23: <span class="ruby-identifier">opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span>
835
+ 24:
836
+ 25: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
837
+ 26: <span class="ruby-node">&quot;#{AppConfig.packageInfo}\n\n&quot;</span> <span class="ruby-operator">+</span>
838
+ 27: <span class="ruby-node">&quot;Copyright (c) #{AppConfig.copyright.join(', ')}\n&quot;</span> <span class="ruby-operator">+</span>
839
+ 28: <span class="ruby-node">&quot; by #{AppConfig.authors.join(', ')}\n\n&quot;</span> <span class="ruby-operator">+</span>
840
+ 29: <span class="ruby-node">&quot;#{AppConfig.license}\n&quot;</span> <span class="ruby-operator">+</span>
841
+ 30: <span class="ruby-node">&quot;For more info about #{AppConfig.softwareName} see &quot;</span> <span class="ruby-operator">+</span>
842
+ 31: <span class="ruby-node">&quot;#{AppConfig.contact}\n\n&quot;</span> <span class="ruby-operator">+</span>
843
+ 32: <span class="ruby-node">&quot;Usage: #{AppConfig.appName} [options] file.tjp &quot;</span> <span class="ruby-operator">+</span>
844
+ 33: <span class="ruby-value str">&quot;[ file1.tji ... ]&quot;</span>
845
+ 34: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">&quot;&quot;</span>
846
+ 35: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--debuglevel N'</span>, <span class="ruby-constant">Integer</span>, <span class="ruby-value str">&quot;Verbosity of debug output&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
847
+ 36: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">level</span> = <span class="ruby-identifier">arg</span>
848
+ 37: <span class="ruby-keyword kw">end</span>
849
+ 38: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--debugmodules x,y,z'</span>, <span class="ruby-constant">Array</span>,
850
+ 39: <span class="ruby-value str">'Restrict debug output to a list of modules'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
851
+ 40: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">segments</span> = <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">','</span>)
852
+ 41: <span class="ruby-keyword kw">end</span>
853
+ 42: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--silent'</span>, <span class="ruby-value str">&quot;Don't show program and progress information&quot;</span>) <span class="ruby-keyword kw">do</span>
854
+ 43: <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">true</span>
855
+ 44: <span class="ruby-keyword kw">end</span>
856
+ 45: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-f'</span>, <span class="ruby-value str">'--force-reports'</span>,
857
+ 46: <span class="ruby-value str">'Generate reports despite scheduling errors'</span>) <span class="ruby-keyword kw">do</span>
858
+ 47: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">true</span>
859
+ 48: <span class="ruby-keyword kw">end</span>
860
+ 49: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--check-time-sheet &lt;tji-file&gt;'</span>, <span class="ruby-constant">String</span>,
861
+ 50: <span class="ruby-value str">&quot;Check the given time sheet&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
862
+ 51: <span class="ruby-ivar">@timeSheets</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span>
863
+ 52: <span class="ruby-keyword kw">end</span>
864
+ 53: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--check-status-sheet &lt;tji-file&gt;'</span>, <span class="ruby-constant">String</span>,
865
+ 54: <span class="ruby-value str">&quot;Check the given status sheet&quot;</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
866
+ 55: <span class="ruby-ivar">@statusSheets</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">arg</span>
867
+ 56: <span class="ruby-keyword kw">end</span>
868
+ 57: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--warn-ts-deltas'</span>,
869
+ 58: <span class="ruby-value str">'Turn on warnings for requested changes in time sheets'</span>) <span class="ruby-keyword kw">do</span>
870
+ 59: <span class="ruby-ivar">@warnTsDeltas</span> = <span class="ruby-keyword kw">true</span>
871
+ 60: <span class="ruby-keyword kw">end</span>
872
+ 61: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--check-syntax'</span>,
873
+ 62: <span class="ruby-value str">'Only parse the input files and check the syntax.'</span>) <span class="ruby-keyword kw">do</span>
874
+ 63: <span class="ruby-ivar">@checkSyntax</span> = <span class="ruby-keyword kw">true</span>
875
+ 64: <span class="ruby-keyword kw">end</span>
876
+ 65: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--no-reports'</span>,
877
+ 66: <span class="ruby-value str">'Just schedule the project, but don\t generate any reports.'</span>) <span class="ruby-keyword kw">do</span>
878
+ 67: <span class="ruby-ivar">@noReports</span> = <span class="ruby-keyword kw">true</span>
879
+ 68: <span class="ruby-keyword kw">end</span>
880
+ 69: <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>,
881
+ 70: <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>
882
+ 71: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-identifier">arg</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
883
+ 72: <span class="ruby-keyword kw">end</span>
884
+ 73: <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>
885
+ 74: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-identifier">arg</span>
886
+ 75: <span class="ruby-keyword kw">end</span>
887
+ 76: <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>
888
+ 77: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
889
+ 78: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
890
+ 79: <span class="ruby-keyword kw">end</span>
891
+ 80:
892
+ 81: <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>
893
+ 82: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
894
+ 83: <span class="ruby-node">&quot;#{AppConfig.packageInfo}&quot;</span>
895
+ 84: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
896
+ 85: <span class="ruby-keyword kw">end</span>
897
+ 86:
898
+ 87: <span class="ruby-comment cmt"># Show some progress information by default</span>
899
+ 88: <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>
900
+ 89: <span class="ruby-keyword kw">begin</span>
901
+ 90: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">argv</span>)
902
+ 91: <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>
903
+ 92: <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>
904
+ 93: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span>
905
+ 94: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
906
+ 95: <span class="ruby-keyword kw">end</span>
907
+ 96:
908
+ 97: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
909
+ 98: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
910
+ 99: <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>
911
+ 100: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
912
+ 101: <span class="ruby-keyword kw">end</span>
913
+ 102:
914
+ 103: <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>
915
+ 104: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{AppConfig.softwareName} v#{AppConfig.version} - &quot;</span> <span class="ruby-operator">+</span>
916
+ 105: <span class="ruby-node">&quot;#{AppConfig.packageInfo}\n\n&quot;</span> <span class="ruby-operator">+</span>
917
+ 106: <span class="ruby-node">&quot;Copyright (c) #{AppConfig.copyright.join(', ')}&quot;</span> <span class="ruby-operator">+</span>
918
+ 107: <span class="ruby-node">&quot; by #{AppConfig.authors.join(', ')}\n\n&quot;</span> <span class="ruby-operator">+</span>
919
+ 108: <span class="ruby-node">&quot;#{AppConfig.license}\n&quot;</span>
920
+ 109: <span class="ruby-keyword kw">end</span>
921
+ 110:
922
+ 111: <span class="ruby-identifier">files</span>
923
+ 112: <span class="ruby-keyword kw">end</span></pre>
918
924
  </div>
919
925
 
920
926
  </div>