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
@@ -127,6 +127,8 @@
127
127
 
128
128
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
129
129
 
130
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
131
+
130
132
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
131
133
 
132
134
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -205,6 +207,8 @@
205
207
 
206
208
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
207
209
 
210
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
211
+
208
212
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
209
213
 
210
214
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -237,6 +241,8 @@
237
241
 
238
242
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
239
243
 
244
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
245
+
240
246
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
241
247
 
242
248
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -517,6 +523,8 @@
517
523
 
518
524
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
519
525
 
526
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
527
+
520
528
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
521
529
 
522
530
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -543,8 +551,6 @@
543
551
 
544
552
  <li><a href="../String.html">String</a></li>
545
553
 
546
- <li><a href="../StringIO.html">StringIO</a></li>
547
-
548
554
  </ul>
549
555
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
550
556
  </div>
@@ -596,29 +602,29 @@ process status sheets.
596
602
  <div class="method-source-code"
597
603
  id="new-source">
598
604
  <pre>
599
- <span class="ruby-comment cmt"># File lib/StatusSheetReceiver.rb, line 20</span>
600
- 20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">appName</span>)
601
- 21: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">appName</span>, <span class="ruby-value str">'status'</span>)
602
- 22:
603
- 23: <span class="ruby-ivar">@tj3clientOption</span> = <span class="ruby-value str">'check-ss'</span>
604
- 24:
605
- 25: <span class="ruby-comment cmt"># File name and directory settings.</span>
606
- 26: <span class="ruby-ivar">@sheetDir</span> = <span class="ruby-value str">'StatusSheets'</span>
607
- 27: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'StatusSheetTemplates'</span>
608
- 28: <span class="ruby-ivar">@failedMailsDir</span> = <span class="ruby-node">&quot;#{@sheetDir}/FailedMails&quot;</span>
609
- 29: <span class="ruby-ivar">@failedSheetsDir</span> = <span class="ruby-node">&quot;#{@sheetDir}/FailedSheets&quot;</span>
610
- 30: <span class="ruby-comment cmt"># This file contains the time intervals that the StatusSheetReceiver will</span>
611
- 31: <span class="ruby-comment cmt"># accept as a valid interval.</span>
612
- 32: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-node">&quot;#{@templateDir}/acceptable_intervals&quot;</span>
613
- 33: <span class="ruby-comment cmt"># The log file</span>
614
- 34: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'statussheets.log'</span>
615
- 35:
616
- 36: <span class="ruby-comment cmt"># Regular expression to identify status sheets.</span>
617
- 37: <span class="ruby-ivar">@sheetHeader</span> = <span class="ruby-regexp re">/^[ ]*statussheet\s([a-z][a-z0-9_]*)\s[0-9\-:+]*\s-\s([0-9]*-[0-9]*-[0-9]*)/</span>
618
- 38: <span class="ruby-comment cmt"># Regular expression to extract the sheet signature (time period).</span>
619
- 39: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-regexp re">/^[ ]*statussheet\s[a-z][a-z0-9_]*\s([0-9:\-+]*\s-\s[0-9:\-+]*)/</span>
620
- 40: <span class="ruby-ivar">@emailSubject</span> = <span class="ruby-value str">&quot;Status report from %s for %s&quot;</span>
621
- 41: <span class="ruby-keyword kw">end</span></pre>
605
+ <span class="ruby-comment cmt"># File lib/StatusSheetReceiver.rb, line 21</span>
606
+ 21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">appName</span>)
607
+ 22: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">appName</span>, <span class="ruby-value str">'status'</span>)
608
+ 23:
609
+ 24: <span class="ruby-ivar">@tj3clientOption</span> = <span class="ruby-value str">'check-ss'</span>
610
+ 25:
611
+ 26: <span class="ruby-comment cmt"># File name and directory settings.</span>
612
+ 27: <span class="ruby-ivar">@sheetDir</span> = <span class="ruby-value str">'StatusSheets'</span>
613
+ 28: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'StatusSheetTemplates'</span>
614
+ 29: <span class="ruby-ivar">@failedMailsDir</span> = <span class="ruby-node">&quot;#{@sheetDir}/FailedMails&quot;</span>
615
+ 30: <span class="ruby-ivar">@failedSheetsDir</span> = <span class="ruby-node">&quot;#{@sheetDir}/FailedSheets&quot;</span>
616
+ 31: <span class="ruby-comment cmt"># This file contains the time intervals that the StatusSheetReceiver will</span>
617
+ 32: <span class="ruby-comment cmt"># accept as a valid interval.</span>
618
+ 33: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-node">&quot;#{@templateDir}/acceptable_intervals&quot;</span>
619
+ 34: <span class="ruby-comment cmt"># The log file</span>
620
+ 35: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'statussheets.log'</span>
621
+ 36:
622
+ 37: <span class="ruby-comment cmt"># Regular expression to identify status sheets.</span>
623
+ 38: <span class="ruby-ivar">@sheetHeader</span> = <span class="ruby-regexp re">/^[ ]*statussheet\s([a-z][a-z0-9_]*)\s[0-9\-:+]*\s-\s([0-9]*-[0-9]*-[0-9]*)/</span>
624
+ 39: <span class="ruby-comment cmt"># Regular expression to extract the sheet signature (time period).</span>
625
+ 40: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-regexp re">/^[ ]*statussheet\s[a-z][a-z0-9_]*\s([0-9:\-+]*\s-\s[0-9:\-+]*)/</span>
626
+ 41: <span class="ruby-ivar">@emailSubject</span> = <span class="ruby-value str">&quot;Status report from %s for %s&quot;</span>
627
+ 42: <span class="ruby-keyword kw">end</span></pre>
622
628
  </div>
