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
@@ -69,9 +69,9 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M001099">#a_include?</a></li>
72
+ <li><a href="#method-i-a_include%3F">#a_include?</a></li>
73
73
 
74
- <li><a href="#M001098">#include?</a></li>
74
+ <li><a href="#method-i-include%3F">#include?</a></li>
75
75
 
76
76
  </ul>
77
77
  </div>
@@ -88,6 +88,8 @@
88
88
  <h3 class="section-header">Files</h3>
89
89
  <ul>
90
90
 
91
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
92
+
91
93
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
92
94
 
93
95
  <li class="file"><a href="../README.html">README</a></li>
@@ -257,6 +259,8 @@
257
259
 
258
260
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
259
261
 
262
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
263
+
260
264
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
261
265
 
262
266
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -271,6 +275,8 @@
271
275
 
272
276
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
273
277
 
278
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
279
+
274
280
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
275
281
 
276
282
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -287,12 +293,16 @@
287
293
 
288
294
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
289
295
 
296
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
297
+
290
298
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
291
299
 
292
300
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
293
301
 
294
302
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
295
303
 
304
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
305
+
296
306
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
297
307
 
298
308
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -311,6 +321,8 @@
311
321
 
312
322
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
313
323
 
324
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
325
+
314
326
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
315
327
 
316
328
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -439,6 +451,8 @@
439
451
 
440
452
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
441
453
 
454
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
455
+
442
456
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
443
457
 
444
458
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -483,8 +497,12 @@
483
497
 
484
498
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
485
499
 
500
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
501
+
486
502
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
487
503
 
504
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
505
+
488
506
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
489
507
 
490
508
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -511,6 +529,8 @@
511
529
 
512
530
  <li><a href="../String.html">String</a></li>
513
531
 
532
+ <li><a href="../StringIO.html">StringIO</a></li>
533
+
514
534
  </ul>
515
535
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
516
536
  </div>
@@ -539,7 +559,7 @@
539
559
 
540
560
 
541
561
  <div id="a-include--method" class="method-detail method-alias">
542
- <a name="M001099"></a>
562
+ <a name="method-i-a_include%3F"></a>
543
563
 
544
564
  <div class="method-heading">
545
565
 
@@ -561,14 +581,14 @@
561
581
 
562
582
 
563
583
  <div class="aliases">
564
- Alias for: <a href="KeywordArray.html#M001098">include?</a>
584
+ Alias for: <a href="KeywordArray.html#method-i-include%3F">include?</a>
565
585
  </div>
566
586
 
567
587
  </div>
568
588
 
569
589
 
570
590
  <div id="include--method" class="method-detail ">
571
- <a name="M001098"></a>
591
+ <a name="method-i-include%3F"></a>
572
592
 
573
593
  <div class="method-heading">
574
594
 
@@ -597,7 +617,7 @@
597
617
 
598
618
 
599
619
  <div class="aliases">
600
- Also aliased as: <a href="KeywordArray.html#M001099">a_include?</a>
620
+ Also aliased as: <a href="KeywordArray.html#method-i-a_include%3F">a_include?</a>
601
621
  </div>
602
622
 
603
623
 
@@ -69,31 +69,31 @@
69
69
  <h3 class="section-header">Methods</h3>
70
70
  <ul class="link-list">
71
71
 
72
- <li><a href="#M000999">::new</a></li>
72
+ <li><a href="#method-c-new">::new</a></li>
73
73
 
74
- <li><a href="#M001005">#checkReference</a></li>
74
+ <li><a href="#method-i-checkReference">#checkReference</a></li>
75
75
 
76
- <li><a href="#M001001">#computeInheritance</a></li>
76
+ <li><a href="#method-i-computeInheritance">#computeInheritance</a></li>
77
77
 
78
- <li><a href="#M001000">#crossReference</a></li>
78
+ <li><a href="#method-i-crossReference">#crossReference</a></li>
79
79
 
80
- <li><a href="#M001011">#format</a></li>
80
+ <li><a href="#method-i-format">#format</a></li>
81
81
 
82
- <li><a href="#M001004">#generateHTML</a></li>
82
+ <li><a href="#method-i-generateHTML">#generateHTML</a></li>
83
83
 
