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
@@ -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>
@@ -600,16 +606,16 @@ also contain a list of intervals that define off-duty periods or vacations.
600
606
  <div class="method-source-code"
601
607
  id="new-source">
602
608
  <pre>
603
- <span class="ruby-comment cmt"># File lib/Shift.rb, line 23</span>
604
- 23: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">project</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">parent</span>)
605
- 24: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">project</span>.<span class="ruby-identifier">shifts</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">parent</span>)
606
- 25: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">addShift</span>(<span class="ruby-keyword kw">self</span>)
607
- 26:
608
- 27: <span class="ruby-ivar">@data</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>, <span class="ruby-keyword kw">nil</span>)
609
- 28: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
610
- 29: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-constant">ShiftScenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">i</span>, <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">i</span>])
611
- 30: <span class="ruby-keyword kw">end</span>
612
- 31: <span class="ruby-keyword kw">end</span></pre>
609
+ <span class="ruby-comment cmt"># File lib/Shift.rb, line 24</span>
610
+ 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">project</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">parent</span>)
611
+ 25: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">project</span>.<span class="ruby-identifier">shifts</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">parent</span>)
612
+ 26: <span class="ruby-identifier">project</span>.<span class="ruby-identifier">addShift</span>(<span class="ruby-keyword kw">self</span>)
613
+ 27:
614
+ 28: <span class="ruby-ivar">@data</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>, <span class="ruby-keyword kw">nil</span>)
615
+ 29: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioCount</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
616
+ 30: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">i</span>] = <span class="ruby-constant">ShiftScenario</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">i</span>, <span class="ruby-ivar">@scenarioAttributes</span>[<span class="ruby-identifier">i</span>])
617
+ 31: <span class="ruby-keyword kw">end</span>
618
+ 32: <span class="ruby-keyword kw">end</span></pre>
613
619
  </div>
614
620
 
615
621
  </div>
@@ -652,10 +658,10 @@ it in <a href="ShiftScenario.html">ShiftScenario</a>.
652
658
  <div class="method-source-code"
653
659
  id="method-missing-source">
654
660
  <pre>
655
- <span class="ruby-comment cmt"># File lib/Shift.rb, line 37</span>
656
- 37: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">func</span>, <span class="ruby-identifier">scenarioIdx</span>, *<span class="ruby-identifier">args</span>)
657
- 38: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">method</span>(<span class="ruby-identifier">func</span>).<span class="ruby-identifier">call</span>(*<span class="ruby-identifier">args</span>)
658
- 39: <span class="ruby-keyword kw">end</span></pre>
661
+ <span class="ruby-comment cmt"># File lib/Shift.rb, line 38</span>
662
+ 38: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">method_missing</span>(<span class="ruby-identifier">func</span>, <span class="ruby-identifier">scenarioIdx</span>, *<span class="ruby-identifier">args</span>)
663
+ 39: <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenarioIdx</span>].<span class="ruby-identifier">method</span>(<span class="ruby-identifier">func</span>).<span class="ruby-identifier">call</span>(*<span class="ruby-identifier">args</span>)
664
+ 40: <span class="ruby-keyword kw">end</span></pre>
659
665
  </div>
660
666
 
661
667
  </div>
@@ -688,10 +694,10 @@ Return a reference to the <em>scenarioIdx</em>-th scenario.
688
694
  <div class="method-source-code"
689
695
  id="scenario-source">
690
696
  <pre>
691
- <span class="ruby-comment cmt"># File lib/Shift.rb, line 42</span>
692
- 42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scenarioIdx</span>)
693
- 43: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenarioIdx</span>]
694
- 44: <span class="ruby-keyword kw">end</span></pre>
697
+ <span class="ruby-comment cmt"># File lib/Shift.rb, line 43</span>
698
+ 43: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scenario</span>(<span class="ruby-identifier">scenarioIdx</span>)
699
+ 44: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@data</span>[<span class="ruby-identifier">scenarioIdx</span>]
700
+ 45: <span class="ruby-keyword kw">end</span></pre>
695
701
  </div>
696
702
 
697
703
  </div>
@@ -143,6 +143,8 @@
143
143
 
144
144
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
145
145
 
146
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
147
+
146
148
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
147
149
 
148
150
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -221,6 +223,8 @@
221
223
 
222
224
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
223
225
 
226
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
227
+
224
228
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
225
229
 
226
230
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -253,6 +257,8 @@
253
257
 
254
258
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
255
259
 
260
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
261
+
256
262
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
257
263
 
258
264
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -533,6 +539,8 @@
533
539
 
534
540
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
535
541
 
542
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
543
+
536
544
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
537
545
 
538
546
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -559,8 +567,6 @@
559
567
 
560
568
  <li><a href="../String.html">String</a></li>
561
569
 
562
- <li><a href="../StringIO.html">StringIO</a></li>
563
-
564
570
  </ul>
