taskjuggler 0.0.5 → 0.0.6

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 (544) hide show
  1. data/CHANGELOG +2086 -0
  2. data/benchmarks/666tasks.tjp +3183 -0
  3. data/benchmarks/booking.tjp +14 -10
  4. data/doc/AppConfig.html +95 -73
  5. data/doc/Arguments.html +22 -2
  6. data/doc/CHANGELOG.html +2587 -0
  7. data/doc/COPYING.html +21 -1
  8. data/doc/Object.html +161 -122
  9. data/doc/README.html +21 -1
  10. data/doc/RuntimeConfig.html +26 -6
  11. data/doc/String.html +38 -18
  12. data/doc/StringIO.html +579 -0
  13. data/doc/TaskJuggler.html +251 -143
  14. data/doc/TaskJuggler/Account.html +26 -6
  15. data/doc/TaskJuggler/AccountAttribute.html +28 -8
  16. data/doc/TaskJuggler/AccountScenario.html +24 -4
  17. data/doc/TaskJuggler/Allocation.html +30 -10
  18. data/doc/TaskJuggler/AllocationAttribute.html +28 -8
  19. data/doc/TaskJuggler/AttributeBase.html +46 -26
  20. data/doc/TaskJuggler/AttributeDefinition.html +22 -2
  21. data/doc/TaskJuggler/BatchProcessor.html +40 -20
  22. data/doc/TaskJuggler/Booking.html +26 -6
  23. data/doc/TaskJuggler/BookingListAttribute.html +28 -8
  24. data/doc/TaskJuggler/BooleanAttribute.html +28 -8
  25. data/doc/TaskJuggler/CSVFile.html +308 -146
  26. data/doc/TaskJuggler/CellSettingPattern.html +22 -2
  27. data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
  28. data/doc/TaskJuggler/Charge.html +26 -6
  29. data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
  30. data/doc/TaskJuggler/ChargeSet.html +33 -13
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
  32. data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
  33. data/doc/TaskJuggler/ColumnTable.html +24 -4
  34. data/doc/TaskJuggler/Daemon.html +26 -6
  35. data/doc/TaskJuggler/DateAttribute.html +26 -6
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
  37. data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
  38. data/doc/TaskJuggler/DurationAttribute.html +28 -8
  39. data/doc/TaskJuggler/FixnumAttribute.html +24 -4
  40. data/doc/TaskJuggler/FlagListAttribute.html +28 -8
  41. data/doc/TaskJuggler/FloatAttribute.html +26 -6
  42. data/doc/TaskJuggler/FormatListAttribute.html +24 -4
  43. data/doc/TaskJuggler/GanttChart.html +147 -126
  44. data/doc/TaskJuggler/GanttContainer.html +34 -14
  45. data/doc/TaskJuggler/GanttHeader.html +28 -8
  46. data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
  47. data/doc/TaskJuggler/GanttLine.html +38 -18
  48. data/doc/TaskJuggler/GanttLoadStack.html +26 -6
  49. data/doc/TaskJuggler/GanttMilestone.html +34 -14
  50. data/doc/TaskJuggler/GanttRouter.html +50 -30
  51. data/doc/TaskJuggler/GanttTaskBar.html +34 -14
  52. data/doc/TaskJuggler/HTMLDocument.html +26 -6
  53. data/doc/TaskJuggler/HTMLGraphics.html +30 -10
  54. data/doc/TaskJuggler/Interval.html +40 -22
  55. data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
  56. data/doc/TaskJuggler/JobInfo.html +24 -4
  57. data/doc/TaskJuggler/Journal.html +226 -147
  58. data/doc/TaskJuggler/JournalEntry.html +22 -2
  59. data/doc/TaskJuggler/JournalEntryList.html +129 -112
  60. data/doc/TaskJuggler/KeywordArray.html +26 -6
  61. data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
  62. data/doc/TaskJuggler/Limits.html +152 -123
  63. data/doc/TaskJuggler/Limits/Limit.html +149 -70
  64. data/doc/TaskJuggler/LimitsAttribute.html +36 -51
  65. data/doc/TaskJuggler/ListAttributeBase.html +24 -4
  66. data/doc/TaskJuggler/Log.html +50 -32
  67. data/doc/TaskJuggler/LogFile.html +37 -17
  68. data/doc/TaskJuggler/LogicalAttribute.html +53 -33
  69. data/doc/TaskJuggler/LogicalExpression.html +26 -6
  70. data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
  71. data/doc/TaskJuggler/LogicalFlag.html +42 -22
  72. data/doc/TaskJuggler/LogicalFunction.html +204 -140
  73. data/doc/TaskJuggler/LogicalOperation.html +135 -111
  74. data/doc/TaskJuggler/Macro.html +22 -2
  75. data/doc/TaskJuggler/MacroParser.html +32 -12
  76. data/doc/TaskJuggler/MacroTable.html +32 -12
  77. data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
  78. data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
  79. data/doc/TaskJuggler/Message.html +24 -4
  80. data/doc/TaskJuggler/MessageHandler.html +24 -4
  81. data/doc/TaskJuggler/Navigator.html +104 -71
  82. data/doc/TaskJuggler/NavigatorElement.html +32 -12
  83. data/doc/TaskJuggler/NikuProject.html +22 -2
  84. data/doc/TaskJuggler/NikuReport.html +310 -228
  85. data/doc/TaskJuggler/NikuResource.html +22 -2
  86. data/doc/TaskJuggler/NodeListAttribute.html +615 -0
  87. data/doc/TaskJuggler/OnShiftCache.html +32 -12
  88. data/doc/TaskJuggler/ProcessIntercom.html +205 -78
  89. data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
  90. data/doc/TaskJuggler/Project.html +708 -660
  91. data/doc/TaskJuggler/ProjectBroker.html +506 -304
  92. data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
  93. data/doc/TaskJuggler/ProjectFileParser.html +429 -373
  94. data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
  95. data/doc/TaskJuggler/ProjectRecord.html +80 -60
  96. data/doc/TaskJuggler/ProjectServer.html +312 -237
  97. data/doc/TaskJuggler/ProjectServerIface.html +101 -43
  98. data/doc/TaskJuggler/PropertyAttribute.html +32 -12
  99. data/doc/TaskJuggler/PropertyList.html +166 -145
  100. data/doc/TaskJuggler/PropertySet.html +254 -224
  101. data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
  102. data/doc/TaskJuggler/Query.html +169 -148
  103. data/doc/TaskJuggler/RTFHandlers.html +622 -0
  104. data/doc/TaskJuggler/RTFNavigator.html +28 -8
  105. data/doc/TaskJuggler/RTFQuery.html +40 -20
  106. data/doc/TaskJuggler/RTFReport.html +62 -25
  107. data/doc/TaskJuggler/RTFReportLink.html +765 -0
  108. data/doc/TaskJuggler/RealFormat.html +26 -6
  109. data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
  110. data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
  111. data/doc/TaskJuggler/Report.html +402 -251
  112. data/doc/TaskJuggler/ReportBase.html +162 -137
  113. data/doc/TaskJuggler/ReportContext.html +112 -29
  114. data/doc/TaskJuggler/ReportServer.html +89 -64
  115. data/doc/TaskJuggler/ReportServerIface.html +75 -55
  116. data/doc/TaskJuggler/ReportServerRecord.html +54 -31
  117. data/doc/TaskJuggler/ReportServlet.html +980 -0
  118. data/doc/TaskJuggler/ReportTable.html +41 -21
  119. data/doc/TaskJuggler/ReportTableCell.html +214 -170
  120. data/doc/TaskJuggler/ReportTableColumn.html +30 -10
  121. data/doc/TaskJuggler/ReportTableLegend.html +36 -16
  122. data/doc/TaskJuggler/ReportTableLine.html +32 -12
  123. data/doc/TaskJuggler/Resource.html +99 -87
  124. data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
  125. data/doc/TaskJuggler/ResourceListRE.html +47 -26
  126. data/doc/TaskJuggler/ResourceScenario.html +403 -437
  127. data/doc/TaskJuggler/RichText.html +26 -6
  128. data/doc/TaskJuggler/RichTextAttribute.html +50 -30
  129. data/doc/TaskJuggler/RichTextDocument.html +37 -17
  130. data/doc/TaskJuggler/RichTextElement.html +475 -413
  131. data/doc/TaskJuggler/RichTextException.html +22 -2
  132. data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
  133. data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
  134. data/doc/TaskJuggler/RichTextImage.html +22 -2
  135. data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
  136. data/doc/TaskJuggler/RichTextParser.html +56 -34
  137. data/doc/TaskJuggler/RichTextScanner.html +82 -61
  138. data/doc/TaskJuggler/RichTextSnip.html +34 -14
  139. data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
  140. data/doc/TaskJuggler/Scenario.html +22 -2
  141. data/doc/TaskJuggler/ScenarioData.html +30 -46
  142. data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
  143. data/doc/TaskJuggler/Scoreboard.html +42 -22
  144. data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
  145. data/doc/TaskJuggler/SheetReceiver.html +333 -295
  146. data/doc/TaskJuggler/SheetSender.html +253 -230
  147. data/doc/TaskJuggler/Shift.html +26 -6
  148. data/doc/TaskJuggler/ShiftAssignment.html +89 -73
  149. data/doc/TaskJuggler/ShiftAssignments.html +226 -234
  150. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
  151. data/doc/TaskJuggler/ShiftScenario.html +28 -8
  152. data/doc/TaskJuggler/SortListAttribute.html +34 -14
  153. data/doc/TaskJuggler/SourceFileInfo.html +24 -4
  154. data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
  155. data/doc/TaskJuggler/StatusSheetReport.html +168 -153
  156. data/doc/TaskJuggler/StatusSheetSender.html +24 -3
  157. data/doc/TaskJuggler/StringAttribute.html +38 -18
  158. data/doc/TaskJuggler/SymbolAttribute.html +32 -12
  159. data/doc/TaskJuggler/SyntaxReference.html +40 -20
  160. data/doc/TaskJuggler/TOCEntry.html +26 -6
  161. data/doc/TaskJuggler/TSResourceRecord.html +22 -2
  162. data/doc/TaskJuggler/TSTaskRecord.html +22 -2
  163. data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
  164. data/doc/TaskJuggler/TableOfContents.html +26 -6
  165. data/doc/TaskJuggler/TableReport.html +937 -904
  166. data/doc/TaskJuggler/Task.html +55 -36
  167. data/doc/TaskJuggler/TaskDependency.html +24 -4
  168. data/doc/TaskJuggler/TaskListAttribute.html +50 -30
  169. data/doc/TaskJuggler/TaskListRE.html +27 -7
  170. data/doc/TaskJuggler/TaskScenario.html +1273 -1153
  171. data/doc/TaskJuggler/TextFormatter.html +28 -8
  172. data/doc/TaskJuggler/TextParser.html +585 -338
  173. data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
  174. data/doc/TaskJuggler/TextParser/Rule.html +95 -73
  175. data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
  176. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
  177. data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
  178. data/doc/TaskJuggler/TextReport.html +28 -8
  179. data/doc/TaskJuggler/TextScanner.html +400 -1404
  180. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
  181. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
  182. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
  183. data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
  184. data/doc/TaskJuggler/TimeSheet.html +48 -28
  185. data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
  186. data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
  187. data/doc/TaskJuggler/TimeSheetReport.html +154 -133
  188. data/doc/TaskJuggler/TimeSheetSender.html +24 -3
  189. data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
  190. data/doc/TaskJuggler/TimeSheets.html +26 -6
  191. data/doc/TaskJuggler/Tj3AppBase.html +85 -58
  192. data/doc/TaskJuggler/Tj3Client.html +292 -238
  193. data/doc/TaskJuggler/Tj3Daemon.html +159 -74
  194. data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
  195. data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
  196. data/doc/TaskJuggler/Tj3SsSender.html +53 -26
  197. data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
  198. data/doc/TaskJuggler/Tj3TsSender.html +26 -6
  199. data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
  200. data/doc/TaskJuggler/TjException.html +22 -2
  201. data/doc/TaskJuggler/TjTime.html +216 -160
  202. data/doc/TaskJuggler/TjpExample.html +34 -14
  203. data/doc/TaskJuggler/TjpExportRE.html +403 -407
  204. data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
  205. data/doc/TaskJuggler/URLParameter.html +649 -0
  206. data/doc/TaskJuggler/UserManual.html +42 -22
  207. data/doc/TaskJuggler/WebServer.html +702 -0
  208. data/doc/TaskJuggler/WorkingHours.html +38 -18
  209. data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
  210. data/doc/TaskJuggler/XMLBlob.html +24 -4
  211. data/doc/TaskJuggler/XMLComment.html +24 -4
  212. data/doc/TaskJuggler/XMLDocument.html +30 -10
  213. data/doc/TaskJuggler/XMLElement.html +34 -14
  214. data/doc/TaskJuggler/XMLNamedText.html +22 -2
  215. data/doc/TaskJuggler/XMLText.html +24 -4
  216. data/doc/index.html +1841 -1666
  217. data/doc/lib/AccountScenario_rb.html +1 -1
  218. data/doc/lib/Account_rb.html +1 -1
  219. data/doc/lib/Allocation_rb.html +1 -1
  220. data/doc/lib/AppConfig_rb.html +2 -2
  221. data/doc/lib/AttributeBase_rb.html +1 -1
  222. data/doc/lib/AttributeDefinition_rb.html +1 -1
  223. data/doc/lib/Attributes_rb.html +2 -2
  224. data/doc/lib/BatchProcessor_rb.html +1 -1
  225. data/doc/lib/Booking_rb.html +1 -1
  226. data/doc/lib/ChargeSet_rb.html +1 -1
  227. data/doc/lib/Charge_rb.html +1 -1
  228. data/doc/lib/HTMLDocument_rb.html +1 -1
  229. data/doc/lib/Interval_rb.html +1 -1
  230. data/doc/lib/Journal_rb.html +2 -2
  231. data/doc/lib/KeywordArray_rb.html +1 -1
  232. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  233. data/doc/lib/Limits_rb.html +2 -2
  234. data/doc/lib/LogFile_rb.html +2 -2
  235. data/doc/lib/Log_rb.html +1 -1
  236. data/doc/lib/LogicalExpression_rb.html +1 -1
  237. data/doc/lib/LogicalFunction_rb.html +2 -2
  238. data/doc/lib/LogicalOperation_rb.html +2 -2
  239. data/doc/lib/MacroParser_rb.html +1 -1
  240. data/doc/lib/MacroTable_rb.html +1 -1
  241. data/doc/lib/MessageHandler_rb.html +1 -1
  242. data/doc/lib/Message_rb.html +1 -1
  243. data/doc/lib/ProjectFileParser_rb.html +4 -8
  244. data/doc/lib/ProjectFileScanner_rb.html +67 -0
  245. data/doc/lib/Project_rb.html +2 -2
  246. data/doc/lib/PropertyList_rb.html +2 -2
  247. data/doc/lib/PropertySet_rb.html +2 -2
  248. data/doc/lib/PropertyTreeNode_rb.html +2 -2
  249. data/doc/lib/Query_rb.html +2 -2
  250. data/doc/lib/RTFHandlers_rb.html +73 -0
  251. data/doc/lib/RTFNavigator_rb.html +1 -1
  252. data/doc/lib/RTFQuery_rb.html +1 -1
  253. data/doc/lib/RTFReportLink_rb.html +71 -0
  254. data/doc/lib/RTFReport_rb.html +2 -2
  255. data/doc/lib/RealFormat_rb.html +1 -1
  256. data/doc/lib/ResourceScenario_rb.html +2 -2
  257. data/doc/lib/Resource_rb.html +2 -2
  258. data/doc/lib/RichTextDocument_rb.html +1 -1
  259. data/doc/lib/RichTextElement_rb.html +2 -2
  260. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  261. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  262. data/doc/lib/RichTextParser_rb.html +2 -2
  263. data/doc/lib/RichTextScanner_rb.html +2 -2
  264. data/doc/lib/RichTextSnip_rb.html +1 -1
  265. data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
  266. data/doc/lib/RichText_rb.html +1 -1
  267. data/doc/lib/RuntimeConfig_rb.html +1 -1
  268. data/doc/lib/ScenarioData_rb.html +2 -2
  269. data/doc/lib/Scenario_rb.html +1 -1
  270. data/doc/lib/Scoreboard_rb.html +1 -1
  271. data/doc/lib/SheetHandlerBase_rb.html +1 -1
  272. data/doc/lib/SheetReceiver_rb.html +2 -2
  273. data/doc/lib/SheetSender_rb.html +4 -2
  274. data/doc/lib/ShiftAssignments_rb.html +4 -2
  275. data/doc/lib/ShiftScenario_rb.html +1 -1
  276. data/doc/lib/Shift_rb.html +1 -1
  277. data/doc/lib/SourceFileInfo_rb.html +1 -1
  278. data/doc/lib/StatusSheetReceiver_rb.html +2 -2
  279. data/doc/lib/StatusSheetSender_rb.html +2 -2
  280. data/doc/lib/SyntaxReference_rb.html +1 -1
  281. data/doc/lib/TOCEntry_rb.html +1 -1
  282. data/doc/lib/TableColumnDefinition_rb.html +2 -2
  283. data/doc/lib/TableOfContents_rb.html +1 -1
  284. data/doc/lib/TaskDependency_rb.html +1 -1
  285. data/doc/lib/TaskJuggler_rb.html +2 -2
  286. data/doc/lib/TaskScenario_rb.html +2 -2
  287. data/doc/lib/Task_rb.html +2 -2
  288. data/doc/lib/TextFormatter_rb.html +1 -1
  289. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  290. data/doc/lib/TextParser/Rule_rb.html +2 -2
  291. data/doc/lib/TextParser/StackElement_rb.html +2 -2
  292. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  293. data/doc/lib/TextParser_rb.html +2 -2
  294. data/doc/lib/TextScanner_rb.html +6 -2
  295. data/doc/lib/TimeSheetReceiver_rb.html +2 -2
  296. data/doc/lib/TimeSheetSender_rb.html +2 -2
  297. data/doc/lib/TimeSheetSummary_rb.html +2 -2
  298. data/doc/lib/TimeSheets_rb.html +2 -2
  299. data/doc/lib/Tj3AppBase_rb.html +2 -2
  300. data/doc/lib/Tj3Config_rb.html +2 -2
  301. data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
  302. data/doc/lib/TjException_rb.html +1 -1
  303. data/doc/lib/TjTime_rb.html +2 -2
  304. data/doc/lib/TjpExample_rb.html +1 -1
  305. data/doc/lib/TjpSyntaxRules_rb.html +2 -2
  306. data/doc/lib/URLParameter_rb.html +67 -0
  307. data/doc/lib/UTF8String_rb.html +1 -1
  308. data/doc/lib/UserManual_rb.html +1 -1
  309. data/doc/lib/WorkingHours_rb.html +1 -1
  310. data/doc/lib/XMLDocument_rb.html +2 -2
  311. data/doc/lib/XMLElement_rb.html +1 -1
  312. data/doc/lib/daemon/Daemon_rb.html +1 -1
  313. data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
  314. data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
  315. data/doc/lib/daemon/ProjectServer_rb.html +2 -2
  316. data/doc/lib/daemon/ReportServer_rb.html +2 -2
  317. data/doc/lib/daemon/WebServer_rb.html +75 -0
  318. data/doc/lib/deep_copy_rb.html +2 -2
  319. data/doc/lib/reports/CSVFile_rb.html +2 -2
  320. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  321. data/doc/lib/reports/GanttChart_rb.html +2 -2
  322. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  323. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  324. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  325. data/doc/lib/reports/GanttLine_rb.html +1 -1
  326. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  327. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  328. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  329. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  330. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  331. data/doc/lib/reports/Navigator_rb.html +2 -2
  332. data/doc/lib/reports/NikuReport_rb.html +2 -2
  333. data/doc/lib/reports/ReportBase_rb.html +2 -2
  334. data/doc/lib/reports/ReportContext_rb.html +2 -2
  335. data/doc/lib/reports/ReportTableCell_rb.html +2 -2
  336. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  337. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  338. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  339. data/doc/lib/reports/ReportTable_rb.html +2 -2
  340. data/doc/lib/reports/Report_rb.html +2 -2
  341. data/doc/lib/reports/ResourceListRE_rb.html +2 -2
  342. data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
  343. data/doc/lib/reports/TableReport_rb.html +2 -2
  344. data/doc/lib/reports/TaskListRE_rb.html +2 -2
  345. data/doc/lib/reports/TextReport_rb.html +1 -1
  346. data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
  347. data/doc/lib/reports/TjpExportRE_rb.html +2 -2
  348. data/doc/lib/ruby-signal-bug_rb.html +1 -1
  349. data/doc/lib/taskjuggler3_rb.html +2 -2
  350. data/doc/lib/tj3client_rb.html +2 -2
  351. data/doc/lib/tj3d_rb.html +2 -2
  352. data/doc/lib/tj3man_rb.html +1 -1
  353. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  354. data/doc/lib/tj3ss_sender_rb.html +2 -2
  355. data/doc/lib/tj3ts_receiver_rb.html +2 -2
  356. data/doc/lib/tj3ts_sender_rb.html +1 -1
  357. data/doc/lib/tj3ts_summary_rb.html +1 -1
  358. data/doc/rdoc.css +9 -4
  359. data/examples/tutorial.tjp +17 -15
  360. data/gem_spec.rb +3 -0
  361. data/lib/AppConfig.rb +3 -1
  362. data/lib/Attributes.rb +10 -8
  363. data/lib/Journal.rb +55 -20
  364. data/lib/Limits.rb +72 -46
  365. data/lib/LogFile.rb +3 -3
  366. data/lib/LogicalFunction.rb +19 -6
  367. data/lib/LogicalOperation.rb +5 -1
  368. data/lib/Project.rb +37 -9
  369. data/lib/ProjectFileParser.rb +25 -22
  370. data/lib/ProjectFileScanner.rb +365 -0
  371. data/lib/PropertyList.rb +2 -1
  372. data/lib/PropertySet.rb +14 -4
  373. data/lib/PropertyTreeNode.rb +42 -29
  374. data/lib/Query.rb +3 -1
  375. data/lib/RTFHandlers.rb +35 -0
  376. data/lib/RTFReport.rb +23 -6
  377. data/lib/RTFReportLink.rb +72 -0
  378. data/lib/Resource.rb +8 -16
  379. data/lib/ResourceScenario.rb +1 -22
  380. data/lib/RichTextElement.rb +42 -0
  381. data/lib/RichTextParser.rb +6 -4
  382. data/lib/RichTextScanner.rb +5 -5
  383. data/lib/RichTextSyntaxRules.rb +48 -10
  384. data/lib/ScenarioData.rb +5 -3
  385. data/lib/SheetReceiver.rb +24 -6
  386. data/lib/SheetSender.rb +17 -13
  387. data/lib/ShiftAssignments.rb +56 -52
  388. data/lib/StatusSheetReceiver.rb +1 -0
  389. data/lib/StatusSheetSender.rb +1 -0
  390. data/lib/TableColumnDefinition.rb +4 -2
  391. data/lib/Task.rb +8 -9
  392. data/lib/TaskJuggler.rb +21 -11
  393. data/lib/TaskScenario.rb +61 -26
  394. data/lib/TextParser.rb +268 -106
  395. data/lib/TextParser/Rule.rb +4 -2
  396. data/lib/TextParser/StackElement.rb +6 -4
  397. data/lib/TextScanner.rb +283 -700
  398. data/lib/TimeSheetReceiver.rb +1 -0
  399. data/lib/TimeSheetSender.rb +1 -0
  400. data/lib/TimeSheetSummary.rb +51 -26
  401. data/lib/TimeSheets.rb +1 -1
  402. data/lib/Tj3AppBase.rb +8 -1
  403. data/lib/Tj3Config.rb +1 -1
  404. data/lib/TjTime.rb +5 -0
  405. data/lib/TjpSyntaxRules.rb +360 -144
  406. data/lib/URLParameter.rb +30 -0
  407. data/lib/XMLDocument.rb +2 -2
  408. data/lib/daemon/ProcessIntercom.rb +50 -9
  409. data/lib/daemon/ProjectBroker.rb +63 -10
  410. data/lib/daemon/ProjectServer.rb +47 -16
  411. data/lib/daemon/ReportServer.rb +9 -4
  412. data/lib/daemon/WebServer.rb +204 -0
  413. data/lib/deep_copy.rb +4 -1
  414. data/lib/reports/CSVFile.rb +150 -66
  415. data/lib/reports/GanttChart.rb +2 -1
  416. data/lib/reports/Navigator.rb +18 -5
  417. data/lib/reports/NikuReport.rb +32 -2
  418. data/lib/reports/Report.rb +65 -37
  419. data/lib/reports/ReportBase.rb +14 -9
  420. data/lib/reports/ReportContext.rb +19 -4
  421. data/lib/reports/ReportTable.rb +2 -2
  422. data/lib/reports/ReportTableCell.rb +54 -30
  423. data/lib/reports/ResourceListRE.rb +4 -3
  424. data/lib/reports/StatusSheetReport.rb +8 -13
  425. data/lib/reports/TableReport.rb +47 -32
  426. data/lib/reports/TaskListRE.rb +3 -3
  427. data/lib/reports/TimeSheetReport.rb +14 -5
  428. data/lib/reports/TjpExportRE.rb +14 -19
  429. data/lib/taskjuggler3.rb +15 -0
  430. data/lib/tj3client.rb +9 -7
  431. data/lib/tj3d.rb +38 -10
  432. data/lib/tj3ss_sender.rb +7 -0
  433. data/lib/tj3ts_receiver.rb +1 -0
  434. data/manual/Day_To_Day_Juggling +1 -1
  435. data/manual/Rich_Text_Attributes +8 -0
  436. data/manual/TaskJuggler_2x_Migration +7 -0
  437. data/manual/The_TaskJuggler_Syntax +20 -6
  438. data/prj_cfg.rb +3 -2
  439. data/tasks/changelog.rake +36 -0
  440. data/tasks/csts.rake +2 -3
  441. data/tasks/gem.rake +10 -0
  442. data/tasks/missing.rake +0 -17
  443. data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
  444. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
  445. data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
  446. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
  447. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
  448. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
  449. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
  450. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  451. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  452. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  453. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  454. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  455. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  456. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  457. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  458. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  459. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  460. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  461. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
  462. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
  463. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
  464. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
  465. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
  466. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
  467. data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
  468. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
  469. data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
  470. data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
  471. data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
  472. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
  473. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
  474. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
  475. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
  476. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
  477. data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
  478. data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
  479. data/test/TestSuite/StatusSheets/run +3 -2
  480. data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
  481. data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
  482. data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
  483. data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
  484. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
  485. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
  486. data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
  487. data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
  488. data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
  489. data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
  490. data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
  491. data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
  492. data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
  493. data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
  494. data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
  495. data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
  496. data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
  497. data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
  498. data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
  499. data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
  500. data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
  501. data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
  502. data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
  503. data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
  504. data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
  505. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  506. data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
  507. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
  508. data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
  509. data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
  510. data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
  511. data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
  512. data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
  513. data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
  514. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  515. data/test/TestSuite/TimeSheets/run +5 -5
  516. data/test/test_CSVFile.rb +75 -0
  517. data/test/test_Limits.rb +63 -5
  518. data/test/test_ProjectFileScanner.rb +163 -0
  519. data/test/test_ReportGenerator.rb +81 -0
  520. data/test/test_RichText.rb +21 -3
  521. data/test/test_Scheduler.rb +1 -1
  522. data/test/test_ShiftAssignments.rb +4 -4
  523. data/test/test_Syntax.rb +1 -1
  524. data/test/test_URLParameter.rb +30 -0
  525. metadata +126 -32
  526. data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
  527. data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
  528. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
  529. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
  530. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
  531. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
  532. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
  533. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
  534. data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
  535. data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
  536. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
  537. data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
  538. data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
  539. data/test/TestSuite/TimeSheets/receiver.log +0 -102
  540. data/test/TestSuite/TimeSheets/sender.log +0 -794
  541. data/test/TestSuite/TimeSheets/summary.log +0 -884
  542. data/test/TestSuite/TimeSheets/timesheets.log +0 -45
  543. data/test/TestSuite/TimeSheets/tj3d.log +0 -292
  544. data/test/test_TextScanner.rb +0 -95
