taskjuggler 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -135,6 +135,8 @@
135
135
 
136
136
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
137
137
 
138
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
139
+
138
140
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
139
141
 
140
142
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -213,6 +215,8 @@
213
215
 
214
216
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
215
217
 
218
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
219
+
216
220
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
217
221
 
218
222
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -245,6 +249,8 @@
245
249
 
246
250
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
247
251
 
252
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
253
+
248
254
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
249
255
 
250
256
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -525,6 +531,8 @@
525
531
 
526
532
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
527
533
 
534
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
535
+
528
536
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
529
537
 
530
538
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -551,8 +559,6 @@
551
559
 
552
560
  <li><a href="../String.html">String</a></li>
553
561
 
554
- <li><a href="../StringIO.html">StringIO</a></li>
555
-
556
562
  </ul>
557
563
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
558
564
  </div>
@@ -600,20 +606,20 @@
600
606
  <div class="method-source-code"
601
607
  id="new-source">
602
608
  <pre>
603
- <span class="ruby-comment cmt"># File lib/tj3d.rb, line 25</span>
604
- 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
605
- 26: <span class="ruby-keyword kw">super</span>
606
- 27: <span class="ruby-ivar">@mandatoryArgs</span> = <span class="ruby-value str">'[&lt;tjp file&gt; [&lt;tji file&gt; ...] ...]'</span>
607
- 28:
608
- 29: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">LogFile</span>.<span class="ruby-identifier">instance</span>
609
- 30: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">logFile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, <span class="ruby-node">&quot;/#{AppConfig.appName}.log&quot;</span>)
610
- 31: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">appName</span> = <span class="ruby-constant">AppConfig</span>.<span class="ruby-identifier">appName</span>
611
- 32: <span class="ruby-ivar">@daemonize</span> = <span class="ruby-keyword kw">true</span>
612
- 33: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, <span class="ruby-value str">'.tj3d.uri'</span>)
613
- 34: <span class="ruby-ivar">@port</span> = <span class="ruby-keyword kw">nil</span>
614
- 35: <span class="ruby-ivar">@webServer</span> = <span class="ruby-keyword kw">false</span>
615
- 36: <span class="ruby-ivar">@webServerPort</span> = <span class="ruby-keyword kw">nil</span>
616
- 37: <span class="ruby-keyword kw">end</span></pre>
609
+ <span class="ruby-comment cmt"># File lib/tj3d.rb, line 26</span>
610
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
611
+ 27: <span class="ruby-keyword kw">super</span>
612
+ 28: <span class="ruby-ivar">@mandatoryArgs</span> = <span class="ruby-value str">'[&lt;tjp file&gt; [&lt;tji file&gt; ...] ...]'</span>
613
+ 29:
614
+ 30: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">LogFile</span>.<span class="ruby-identifier">instance</span>
615
+ 31: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">logFile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, <span class="ruby-node">&quot;/#{AppConfig.appName}.log&quot;</span>)
616
+ 32: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">appName</span> = <span class="ruby-constant">AppConfig</span>.<span class="ruby-identifier">appName</span>
617
+ 33: <span class="ruby-ivar">@daemonize</span> = <span class="ruby-keyword kw">true</span>
618
+ 34: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">join</span>(<span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>, <span class="ruby-value str">'.tj3d.uri'</span>)
619
+ 35: <span class="ruby-ivar">@port</span> = <span class="ruby-keyword kw">nil</span>
620
+ 36: <span class="ruby-ivar">@webServer</span> = <span class="ruby-keyword kw">false</span>
621
+ 37: <span class="ruby-ivar">@webServerPort</span> = <span class="ruby-keyword kw">nil</span>
622
+ 38: <span class="ruby-keyword kw">end</span></pre>
617
623
  </div>
618
624
 
619
625
  </div>
@@ -650,11 +656,11 @@
650
656
  <div class="method-source-code"
651
657
  id="error-source">
652
658
  <pre>
653
- <span class="ruby-comment cmt"># File lib/tj3d.rb, line 94</span>
654
- 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">message</span>)
655
- 95: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;ERROR: #{message}&quot;</span>
656
- 96: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
657
- 97: <span class="ruby-keyword kw">end</span></pre>
659
+ <span class="ruby-comment cmt"># File lib/tj3d.rb, line 98</span>
660
+ 98: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">message</span>)
661
+ 99: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;ERROR: #{message}&quot;</span>
662
+ 100: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
663
+ 101: <span class="ruby-keyword kw">end</span></pre>
658
664
  </div>