84
- <li><a href="#M001007">#generateHTMLNavigationBar</a></li>
84
+ <li><a href="#method-i-generateHTMLNavigationBar">#generateHTMLNavigationBar</a></li>
85
85
 
86
- <li><a href="#M001006">#indent</a></li>
86
+ <li><a href="#method-i-indent">#indent</a></li>
87
87
 
88
- <li><a href="#M001008">#keywordHTMLRef</a></li>
88
+ <li><a href="#method-i-keywordHTMLRef">#keywordHTMLRef</a></li>
89
89
 
90
- <li><a href="#M001010">#listHTMLAttributes</a></li>
90
+ <li><a href="#method-i-listHTMLAttributes">#listHTMLAttributes</a></li>
91
91
 
92
- <li><a href="#M001009">#newRichText</a></li>
92
+ <li><a href="#method-i-newRichText">#newRichText</a></li>
93
93
 
94
- <li><a href="#M001002">#title</a></li>
94
+ <li><a href="#method-i-title">#title</a></li>
95
95
 
96
- <li><a href="#M001003">#to_s</a></li>
96
+ <li><a href="#method-i-to_s">#to_s</a></li>
97
97
 
98
98
  </ul>
99
99
  </div>
@@ -110,6 +110,8 @@
110
110
  <h3 class="section-header">Files</h3>
111
111
  <ul>
112
112
 
113
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
114
+
113
115
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
114
116
 
115
117
  <li class="file"><a href="../README.html">README</a></li>
@@ -279,6 +281,8 @@
279
281
 
280
282
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
281
283
 
284
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
285
+
282
286
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
283
287
 
284
288
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -293,6 +297,8 @@
293
297
 
294
298
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
295
299
 
300
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
301
+
296
302
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
297
303
 
298
304
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -309,12 +315,16 @@
309
315
 
310
316
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
311
317
 
318
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
319
+
312
320
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
313
321
 
314
322
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
315
323
 
316
324
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
317
325
 
326
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
327
+
318
328
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
319
329
 
320
330
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -333,6 +343,8 @@
333
343
 
334
344
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
335
345
 
346
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
347
+
336
348
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
337
349
 
338
350
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -461,6 +473,8 @@
461
473
 
462
474
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
463
475
 
476
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
477
+
464
478
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
465
479
 
466
480
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -505,8 +519,12 @@
505
519
 
506
520
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
507
521
 
522
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
523
+
508
524
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
509
525
 
526
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
527
+
510
528
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
511
529
 
512
530
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -533,6 +551,8 @@
533
551
 
534
552
  <li><a href="../String.html">String</a></li>
535
553
 
554
+ <li><a href="../StringIO.html">StringIO</a></li>
555
+
536
556
  </ul>
537
557
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
538
558
  </div>
@@ -727,7 +747,7 @@ and whether the keyword is scenario specific or not.
727
747
 
728
748
 
729
749
  <div id="new-method" class="method-detail ">
730
- <a name="M000999"></a>
750
+ <a name="method-c-new"></a>
731
751
 
732
752
  <div class="method-heading">
733
753
 
@@ -799,7 +819,7 @@ TextParser::Patterns that are optional attributes to this keyword.
799
819
 
800
820
 
801
821
  <div id="compute-nheritance-method" class="method-detail ">
802
- <a name="M001001"></a>
822
+ <a name="method-i-computeInheritance"></a>
803
823
 
804
824
  <div class="method-heading">
805
825
 
@@ -860,7 +880,7 @@ TextParser::Patterns that are optional attributes to this keyword.
860
880
 
861
881
 
862
882
  <div id="cross-eference-method" class="method-detail ">
863
- <a name="M001000"></a>
883
+ <a name="method-i-crossReference"></a>
864
884
 
865
885
  <div class="method-heading">
866
886
 
@@ -928,7 +948,7 @@ href="KeywordDocumentation.html">KeywordDocumentation</a> items.
928
948
 
929
949
 
930
950
  <div id="generate--method" class="method-detail ">
931
- <a name="M001004"></a>
951
+ <a name="method-i-generateHTML"></a>
932
952
 
933
953
  <div class="method-heading">
934
954
 
@@ -1159,7 +1179,7 @@ documentation in an XML formatted form.
1159
1179
 
1160
1180
 
1161
1181
  <div id="title-method" class="method-detail ">
1162
- <a name="M001002"></a>
1182
+ <a name="method-i-title"></a>
1163
1183
 