565
571
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
566
572
  </div>
@@ -650,11 +656,11 @@ defined shift with a time interval where the shift should be active.
650
656
  <div class="method-source-code"
651
657
  id="new-source">
652
658
  <pre>
653
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 25</span>
654
- 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">shiftScenario</span>, <span class="ruby-identifier">interval</span>)
655
- 26: <span class="ruby-ivar">@shiftScenario</span> = <span class="ruby-identifier">shiftScenario</span>
656
- 27: <span class="ruby-ivar">@interval</span> = <span class="ruby-identifier">interval</span>
657
- 28: <span class="ruby-keyword kw">end</span></pre>
659
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 26</span>
660
+ 26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">shiftScenario</span>, <span class="ruby-identifier">interval</span>)
661
+ 27: <span class="ruby-ivar">@shiftScenario</span> = <span class="ruby-identifier">shiftScenario</span>
662
+ 28: <span class="ruby-ivar">@interval</span> = <span class="ruby-identifier">interval</span>
663
+ 29: <span class="ruby-keyword kw">end</span></pre>
658
664
  </div>
659
665
 
660
666
  </div>
@@ -693,10 +699,10 @@ Check if date is withing the assignment period.
693
699
  <div class="method-source-code"
694
700
  id="assigned--source">
695
701
  <pre>
696
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 51</span>
697
- 51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
698
- 52: <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">end</span>
699
- 53: <span class="ruby-keyword kw">end</span></pre>
702
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 52</span>
703
+ 52: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
704
+ 53: <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">end</span>
705
+ 54: <span class="ruby-keyword kw">end</span></pre>
700
706
  </div>
701
707
 
702
708
  </div>
@@ -729,10 +735,10 @@ Return a deep copy of self.
729
735
  <div class="method-source-code"
730
736
  id="copy-source">
731
737
  <pre>
732
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 35</span>
733
- 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">copy</span>
734
- 36: <span class="ruby-constant">ShiftAssignment</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@shiftScenario</span>, <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@interval</span>))
735
- 37: <span class="ruby-keyword kw">end</span></pre>
738
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 36</span>
739
+ 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">copy</span>
740
+ 37: <span class="ruby-constant">ShiftAssignment</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@shiftScenario</span>, <span class="ruby-constant">Interval</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@interval</span>))
741
+ 38: <span class="ruby-keyword kw">end</span></pre>
736
742
  </div>
737
743
 
738
744
  </div>
@@ -763,10 +769,10 @@ Return a deep copy of self.
763
769
  <div class="method-source-code"
764
770
  id="hash-ey-source">
765
771
  <pre>
766
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 30</span>
767
- 30: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hashKey</span>
768
- 31: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{@shiftScenario.object_id}|#{@interval.start}|#{@interval.end}&quot;</span>
769
- 32: <span class="ruby-keyword kw">end</span></pre>
772
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 31</span>
773
+ 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hashKey</span>
774
+ 32: <span class="ruby-keyword kw">return</span> <span class="ruby-node">&quot;#{@shiftScenario.object_id}|#{@interval.start}|#{@interval.end}&quot;</span>
775
+ 33: <span class="ruby-keyword kw">end</span></pre>
770
776
  </div>
771
777
 
772
778
  </div>
@@ -799,10 +805,10 @@ Returns true if the shift has working hours defined for the <em>date</em>.
799
805
  <div class="method-source-code"
800
806
  id="on-hift--source">
801
807
  <pre>
802
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 56</span>
803
- 56: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
804
- 57: <span class="ruby-ivar">@shiftScenario</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
805
- 58: <span class="ruby-keyword kw">end</span></pre>
808
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 57</span>
809
+ 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
810
+ 58: <span class="ruby-ivar">@shiftScenario</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
811
+ 59: <span class="ruby-keyword kw">end</span></pre>
806
812
  </div>
807
813
 
808
814
  </div>
@@ -835,10 +841,10 @@ Returns true if the shift has a vacation defined for the <em>date</em>.
835
841
  <div class="method-source-code"
836
842
  id="on-acation--source">
837
843
  <pre>
838
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 61</span>
839
- 61: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
840
- 62: <span class="ruby-ivar">@shiftScenario</span>.<span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
841
- 63: <span class="ruby-keyword kw">end</span></pre>
844
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 62</span>
845
+ 62: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
846
+ 63: <span class="ruby-ivar">@shiftScenario</span>.<span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
847
+ 64: <span class="ruby-keyword kw">end</span></pre>
842
848
  </div>
843
849
 
844
850
  </div>
@@ -872,10 +878,10 @@ interval.
872
878
  <div class="method-source-code"
873
879
  id="overlaps--source">
874
880
  <pre>