623
629
 
624
630
  </div>
@@ -133,6 +133,8 @@
133
133
 
134
134
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
135
135
 
136
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
137
+
136
138
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
137
139
 
138
140
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -211,6 +213,8 @@
211
213
 
212
214
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
213
215
 
216
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
217
+
214
218
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
215
219
 
216
220
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -243,6 +247,8 @@
243
247
 
244
248
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
245
249
 
250
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
251
+
246
252
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
247
253
 
248
254
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -523,6 +529,8 @@
523
529
 
524
530
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
525
531
 
532
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
533
+
526
534
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
527
535
 
528
536
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -549,8 +557,6 @@
549
557
 
550
558
  <li><a href="../String.html">String</a></li>
551
559
 
552
- <li><a href="../StringIO.html">StringIO</a></li>
553
-
554
560
  </ul>
555
561
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
556
562
  </div>
@@ -605,13 +611,13 @@ Create a new object and set some default values.
605
611
  <div class="method-source-code"
606
612
  id="new-source">
607
613
  <pre>
608
- <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 60</span>
609
- 60: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">report</span>)
610
- 61: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">report</span>)
611
- 62:
612
- 63: <span class="ruby-comment cmt"># A list of ManagerStatusRecord objects, one for each manager.</span>
613
- 64: <span class="ruby-ivar">@managers</span> = []
614
- 65: <span class="ruby-keyword kw">end</span></pre>
614
+ <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 61</span>
615
+ 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">report</span>)
616
+ 62: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">report</span>)
617
+ 63:
618
+ 64: <span class="ruby-comment cmt"># A list of ManagerStatusRecord objects, one for each manager.</span>
619
+ 65: <span class="ruby-ivar">@managers</span> = []
620
+ 66: <span class="ruby-keyword kw">end</span></pre>
615
621
  </div>
616
622
 
617
623
  </div>
@@ -651,72 +657,73 @@ generate an abstract version of the status sheet first.
651
657
  <div class="method-source-code"
652
658
  id="generate-ntermediate-ormat-source">
653
659
  <pre>