1164
1184
  <div class="method-heading">
1165
1185
 
@@ -1203,7 +1223,7 @@ is returned as &#8216;foo (bar)&#8217;. &#8216;foo&#8217; will remain
1203
1223
 
1204
1224
 
1205
1225
  <div id="to-s-method" class="method-detail ">
1206
- <a name="M001003"></a>
1226
+ <a name="method-i-to_s"></a>
1207
1227
 
1208
1228
  <div class="method-heading">
1209
1229
 
@@ -1357,7 +1377,7 @@ Return the complete documentation of this keyword as formatted text string.
1357
1377
 
1358
1378
 
1359
1379
  <div id="check-eference-method" class="method-detail ">
1360
- <a name="M001005"></a>
1380
+ <a name="method-i-checkReference"></a>
1361
1381
 
1362
1382
  <div class="method-heading">
1363
1383
 
@@ -1396,7 +1416,7 @@ Return the complete documentation of this keyword as formatted text string.
1396
1416
 
1397
1417
 
1398
1418
  <div id="format-method" class="method-detail ">
1399
- <a name="M001011"></a>
1419
+ <a name="method-i-format"></a>
1400
1420
 
1401
1421
  <div class="method-heading">
1402
1422
 
@@ -1430,7 +1450,7 @@ Return the complete documentation of this keyword as formatted text string.
1430
1450
 
1431
1451
 
1432
1452
  <div id="generate-avigation-ar-method" class="method-detail ">
1433
- <a name="M001007"></a>
1453
+ <a name="method-i-generateHTMLNavigationBar"></a>
1434
1454
 
1435
1455
  <div class="method-heading">
1436
1456
 
@@ -1470,7 +1490,7 @@ Generate the navigation bar.
1470
1490
 
1471
1491
 
1472
1492
  <div id="indent-method" class="method-detail ">
1473
- <a name="M001006"></a>
1493
+ <a name="method-i-indent"></a>
1474
1494
 
1475
1495
  <div class="method-heading">
1476
1496
 
@@ -1504,7 +1524,7 @@ Generate the navigation bar.
1504
1524
 
1505
1525
 
1506
1526
  <div id="keyword-ef-method" class="method-detail ">
1507
- <a name="M001008"></a>
1527
+ <a name="method-i-keywordHTMLRef"></a>
1508
1528
 
1509
1529
  <div class="method-heading">
1510
1530
 
@@ -1541,7 +1561,7 @@ Return a HTML object with a link to the manual page for the keyword.
1541
1561
 
1542
1562
 
1543
1563
  <div id="list-ttributes-method" class="method-detail ">
1544
- <a name="M001010"></a>
1564
+ <a name="method-i-listHTMLAttributes"></a>
1545
1565
 
1546
1566
  <div class="method-heading">
1547
1567
 
@@ -1592,7 +1612,7 @@ href="KeywordDocumentation.html">KeywordDocumentation</a> list.
1592
1612
 
1593
1613
 
1594
1614
  <div id="new-ich-ext-method" class="method-detail ">
1595
- <a name="M001009"></a>
1615
+ <a name="method-i-newRichText"></a>
1596
1616
 
1597
1617
  <div class="method-heading">
1598
1618
 
@@ -78,19 +78,19 @@
78
78
  <h3 class="section-header">Methods</h3>
79
79
  <ul class="link-list">
80
80
 
81
- <li><a href="#M000114">::new</a></li>
81
+ <li><a href="#method-c-new">::new</a></li>
82
82
 
83
- <li><a href="#M000118">#inc</a></li>
83
+ <li><a href="#method-i-inc">#inc</a></li>
84
84
 
85
- <li><a href="#M000120">#newLimit</a></li>
85
+ <li><a href="#method-i-newLimit">#newLimit</a></li>
86
86
 
87
- <li><a href="#M000119">#ok?</a></li>
87
+ <li><a href="#method-i-ok%3F">#ok?</a></li>
88
88
 
89
- <li><a href="#M000116">#reset</a></li>
89
+ <li><a href="#method-i-reset">#reset</a></li>
90
90
 
91
- <li><a href="#M000117">#setLimit</a></li>
91
+ <li><a href="#method-i-setLimit">#setLimit</a></li>
92
92
 
