taskjuggler 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (415) hide show
  1. data/CHANGELOG +119 -0
  2. data/benchmarks/allocatedSlots.tjp +1602 -0
  3. data/benchmarks/booking.tjp +40 -30
  4. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/css/tjmanual.css +0 -0
  5. data/{test/TestSuite/Scheduler/Correct → benchmarks}/css/tjreport.css +1 -0
  6. data/benchmarks/gantt.tjp +57 -0
  7. data/benchmarks/htmltaskreport.tjp +26 -1
  8. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/details.png +0 -0
  9. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-green.png +0 -0
  10. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-red.png +0 -0
  11. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-yellow.png +0 -0
  12. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resource.png +0 -0
  13. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resourcegroup.png +0 -0
  14. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/task.png +0 -0
  15. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/taskgroup.png +0 -0
  16. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-down.png +0 -0
  17. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-flat.png +0 -0
  18. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-up.png +0 -0
  19. data/benchmarks/profile.clt +36082 -0
  20. data/benchmarks/profile.html +58182 -0
  21. data/benchmarks/runbench.rb +6 -0
  22. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/scripts/wz_tooltip.js +0 -0
  23. data/doc/AppConfig.html +85 -37
  24. data/doc/Arguments.html +11 -1
  25. data/doc/CHANGELOG.html +131 -2
  26. data/doc/COPYING.html +11 -1
  27. data/doc/Object.html +12 -3
  28. data/doc/README.html +11 -1
  29. data/doc/RuntimeConfig.html +11 -1
  30. data/doc/String.html +11 -1
  31. data/doc/StringIO.html +11 -1
  32. data/doc/TaskJuggler.html +250 -219
  33. data/doc/TaskJuggler/Account.html +11 -1
  34. data/doc/TaskJuggler/AccountAttribute.html +11 -1
  35. data/doc/TaskJuggler/AccountScenario.html +11 -1
  36. data/doc/TaskJuggler/Allocation.html +11 -1
  37. data/doc/TaskJuggler/AllocationAttribute.html +11 -1
  38. data/doc/TaskJuggler/AttributeBase.html +11 -1
  39. data/doc/TaskJuggler/AttributeDefinition.html +11 -1
  40. data/doc/TaskJuggler/BatchProcessor.html +11 -1
  41. data/doc/TaskJuggler/Booking.html +11 -1
  42. data/doc/TaskJuggler/BookingListAttribute.html +11 -1
  43. data/doc/TaskJuggler/BooleanAttribute.html +11 -1
  44. data/doc/TaskJuggler/CSVFile.html +12 -2
  45. data/doc/TaskJuggler/CellSettingPattern.html +11 -1
  46. data/doc/TaskJuggler/CellSettingPatternList.html +11 -1
  47. data/doc/TaskJuggler/Charge.html +11 -1
  48. data/doc/TaskJuggler/ChargeListAttribute.html +11 -1
  49. data/doc/TaskJuggler/ChargeSet.html +11 -1
  50. data/doc/TaskJuggler/ChargeSetListAttribute.html +11 -1
  51. data/doc/TaskJuggler/CollisionDetector.html +1063 -0
  52. data/doc/TaskJuggler/ColumnListAttribute.html +11 -1
  53. data/doc/TaskJuggler/ColumnTable.html +11 -1
  54. data/doc/TaskJuggler/Daemon.html +11 -1
  55. data/doc/TaskJuggler/{OnShiftCache.html → DataCache.html} +127 -139
  56. data/doc/TaskJuggler/DataCacheEntry.html +711 -0
  57. data/doc/TaskJuggler/DateAttribute.html +11 -1
  58. data/doc/TaskJuggler/DefinitionListAttribute.html +11 -1
  59. data/doc/TaskJuggler/DependencyListAttribute.html +11 -1
  60. data/doc/TaskJuggler/DurationAttribute.html +16 -5
  61. data/doc/TaskJuggler/FileList.html +11 -1
  62. data/doc/TaskJuggler/FileRecord.html +11 -1
  63. data/doc/TaskJuggler/FixnumAttribute.html +19 -9
  64. data/doc/TaskJuggler/FlagListAttribute.html +29 -19
  65. data/doc/TaskJuggler/FloatAttribute.html +23 -13
  66. data/doc/TaskJuggler/FormatListAttribute.html +19 -9
  67. data/doc/TaskJuggler/GanttChart.html +94 -133
  68. data/doc/TaskJuggler/GanttContainer.html +11 -1
  69. data/doc/TaskJuggler/GanttHeader.html +11 -1
  70. data/doc/TaskJuggler/GanttHeaderScaleItem.html +11 -1
  71. data/doc/TaskJuggler/GanttLine.html +11 -1
  72. data/doc/TaskJuggler/GanttLoadStack.html +11 -1
  73. data/doc/TaskJuggler/GanttMilestone.html +11 -1
  74. data/doc/TaskJuggler/GanttRouter.html +247 -596
  75. data/doc/TaskJuggler/GanttTaskBar.html +11 -1
  76. data/doc/TaskJuggler/HTMLDocument.html +11 -1
  77. data/doc/TaskJuggler/HTMLGraphics.html +11 -1
  78. data/doc/TaskJuggler/Interval.html +11 -1
  79. data/doc/TaskJuggler/IntervalListAttribute.html +33 -23
  80. data/doc/TaskJuggler/JobInfo.html +11 -1
  81. data/doc/TaskJuggler/Journal.html +11 -1
  82. data/doc/TaskJuggler/JournalEntry.html +11 -1
  83. data/doc/TaskJuggler/JournalEntryList.html +11 -1
  84. data/doc/TaskJuggler/KeywordArray.html +11 -1
  85. data/doc/TaskJuggler/KeywordDocumentation.html +16 -6
  86. data/doc/TaskJuggler/Limits.html +11 -1
  87. data/doc/TaskJuggler/Limits/Limit.html +11 -1
  88. data/doc/TaskJuggler/LimitsAttribute.html +24 -14
  89. data/doc/TaskJuggler/ListAttributeBase.html +11 -1
  90. data/doc/TaskJuggler/Log.html +11 -1
  91. data/doc/TaskJuggler/LogFile.html +11 -1
  92. data/doc/TaskJuggler/LogicalAttribute.html +11 -1
  93. data/doc/TaskJuggler/LogicalExpression.html +11 -1
  94. data/doc/TaskJuggler/LogicalExpressionAttribute.html +19 -9
  95. data/doc/TaskJuggler/LogicalFlag.html +11 -1
  96. data/doc/TaskJuggler/LogicalFunction.html +11 -1
  97. data/doc/TaskJuggler/LogicalOperation.html +11 -1
  98. data/doc/TaskJuggler/Macro.html +11 -1
  99. data/doc/TaskJuggler/MacroTable.html +11 -1
  100. data/doc/TaskJuggler/ManagerResponsibilities.html +11 -1
  101. data/doc/TaskJuggler/ManagerStatusRecord.html +11 -1
  102. data/doc/TaskJuggler/Message.html +11 -1
  103. data/doc/TaskJuggler/MessageHandler.html +11 -1
  104. data/doc/TaskJuggler/Navigator.html +12 -2
  105. data/doc/TaskJuggler/NavigatorElement.html +11 -1
  106. data/doc/TaskJuggler/NikuProject.html +11 -1
  107. data/doc/TaskJuggler/NikuReport.html +11 -1
  108. data/doc/TaskJuggler/NikuResource.html +11 -1
  109. data/doc/TaskJuggler/NodeListAttribute.html +17 -7
  110. data/doc/TaskJuggler/PlaceHolderCell.html +722 -0
  111. data/doc/TaskJuggler/ProcessIntercom.html +11 -1
  112. data/doc/TaskJuggler/ProcessIntercomIface.html +11 -1
  113. data/doc/TaskJuggler/Project.html +587 -500
  114. data/doc/TaskJuggler/ProjectBroker.html +11 -1
  115. data/doc/TaskJuggler/ProjectBrokerIface.html +11 -1
  116. data/doc/TaskJuggler/ProjectFileParser.html +205 -192
  117. data/doc/TaskJuggler/ProjectFileScanner.html +230 -207
  118. data/doc/TaskJuggler/ProjectRecord.html +11 -1
  119. data/doc/TaskJuggler/ProjectServer.html +11 -1
  120. data/doc/TaskJuggler/ProjectServerIface.html +11 -1
  121. data/doc/TaskJuggler/PropertyAttribute.html +19 -9
  122. data/doc/TaskJuggler/PropertyList.html +95 -83
  123. data/doc/TaskJuggler/PropertySet.html +11 -1
  124. data/doc/TaskJuggler/PropertyTreeNode.html +11 -1
  125. data/doc/TaskJuggler/Query.html +234 -232
  126. data/doc/TaskJuggler/RTFHandlers.html +11 -1
  127. data/doc/TaskJuggler/RTFNavigator.html +11 -1
  128. data/doc/TaskJuggler/RTFQuery.html +11 -1
  129. data/doc/TaskJuggler/RTFReport.html +11 -1
  130. data/doc/TaskJuggler/RTFReportLink.html +11 -1
  131. data/doc/TaskJuggler/RTFWithQuerySupport.html +11 -1
  132. data/doc/TaskJuggler/RealFormat.html +12 -2
  133. data/doc/TaskJuggler/RealFormatAttribute.html +15 -5
  134. data/doc/TaskJuggler/ReferenceAttribute.html +38 -28
  135. data/doc/TaskJuggler/Report.html +96 -113
  136. data/doc/TaskJuggler/ReportBase.html +161 -152
  137. data/doc/TaskJuggler/ReportContext.html +11 -1
  138. data/doc/TaskJuggler/ReportServer.html +59 -48
  139. data/doc/TaskJuggler/ReportServerIface.html +51 -41
  140. data/doc/TaskJuggler/ReportServerRecord.html +11 -1
  141. data/doc/TaskJuggler/ReportServlet.html +11 -1
  142. data/doc/TaskJuggler/ReportTable.html +46 -25
  143. data/doc/TaskJuggler/ReportTableCell.html +296 -275
  144. data/doc/TaskJuggler/ReportTableColumn.html +14 -4
  145. data/doc/TaskJuggler/ReportTableLegend.html +11 -1
  146. data/doc/TaskJuggler/ReportTableLine.html +19 -7
  147. data/doc/TaskJuggler/Resource.html +12 -2
  148. data/doc/TaskJuggler/ResourceListAttribute.html +40 -30
  149. data/doc/TaskJuggler/ResourceListRE.html +11 -1
  150. data/doc/TaskJuggler/ResourceScenario.html +708 -565
  151. data/doc/TaskJuggler/RichText.html +54 -36
  152. data/doc/TaskJuggler/RichTextAttribute.html +31 -21
  153. data/doc/TaskJuggler/RichTextDocument.html +11 -1
  154. data/doc/TaskJuggler/RichTextElement.html +11 -1
  155. data/doc/TaskJuggler/RichTextFunctionExample.html +11 -1
  156. data/doc/TaskJuggler/RichTextFunctionHandler.html +11 -1
  157. data/doc/TaskJuggler/RichTextImage.html +11 -1
  158. data/doc/TaskJuggler/RichTextIntermediate.html +81 -71
  159. data/doc/TaskJuggler/RichTextParser.html +88 -33
  160. data/doc/TaskJuggler/RichTextScanner.html +45 -35
  161. data/doc/TaskJuggler/RichTextSnip.html +11 -1
  162. data/doc/TaskJuggler/RichTextSyntaxRules.html +436 -389
  163. data/doc/TaskJuggler/Scenario.html +11 -1
  164. data/doc/TaskJuggler/ScenarioData.html +11 -1
  165. data/doc/TaskJuggler/ScenarioListAttribute.html +23 -13
  166. data/doc/TaskJuggler/Scoreboard.html +92 -73
  167. data/doc/TaskJuggler/SheetHandlerBase.html +11 -1
  168. data/doc/TaskJuggler/SheetReceiver.html +11 -1
  169. data/doc/TaskJuggler/SheetSender.html +11 -1
  170. data/doc/TaskJuggler/Shift.html +11 -1
  171. data/doc/TaskJuggler/ShiftAssignment.html +11 -1
  172. data/doc/TaskJuggler/ShiftAssignments.html +11 -1
  173. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +24 -14
  174. data/doc/TaskJuggler/ShiftScenario.html +11 -1
  175. data/doc/TaskJuggler/SimpleQueryExpander.html +11 -1
  176. data/doc/TaskJuggler/SortListAttribute.html +21 -11
  177. data/doc/TaskJuggler/SourceFileInfo.html +11 -1
  178. data/doc/TaskJuggler/StatusSheetReceiver.html +11 -1
  179. data/doc/TaskJuggler/StatusSheetReport.html +11 -1
  180. data/doc/TaskJuggler/StatusSheetSender.html +112 -11
  181. data/doc/TaskJuggler/StringAttribute.html +23 -13
  182. data/doc/TaskJuggler/SymbolAttribute.html +19 -9
  183. data/doc/TaskJuggler/SyntaxReference.html +80 -71
  184. data/doc/TaskJuggler/TOCEntry.html +11 -1
  185. data/doc/TaskJuggler/TSResourceRecord.html +11 -1
  186. data/doc/TaskJuggler/TSTaskRecord.html +11 -1
  187. data/doc/TaskJuggler/TableColumnDefinition.html +11 -1
  188. data/doc/TaskJuggler/TableOfContents.html +11 -1
  189. data/doc/TaskJuggler/TableReport.html +422 -411
  190. data/doc/TaskJuggler/Task.html +11 -1
  191. data/doc/TaskJuggler/TaskDependency.html +11 -1
  192. data/doc/TaskJuggler/TaskListAttribute.html +33 -23
  193. data/doc/TaskJuggler/TaskListRE.html +11 -1
  194. data/doc/TaskJuggler/TaskScenario.html +2007 -1919
  195. data/doc/TaskJuggler/TextFormatter.html +11 -1
  196. data/doc/TaskJuggler/TextParser.html +421 -612
  197. data/doc/TaskJuggler/TextParser/Pattern.html +410 -211
  198. data/doc/TaskJuggler/TextParser/Rule.html +224 -152
  199. data/doc/TaskJuggler/TextParser/StackElement.html +190 -28
  200. data/doc/TaskJuggler/TextParser/State.html +989 -0
  201. data/doc/TaskJuggler/TextParser/StateTransition.html +782 -0
  202. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +25 -14
  203. data/doc/TaskJuggler/TextParser/TokenDoc.html +11 -1
  204. data/doc/TaskJuggler/TextReport.html +11 -1
  205. data/doc/TaskJuggler/TextScanner.html +285 -273
  206. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +17 -7
  207. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +24 -14
  208. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +11 -1
  209. data/doc/TaskJuggler/TextScanner/StreamHandle.html +64 -52
  210. data/doc/TaskJuggler/TimeSheet.html +11 -1
  211. data/doc/TaskJuggler/TimeSheetReceiver.html +11 -1
  212. data/doc/TaskJuggler/TimeSheetRecord.html +11 -1
  213. data/doc/TaskJuggler/TimeSheetReport.html +11 -1
  214. data/doc/TaskJuggler/TimeSheetSender.html +11 -1
  215. data/doc/TaskJuggler/TimeSheetSummary.html +11 -1
  216. data/doc/TaskJuggler/TimeSheets.html +11 -1
  217. data/doc/TaskJuggler/Tj3AppBase.html +11 -1
  218. data/doc/TaskJuggler/Tj3Client.html +11 -1
  219. data/doc/TaskJuggler/Tj3Daemon.html +11 -1
  220. data/doc/TaskJuggler/Tj3SheetAppBase.html +11 -1
  221. data/doc/TaskJuggler/Tj3SsReceiver.html +11 -1
  222. data/doc/TaskJuggler/Tj3SsSender.html +11 -1
  223. data/doc/TaskJuggler/Tj3TsReceiver.html +11 -1
  224. data/doc/TaskJuggler/Tj3TsSender.html +11 -1
  225. data/doc/TaskJuggler/Tj3TsSummary.html +11 -1
  226. data/doc/TaskJuggler/TjException.html +11 -1
  227. data/doc/TaskJuggler/TjTime.html +474 -324
  228. data/doc/TaskJuggler/TjpExample.html +11 -1
  229. data/doc/TaskJuggler/TjpExportRE.html +11 -1
  230. data/doc/TaskJuggler/TjpSyntaxRules.html +3731 -3662
  231. data/doc/TaskJuggler/URLParameter.html +11 -1
  232. data/doc/TaskJuggler/UserManual.html +11 -1
  233. data/doc/TaskJuggler/VimSyntax.html +11 -1
  234. data/doc/TaskJuggler/WebServer.html +11 -1
  235. data/doc/TaskJuggler/WorkingHours.html +295 -221
  236. data/doc/TaskJuggler/WorkingHoursAttribute.html +11 -1
  237. data/doc/TaskJuggler/XMLBlob.html +11 -1
  238. data/doc/TaskJuggler/XMLComment.html +11 -1
  239. data/doc/TaskJuggler/XMLDocument.html +11 -1
  240. data/doc/TaskJuggler/XMLElement.html +11 -1
  241. data/doc/TaskJuggler/XMLNamedText.html +11 -1
  242. data/doc/TaskJuggler/XMLText.html +11 -1
  243. data/doc/index.html +694 -624
  244. data/doc/lib/AppConfig_rb.html +1 -1
  245. data/doc/lib/Attributes_rb.html +1 -1
  246. data/doc/lib/Booking_rb.html +1 -1
  247. data/doc/lib/DataCache_rb.html +69 -0
  248. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  249. data/doc/lib/ProjectFileParser_rb.html +1 -1
  250. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  251. data/doc/lib/Project_rb.html +1 -1
  252. data/doc/lib/PropertyList_rb.html +1 -1
  253. data/doc/lib/Query_rb.html +1 -1
  254. data/doc/lib/RealFormat_rb.html +1 -1
  255. data/doc/lib/ResourceScenario_rb.html +1 -1
  256. data/doc/lib/Resource_rb.html +1 -1
  257. data/doc/lib/RichTextParser_rb.html +1 -1
  258. data/doc/lib/RichTextScanner_rb.html +1 -1
  259. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  260. data/doc/lib/RichText_rb.html +1 -1
  261. data/doc/lib/Scoreboard_rb.html +1 -1
  262. data/doc/lib/StatusSheetSender_rb.html +1 -1
  263. data/doc/lib/SyntaxReference_rb.html +1 -1
  264. data/doc/lib/TaskJuggler_rb.html +1 -1
  265. data/doc/lib/TaskScenario_rb.html +3 -1
  266. data/doc/lib/TextParser/Pattern_rb.html +3 -1
  267. data/doc/lib/TextParser/Rule_rb.html +3 -1
  268. data/doc/lib/TextParser/StackElement_rb.html +3 -1
  269. data/doc/lib/TextParser/State_rb.html +65 -0
  270. data/doc/lib/TextParser_rb.html +1 -1
  271. data/doc/lib/TextScanner_rb.html +1 -1
  272. data/doc/lib/Tj3Config_rb.html +1 -1
  273. data/doc/lib/TjTime_rb.html +1 -1
  274. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  275. data/doc/lib/WorkingHours_rb.html +3 -1
  276. data/doc/lib/daemon/ReportServer_rb.html +1 -1
  277. data/doc/lib/reports/CSVFile_rb.html +1 -1
  278. data/doc/lib/reports/CollisionDetector_rb.html +67 -0
  279. data/doc/lib/reports/GanttChart_rb.html +1 -1
  280. data/doc/lib/reports/GanttRouter_rb.html +3 -1
  281. data/doc/lib/reports/Navigator_rb.html +1 -1
  282. data/doc/lib/reports/ReportBase_rb.html +1 -1
  283. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  284. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  285. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  286. data/doc/lib/reports/ReportTable_rb.html +1 -1
  287. data/doc/lib/reports/Report_rb.html +1 -1
  288. data/doc/lib/reports/TableReport_rb.html +1 -1
  289. data/doc/lib/taskjuggler3_rb.html +1 -1
  290. data/examples/tutorial.tjp +1 -2
  291. data/lib/AppConfig.rb +10 -4
  292. data/lib/Attributes.rb +4 -4
  293. data/lib/DataCache.rb +124 -0
  294. data/lib/KeywordDocumentation.rb +5 -5
  295. data/lib/Project.rb +54 -10
  296. data/lib/ProjectFileParser.rb +10 -9
  297. data/lib/ProjectFileScanner.rb +38 -25
  298. data/lib/PropertyList.rb +6 -4
  299. data/lib/Query.rb +0 -8
  300. data/lib/RealFormat.rb +1 -1
  301. data/lib/Resource.rb +1 -1
  302. data/lib/ResourceScenario.rb +96 -31
  303. data/lib/RichText.rb +17 -5
  304. data/lib/RichTextParser.rb +22 -9
  305. data/lib/RichTextScanner.rb +34 -34
  306. data/lib/RichTextSyntaxRules.rb +41 -36
  307. data/lib/Scoreboard.rb +16 -7
  308. data/lib/StatusSheetSender.rb +63 -0
  309. data/lib/SyntaxReference.rb +9 -10
  310. data/lib/TaskJuggler.rb +28 -4
  311. data/lib/TaskScenario.rb +66 -19
  312. data/lib/TextParser.rb +219 -384
  313. data/lib/TextParser/Pattern.rb +168 -49
  314. data/lib/TextParser/Rule.rb +33 -17
  315. data/lib/TextParser/StackElement.rb +42 -2
  316. data/lib/TextParser/State.rb +175 -0
  317. data/lib/TextScanner.rb +19 -15
  318. data/lib/Tj3Config.rb +1 -1
  319. data/lib/TjTime.rb +111 -3
  320. data/lib/TjpSyntaxRules.rb +122 -66
  321. data/lib/WorkingHours.rb +91 -186
  322. data/lib/daemon/ReportServer.rb +3 -2
  323. data/lib/reports/CSVFile.rb +1 -1
  324. data/lib/reports/CollisionDetector.rb +177 -0
  325. data/lib/reports/GanttChart.rb +25 -41
  326. data/lib/reports/GanttRouter.rb +104 -233
  327. data/lib/reports/Navigator.rb +1 -1
  328. data/lib/reports/Report.rb +9 -33
  329. data/lib/reports/ReportBase.rb +0 -1
  330. data/lib/reports/ReportTable.rb +19 -8
  331. data/lib/reports/ReportTableCell.rb +61 -25
  332. data/lib/reports/ReportTableColumn.rb +2 -2
  333. data/lib/reports/ReportTableLine.rb +4 -2
  334. data/lib/reports/TableReport.rb +1 -0
  335. data/lib/taskjuggler3.rb +0 -1
  336. data/manual/Installation +7 -3
  337. data/manual/Intro +12 -10
  338. data/manual/The_TaskJuggler_Syntax +4 -4
  339. data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -14
  340. data/test/TestSuite/CSV-Reports/genrefs +1 -1
  341. data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -4
  342. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -22
  343. data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -14
  344. data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -14
  345. data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -14
  346. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -14
  347. data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -14
  348. data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +32 -24
  349. data/test/TestSuite/CSV-Reports/weekly-Reference.csv +13 -0
  350. data/test/TestSuite/CSV-Reports/weekly.tjp +9 -0
  351. data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -2
  352. data/test/TestSuite/HTML-Reports/depArrows.html +839 -830
  353. data/test/TestSuite/HTML-Reports/depArrows.tjp +12 -12
  354. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  355. data/test/TestSuite/ReportGenerator/Errors/no_report_defined.tjp +7 -0
  356. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +1 -1
  357. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/missing-reports +2 -0
  358. data/test/TestSuite/StatusSheets/run +2 -0
  359. data/test/TestSuite/Syntax/Correct/Booking.tjp +13 -5
  360. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +21 -0
  361. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +21 -0
  362. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +1 -1
  363. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  364. data/test/TestSuite/Syntax/Errors/include_before_project.tjp +2 -0
  365. data/test/TestSuite/Syntax/Errors/no_reduce.tjp +6 -0
  366. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  367. data/test/TestSuite/TimeSheets/run +1 -1
  368. data/test/test_CSV-Reports.rb +2 -4
  369. data/test/test_CollisionDetector.rb +85 -0
  370. data/test/test_Project.rb +2 -2
  371. data/test/test_ProjectFileScanner.rb +73 -31
  372. data/test/test_Query.rb +2 -2
  373. data/test/test_ReportGenerator.rb +1 -1
  374. data/test/test_RichText.rb +4 -4
  375. data/test/test_WorkingHours.rb +150 -11
  376. metadata +75 -67
  377. data/test/TestSuite/ReportGenerator/Errors/css/tjreport.css +0 -407
  378. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +0 -26
  379. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -3210
  380. data/test/TestSuite/Scheduler/Correct/Container.html +0 -349
  381. data/test/TestSuite/Scheduler/Correct/Limits.html +0 -4964
  382. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -1719
  383. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  384. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -66
  385. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  386. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  387. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  388. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  389. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  390. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  391. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  392. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  393. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  394. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  395. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  396. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  397. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +0 -66
  398. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +0 -407
  399. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  400. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  401. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  402. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  403. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  404. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  405. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  406. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  407. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  408. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  409. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  410. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +0 -1301
  411. data/test/TestSuite/StatusSheets/resrep.tji +0 -7
  412. data/test/TestSuite/StatusSheets/tj3d.log +0 -312
  413. data/test/TestSuite/Syntax/Correct/Managers.html +0 -263
  414. data/test/TestSuite/TimeSheets/acceptable_intervals +0 -1
  415. data/test/TestSuite/TimeSheets/statussheets.log +0 -1