@@ -55,7 +55,7 @@
55
55
  <div id="parent-class-section" class="section">
56
56
  <h3 class="section-header">Parent</h3>
57
57
 
58
- <p class="link"><a href="../Object.html">Object</a></p>
58
+ <p class="link">Monitor</p>
59
59
 
60
60
  </div>
61
61
 
@@ -69,37 +69,35 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M000058">::deleteScoreboard</a></li>
72
+ <li><a href="#method-c-deleteScoreboard">::deleteScoreboard</a></li>
73
73
 
74
- <li><a href="#M000044">::new</a></li>
74
+ <li><a href="#method-c-new">::new</a></li>
75
75
 
76
- <li><a href="#M000055">::sbClear</a></li>
76
+ <li><a href="#method-c-sbClear">::sbClear</a></li>
77
77
 
78
- <li><a href="#M000054">::scoreboards</a></li>
78
+ <li><a href="#method-c-scoreboards">::scoreboards</a></li>
79
79
 
80
- <li><a href="#M000053">#==</a></li>
80
+ <li><a href="#method-i-addAssignment">#addAssignment</a></li>
81
81
 
82
- <li><a href="#M000046">#addAssignment</a></li>
82
+ <li><a href="#method-i-assigned%3F">#assigned?</a></li>
83
83
 