93
- <li><a href="#M000115">#setProject</a></li>
93
+ <li><a href="#method-i-setProject">#setProject</a></li>
94
94
 
95
95
  </ul>
96
96
  </div>
@@ -107,6 +107,8 @@
107
107
  <h3 class="section-header">Files</h3>
108
108
  <ul>
109
109
 
110
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
111
+
110
112
  <li class="file"><a href="../COPYING.html">COPYING</a></li>
111
113
 
112
114
  <li class="file"><a href="../README.html">README</a></li>
@@ -276,6 +278,8 @@
276
278
 
277
279
  <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
278
280
 
281
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
282
+
279
283
  <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
280
284
 
281
285
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
@@ -290,6 +294,8 @@
290
294
 
291
295
  <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
292
296
 
297
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
298
+
293
299
  <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
294
300
 
295
301
  <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
@@ -306,12 +312,16 @@
306
312
 
307
313
  <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
308
314
 
315
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
316
+
309
317
  <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
310
318
 
311
319
  <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
312
320
 
313
321
  <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
314
322
 
323
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
324
+
315
325
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
316
326
 
317
327
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -330,6 +340,8 @@
330
340
 
331
341
  <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
332
342
 
343
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
344
+
333
345
  <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
334
346
 
335
347
  <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
@@ -458,6 +470,8 @@
458
470
 
459
471
  <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
460
472
 
473
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
474
+
461
475
  <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
462
476
 
463
477
  <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
@@ -502,8 +516,12 @@
502
516
 
503
517
  <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
504
518
 
519
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
520
+
505
521
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
506
522
 
523
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
524
+
507
525
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
508
526
 
509
527
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -530,6 +548,8 @@
530
548
 
531
549
  <li><a href="../String.html">String</a></li>
532
550
 
551
+ <li><a href="../StringIO.html">StringIO</a></li>
552
+
533
553
  </ul>
534
554
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
535
555
  </div>
@@ -560,11 +580,11 @@ limits can be tested with a single function call.
560
580
  <h3 class="section-header">Attributes</h3>
561
581
 
562
582
 
563
- <div id="limits-attribute-method" class="method-detail">
564
- <a name="limits"></a>
583
+ <div id="project-attribute-method" class="method-detail">
584
+ <a name="project"></a>
565
585
 
566
586
  <div class="method-heading attribute-method-heading">
567
- <span class="method-name">limits</span><span
587
+ <span class="method-name">project</span><span
568
588
  class="attribute-access-type">[R]</span>
569
589
  </div>
570
590
 
@@ -575,11 +595,11 @@ limits can be tested with a single function call.
575
595
  </div>
576
596
  </div>
577
597
 
578
- <div id="project-attribute-method" class="method-detail">
579
- <a name="project"></a>
598
+ <div id="limits-attribute-method" class="method-detail">
599
+ <a name="limits"></a>
580
600
 
581
601
  <div class="method-heading attribute-method-heading">
582
- <span class="method-name">project</span><span
602
+ <span class="method-name">limits</span><span
583
603
  class="attribute-access-type">[R]</span>
584
604
  </div>
585
605
 
@@ -600,7 +620,7 @@ limits can be tested with a single function call.
600
620
 
601
621
 
602
622
  <div id="new-method" class="method-detail ">
603
- <a name="M000114"></a>
623
+ <a name="method-c-new"></a>
604
624
 
605
625
  <div class="method-heading">
606
626
 
@@ -622,21 +642,21 @@ passed, it acts as a copy contructor.
622
642
  <div class="method-source-code"
623
643
  id="new-source">
624
644
  <pre>