875
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 40</span>
876
- 40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
877
- 41: <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
878
- 42: <span class="ruby-keyword kw">end</span></pre>
881
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 41</span>
882
+ 41: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
883
+ 42: <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
884
+ 43: <span class="ruby-keyword kw">end</span></pre>
879
885
  </div>
880
886
 
881
887
  </div>
@@ -909,10 +915,10 @@ settings.
909
915
  <div class="method-source-code"
910
916
  id="replace--source">
911
917
  <pre>
912
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 46</span>
913
- 46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">replace?</span>(<span class="ruby-identifier">date</span>)
914
- 47: <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@shiftScenario</span>.<span class="ruby-identifier">replace?</span>
915
- 48: <span class="ruby-keyword kw">end</span></pre>
918
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 47</span>
919
+ 47: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">replace?</span>(<span class="ruby-identifier">date</span>)
920
+ 48: <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">date</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@interval</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@shiftScenario</span>.<span class="ruby-identifier">replace?</span>
921
+ 49: <span class="ruby-keyword kw">end</span></pre>
916
922
  </div>
917
923
 
918
924
  </div>
@@ -945,10 +951,10 @@ Primarily used for debugging
945
951
  <div class="method-source-code"
946
952
  id="to-s-source">
947
953
  <pre>
948
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 66</span>
949
- 66: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
950
- 67: <span class="ruby-node">&quot;#{@shiftScenario.property.id} #{interval}&quot;</span>
951
- 68: <span class="ruby-keyword kw">end</span></pre>
954
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 67</span>
955
+ 67: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
956
+ 68: <span class="ruby-node">&quot;#{@shiftScenario.property.id} #{interval}&quot;</span>
957
+ 69: <span class="ruby-keyword kw">end</span></pre>
952
958
  </div>
953
959
 
954
960
  </div>
@@ -166,6 +166,8 @@
166
166
 
167
167
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
168
168
 
169
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
170
+
169
171
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
170
172
 
171
173
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -244,6 +246,8 @@
244
246
 
245
247
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
246
248
 
249
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
250
+
247
251
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
248
252
 
249
253
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -276,6 +280,8 @@
276
280
 
277
281
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
278
282
 
283
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
284
+
279
285
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
280
286
 
281
287
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -556,6 +562,8 @@
556
562
 
557
563
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
558
564
 
565
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
566
+
559
567
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
560
568
 
561
569
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -582,8 +590,6 @@
582
590
 
583
591
  <li><a href="../String.html">String</a></li>
584
592
 
585
- <li><a href="../StringIO.html">StringIO</a></li>
586
-
587
593
  </ul>
588
594
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
589
595
  </div>
@@ -710,32 +716,32 @@ Bit 6: Reserved Bit 7: 0: No global override
710
716
  <div class="method-source-code"
711
717
  id="new-source">
712
718
  <pre>
713
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 107</span>
714
- 107: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">sa</span> = <span class="ruby-keyword kw">nil</span>)
715
- 108: <span class="ruby-identifier">define_finalizer</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">method</span>(<span class="ruby-value">:deleteScoreboard</span>).<span class="ruby-identifier">to_proc</span>)
716
- 109:
717
- 110: <span class="ruby-comment cmt"># An Array of ShiftAssignment objects.</span>
718
- 111: <span class="ruby-ivar">@assignments</span> = []
719
- 112:
720
- 113: <span class="ruby-comment cmt"># A String that uniquely identifies the content of this ShiftAssignment</span>
721
- 114: <span class="ruby-comment cmt"># object.</span>
722
- 115: <span class="ruby-ivar">@hashKey</span> = <span class="ruby-keyword kw">nil</span>
723
- 116:
724
- 117: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>
725
- 118: <span class="ruby-comment cmt"># A ShiftAssignments object was passed to the contructor. We create a</span>
726
- 119: <span class="ruby-comment cmt"># deep copy of it.</span>
727
- 120: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">project</span>
728
- 121: <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">assignment</span><span class="ruby-operator">|</span>
729
- 122: <span class="ruby-ivar">@assignments</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">assignment</span>.<span class="ruby-identifier">copy</span>
730
- 123: <span class="ruby-keyword kw">end</span>
731
- 124: <span class="ruby-comment cmt"># Create a new ScoreBoard or share one with a ShiftAssignments object</span>
732
- 125: <span class="ruby-comment cmt"># that has the same set of shift assignments.</span>
733
- 126: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
734
- 127: <span class="ruby-keyword kw">else</span>
735
- 128: <span class="ruby-ivar">@project</span> = <span class="ruby-keyword kw">nil</span>
736
- 129: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
737
- 130: <span class="ruby-keyword kw">end</span>
738
- 131: <span class="ruby-keyword kw">end</span></pre>
719
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 108</span>
720
+ 108: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">sa</span> = <span class="ruby-keyword kw">nil</span>)
721
+ 109: <span class="ruby-identifier">define_finalizer</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">class</span>.<span class="ruby-identifier">method</span>(<span class="ruby-value">:deleteScoreboard</span>).<span class="ruby-identifier">to_proc</span>)
722
+ 110:
723
+ 111: <span class="ruby-comment cmt"># An Array of ShiftAssignment objects.</span>
724
+ 112: <span class="ruby-ivar">@assignments</span> = []
725
+ 113:
726
+ 114: <span class="ruby-comment cmt"># A String that uniquely identifies the content of this ShiftAssignment</span>
727
+ 115: <span class="ruby-comment cmt"># object.</span>
728
+ 116: <span class="ruby-ivar">@hashKey</span> = <span class="ruby-keyword kw">nil</span>
729
+ 117:
730
+ 118: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>
731
+ 119: <span class="ruby-comment cmt"># A ShiftAssignments object was passed to the contructor. We create a</span>
732
+ 120: <span class="ruby-comment cmt"># deep copy of it.</span>
733
+ 121: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">project</span>
734
+ 122: <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">assignment</span><span class="ruby-operator">|</span>
735
+ 123: <span class="ruby-ivar">@assignments</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">assignment</span>.<span class="ruby-identifier">copy</span>
736
+ 124: <span class="ruby-keyword kw">end</span>
737
+ 125: <span class="ruby-comment cmt"># Create a new ScoreBoard or share one with a ShiftAssignments object</span>
738
+ 126: <span class="ruby-comment cmt"># that has the same set of shift assignments.</span>
739
+ 127: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
740
+ 128: <span class="ruby-keyword kw">else</span>
741
+ 129: <span class="ruby-ivar">@project</span> = <span class="ruby-keyword kw">nil</span>
742
+ 130: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
743
+ 131: <span class="ruby-keyword kw">end</span>
744
+ 132: <span class="ruby-keyword kw">end</span></pre>
739
745
  </div>