84
- <li><a href="#M000048">#assigned?</a></li>
84
+ <li><a href="#method-i-collectTimeOffIntervals">#collectTimeOffIntervals</a></li>
85
85
 
86
- <li><a href="#M000052">#collectTimeOffIntervals</a></li>
86
+ <li><a href="#method-i-getSbSlot">#getSbSlot</a></li>
87
87
 
88
- <li><a href="#M000047">#getSbSlot</a></li>
88
+ <li><a href="#method-i-hashKey">#hashKey</a></li>
89
89
 
90
- <li><a href="#M000057">#newScoreboard</a></li>
90
+ <li><a href="#method-i-newScoreboard">#newScoreboard</a></li>
91
91
 
92
- <li><a href="#M000049">#onShift?</a></li>
92
+ <li><a href="#method-i-onShift%3F">#onShift?</a></li>
93
93
 
94
- <li><a href="#M000051">#onVacation?</a></li>
94
+ <li><a href="#method-i-onVacation%3F">#onVacation?</a></li>
95
95
 
96
- <li><a href="#M000059">#overlaps?</a></li>
96
+ <li><a href="#method-i-overlaps%3F">#overlaps?</a></li>
97
97
 
98
- <li><a href="#M000045">#setProject</a></li>
98
+ <li><a href="#method-i-timeOff%3F">#timeOff?</a></li>
99
99
 