625
- <span class="ruby-comment cmt"># File lib/Limits.rb, line 105</span>
626
- 105: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">limits</span> = <span class="ruby-keyword kw">nil</span>)
627
- 106: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limits</span>.<span class="ruby-identifier">nil?</span>
628
- 107: <span class="ruby-comment cmt"># Normal initialization</span>
629
- 108: <span class="ruby-ivar">@limits</span> = {}
630
- 109: <span class="ruby-ivar">@project</span> = <span class="ruby-keyword kw">nil</span>
631
- 110: <span class="ruby-keyword kw">else</span>
632
- 111: <span class="ruby-comment cmt"># Deep copy content from other instance.</span>
633
- 112: <span class="ruby-ivar">@limits</span> = {}
634
- 113: <span class="ruby-identifier">limits</span>.<span class="ruby-identifier">limits</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
635
- 114: <span class="ruby-ivar">@limits</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">copy</span>
636
- 115: <span class="ruby-keyword kw">end</span>
637
- 116: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">limits</span>.<span class="ruby-identifier">project</span>
638
- 117: <span class="ruby-keyword kw">end</span>
639
- 118: <span class="ruby-keyword kw">end</span></pre>
645
+ <span class="ruby-comment cmt"># File lib/Limits.rb, line 121</span>
646
+ 121: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">limits</span> = <span class="ruby-keyword kw">nil</span>)
647
+ 122: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">limits</span>.<span class="ruby-identifier">nil?</span>
648
+ 123: <span class="ruby-comment cmt"># Normal initialization</span>
649
+ 124: <span class="ruby-ivar">@limits</span> = []
650
+ 125: <span class="ruby-ivar">@project</span> = <span class="ruby-keyword kw">nil</span>
651
+ 126: <span class="ruby-keyword kw">else</span>
652
+ 127: <span class="ruby-comment cmt"># Deep copy content from other instance.</span>
653
+ 128: <span class="ruby-ivar">@limits</span> = []
654
+ 129: <span class="ruby-identifier">limits</span>.<span class="ruby-identifier">limits</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">name</span>, <span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
655
+ 130: <span class="ruby-ivar">@limits</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">copy</span>
656
+ 131: <span class="ruby-keyword kw">end</span>
657
+ 132: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">limits</span>.<span class="ruby-identifier">project</span>
658
+ 133: <span class="ruby-keyword kw">end</span>
659
+ 134: <span class="ruby-keyword kw">end</span></pre>
640
660
  </div>
641
661
 
642
662
  </div>
@@ -654,7 +674,7 @@ passed, it acts as a copy contructor.
654
674
 
655
675
 
656
676
  <div id="inc-method" class="method-detail ">
657
- <a name="M000118"></a>
677
+ <a name="method-i-inc"></a>
658
678
 
659
679
  <div class="method-heading">
660
680
 
@@ -676,12 +696,12 @@ identified by <em>date</em>.
676
696
  <div class="method-source-code"
677
697
  id="inc-source">
678
698
  <pre>
679
- <span class="ruby-comment cmt"># File lib/Limits.rb, line 146</span>
680
- 146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inc</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
681
- 147: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
682
- 148: <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">inc</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span>)
683
- 149: <span class="ruby-keyword kw">end</span>
684
- 150: <span class="ruby-keyword kw">end</span></pre>
699
+ <span class="ruby-comment cmt"># File lib/Limits.rb, line 168</span>
700
+ 168: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inc</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
701
+ 169: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
702
+ 170: <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">inc</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">resource</span>)
703
+ 171: <span class="ruby-keyword kw">end</span>
704
+ 172: <span class="ruby-keyword kw">end</span></pre>
685
705
  </div>
686
706
 
687
707
  </div>
@@ -693,7 +713,7 @@ identified by <em>date</em>.
693
713
 
694
714
 
695
715
  <div id="ok--method" class="method-detail ">
696
- <a name="M000119"></a>
716
+ <a name="method-i-ok%3F"></a>
697
717
 
698
718
  <div class="method-heading">
699
719
 
@@ -707,8 +727,10 @@ identified by <em>date</em>.
707
727
 
708
728
  <p>
709
729
  Check all upper limits and return true if none is exceeded. If a
710
- <em>date</em> is specified only the counter for that specific period is
711
- tested. Otherwise all periods are tested.
730
+ <em>date</em> is specified only the counters for that specific period are
731
+ tested. Otherwise all periods are tested. If <em>resource</em> is nil, only
732
+ non-resource-specific counters are checked, otherwise only the ones that
733
+ match the <em>resource</em>.
712
734
  </p>
713
735
 
714
736
 
@@ -716,13 +738,13 @@ tested. Otherwise all periods are tested.
716
738
  <div class="method-source-code"
717
739
  id="ok--source">
718
740
  <pre>