740
746
 
741
747
  </div>
@@ -766,10 +772,10 @@ Bit 6: Reserved Bit 7: 0: No global override
766
772
  <div class="method-source-code"
767
773
  id="sb-lear-source">
768
774
  <pre>
769
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 212</span>
770
- 212: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">sbClear</span>
771
- 213: <span class="ruby-identifier">@@scoreboards</span> = {}
772
- 214: <span class="ruby-keyword kw">end</span></pre>
775
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 213</span>
776
+ 213: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">sbClear</span>
777
+ 214: <span class="ruby-identifier">@@scoreboards</span> = {}
778
+ 215: <span class="ruby-keyword kw">end</span></pre>
773
779
  </div>
774
780
 
775
781
  </div>
@@ -800,10 +806,10 @@ Bit 6: Reserved Bit 7: 0: No global override
800
806
  <div class="method-source-code"
801
807
  id="scoreboards-source">
802
808
  <pre>
803
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 208</span>
804
- 208: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">scoreboards</span>
805
- 209: <span class="ruby-identifier">@@scoreboards</span>
806
- 210: <span class="ruby-keyword kw">end</span></pre>
809
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 209</span>
810
+ 209: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">scoreboards</span>
811
+ 210: <span class="ruby-identifier">@@scoreboards</span>
812
+ 211: <span class="ruby-keyword kw">end</span></pre>
807
813
  </div>
808
814
 
809
815
  </div>
@@ -844,28 +850,28 @@ the GC.
844
850
  <div class="method-source-code"
845
851
  id="delete-coreboard-source">
846
852
  <pre>