100
- <li><a href="#M000050">#timeOff?</a></li>
101
-
102
- <li><a href="#M000056">#to_s</a></li>
100
+ <li><a href="#method-i-to_s">#to_s</a></li>
103
101
 
104
102
  </ul>
105
103
  </div>
@@ -127,6 +125,8 @@
127
125
  <h3 class="section-header">Files</h3>
128
126
  <ul>
129
127
 
128
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
129
+
130
130
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
131
131
 
132
132
  <li class="file"><a href="../README.html">README</a></li>
@@ -296,6 +296,8 @@
296
296
 
297
297
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
298
298
 
299
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
300
+
299
301
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
300
302
 
301
303
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -310,6 +312,8 @@
310
312
 
311
313
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
312
314
 
315
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
316
+
313
317
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
314
318
 
315
319
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -326,12 +330,16 @@
326
330
 
327
331
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
328
332
 
333
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
334
+
329
335
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
330
336
 
331
337
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
332
338
 
333
339
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
334
340
 
341
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
342
+
335
343
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
336
344
 
337
345
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -350,6 +358,8 @@
350
358
 
351
359
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
352
360
 
361
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
362
+
353
363
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
354
364
 
355
365
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -478,6 +488,8 @@
478
488
 
479
489
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
480
490
 
491
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
492
+
481
493
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
482
494
 