719
- <span class="ruby-comment cmt"># File lib/Limits.rb, line 155</span>
720
- 155: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ok?</span>(<span class="ruby-identifier">date</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
721
- 156: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
722
- 157: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">ok?</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">upper</span>, <span class="ruby-identifier">resource</span>)
723
- 158: <span class="ruby-keyword kw">end</span>
724
- 159: <span class="ruby-keyword kw">true</span>
725
- 160: <span class="ruby-keyword kw">end</span></pre>
741
+ <span class="ruby-comment cmt"># File lib/Limits.rb, line 179</span>
742
+ 179: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">ok?</span>(<span class="ruby-identifier">date</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
743
+ 180: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span>
744
+ 181: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">ok?</span>(<span class="ruby-identifier">date</span>, <span class="ruby-identifier">upper</span>, <span class="ruby-identifier">resource</span>)
745
+ 182: <span class="ruby-keyword kw">end</span>
746
+ 183: <span class="ruby-keyword kw">true</span>
747
+ 184: <span class="ruby-keyword kw">end</span></pre>
726
748
  </div>
727
749
 
728
750
  </div>
@@ -734,7 +756,7 @@ tested. Otherwise all periods are tested.
734
756
 
735
757
 
736
758
  <div id="reset-method" class="method-detail ">
737
- <a name="M000116"></a>
759
+ <a name="method-i-reset"></a>
738
760
 
739
761
  <div class="method-heading">
740
762
 
@@ -755,10 +777,10 @@ Reset all counter for all limits.
755
777
  <div class="method-source-code"
756
778
  id="reset-source">
757
779
  <pre>
758
- <span class="ruby-comment cmt"># File lib/Limits.rb, line 130</span>
759
- 130: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
760
- 131: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each_value</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">reset</span> }
761
- 132: <span class="ruby-keyword kw">end</span></pre>
780
+ <span class="ruby-comment cmt"># File lib/Limits.rb, line 146</span>
781
+ 146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
782
+ 147: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">limit</span><span class="ruby-operator">|</span> <span class="ruby-identifier">limit</span>.<span class="ruby-identifier">reset</span> }
783
+ 148: <span class="ruby-keyword kw">end</span></pre>
762
784
  </div>
763
785
 
764
786
  </div>
@@ -770,7 +792,7 @@ Reset all counter for all limits.
770
792
 
771
793
 
772
794
  <div id="set-imit-method" class="method-detail ">
773
- <a name="M000117"></a>
795
+ <a name="method-i-setLimit"></a>
774
796
 
775
797
  <div class="method-heading">
776
798
 
@@ -783,11 +805,10 @@ Reset all counter for all limits.
783
805
  <div class="method-description">
784
806
 
785
807
  <p>
786
- Call this function to create or change a limit. The limit must be uniquely
787
- identified by <tt>name</tt>. <tt>value</tt> is the new limit value (in time
788
- slots). <tt>period</tt> is the <a href="Interval.html">Interval</a> where
789
- the limit is active. In case the interval is nil, the complete project time
790
- frame is used.
808
+ Call this function to create or change a limit. The limit is uniquely
809
+ identified by the combination of <tt>name</tt>, <tt>interval</tt> and
810
+ <tt>resource</tt>. <tt>value</tt> is the new limit value (in time slots).
811
+ In case the interval is nil, the complete project time frame is used.
791
812
  </p>
792
813
 
793
814
 
@@ -795,12 +816,18 @@ frame is used.
795
816
  <div class="method-source-code"
796
817
  id="set-imit-source">
797
818
  <pre>
798
- <span class="ruby-comment cmt"># File lib/Limits.rb, line 138</span>
799
- 138: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
800
- 139: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-identifier">name</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@limits</span>[<span class="ruby-identifier">name</span>]
801
- 140: <span class="ruby-identifier">newLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span>
802
- 141: <span class="ruby-constant">Interval</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>]) <span class="ruby-operator">:</span> <span class="ruby-identifier">interval</span>, <span class="ruby-identifier">resource</span>)
803
- 142: <span class="ruby-keyword kw">end</span></pre>
819
+ <span class="ruby-comment cmt"># File lib/Limits.rb, line 154</span>
820
+ 154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">resource</span> = <span class="ruby-keyword kw">nil</span>)
821
+ 155: <span class="ruby-identifier">iv</span> = <span class="ruby-identifier">interval</span> <span class="ruby-operator">||</span> <span class="ruby-constant">Interval</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>])
822
+ 156: <span class="ruby-comment cmt"># If we have already a limit for the name + interval + resource</span>
823
+ 157: <span class="ruby-comment cmt"># combination, we delete it first.</span>
824
+ 158: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">delete_if</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span>
825
+ 159: <span class="ruby-identifier">l</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">iv</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&amp;&amp;</span>
826
+ 160: <span class="ruby-identifier">l</span>.<span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">iv</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">l</span>.<span class="ruby-identifier">resource</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">resource</span>
827
+ 161: <span class="ruby-keyword kw">end</span>
828
+ 162:
829
+ 163: <span class="ruby-identifier">newLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">iv</span>, <span class="ruby-identifier">resource</span>)
830
+ 164: <span class="ruby-keyword kw">end</span></pre>
804
831
  </div>