847
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 270</span>
848
- 270: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">deleteScoreboard</span>(<span class="ruby-identifier">objId</span>)
849
- 271: <span class="ruby-comment cmt"># Attention: Due to the way this class is called, there will be no</span>
850
- 272: <span class="ruby-comment cmt"># visible exceptions here. All runtime errors will go unnoticed!</span>
851
- 273: <span class="ruby-comment cmt">#</span>
852
- 274: <span class="ruby-comment cmt"># We'll search the @@scoreboards for an entry that holds a reference to</span>
853
- 275: <span class="ruby-comment cmt"># the deleted ShiftAssignments object. If it's the last in the record,</span>
854
- 276: <span class="ruby-comment cmt"># we delete the whole record. If not, we'll just remove the reference</span>
855
- 277: <span class="ruby-comment cmt"># form the record.</span>
856
- 278: <span class="ruby-identifier">@@scoreboards</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
857
- 279: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">objId</span>)
858
- 280: <span class="ruby-comment cmt"># Remove the ShiftAssignments object as user of this Scoreboard</span>
859
- 281: <span class="ruby-comment cmt"># object.</span>
860
- 282: <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">objId</span>)
861
- 283: <span class="ruby-comment cmt"># We've found what we were looking for.</span>
862
- 284: <span class="ruby-keyword kw">break</span>
863
- 285: <span class="ruby-keyword kw">end</span>
864
- 286: <span class="ruby-keyword kw">end</span>
865
- 287:
866
- 288: <span class="ruby-comment cmt"># Delete all entries which have empty reference lists.</span>
867
- 289: <span class="ruby-identifier">@@scoreboards</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">record</span><span class="ruby-operator">|</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">empty?</span> }
868
- 290: <span class="ruby-keyword kw">end</span></pre>
853
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 271</span>
854
+ 271: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">deleteScoreboard</span>(<span class="ruby-identifier">objId</span>)
855
+ 272: <span class="ruby-comment cmt"># Attention: Due to the way this class is called, there will be no</span>
856
+ 273: <span class="ruby-comment cmt"># visible exceptions here. All runtime errors will go unnoticed!</span>
857
+ 274: <span class="ruby-comment cmt">#</span>
858
+ 275: <span class="ruby-comment cmt"># We'll search the @@scoreboards for an entry that holds a reference to</span>
859
+ 276: <span class="ruby-comment cmt"># the deleted ShiftAssignments object. If it's the last in the record,</span>
860
+ 277: <span class="ruby-comment cmt"># we delete the whole record. If not, we'll just remove the reference</span>
861
+ 278: <span class="ruby-comment cmt"># form the record.</span>
862
+ 279: <span class="ruby-identifier">@@scoreboards</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">record</span><span class="ruby-operator">|</span>
863
+ 280: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">objId</span>)
864
+ 281: <span class="ruby-comment cmt"># Remove the ShiftAssignments object as user of this Scoreboard</span>
865
+ 282: <span class="ruby-comment cmt"># object.</span>
866
+ 283: <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">objId</span>)
867
+ 284: <span class="ruby-comment cmt"># We've found what we were looking for.</span>
868
+ 285: <span class="ruby-keyword kw">break</span>
869
+ 286: <span class="ruby-keyword kw">end</span>
870
+ 287: <span class="ruby-keyword kw">end</span>
871
+ 288:
872
+ 289: <span class="ruby-comment cmt"># Delete all entries which have empty reference lists.</span>
873
+ 290: <span class="ruby-identifier">@@scoreboards</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">record</span><span class="ruby-operator">|</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">empty?</span> }
874
+ 291: <span class="ruby-keyword kw">end</span></pre>
869
875
  </div>
870
876
 
871
877
  </div>
@@ -905,15 +911,15 @@ returns true. Otherwise false.
905
911
  <div class="method-source-code"
906
912
  id="add-ssignment-source">
907
913
  <pre>
908
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 135</span>
909
- 135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addAssignment</span>(<span class="ruby-identifier">shiftAssignment</span>)
910
- 136: <span class="ruby-comment cmt"># Make sure we don't insert overlapping assignments.</span>
911
- 137: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">shiftAssignment</span>.<span class="ruby-identifier">interval</span>)
912
- 138:
913
- 139: <span class="ruby-ivar">@assignments</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">shiftAssignment</span>
914
- 140: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
915
- 141: <span class="ruby-keyword kw">true</span>
916
- 142: <span class="ruby-keyword kw">end</span></pre>
914
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 136</span>
915
+ 136: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addAssignment</span>(<span class="ruby-identifier">shiftAssignment</span>)
916
+ 137: <span class="ruby-comment cmt"># Make sure we don't insert overlapping assignments.</span>
917
+ 138: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">shiftAssignment</span>.<span class="ruby-identifier">interval</span>)
918
+ 139:
919
+ 140: <span class="ruby-ivar">@assignments</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">shiftAssignment</span>
920
+ 141: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
921
+ 142: <span class="ruby-keyword kw">true</span>
922
+ 143: <span class="ruby-keyword kw">end</span></pre>
917
923
  </div>
918
924
 
919
925
  </div>
@@ -947,10 +953,10 @@ interval specified by <em>date</em>.
947
953
  <div class="method-source-code"
948
954
  id="assigned--source">
949
955
  <pre>
950
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 178</span>
951
- 178: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
952
- 179: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; <span class="ruby-value">1</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
953
- 180: <span class="ruby-keyword kw">end</span></pre>
956
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 179</span>
957
+ 179: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
958
+ 180: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; <span class="ruby-value">1</span>) <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
959
+ 181: <span class="ruby-keyword kw">end</span></pre>
954
960
  </div>
955
961
 
956
962
  </div>
@@ -984,12 +990,12 @@ minDuration long and contain no working time.
984
990
  <div class="method-source-code"
985
991
  id="collect-ime-ff-ntervals-source">
986
992
  <pre>