@@ -149,12 +149,18 @@
149
149
 
150
150
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
151
151
 
152
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
153
+
152
154
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
153
155
 
154
156
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
155
157
 
156
158
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
157
159
 
160
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
161
+
162
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
163
+
158
164
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
159
165
 
160
166
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -261,7 +267,7 @@
261
267
 
262
268
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
263
269
 
264
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
270
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
265
271
 
266
272
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
267
273
 
@@ -441,6 +447,10 @@
441
447
 
442
448
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
443
449
 
450
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
451
+
452
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
453
+
444
454
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
445
455
 
446
456
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -153,12 +153,18 @@
153
153
 
154
154
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
155
155
 
156
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
157
+
156
158
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
157
159
 
158
160
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
159
161
 
160
162
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
161
163
 
164
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
165
+
166
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
167
+
162
168
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
163
169
 
164
170
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -265,7 +271,7 @@
265
271
 
266
272
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
267
273
 
268
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
274
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
269
275
 
270
276
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
271
277
 
@@ -445,6 +451,10 @@
445
451
 
446
452
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
447
453
 
454
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
455
+
456
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
457
+
448
458
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
449
459
 
450
460
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -153,12 +153,18 @@
153
153
 
154
154
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
155
155
 
156
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
157
+
156
158
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
157
159
 
