taskjuggler 0.0.7 → 0.0.8

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 (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
@@ -179,12 +179,18 @@
179
179
 
180
180
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
181
181
 
182
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
183
+
182
184
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
183
185
 
184
186
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
185
187
 
186
188
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
187
189
 
190
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
191
+
192
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
193
+
188
194
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
189
195
 
190
196
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -291,7 +297,7 @@
291
297
 
292
298
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
293
299
 
294
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
300
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
295
301
 
296
302
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
297
303
 
@@ -471,6 +477,10 @@
471
477
 
472
478
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
473
479
 
480
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
481
+
482
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
483
+
474
484
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
475
485
 
476
486
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -1134,17 +1144,15 @@ need to be sufficent to uniquely identify an attribute.
1134
1144
  <div class="method-source-code"
1135
1145
  id="end-source">
1136
1146
  <pre>
1137
- <span class="ruby-comment cmt"># File lib/Query.rb, line 91</span>
1138
- 91: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">end</span>=(<span class="ruby-identifier">date</span>)
1139
- 92: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1140
- 93: <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">date</span>
1141
- 94: <span class="ruby-ivar">@endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-keyword kw">true</span>)
1142
- 95: <span class="ruby-comment cmt">#elsif date.is_a?(Fixnum)</span>
1143
- 96: <span class="ruby-comment cmt"># self.endIdx=(date)</span>
1144
- 97: <span class="ruby-keyword kw">else</span>
1145
- 98: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{date.class}&quot;</span>
1146
- 99: <span class="ruby-keyword kw">end</span>
1147
- 100: <span class="ruby-keyword kw">end</span></pre>
1147
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 87</span>
1148
+ 87: <span class="ruby-keyword kw">def</span> <span class="ruby-keyword kw">end</span>=(<span class="ruby-identifier">date</span>)
1149
+ 88: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1150
+ 89: <span class="ruby-ivar">@end</span> = <span class="ruby-identifier">date</span>
1151
+ 90: <span class="ruby-ivar">@endIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-keyword kw">true</span>)
1152
+ 91: <span class="ruby-keyword kw">else</span>
1153
+ 92: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{date.class}&quot;</span>
1154
+ 93: <span class="ruby-keyword kw">end</span>
1155
+ 94: <span class="ruby-keyword kw">end</span></pre>
1148
1156
  </div>
1149
1157
 
1150
1158
  </div>
@@ -1175,17 +1183,15 @@ need to be sufficent to uniquely identify an attribute.
1175
1183
  <div class="method-source-code"
1176
1184
  id="end-dx--source">
1177
1185
  <pre>
1178
- <span class="ruby-comment cmt"># File lib/Query.rb, line 102</span>
1179
- 102: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endIdx=</span>(<span class="ruby-identifier">idx</span>)
1180
- 103: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
1181
- 104: <span class="ruby-ivar">@endIdx</span> = <span class="ruby-identifier">idx</span>
1182
- 105: <span class="ruby-ivar">@end</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1183
- 106: <span class="ruby-comment cmt">#elsif idx.is_a?(TjTime)</span>
1184
- 107: <span class="ruby-comment cmt"># self.end=(idx)</span>
1185
- 108: <span class="ruby-keyword kw">else</span>
1186
- 109: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{idx.class}&quot;</span>
1187
- 110: <span class="ruby-keyword kw">end</span>
1188
- 111: <span class="ruby-keyword kw">end</span></pre>
1186
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 96</span>
1187
+ 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endIdx=</span>(<span class="ruby-identifier">idx</span>)
1188
+ 97: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
1189
+ 98: <span class="ruby-ivar">@endIdx</span> = <span class="ruby-identifier">idx</span>
1190
+ 99: <span class="ruby-ivar">@end</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1191
+ 100: <span class="ruby-keyword kw">else</span>
1192
+ 101: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{idx.class}&quot;</span>
1193
+ 102: <span class="ruby-keyword kw">end</span>
1194
+ 103: <span class="ruby-keyword kw">end</span></pre>
1189
1195
  </div>
1190
1196
 
1191
1197
  </div>
@@ -1224,69 +1230,69 @@ href="Query.html#method-i-to_sort">to_sort</a>() and result().
1224
1230
  <div class="method-source-code"
1225
1231
  id="process-source">
1226
1232
  <pre>
1227
- <span class="ruby-comment cmt"># File lib/Query.rb, line 118</span>
1228
- 118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>
1229
- 119: <span class="ruby-identifier">reset</span>
1230
- 120: <span class="ruby-keyword kw">begin</span>
1231
- 121: <span class="ruby-comment cmt"># Resolve property reference from property ID.</span>
1232
- 122: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertyId</span>.<span class="ruby-identifier">nil?</span>
1233
- 123: <span class="ruby-ivar">@property</span> = <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-ivar">@propertyType</span>, <span class="ruby-ivar">@propertyId</span>)
1234
- 124: <span class="ruby-keyword kw">end</span>
1235
- 125:
1236
- 126: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>
1237
- 127: <span class="ruby-comment cmt"># No property was provided. We are looking for a project attribute.</span>
1238
- 128: <span class="ruby-identifier">supportedAttrs</span> = <span class="ruby-node">%( copyright currency end name now projectid
1239
- 129: start version )</span>
1240
- 130: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">supportedAttrs</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@attributeId</span>)
1241
- 131: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
1242
- 132: <span class="ruby-node">&quot;Unsupported project attribute '#{@attributeId}'&quot;</span>
1243
- 133: <span class="ruby-keyword kw">end</span>
1244
- 134: <span class="ruby-identifier">attr</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-ivar">@attributeId</span>]
1245
- 135: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1246
- 136: <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@numerical</span> = <span class="ruby-identifier">attr</span>
1247
- 137: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">attr</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-ivar">@timeFormat</span>)
1248
- 138: <span class="ruby-keyword kw">else</span>
1249
- 139: <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">attr</span>
1250
- 140: <span class="ruby-keyword kw">end</span>
1251
- 141: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1252
- 142: <span class="ruby-keyword kw">end</span>
1233
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 110</span>
1234
+ 110: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">process</span>
1235
+ 111: <span class="ruby-identifier">reset</span>
1236
+ 112: <span class="ruby-keyword kw">begin</span>
1237
+ 113: <span class="ruby-comment cmt"># Resolve property reference from property ID.</span>
1238
+ 114: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@propertyId</span>.<span class="ruby-identifier">nil?</span>
1239
+ 115: <span class="ruby-ivar">@property</span> = <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-ivar">@propertyType</span>, <span class="ruby-ivar">@propertyId</span>)
1240
+ 116: <span class="ruby-keyword kw">end</span>
1241
+ 117:
1242
+ 118: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@property</span>
1243
+ 119: <span class="ruby-comment cmt"># No property was provided. We are looking for a project attribute.</span>
1244
+ 120: <span class="ruby-identifier">supportedAttrs</span> = <span class="ruby-node">%( copyright currency end name now projectid
1245
+ 121: start version )</span>
1246
+ 122: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">supportedAttrs</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@attributeId</span>)
1247
+ 123: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>,
1248
+ 124: <span class="ruby-node">&quot;Unsupported project attribute '#{@attributeId}'&quot;</span>
1249
+ 125: <span class="ruby-keyword kw">end</span>
1250
+ 126: <span class="ruby-identifier">attr</span> = <span class="ruby-ivar">@project</span>[<span class="ruby-ivar">@attributeId</span>]
1251
+ 127: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1252
+ 128: <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@numerical</span> = <span class="ruby-identifier">attr</span>
1253
+ 129: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">attr</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-ivar">@timeFormat</span>)
1254
+ 130: <span class="ruby-keyword kw">else</span>
1255
+ 131: <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">attr</span>
1256
+ 132: <span class="ruby-keyword kw">end</span>
1257
+ 133: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1258
+ 134: <span class="ruby-keyword kw">end</span>
1259
+ 135:
1260
+ 136: <span class="ruby-comment cmt"># Same for the scope property.</span>
1261
+ 137: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scopeProperty</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scopePropertyId</span>.<span class="ruby-identifier">nil?</span>
1262
+ 138: <span class="ruby-ivar">@scopeProperty</span> = <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-ivar">@scopePropertyType</span>,
1263
+ 139: <span class="ruby-ivar">@scopePropertyId</span>)
1264
+ 140: <span class="ruby-keyword kw">end</span>
1265
+ 141: <span class="ruby-comment cmt"># Make sure the have a reference to the project.</span>
1266
+ 142: <span class="ruby-ivar">@project</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">project</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@project</span>
1253
1267
  143:
1254
- 144: <span class="ruby-comment cmt"># Same for the scope property.</span>
1255
- 145: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scopeProperty</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scopePropertyId</span>.<span class="ruby-identifier">nil?</span>
1256
- 146: <span class="ruby-ivar">@scopeProperty</span> = <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-ivar">@scopePropertyType</span>,
1257
- 147: <span class="ruby-ivar">@scopePropertyId</span>)
1258
- 148: <span class="ruby-keyword kw">end</span>
1259
- 149: <span class="ruby-comment cmt"># Make sure the have a reference to the project.</span>
1260
- 150: <span class="ruby-ivar">@project</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">project</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@project</span>
1261
- 151:
1262
- 152: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scenario</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scenarioIdx</span>
1263
- 153: <span class="ruby-ivar">@scenarioIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-ivar">@scenario</span>)
1264
- 154: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioIdx</span>
1265
- 155: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Query cannot resolve scenario '#{@scenario}'&quot;</span>
1266
- 156: <span class="ruby-keyword kw">end</span>
1267
- 157: <span class="ruby-keyword kw">end</span>
1268
- 158:
1269
- 159: <span class="ruby-identifier">queryMethodName</span> = <span class="ruby-value str">'query_'</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@attributeId</span>
1270
- 160: <span class="ruby-comment cmt"># First we check for non-scenario-specific query functions.</span>
1271
- 161: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">queryMethodName</span>)
1272
- 162: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">queryMethodName</span>, <span class="ruby-keyword kw">self</span>)
1273
- 163: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarioIdx</span> <span class="ruby-operator">&amp;&amp;</span>
1274
- 164: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">data</span>[<span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">queryMethodName</span>)
1275
- 165: <span class="ruby-comment cmt"># Then we check for scenario-specific ones via the @data member.</span>
1276
- 166: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">queryMethodName</span>, <span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-keyword kw">self</span>)
1277
- 167: <span class="ruby-keyword kw">else</span>
1278
- 168: <span class="ruby-comment cmt"># The result is a BaseAttribute</span>
1279
- 169: <span class="ruby-keyword kw">unless</span> (<span class="ruby-ivar">@attr</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">getAttribute</span>(<span class="ruby-ivar">@attributeId</span>, <span class="ruby-ivar">@scenarioIdx</span>))
1280
- 170: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-node">&quot;Unknown attribute #{@attributeId} queried&quot;</span>
1281
- 171: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1282
- 172: <span class="ruby-keyword kw">end</span>
1283
- 173: <span class="ruby-keyword kw">end</span>
1284
- 174: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1285
- 175: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">message</span>
1286
- 176: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1287
- 177: <span class="ruby-keyword kw">end</span>
1288
- 178: <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1289
- 179: <span class="ruby-keyword kw">end</span></pre>
1268
+ 144: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scenario</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@scenarioIdx</span>
1269
+ 145: <span class="ruby-ivar">@scenarioIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">scenarioIdx</span>(<span class="ruby-ivar">@scenario</span>)
1270
+ 146: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@scenarioIdx</span>
1271
+ 147: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Query cannot resolve scenario '#{@scenario}'&quot;</span>
1272
+ 148: <span class="ruby-keyword kw">end</span>
1273
+ 149: <span class="ruby-keyword kw">end</span>
1274
+ 150:
1275
+ 151: <span class="ruby-identifier">queryMethodName</span> = <span class="ruby-value str">'query_'</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@attributeId</span>
1276
+ 152: <span class="ruby-comment cmt"># First we check for non-scenario-specific query functions.</span>
1277
+ 153: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">queryMethodName</span>)
1278
+ 154: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">queryMethodName</span>, <span class="ruby-keyword kw">self</span>)
1279
+ 155: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@scenarioIdx</span> <span class="ruby-operator">&amp;&amp;</span>
1280
+ 156: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">data</span>[<span class="ruby-ivar">@scenarioIdx</span>].<span class="ruby-identifier">respond_to?</span>(<span class="ruby-identifier">queryMethodName</span>)
1281
+ 157: <span class="ruby-comment cmt"># Then we check for scenario-specific ones via the @data member.</span>
1282
+ 158: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">queryMethodName</span>, <span class="ruby-ivar">@scenarioIdx</span>, <span class="ruby-keyword kw">self</span>)
1283
+ 159: <span class="ruby-keyword kw">else</span>
1284
+ 160: <span class="ruby-comment cmt"># The result is a BaseAttribute</span>
1285
+ 161: <span class="ruby-keyword kw">unless</span> (<span class="ruby-ivar">@attr</span> = <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">getAttribute</span>(<span class="ruby-ivar">@attributeId</span>, <span class="ruby-ivar">@scenarioIdx</span>))
1286
+ 162: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-node">&quot;Unknown attribute #{@attributeId} queried&quot;</span>
1287
+ 163: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1288
+ 164: <span class="ruby-keyword kw">end</span>
1289
+ 165: <span class="ruby-keyword kw">end</span>
1290
+ 166: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
1291
+ 167: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">message</span>
1292
+ 168: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">false</span>
1293
+ 169: <span class="ruby-keyword kw">end</span>
1294
+ 170: <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1295
+ 171: <span class="ruby-keyword kw">end</span></pre>
1290
1296
  </div>
1291
1297
 
1292
1298
  </div>
@@ -1319,22 +1325,22 @@ Return the result in the orginal form. It may be nil.
1319
1325
  <div class="method-source-code"
1320
1326
  id="result-source">
1321
1327
  <pre>
1322
- <span class="ruby-comment cmt"># File lib/Query.rb, line 204</span>
1323
- 204: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>
1324
- 205: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attr</span>
1325
- 206: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">ReferenceAttribute</span>)
1326
- 207: <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span>[<span class="ruby-value">0</span>]
1327
- 208: <span class="ruby-keyword kw">else</span>
1328
- 209: <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span>
1329
- 210: <span class="ruby-keyword kw">end</span>
1330
- 211: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@rti</span>
1331
- 212: <span class="ruby-ivar">@rti</span>
1332
- 213: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@numerical</span>
1333
- 214: <span class="ruby-ivar">@numerical</span>
1334
- 215: <span class="ruby-keyword kw">else</span>
1335
- 216: <span class="ruby-ivar">@string</span>
1336
- 217: <span class="ruby-keyword kw">end</span>
1337
- 218: <span class="ruby-keyword kw">end</span></pre>
1328
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 196</span>
1329
+ 196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">result</span>
1330
+ 197: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attr</span>
1331
+ 198: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">ReferenceAttribute</span>)
1332
+ 199: <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span>[<span class="ruby-value">0</span>]
1333
+ 200: <span class="ruby-keyword kw">else</span>
1334
+ 201: <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">value</span>
1335
+ 202: <span class="ruby-keyword kw">end</span>
1336
+ 203: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@rti</span>
1337
+ 204: <span class="ruby-ivar">@rti</span>
1338
+ 205: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@numerical</span>
1339
+ 206: <span class="ruby-ivar">@numerical</span>
1340
+ 207: <span class="ruby-keyword kw">else</span>
1341
+ 208: <span class="ruby-ivar">@string</span>
1342
+ 209: <span class="ruby-keyword kw">end</span>
1343
+ 210: <span class="ruby-keyword kw">end</span></pre>
1338
1344
  </div>
1339
1345
 
1340
1346
  </div>
@@ -1369,10 +1375,10 @@ optional unit as a <a href="../String.html">String</a>.
1369
1375
  <div class="method-source-code"
1370
1376
  id="scale-uration-source">
1371
1377
  <pre>
1372
- <span class="ruby-comment cmt"># File lib/Query.rb, line 223</span>
1373
- 223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleDuration</span>(<span class="ruby-identifier">value</span>)
1374
- 224: <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, [ <span class="ruby-value">24</span> * <span class="ruby-value">60</span>, <span class="ruby-value">24</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">7</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">30.42</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">365</span> ])
1375
- 225: <span class="ruby-keyword kw">end</span></pre>
1378
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 215</span>
1379
+ 215: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleDuration</span>(<span class="ruby-identifier">value</span>)
1380
+ 216: <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, [ <span class="ruby-value">24</span> * <span class="ruby-value">60</span>, <span class="ruby-value">24</span>, <span class="ruby-value">1</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">7</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">30.42</span>, <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-value">365</span> ])
1381
+ 217: <span class="ruby-keyword kw">end</span></pre>
1376
1382
  </div>
1377
1383
 
1378
1384
  </div>
@@ -1407,15 +1413,15 @@ value with optional unit as a <a href="../String.html">String</a>.
1407
1413
  <div class="method-source-code"
1408
1414
  id="scale-oad-source">
1409
1415
  <pre>
1410
- <span class="ruby-comment cmt"># File lib/Query.rb, line 230</span>
1411
- 230: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">value</span>)
1412
- 231: <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, [ <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dailyWorkingHours</span> * <span class="ruby-value">60</span>,
1413
- 232: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dailyWorkingHours</span>,
1414
- 233: <span class="ruby-value">1.0</span>,
1415
- 234: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">weeklyWorkingDays</span>,
1416
- 235: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">monthlyWorkingDays</span>,
1417
- 236: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">yearlyWorkingDays</span> ])
1418
- 237: <span class="ruby-keyword kw">end</span></pre>
1416
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 222</span>
1417
+ 222: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleLoad</span>(<span class="ruby-identifier">value</span>)
1418
+ 223: <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, [ <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dailyWorkingHours</span> * <span class="ruby-value">60</span>,
1419
+ 224: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dailyWorkingHours</span>,
1420
+ 225: <span class="ruby-value">1.0</span>,
1421
+ 226: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">weeklyWorkingDays</span>,
1422
+ 227: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">monthlyWorkingDays</span>,
1423
+ 228: <span class="ruby-value">1.0</span> <span class="ruby-operator">/</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">yearlyWorkingDays</span> ])
1424
+ 229: <span class="ruby-keyword kw">end</span></pre>
1419
1425
  </div>
1420
1426
 
1421
1427
  </div>
@@ -1455,12 +1461,10 @@ index. We store both, but we need to assure they are always in sync.
1455
1461
  70: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">date</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TjTime</span>)
1456
1462
  71: <span class="ruby-ivar">@start</span> = <span class="ruby-identifier">date</span>
1457
1463
  72: <span class="ruby-ivar">@startIdx</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">dateToIdx</span>(<span class="ruby-identifier">date</span>, <span class="ruby-keyword kw">true</span>)
1458
- 73: <span class="ruby-comment cmt">#elsif date.is_a?(Fixnum)</span>
1459
- 74: <span class="ruby-comment cmt"># self.startIdx=(date)</span>
1460
- 75: <span class="ruby-keyword kw">else</span>
1461
- 76: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{date.class}&quot;</span>
1462
- 77: <span class="ruby-keyword kw">end</span>
1463
- 78: <span class="ruby-keyword kw">end</span></pre>
1464
+ 73: <span class="ruby-keyword kw">else</span>
1465
+ 74: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{date.class}&quot;</span>
1466
+ 75: <span class="ruby-keyword kw">end</span>
1467
+ 76: <span class="ruby-keyword kw">end</span></pre>
1464
1468
  </div>
1465
1469
 
1466
1470
  </div>
@@ -1491,17 +1495,15 @@ index. We store both, but we need to assure they are always in sync.
1491
1495
  <div class="method-source-code"
1492
1496
  id="start-dx--source">
1493
1497
  <pre>
1494
- <span class="ruby-comment cmt"># File lib/Query.rb, line 80</span>
1495
- 80: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startIdx=</span>(<span class="ruby-identifier">idx</span>)
1496
- 81: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
1497
- 82: <span class="ruby-ivar">@startIdx</span> = <span class="ruby-identifier">idx</span>
1498
- 83: <span class="ruby-ivar">@start</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1499
- 84: <span class="ruby-comment cmt">#elsif idx.is_a?(TjTime)</span>
1500
- 85: <span class="ruby-comment cmt"># self.start=(idx)</span>
1501
- 86: <span class="ruby-keyword kw">else</span>
1502
- 87: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{idx.class}&quot;</span>
1503
- 88: <span class="ruby-keyword kw">end</span>
1504
- 89: <span class="ruby-keyword kw">end</span></pre>
1498
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 78</span>
1499
+ 78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startIdx=</span>(<span class="ruby-identifier">idx</span>)
1500
+ 79: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>)
1501
+ 80: <span class="ruby-ivar">@startIdx</span> = <span class="ruby-identifier">idx</span>
1502
+ 81: <span class="ruby-ivar">@start</span> = <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">idxToDate</span>(<span class="ruby-identifier">idx</span>)
1503
+ 82: <span class="ruby-keyword kw">else</span>
1504
+ 83: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unsupported type #{idx.class}&quot;</span>
1505
+ 84: <span class="ruby-keyword kw">end</span>
1506
+ 85: <span class="ruby-keyword kw">end</span></pre>
1505
1507
  </div>
1506
1508
 
1507
1509
  </div>
@@ -1535,10 +1537,10 @@ The result may be nil.
1535
1537
  <div class="method-source-code"
1536
1538
  id="to-num-source">
1537
1539
  <pre>
1538
- <span class="ruby-comment cmt"># File lib/Query.rb, line 188</span>
1539
- 188: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_num</span>
1540
- 189: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_num</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@numerical</span>
1541
- 190: <span class="ruby-keyword kw">end</span></pre>
1540
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 180</span>
1541
+ 180: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_num</span>
1542
+ 181: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_num</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@numerical</span>
1543
+ 182: <span class="ruby-keyword kw">end</span></pre>
1542
1544
  </div>
1543
1545
 
1544
1546
  </div>
@@ -1573,10 +1575,10 @@ result may be nil.
1573
1575
  <div class="method-source-code"
1574
1576
  id="to-rti-source">
1575
1577
  <pre>
1576
- <span class="ruby-comment cmt"># File lib/Query.rb, line 199</span>
1577
- 199: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_rti</span>
1578
- 200: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_rti</span>(<span class="ruby-keyword kw">self</span>) <span class="ruby-operator">:</span> <span class="ruby-ivar">@rti</span>
1579
- 201: <span class="ruby-keyword kw">end</span></pre>
1578
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 191</span>
1579
+ 191: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_rti</span>
1580
+ 192: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_rti</span>(<span class="ruby-keyword kw">self</span>) <span class="ruby-operator">:</span> <span class="ruby-ivar">@rti</span>
1581
+ 193: <span class="ruby-keyword kw">end</span></pre>
1580
1582
  </div>
1581
1583
 
1582
1584
  </div>
@@ -1610,10 +1612,10 @@ href="../String.html">String</a>. The result may be nil.
1610
1612
  <div class="method-source-code"
1611
1613
  id="to-s-source">
1612
1614
  <pre>
1613
- <span class="ruby-comment cmt"># File lib/Query.rb, line 182</span>
1614
- 182: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1615
- 183: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-keyword kw">self</span>) <span class="ruby-operator">:</span> (<span class="ruby-ivar">@rti</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@rti</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">:</span> (<span class="ruby-ivar">@string</span> <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>))
1616
- 184: <span class="ruby-keyword kw">end</span></pre>
1615
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 174</span>
1616
+ 174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1617
+ 175: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_s</span>(<span class="ruby-keyword kw">self</span>) <span class="ruby-operator">:</span> (<span class="ruby-ivar">@rti</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@rti</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">:</span> (<span class="ruby-ivar">@string</span> <span class="ruby-operator">||</span> <span class="ruby-value str">''</span>))
1618
+ 176: <span class="ruby-keyword kw">end</span></pre>
1617
1619
  </div>
1618
1620
 
1619
1621
  </div>
@@ -1647,10 +1649,10 @@ result may be nil.
1647
1649
  <div class="method-source-code"
1648
1650
  id="to-sort-source">
1649
1651
  <pre>
1650
- <span class="ruby-comment cmt"># File lib/Query.rb, line 194</span>
1651
- 194: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_sort</span>
1652
- 195: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_sort</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@sortable</span>
1653
- 196: <span class="ruby-keyword kw">end</span></pre>
1652
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 186</span>
1653
+ 186: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_sort</span>
1654
+ 187: <span class="ruby-ivar">@attr</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@attr</span>.<span class="ruby-identifier">to_sort</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@sortable</span>
1655
+ 188: <span class="ruby-keyword kw">end</span></pre>
1654
1656
  </div>
1655
1657
 
1656
1658
  </div>
@@ -1690,12 +1692,12 @@ result data.
1690
1692
  <div class="method-source-code"
1691
1693
  id="reset-source">
1692
1694
  <pre>
1693
- <span class="ruby-comment cmt"># File lib/Query.rb, line 331</span>
1694
- 331: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
1695
- 332: <span class="ruby-ivar">@attr</span> = <span class="ruby-ivar">@numerical</span> = <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@string</span> = <span class="ruby-ivar">@rti</span> = <span class="ruby-keyword kw">nil</span>
1696
- 333: <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1697
- 334: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-keyword kw">nil</span>
1698
- 335: <span class="ruby-keyword kw">end</span></pre>
1695
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 323</span>
1696
+ 323: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">reset</span>
1697
+ 324: <span class="ruby-ivar">@attr</span> = <span class="ruby-ivar">@numerical</span> = <span class="ruby-ivar">@sortable</span> = <span class="ruby-ivar">@string</span> = <span class="ruby-ivar">@rti</span> = <span class="ruby-keyword kw">nil</span>
1698
+ 325: <span class="ruby-ivar">@ok</span> = <span class="ruby-keyword kw">true</span>
1699
+ 326: <span class="ruby-ivar">@errorMessage</span> = <span class="ruby-keyword kw">nil</span>
1700
+ 327: <span class="ruby-keyword kw">end</span></pre>
1699
1701
  </div>
1700
1702
 
1701
1703
  </div>
@@ -1726,22 +1728,22 @@ result data.
1726
1728
  <div class="method-source-code"
1727
1729
  id="resolve-roperty-d-source">
1728
1730
  <pre>
1729
- <span class="ruby-comment cmt"># File lib/Query.rb, line 241</span>
1730
- 241: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-identifier">pType</span>, <span class="ruby-identifier">pId</span>)
1731
- 242: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@project</span>
1732
- 243: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Need Project reference to process the query&quot;</span>
1733
- 244: <span class="ruby-keyword kw">end</span>
1734
- 245: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">pType</span>
1735
- 246: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:Account</span>
1736
- 247: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">account</span>(<span class="ruby-identifier">pId</span>)
1737
- 248: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:Task</span>
1738
- 249: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">task</span>(<span class="ruby-identifier">pId</span>)
1739
- 250: <span class="ruby-keyword kw">when</span><span class="ruby-value">:Resource</span>
1740
- 251: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resource</span>(<span class="ruby-identifier">pId</span>)
1741
- 252: <span class="ruby-keyword kw">else</span>
1742
- 253: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown property type #{pType}&quot;</span>
1743
- 254: <span class="ruby-keyword kw">end</span>
1744
- 255: <span class="ruby-keyword kw">end</span></pre>
1731
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 233</span>
1732
+ 233: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">resolvePropertyId</span>(<span class="ruby-identifier">pType</span>, <span class="ruby-identifier">pId</span>)
1733
+ 234: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@project</span>
1734
+ 235: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Need Project reference to process the query&quot;</span>
1735
+ 236: <span class="ruby-keyword kw">end</span>
1736
+ 237: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">pType</span>
1737
+ 238: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:Account</span>
1738
+ 239: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">account</span>(<span class="ruby-identifier">pId</span>)
1739
+ 240: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:Task</span>
1740
+ 241: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">task</span>(<span class="ruby-identifier">pId</span>)
1741
+ 242: <span class="ruby-keyword kw">when</span><span class="ruby-value">:Resource</span>
1742
+ 243: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">resource</span>(<span class="ruby-identifier">pId</span>)
1743
+ 244: <span class="ruby-keyword kw">else</span>
1744
+ 245: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown property type #{pType}&quot;</span>
1745
+ 246: <span class="ruby-keyword kw">end</span>
1746
+ 247: <span class="ruby-keyword kw">end</span></pre>
1745
1747
  </div>
1746
1748
 
1747
1749
  </div>
@@ -1778,71 +1780,71 @@ the different units.
1778
1780
  <div class="method-source-code"
1779
1781
  id="scale-alue-source">
1780
1782
  <pre>
1781
- <span class="ruby-comment cmt"># File lib/Query.rb, line 262</span>
1782
- 262: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, <span class="ruby-identifier">factors</span>)
1783
- 263: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:shortauto</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:longauto</span>
1784
- 264: <span class="ruby-comment cmt"># We try all possible units and store the resulting strings here.</span>
1785
- 265: <span class="ruby-identifier">options</span> = []
1786
- 266: <span class="ruby-comment cmt"># For each option we also save the delta between the String value and</span>
1787
- 267: <span class="ruby-comment cmt"># the original value.</span>
1788
- 268: <span class="ruby-identifier">delta</span> = []
1789
- 269: <span class="ruby-comment cmt"># For each of the units we can define a maximum value that the value</span>
1790
- 270: <span class="ruby-comment cmt"># should not exceed. nil means no limit.</span>
1791
- 271: <span class="ruby-identifier">max</span> = [ <span class="ruby-value">60</span>, <span class="ruby-value">48</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-value">8</span>, <span class="ruby-value">24</span>, <span class="ruby-keyword kw">nil</span> ]
1792
- 272:
1793
- 273: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1794
- 274: <span class="ruby-identifier">factors</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">factor</span><span class="ruby-operator">|</span>
1795
- 275: <span class="ruby-identifier">scaledValue</span> = <span class="ruby-identifier">value</span> * <span class="ruby-identifier">factor</span>
1796
- 276: <span class="ruby-identifier">str</span> = <span class="ruby-ivar">@numberFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">scaledValue</span>)
1797
- 277: <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">i</span>] = ((<span class="ruby-identifier">scaledValue</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">to_f</span>).<span class="ruby-identifier">abs</span> * <span class="ruby-value">1000</span>).<span class="ruby-identifier">to_i</span>
1798
- 278: <span class="ruby-comment cmt"># We ignore results that are 0 or exceed the maximum. To ensure that</span>
1799
- 279: <span class="ruby-comment cmt"># we have at least one result the unscaled value is always taken.</span>
1800
- 280: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">factor</span> <span class="ruby-operator">!=</span> <span class="ruby-value">1.0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-regexp re">/^[0.]*$/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">str</span>) <span class="ruby-operator">||</span>
1801
- 281: (<span class="ruby-identifier">max</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">scaledValue</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">max</span>[<span class="ruby-identifier">i</span>])
1802
- 282: <span class="ruby-identifier">options</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
1803
- 283: <span class="ruby-keyword kw">else</span>
1804
- 284: <span class="ruby-identifier">options</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">str</span>
1805
- 285: <span class="ruby-keyword kw">end</span>
1806
- 286: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1783
+ <span class="ruby-comment cmt"># File lib/Query.rb, line 254</span>
1784
+ 254: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">scaleValue</span>(<span class="ruby-identifier">value</span>, <span class="ruby-identifier">factors</span>)
1785
+ 255: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:shortauto</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:longauto</span>
1786
+ 256: <span class="ruby-comment cmt"># We try all possible units and store the resulting strings here.</span>
1787
+ 257: <span class="ruby-identifier">options</span> = []
1788
+ 258: <span class="ruby-comment cmt"># For each option we also save the delta between the String value and</span>
1789
+ 259: <span class="ruby-comment cmt"># the original value.</span>
1790
+ 260: <span class="ruby-identifier">delta</span> = []
1791
+ 261: <span class="ruby-comment cmt"># For each of the units we can define a maximum value that the value</span>
1792
+ 262: <span class="ruby-comment cmt"># should not exceed. nil means no limit.</span>
1793
+ 263: <span class="ruby-identifier">max</span> = [ <span class="ruby-value">60</span>, <span class="ruby-value">48</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-value">8</span>, <span class="ruby-value">24</span>, <span class="ruby-keyword kw">nil</span> ]
1794
+ 264:
1795
+ 265: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1796
+ 266: <span class="ruby-identifier">factors</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">factor</span><span class="ruby-operator">|</span>
1797
+ 267: <span class="ruby-identifier">scaledValue</span> = <span class="ruby-identifier">value</span> * <span class="ruby-identifier">factor</span>
1798
+ 268: <span class="ruby-identifier">str</span> = <span class="ruby-ivar">@numberFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">scaledValue</span>)
1799
+ 269: <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">i</span>] = ((<span class="ruby-identifier">scaledValue</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">to_f</span>).<span class="ruby-identifier">abs</span> * <span class="ruby-value">1000</span>).<span class="ruby-identifier">to_i</span>
1800
+ 270: <span class="ruby-comment cmt"># We ignore results that are 0 or exceed the maximum. To ensure that</span>
1801
+ 271: <span class="ruby-comment cmt"># we have at least one result the unscaled value is always taken.</span>
1802
+ 272: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">factor</span> <span class="ruby-operator">!=</span> <span class="ruby-value">1.0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-regexp re">/^[0.]*$/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">str</span>) <span class="ruby-operator">||</span>
1803
+ 273: (<span class="ruby-identifier">max</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">scaledValue</span> <span class="ruby-operator">&gt;</span> <span class="ruby-identifier">max</span>[<span class="ruby-identifier">i</span>])
1804
+ 274: <span class="ruby-identifier">options</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
1805
+ 275: <span class="ruby-keyword kw">else</span>
1806
+ 276: <span class="ruby-identifier">options</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">str</span>
1807
+ 277: <span class="ruby-keyword kw">end</span>
1808
+ 278: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1809
+ 279: <span class="ruby-keyword kw">end</span>
1810
+ 280:
1811
+ 281: <span class="ruby-comment cmt"># Find the value that is the closest to the original value. This will be</span>
1812
+ 282: <span class="ruby-comment cmt"># the default if all values have the same length.</span>
1813
+ 283: <span class="ruby-identifier">shortest</span> = <span class="ruby-value">2</span>
1814
+ 284: <span class="ruby-identifier">delta</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1815
+ 285: <span class="ruby-identifier">shortest</span> = <span class="ruby-identifier">j</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>][<span class="ruby-value">0</span>, <span class="ruby-value">2</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0.'</span> <span class="ruby-operator">&amp;&amp;</span>
1816
+ 286: <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">shortest</span>]
1807
1817
  287: <span class="ruby-keyword kw">end</span>
1808
1818
  288:
1809
- 289: <span class="ruby-comment cmt"># Find the value that is the closest to the original value. This will be</span>
1810
- 290: <span class="ruby-comment cmt"># the default if all values have the same length.</span>
1811
- 291: <span class="ruby-identifier">shortest</span> = <span class="ruby-value">2</span>
1812
- 292: <span class="ruby-identifier">delta</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1813
- 293: <span class="ruby-identifier">shortest</span> = <span class="ruby-identifier">j</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>][<span class="ruby-value">0</span>, <span class="ruby-value">2</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0.'</span> <span class="ruby-operator">&amp;&amp;</span>
1814
- 294: <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&lt;=</span> <span class="ruby-identifier">delta</span>[<span class="ruby-identifier">shortest</span>]
1815
- 295: <span class="ruby-keyword kw">end</span>
1816
- 296:
1817
- 297: <span class="ruby-comment cmt"># Find the shortest option.</span>
1818
- 298: <span class="ruby-value">6</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1819
- 299: <span class="ruby-identifier">shortest</span> = <span class="ruby-identifier">j</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>][<span class="ruby-value">0</span>, <span class="ruby-value">2</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0.'</span> <span class="ruby-operator">&amp;&amp;</span>
1820
- 300: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">shortest</span>].<span class="ruby-identifier">length</span>
1821
- 301: <span class="ruby-keyword kw">end</span>
1822
- 302:
1823
- 303: <span class="ruby-identifier">str</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">shortest</span>]
1824
- 304: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:longauto</span>
1825
- 305: <span class="ruby-comment cmt"># For the long units we handle singular and plural properly. For</span>
1826
- 306: <span class="ruby-comment cmt"># English we just need to append an 's', but this code will work for</span>
1827
- 307: <span class="ruby-comment cmt"># other languages as well.</span>
1828
- 308: <span class="ruby-identifier">units</span> = []
1829
- 309: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;1&quot;</span>
1830
- 310: <span class="ruby-identifier">units</span> = <span class="ruby-node">%( minute hour day week month year )</span>
1831
- 311: <span class="ruby-keyword kw">else</span>
1832
- 312: <span class="ruby-identifier">units</span> = <span class="ruby-node">%( minutes hours days weeks months years )</span>
1833
- 313: <span class="ruby-keyword kw">end</span>
1834
- 314: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">units</span>[<span class="ruby-identifier">shortest</span>]
1835
- 315: <span class="ruby-keyword kw">else</span>
1836
- 316: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">%( min h d w m y )</span>[<span class="ruby-identifier">shortest</span>]
1837
- 317: <span class="ruby-keyword kw">end</span>
1838
- 318: <span class="ruby-keyword kw">else</span>
1839
- 319: <span class="ruby-comment cmt"># For fixed units we just need to do the conversion. No unit is</span>
1840
- 320: <span class="ruby-comment cmt"># included.</span>
1841
- 321: <span class="ruby-identifier">units</span> = [ <span class="ruby-value">:minutes</span>, <span class="ruby-value">:hours</span>, <span class="ruby-value">:days</span>, <span class="ruby-value">:weeks</span>, <span class="ruby-value">:months</span>, <span class="ruby-value">:years</span> ]
1842
- 322: <span class="ruby-identifier">str</span> = <span class="ruby-ivar">@numberFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">value</span> * <span class="ruby-identifier">factors</span>[<span class="ruby-identifier">units</span>.<span class="ruby-identifier">index</span>(<span class="ruby-ivar">@loadUnit</span>)])
1843
- 323: <span class="ruby-keyword kw">end</span>
1844
- 324: <span class="ruby-identifier">str</span>
1845
- 325: <span class="ruby-keyword kw">end</span></pre>
1819
+ 289: <span class="ruby-comment cmt"># Find the shortest option.</span>
1820
+ 290: <span class="ruby-value">6</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">j</span><span class="ruby-operator">|</span>
1821
+ 291: <span class="ruby-identifier">shortest</span> = <span class="ruby-identifier">j</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>][<span class="ruby-value">0</span>, <span class="ruby-value">2</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'0.'</span> <span class="ruby-operator">&amp;&amp;</span>
1822
+ 292: <span class="ruby-identifier">options</span>[<span class="ruby-identifier">j</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">options</span>[<span class="ruby-identifier">shortest</span>].<span class="ruby-identifier">length</span>
1823
+ 293: <span class="ruby-keyword kw">end</span>
1824
+ 294:
1825
+ 295: <span class="ruby-identifier">str</span> = <span class="ruby-identifier">options</span>[<span class="ruby-identifier">shortest</span>]
1826
+ 296: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@loadUnit</span> <span class="ruby-operator">==</span> <span class="ruby-value">:longauto</span>
1827
+ 297: <span class="ruby-comment cmt"># For the long units we handle singular and plural properly. For</span>
1828
+ 298: <span class="ruby-comment cmt"># English we just need to append an 's', but this code will work for</span>
1829
+ 299: <span class="ruby-comment cmt"># other languages as well.</span>
1830
+ 300: <span class="ruby-identifier">units</span> = []
1831
+ 301: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;1&quot;</span>
1832
+ 302: <span class="ruby-identifier">units</span> = <span class="ruby-node">%( minute hour day week month year )</span>
1833
+ 303: <span class="ruby-keyword kw">else</span>
1834
+ 304: <span class="ruby-identifier">units</span> = <span class="ruby-node">%( minutes hours days weeks months years )</span>
1835
+ 305: <span class="ruby-keyword kw">end</span>
1836
+ 306: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">units</span>[<span class="ruby-identifier">shortest</span>]
1837
+ 307: <span class="ruby-keyword kw">else</span>
1838
+ 308: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">%( min h d w m y )</span>[<span class="ruby-identifier">shortest</span>]
1839
+ 309: <span class="ruby-keyword kw">end</span>
1840
+ 310: <span class="ruby-keyword kw">else</span>
1841
+ 311: <span class="ruby-comment cmt"># For fixed units we just need to do the conversion. No unit is</span>
1842
+ 312: <span class="ruby-comment cmt"># included.</span>
1843
+ 313: <span class="ruby-identifier">units</span> = [ <span class="ruby-value">:minutes</span>, <span class="ruby-value">:hours</span>, <span class="ruby-value">:days</span>, <span class="ruby-value">:weeks</span>, <span class="ruby-value">:months</span>, <span class="ruby-value">:years</span> ]
1844
+ 314: <span class="ruby-identifier">str</span> = <span class="ruby-ivar">@numberFormat</span>.<span class="ruby-identifier">format</span>(<span class="ruby-identifier">value</span> * <span class="ruby-identifier">factors</span>[<span class="ruby-identifier">units</span>.<span class="ruby-identifier">index</span>(<span class="ruby-ivar">@loadUnit</span>)])
1845
+ 315: <span class="ruby-keyword kw">end</span>
1846
+ 316: <span class="ruby-identifier">str</span>
1847
+ 317: <span class="ruby-keyword kw">end</span></pre>
1846
1848
  </div>
1847
1849
 
1848
1850
  </div>