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
@@ -55,7 +55,7 @@
55
55
  <div id="parent-class-section" class="section">
56
56
  <h3 class="section-header">Parent</h3>
57
57
 
58
- <p class="link"><a href="AttributeBase.html">TaskJuggler::AttributeBase</a></p>
58
+ <p class="link"><a href="ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></p>
59
59
 
60
60
  </div>
61
61
 
@@ -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,12 +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/Attributes.rb, line 177</span>
600
- 177: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">type</span>)
601
- 178: <span class="ruby-keyword kw">super</span>
602
- 179:
603
- 180: <span class="ruby-ivar">@value</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>
604
- 181: <span class="ruby-keyword kw">end</span></pre>
605
+ <span class="ruby-comment cmt"># File lib/Attributes.rb, line 174</span>
606
+ 174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">type</span>)
607
+ 175: <span class="ruby-keyword kw">super</span>
608
+ 176: <span class="ruby-keyword kw">end</span></pre>
605
609
  </div>
606
610
 
607
611
  </div>
@@ -632,10 +636,10 @@
632
636
  <div class="method-source-code"
633
637
  id="tjp-d-source">
634
638
  <pre>
635
- <span class="ruby-comment cmt"># File lib/Attributes.rb, line 183</span>
636
- 183: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ColumnListAttribute</span><span class="ruby-operator">::</span><span class="ruby-identifier">tjpId</span>
637
- 184: <span class="ruby-value str">'columns'</span>
638
- 185: <span class="ruby-keyword kw">end</span></pre>
639
+ <span class="ruby-comment cmt"># File lib/Attributes.rb, line 178</span>
640
+ 178: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ColumnListAttribute</span><span class="ruby-operator">::</span><span class="ruby-identifier">tjpId</span>
641
+ 179: <span class="ruby-value str">'columns'</span>
642
+ 180: <span class="ruby-keyword kw">end</span></pre>
639
643
  </div>
640
644
 
641
645
  </div>
@@ -672,10 +676,10 @@
672
676
  <div class="method-source-code"
673
677
  id="to-s-source">
674
678
  <pre>
675
- <span class="ruby-comment cmt"># File lib/Attributes.rb, line 187</span>
676
- 187: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span> = <span class="ruby-keyword kw">nil</span>)
677
- 188: <span class="ruby-value str">&quot;TODO&quot;</span>
678
- 189: <span class="ruby-keyword kw">end</span></pre>
679
+ <span class="ruby-comment cmt"># File lib/Attributes.rb, line 182</span>
680
+ 182: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">query</span> = <span class="ruby-keyword kw">nil</span>)
681
+ 183: <span class="ruby-value str">&quot;TODO&quot;</span>
682
+ 184: <span class="ruby-keyword kw">end</span></pre>
679
683
  </div>
680
684
 
681
685
  </div>
@@ -129,6 +129,8 @@
129
129
 
130
130
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
131
131
 
132
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
133
+
132
134
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
133
135
 
134
136
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -207,6 +209,8 @@
207
209
 
208
210
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
209
211
 
212
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
213
+
210
214
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
211
215
 
212
216
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -239,6 +243,8 @@
239
243
 
240
244
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
241
245
 
246
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
247
+
242
248
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
243
249
 
244
250
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -519,6 +525,8 @@
519
525
 
520
526
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
521
527
 
528
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
529
+
522
530
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
523
531
 
524
532
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -545,8 +553,6 @@
545
553
 
546
554
  <li><a href="../String.html">String</a></li>
547
555
 
548
- <li><a href="../StringIO.html">StringIO</a></li>
549
-
550
556
  </ul>
551
557
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
552
558
  </div>
@@ -626,17 +632,17 @@ Create a new <a href="ColumnTable.html">ColumnTable</a> object.
626
632
  <div class="method-source-code"
627
633
  id="new-source">
628
634
  <pre>