659
665
 
660
666
  </div>
@@ -685,26 +691,29 @@
685
691
  <div class="method-source-code"
686
692
  id="main-source">
687
693
  <pre>
688
- <span class="ruby-comment cmt"># File lib/tj3d.rb, line 74</span>
689
- 74: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
690
- 75: <span class="ruby-identifier">files</span> = <span class="ruby-keyword kw">super</span>
691
- 76: <span class="ruby-identifier">broker</span> = <span class="ruby-constant">ProjectBroker</span>.<span class="ruby-identifier">new</span>
692
- 77: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'global'</span>)
693
- 78: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-ivar">@log</span>, <span class="ruby-value str">'global.log'</span>)
694
- 79: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">broker</span>, <span class="ruby-value str">'global'</span>)
695
- 80: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">broker</span>, <span class="ruby-value str">'daemon'</span>)
696
- 81:
697
- 82: <span class="ruby-comment cmt"># Set some config variables if corresponding data was provided via the</span>
698
- 83: <span class="ruby-comment cmt"># command line.</span>
699
- 84: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">port</span> = <span class="ruby-ivar">@port</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@port</span>
700
- 85: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">uriFile</span> = <span class="ruby-ivar">@uriFile</span>.<span class="ruby-identifier">untaint</span>
701
- 86: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">enableWebServer</span> = <span class="ruby-ivar">@webServer</span>
702
- 87: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">webServerPort</span> = <span class="ruby-ivar">@webServerPort</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@webServerPort</span>
703
- 88: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">projectFiles</span> = <span class="ruby-identifier">sortInputFiles</span>(<span class="ruby-identifier">files</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
704
- 89: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">daemonize</span> = <span class="ruby-ivar">@daemonize</span>
705
- 90:
706
- 91: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">start</span>
707
- 92: <span class="ruby-keyword kw">end</span></pre>
694
+ <span class="ruby-comment cmt"># File lib/tj3d.rb, line 75</span>
695
+ 75: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
696
+ 76: <span class="ruby-identifier">files</span> = <span class="ruby-keyword kw">super</span>
697
+ 77: <span class="ruby-identifier">broker</span> = <span class="ruby-constant">ProjectBroker</span>.<span class="ruby-identifier">new</span>
698
+ 78: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-value str">'global'</span>)
699
+ 79: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-ivar">@log</span>, <span class="ruby-value str">'global.log'</span>)
700
+ 80: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">broker</span>, <span class="ruby-value str">'global'</span>)
701
+ 81: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">broker</span>, <span class="ruby-value str">'daemon'</span>)
702
+ 82:
703
+ 83: <span class="ruby-comment cmt"># Set some config variables if corresponding data was provided via the</span>
704
+ 84: <span class="ruby-comment cmt"># command line.</span>
705
+ 85: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">port</span> = <span class="ruby-ivar">@port</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@port</span>
706
+ 86: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">uriFile</span> = <span class="ruby-ivar">@uriFile</span>.<span class="ruby-identifier">untaint</span>
707
+ 87: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">enableWebServer</span> = <span class="ruby-ivar">@webServer</span>
708
+ 88: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">webServerPort</span> = <span class="ruby-ivar">@webServerPort</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@webServerPort</span>
709
+ 89: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">projectFiles</span> = <span class="ruby-identifier">sortInputFiles</span>(<span class="ruby-identifier">files</span>) <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
710
+ 90: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">daemonize</span> = <span class="ruby-ivar">@daemonize</span>
711
+ 91: <span class="ruby-comment cmt"># Create log files for standard IO for each child process if the daemon</span>
712
+ 92: <span class="ruby-comment cmt"># is not disconnected from the terminal.</span>
713
+ 93: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">logStdIO</span> = <span class="ruby-operator">!</span><span class="ruby-ivar">@daemonize</span>
714
+ 94:
715
+ 95: <span class="ruby-identifier">broker</span>.<span class="ruby-identifier">start</span>
716
+ 96: <span class="ruby-keyword kw">end</span></pre>
708
717
  </div>
709
718
 
710
719
  </div>
@@ -735,37 +744,37 @@
735
744
  <div class="method-source-code"
736
745
  id="process-rguments-source">