483
495
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -522,8 +534,12 @@
522
534
 
523
535
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
524
536
 
537
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
538
+
525
539
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
526
540
 
541
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
542
+
527
543
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
528
544
 
529
545
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -550,6 +566,8 @@
550
566
 
551
567
  <li><a href="../String.html">String</a></li>
552
568
 
569
+ <li><a href="../StringIO.html">StringIO</a></li>
570
+
553
571
  </ul>
554
572
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
555
573
  </div>
@@ -618,9 +636,11 @@ Bit 6: Reserved Bit 7: 0: No global override
618
636
  <div id="project-attribute-method" class="method-detail">
619
637
  <a name="project"></a>
620
638
 
639
+ <a name="project="></a>
640
+
621
641
  <div class="method-heading attribute-method-heading">
622
642
  <span class="method-name">project</span><span
623
- class="attribute-access-type">[R]</span>
643
+ class="attribute-access-type">[RW]</span>
624
644
  </div>
625
645
 
626
646
  <div class="method-description">
@@ -655,7 +675,7 @@ Bit 6: Reserved Bit 7: 0: No global override
655
675
 
656
676
 
657
677
  <div id="new-method" class="method-detail ">
658
- <a name="M000044"></a>
678
+ <a name="method-c-new"></a>
659
679
 
660
680
  <div class="method-heading">
661
681
 
@@ -678,18 +698,28 @@ Bit 6: Reserved Bit 7: 0: No global override
678
698
  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>)
679
699
  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>)
680
700
  109:
681
- 110: <span class="ruby-ivar">@assignments</span> = []
682
- 111: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>
683
- 112: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">project</span>
684
- 113: <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>
685
- 114: <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>
686
- 115: <span class="ruby-keyword kw">end</span>
687
- 116: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
688
- 117: <span class="ruby-keyword kw">else</span>
689
- 118: <span class="ruby-ivar">@project</span> = <span class="ruby-keyword kw">nil</span>
690
- 119: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
691
- 120: <span class="ruby-keyword kw">end</span>
692
- 121: <span class="ruby-keyword kw">end</span></pre>
701
+ 110: <span class="ruby-comment cmt"># An Array of ShiftAssignment objects.</span>
702
+ 111: <span class="ruby-ivar">@assignments</span> = []
703
+ 112:
704
+ 113: <span class="ruby-comment cmt"># A String that uniquely identifies the content of this ShiftAssignment</span>
705
+ 114: <span class="ruby-comment cmt"># object.</span>
706
+ 115: <span class="ruby-ivar">@hashKey</span> = <span class="ruby-keyword kw">nil</span>
707
+ 116:
708
+ 117: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sa</span>
709
+ 118: <span class="ruby-comment cmt"># A ShiftAssignments object was passed to the contructor. We create a</span>
710
+ 119: <span class="ruby-comment cmt"># deep copy of it.</span>
711
+ 120: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">project</span>
712
+ 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>
713
+ 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>
714
+ 123: <span class="ruby-keyword kw">end</span>
715
+ 124: <span class="ruby-comment cmt"># Create a new ScoreBoard or share one with a ShiftAssignments object</span>
716
+ 125: <span class="ruby-comment cmt"># that has the same set of shift assignments.</span>
717
+ 126: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
718
+ 127: <span class="ruby-keyword kw">else</span>
719
+ 128: <span class="ruby-ivar">@project</span> = <span class="ruby-keyword kw">nil</span>
720
+ 129: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-keyword kw">nil</span>
721
+ 130: <span class="ruby-keyword kw">end</span>
722
+ 131: <span class="ruby-keyword kw">end</span></pre>
693
723
  </div>
694
724
 
695
725
  </div>
@@ -701,7 +731,7 @@ Bit 6: Reserved Bit 7: 0: No global override
701
731
 
702
732
 
703
733
  <div id="sb-lear-method" class="method-detail ">
704
- <a name="M000055"></a>
734
+ <a name="method-c-sbClear"></a>
705
735
 
706
736
  <div class="method-heading">
707
737
 
@@ -720,10 +750,10 @@ Bit 6: Reserved Bit 7: 0: No global override
720
750
  <div class="method-source-code"
721
751
  id="sb-lear-source">
722
752
  <pre>
723
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 219</span>
724
- 219: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">sbClear</span>
725
- 220: <span class="ruby-identifier">@@scoreboards</span> = []
726
- 221: <span class="ruby-keyword kw">end</span></pre>
753
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 212</span>
754
+ 212: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">sbClear</span>
755
+ 213: <span class="ruby-identifier">@@scoreboards</span> = {}
756
+ 214: <span class="ruby-keyword kw">end</span></pre>
727
757
  </div>
728
758
 
729
759
  </div>
@@ -735,7 +765,7 @@ Bit 6: Reserved Bit 7: 0: No global override
735
765
 
736
766
 
737
767
  <div id="scoreboards-method" class="method-detail ">
738
- <a name="M000054"></a>
768
+ <a name="method-c-scoreboards"></a>
739
769
 
740
770
  <div class="method-heading">
741
771
 
@@ -754,10 +784,10 @@ Bit 6: Reserved Bit 7: 0: No global override
754
784
  <div class="method-source-code"
755
785
  id="scoreboards-source">
756
786
  <pre>
757
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 215</span>
758
- 215: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">scoreboards</span>
759
- 216: <span class="ruby-identifier">@@scoreboards</span>
760
- 217: <span class="ruby-keyword kw">end</span></pre>
787
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 208</span>
788
+ 208: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">ShiftAssignments</span>.<span class="ruby-identifier">scoreboards</span>
789
+ 209: <span class="ruby-identifier">@@scoreboards</span>
790
+ 210: <span class="ruby-keyword kw">end</span></pre>
761
791
  </div>
762
792
 
763
793
  </div>
@@ -775,7 +805,7 @@ Bit 6: Reserved Bit 7: 0: No global override
775
805
 
776
806
 
777
807
  <div id="delete-coreboard-method" class="method-detail ">
778
- <a name="M000058"></a>
808
+ <a name="method-c-deleteScoreboard"></a>
779
809
 
780
810
  <div class="method-heading">
781
811
 
@@ -800,22 +830,26 @@ the GC.
800
830
  <pre>
801
831
  <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 270</span>
802
832
  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>)
803
- 271: <span class="ruby-comment cmt"># Attention: Due to the way this class is called, there will be no visible</span>
804
- 272: <span class="ruby-comment cmt"># exceptions here. All runtime errors will go unnoticed!</span>
833
+ 271: <span class="ruby-comment cmt"># Attention: Due to the way this class is called, there will be no</span>
834
+ 272: <span class="ruby-comment cmt"># visible exceptions here. All runtime errors will go unnoticed!</span>
805
835
  273: <span class="ruby-comment cmt">#</span>