158
160
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
159
161
 
160
162
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
161
163
 
164
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
165
+
166
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
167
+
162
168
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
163
169
 
164
170
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -265,7 +271,7 @@
265
271
 
266
272
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
267
273
 
268
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
274
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
269
275
 
270
276
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
271
277
 
@@ -445,6 +451,10 @@
445
451
 
446
452
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
447
453
 
454
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
455
+
456
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
457
+
448
458
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
449
459
 
450
460
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -153,12 +153,18 @@
153
153
 
154
154
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
155
155
 
156
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
157
+
156
158
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
157
159
 
158
160
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
159
161
 
160
162
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
161
163
 
164
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
165
+
166
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
167
+
162
168
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
163
169
 
164
170
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -265,7 +271,7 @@
265
271
 
266
272
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
267
273
 
268
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
274
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
269
275
 
270
276
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
271
277
 
@@ -445,6 +451,10 @@
445
451
 
446
452
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
447
453
 
454
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
455
+
456
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
457
+
448
458
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
449
459
 
450
460
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -159,12 +159,18 @@
159
159
 
160
160
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
161
161
 
162
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
163
+
162
164
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
163
165
 
164
166
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
165
167
 
166
168
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
167
169
 
170
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
171
+
172
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
173
+
168
174
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
169
175
 