654
- <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 69</span>
655
- 69: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateIntermediateFormat</span>
656
- 70: <span class="ruby-keyword kw">super</span>
657
- 71:
658
- 72: <span class="ruby-comment cmt"># Prepare the resource list.</span>
659
- 73: <span class="ruby-identifier">resourceList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>)
660
- 74: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortResources'</span>))
661
- 75: <span class="ruby-identifier">resourceList</span> = <span class="ruby-identifier">filterResourceList</span>(<span class="ruby-identifier">resourceList</span>, <span class="ruby-keyword kw">nil</span>,
662
- 76: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideResource'</span>),
663
- 77: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupResource'</span>),
664
- 78: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'openNodes'</span>))
665
- 79: <span class="ruby-comment cmt"># Prepare a template for the Query we will use to get all the data.</span>
666
- 80: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>)[<span class="ruby-value">0</span>]
667
- 81: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
668
- 82: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
669
- 83: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scenarioIdx</span>,
670
- 84: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'loadUnit'</span>),
671
- 85: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'numberFormat'</span>),
672
- 86: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'timeFormat'</span>),
673
- 87: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'currencyFormat'</span>),
674
- 88: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>),
675
- 89: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'costAccount'</span>),
676
- 90: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'revenueAccount'</span>) }
677
- 91: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
678
- 92: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">sort!</span>
679
- 93:
680
- 94: <span class="ruby-comment cmt"># Prepare the task list.</span>
681
- 95: <span class="ruby-identifier">taskList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>)
682
- 96: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortTasks'</span>))
683
- 97: <span class="ruby-identifier">taskList</span> = <span class="ruby-identifier">filterTaskList</span>(<span class="ruby-identifier">taskList</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideTask'</span>),
684
- 98: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupTask'</span>), <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'openNodes'</span>))
685
- 99: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">sort!</span>
686
- 100:
687
- 101: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
688
- 102: <span class="ruby-comment cmt"># Status sheets only make sense for leaf resources.</span>
689
- 103: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">leaf?</span>
690
- 104:
691
- 105: <span class="ruby-comment cmt"># Collect a list of tasks that the Resource is responsible for and</span>
692
- 106: <span class="ruby-comment cmt"># don't have a parent task that the Resource is responsible for.</span>
693
- 107: <span class="ruby-identifier">topLevelTasks</span> = []
694
- 108: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
695
- 109: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'responsible'</span>, <span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>) <span class="ruby-operator">&amp;&amp;</span>
696
- 110: (<span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
697
- 111: <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>[<span class="ruby-value str">'responsible'</span>, <span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>))
698
- 112: <span class="ruby-identifier">topLevelTasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">task</span>
699
- 113: <span class="ruby-keyword kw">end</span>
700
- 114: <span class="ruby-keyword kw">end</span>
701
- 115:
702
- 116: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">topLevelTasks</span>.<span class="ruby-identifier">empty?</span>
660
+ <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 70</span>
661
+ 70: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateIntermediateFormat</span>
662
+ 71: <span class="ruby-keyword kw">super</span>
663
+ 72:
664
+ 73: <span class="ruby-comment cmt"># Prepare the resource list.</span>
665
+ 74: <span class="ruby-identifier">resourceList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resources</span>)
666
+ 75: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortResources'</span>))
667
+ 76: <span class="ruby-identifier">resourceList</span> = <span class="ruby-identifier">filterResourceList</span>(<span class="ruby-identifier">resourceList</span>, <span class="ruby-keyword kw">nil</span>,
668
+ 77: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideResource'</span>),
669
+ 78: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupResource'</span>),
670
+ 79: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'openNodes'</span>))
671
+ 80: <span class="ruby-comment cmt"># Prepare a template for the Query we will use to get all the data.</span>
672
+ 81: <span class="ruby-identifier">scenarioIdx</span> = <span class="ruby-identifier">a</span>(<span class="ruby-value str">'scenarios'</span>)[<span class="ruby-value">0</span>]
673
+ 82: <span class="ruby-identifier">queryAttrs</span> = { <span class="ruby-value str">'project'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>,
674
+ 83: <span class="ruby-value str">'scopeProperty'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">nil</span>,
675
+ 84: <span class="ruby-value str">'scenarioIdx'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">scenarioIdx</span>,
676
+ 85: <span class="ruby-value str">'loadUnit'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'loadUnit'</span>),
677
+ 86: <span class="ruby-value str">'numberFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'numberFormat'</span>),
678
+ 87: <span class="ruby-value str">'timeFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'timeFormat'</span>),
679
+ 88: <span class="ruby-value str">'currencyFormat'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'currencyFormat'</span>),
680
+ 89: <span class="ruby-value str">'start'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>), <span class="ruby-value str">'end'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>),
681
+ 90: <span class="ruby-value str">'costAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'costAccount'</span>),
682
+ 91: <span class="ruby-value str">'revenueAccount'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'revenueAccount'</span>) }
683
+ 92: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">query</span> = <span class="ruby-constant">Query</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">queryAttrs</span>)
684
+ 93: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">sort!</span>
685
+ 94:
686
+ 95: <span class="ruby-comment cmt"># Prepare the task list.</span>
687
+ 96: <span class="ruby-identifier">taskList</span> = <span class="ruby-constant">PropertyList</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">tasks</span>)
688
+ 97: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">setSorting</span>(<span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'sortTasks'</span>))
689
+ 98: <span class="ruby-identifier">taskList</span> = <span class="ruby-identifier">filterTaskList</span>(<span class="ruby-identifier">taskList</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'hideTask'</span>),
690
+ 99: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'rollupTask'</span>),
691
+ 100: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">get</span>(<span class="ruby-value str">'openNodes'</span>))
692
+ 101: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">sort!</span>
693
+ 102:
694
+ 103: <span class="ruby-identifier">resourceList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
695
+ 104: <span class="ruby-comment cmt"># Status sheets only make sense for leaf resources.</span>
696
+ 105: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">leaf?</span>
697
+ 106:
698
+ 107: <span class="ruby-comment cmt"># Collect a list of tasks that the Resource is responsible for and</span>
699
+ 108: <span class="ruby-comment cmt"># don't have a parent task that the Resource is responsible for.</span>
700
+ 109: <span class="ruby-identifier">topLevelTasks</span> = []
701
+ 110: <span class="ruby-identifier">taskList</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
702
+ 111: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'responsible'</span>, <span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>) <span class="ruby-operator">&amp;&amp;</span>
703
+ 112: (<span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span>
704
+ 113: <span class="ruby-operator">!</span><span class="ruby-identifier">task</span>.<span class="ruby-identifier">parent</span>[<span class="ruby-value str">'responsible'</span>, <span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">resource</span>))
705
+ 114: <span class="ruby-identifier">topLevelTasks</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">task</span>
706
+ 115: <span class="ruby-keyword kw">end</span>
707
+ 116: <span class="ruby-keyword kw">end</span>
703
708
  117:
704
- 118: <span class="ruby-comment cmt"># Store the list of top-level responsibilities.</span>
705
- 119: <span class="ruby-ivar">@managers</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">manager</span> = <span class="ruby-constant">ManagerStatusRecord</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">resource</span>))
706
- 120:
707
- 121: <span class="ruby-identifier">topLevelTasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
708
- 122: <span class="ruby-comment cmt"># Get a list of all the current Journal entries for this task and</span>
709
- 123: <span class="ruby-comment cmt"># all it's sub tasks.</span>
710
- 124: <span class="ruby-identifier">entries</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">currentEntriesR</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>), <span class="ruby-identifier">task</span>,
711
- 125: <span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
712
- 126: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">empty?</span>
713
- 127:
714
- 128: <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">responsibilities</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">ManagerResponsibilities</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">entries</span>)
715
- 129: <span class="ruby-keyword kw">end</span>
716
- 130: <span class="ruby-comment cmt"># Sort the responsibilities list according to the original taskList.</span>
717
- 131: <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">sort!</span>(<span class="ruby-identifier">taskList</span>)
718
- 132: <span class="ruby-keyword kw">end</span>
719
- 133: <span class="ruby-keyword kw">end</span></pre>
709
+ 118: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">topLevelTasks</span>.<span class="ruby-identifier">empty?</span>
710
+ 119:
711
+ 120: <span class="ruby-comment cmt"># Store the list of top-level responsibilities.</span>
712
+ 121: <span class="ruby-ivar">@managers</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">manager</span> = <span class="ruby-constant">ManagerStatusRecord</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">resource</span>))
713
+ 122:
714
+ 123: <span class="ruby-identifier">topLevelTasks</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">task</span><span class="ruby-operator">|</span>
715
+ 124: <span class="ruby-comment cmt"># Get a list of all the current Journal entries for this task and</span>
716
+ 125: <span class="ruby-comment cmt"># all it's sub tasks.</span>
717
+ 126: <span class="ruby-identifier">entries</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'journal'</span>].<span class="ruby-identifier">currentEntriesR</span>(<span class="ruby-identifier">a</span>(<span class="ruby-value str">'end'</span>), <span class="ruby-identifier">task</span>,
718
+ 127: <span class="ruby-value">0</span>, <span class="ruby-identifier">a</span>(<span class="ruby-value str">'start'</span>) <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
719
+ 128: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entries</span>.<span class="ruby-identifier">empty?</span>
720
+ 129:
721
+ 130: <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">responsibilities</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">ManagerResponsibilities</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">entries</span>)
722
+ 131: <span class="ruby-keyword kw">end</span>
723
+ 132: <span class="ruby-comment cmt"># Sort the responsibilities list according to the original taskList.</span>
724
+ 133: <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">sort!</span>(<span class="ruby-identifier">taskList</span>)
725
+ 134: <span class="ruby-keyword kw">end</span>
726
+ 135: <span class="ruby-keyword kw">end</span></pre>
720
727
  </div>
721
728
 
722
729
  </div>
@@ -749,74 +756,74 @@ Generate a time sheet in TJP syntax format.
749
756
  <div class="method-source-code"
750
757
  id="to-tjp-source">
751
758
  <pre>
752
- <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 136</span>
753
- 136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_tjp</span>
754
- 137:
755
- 138: <span class="ruby-comment cmt"># This String will hold the result.</span>
756
- 139: <span class="ruby-ivar">@file</span> = <span class="ruby-value str">''</span>
757
- 140:
758
- 141: <span class="ruby-comment cmt"># Iterate over all the ManagerStatusRecord objects.</span>
759
- 142: <span class="ruby-ivar">@managers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">manager</span><span class="ruby-operator">|</span>
760
- 143: <span class="ruby-identifier">resource</span> = <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">resource</span>
761
- 144: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;# --------8&lt;--------8&lt;--------\n&quot;</span>
762
- 145: <span class="ruby-comment cmt"># Generate the time sheet header</span>
763
- 146: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;statussheet #{resource.fullId} &quot;</span> <span class="ruby-operator">+</span>
764
- 147: <span class="ruby-node">&quot;#{a('start')} - #{a('end')} {\n\n&quot;</span>
765
- 148:
766
- 149: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">responsibilities</span>.<span class="ruby-identifier">empty?</span>
767
- 150: <span class="ruby-comment cmt"># If there were no assignments, just write a comment.</span>
768
- 151: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # This resource is not responsible for any task.\n\n&quot;</span>
769
- 152: <span class="ruby-keyword kw">else</span>
770
- 153: <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">responsibilities</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">responsibility</span><span class="ruby-operator">|</span>
771
- 154: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">responsibility</span>.<span class="ruby-identifier">task</span>
772
- 155: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # Task: #{task.name}\n&quot;</span>
773
- 156:
774
- 157: <span class="ruby-identifier">responsibility</span>.<span class="ruby-identifier">journalEntries</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
775
- 158: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">property</span>
776
- 159: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; task #{task.fullId} {\n&quot;</span>
777
- 160: <span class="ruby-identifier">alertLevel</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">entry</span>.<span class="ruby-identifier">alertLevel</span>][<span class="ruby-value">0</span>]
778
- 161: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # status #{alertLevel} \&quot;#{entry.headline}\&quot; {\n&quot;</span>
779
- 162: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # # Date: #{entry.date}\n&quot;</span>
780
- 163: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">tsRecord</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">timeSheetRecord</span>)
781
- 164: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # # &quot;</span>
782
- 165: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Work: #{tsRecord.actualWorkPercent.to_i}% &quot;</span>
783
- 166: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">actualWorkPercent</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">planWorkPercent</span>
784
- 167: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;(#{tsRecord.planWorkPercent.to_i}%) &quot;</span>
785
- 168: <span class="ruby-keyword kw">end</span>
786
- 169: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">remaining</span>
787
- 170: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; Remaining: #{tsRecord.actualRemaining}d &quot;</span>
788
- 171: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">actualRemaining</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">planRemaining</span>
789
- 172: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;(#{tsRecord.planRemaining}d) &quot;</span>
790
- 173: <span class="ruby-keyword kw">end</span>
791
- 174: <span class="ruby-keyword kw">else</span>
792
- 175: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; End: &quot;</span> <span class="ruby-operator">+</span>
793
- 176: <span class="ruby-node">&quot;#{tsRecord.actualEnd.to_s(a('timeFormat'))} &quot;</span>
794
- 177: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">actualEnd</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">planEnd</span>
795
- 178: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;(#{tsRecord.planEnd.to_s(a('timeFormat'))}) &quot;</span>
796
- 179: <span class="ruby-keyword kw">end</span>
797
- 180: <span class="ruby-keyword kw">end</span>
798
- 181: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n&quot;</span>
799
- 182: <span class="ruby-keyword kw">end</span>
800
- 183: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # author #{entry.author.fullId}\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">author</span>
801
- 184: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>
802
- 185: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # summary -8&lt;-\n&quot;</span> <span class="ruby-operator">+</span>
803
- 186: <span class="ruby-identifier">indentBlock</span>(<span class="ruby-value">4</span>, <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span>) <span class="ruby-operator">+</span>
804
- 187: <span class="ruby-node">&quot; # -&gt;8-\n&quot;</span>
805
- 188: <span class="ruby-keyword kw">end</span>
806
- 189: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>
807
- 190: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # details -8&lt;-\n&quot;</span> <span class="ruby-operator">+</span>
808
- 191: <span class="ruby-identifier">indentBlock</span>(<span class="ruby-value">4</span>, <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span>) <span class="ruby-operator">+</span>
809
- 192: <span class="ruby-node">&quot; # -&gt;8-\n&quot;</span>
810
- 193: <span class="ruby-keyword kw">end</span>
811
- 194: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # }\n }\n\n&quot;</span>
812
- 195:
813
- 196: <span class="ruby-keyword kw">end</span>
814
- 197: <span class="ruby-keyword kw">end</span>
815
- 198: <span class="ruby-keyword kw">end</span>
816
- 199: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;}\n# --------&gt;8--------&gt;8--------\n\n&quot;</span>
817
- 200: <span class="ruby-keyword kw">end</span>
818
- 201: <span class="ruby-ivar">@file</span>
819
- 202: <span class="ruby-keyword kw">end</span></pre>
759
+ <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 138</span>
760
+ 138: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_tjp</span>
761
+ 139:
762
+ 140: <span class="ruby-comment cmt"># This String will hold the result.</span>
763
+ 141: <span class="ruby-ivar">@file</span> = <span class="ruby-value str">''</span>
764
+ 142:
765
+ 143: <span class="ruby-comment cmt"># Iterate over all the ManagerStatusRecord objects.</span>
766
+ 144: <span class="ruby-ivar">@managers</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">manager</span><span class="ruby-operator">|</span>
767
+ 145: <span class="ruby-identifier">resource</span> = <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">resource</span>
768
+ 146: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;# --------8&lt;--------8&lt;--------\n&quot;</span>
769
+ 147: <span class="ruby-comment cmt"># Generate the time sheet header</span>
770
+ 148: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;statussheet #{resource.fullId} &quot;</span> <span class="ruby-operator">+</span>
771
+ 149: <span class="ruby-node">&quot;#{a('start')} - #{a('end')} {\n\n&quot;</span>
772
+ 150:
773
+ 151: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">responsibilities</span>.<span class="ruby-identifier">empty?</span>
774
+ 152: <span class="ruby-comment cmt"># If there were no assignments, just write a comment.</span>
775
+ 153: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # This resource is not responsible for any task.\n\n&quot;</span>
776
+ 154: <span class="ruby-keyword kw">else</span>
777
+ 155: <span class="ruby-identifier">manager</span>.<span class="ruby-identifier">responsibilities</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">responsibility</span><span class="ruby-operator">|</span>
778
+ 156: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">responsibility</span>.<span class="ruby-identifier">task</span>
779
+ 157: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # Task: #{task.name}\n&quot;</span>
780
+ 158:
781
+ 159: <span class="ruby-identifier">responsibility</span>.<span class="ruby-identifier">journalEntries</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
782
+ 160: <span class="ruby-identifier">task</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">property</span>
783
+ 161: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; task #{task.fullId} {\n&quot;</span>
784
+ 162: <span class="ruby-identifier">alertLevel</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'alertLevels'</span>][<span class="ruby-identifier">entry</span>.<span class="ruby-identifier">alertLevel</span>][<span class="ruby-value">0</span>]
785
+ 163: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # status #{alertLevel} \&quot;#{entry.headline}\&quot; {\n&quot;</span>
786
+ 164: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # # Date: #{entry.date}\n&quot;</span>
787
+ 165: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">tsRecord</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">timeSheetRecord</span>)
788
+ 166: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # # &quot;</span>
789
+ 167: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Work: #{tsRecord.actualWorkPercent.to_i}% &quot;</span>
790
+ 168: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">actualWorkPercent</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">planWorkPercent</span>
791
+ 169: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;(#{tsRecord.planWorkPercent.to_i}%) &quot;</span>
792
+ 170: <span class="ruby-keyword kw">end</span>
793
+ 171: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">remaining</span>
794
+ 172: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; Remaining: #{tsRecord.actualRemaining}d &quot;</span>
795
+ 173: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">actualRemaining</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">planRemaining</span>
796
+ 174: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;(#{tsRecord.planRemaining}d) &quot;</span>
797
+ 175: <span class="ruby-keyword kw">end</span>
798
+ 176: <span class="ruby-keyword kw">else</span>
799
+ 177: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot; End: &quot;</span> <span class="ruby-operator">+</span>
800
+ 178: <span class="ruby-node">&quot;#{tsRecord.actualEnd.to_s(a('timeFormat'))} &quot;</span>
801
+ 179: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">actualEnd</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">tsRecord</span>.<span class="ruby-identifier">planEnd</span>
802
+ 180: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;(#{tsRecord.planEnd.to_s(a('timeFormat'))}) &quot;</span>
803
+ 181: <span class="ruby-keyword kw">end</span>
804
+ 182: <span class="ruby-keyword kw">end</span>
805
+ 183: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\n&quot;</span>
806
+ 184: <span class="ruby-keyword kw">end</span>
807
+ 185: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # author #{entry.author.fullId}\n&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">author</span>
808
+ 186: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>
809
+ 187: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # summary -8&lt;-\n&quot;</span> <span class="ruby-operator">+</span>
810
+ 188: <span class="ruby-identifier">indentBlock</span>(<span class="ruby-value">4</span>, <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">summary</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span>) <span class="ruby-operator">+</span>
811
+ 189: <span class="ruby-node">&quot; # -&gt;8-\n&quot;</span>
812
+ 190: <span class="ruby-keyword kw">end</span>
813
+ 191: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>
814
+ 192: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # details -8&lt;-\n&quot;</span> <span class="ruby-operator">+</span>
815
+ 193: <span class="ruby-identifier">indentBlock</span>(<span class="ruby-value">4</span>, <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">details</span>.<span class="ruby-identifier">richText</span>.<span class="ruby-identifier">inputText</span>) <span class="ruby-operator">+</span>
816
+ 194: <span class="ruby-node">&quot; # -&gt;8-\n&quot;</span>
817
+ 195: <span class="ruby-keyword kw">end</span>
818
+ 196: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot; # }\n }\n\n&quot;</span>
819
+ 197:
820
+ 198: <span class="ruby-keyword kw">end</span>
821
+ 199: <span class="ruby-keyword kw">end</span>
822
+ 200: <span class="ruby-keyword kw">end</span>
823
+ 201: <span class="ruby-ivar">@file</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;}\n# --------&gt;8--------&gt;8--------\n\n&quot;</span>
824
+ 202: <span class="ruby-keyword kw">end</span>
825
+ 203: <span class="ruby-ivar">@file</span>
826
+ 204: <span class="ruby-keyword kw">end</span></pre>
820
827
  </div>
821
828
 
822
829
  </div>
@@ -853,23 +860,23 @@ Generate a time sheet in TJP syntax format.
853
860
  <div class="method-source-code"
854
861
  id="indent-lock-source">
855
862
  <pre>
856
- <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 206</span>
857
- 206: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">indentBlock</span>(<span class="ruby-identifier">indent</span>, <span class="ruby-identifier">text</span>)
858
- 207: <span class="ruby-identifier">indentation</span> = <span class="ruby-value str">' '</span> * <span class="ruby-identifier">indent</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'# '</span>
859
- 208: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">indentation</span>
860
- 209: <span class="ruby-identifier">out</span> = <span class="ruby-value str">''</span>
861
- 210: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">each_utf8_char</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
862
- 211: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">empty?</span>
863
- 212: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">buffer</span>
864
- 213: <span class="ruby-identifier">buffer</span> = <span class="ruby-value str">''</span>
865
- 214: <span class="ruby-keyword kw">end</span>
866
- 215: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
867
- 216: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">indentation</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\n&quot;</span>
868
- 217: <span class="ruby-keyword kw">end</span>
869
- 218: <span class="ruby-comment cmt"># Make sure we always have a trailing line break</span>
870
- 219: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">out</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\n&quot;</span>
871
- 220: <span class="ruby-identifier">out</span>
872
- 221: <span class="ruby-keyword kw">end</span></pre>
863
+ <span class="ruby-comment cmt"># File lib/reports/StatusSheetReport.rb, line 208</span>
864
+ 208: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">indentBlock</span>(<span class="ruby-identifier">indent</span>, <span class="ruby-identifier">text</span>)
865
+ 209: <span class="ruby-identifier">indentation</span> = <span class="ruby-value str">' '</span> * <span class="ruby-identifier">indent</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'# '</span>
866
+ 210: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">indentation</span>
867
+ 211: <span class="ruby-identifier">out</span> = <span class="ruby-value str">''</span>
868
+ 212: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">each_utf8_char</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
869
+ 213: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">buffer</span>.<span class="ruby-identifier">empty?</span>
870
+ 214: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">buffer</span>
871
+ 215: <span class="ruby-identifier">buffer</span> = <span class="ruby-value str">''</span>
872
+ 216: <span class="ruby-keyword kw">end</span>
873
+ 217: <span class="ruby-identifier">out</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
874
+ 218: <span class="ruby-identifier">buffer</span> = <span class="ruby-identifier">indentation</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\n&quot;</span>
875
+ 219: <span class="ruby-keyword kw">end</span>
876
+ 220: <span class="ruby-comment cmt"># Make sure we always have a trailing line break</span>
877
+ 221: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">out</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\n&quot;</span>
878
+ 222: <span class="ruby-identifier">out</span>
879
+ 223: <span class="ruby-keyword kw">end</span></pre>
873
880
  </div>
874
881
 
875
882
  </div>