805
832
 
806
833
  </div>
@@ -812,7 +839,7 @@ frame is used.
812
839
 
813
840
 
814
841
  <div id="set-roject-method" class="method-detail ">
815
- <a name="M000115"></a>
842
+ <a name="method-i-setProject"></a>
816
843
 
817
844
  <div class="method-heading">
818
845
 
@@ -834,13 +861,13 @@ period.
834
861
  <div class="method-source-code"
835
862
  id="set-roject-source">
836
863
  <pre>
837
- <span class="ruby-comment cmt"># File lib/Limits.rb, line 122</span>
838
- 122: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setProject</span>(<span class="ruby-identifier">project</span>)
839
- 123: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">empty?</span>
840
- 124: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Cannot change project after limits have been set!&quot;</span>
841
- 125: <span class="ruby-keyword kw">end</span>
842
- 126: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">project</span>
843
- 127: <span class="ruby-keyword kw">end</span></pre>
864
+ <span class="ruby-comment cmt"># File lib/Limits.rb, line 138</span>
865
+ 138: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setProject</span>(<span class="ruby-identifier">project</span>)
866
+ 139: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">empty?</span>
867
+ 140: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Cannot change project after limits have been set!&quot;</span>
868
+ 141: <span class="ruby-keyword kw">end</span>
869
+ 142: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">project</span>
870
+ 143: <span class="ruby-keyword kw">end</span></pre>
844
871
  </div>
845
872
 
846
873
  </div>
@@ -858,7 +885,7 @@ period.
858
885
 
859
886
 
860
887
  <div id="new-imit-method" class="method-detail ">
861
- <a name="M000120"></a>
888
+ <a name="method-i-newLimit"></a>
862
889
 
863
890
  <div class="method-heading">
864
891
 
@@ -882,57 +909,59 @@ interval is used for the period length.
882
909
  <div class="method-source-code"
883
910
  id="new-imit-source">
884
911
  <pre>