170
176
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -271,7 +277,7 @@
271
277
 
272
278
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
273
279
 
274
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
280
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
275
281
 
276
282
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
277
283
 
@@ -451,6 +457,10 @@
451
457
 
452
458
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
453
459
 
460
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
461
+
462
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
463
+
454
464
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
455
465
 
456
466
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -155,12 +155,18 @@
155
155
 
156
156
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
157
157
 
158
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
159
+
158
160
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
159
161
 
160
162
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
161
163
 
162
164
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
163
165
 
166
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
167
+
168
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
169
+
164
170
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
165
171
 
166
172
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -267,7 +273,7 @@
267
273
 
268
274
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
269
275
 
270
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
276
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
271
277
 
272
278
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
273
279
 
@@ -447,6 +453,10 @@
447
453
 
448
454
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
449
455
 
456
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
457
+
458
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
459
+
450
460
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
451
461
 
452
462
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -0,0 +1,1063 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
7
+
8
+ <title>Class: TaskJuggler::CollisionDetector</title>
9
+
10
+ <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="../js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="../js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="../js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="class">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="../index.html">Home</a>
29
+ <a href="../index.html#classes">Classes</a>
30
+ <a href="../index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="../lib/reports/CollisionDetector_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/reports/CollisionDetector.rb">lib/reports/CollisionDetector.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+ <div id="parent-class-section" class="section">
56
+ <h3 class="section-header">Parent</h3>
57
+
58
+ <p class="link"><a href="../Object.html">Object</a></p>
59
+
60
+ </div>
61
+
62
+
63
+ <!-- Namespace Contents -->
64
+
65
+
66
+ <!-- Method Quickref -->
67
+
68
+ <div id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+ <ul class="link-list">
71
+
72
+ <li><a href="#method-c-new">::new</a></li>
73
+
74
+ <li><a href="#method-i-addBlockedZone">#addBlockedZone</a></li>
75
+
76
+ <li><a href="#method-i-addSegment">#addSegment</a></li>
77
+
78
+ <li><a href="#method-i-clip">#clip</a></li>
79
+
80
+ <li><a href="#method-i-collision%3F">#collision?</a></li>
81
+
82
+ <li><a href="#method-i-merge">#merge</a></li>
83
+
84
+ <li><a href="#method-i-mergeable%3F">#mergeable?</a></li>
85
+
86
+ <li><a href="#method-i-overlaps%3F">#overlaps?</a></li>
87
+
88
+ <li><a href="#method-i-to_html">#to_html</a></li>
89
+
90
+ </ul>
91
+ </div>
92
+
93
+
94
+ <!-- Included Modules -->
95
+
96
+ <div id="includes-section" class="section">
97
+ <h3 class="section-header">Included Modules</h3>
98
+ <ul class="link-list">
99
+
100
+
101
+ <li><span class="include">HTMLGraphics</span></li>
102
+
103
+
104
+ </ul>
105
+ </div>
106
+
107
+ </div>
108
+
109
+ <div id="project-metadata">
110
+
111
+
112
+ <div id="fileindex-section" class="section project-section">
113
+ <h3 class="section-header">Files</h3>
114
+ <ul>
115
+
116
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
117
+
118
+ <li class="file"><a href="../COPYING.html">COPYING</a></li>
119
+
120
+ <li class="file"><a href="../README.html">README</a></li>
121
+
122
+ </ul>
123
+ </div>
124
+
125
+
126
+ <div id="classindex-section" class="section project-section">
127
+ <h3 class="section-header">Class Index
128
+ <span class="search-toggle"><img src="../images/find.png"
129
+ height="16" width="16" alt="[+]"
130
+ title="show/hide quicksearch" /></span></h3>
131
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
132
+ <fieldset>
133
+ <legend>Quicksearch</legend>
134
+ <input type="text" name="quicksearch" value=""
135
+ class="quicksearch-field" />
136
+ </fieldset>
137
+ </form>
138
+
139
+ <ul class="link-list">
140
+
141
+ <li><a href="../TaskJuggler.html">TaskJuggler</a></li>
142
+
143
+ <li><a href="../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
144
+
145
+ <li><a href="../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
146
+
147
+ <li><a href="../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
148
+
149
+ <li><a href="../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
150
+
151
+ <li><a href="../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
152
+
153
+ <li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
154
+
155
+ <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
156
+
157
+ <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
158
+
159
+ <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
160
+
161
+ <li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
162
+
163
+ <li><a href="../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
164
+
165
+ <li><a href="../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
166
+
167
+ <li><a href="../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
168
+
169
+ <li><a href="../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
170
+
171
+ <li><a href="../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
172
+
173
+ <li><a href="../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
174
+
175
+ <li><a href="../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
176
+
177
+ <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
178
+
179
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
180
+
181
+ <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
182
+
183
+ <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
184
+
185
+ <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
186
+
187
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
188
+
189
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
190
+
191
+ <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
192
+
193
+ <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
194
+
195
+ <li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
196
+
197
+ <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
198
+
199
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
200
+
201
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
202
+
203
+ <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
204
+
205
+ <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
206
+
207
+ <li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
208
+
209
+ <li><a href="../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
210
+
211
+ <li><a href="../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
212
+
213
+ <li><a href="../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
214
+
215
+ <li><a href="../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
216
+
217
+ <li><a href="../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
218
+
219
+ <li><a href="../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
220
+
221
+ <li><a href="../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
222
+
223
+ <li><a href="../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
224
+
225
+ <li><a href="../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
226
+
227
+ <li><a href="../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
228
+
229
+ <li><a href="../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
230
+
231
+ <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
232
+
233
+ <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
234
+
235
+ <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
236
+
237
+ <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
238
+
239
+ <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
240
+
241
+ <li><a href="../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
242
+
243
+ <li><a href="../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
244
+
245
+ <li><a href="../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
246
+
247
+ <li><a href="../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
248
+
249
+ <li><a href="../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
250
+
251
+ <li><a href="../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
252
+
253
+ <li><a href="../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
254
+
255
+ <li><a href="../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
256
+
257
+ <li><a href="../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
258
+
259
+ <li><a href="../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
260
+
261
+ <li><a href="../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
262
+
263
+ <li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
264
+
265
+ <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
266
+
267
+ <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
268
+
269
+ <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
270
+
271
+ <li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
272
+
273
+ <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
274
+
275
+ <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
276
+
277
+ <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
278
+
279
+ <li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
280
+
281
+ <li><a href="../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
282
+
283
+ <li><a href="../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
284
+
285
+ <li><a href="../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
286
+
287
+ <li><a href="../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
288
+
289
+ <li><a href="../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
290
+
291
+ <li><a href="../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
292
+
293
+ <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
294
+
295
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
296
+
297
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
298
+
299
+ <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
300
+
301
+ <li><a href="../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
302
+
303
+ <li><a href="../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
304
+
305
+ <li><a href="../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
306
+
307
+ <li><a href="../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
308
+
309
+ <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
310
+
311
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
312
+
313
+ <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
314
+
315
+ <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
316
+
317
+ <li><a href="../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
318
+
319
+ <li><a href="../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
320
+
321
+ <li><a href="../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
322
+
323
+ <li><a href="../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
324
+
325
+ <li><a href="../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
326
+
327
+ <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
328
+
329
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
330
+
331
+ <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
332
+
333
+ <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
334
+
335
+ <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
336
+
337
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
338
+
339
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
340
+
341
+ <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
342
+
343
+ <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
344
+
345
+ <li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
346
+
347
+ <li><a href="../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
348
+
349
+ <li><a href="../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
350
+
351
+ <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
352
+
353
+ <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
354
+
355
+ <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
356
+
357
+ <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
358
+
359
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
360
+
361
+ <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
362
+
363
+ <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
364
+
365
+ <li><a href="../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
366
+
367
+ <li><a href="../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
368
+
369
+ <li><a href="../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
370
+
371
+ <li><a href="../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
372
+
373
+ <li><a href="../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
374
+
375
+ <li><a href="../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
376
+
377
+ <li><a href="../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
378
+
379
+ <li><a href="../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
380
+
381
+ <li><a href="../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
382
+
383
+ <li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
384
+
385
+ <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
386
+
387
+ <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
388
+
389
+ <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
390
+
391
+ <li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
392
+
393
+ <li><a href="../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
394
+
395
+ <li><a href="../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
396
+
397
+ <li><a href="../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
398
+
399
+ <li><a href="../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
400
+
401
+ <li><a href="../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
402
+
403
+ <li><a href="../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
404
+
405
+ <li><a href="../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
406
+
407
+ <li><a href="../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
408
+
409
+ <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
410
+
411
+ <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
412
+
413
+ <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
414
+
415
+ <li><a href="../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
416
+
417
+ <li><a href="../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
418
+
419
+ <li><a href="../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
420
+
421
+ <li><a href="../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
422
+
423
+ <li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
424
+
425
+ <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
426
+
427
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
428
+
429
+ <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
430
+
431
+ <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
432
+
433
+ <li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
434
+
435
+ <li><a href="../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
436
+
437
+ <li><a href="../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
438
+
439
+ <li><a href="../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
440
+
441
+ <li><a href="../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
442
+
443
+ <li><a href="../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
444
+
445
+ <li><a href="../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
446
+
447
+ <li><a href="../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
448
+
449
+ <li><a href="../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
450
+
451
+ <li><a href="../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
452
+
453
+ <li><a href="../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
454
+
455
+ <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
456
+
457
+ <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
458
+
459
+ <li><a href="../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
460
+
461
+ <li><a href="../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
462
+
463
+ <li><a href="../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
464
+
465
+ <li><a href="../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
466
+
467
+ <li><a href="../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
468
+
469
+ <li><a href="../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
470
+
471
+ <li><a href="../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
472
+
473
+ <li><a href="../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
474
+
475
+ <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
476
+
477
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
478
+
479
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
480
+
481
+ <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
482
+
483
+ <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
484
+
485
+ <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
486
+
487
+ <li><a href="../TaskJuggler/TextScanner.html">TaskJuggler::TextScanner</a></li>
488
+
489
+ <li><a href="../TaskJuggler/TextScanner/BufferStreamHandle.html">TaskJuggler::TextScanner::BufferStreamHandle</a></li>
490
+
491
+ <li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
492
+
493
+ <li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
494
+
495
+ <li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
496
+
497
+ <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
498
+
499
+ <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
500
+
501
+ <li><a href="../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
502
+
503
+ <li><a href="../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
504
+
505
+ <li><a href="../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
506
+
507
+ <li><a href="../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
508
+
509
+ <li><a href="../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
510
+
511
+ <li><a href="../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
512
+
513
+ <li><a href="../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
514
+
515
+ <li><a href="../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
516
+
517
+ <li><a href="../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
518
+
519
+ <li><a href="../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
520
+
521
+ <li><a href="../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
522
+
523
+ <li><a href="../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
524
+
525
+ <li><a href="../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
526
+
527
+ <li><a href="../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
528
+
529
+ <li><a href="../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
530
+
531
+ <li><a href="../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
532
+
533
+ <li><a href="../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
534
+
535
+ <li><a href="../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
536
+
537
+ <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
538
+
539
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
540
+
541
+ <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
542
+
543
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
544
+
545
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
546
+
547
+ <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
548
+
549
+ <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
550
+
551
+ <li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
552
+
553
+ <li><a href="../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
554
+
555
+ <li><a href="../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
556
+
557
+ <li><a href="../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
558
+
559
+ <li><a href="../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
560
+
561
+ <li><a href="../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
562
+
563
+ <li><a href="../AppConfig.html">AppConfig</a></li>
564
+
565
+ <li><a href="../Arguments.html">Arguments</a></li>
566
+
567
+ <li><a href="../Object.html">Object</a></li>
568
+
569
+ <li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
570
+
571
+ <li><a href="../String.html">String</a></li>
572
+
573
+ <li><a href="../StringIO.html">StringIO</a></li>
574
+
575
+ </ul>
576
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
577
+ </div>
578
+
579
+
580
+ </div>
581
+ </div>
582
+
583
+ <div id="documentation">
584
+ <h1 class="class">TaskJuggler::CollisionDetector</h1>
585
+
586
+ <div id="description">
587
+
588
+ </div>
589
+
590
+ <!-- Constants -->
591
+
592
+
593
+ <!-- Attributes -->
594
+
595
+
596
+ <!-- Methods -->
597
+
598
+ <div id="public-class-method-details" class="method-section section">
599
+ <h3 class="section-header">Public Class Methods</h3>
600
+
601
+
602
+ <div id="new-method" class="method-detail ">
603
+ <a name="method-c-new"></a>
604
+
605
+ <div class="method-heading">
606
+
607
+ <span class="method-name">new</span><span
608
+ class="method-args">(width, height)</span>
609
+ <span class="method-click-advice">click to toggle source</span>
610
+
611
+ </div>
612
+
613
+ <div class="method-description">
614
+
615
+
616
+
617
+
618
+
619
+ <div class="method-source-code"
620
+ id="new-source">
621
+ <pre>
622
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 21</span>
623
+ 21: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">width</span>, <span class="ruby-identifier">height</span>)
624
+ 22: <span class="ruby-ivar">@width</span> = <span class="ruby-identifier">width</span>
625
+ 23: <span class="ruby-ivar">@height</span> = <span class="ruby-identifier">height</span>
626
+ 24:
627
+ 25: <span class="ruby-comment cmt"># The zones are stored as Arrays of line segments. Horizontal blocks are</span>
628
+ 26: <span class="ruby-comment cmt"># stored separately from vertical blocks. Blocked segments for a</span>
629
+ 27: <span class="ruby-comment cmt"># particular x coordinate are stored in @vLines, for y coordinates in</span>
630
+ 28: <span class="ruby-comment cmt"># @hLines. Each entry is an Array of [ start, end ] values that describe</span>
631
+ 29: <span class="ruby-comment cmt"># the blocked segments of that particular line. Start and end point are</span>
632
+ 30: <span class="ruby-comment cmt"># part of the segment. A listed segment will not be overwritten during</span>
633
+ 31: <span class="ruby-comment cmt"># routing.</span>
634
+ 32: <span class="ruby-ivar">@hLines</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@height</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">i</span> = [] }
635
+ 33: <span class="ruby-ivar">@vLines</span> = <span class="ruby-constant">Array</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@width</span>) { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">i</span> = [] }
636
+ 34: <span class="ruby-keyword kw">end</span></pre>
637
+ </div>
638
+
639
+ </div>
640
+
641
+
642
+
643
+
644
+ </div>
645
+
646
+
647
+ </div>
648
+
649
+ <div id="public-instance-method-details" class="method-section section">
650
+ <h3 class="section-header">Public Instance Methods</h3>
651
+
652
+
653
+ <div id="add-locked-one-method" class="method-detail ">
654
+ <a name="method-i-addBlockedZone"></a>
655
+
656
+ <div class="method-heading">
657
+
658
+ <span class="method-name">addBlockedZone</span><span
659
+ class="method-args">(x, y, w, h, horiz, vert)</span>
660
+ <span class="method-click-advice">click to toggle source</span>
661
+
662
+ </div>
663
+
664
+ <div class="method-description">
665
+
666
+ <p>
667
+ This function registers an area as don&#8217;t-cross-zone. The rectangular
668
+ zone is described by <em>x</em>, <em>y</em>, <em>w</em> and <em>h</em>. If
669
+ <em>horiz</em> is true, the zone will be blocked for horizontal lines, if
670
+ <em>vert</em> is true the zone will be blocked for vertical lines.
671
+ </p>
672
+
673
+
674
+
675
+ <div class="method-source-code"
676
+ id="add-locked-one-source">
677
+ <pre>
678
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 40</span>
679
+ 40: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addBlockedZone</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">y</span>, <span class="ruby-identifier">w</span>, <span class="ruby-identifier">h</span>, <span class="ruby-identifier">horiz</span>, <span class="ruby-identifier">vert</span>)
680
+ 41: <span class="ruby-comment cmt"># Clip the input rectangle to fit within the handled area of this router.</span>
681
+ 42: <span class="ruby-identifier">x</span> = <span class="ruby-identifier">clip</span>(<span class="ruby-identifier">x</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-ivar">@width</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
682
+ 43: <span class="ruby-identifier">y</span> = <span class="ruby-identifier">clip</span>(<span class="ruby-identifier">y</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-ivar">@height</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
683
+ 44: <span class="ruby-identifier">w</span> = <span class="ruby-identifier">clip</span>(<span class="ruby-identifier">w</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-ivar">@width</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">x</span>)
684
+ 45: <span class="ruby-identifier">h</span> = <span class="ruby-identifier">clip</span>(<span class="ruby-identifier">h</span>.<span class="ruby-identifier">to_i</span>, <span class="ruby-ivar">@height</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">y</span>)
685
+ 46:
686
+ 47: <span class="ruby-comment cmt"># We can ignore empty zones.</span>
687
+ 48: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">w</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
688
+ 49:
689
+ 50: <span class="ruby-comment cmt"># Break the rectangle into line segments and add them to the appropriate</span>
690
+ 51: <span class="ruby-comment cmt"># line Arrays.</span>
691
+ 52: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">horiz</span>
692
+ 53: <span class="ruby-identifier">y</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">y</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
693
+ 54: <span class="ruby-identifier">addSegment</span>(<span class="ruby-ivar">@hLines</span>[<span class="ruby-identifier">i</span>], [ <span class="ruby-identifier">x</span>, <span class="ruby-identifier">x</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">w</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> ])
694
+ 55: <span class="ruby-keyword kw">end</span>
695
+ 56: <span class="ruby-keyword kw">end</span>
696
+ 57: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">vert</span>
697
+ 58: <span class="ruby-identifier">x</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-identifier">x</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">w</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
698
+ 59: <span class="ruby-identifier">addSegment</span>(<span class="ruby-ivar">@vLines</span>[<span class="ruby-identifier">i</span>], [ <span class="ruby-identifier">y</span>, <span class="ruby-identifier">y</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> ])
699
+ 60: <span class="ruby-keyword kw">end</span>
700
+ 61: <span class="ruby-keyword kw">end</span>
701
+ 62: <span class="ruby-keyword kw">end</span></pre>
702
+ </div>
703
+
704
+ </div>
705
+
706
+
707
+
708
+
709
+ </div>
710
+
711
+
712
+ <div id="collision--method" class="method-detail ">
713
+ <a name="method-i-collision%3F"></a>
714
+
715
+ <div class="method-heading">
716
+
717
+ <span class="method-name">collision?</span><span
718
+ class="method-args">(pos, segment, horizontal)</span>
719
+ <span class="method-click-advice">click to toggle source</span>
720
+
721
+ </div>
722
+
723
+ <div class="method-description">
724
+
725
+ <p>
726
+ Find out if there is a block at line <em>pos</em> for the start/end
727
+ coordinates given by <em>segment</em>. If <em>horizontal</em> is true, we
728
+ are looking for a horizontal block, otherwise a vertical.
729
+ </p>
730
+
731
+
732
+
733
+ <div class="method-source-code"
734
+ id="collision--source">
735
+ <pre>
736
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 67</span>
737
+ 67: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">collision?</span>(<span class="ruby-identifier">pos</span>, <span class="ruby-identifier">segment</span>, <span class="ruby-identifier">horizontal</span>)
738
+ 68: <span class="ruby-identifier">line</span> = (<span class="ruby-identifier">horizontal</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@hLines</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@vLines</span>)[<span class="ruby-identifier">pos</span>]
739
+ 69:
740
+ 70: <span class="ruby-comment cmt"># For complex charts, the segment lists can be rather long. We use a</span>
741
+ 71: <span class="ruby-comment cmt"># binary search to be fairly efficient.</span>
742
+ 72: <span class="ruby-identifier">l</span> = <span class="ruby-value">0</span>
743
+ 73: <span class="ruby-identifier">u</span> = <span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
744
+ 74: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">l</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">u</span>
745
+ 75: <span class="ruby-comment cmt"># Look at the element in the middle between l and u.</span>
746
+ 76: <span class="ruby-identifier">p</span> = <span class="ruby-identifier">l</span> <span class="ruby-operator">+</span> ((<span class="ruby-identifier">u</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">l</span>) <span class="ruby-operator">/</span> <span class="ruby-value">2</span>).<span class="ruby-identifier">to_i</span>
747
+ 77: <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">overlaps?</span>(<span class="ruby-identifier">line</span>[<span class="ruby-identifier">p</span>], <span class="ruby-identifier">segment</span>)
748
+ 78:
749
+ 79: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">segment</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">line</span>[<span class="ruby-identifier">p</span>][<span class="ruby-value">1</span>]
750
+ 80: <span class="ruby-comment cmt"># The potential target is above p. Adjust lower bound.</span>
751
+ 81: <span class="ruby-identifier">l</span> = <span class="ruby-identifier">p</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
752
+ 82: <span class="ruby-keyword kw">else</span>
753
+ 83: <span class="ruby-comment cmt"># The potential target is below p. Adjust upper bound.</span>
754
+ 84: <span class="ruby-identifier">u</span> = <span class="ruby-identifier">p</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
755
+ 85: <span class="ruby-keyword kw">end</span>
756
+ 86: <span class="ruby-keyword kw">end</span>
757
+ 87: <span class="ruby-keyword kw">false</span>
758
+ 88: <span class="ruby-keyword kw">end</span></pre>
759
+ </div>
760
+
761
+ </div>
762
+
763
+
764
+
765
+
766
+ </div>
767
+
768
+
769
+ <div id="to-html-method" class="method-detail ">
770
+ <a name="method-i-to_html"></a>
771
+
772
+ <div class="method-heading">
773
+
774
+ <span class="method-name">to_html</span><span
775
+ class="method-args">()</span>
776
+ <span class="method-click-advice">click to toggle source</span>
777
+
778
+ </div>
779
+
780
+ <div class="method-description">
781
+
782
+
783
+
784
+
785
+
786
+ <div class="method-source-code"
787
+ id="to-html-source">
788
+ <pre>
789
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 90</span>
790
+ 90: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span>
791
+ 91: <span class="ruby-identifier">html</span> = []
792
+ 92: <span class="ruby-comment cmt"># Change this to determine what zones you want to see.</span>
793
+ 93: <span class="ruby-keyword kw">if</span> <span class="ruby-keyword kw">true</span>
794
+ 94: <span class="ruby-comment cmt"># Show vertical blocks</span>
795
+ 95: <span class="ruby-identifier">x</span> = <span class="ruby-value">0</span>
796
+ 96: <span class="ruby-ivar">@vLines</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
797
+ 97: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">segment</span><span class="ruby-operator">|</span>
798
+ 98: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">lineToHTML</span>(<span class="ruby-identifier">x</span>, <span class="ruby-identifier">segment</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">x</span>, <span class="ruby-identifier">segment</span>[<span class="ruby-value">1</span>], <span class="ruby-value str">'white'</span>)
799
+ 99: <span class="ruby-keyword kw">end</span>
800
+ 100: <span class="ruby-identifier">x</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
801
+ 101: <span class="ruby-keyword kw">end</span>
802
+ 102: <span class="ruby-keyword kw">else</span>
803
+ 103: <span class="ruby-comment cmt"># Show horizontal blocks</span>
804
+ 104: <span class="ruby-identifier">y</span> = <span class="ruby-value">0</span>
805
+ 105: <span class="ruby-ivar">@hLines</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
806
+ 106: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">segment</span><span class="ruby-operator">|</span>
807
+ 107: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">lineToHTML</span>(<span class="ruby-identifier">segment</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">y</span>, <span class="ruby-identifier">segment</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">y</span>, <span class="ruby-value str">'white'</span>)
808
+ 108: <span class="ruby-keyword kw">end</span>
809
+ 109: <span class="ruby-identifier">y</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
810
+ 110: <span class="ruby-keyword kw">end</span>
811
+ 111: <span class="ruby-keyword kw">end</span>
812
+ 112: <span class="ruby-identifier">html</span>
813
+ 113: <span class="ruby-keyword kw">end</span></pre>
814
+ </div>
815
+
816
+ </div>
817
+
818
+
819
+
820
+
821
+ </div>
822
+
823
+
824
+ </div>
825
+
826
+ <div id="private-instance-method-details" class="method-section section">
827
+ <h3 class="section-header">Private Instance Methods</h3>
828
+
829
+
830
+ <div id="add-egment-method" class="method-detail ">
831
+ <a name="method-i-addSegment"></a>
832
+
833
+ <div class="method-heading">
834
+
835
+ <span class="method-name">addSegment</span><span
836
+ class="method-args">(line, newSegment)</span>
837
+ <span class="method-click-advice">click to toggle source</span>
838
+
839
+ </div>
840
+
841
+ <div class="method-description">
842
+
843
+ <p>
844
+ This function adds a new segment to the line. In case the new segment
845
+ overlaps with or directly attaches to existing segments, these segments are
846
+ merged into a single segment.
847
+ </p>
848
+
849
+
850
+
851
+ <div class="method-source-code"
852
+ id="add-egment-source">
853
+ <pre>
854
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 127</span>
855
+ 127: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addSegment</span>(<span class="ruby-identifier">line</span>, <span class="ruby-identifier">newSegment</span>)
856
+ 128: <span class="ruby-comment cmt"># Search for overlaping or directly attaching segments in the list.</span>
857
+ 129: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
858
+ 130: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">i</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">length</span>)
859
+ 131: <span class="ruby-identifier">segment</span> = <span class="ruby-identifier">line</span>[<span class="ruby-identifier">i</span>]
860
+ 132: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">mergeable?</span>(<span class="ruby-identifier">newSegment</span>, <span class="ruby-identifier">segment</span>)
861
+ 133: <span class="ruby-comment cmt"># Merge exiting segment into new one</span>
862
+ 134: <span class="ruby-identifier">merge</span>(<span class="ruby-identifier">newSegment</span>, <span class="ruby-identifier">segment</span>)
863
+ 135: <span class="ruby-comment cmt"># Remove the old one from the list and restart with the newly created</span>
864
+ 136: <span class="ruby-comment cmt"># one at the same position.</span>
865
+ 137: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">delete_at</span>(<span class="ruby-identifier">i</span>)
866
+ 138: <span class="ruby-keyword kw">next</span>
867
+ 139: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">segment</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">newSegment</span>[<span class="ruby-value">1</span>]
868
+ 140: <span class="ruby-comment cmt"># Segments are stored in ascending order. If the next segment starts</span>
869
+ 141: <span class="ruby-comment cmt"># with a larger value, we insert the new segment before the larger</span>
870
+ 142: <span class="ruby-comment cmt"># one.</span>
871
+ 143: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">i</span>, <span class="ruby-identifier">newSegment</span>)
872
+ 144: <span class="ruby-keyword kw">return</span>
873
+ 145: <span class="ruby-keyword kw">end</span>
874
+ 146: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
875
+ 147: <span class="ruby-keyword kw">end</span>
876
+ 148: <span class="ruby-comment cmt"># Append new segment</span>
877
+ 149: <span class="ruby-identifier">line</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">newSegment</span>
878
+ 150: <span class="ruby-keyword kw">end</span></pre>
879
+ </div>
880
+
881
+ </div>
882
+
883
+
884
+
885
+
886
+ </div>
887
+
888
+
889
+ <div id="clip-method" class="method-detail ">
890
+ <a name="method-i-clip"></a>
891
+
892
+ <div class="method-heading">
893
+
894
+ <span class="method-name">clip</span><span
895
+ class="method-args">(v, max)</span>
896
+ <span class="method-click-advice">click to toggle source</span>
897
+
898
+ </div>
899
+
900
+ <div class="method-description">
901
+
902
+ <p>
903
+ Simple utility function to limit <em>v</em> between 0 and <em>max</em>.
904
+ </p>
905
+
906
+
907
+
908
+ <div class="method-source-code"
909
+ id="clip-source">
910
+ <pre>
911
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 118</span>
912
+ 118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">clip</span>(<span class="ruby-identifier">v</span>, <span class="ruby-identifier">max</span>)
913
+ 119: <span class="ruby-identifier">v</span> = <span class="ruby-value">0</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">v</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span>
914
+ 120: <span class="ruby-identifier">v</span> = <span class="ruby-identifier">max</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">v</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">max</span>
915
+ 121: <span class="ruby-identifier">v</span>
916
+ 122: <span class="ruby-keyword kw">end</span></pre>
917
+ </div>
918
+
919
+ </div>
920
+
921
+
922
+
923
+
924
+ </div>
925
+
926
+
927
+ <div id="merge-method" class="method-detail ">
928
+ <a name="method-i-merge"></a>
929
+
930
+ <div class="method-heading">
931
+
932
+ <span class="method-name">merge</span><span
933
+ class="method-args">(dst, seg)</span>
934
+ <span class="method-click-advice">click to toggle source</span>
935
+
936
+ </div>
937
+
938
+ <div class="method-description">
939
+
940
+ <p>
941
+ Merge the two segments described by <em>dst</em> and <em>src</em> into
942
+ <em>dst</em>.
943
+ </p>
944
+
945
+
946
+
947
+ <div class="method-source-code"
948
+ id="merge-source">
949
+ <pre>
950
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 169</span>
951
+ 169: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">merge</span>(<span class="ruby-identifier">dst</span>, <span class="ruby-identifier">seg</span>)
952
+ 170: <span class="ruby-identifier">dst</span>[<span class="ruby-value">0</span>] = <span class="ruby-identifier">seg</span>[<span class="ruby-value">0</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">seg</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">dst</span>[<span class="ruby-value">0</span>]
953
+ 171: <span class="ruby-identifier">dst</span>[<span class="ruby-value">1</span>] = <span class="ruby-identifier">seg</span>[<span class="ruby-value">1</span>] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">seg</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">dst</span>[<span class="ruby-value">1</span>]
954
+ 172: <span class="ruby-keyword kw">end</span></pre>
955
+ </div>
956
+
957
+ </div>
958
+
959
+
960
+
961
+
962
+ </div>
963
+
964
+
965
+ <div id="mergeable--method" class="method-detail ">
966
+ <a name="method-i-mergeable%3F"></a>
967
+
968
+ <div class="method-heading">
969
+
970
+ <span class="method-name">mergeable?</span><span
971
+ class="method-args">(s1, s2)</span>
972
+ <span class="method-click-advice">click to toggle source</span>
973
+
974
+ </div>
975
+
976
+ <div class="method-description">
977
+
978
+ <p>
979
+ Return true if the two segments described by <em>s1</em> and <em>s2</em>
980
+ overlap each other or are directly attached to each other.
981
+ </p>
982
+
983
+
984
+
985
+ <div class="method-source-code"
986
+ id="mergeable--source">
987
+ <pre>
988
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 162</span>
989
+ 162: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mergeable?</span>(<span class="ruby-identifier">s1</span>, <span class="ruby-identifier">s2</span>)
990
+ 163: <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">s1</span>, <span class="ruby-identifier">s2</span>) <span class="ruby-operator">||</span>
991
+ 164: (<span class="ruby-identifier">s1</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">s2</span>[<span class="ruby-value">0</span>]) <span class="ruby-operator">||</span>
992
+ 165: (<span class="ruby-identifier">s2</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">s1</span>[<span class="ruby-value">0</span>])
993
+ 166: <span class="ruby-keyword kw">end</span></pre>
994
+ </div>
995
+
996
+ </div>
997
+
998
+
999
+
1000
+
1001
+ </div>
1002
+
1003
+
1004
+ <div id="overlaps--method" class="method-detail ">
1005
+ <a name="method-i-overlaps%3F"></a>
1006
+
1007
+ <div class="method-heading">
1008
+
1009
+ <span class="method-name">overlaps?</span><span
1010
+ class="method-args">(s1, s2)</span>
1011
+ <span class="method-click-advice">click to toggle source</span>
1012
+
1013
+ </div>
1014
+
1015
+ <div class="method-description">
1016
+
1017
+ <p>
1018
+ Return true if the two segments described by <em>s1</em> and <em>s2</em>
1019
+ overlap each other. A segment is a [ start, end ] Array. The two points are
1020
+ part of the segment.
1021
+ </p>
1022
+
1023
+
1024
+
1025
+ <div class="method-source-code"
1026
+ id="overlaps--source">
1027
+ <pre>
1028
+ <span class="ruby-comment cmt"># File lib/reports/CollisionDetector.rb, line 155</span>
1029
+ 155: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">overlaps?</span>(<span class="ruby-identifier">s1</span>, <span class="ruby-identifier">s2</span>)
1030
+ 156: (<span class="ruby-identifier">s1</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">s2</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">s2</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">s1</span>[<span class="ruby-value">1</span>]) <span class="ruby-operator">||</span>
1031
+ 157: (<span class="ruby-identifier">s2</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">s1</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">s1</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">s2</span>[<span class="ruby-value">1</span>])
1032
+ 158: <span class="ruby-keyword kw">end</span></pre>
1033
+ </div>
1034
+
1035
+ </div>
1036
+
1037
+
1038
+
1039
+
1040
+ </div>
1041
+
1042
+
1043
+ </div>
1044
+
1045
+
1046
+ </div>
1047
+
1048
+
1049
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
1050
+
1051
+ <p>Disabled; run with --debug to generate this.</p>
1052
+
1053
+ </div>
1054
+
1055
+ <div id="validator-badges">
1056
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1057
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
1058
+ Rdoc Generator</a> 1.1.6</small>.</p>
1059
+ </div>
1060
+
1061
+ </body>
1062
+ </html>
1063
+