629
- <span class="ruby-comment cmt"># File lib/reports/ColumnTable.rb, line 25</span>
630
- 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
631
- 26: <span class="ruby-keyword kw">super</span>
632
- 27: <span class="ruby-comment cmt"># The user requested width of the column (chart)</span>
633
- 28: <span class="ruby-ivar">@viewWidth</span> = <span class="ruby-keyword kw">nil</span>
634
- 29: <span class="ruby-comment cmt"># The header will have 2 lines. So, use a smaller font. This should match</span>
635
- 30: <span class="ruby-comment cmt"># the font size used for the GanttChart header.</span>
636
- 31: <span class="ruby-ivar">@headerFontSize</span> = <span class="ruby-value">10</span>
637
- 32: <span class="ruby-comment cmt"># This is an embedded table.</span>
638
- 33: <span class="ruby-ivar">@embedded</span> = <span class="ruby-keyword kw">true</span>
639
- 34: <span class="ruby-keyword kw">end</span></pre>
635
+ <span class="ruby-comment cmt"># File lib/reports/ColumnTable.rb, line 26</span>
636
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
637
+ 27: <span class="ruby-keyword kw">super</span>
638
+ 28: <span class="ruby-comment cmt"># The user requested width of the column (chart)</span>
639
+ 29: <span class="ruby-ivar">@viewWidth</span> = <span class="ruby-keyword kw">nil</span>
640
+ 30: <span class="ruby-comment cmt"># The header will have 2 lines. So, use a smaller font. This should match</span>
641
+ 31: <span class="ruby-comment cmt"># the font size used for the GanttChart header.</span>
642
+ 32: <span class="ruby-ivar">@headerFontSize</span> = <span class="ruby-value">10</span>
643
+ 33: <span class="ruby-comment cmt"># This is an embedded table.</span>
644
+ 34: <span class="ruby-ivar">@embedded</span> = <span class="ruby-keyword kw">true</span>
645
+ 35: <span class="ruby-keyword kw">end</span></pre>
640
646
  </div>
641
647
 
642
648
  </div>
@@ -673,37 +679,37 @@ Create a new <a href="ColumnTable.html">ColumnTable</a> object.
673
679
  <div class="method-source-code"
674
680
  id="to-html-source">
675
681
  <pre>