987
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 202</span>
988
- 202: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectTimeOffIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>)
989
- 203: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">collectIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
990
- 204: (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
991
- 205: <span class="ruby-keyword kw">end</span>
992
- 206: <span class="ruby-keyword kw">end</span></pre>
993
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 203</span>
994
+ 203: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collectTimeOffIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>)
995
+ 204: <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">collectIntervals</span>(<span class="ruby-identifier">iv</span>, <span class="ruby-identifier">minDuration</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
996
+ 205: (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
997
+ 206: <span class="ruby-keyword kw">end</span>
998
+ 207: <span class="ruby-keyword kw">end</span></pre>
993
999
  </div>
994
1000
 
995
1001
  </div>
@@ -1024,36 +1030,36 @@ calculated first.
1024
1030
  <div class="method-source-code"
1025
1031
  id="get-b-lot-source">
1026
1032
  <pre>
1027
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 146</span>
1028
- 146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>)
1029
- 147: <span class="ruby-identifier">idx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>)
1030
- 148: <span class="ruby-comment cmt"># Check if we have a value already for this slot.</span>
1031
- 149: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>].<span class="ruby-identifier">nil?</span>
1032
- 150:
1033
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 147</span>
1034
+ 147: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>)
1035
+ 148: <span class="ruby-identifier">idx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>)
1036
+ 149: <span class="ruby-comment cmt"># Check if we have a value already for this slot.</span>
1037
+ 150: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>].<span class="ruby-identifier">nil?</span>
1033
1038
  151:
1034
- 152: <span class="ruby-comment cmt"># If not, compute it.</span>
1035
- 153: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sa</span><span class="ruby-operator">|</span>
1036
- 154: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
1037
- 155:
1038
- 156: <span class="ruby-comment cmt"># Mark the slot as 'assigned'. Meaning, the rest of the bits are valid</span>
1039
- 157: <span class="ruby-comment cmt"># for this time slot.</span>
1040
- 158: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">1</span>
1041
- 159:
1042
- 160: <span class="ruby-comment cmt"># Set bit 1 if the shift is not active</span>
1043
- 161: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">|=</span> <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
1044
- 162:
1045
- 163: <span class="ruby-comment cmt"># Set bits 2 - 5 to 1 if it's a vacation slot.</span>
1046
- 164: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">|=</span> <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">3</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
1047
- 165:
1048
- 166: <span class="ruby-comment cmt"># Set the 8th bit if the shift replaces global vacations.</span>
1049
- 167: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">|=</span> <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">replace?</span>(<span class="ruby-identifier">date</span>)
1050
- 168:
1051
- 169: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
1052
- 170: <span class="ruby-keyword kw">end</span>
1053
- 171:
1054
- 172: <span class="ruby-comment cmt"># The slot is not covered by any assignment.</span>
1055
- 173: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">0</span>
1056
- 174: <span class="ruby-keyword kw">end</span></pre>
1039
+ 152:
1040
+ 153: <span class="ruby-comment cmt"># If not, compute it.</span>
1041
+ 154: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sa</span><span class="ruby-operator">|</span>
1042
+ 155: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
1043
+ 156:
1044
+ 157: <span class="ruby-comment cmt"># Mark the slot as 'assigned'. Meaning, the rest of the bits are valid</span>
1045
+ 158: <span class="ruby-comment cmt"># for this time slot.</span>
1046
+ 159: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">1</span>
1047
+ 160:
1048
+ 161: <span class="ruby-comment cmt"># Set bit 1 if the shift is not active</span>
1049
+ 162: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">|=</span> <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
1050
+ 163:
1051
+ 164: <span class="ruby-comment cmt"># Set bits 2 - 5 to 1 if it's a vacation slot.</span>
1052
+ 165: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">|=</span> <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">3</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
1053
+ 166:
1054
+ 167: <span class="ruby-comment cmt"># Set the 8th bit if the shift replaces global vacations.</span>
1055
+ 168: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] <span class="ruby-operator">|=</span> <span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">8</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">replace?</span>(<span class="ruby-identifier">date</span>)
1056
+ 169:
1057
+ 170: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
1058
+ 171: <span class="ruby-keyword kw">end</span>
1059
+ 172:
1060
+ 173: <span class="ruby-comment cmt"># The slot is not covered by any assignment.</span>
1061
+ 174: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">0</span>
1062
+ 175: <span class="ruby-keyword kw">end</span></pre>
1057
1063
  </div>
1058
1064
 
1059
1065
  </div>
@@ -1084,15 +1090,15 @@ calculated first.
1084
1090
  <div class="method-source-code"
1085
1091
  id="hash-ey-source">
1086
1092
  <pre>