806
- 274: <span class="ruby-comment cmt"># Well search the @@scoreboards for an entry that holds a reference to the</span>
807
- 275: <span class="ruby-comment cmt"># deleted ShiftAssignments object. If it's the last in the record, we</span>
808
- 276: <span class="ruby-comment cmt"># delete the whole record. If not, we'll just remove it form the record.</span>
809
- 277: <span class="ruby-identifier">@@scoreboards</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sbRecord</span><span class="ruby-operator">|</span>
810
- 278: <span class="ruby-identifier">assignmentObjectIDs</span> = <span class="ruby-identifier">sbRecord</span>[<span class="ruby-value">0</span>]
811
- 279: <span class="ruby-identifier">assignmentObjectIDs</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span> <span class="ruby-identifier">id</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">objId</span> }
812
- 280: <span class="ruby-comment cmt"># No more ShiftAssignments in this record. Delete it from the list.</span>
813
- 281: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">assignmentObjectIDs</span>.<span class="ruby-identifier">empty?</span>
814
- 282: <span class="ruby-keyword kw">end</span>
815
- 283: <span class="ruby-comment cmt"># Delete all entries which have empty reference lists.</span>
816
- 284: <span class="ruby-identifier">@@scoreboards</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">sbRecord</span><span class="ruby-operator">|</span> <span class="ruby-identifier">sbRecord</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">empty?</span> }
817
- 285: <span class="ruby-constant">ObjectSpace</span>.<span class="ruby-identifier">undefine_finalizer</span>(<span class="ruby-keyword kw">self</span>)
818
- 286: <span class="ruby-keyword kw">end</span></pre>
836
+ 274: <span class="ruby-comment cmt"># We'll search the @@scoreboards for an entry that holds a reference to</span>
837
+ 275: <span class="ruby-comment cmt"># the deleted ShiftAssignments object. If it's the last in the record,</span>
838
+ 276: <span class="ruby-comment cmt"># we delete the whole record. If not, we'll just remove the reference</span>
839
+ 277: <span class="ruby-comment cmt"># form the record.</span>
840
+ 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>
841
+ 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>)
842
+ 280: <span class="ruby-comment cmt"># Remove the ShiftAssignments object as user of this Scoreboard</span>
843
+ 281: <span class="ruby-comment cmt"># object.</span>
844
+ 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>)
845
+ 283: <span class="ruby-comment cmt"># We've found what we were looking for.</span>
846
+ 284: <span class="ruby-keyword kw">break</span>
847
+ 285: <span class="ruby-keyword kw">end</span>
848
+ 286: <span class="ruby-keyword kw">end</span>
849
+ 287:
850
+ 288: <span class="ruby-comment cmt"># Delete all entries which have empty reference lists.</span>
851
+ 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> }
852
+ 290: <span class="ruby-keyword kw">end</span></pre>
819
853
  </div>
820
854
 
821
855
  </div>
@@ -832,51 +866,8 @@ the GC.
832
866
  <h3 class="section-header">Public Instance Methods</h3>
833
867
 
834
868
 
835
- <div id="--method" class="method-detail ">
836
- <a name="M000053"></a>
837
-
838
- <div class="method-heading">
839
-
840
- <span class="method-name">==</span><span
841
- class="method-args">(shiftAssignments)</span>
842
- <span class="method-click-advice">click to toggle source</span>
843
-
844
- </div>
845
-
846
- <div class="method-description">
847
-
848
- <p>
849
- Returns true if two <a href="ShiftAssignments.html">ShiftAssignments</a>
850
- object have the same assignment pattern.
851
- </p>
852
-
853
-
854
-
855
- <div class="method-source-code"
856
- id="--source">
857
- <pre>
858
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 205</span>
859
- 205: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">==</span>(<span class="ruby-identifier">shiftAssignments</span>)
860
- 206: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">shiftAssignments</span>.<span class="ruby-identifier">assignments</span>.<span class="ruby-identifier">size</span> <span class="ruby-operator">||</span>
861
- 207: <span class="ruby-ivar">@project</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">shiftAssignments</span>.<span class="ruby-identifier">project</span>
862
- 208:
863
- 209: <span class="ruby-ivar">@assignments</span>.<span class="ruby-identifier">size</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>
864
- 210: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@assignments</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">shiftAssignments</span>.<span class="ruby-identifier">assignments</span>[<span class="ruby-identifier">i</span>]
865
- 211: <span class="ruby-keyword kw">end</span>
866
- 212: <span class="ruby-keyword kw">true</span>
867
- 213: <span class="ruby-keyword kw">end</span></pre>
868
- </div>
869
-
870
- </div>
871
-
872
-
873
-
874
-
875
- </div>
876
-
877
-
878
869
  <div id="add-ssignment-method" class="method-detail ">
879
- <a name="M000046"></a>
870
+ <a name="method-i-addAssignment"></a>
880
871
 
881
872
  <div class="method-heading">
882
873
 
@@ -898,15 +889,15 @@ returns true. Otherwise false.
898
889
  <div class="method-source-code"
899
890
  id="add-ssignment-source">
900
891
  <pre>
901
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 130</span>
902
- 130: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addAssignment</span>(<span class="ruby-identifier">shiftAssignment</span>)
903
- 131: <span class="ruby-comment cmt"># Make sure we don't insert overlapping assignments.</span>
904
- 132: <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>)
905
- 133:
906
- 134: <span class="ruby-ivar">@assignments</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">shiftAssignment</span>
907
- 135: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
908
- 136: <span class="ruby-keyword kw">true</span>
909
- 137: <span class="ruby-keyword kw">end</span></pre>
892
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 135</span>
893
+ 135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addAssignment</span>(<span class="ruby-identifier">shiftAssignment</span>)
894
+ 136: <span class="ruby-comment cmt"># Make sure we don't insert overlapping assignments.</span>
895
+ 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>)
896
+ 138:
897
+ 139: <span class="ruby-ivar">@assignments</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">shiftAssignment</span>
898
+ 140: <span class="ruby-ivar">@scoreboard</span> = <span class="ruby-identifier">newScoreboard</span>
899
+ 141: <span class="ruby-keyword kw">true</span>
900
+ 142: <span class="ruby-keyword kw">end</span></pre>
910
901
  </div>
911
902
 
912
903
  </div>
@@ -918,7 +909,7 @@ returns true. Otherwise false.
918
909
 
919
910
 
920
911
  <div id="assigned--method" class="method-detail ">
921
- <a name="M000048"></a>
912
+ <a name="method-i-assigned%3F"></a>
922
913
 
923
914
  <div class="method-heading">
924
915
 
@@ -940,10 +931,10 @@ interval specified by <em>date</em>.
940
931
  <div class="method-source-code"
941
932
  id="assigned--source">
942
933
  <pre>
943
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 173</span>
944
- 173: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
945
- 174: (<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>
946
- 175: <span class="ruby-keyword kw">end</span></pre>
934
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 178</span>
935
+ 178: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">assigned?</span>(<span class="ruby-identifier">date</span>)
936
+ 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>
937
+ 180: <span class="ruby-keyword kw">end</span></pre>
947
938
  </div>
948
939
 
949
940
  </div>
@@ -955,7 +946,7 @@ interval specified by <em>date</em>.
955
946
 
956
947
 
957
948
  <div id="collect-ime-ff-ntervals-method" class="method-detail ">
958
- <a name="M000052"></a>
949
+ <a name="method-i-collectTimeOffIntervals"></a>
959
950
 
960
951
  <div class="method-heading">
961
952
 
@@ -977,12 +968,12 @@ minDuration long and contain no working time.
977
968
  <div class="method-source-code"
978
969
  id="collect-ime-ff-ntervals-source">
979
970
  <pre>
980
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 197</span>
981
- 197: <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>)
982
- 198: <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>
983
- 199: (<span class="ruby-identifier">val</span> &amp; <span class="ruby-value">0x3E</span>) <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
984
- 200: <span class="ruby-keyword kw">end</span>
985
- 201: <span class="ruby-keyword kw">end</span></pre>
971
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 202</span>
972
+ 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>)
973
+ 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>
974
+ 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>
975
+ 205: <span class="ruby-keyword kw">end</span>
976
+ 206: <span class="ruby-keyword kw">end</span></pre>
986
977
  </div>
987
978
 
988
979
  </div>
@@ -994,7 +985,7 @@ minDuration long and contain no working time.
994
985
 
995
986
 
996
987
  <div id="get-b-lot-method" class="method-detail ">
997
- <a name="M000047"></a>
988
+ <a name="method-i-getSbSlot"></a>
998
989
 
999
990
  <div class="method-heading">
1000
991
 
@@ -1017,36 +1008,36 @@ calculated first.
1017
1008
  <div class="method-source-code"
1018
1009
  id="get-b-lot-source">
1019
1010
  <pre>
1020
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 141</span>
1021
- 141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>)
1022
- 142: <span class="ruby-identifier">idx</span> = <span class="ruby-ivar">@scoreboard</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>)
1023
- 143: <span class="ruby-comment cmt"># Check if we have a value already for this slot.</span>
1024
- 144: <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>
1025
- 145:
1026
- 146:
1027
- 147: <span class="ruby-comment cmt"># If not, compute it.</span>
1028
- 148: <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>
1029
- 149: <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>)
1011
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 146</span>
1012
+ 146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getSbSlot</span>(<span class="ruby-identifier">date</span>)
1013
+ 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>)
1014
+ 148: <span class="ruby-comment cmt"># Check if we have a value already for this slot.</span>
1015
+ 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>
1030
1016
  150:
1031
- 151: <span class="ruby-comment cmt"># Mark the slot as 'assigned'. Meaning, the rest of the bits are valid</span>
1032
- 152: <span class="ruby-comment cmt"># for this time slot.</span>
1033
- 153: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">1</span>
1034
- 154:
1035
- 155: <span class="ruby-comment cmt"># Set bit 1 if the shift is not active</span>
1036
- 156: <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>)
1037
- 157:
1038
- 158: <span class="ruby-comment cmt"># Set bits 2 - 5 to 1 if it's a vacation slot.</span>
1039
- 159: <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>)
1040
- 160:
1041
- 161: <span class="ruby-comment cmt"># Set the 8th bit if the shift replaces global vacations.</span>
1042
- 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">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>)
1043
- 163:
1044
- 164: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
1045
- 165: <span class="ruby-keyword kw">end</span>
1046
- 166:
1047
- 167: <span class="ruby-comment cmt"># The slot is not covered by any assignment.</span>
1048
- 168: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">0</span>
1049
- 169: <span class="ruby-keyword kw">end</span></pre>
1017
+ 151:
1018
+ 152: <span class="ruby-comment cmt"># If not, compute it.</span>
1019
+ 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>
1020
+ 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>)
1021
+ 155:
1022
+ 156: <span class="ruby-comment cmt"># Mark the slot as 'assigned'. Meaning, the rest of the bits are valid</span>
1023
+ 157: <span class="ruby-comment cmt"># for this time slot.</span>
1024
+ 158: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">1</span>
1025
+ 159:
1026
+ 160: <span class="ruby-comment cmt"># Set bit 1 if the shift is not active</span>
1027
+ 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>)
1028
+ 162:
1029
+ 163: <span class="ruby-comment cmt"># Set bits 2 - 5 to 1 if it's a vacation slot.</span>
1030
+ 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>)
1031
+ 165:
1032
+ 166: <span class="ruby-comment cmt"># Set the 8th bit if the shift replaces global vacations.</span>
1033
+ 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>)
1034
+ 168:
1035
+ 169: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>]
1036
+ 170: <span class="ruby-keyword kw">end</span>
1037
+ 171:
1038
+ 172: <span class="ruby-comment cmt"># The slot is not covered by any assignment.</span>
1039
+ 173: <span class="ruby-ivar">@scoreboard</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-value">0</span>
1040
+ 174: <span class="ruby-keyword kw">end</span></pre>
1050
1041
  </div>
1051
1042
 
1052
1043
  </div>
@@ -1057,33 +1048,35 @@ calculated first.
1057
1048
  </div>
1058
1049
 
1059
1050
 
1060
- <div id="on-hift--method" class="method-detail ">
1061
- <a name="M000049"></a>
1051
+ <div id="hash-ey-method" class="method-detail ">
1052
+ <a name="method-i-hashKey"></a>
1062
1053
 
1063
1054
  <div class="method-heading">
1064
1055
 
1065
- <span class="method-name">onShift?</span><span
1066
- class="method-args">(date)</span>
1056
+ <span class="method-name">hashKey</span><span
1057
+ class="method-args">()</span>
1067
1058
  <span class="method-click-advice">click to toggle source</span>
1068
1059
 
1069
1060
  </div>
1070
1061
 
1071
1062
  <div class="method-description">
1072
1063
 
1073
- <p>
1074
- Returns true if any of the defined shift periods contains the <em>date</em>
1075
- and the shift has working hours defined for that <em>date</em>.
1076
- </p>
1064
+
1077
1065
 
1078
1066
 
1079
1067
 
1080
1068
  <div class="method-source-code"
1081
- id="on-hift--source">
1069
+ id="hash-ey-source">
1082
1070
  <pre>
1083
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 179</span>
1084
- 179: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
1085
- 180: (<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>
1086
- 181: <span class="ruby-keyword kw">end</span></pre>
1071
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 233</span>
1072
+ 233: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hashKey</span>
1073
+ 234: <span class="ruby-ivar">@hashKey</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@hashKey</span>
1074
+ 235:
1075
+ 236: <span class="ruby-ivar">@hashKey</span> = <span class="ruby-node">&quot;#{@project.object_id}|&quot;</span>
1076
+ 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> }
1077
+ 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> }
1078
+ 239: <span class="ruby-ivar">@hashKey</span>
1079
+ 240: <span class="ruby-keyword kw">end</span></pre>
1087
1080
  </div>
1088
1081
 
1089
1082
  </div>
@@ -1094,12 +1087,12 @@ and the shift has working hours defined for that <em>date</em>.
1094
1087
  </div>
1095
1088
 
1096
1089
 
1097
- <div id="on-acation--method" class="method-detail ">
1098
- <a name="M000051"></a>
1090
+ <div id="on-hift--method" class="method-detail ">
1091
+ <a name="method-i-onShift%3F"></a>
1099
1092
 
1100
1093
  <div class="method-heading">
1101
1094
 
1102
- <span class="method-name">onVacation?</span><span
1095
+ <span class="method-name">onShift?</span><span
1103
1096
  class="method-args">(date)</span>
1104
1097
  <span class="method-click-advice">click to toggle source</span>
1105
1098
 
@@ -1109,18 +1102,18 @@ and the shift has working hours defined for that <em>date</em>.
1109
1102
 
1110
1103
  <p>
1111
1104
  Returns true if any of the defined shift periods contains the <em>date</em>
1112
- and if the shift has a vacation defined for the <em>date</em>.
1105
+ and the shift has working hours defined for that <em>date</em>.
1113
1106
  </p>
1114
1107
 
1115
1108
 
1116
1109
 
1117
1110
  <div class="method-source-code"
1118
- id="on-acation--source">
1111
+ id="on-hift--source">
1119
1112
  <pre>