885
- <span class="ruby-comment cmt"># File lib/Limits.rb, line 167</span>
886
- 167: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span>, <span class="ruby-identifier">resource</span>)
887
- 168: <span class="ruby-comment cmt"># The known intervals are aligned to start at their respective start.</span>
888
- 169: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">midnight</span>
889
- 170: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">midnight</span>
890
- 171: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">name</span>
891
- 172: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'dailymax'</span>
892
- 173: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span>
893
- 174: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
894
- 175: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'dailymin'</span>
895
- 176: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span>
896
- 177: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
897
- 178: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'weeklymax'</span>
898
- 179: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfWeek</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
899
- 180: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfWeek</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
900
- 181: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">7</span>
901
- 182: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
902
- 183: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'weeklymin'</span>
903
- 184: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfWeek</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
904
- 185: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfWeek</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
905
- 186: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">7</span>
906
- 187: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
907
- 188: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'monthlymax'</span>
908
- 189: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfMonth</span>
909
- 190: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfMonth</span>
910
- 191: <span class="ruby-comment cmt"># We use 30 days intervals here. This will cause the interval to drift</span>
911
- 192: <span class="ruby-comment cmt"># away from calendar months. But it's better than using 30.4167 which</span>
912
- 193: <span class="ruby-comment cmt"># does not align with day boundaries.</span>
913
- 194: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">30</span>
914
- 195: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
915
- 196: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'monthlymin'</span>
916
- 197: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfMonth</span>
917
- 198: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfMonth</span>
918
- 199: <span class="ruby-comment cmt"># We use 30 days intervals here. This will cause the interval to drift</span>
919
- 200: <span class="ruby-comment cmt"># away from calendar months. But it's better than using 30.4167 which</span>
920
- 201: <span class="ruby-comment cmt"># does not align with day boundaries.</span>
921
- 202: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">30</span>
922
- 203: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
923
- 204: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'maximum'</span>
924
- 205: <span class="ruby-identifier">period</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>
925
- 206: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
926
- 207: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'minimum'</span>
927
- 208: <span class="ruby-identifier">period</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>
928
- 209: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
929
- 210: <span class="ruby-keyword kw">else</span>
930
- 211: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Limit period undefined&quot;</span>
931
- 212: <span class="ruby-keyword kw">end</span>
932
- 213: <span class="ruby-identifier">endDate</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>]
933
- 214:
934
- 215: <span class="ruby-ivar">@limits</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-constant">Limit</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">interval</span>, <span class="ruby-identifier">period</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">upper</span>, <span class="ruby-identifier">resource</span>)
935
- 216: <span class="ruby-keyword kw">end</span></pre>
912
+ <span class="ruby-comment cmt"># File lib/Limits.rb, line 191</span>
913
+ 191: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span>, <span class="ruby-identifier">resource</span>)
914
+ 192: <span class="ruby-comment cmt"># The known intervals are aligned to start at their respective start.</span>
915
+ 193: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">midnight</span>
916
+ 194: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">midnight</span>
917
+ 195: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">name</span>
918
+ 196: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'dailymax'</span>
919
+ 197: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span>
920
+ 198: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
921
+ 199: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'dailymin'</span>
922
+ 200: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span>
923
+ 201: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
924
+ 202: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'weeklymax'</span>
925
+ 203: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfWeek</span>(
926
+ 204: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
927
+ 205: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfWeek</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
928
+ 206: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">7</span>
929
+ 207: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
930
+ 208: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'weeklymin'</span>
931
+ 209: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfWeek</span>(
932
+ 210: <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
933
+ 211: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfWeek</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'weekStartsMonday'</span>])
934
+ 212: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">7</span>
935
+ 213: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
936
+ 214: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'monthlymax'</span>
937
+ 215: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfMonth</span>
938
+ 216: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfMonth</span>
939
+ 217: <span class="ruby-comment cmt"># We use 30 days intervals here. This will cause the interval to drift</span>
940
+ 218: <span class="ruby-comment cmt"># away from calendar months. But it's better than using 30.4167 which</span>
941
+ 219: <span class="ruby-comment cmt"># does not align with day boundaries.</span>
942
+ 220: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">30</span>
943
+ 221: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
944
+ 222: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'monthlymin'</span>
945
+ 223: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>.<span class="ruby-identifier">beginOfMonth</span>
946
+ 224: <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span>.<span class="ruby-identifier">beginOfMonth</span>
947
+ 225: <span class="ruby-comment cmt"># We use 30 days intervals here. This will cause the interval to drift</span>
948
+ 226: <span class="ruby-comment cmt"># away from calendar months. But it's better than using 30.4167 which</span>
949
+ 227: <span class="ruby-comment cmt"># does not align with day boundaries.</span>
950
+ 228: <span class="ruby-identifier">period</span> = <span class="ruby-value">60</span> * <span class="ruby-value">60</span> * <span class="ruby-value">24</span> * <span class="ruby-value">30</span>
951
+ 229: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
952
+ 230: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'maximum'</span>
953
+ 231: <span class="ruby-identifier">period</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>
954
+ 232: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">true</span>
955
+ 233: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'minimum'</span>
956
+ 234: <span class="ruby-identifier">period</span> = <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">interval</span>.<span class="ruby-identifier">start</span>
957
+ 235: <span class="ruby-identifier">upper</span> = <span class="ruby-keyword kw">false</span>
958
+ 236: <span class="ruby-keyword kw">else</span>
959
+ 237: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Limit period undefined&quot;</span>
960
+ 238: <span class="ruby-keyword kw">end</span>
961
+ 239: <span class="ruby-identifier">endDate</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>]
962
+ 240:
963
+ 241: <span class="ruby-ivar">@limits</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">Limit</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">interval</span>, <span class="ruby-identifier">period</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">upper</span>, <span class="ruby-identifier">resource</span>)
964
+ 242: <span class="ruby-keyword kw">end</span></pre>
936
965
  </div>
937
966
 
938
967
  </div>