1087
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 233</span>
1088
- 233: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hashKey</span>
1089
- 234: <span class="ruby-ivar">@hashKey</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@hashKey</span>
1090
- 235:
1091
- 236: <span class="ruby-ivar">@hashKey</span> = <span class="ruby-node">&quot;#{@project.object_id}|&quot;</span>
1092
- 237: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">sort!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> }
1093
- 238: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@hashKey</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">hashKey</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'||'</span> }
1094
- 239: <span class="ruby-ivar">@hashKey</span>
1095
- 240: <span class="ruby-keyword kw">end</span></pre>
1093
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 234</span>
1094
+ 234: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hashKey</span>
1095
+ 235: <span class="ruby-ivar">@hashKey</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@hashKey</span>
1096
+ 236:
1097
+ 237: <span class="ruby-ivar">@hashKey</span> = <span class="ruby-node">&quot;#{@project.object_id}|&quot;</span>
1098
+ 238: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">sort!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span>, <span class="ruby-identifier">b</span><span class="ruby-operator">|</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;=&gt;</span> <span class="ruby-identifier">b</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> }
1099
+ 239: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@hashKey</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">a</span>.<span class="ruby-identifier">hashKey</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'||'</span> }
1100
+ 240: <span class="ruby-ivar">@hashKey</span>
1101
+ 241: <span class="ruby-keyword kw">end</span></pre>
1096
1102
  </div>
1097
1103
 
1098
1104
  </div>
@@ -1126,10 +1132,10 @@ and the shift has working hours defined for that <em>date</em>.
1126
1132
  <div class="method-source-code"
1127
1133
  id="on-hift--source">
1128
1134
  <pre>