676
- <span class="ruby-comment cmt"># File lib/reports/ColumnTable.rb, line 36</span>
677
- 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span>
678
- 37: <span class="ruby-identifier">height</span> = <span class="ruby-value">2</span> * <span class="ruby-ivar">@headerLineHeight</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
679
- 38: <span class="ruby-ivar">@lines</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
680
- 39: <span class="ruby-comment cmt"># Add line height plus 1 pixel padding</span>
681
- 40: <span class="ruby-identifier">height</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">height</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
682
- 41: <span class="ruby-keyword kw">end</span>
683
- 42:
684
- 43: <span class="ruby-comment cmt"># Since we don't know the resulting width of the column, we need to always</span>
685
- 44: <span class="ruby-comment cmt"># add an extra space for the scrollbar.</span>
686
- 45: <span class="ruby-identifier">td</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'td'</span>, <span class="ruby-value str">'rowspan'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{2 + @lines.length + 1}&quot;</span>,
687
- 46: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'padding:0px; vertical-align:top;'</span>)
688
- 47: <span class="ruby-comment cmt"># Now we generate a 'div' that will contain the nested table. It has a</span>
689
- 48: <span class="ruby-comment cmt"># height that fits all lines but has a maximum width. In case the embedded</span>
690
- 49: <span class="ruby-comment cmt"># table is larger, a scrollbar will appear. We assume that the scrollbar</span>
691
- 50: <span class="ruby-comment cmt"># has a height of SCROLLBARHEIGHT pixels or less.</span>
692
- 51: <span class="ruby-comment cmt"># If there is a user specified with, use it. Otherwise use the</span>
693
- 52: <span class="ruby-comment cmt"># calculated minimum with.</span>
694
- 53: <span class="ruby-identifier">width</span> = <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">minWidth</span>
695
- 54: <span class="ruby-identifier">td</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">scrollDiv</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'tabback'</span>,
696
- 55: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'position:relative; overflow:auto; '</span> <span class="ruby-operator">+</span>
697
- 56: <span class="ruby-node">&quot;width:#{width}px; &quot;</span> <span class="ruby-operator">+</span>
698
- 57: <span class="ruby-value str">'margin-top:-1px; margin-bottom:-1px; '</span> <span class="ruby-operator">+</span>
699
- 58: <span class="ruby-node">&quot;height:#{height + SCROLLBARHEIGHT + 2}px;&quot;</span>))
700
- 59:
701
- 60: <span class="ruby-identifier">scrollDiv</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">contentDiv</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>,
702
- 61: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'margin: 0px; padding: 0px; position: absolute; top: 0px;'</span> <span class="ruby-operator">+</span>
703
- 62: <span class="ruby-node">&quot;left: 0px; width: #{@viewWidth}px; height: #{height}px; &quot;</span>))
704
- 63: <span class="ruby-identifier">contentDiv</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">super</span>
705
- 64: <span class="ruby-identifier">td</span>
706
- 65: <span class="ruby-keyword kw">end</span></pre>
682
+ <span class="ruby-comment cmt"># File lib/reports/ColumnTable.rb, line 37</span>
683
+ 37: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span>
684
+ 38: <span class="ruby-identifier">height</span> = <span class="ruby-value">2</span> * <span class="ruby-ivar">@headerLineHeight</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
685
+ 39: <span class="ruby-ivar">@lines</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
686
+ 40: <span class="ruby-comment cmt"># Add line height plus 1 pixel padding</span>
687
+ 41: <span class="ruby-identifier">height</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">height</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
688
+ 42: <span class="ruby-keyword kw">end</span>
689
+ 43:
690
+ 44: <span class="ruby-comment cmt"># Since we don't know the resulting width of the column, we need to always</span>
691
+ 45: <span class="ruby-comment cmt"># add an extra space for the scrollbar.</span>
692
+ 46: <span class="ruby-identifier">td</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'td'</span>, <span class="ruby-value str">'rowspan'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{2 + @lines.length + 1}&quot;</span>,
693
+ 47: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'padding:0px; vertical-align:top;'</span>)
694
+ 48: <span class="ruby-comment cmt"># Now we generate a 'div' that will contain the nested table. It has a</span>
695
+ 49: <span class="ruby-comment cmt"># height that fits all lines but has a maximum width. In case the embedded</span>
696
+ 50: <span class="ruby-comment cmt"># table is larger, a scrollbar will appear. We assume that the scrollbar</span>
697
+ 51: <span class="ruby-comment cmt"># has a height of SCROLLBARHEIGHT pixels or less.</span>
698
+ 52: <span class="ruby-comment cmt"># If there is a user specified with, use it. Otherwise use the</span>
699
+ 53: <span class="ruby-comment cmt"># calculated minimum with.</span>
700
+ 54: <span class="ruby-identifier">width</span> = <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@viewWidth</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">minWidth</span>
701
+ 55: <span class="ruby-identifier">td</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">scrollDiv</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'tabback'</span>,
702
+ 56: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'position:relative; overflow:auto; '</span> <span class="ruby-operator">+</span>
703
+ 57: <span class="ruby-node">&quot;width:#{width}px; &quot;</span> <span class="ruby-operator">+</span>
704
+ 58: <span class="ruby-value str">'margin-top:-1px; margin-bottom:-1px; '</span> <span class="ruby-operator">+</span>
705
+ 59: <span class="ruby-node">&quot;height:#{height + SCROLLBARHEIGHT + 2}px;&quot;</span>))
706
+ 60:
707
+ 61: <span class="ruby-identifier">scrollDiv</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">contentDiv</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'div'</span>,
708
+ 62: <span class="ruby-value str">'style'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'margin: 0px; padding: 0px; position: absolute; top: 0px;'</span> <span class="ruby-operator">+</span>
709
+ 63: <span class="ruby-node">&quot;left: 0px; width: #{@viewWidth}px; height: #{height}px; &quot;</span>))
710
+ 64: <span class="ruby-identifier">contentDiv</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">super</span>
711
+ 65: <span class="ruby-identifier">td</span>
712
+ 66: <span class="ruby-keyword kw">end</span></pre>
707
713
  </div>
708
714
 
709
715
  </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>
@@ -592,6 +598,21 @@ this class and call the start() method.
592
598
 
593
599
 
594
600
 
601
+ </div>
602
+ </div>
603
+
604
+ <div id="log-attribute-method" class="method-detail">
605
+ <a name="log"></a>
606
+
607
+ <div class="method-heading attribute-method-heading">
608
+ <span class="method-name">log</span><span
609
+ class="attribute-access-type">[R]</span>
610
+ </div>
611
+
612
+ <div class="method-description">
613
+
614
+
615
+
595
616
  </div>
596
617
  </div>
597
618
 
@@ -624,14 +645,14 @@ this class and call the start() method.
624
645
  <div class="method-source-code"
625
646
  id="new-source">
626
647
  <pre>