1120
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 191</span>
1121
- 191: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
1122
- 192: (<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>
1123
- 193: <span class="ruby-keyword kw">end</span></pre>
1113
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 184</span>
1114
+ 184: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onShift?</span>(<span class="ruby-identifier">date</span>)
1115
+ 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>
1116
+ 186: <span class="ruby-keyword kw">end</span></pre>
1124
1117
  </div>
1125
1118
 
1126
1119
  </div>
@@ -1131,13 +1124,13 @@ and if the shift has a vacation defined for the <em>date</em>.
1131
1124
  </div>
1132
1125
 
1133
1126
 
1134
- <div id="set-roject-method" class="method-detail ">
1135
- <a name="M000045"></a>
1127
+ <div id="on-acation--method" class="method-detail ">
1128
+ <a name="method-i-onVacation%3F"></a>
1136
1129
 
1137
1130
  <div class="method-heading">
1138
1131
 
1139
- <span class="method-name">setProject</span><span
1140
- class="method-args">(project)</span>
1132
+ <span class="method-name">onVacation?</span><span
1133
+ class="method-args">(date)</span>
1141
1134
  <span class="method-click-advice">click to toggle source</span>
1142
1135
 
1143
1136
  </div>
@@ -1145,18 +1138,19 @@ and if the shift has a vacation defined for the <em>date</em>.
1145
1138
  <div class="method-description">
1146
1139
 
1147
1140
  <p>
1148
- Some operations require access to the whole project.
1141
+ Returns true if any of the defined shift periods contains the <em>date</em>
1142
+ and if the shift has a vacation defined for the <em>date</em>.
1149
1143
  </p>
1150
1144
 
1151
1145
 
1152
1146
 
1153
1147
  <div class="method-source-code"
1154
- id="set-roject-source">
1148
+ id="on-acation--source">
1155
1149
  <pre>
1156
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 124</span>
1157
- 124: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setProject</span>(<span class="ruby-identifier">project</span>)
1158
- 125: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">project</span>
1159
- 126: <span class="ruby-keyword kw">end</span></pre>
1150
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 196</span>
1151
+ 196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">onVacation?</span>(<span class="ruby-identifier">date</span>)
1152
+ 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>
1153
+ 198: <span class="ruby-keyword kw">end</span></pre>
1160
1154
  </div>
1161
1155
 
1162
1156
  </div>
@@ -1168,7 +1162,7 @@ Some operations require access to the whole project.
1168
1162
 
1169
1163
 
1170
1164
  <div id="time-ff--method" class="method-detail ">
1171
- <a name="M000050"></a>
1165
+ <a name="method-i-timeOff%3F"></a>
1172
1166
 
1173
1167
  <div class="method-heading">
1174
1168
 
@@ -1191,10 +1185,10 @@ and the shift has a vacation defined or all off hours defined for that
1191
1185
  <div class="method-source-code"
1192
1186
  id="time-ff--source">
1193
1187
  <pre>
1194
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 185</span>
1195
- 185: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">date</span>)
1196
- 186: (<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>
1197
- 187: <span class="ruby-keyword kw">end</span></pre>
1188
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 190</span>
1189
+ 190: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">timeOff?</span>(<span class="ruby-identifier">date</span>)
1190
+ 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>
1191
+ 192: <span class="ruby-keyword kw">end</span></pre>
1198
1192
  </div>
1199
1193
 
1200
1194
  </div>
@@ -1206,7 +1200,7 @@ and the shift has a vacation defined or all off hours defined for that
1206
1200
 
1207
1201
 
1208
1202
  <div id="to-s-method" class="method-detail ">
1209
- <a name="M000056"></a>
1203
+ <a name="method-i-to_s"></a>
1210
1204
 
1211
1205
  <div class="method-heading">
1212
1206
 
@@ -1227,22 +1221,22 @@ This function is primarily used for debugging purposes.
1227
1221
  <div class="method-source-code"
1228
1222
  id="to-s-source">
1229
1223
  <pre>
1230
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 224</span>
1231
- 224: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1232
- 225: <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>
1233
- 226:
1234
- 227: <span class="ruby-identifier">out</span> = <span class="ruby-value str">&quot;shifts &quot;</span>
1235
- 228: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1236
- 229: <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>
1237
- 230: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1238
- 231: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1239
- 232: <span class="ruby-keyword kw">else</span>
1240
- 233: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span>
1241
- 234: <span class="ruby-keyword kw">end</span>
1242
- 235: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">sa</span>.<span class="ruby-identifier">to_s</span>
1243
- 236: <span class="ruby-keyword kw">end</span>
1244
- 237: <span class="ruby-identifier">out</span>
1245
- 238: <span class="ruby-keyword kw">end</span></pre>
1224
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 217</span>
1225
+ 217: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1226
+ 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>
1227
+ 219:
1228
+ 220: <span class="ruby-identifier">out</span> = <span class="ruby-value str">&quot;shifts &quot;</span>
1229
+ 221: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1230
+ 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>
1231
+ 223: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1232
+ 224: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1233
+ 225: <span class="ruby-keyword kw">else</span>
1234
+ 226: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span>
1235
+ 227: <span class="ruby-keyword kw">end</span>
1236
+ 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>
1237
+ 229: <span class="ruby-keyword kw">end</span>
1238
+ 230: <span class="ruby-identifier">out</span>
1239
+ 231: <span class="ruby-keyword kw">end</span></pre>
1246
1240
  </div>
1247
1241
 
1248
1242
  </div>
@@ -1260,7 +1254,7 @@ This function is primarily used for debugging purposes.
1260
1254
 
1261
1255
 
1262
1256
  <div id="new-coreboard-method" class="method-detail ">
1263
- <a name="M000057"></a>
1257
+ <a name="method-i-newScoreboard"></a>
1264
1258
 
1265
1259
  <div class="method-heading">
1266
1260
 
@@ -1283,28 +1277,26 @@ assigment patterns.
1283
1277
  <div class="method-source-code"
1284
1278
  id="new-coreboard-source">
1285
1279
  <pre>
1286
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 244</span>
1287
- 244: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newScoreboard</span>
1288
- 245: <span class="ruby-identifier">@@scoreboards</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sbRecord</span><span class="ruby-operator">|</span>
1289
- 246: <span class="ruby-comment cmt"># We only have to look at the first ShiftAssignment for a comparison.</span>
1290
- 247: <span class="ruby-comment cmt"># The others should match as well.</span>
1291
- 248: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">self</span> <span class="ruby-operator">==</span> <span class="ruby-constant">ObjectSpace</span>.<span class="ruby-identifier">_id2ref</span>(<span class="ruby-identifier">sbRecord</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>])
1292
- 249: <span class="ruby-comment cmt"># Register the ShiftAssignments object as a user of an existing</span>
1293
- 250: <span class="ruby-comment cmt"># scoreboard. We have to store the object_id, not the reference. If</span>
1294
- 251: <span class="ruby-comment cmt"># we'd store a reference, the GC will never destroy it.</span>
1295
- 252: <span class="ruby-identifier">sbRecord</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">object_id</span>
1296
- 253: <span class="ruby-comment cmt"># Return a reference to the existing scoreboard.</span>
1297
- 254: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">sbRecord</span>[<span class="ruby-value">1</span>]
1298
- 255: <span class="ruby-keyword kw">end</span>
1299
- 256: <span class="ruby-keyword kw">end</span>
1280
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 246</span>
1281
+ 246: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newScoreboard</span>
1282
+ 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>])
1283
+ 248: <span class="ruby-comment cmt"># If we already have a Scoreboard object for the hashKey of this</span>
1284
+ 249: <span class="ruby-comment cmt"># ShiftAssignments object, we can re-use this. We just need to</span>
1285
+ 250: <span class="ruby-comment cmt"># register the object as a user of it.</span>
1286
+ 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>
1287
+ 252:
1288
+ 253: <span class="ruby-comment cmt"># Return the re-used Scoreboard object.</span>
1289
+ 254: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">record</span>[<span class="ruby-value">1</span>]
1290
+ 255: <span class="ruby-keyword kw">end</span>
1291
+ 256:
1300
1292
  257: <span class="ruby-comment cmt"># We have not found a matching scoreboard, so we have to create a new one.</span>
1301
1293
  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>],
1302
1294
  259: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'scheduleGranularity'</span>])
1303
1295
  260: <span class="ruby-comment cmt"># Create a new record for it and register the ShiftAssignments object as</span>
1304
- 261: <span class="ruby-comment cmt"># first user.</span>
1305
- 262: <span class="ruby-identifier">newRecord</span> = [ [ <span class="ruby-identifier">object_id</span> ], <span class="ruby-identifier">newSb</span> ]
1306
- 263: <span class="ruby-comment cmt"># Append the new record to the list.</span>
1307
- 264: <span class="ruby-identifier">@@scoreboards</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">newRecord</span>
1296
+ 261: <span class="ruby-comment cmt"># first user. Add the record to the @@scoreboards list.</span>
1297
+ 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> ]
1298
+ 263:
1299
+ 264: <span class="ruby-comment cmt"># Append the new record to the list.</span>
1308
1300
  265: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">newSb</span>
1309
1301
  266: <span class="ruby-keyword kw">end</span></pre>
1310
1302
  </div>
@@ -1318,7 +1310,7 @@ assigment patterns.
1318
1310
 
1319
1311
 
1320
1312
  <div id="overlaps--method" class="method-detail ">
1321
- <a name="M000059"></a>
1313
+ <a name="method-i-overlaps%3F"></a>
1322
1314
 
1323
1315
  <div class="method-heading">
1324
1316
 
@@ -1339,13 +1331,13 @@ Returns true if the interval overlaps with any of the assignment periods.
1339
1331
  <div class="method-source-code"
1340
1332
  id="overlaps--source">
1341
1333
  <pre>
1342
- <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 289</span>
1343
- 289: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
1344
- 290: <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>
1345
- 291: <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>)
1346
- 292: <span class="ruby-keyword kw">end</span>
1347
- 293: <span class="ruby-keyword kw">false</span>
1348
- 294: <span class="ruby-keyword kw">end</span></pre>
1334
+ <span class="ruby-comment cmt"># File lib/ShiftAssignments.rb, line 293</span>
1335
+ 293: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">iv</span>)
1336
+ 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>
1337
+ 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>)
1338
+ 296: <span class="ruby-keyword kw">end</span>
1339
+ 297: <span class="ruby-keyword kw">false</span>
1340
+ 298: <span class="ruby-keyword kw">end</span></pre>
1349
1341
  </div>
1350
1342
 
1351
1343
  </div>