1129
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 184</span>
1130
- 184: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
1131
- 185: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span>)) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1132
- 186: <span class="ruby-keyword kw">end</span></pre>
1135
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 185</span>
1136
+ 185: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
1137
+ 186: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; (<span class="ruby-value">1</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value">1</span>)) <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
1138
+ 187: <span class="ruby-keyword kw">end</span></pre>
1133
1139
  </div>
1134
1140
 
1135
1141
  </div>
@@ -1163,10 +1169,10 @@ and if the shift has a vacation defined for the <em>date</em>.
1163
1169
  <div class="method-source-code"
1164
1170
  id="on-acation--source">
1165
1171
  <pre>
1166
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 196</span>
1167
- 196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
1168
- 197: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; <span class="ruby-value">0x3C</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1169
- 198: <span class="ruby-keyword kw">end</span></pre>
1172
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 197</span>
1173
+ 197: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
1174
+ 198: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; <span class="ruby-value">0x3C</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1175
+ 199: <span class="ruby-keyword kw">end</span></pre>
1170
1176
  </div>
1171
1177
 
1172
1178
  </div>
@@ -1201,10 +1207,10 @@ and the shift has a vacation defined or all off hours defined for that
1201
1207
  <div class="method-source-code"
1202
1208
  id="time-ff--source">
1203
1209
  <pre>
1204
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 190</span>
1205
- 190: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">date</span>)
1206
- 191: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1207
- 192: <span class="ruby-keyword kw">end</span></pre>
1210
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 191</span>
1211
+ 191: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">date</span>)
1212
+ 192: (<span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>) &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1213
+ 193: <span class="ruby-keyword kw">end</span></pre>
1208
1214
  </div>
1209
1215
 
1210
1216
  </div>
@@ -1237,22 +1243,22 @@ This function is primarily used for debugging purposes.
1237
1243
  <div class="method-source-code"
1238
1244
  id="to-s-source">
1239
1245
  <pre>
1240
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 217</span>
1241
- 217: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1242
- 218: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">empty?</span>
1243
- 219:
1244
- 220: <span class="ruby-identifier">out</span> = <span class="ruby-value str">&quot;shifts &quot;</span>
1245
- 221: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1246
- 222: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sa</span><span class="ruby-operator">|</span>
1247
- 223: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1248
- 224: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1249
- 225: <span class="ruby-keyword kw">else</span>
1250
- 226: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span>
1251
- 227: <span class="ruby-keyword kw">end</span>
1252
- 228: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">to_s</span>
1253
- 229: <span class="ruby-keyword kw">end</span>
1254
- 230: <span class="ruby-identifier">out</span>
1255
- 231: <span class="ruby-keyword kw">end</span></pre>
1246
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 218</span>
1247
+ 218: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1248
+ 219: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">empty?</span>
1249
+ 220:
1250
+ 221: <span class="ruby-identifier">out</span> = <span class="ruby-value str">&quot;shifts &quot;</span>
1251
+ 222: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1252
+ 223: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sa</span><span class="ruby-operator">|</span>
1253
+ 224: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1254
+ 225: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1255
+ 226: <span class="ruby-keyword kw">else</span>
1256
+ 227: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span>
1257
+ 228: <span class="ruby-keyword kw">end</span>
1258
+ 229: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">to_s</span>
1259
+ 230: <span class="ruby-keyword kw">end</span>
1260
+ 231: <span class="ruby-identifier">out</span>
1261
+ 232: <span class="ruby-keyword kw">end</span></pre>
1256
1262
  </div>
1257
1263
 
1258
1264
  </div>
@@ -1293,28 +1299,28 @@ assigment patterns.
1293
1299
  <div class="method-source-code"
1294
1300
  id="new-coreboard-source">
1295
1301
  <pre>
1296
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 246</span>
1297
- 246: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newScoreboard</span>
1298
- 247: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">record</span> = <span class="ruby-identifier">@@scoreboards</span>[<span class="ruby-identifier">hashKey</span>])
1299
- 248: <span class="ruby-comment cmt"># If we already have a Scoreboard object for the hashKey of this</span>
1300
- 249: <span class="ruby-comment cmt"># ShiftAssignments object, we can re-use this. We just need to</span>
1301
- 250: <span class="ruby-comment cmt"># register the object as a user of it.</span>
1302
- 251: <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">object_id</span>
1303
- 252:
1304
- 253: <span class="ruby-comment cmt"># Return the re-used Scoreboard object.</span>
1305
- 254: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">1</span>]
1306
- 255: <span class="ruby-keyword kw">end</span>
1307
- 256:
1308
- 257: <span class="ruby-comment cmt"># We have not found a matching scoreboard, so we have to create a new one.</span>
1309
- 258: <span class="ruby-identifier">newSb</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>],
1310
- 259: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
1311
- 260: <span class="ruby-comment cmt"># Create a new record for it and register the ShiftAssignments object as</span>
1312
- 261: <span class="ruby-comment cmt"># first user. Add the record to the @@scoreboards list.</span>
1313
- 262: <span class="ruby-identifier">@@scoreboards</span>[<span class="ruby-identifier">hashKey</span>] = [ [ <span class="ruby-identifier">object_id</span> ], <span class="ruby-identifier">newSb</span> ]
1314
- 263:
1315
- 264: <span class="ruby-comment cmt"># Append the new record to the list.</span>
1316
- 265: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">newSb</span>
1317
- 266: <span class="ruby-keyword kw">end</span></pre>
1302
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 247</span>
1303
+ 247: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newScoreboard</span>
1304
+ 248: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">record</span> = <span class="ruby-identifier">@@scoreboards</span>[<span class="ruby-identifier">hashKey</span>])
1305
+ 249: <span class="ruby-comment cmt"># If we already have a Scoreboard object for the hashKey of this</span>
1306
+ 250: <span class="ruby-comment cmt"># ShiftAssignments object, we can re-use this. We just need to</span>
1307
+ 251: <span class="ruby-comment cmt"># register the object as a user of it.</span>
1308
+ 252: <span class="ruby-identifier">record</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">object_id</span>
1309
+ 253:
1310
+ 254: <span class="ruby-comment cmt"># Return the re-used Scoreboard object.</span>
1311
+ 255: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">1</span>]
1312
+ 256: <span class="ruby-keyword kw">end</span>
1313
+ 257:
1314
+ 258: <span class="ruby-comment cmt"># We have not found a matching scoreboard, so we have to create a new one.</span>
1315
+ 259: <span class="ruby-identifier">newSb</span> = <span class="ruby-constant">Scoreboard</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>], <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>],
1316
+ 260: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
1317
+ 261: <span class="ruby-comment cmt"># Create a new record for it and register the ShiftAssignments object as</span>
1318
+ 262: <span class="ruby-comment cmt"># first user. Add the record to the @@scoreboards list.</span>
1319
+ 263: <span class="ruby-identifier">@@scoreboards</span>[<span class="ruby-identifier">hashKey</span>] = [ [ <span class="ruby-identifier">object_id</span> ], <span class="ruby-identifier">newSb</span> ]
1320
+ 264:
1321
+ 265: <span class="ruby-comment cmt"># Append the new record to the list.</span>
1322
+ 266: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">newSb</span>
1323
+ 267: <span class="ruby-keyword kw">end</span></pre>
1318
1324
  </div>
1319
1325
 
1320
1326
  </div>
@@ -1347,13 +1353,13 @@ Returns true if the interval overlaps with any of the assignment periods.
1347
1353
  <div class="method-source-code"
1348
1354
  id="overlaps--source">
1349
1355
  <pre>
1350
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 293</span>
1351
- 293: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
1352
- 294: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sa</span><span class="ruby-operator">|</span>
1353
- 295: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
1354
- 296: <span class="ruby-keyword kw">end</span>
1355
- 297: <span class="ruby-keyword kw">false</span>
1356
- 298: <span class="ruby-keyword kw">end</span></pre>
1356
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 294</span>
1357
+ 294: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
1358
+ 295: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sa</span><span class="ruby-operator">|</span>
1359
+ 296: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
1360
+ 297: <span class="ruby-keyword kw">end</span>
1361
+ 298: <span class="ruby-keyword kw">false</span>
1362
+ 299: <span class="ruby-keyword kw">end</span></pre>
1357
1363
  </div>
1358
1364
 
1359
1365
  </div>