737
746
  <pre>
738
- <span class="ruby-comment cmt"># File lib/tj3d.rb, line 39</span>
739
- 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
740
- 40: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span>
741
- 41: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">The TaskJuggler daemon can be used to quickly generate reports for a numberof scheduled projects that are resident in memory. Once the daemon has beenstarted tj3client can be used to control it.</span>
742
- 42: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-d'</span>, <span class="ruby-value str">'--dont-daemonize'</span>,
743
- 43: <span class="ruby-identifier">format</span>(<span class="ruby-value str">&quot;Don't put program into daemon mode. Keep it &quot;</span> <span class="ruby-operator">+</span>
744
- 44: <span class="ruby-value str">'connected to the terminal and show debug output.'</span>)) <span class="ruby-keyword kw">do</span>
745
- 45: <span class="ruby-ivar">@daemonize</span> = <span class="ruby-keyword kw">false</span>
746
- 46: <span class="ruby-keyword kw">end</span>
747
- 47: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-p'</span>, <span class="ruby-value str">'--port &lt;NUMBER&gt;'</span>, <span class="ruby-constant">Integer</span>,
748
- 48: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified TCP/IP port to serve tj3client '</span> <span class="ruby-operator">+</span>
749
- 49: <span class="ruby-value str">'requests (Default: 8474).'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
750
- 50: <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">arg</span>
751
- 51: <span class="ruby-keyword kw">end</span>
752
- 52: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--urifile'</span>, <span class="ruby-constant">String</span>,
753
- 53: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'If the port is 0, use this file to store the URI '</span> <span class="ruby-operator">+</span>
754
- 54: <span class="ruby-value str">'of the server.'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
755
- 55: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-identifier">arg</span>
756
- 56: <span class="ruby-keyword kw">end</span>
757
- 57: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-w'</span>, <span class="ruby-value str">'--webserver'</span>,
758
- 58: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Start a web server that serves the reports of '</span> <span class="ruby-operator">+</span>
759
- 59: <span class="ruby-value str">'the loaded projects.'</span>)) <span class="ruby-keyword kw">do</span>
760
- 60: <span class="ruby-ivar">@webServer</span> = <span class="ruby-keyword kw">true</span>
761
- 61: <span class="ruby-keyword kw">end</span>
762
- 62: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--webserver-port &lt;NUMBER&gt;'</span>, <span class="ruby-constant">Integer</span>,
763
- 63: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified TCP/IP port to serve web browser '</span> <span class="ruby-operator">+</span>
764
- 64: <span class="ruby-value str">'requests (Default: 8080).'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
765
- 65: <span class="ruby-ivar">@webServerPort</span> = <span class="ruby-identifier">arg</span>
766
- 66: <span class="ruby-keyword kw">end</span>
767
- 67: <span class="ruby-keyword kw">end</span>
768
- 68: <span class="ruby-keyword kw">end</span></pre>
747
+ <span class="ruby-comment cmt"># File lib/tj3d.rb, line 40</span>
748
+ 40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
749
+ 41: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span>
750
+ 42: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">The TaskJuggler daemon can be used to quickly generate reports for a numberof scheduled projects that are resident in memory. Once the daemon has beenstarted tj3client can be used to control it.</span>
751
+ 43: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-d'</span>, <span class="ruby-value str">'--dont-daemonize'</span>,
752
+ 44: <span class="ruby-identifier">format</span>(<span class="ruby-value str">&quot;Don't put program into daemon mode. Keep it &quot;</span> <span class="ruby-operator">+</span>
753
+ 45: <span class="ruby-value str">'connected to the terminal and show debug output.'</span>)) <span class="ruby-keyword kw">do</span>
754
+ 46: <span class="ruby-ivar">@daemonize</span> = <span class="ruby-keyword kw">false</span>
755
+ 47: <span class="ruby-keyword kw">end</span>
756
+ 48: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-p'</span>, <span class="ruby-value str">'--port &lt;NUMBER&gt;'</span>, <span class="ruby-constant">Integer</span>,
757
+ 49: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified TCP/IP port to serve tj3client '</span> <span class="ruby-operator">+</span>
758
+ 50: <span class="ruby-value str">'requests (Default: 8474).'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
759
+ 51: <span class="ruby-ivar">@port</span> = <span class="ruby-identifier">arg</span>
760
+ 52: <span class="ruby-keyword kw">end</span>
761
+ 53: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--urifile'</span>, <span class="ruby-constant">String</span>,
762
+ 54: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'If the port is 0, use this file to store the URI '</span> <span class="ruby-operator">+</span>
763
+ 55: <span class="ruby-value str">'of the server.'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
764
+ 56: <span class="ruby-ivar">@uriFile</span> = <span class="ruby-identifier">arg</span>
765
+ 57: <span class="ruby-keyword kw">end</span>
766
+ 58: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-w'</span>, <span class="ruby-value str">'--webserver'</span>,
767
+ 59: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Start a web server that serves the reports of '</span> <span class="ruby-operator">+</span>
768
+ 60: <span class="ruby-value str">'the loaded projects.'</span>)) <span class="ruby-keyword kw">do</span>
769
+ 61: <span class="ruby-ivar">@webServer</span> = <span class="ruby-keyword kw">true</span>
770
+ 62: <span class="ruby-keyword kw">end</span>
771
+ 63: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--webserver-port &lt;NUMBER&gt;'</span>, <span class="ruby-constant">Integer</span>,
772
+ 64: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified TCP/IP port to serve web browser '</span> <span class="ruby-operator">+</span>
773
+ 65: <span class="ruby-value str">'requests (Default: 8080).'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
774
+ 66: <span class="ruby-ivar">@webServerPort</span> = <span class="ruby-identifier">arg</span>
775
+ 67: <span class="ruby-keyword kw">end</span>
776
+ 68: <span class="ruby-keyword kw">end</span>
777
+ 69: <span class="ruby-keyword kw">end</span></pre>
769
778
  </div>