627
- <span class="ruby-comment cmt"># File lib/daemon/Daemon.rb, line 24</span>
628
- 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
629
- 25: <span class="ruby-comment cmt"># You can set this flag to false to prevent the program from</span>
630
- 26: <span class="ruby-comment cmt"># disconnecting from the current terminal. This is useful for debugging</span>
631
- 27: <span class="ruby-comment cmt"># purposes.</span>
632
- 28: <span class="ruby-ivar">@daemonize</span> = <span class="ruby-keyword kw">true</span>
633
- 29: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">LogFile</span>.<span class="ruby-identifier">instance</span>
634
- 30: <span class="ruby-keyword kw">end</span></pre>
648
+ <span class="ruby-comment cmt"># File lib/daemon/Daemon.rb, line 26</span>
649
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
650
+ 27: <span class="ruby-comment cmt"># You can set this flag to false to prevent the program from</span>
651
+ 28: <span class="ruby-comment cmt"># disconnecting from the current terminal. This is useful for debugging</span>
652
+ 29: <span class="ruby-comment cmt"># purposes.</span>
653
+ 30: <span class="ruby-ivar">@daemonize</span> = <span class="ruby-keyword kw">true</span>
654
+ 31: <span class="ruby-ivar">@log</span> = <span class="ruby-constant">LogFile</span>.<span class="ruby-identifier">instance</span>
655
+ 32: <span class="ruby-keyword kw">end</span></pre>
635
656
  </div>
636
657
 
637
658
  </div>
@@ -670,44 +691,44 @@ Call this method to turn the process into a background process.
670
691
  <div class="method-source-code"
671
692
  id="start-source">
672
693
  <pre>
673
- <span class="ruby-comment cmt"># File lib/daemon/Daemon.rb, line 33</span>
674
- 33: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
675
- 34: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@daemonize</span>
676
- 35:
677
- 36: <span class="ruby-comment cmt"># Fork and have the parent exit</span>
678
- 37: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">pid</span> = <span class="ruby-identifier">fork</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
679
- 38: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'First fork failed'</span>)
680
- 39: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">pid</span>.<span class="ruby-identifier">nil?</span>
681
- 40: <span class="ruby-comment cmt"># This is the parent. We can exit now.</span>
682
- 41: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Forked a child process with PID #{pid}&quot;</span>)
683
- 42: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
684
- 43: <span class="ruby-keyword kw">end</span>
685
- 44:
686
- 45: <span class="ruby-comment cmt"># Create a new session</span>
687
- 46: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
688
- 47: <span class="ruby-comment cmt"># Fork again to make sure we lose the controlling terminal</span>
689
- 48: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">pid</span> = <span class="ruby-identifier">fork</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
690
- 49: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'Second fork failed'</span>)
691
- 50: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">pid</span>.<span class="ruby-identifier">nil?</span>
692
- 51: <span class="ruby-comment cmt"># This is the parent. We can exit now.</span>
693
- 52: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Forked a child process with PID #{pid}&quot;</span>)
694
- 53: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
695
- 54: <span class="ruby-keyword kw">end</span>
696
- 55:
697
- 56: <span class="ruby-ivar">@pid</span> = <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span>
694
+ <span class="ruby-comment cmt"># File lib/daemon/Daemon.rb, line 35</span>
695
+ 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">start</span>
696
+ 36: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@daemonize</span>
697
+ 37:
698
+ 38: <span class="ruby-comment cmt"># Fork and have the parent exit</span>
699
+ 39: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">pid</span> = <span class="ruby-identifier">fork</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
700
+ 40: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'First fork failed'</span>)
701
+ 41: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">pid</span>.<span class="ruby-identifier">nil?</span>
702
+ 42: <span class="ruby-comment cmt"># This is the parent. We can exit now.</span>
703
+ 43: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Forked a child process with PID #{pid}&quot;</span>)
704
+ 44: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
705
+ 45: <span class="ruby-keyword kw">end</span>
706
+ 46:
707
+ 47: <span class="ruby-comment cmt"># Create a new session</span>
708
+ 48: <span class="ruby-constant">Process</span>.<span class="ruby-identifier">setsid</span>
709
+ 49: <span class="ruby-comment cmt"># Fork again to make sure we lose the controlling terminal</span>
710
+ 50: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">pid</span> = <span class="ruby-identifier">fork</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
711
+ 51: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">fatal</span>(<span class="ruby-value str">'Second fork failed'</span>)
712
+ 52: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">pid</span>.<span class="ruby-identifier">nil?</span>
713
+ 53: <span class="ruby-comment cmt"># This is the parent. We can exit now.</span>
714
+ 54: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">debug</span>(<span class="ruby-node">&quot;Forked a child process with PID #{pid}&quot;</span>)
715
+ 55: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
716
+ 56: <span class="ruby-keyword kw">end</span>
698
717
  57:
699
- 58: <span class="ruby-comment cmt"># Change current working directory to the file system root</span>
700
- 59: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-value str">'/'</span>
701
- 60: <span class="ruby-comment cmt"># Make sure we can create files with any permission</span>
702
- 61: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0</span>
703
- 62:
704
- 63: <span class="ruby-comment cmt"># We no longer have a controlling terminal, so these are useless.</span>
705
- 64: <span class="ruby-identifier">$stdin</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-value str">'/dev/null'</span>)
706
- 65: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-value str">'/dev/null'</span>, <span class="ruby-value str">'a'</span>)
707
- 66: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-identifier">$stdout</span>)
708
- 67:
709
- 68: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;The process is running as daemon now with PID #{@pid}&quot;</span>)
710
- 69: <span class="ruby-keyword kw">end</span></pre>
718
+ 58: <span class="ruby-ivar">@pid</span> = <span class="ruby-constant">Process</span>.<span class="ruby-identifier">pid</span>
719
+ 59:
720
+ 60: <span class="ruby-comment cmt"># Change current working directory to the file system root</span>
721
+ 61: <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">chdir</span> <span class="ruby-value str">'/'</span>
722
+ 62: <span class="ruby-comment cmt"># Make sure we can create files with any permission</span>
723
+ 63: <span class="ruby-constant">File</span>.<span class="ruby-identifier">umask</span> <span class="ruby-value">0</span>
724
+ 64:
725
+ 65: <span class="ruby-comment cmt"># We no longer have a controlling terminal, so these are useless.</span>
726
+ 66: <span class="ruby-identifier">$stdin</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-value str">'/dev/null'</span>)
727
+ 67: <span class="ruby-identifier">$stdout</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-value str">'/dev/null'</span>, <span class="ruby-value str">'a'</span>)
728
+ 68: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">reopen</span>(<span class="ruby-identifier">$stdout</span>)
729
+ 69:
730
+ 70: <span class="ruby-ivar">@log</span>.<span class="ruby-identifier">info</span>(<span class="ruby-node">&quot;The process is running as daemon now with PID #{@pid}&quot;</span>)
731
+ 71: <span class="ruby-keyword kw">end</span></pre>
711
732
  </div>
712
733
 
713
734
  </div>
@@ -741,9 +762,9 @@ better call it before you exit.
741
762
  <div class="method-source-code"
742
763
  id="stop-source">
743
764
  <pre>
744
- <span class="ruby-comment cmt"># File lib/daemon/Daemon.rb, line 73</span>
745
- 73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>
746
- 74: <span class="ruby-keyword kw">end</span></pre>
765
+ <span class="ruby-comment cmt"># File lib/daemon/Daemon.rb, line 75</span>
766
+ 75: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">stop</span>
767
+ 76: <span class="ruby-keyword kw">end</span></pre>
747
768
  </div>
748
769
 
749
770
  </div>
@@ -71,6 +71,8 @@
71
71
 
72
72
  <li><a href="#method-c-new">::new</a></li>
73
73
 
74
+ <li><a href="#method-i-cached">#cached</a></li>
75
+
74
76
  <li><a href="#method-i-flush">#flush</a></li>
75
77
 
76
78
  <li><a href="#method-i-load">#load</a></li>
@@ -148,6 +150,8 @@
148
150
 
149
151
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
150
152
 
153
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
154
+
151
155
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
152
156
 
153
157
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -226,6 +230,8 @@
226
230
 
227
231
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
228
232
 
233
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
234
+
229
235
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
230
236
 
231
237
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -258,6 +264,8 @@
258
264
 
259
265
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
260
266
 
267
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
268
+
261
269
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
262
270
 
263
271
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -538,6 +546,8 @@
538
546
 
539
547
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
540
548
 
549
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
550
+
541
551
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
542
552
 
543
553
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -564,8 +574,6 @@
564
574
 
565
575
  <li><a href="../String.html">String</a></li>
566
576
 
567
- <li><a href="../StringIO.html">StringIO</a></li>
568
-
569
577
  </ul>
570
578
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
571
579
  </div>
@@ -621,17 +629,17 @@ occasions during the program execution.
621
629
  <div class="method-source-code"
622
630
  id="new-source">
623
631
  <pre>
624
- <span class="ruby-comment cmt"># File lib/DataCache.rb, line 53</span>
625
- 53: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
626
- 54: <span class="ruby-identifier">resize</span>
627
- 55: <span class="ruby-identifier">flush</span>
628
- 56: <span class="ruby-comment cmt"># Counter for the number of writes to the cache.</span>
629
- 57: <span class="ruby-ivar">@stores</span> = <span class="ruby-value">0</span>
630
- 58: <span class="ruby-comment cmt"># Counter for the number of found values.</span>
631
- 59: <span class="ruby-ivar">@hits</span> = <span class="ruby-value">0</span>
632
- 60: <span class="ruby-comment cmt"># Counter for the number of not found values.</span>
633
- 61: <span class="ruby-ivar">@misses</span> = <span class="ruby-value">0</span>
634
- 62: <span class="ruby-keyword kw">end</span></pre>
632
+ <span class="ruby-comment cmt"># File lib/DataCache.rb, line 54</span>
633
+ 54: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
634
+ 55: <span class="ruby-identifier">resize</span>
635
+ 56: <span class="ruby-identifier">flush</span>
636
+ 57: <span class="ruby-comment cmt"># Counter for the number of writes to the cache.</span>
637
+ 58: <span class="ruby-ivar">@stores</span> = <span class="ruby-value">0</span>
638
+ 59: <span class="ruby-comment cmt"># Counter for the number of found values.</span>
639
+ 60: <span class="ruby-ivar">@hits</span> = <span class="ruby-value">0</span>
640
+ 61: <span class="ruby-comment cmt"># Counter for the number of not found values.</span>
641
+ 62: <span class="ruby-ivar">@misses</span> = <span class="ruby-value">0</span>
642
+ 63: <span class="ruby-keyword kw">end</span></pre>
635
643
  </div>
636
644
 
637
645
  </div>
@@ -648,6 +656,50 @@ occasions during the program execution.
648
656
  <h3 class="section-header">Public Instance Methods</h3>
649
657
 
650
658
 
659
+ <div id="cached-method" class="method-detail ">
660
+ <a name="method-i-cached"></a>
661
+
662
+ <div class="method-heading">
663
+
664
+ <span class="method-name">cached</span><span
665
+ class="method-args">(key)</span>
666
+ <span class="method-click-advice">click to toggle source</span>
667
+
668
+ </div>
669
+
670
+ <div class="method-description">
671
+
672
+ <p>
673
+ If we have a value for the <em>key</em>, return the value. Otherwise call
674
+ the block to compute the value, store it and return it.
675
+ </p>
676
+
677
+
678
+
679
+ <div class="method-source-code"
680
+ id="cached-source">
681
+ <pre>
682
+ <span class="ruby-comment cmt"># File lib/DataCache.rb, line 116</span>
683
+ 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">cached</span>(<span class="ruby-identifier">key</span>)
684
+ 117: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">key</span>)
685
+ 118: <span class="ruby-identifier">e</span> = <span class="ruby-ivar">@entries</span>[<span class="ruby-identifier">key</span>]
686
+ 119: <span class="ruby-ivar">@hits</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
687
+ 120: <span class="ruby-identifier">e</span>.<span class="ruby-identifier">value</span>
688
+ 121: <span class="ruby-keyword kw">else</span>
689
+ 122: <span class="ruby-ivar">@misses</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
690
+ 123: <span class="ruby-identifier">store</span>(<span class="ruby-keyword kw">yield</span>, <span class="ruby-identifier">key</span>)
691
+ 124: <span class="ruby-keyword kw">end</span>
692
+ 125: <span class="ruby-keyword kw">end</span></pre>
693
+ </div>
694
+
695
+ </div>
696
+
697
+
698
+
699
+
700
+ </div>
701
+
702
+
651
703
  <div id="flush-method" class="method-detail ">
652
704
  <a name="method-i-flush"></a>
653
705
 
@@ -671,10 +723,10 @@ all data values are lost.
671
723
  <div class="method-source-code"
672
724
  id="flush-source">
673
725
  <pre>
674
- <span class="ruby-comment cmt"># File lib/DataCache.rb, line 75</span>
675
- 75: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">flush</span>
676
- 76: <span class="ruby-ivar">@entries</span> = {}
677
- 77: <span class="ruby-keyword kw">end</span></pre>
726
+ <span class="ruby-comment cmt"># File lib/DataCache.rb, line 76</span>
727
+ 76: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">flush</span>
728
+ 77: <span class="ruby-ivar">@entries</span> = {}
729
+ 78: <span class="ruby-keyword kw">end</span></pre>
678
730
  </div>
679
731
 
680
732
  </div>
@@ -708,16 +760,16 @@ not found, nil is returned.
708
760
  <div class="method-source-code"
709
761
  id="load-source">
710
762
  <pre>
711
- <span class="ruby-comment cmt"># File lib/DataCache.rb, line 103</span>
712
- 103: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">load</span>(<span class="ruby-identifier">key</span>)
713
- 104: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">e</span> = <span class="ruby-ivar">@entries</span>[<span class="ruby-identifier">key</span>])
714
- 105: <span class="ruby-ivar">@hits</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
715
- 106: <span class="ruby-identifier">e</span>.<span class="ruby-identifier">value</span>
716
- 107: <span class="ruby-keyword kw">else</span>
717
- 108: <span class="ruby-ivar">@misses</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
718
- 109: <span class="ruby-keyword kw">nil</span>
719
- 110: <span class="ruby-keyword kw">end</span>
720
- 111: <span class="ruby-keyword kw">end</span></pre>
763
+ <span class="ruby-comment cmt"># File lib/DataCache.rb, line 104</span>
764
+ 104: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">load</span>(<span class="ruby-identifier">key</span>)
765
+ 105: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">e</span> = <span class="ruby-ivar">@entries</span>[<span class="ruby-identifier">key</span>])
766
+ 106: <span class="ruby-ivar">@hits</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
767
+ 107: <span class="ruby-identifier">e</span>.<span class="ruby-identifier">value</span>
768
+ 108: <span class="ruby-keyword kw">else</span>
769
+ 109: <span class="ruby-ivar">@misses</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
770
+ 110: <span class="ruby-keyword kw">nil</span>
771
+ 111: <span class="ruby-keyword kw">end</span>
772
+ 112: <span class="ruby-keyword kw">end</span></pre>
721
773
  </div>
722
774
 
723
775
  </div>
@@ -750,14 +802,14 @@ For now, we use this randomly determined size.
750
802
  <div class="method-source-code"
751
803
  id="resize-source">
752
804
  <pre>
753
- <span class="ruby-comment cmt"># File lib/DataCache.rb, line 65</span>
754
- 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resize</span>(<span class="ruby-identifier">size</span> = <span class="ruby-value">100000</span>)
755
- 66: <span class="ruby-ivar">@highWaterMark</span> = <span class="ruby-identifier">size</span>
756
- 67: <span class="ruby-comment cmt"># Flushing out the least used entries is fairly expensive. So we only</span>
757
- 68: <span class="ruby-comment cmt"># want to do this once in a while. The lowWaterMark determines how much</span>
758
- 69: <span class="ruby-comment cmt"># of the entries will survive the flush.</span>
759
- 70: <span class="ruby-ivar">@lowWaterMark</span> = <span class="ruby-identifier">size</span> * <span class="ruby-value">0.9</span>
760
- 71: <span class="ruby-keyword kw">end</span></pre>
805
+ <span class="ruby-comment cmt"># File lib/DataCache.rb, line 66</span>
806
+ 66: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resize</span>(<span class="ruby-identifier">size</span> = <span class="ruby-value">100000</span>)
807
+ 67: <span class="ruby-ivar">@highWaterMark</span> = <span class="ruby-identifier">size</span>
808
+ 68: <span class="ruby-comment cmt"># Flushing out the least used entries is fairly expensive. So we only</span>
809
+ 69: <span class="ruby-comment cmt"># want to do this once in a while. The lowWaterMark determines how much</span>
810
+ 70: <span class="ruby-comment cmt"># of the entries will survive the flush.</span>
811
+ 71: <span class="ruby-ivar">@lowWaterMark</span> = <span class="ruby-identifier">size</span> * <span class="ruby-value">0.9</span>
812
+ 72: <span class="ruby-keyword kw">end</span></pre>
761
813
  </div>
762
814
 
763
815
  </div>
@@ -792,25 +844,25 @@ cache again. You cannot store nil values!
792
844
  <div class="method-source-code"
793
845
  id="store-source">
794
846
  <pre>
795
- <span class="ruby-comment cmt"># File lib/DataCache.rb, line 82</span>
796
- 82: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">store</span>(<span class="ruby-identifier">value</span>, <span class="ruby-identifier">key</span>)
797
- 83: <span class="ruby-ivar">@stores</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
798
- 84:
799
- 85: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@highWaterMark</span>
800
- 86: <span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@lowWaterMark</span>
801
- 87: <span class="ruby-comment cmt"># How many entries do we need to delete to get to the low watermark?</span>
802
- 88: <span class="ruby-identifier">toDelete</span> = <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lowWaterMark</span>
803
- 89: <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">delete_if</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">foo</span>, <span class="ruby-identifier">e</span><span class="ruby-operator">|</span>
804
- 90: <span class="ruby-comment cmt"># Hit counts age with every cleanup.</span>
805
- 91: (<span class="ruby-identifier">e</span>.<span class="ruby-identifier">hits</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">toDelete</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
806
- 92: <span class="ruby-keyword kw">end</span>
807
- 93: <span class="ruby-keyword kw">end</span>
808
- 94: <span class="ruby-keyword kw">end</span>
809
- 95:
810
- 96: <span class="ruby-ivar">@entries</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-constant">DataCacheEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">value</span>)
811
- 97:
812
- 98: <span class="ruby-identifier">value</span>
813
- 99: <span class="ruby-keyword kw">end</span></pre>
847
+ <span class="ruby-comment cmt"># File lib/DataCache.rb, line 83</span>
848
+ 83: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">store</span>(<span class="ruby-identifier">value</span>, <span class="ruby-identifier">key</span>)
849
+ 84: <span class="ruby-ivar">@stores</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
850
+ 85:
851
+ 86: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@highWaterMark</span>
852
+ 87: <span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@lowWaterMark</span>
853
+ 88: <span class="ruby-comment cmt"># How many entries do we need to delete to get to the low watermark?</span>
854
+ 89: <span class="ruby-identifier">toDelete</span> = <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lowWaterMark</span>
855
+ 90: <span class="ruby-ivar">@entries</span>.<span class="ruby-identifier">delete_if</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">foo</span>, <span class="ruby-identifier">e</span><span class="ruby-operator">|</span>
856
+ 91: <span class="ruby-comment cmt"># Hit counts age with every cleanup.</span>
857
+ 92: (<span class="ruby-identifier">e</span>.<span class="ruby-identifier">hits</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> (<span class="ruby-identifier">toDelete</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&gt;=</span> <span class="ruby-value">0</span>
858
+ 93: <span class="ruby-keyword kw">end</span>
859
+ 94: <span class="ruby-keyword kw">end</span>
860
+ 95: <span class="ruby-keyword kw">end</span>
861
+ 96:
862
+ 97: <span class="ruby-ivar">@entries</span>[<span class="ruby-identifier">key</span>] = <span class="ruby-constant">DataCacheEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">value</span>)
863
+ 98:
864
+ 99: <span class="ruby-identifier">value</span>
865
+ 100: <span class="ruby-keyword kw">end</span></pre>
814
866
  </div>
815
867
 
816
868
  </div>
@@ -841,10 +893,10 @@ cache again. You cannot store nil values!
841
893
  <div class="method-source-code"
842
894
  id="to-s-source">
843
895
  <pre>
844
- <span class="ruby-comment cmt"># File lib/DataCache.rb, line 113</span>
845
- 113: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
846
- 114: <span class="ruby-value str">Entries: #{@entries.size} Stores: #{@stores}Hits: #{@hits} Misses: #{@misses}Hit Rate: #{@hits * 100.0 / (@hits + @misses)}%</span>
847
- 115: <span class="ruby-keyword kw">end</span></pre>
896
+ <span class="ruby-comment cmt"># File lib/DataCache.rb, line 127</span>
897
+ 127: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
898
+ 128: <span class="ruby-value str">Entries: #{@entries.size} Stores: #{@stores}Hits: #{@hits} Misses: #{@misses}Hit Rate: #{@hits * 100.0 / (@hits + @misses)}%</span>
899
+ 129: <span class="ruby-keyword kw">end</span></pre>
848
900
  </div>
849
901
 
850
902
  </div>