770
779
 
771
780
  </div>
@@ -807,41 +816,41 @@ this: [ <working directory>, <tjp file> (, <tji file> &#8230;) ].
807
816
  <div class="method-source-code"
808
817
  id="sort-nput-iles-source">
809
818
  <pre>
810
- <span class="ruby-comment cmt"># File lib/tj3d.rb, line 105</span>
811
- 105: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sortInputFiles</span>(<span class="ruby-identifier">files</span>)
812
- 106: <span class="ruby-identifier">projects</span> = []
813
- 107: <span class="ruby-identifier">project</span> = <span class="ruby-keyword kw">nil</span>
814
- 108: <span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
815
- 109: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file</span>[<span class="ruby-value">4</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'.tjp'</span>
816
- 110: <span class="ruby-comment cmt"># The project master file determines the working directory. If it's</span>
817
- 111: <span class="ruby-comment cmt"># an absolute file name, that directory will become the working</span>
818
- 112: <span class="ruby-comment cmt"># directory. If it's a relative file name, the current working</span>
819
- 113: <span class="ruby-comment cmt"># directory will be kept.</span>
820
- 114: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'/'</span>
821
- 115: <span class="ruby-comment cmt"># Absolute file name</span>
822
- 116: <span class="ruby-identifier">workingDir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">file</span>)
823
- 117: <span class="ruby-identifier">fileName</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">file</span>)
824
- 118: <span class="ruby-keyword kw">else</span>
825
- 119: <span class="ruby-comment cmt"># Relative file name</span>
826
- 120: <span class="ruby-identifier">workingDir</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>
827
- 121: <span class="ruby-identifier">fileName</span> = <span class="ruby-identifier">file</span>
828
- 122: <span class="ruby-keyword kw">end</span>
829
- 123: <span class="ruby-identifier">project</span> = [ <span class="ruby-identifier">workingDir</span>, <span class="ruby-identifier">fileName</span> ]
830
- 124: <span class="ruby-identifier">projects</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">project</span>
831
- 125: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">file</span>[<span class="ruby-value">4</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'.tji'</span>
832
- 126: <span class="ruby-comment cmt"># .tji files are optional. But if they are specified, they must</span>
833
- 127: <span class="ruby-comment cmt"># always follow the master file in the list.</span>
834
- 128: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">project</span>.<span class="ruby-identifier">nil?</span>
835
- 129: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;You must specify a '.tjp' file before the '.tji' files&quot;</span>)
836
- 130: <span class="ruby-keyword kw">end</span>
837
- 131: <span class="ruby-identifier">project</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">file</span>
838
- 132: <span class="ruby-keyword kw">else</span>
839
- 133: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;Project files must have a '.tjp' or '.tji' extension&quot;</span>)
840
- 134: <span class="ruby-keyword kw">end</span>
841
- 135: <span class="ruby-keyword kw">end</span>
842
- 136:
843
- 137: <span class="ruby-identifier">projects</span>
844
- 138: <span class="ruby-keyword kw">end</span></pre>
819
+ <span class="ruby-comment cmt"># File lib/tj3d.rb, line 109</span>
820
+ 109: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sortInputFiles</span>(<span class="ruby-identifier">files</span>)
821
+ 110: <span class="ruby-identifier">projects</span> = []
822
+ 111: <span class="ruby-identifier">project</span> = <span class="ruby-keyword kw">nil</span>
823
+ 112: <span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
824
+ 113: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file</span>[<span class="ruby-value">4</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'.tjp'</span>
825
+ 114: <span class="ruby-comment cmt"># The project master file determines the working directory. If it's</span>
826
+ 115: <span class="ruby-comment cmt"># an absolute file name, that directory will become the working</span>
827
+ 116: <span class="ruby-comment cmt"># directory. If it's a relative file name, the current working</span>
828
+ 117: <span class="ruby-comment cmt"># directory will be kept.</span>
829
+ 118: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">file</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'/'</span>
830
+ 119: <span class="ruby-comment cmt"># Absolute file name</span>
831
+ 120: <span class="ruby-identifier">workingDir</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">dirname</span>(<span class="ruby-identifier">file</span>)
832
+ 121: <span class="ruby-identifier">fileName</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">basename</span>(<span class="ruby-identifier">file</span>)
833
+ 122: <span class="ruby-keyword kw">else</span>
834
+ 123: <span class="ruby-comment cmt"># Relative file name</span>
835
+ 124: <span class="ruby-identifier">workingDir</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">getwd</span>
836
+ 125: <span class="ruby-identifier">fileName</span> = <span class="ruby-identifier">file</span>
837
+ 126: <span class="ruby-keyword kw">end</span>
838
+ 127: <span class="ruby-identifier">project</span> = [ <span class="ruby-identifier">workingDir</span>, <span class="ruby-identifier">fileName</span> ]
839
+ 128: <span class="ruby-identifier">projects</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">project</span>
840
+ 129: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">file</span>[<span class="ruby-value">4</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'.tji'</span>
841
+ 130: <span class="ruby-comment cmt"># .tji files are optional. But if they are specified, they must</span>
842
+ 131: <span class="ruby-comment cmt"># always follow the master file in the list.</span>
843
+ 132: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">project</span>.<span class="ruby-identifier">nil?</span>
844
+ 133: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;You must specify a '.tjp' file before the '.tji' files&quot;</span>)
845
+ 134: <span class="ruby-keyword kw">end</span>
846
+ 135: <span class="ruby-identifier">project</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">file</span>
847
+ 136: <span class="ruby-keyword kw">else</span>
848
+ 137: <span class="ruby-identifier">error</span>(<span class="ruby-value str">&quot;Project files must have a '.tjp' or '.tji' extension&quot;</span>)
849
+ 138: <span class="ruby-keyword kw">end</span>
850
+ 139: <span class="ruby-keyword kw">end</span>
851
+ 140:
852
+ 141: <span class="ruby-identifier">projects</span>
853
+ 142: <span class="ruby-keyword kw">end</span></pre>
845
854
  </div>
846
855
 
847
856
  </div>
@@ -131,6 +131,8 @@
131
131
 
132
132
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
133
133
 
134
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
135
+
134
136
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
135
137
 
136
138
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -209,6 +211,8 @@
209
211
 
210
212
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
211
213
 
214
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
215
+
212
216
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
213
217
 
214
218
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -241,6 +245,8 @@
241
245
 
242
246
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
243
247
 
248
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
249
+
244
250
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
245
251
 
246
252
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -521,6 +527,8 @@
521
527
 
522
528
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
523
529
 
530
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
531
+
524
532
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
525
533
 
526
534
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -547,8 +555,6 @@
547
555
 
548
556
  <li><a href="../String.html">String</a></li>
549
557
 
550
- <li><a href="../StringIO.html">StringIO</a></li>
551
-
552
558
  </ul>
553
559
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
554
560
  </div>
@@ -596,13 +602,13 @@
596
602
  <div class="method-source-code"
597
603
  id="new-source">
598
604
  <pre>
599
- <span class="ruby-comment cmt"># File lib/Tj3SheetAppBase.rb, line 19</span>
600
- 19: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
601
- 20: <span class="ruby-keyword kw">super</span>
602
- 21:
603
- 22: <span class="ruby-ivar">@dryRun</span> = <span class="ruby-keyword kw">false</span>
604
- 23: <span class="ruby-ivar">@workingDir</span> = <span class="ruby-keyword kw">nil</span>
605
- 24: <span class="ruby-keyword kw">end</span></pre>
605
+ <span class="ruby-comment cmt"># File lib/Tj3SheetAppBase.rb, line 20</span>
606
+ 20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
607
+ 21: <span class="ruby-keyword kw">super</span>
608
+ 22:
609
+ 23: <span class="ruby-ivar">@dryRun</span> = <span class="ruby-keyword kw">false</span>
610
+ 24: <span class="ruby-ivar">@workingDir</span> = <span class="ruby-keyword kw">nil</span>
611
+ 25: <span class="ruby-keyword kw">end</span></pre>
606
612
  </div>
607
613
 
608
614
  </div>
@@ -639,21 +645,21 @@
639
645
  <div class="method-source-code"
640
646
  id="opts-nd-ate-source">
641
647
  <pre>
642
- <span class="ruby-comment cmt"># File lib/Tj3SheetAppBase.rb, line 41</span>
643
- 41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optsEndDate</span>
644
- 42: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-e'</span>, <span class="ruby-value str">'--enddate &lt;DAY&gt;'</span>, <span class="ruby-constant">String</span>,
645
- 43: <span class="ruby-identifier">format</span>(<span class="ruby-value str">&quot;The end date of the reporting period. Either as &quot;</span> <span class="ruby-operator">+</span>
646
- 44: <span class="ruby-value str">&quot;YYYY-MM-DD or day of week. 0: Sunday, 1: Monday and &quot;</span> <span class="ruby-operator">+</span>
647
- 45: <span class="ruby-node">&quot;so on. The default value is #{@date}.&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>
648
- 46: <span class="ruby-identifier">ymdFilter</span> = <span class="ruby-regexp re">/([0-9]{4})-([0-9]{2})-([0-9]{2})/</span>
649
- 47: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ymdFilter</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">arg</span>)
650
- 48: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">mktime</span>(*(<span class="ruby-identifier">ymdFilter</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">arg</span>)[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">3</span>]))
651
- 49: <span class="ruby-keyword kw">else</span>
652
- 50: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">nextDayOfWeek</span>(<span class="ruby-identifier">arg</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">%</span> <span class="ruby-value">7</span>)
653
- 51: <span class="ruby-keyword kw">end</span>
654
- 52: <span class="ruby-ivar">@date</span> = <span class="ruby-ivar">@date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%Y-%m-%d'</span>)
655
- 53: <span class="ruby-keyword kw">end</span>
656
- 54: <span class="ruby-keyword kw">end</span></pre>
648
+ <span class="ruby-comment cmt"># File lib/Tj3SheetAppBase.rb, line 42</span>
649
+ 42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optsEndDate</span>
650
+ 43: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-e'</span>, <span class="ruby-value str">'--enddate &lt;DAY&gt;'</span>, <span class="ruby-constant">String</span>,
651
+ 44: <span class="ruby-identifier">format</span>(<span class="ruby-value str">&quot;The end date of the reporting period. Either as &quot;</span> <span class="ruby-operator">+</span>
652
+ 45: <span class="ruby-value str">&quot;YYYY-MM-DD or day of week. 0: Sunday, 1: Monday and &quot;</span> <span class="ruby-operator">+</span>
653
+ 46: <span class="ruby-node">&quot;so on. The default value is #{@date}.&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>
654
+ 47: <span class="ruby-identifier">ymdFilter</span> = <span class="ruby-regexp re">/([0-9]{4})-([0-9]{2})-([0-9]{2})/</span>
655
+ 48: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ymdFilter</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">arg</span>)
656
+ 49: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">mktime</span>(*(<span class="ruby-identifier">ymdFilter</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">arg</span>)[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">3</span>]))
657
+ 50: <span class="ruby-keyword kw">else</span>
658
+ 51: <span class="ruby-ivar">@date</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">now</span>.<span class="ruby-identifier">nextDayOfWeek</span>(<span class="ruby-identifier">arg</span>.<span class="ruby-identifier">to_i</span> <span class="ruby-operator">%</span> <span class="ruby-value">7</span>)
659
+ 52: <span class="ruby-keyword kw">end</span>
660
+ 53: <span class="ruby-ivar">@date</span> = <span class="ruby-ivar">@date</span>.<span class="ruby-identifier">strftime</span>(<span class="ruby-value str">'%Y-%m-%d'</span>)
661
+ 54: <span class="ruby-keyword kw">end</span>
662
+ 55: <span class="ruby-keyword kw">end</span></pre>
657
663
  </div>
658
664
 
659
665
  </div>
@@ -684,21 +690,21 @@
684
690
  <div class="method-source-code"
685
691
  id="process-rguments-source">
686
692
  <pre>
687
- <span class="ruby-comment cmt"># File lib/Tj3SheetAppBase.rb, line 26</span>
688
- 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
689
- 27: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span>
690
- 28: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-d'</span>, <span class="ruby-value str">'--directory &lt;DIR&gt;'</span>, <span class="ruby-constant">String</span>,
691
- 29: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified directory as working '</span> <span class="ruby-operator">+</span>
692
- 30: <span class="ruby-value str">'directory'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
693
- 31: <span class="ruby-ivar">@workingDir</span> = <span class="ruby-identifier">arg</span>
694
- 32: <span class="ruby-keyword kw">end</span>
695
- 33: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--dryrun'</span>,
696
- 34: <span class="ruby-identifier">format</span>(<span class="ruby-value str">&quot;Don't send out any emails or do SCM commits&quot;</span>)) <span class="ruby-keyword kw">do</span>
697
- 35: <span class="ruby-ivar">@dryRun</span> = <span class="ruby-keyword kw">true</span>
698
- 36: <span class="ruby-keyword kw">end</span>
699
- 37: <span class="ruby-keyword kw">yield</span>
700
- 38: <span class="ruby-keyword kw">end</span>
701
- 39: <span class="ruby-keyword kw">end</span></pre>
693
+ <span class="ruby-comment cmt"># File lib/Tj3SheetAppBase.rb, line 27</span>
694
+ 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
695
+ 28: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span>
696
+ 29: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-d'</span>, <span class="ruby-value str">'--directory &lt;DIR&gt;'</span>, <span class="ruby-constant">String</span>,
697
+ 30: <span class="ruby-identifier">format</span>(<span class="ruby-value str">'Use the specified directory as working '</span> <span class="ruby-operator">+</span>
698
+ 31: <span class="ruby-value str">'directory'</span>)) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
699
+ 32: <span class="ruby-ivar">@workingDir</span> = <span class="ruby-identifier">arg</span>
700
+ 33: <span class="ruby-keyword kw">end</span>
701
+ 34: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--dryrun'</span>,
702
+ 35: <span class="ruby-identifier">format</span>(<span class="ruby-value str">&quot;Don't send out any emails or do SCM commits&quot;</span>)) <span class="ruby-keyword kw">do</span>
703
+ 36: <span class="ruby-ivar">@dryRun</span> = <span class="ruby-keyword kw">true</span>
704
+ 37: <span class="ruby-keyword kw">end</span>
705
+ 38: <span class="ruby-keyword kw">yield</span>
706
+ 39: <span class="ruby-keyword kw">end</span>
707
+ 40: <span class="ruby-keyword kw">end</span></pre>
702
708
  </div>
703
709
 
704
710
  </div>
@@ -131,6 +131,8 @@
131
131
 
132
132
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
133
133
 
134
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
135
+
134
136
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
135
137
 
136
138
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -209,6 +211,8 @@
209
211
 
210
212
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
211
213
 
214
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
215
+
212
216
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
213
217
 
214
218
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -241,6 +245,8 @@
241
245
 
242
246
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
243
247
 
248
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
249
+
244
250
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
245
251
 
246
252
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -521,6 +527,8 @@
521
527
 
522
528
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
523
529
 
530
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
531
+
524
532
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
525
533
 
526
534
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -547,8 +555,6 @@
547
555
 
548
556
  <li><a href="../String.html">String</a></li>
549
557
 
550
- <li><a href="../StringIO.html">StringIO</a></li>
551
-
552
558
  </ul>
553
559
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
554
560
  </div>
@@ -596,10 +602,10 @@
596
602
  <div class="method-source-code"
597
603
  id="new-source">
598
604
  <pre>
599
- <span class="ruby-comment cmt"># File lib/tj3ss_receiver.rb, line 23</span>
600
- 23: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
601
- 24: <span class="ruby-keyword kw">super</span>
602
- 25: <span class="ruby-keyword kw">end</span></pre>
605
+ <span class="ruby-comment cmt"># File lib/tj3ss_receiver.rb, line 24</span>
606
+ 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
607
+ 25: <span class="ruby-keyword kw">super</span>
608
+ 26: <span class="ruby-keyword kw">end</span></pre>
603
609
  </div>
604
610
 
605
611
  </div>
@@ -636,19 +642,19 @@
636
642
  <div class="method-source-code"
637
643
  id="main-source">
638
644
  <pre>
639
- <span class="ruby-comment cmt"># File lib/tj3ss_receiver.rb, line 39</span>
640
- 39: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
641
- 40: <span class="ruby-keyword kw">super</span>
642
- 41: <span class="ruby-identifier">ts</span> = <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">StatusSheetReceiver</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'tj3ss_receiver'</span>)
643
- 42: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-value str">'global'</span>)
644
- 43: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-value str">'statussheets'</span>)
645
- 44: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-value str">'statussheets.receiver'</span>)
646
- 45: <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">workingDir</span> = <span class="ruby-ivar">@workingDir</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@workingDir</span>
647
- 46: <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">dryRun</span> = <span class="ruby-ivar">@dryRun</span>
648
- 47:
649
- 48: <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">processEmail</span>
650
- 49: <span class="ruby-value">0</span>
651
- 50: <span class="ruby-keyword kw">end</span></pre>
645
+ <span class="ruby-comment cmt"># File lib/tj3ss_receiver.rb, line 40</span>
646
+ 40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
647
+ 41: <span class="ruby-keyword kw">super</span>
648
+ 42: <span class="ruby-identifier">ts</span> = <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">StatusSheetReceiver</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'tj3ss_receiver'</span>)
649
+ 43: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-value str">'global'</span>)
650
+ 44: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-value str">'statussheets'</span>)
651
+ 45: <span class="ruby-ivar">@rc</span>.<span class="ruby-identifier">configure</span>(<span class="ruby-identifier">ts</span>, <span class="ruby-value str">'statussheets.receiver'</span>)
652
+ 46: <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">workingDir</span> = <span class="ruby-ivar">@workingDir</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@workingDir</span>
653
+ 47: <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">dryRun</span> = <span class="ruby-ivar">@dryRun</span>
654
+ 48:
655
+ 49: <span class="ruby-identifier">ts</span>.<span class="ruby-identifier">processEmail</span>
656
+ 50: <span class="ruby-value">0</span>
657
+ 51: <span class="ruby-keyword kw">end</span></pre>
652
658
  </div>
653
659
 
654
660
  </div>
@@ -679,12 +685,12 @@
679
685
  <div class="method-source-code"
680
686
  id="process-rguments-source">
681
687
  <pre>
682
- <span class="ruby-comment cmt"># File lib/tj3ss_receiver.rb, line 27</span>
683
- 27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
684
- 28: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span>
685
- 29: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">This program can be used to receive filled-out status sheets via email.It reads the emails from STDIN and extracts the status sheet from theattached files. The status sheet is checked for correctness. Good statussheets are filed away. The sender be informed by email that the statussheets was accepted or rejected.</span>
686
- 30: <span class="ruby-keyword kw">end</span>
687
- 31: <span class="ruby-keyword kw">end</span></pre>
688
+ <span class="ruby-comment cmt"># File lib/tj3ss_receiver.rb, line 28</span>
689
+ 28: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
690
+ 29: <span class="ruby-keyword kw">super</span> <span class="ruby-keyword kw">do</span>
691
+ 30: <span class="ruby-ivar">@opts</span>.<span class="ruby-identifier">banner</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">This program can be used to receive filled-out status sheets via email.It reads the emails from STDIN and extracts the status sheet from theattached files. The status sheet is checked for correctness. Good statussheets are filed away. The sender be informed by email that the statussheets was accepted or rejected.</span>
692
+ 31: <span class="ruby-keyword kw">end</span>
693
+ 32: <span class="ruby-keyword kw">end</span></pre>
688
694
  </div>
689
695
 
690
696
  </div>