taskjuggler 0.0.6 → 0.0.7

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 (545) hide show
  1. data/CHANGELOG +160 -0
  2. data/benchmarks/UTF-8-Strings.rb +58 -0
  3. data/data/css/tjreport.css +7 -2
  4. data/doc/AppConfig.html +10 -4
  5. data/doc/Arguments.html +10 -4
  6. data/doc/CHANGELOG.html +171 -5
  7. data/doc/COPYING.html +10 -4
  8. data/doc/Object.html +11 -107
  9. data/doc/README.html +10 -4
  10. data/doc/RuntimeConfig.html +10 -4
  11. data/doc/String.html +16 -11
  12. data/doc/StringIO.html +10 -4
  13. data/doc/TaskJuggler.html +506 -435
  14. data/doc/TaskJuggler/Account.html +10 -4
  15. data/doc/TaskJuggler/AccountAttribute.html +10 -4
  16. data/doc/TaskJuggler/AccountScenario.html +10 -4
  17. data/doc/TaskJuggler/Allocation.html +69 -60
  18. data/doc/TaskJuggler/AllocationAttribute.html +10 -4
  19. data/doc/TaskJuggler/AttributeBase.html +10 -4
  20. data/doc/TaskJuggler/AttributeDefinition.html +10 -4
  21. data/doc/TaskJuggler/BatchProcessor.html +202 -192
  22. data/doc/TaskJuggler/Booking.html +10 -4
  23. data/doc/TaskJuggler/BookingListAttribute.html +10 -4
  24. data/doc/TaskJuggler/BooleanAttribute.html +10 -4
  25. data/doc/TaskJuggler/CSVFile.html +10 -4
  26. data/doc/TaskJuggler/CellSettingPattern.html +10 -4
  27. data/doc/TaskJuggler/CellSettingPatternList.html +10 -4
  28. data/doc/TaskJuggler/Charge.html +10 -4
  29. data/doc/TaskJuggler/ChargeListAttribute.html +10 -4
  30. data/doc/TaskJuggler/ChargeSet.html +10 -4
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +10 -4
  32. data/doc/TaskJuggler/ColumnListAttribute.html +10 -4
  33. data/doc/TaskJuggler/ColumnTable.html +10 -4
  34. data/doc/TaskJuggler/Daemon.html +71 -52
  35. data/doc/TaskJuggler/DateAttribute.html +10 -4
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +10 -4
  37. data/doc/TaskJuggler/DependencyListAttribute.html +10 -4
  38. data/doc/TaskJuggler/DurationAttribute.html +10 -4
  39. data/doc/TaskJuggler/{MacroParser.html → FileList.html} +58 -173
  40. data/doc/TaskJuggler/{RichTextException.html → FileRecord.html} +59 -80
  41. data/doc/TaskJuggler/FixnumAttribute.html +10 -4
  42. data/doc/TaskJuggler/FlagListAttribute.html +10 -4
  43. data/doc/TaskJuggler/FloatAttribute.html +10 -4
  44. data/doc/TaskJuggler/FormatListAttribute.html +10 -4
  45. data/doc/TaskJuggler/GanttChart.html +10 -4
  46. data/doc/TaskJuggler/GanttContainer.html +14 -8
  47. data/doc/TaskJuggler/GanttHeader.html +10 -4
  48. data/doc/TaskJuggler/GanttHeaderScaleItem.html +10 -4
  49. data/doc/TaskJuggler/GanttLine.html +29 -24
  50. data/doc/TaskJuggler/GanttLoadStack.html +10 -4
  51. data/doc/TaskJuggler/GanttMilestone.html +10 -4
  52. data/doc/TaskJuggler/GanttRouter.html +10 -4
  53. data/doc/TaskJuggler/GanttTaskBar.html +20 -10
  54. data/doc/TaskJuggler/HTMLDocument.html +10 -4
  55. data/doc/TaskJuggler/HTMLGraphics.html +10 -4
  56. data/doc/TaskJuggler/Interval.html +10 -4
  57. data/doc/TaskJuggler/IntervalListAttribute.html +10 -4
  58. data/doc/TaskJuggler/JobInfo.html +10 -4
  59. data/doc/TaskJuggler/Journal.html +227 -160
  60. data/doc/TaskJuggler/JournalEntry.html +10 -4
  61. data/doc/TaskJuggler/JournalEntryList.html +158 -72
  62. data/doc/TaskJuggler/KeywordArray.html +21 -9
  63. data/doc/TaskJuggler/KeywordDocumentation.html +612 -475
  64. data/doc/TaskJuggler/Limits.html +13 -8
  65. data/doc/TaskJuggler/Limits/Limit.html +10 -4
  66. data/doc/TaskJuggler/LimitsAttribute.html +10 -4
  67. data/doc/TaskJuggler/ListAttributeBase.html +10 -4
  68. data/doc/TaskJuggler/Log.html +10 -4
  69. data/doc/TaskJuggler/LogFile.html +10 -4
  70. data/doc/TaskJuggler/LogicalAttribute.html +10 -4
  71. data/doc/TaskJuggler/LogicalExpression.html +11 -5
  72. data/doc/TaskJuggler/LogicalExpressionAttribute.html +10 -4
  73. data/doc/TaskJuggler/LogicalFlag.html +10 -4
  74. data/doc/TaskJuggler/LogicalFunction.html +132 -124
  75. data/doc/TaskJuggler/LogicalOperation.html +10 -4
  76. data/doc/TaskJuggler/Macro.html +16 -10
  77. data/doc/TaskJuggler/MacroTable.html +44 -38
  78. data/doc/TaskJuggler/ManagerResponsibilities.html +10 -4
  79. data/doc/TaskJuggler/ManagerStatusRecord.html +10 -4
  80. data/doc/TaskJuggler/Message.html +92 -68
  81. data/doc/TaskJuggler/MessageHandler.html +349 -28
  82. data/doc/TaskJuggler/Navigator.html +10 -4
  83. data/doc/TaskJuggler/NavigatorElement.html +10 -4
  84. data/doc/TaskJuggler/NikuProject.html +10 -4
  85. data/doc/TaskJuggler/NikuReport.html +10 -4
  86. data/doc/TaskJuggler/NikuResource.html +10 -4
  87. data/doc/TaskJuggler/NodeListAttribute.html +10 -4
  88. data/doc/TaskJuggler/OnShiftCache.html +10 -4
  89. data/doc/TaskJuggler/ProcessIntercom.html +118 -111
  90. data/doc/TaskJuggler/ProcessIntercomIface.html +75 -22
  91. data/doc/TaskJuggler/Project.html +886 -913
  92. data/doc/TaskJuggler/ProjectBroker.html +442 -331
  93. data/doc/TaskJuggler/ProjectBrokerIface.html +95 -38
  94. data/doc/TaskJuggler/ProjectFileParser.html +320 -317
  95. data/doc/TaskJuggler/ProjectFileScanner.html +336 -339
  96. data/doc/TaskJuggler/ProjectRecord.html +119 -56
  97. data/doc/TaskJuggler/ProjectServer.html +282 -237
  98. data/doc/TaskJuggler/ProjectServerIface.html +45 -39
  99. data/doc/TaskJuggler/PropertyAttribute.html +10 -4
  100. data/doc/TaskJuggler/PropertyList.html +177 -173
  101. data/doc/TaskJuggler/PropertySet.html +11 -5
  102. data/doc/TaskJuggler/PropertyTreeNode.html +194 -191
  103. data/doc/TaskJuggler/Query.html +280 -256
  104. data/doc/TaskJuggler/RTFHandlers.html +10 -4
  105. data/doc/TaskJuggler/RTFNavigator.html +33 -26
  106. data/doc/TaskJuggler/RTFQuery.html +135 -169
  107. data/doc/TaskJuggler/RTFReport.html +63 -56
  108. data/doc/TaskJuggler/RTFReportLink.html +58 -47
  109. data/doc/TaskJuggler/RTFWithQuerySupport.html +666 -0
  110. data/doc/TaskJuggler/RealFormat.html +10 -4
  111. data/doc/TaskJuggler/RealFormatAttribute.html +10 -4
  112. data/doc/TaskJuggler/ReferenceAttribute.html +10 -4
  113. data/doc/TaskJuggler/Report.html +333 -290
  114. data/doc/TaskJuggler/ReportBase.html +182 -174
  115. data/doc/TaskJuggler/ReportContext.html +10 -4
  116. data/doc/TaskJuggler/ReportServer.html +144 -126
  117. data/doc/TaskJuggler/ReportServerIface.html +50 -44
  118. data/doc/TaskJuggler/ReportServerRecord.html +38 -32
  119. data/doc/TaskJuggler/ReportServlet.html +144 -137
  120. data/doc/TaskJuggler/ReportTable.html +10 -4
  121. data/doc/TaskJuggler/ReportTableCell.html +169 -164
  122. data/doc/TaskJuggler/ReportTableColumn.html +10 -4
  123. data/doc/TaskJuggler/ReportTableLegend.html +10 -4
  124. data/doc/TaskJuggler/ReportTableLine.html +10 -4
  125. data/doc/TaskJuggler/Resource.html +121 -115
  126. data/doc/TaskJuggler/ResourceListAttribute.html +10 -4
  127. data/doc/TaskJuggler/ResourceListRE.html +10 -4
  128. data/doc/TaskJuggler/ResourceScenario.html +13 -7
  129. data/doc/TaskJuggler/RichText.html +61 -37
  130. data/doc/TaskJuggler/RichTextAttribute.html +10 -4
  131. data/doc/TaskJuggler/RichTextDocument.html +91 -81
  132. data/doc/TaskJuggler/RichTextElement.html +378 -317
  133. data/doc/TaskJuggler/RichTextFunctionExample.html +10 -4
  134. data/doc/TaskJuggler/RichTextFunctionHandler.html +16 -11
  135. data/doc/TaskJuggler/RichTextImage.html +10 -4
  136. data/doc/TaskJuggler/RichTextIntermediate.html +138 -70
  137. data/doc/TaskJuggler/RichTextParser.html +48 -40
  138. data/doc/TaskJuggler/RichTextScanner.html +328 -906
  139. data/doc/TaskJuggler/RichTextSnip.html +59 -57
  140. data/doc/TaskJuggler/RichTextSyntaxRules.html +458 -369
  141. data/doc/TaskJuggler/Scenario.html +10 -4
  142. data/doc/TaskJuggler/ScenarioData.html +33 -30
  143. data/doc/TaskJuggler/ScenarioListAttribute.html +10 -4
  144. data/doc/TaskJuggler/Scoreboard.html +10 -4
  145. data/doc/TaskJuggler/SheetHandlerBase.html +315 -191
  146. data/doc/TaskJuggler/SheetReceiver.html +334 -313
  147. data/doc/TaskJuggler/SheetSender.html +10 -4
  148. data/doc/TaskJuggler/Shift.html +10 -4
  149. data/doc/TaskJuggler/ShiftAssignment.html +10 -4
  150. data/doc/TaskJuggler/ShiftAssignments.html +10 -4
  151. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +10 -4
  152. data/doc/TaskJuggler/ShiftScenario.html +10 -4
  153. data/doc/TaskJuggler/SimpleQueryExpander.html +697 -0
  154. data/doc/TaskJuggler/SortListAttribute.html +10 -4
  155. data/doc/TaskJuggler/SourceFileInfo.html +10 -4
  156. data/doc/TaskJuggler/StatusSheetReceiver.html +10 -4
  157. data/doc/TaskJuggler/StatusSheetReport.html +10 -4
  158. data/doc/TaskJuggler/StatusSheetSender.html +10 -4
  159. data/doc/TaskJuggler/StringAttribute.html +10 -4
  160. data/doc/TaskJuggler/SymbolAttribute.html +10 -4
  161. data/doc/TaskJuggler/SyntaxReference.html +260 -230
  162. data/doc/TaskJuggler/TOCEntry.html +99 -42
  163. data/doc/TaskJuggler/TSResourceRecord.html +10 -4
  164. data/doc/TaskJuggler/TSTaskRecord.html +10 -4
  165. data/doc/TaskJuggler/TableColumnDefinition.html +10 -4
  166. data/doc/TaskJuggler/TableOfContents.html +54 -12
  167. data/doc/TaskJuggler/TableReport.html +877 -872
  168. data/doc/TaskJuggler/Task.html +117 -68
  169. data/doc/TaskJuggler/TaskDependency.html +10 -4
  170. data/doc/TaskJuggler/TaskListAttribute.html +10 -4
  171. data/doc/TaskJuggler/TaskListRE.html +10 -4
  172. data/doc/TaskJuggler/TaskScenario.html +1681 -1563
  173. data/doc/TaskJuggler/TextFormatter.html +10 -4
  174. data/doc/TaskJuggler/TextParser.html +567 -534
  175. data/doc/TaskJuggler/TextParser/Pattern.html +128 -118
  176. data/doc/TaskJuggler/TextParser/Rule.html +26 -15
  177. data/doc/TaskJuggler/TextParser/StackElement.html +10 -4
  178. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +22 -16
  179. data/doc/TaskJuggler/TextParser/TokenDoc.html +10 -4
  180. data/doc/TaskJuggler/TextReport.html +15 -6
  181. data/doc/TaskJuggler/TextScanner.html +319 -287
  182. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +16 -10
  183. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +23 -17
  184. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +17 -11
  185. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  186. data/doc/TaskJuggler/TimeSheet.html +138 -175
  187. data/doc/TaskJuggler/TimeSheetReceiver.html +10 -4
  188. data/doc/TaskJuggler/TimeSheetRecord.html +65 -58
  189. data/doc/TaskJuggler/TimeSheetReport.html +47 -42
  190. data/doc/TaskJuggler/TimeSheetSender.html +10 -4
  191. data/doc/TaskJuggler/TimeSheetSummary.html +91 -83
  192. data/doc/TaskJuggler/TimeSheets.html +22 -16
  193. data/doc/TaskJuggler/Tj3AppBase.html +10 -4
  194. data/doc/TaskJuggler/Tj3Client.html +399 -365
  195. data/doc/TaskJuggler/Tj3Daemon.html +107 -94
  196. data/doc/TaskJuggler/Tj3SheetAppBase.html +10 -4
  197. data/doc/TaskJuggler/Tj3SsReceiver.html +10 -4
  198. data/doc/TaskJuggler/Tj3SsSender.html +10 -4
  199. data/doc/TaskJuggler/Tj3TsReceiver.html +10 -4
  200. data/doc/TaskJuggler/Tj3TsSender.html +10 -4
  201. data/doc/TaskJuggler/Tj3TsSummary.html +10 -4
  202. data/doc/TaskJuggler/TjException.html +10 -4
  203. data/doc/TaskJuggler/TjTime.html +145 -140
  204. data/doc/TaskJuggler/TjpExample.html +10 -4
  205. data/doc/TaskJuggler/TjpExportRE.html +122 -118
  206. data/doc/TaskJuggler/TjpSyntaxRules.html +4065 -4052
  207. data/doc/TaskJuggler/URLParameter.html +10 -4
  208. data/doc/TaskJuggler/UserManual.html +162 -155
  209. data/doc/TaskJuggler/VimSyntax.html +1028 -0
  210. data/doc/TaskJuggler/WebServer.html +45 -27
  211. data/doc/TaskJuggler/WorkingHours.html +10 -4
  212. data/doc/TaskJuggler/WorkingHoursAttribute.html +10 -4
  213. data/doc/TaskJuggler/XMLBlob.html +10 -4
  214. data/doc/TaskJuggler/XMLComment.html +10 -4
  215. data/doc/TaskJuggler/XMLDocument.html +10 -4
  216. data/doc/TaskJuggler/XMLElement.html +10 -4
  217. data/doc/TaskJuggler/XMLNamedText.html +10 -4
  218. data/doc/TaskJuggler/XMLText.html +10 -4
  219. data/doc/index.html +735 -677
  220. data/doc/lib/AccountScenario_rb.html +1 -1
  221. data/doc/lib/Account_rb.html +1 -1
  222. data/doc/lib/Allocation_rb.html +1 -1
  223. data/doc/lib/AppConfig_rb.html +1 -1
  224. data/doc/lib/AttributeBase_rb.html +1 -1
  225. data/doc/lib/AttributeDefinition_rb.html +1 -1
  226. data/doc/lib/Attributes_rb.html +1 -1
  227. data/doc/lib/BatchProcessor_rb.html +1 -1
  228. data/doc/lib/Booking_rb.html +1 -1
  229. data/doc/lib/ChargeSet_rb.html +1 -1
  230. data/doc/lib/Charge_rb.html +1 -1
  231. data/doc/lib/{Message_rb.html → FileList_rb.html} +3 -5
  232. data/doc/lib/HTMLDocument_rb.html +1 -1
  233. data/doc/lib/Interval_rb.html +1 -1
  234. data/doc/lib/Journal_rb.html +1 -1
  235. data/doc/lib/KeywordArray_rb.html +1 -1
  236. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  237. data/doc/lib/Limits_rb.html +1 -1
  238. data/doc/lib/LogFile_rb.html +1 -1
  239. data/doc/lib/Log_rb.html +1 -1
  240. data/doc/lib/LogicalExpression_rb.html +1 -1
  241. data/doc/lib/LogicalFunction_rb.html +1 -1
  242. data/doc/lib/LogicalOperation_rb.html +1 -1
  243. data/doc/lib/MacroTable_rb.html +1 -3
  244. data/doc/lib/MessageHandler_rb.html +1 -1
  245. data/doc/lib/ProjectFileParser_rb.html +1 -1
  246. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  247. data/doc/lib/Project_rb.html +4 -2
  248. data/doc/lib/PropertyList_rb.html +1 -1
  249. data/doc/lib/PropertySet_rb.html +1 -1
  250. data/doc/lib/PropertyTreeNode_rb.html +1 -1
  251. data/doc/lib/Query_rb.html +1 -1
  252. data/doc/lib/RTFHandlers_rb.html +1 -1
  253. data/doc/lib/RTFNavigator_rb.html +1 -1
  254. data/doc/lib/RTFQuery_rb.html +2 -2
  255. data/doc/lib/RTFReportLink_rb.html +4 -2
  256. data/doc/lib/RTFReport_rb.html +1 -1
  257. data/doc/lib/{MacroParser_rb.html → RTFWithQuerySupport_rb.html} +4 -6
  258. data/doc/lib/RealFormat_rb.html +1 -1
  259. data/doc/lib/ResourceScenario_rb.html +1 -1
  260. data/doc/lib/Resource_rb.html +1 -1
  261. data/doc/lib/RichTextDocument_rb.html +1 -1
  262. data/doc/lib/RichTextElement_rb.html +1 -1
  263. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  264. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  265. data/doc/lib/RichTextParser_rb.html +1 -1
  266. data/doc/lib/RichTextScanner_rb.html +3 -1
  267. data/doc/lib/RichTextSnip_rb.html +1 -1
  268. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  269. data/doc/lib/RichText_rb.html +3 -1
  270. data/doc/lib/RuntimeConfig_rb.html +1 -1
  271. data/doc/lib/ScenarioData_rb.html +2 -2
  272. data/doc/lib/Scenario_rb.html +1 -1
  273. data/doc/lib/Scoreboard_rb.html +1 -1
  274. data/doc/lib/SheetHandlerBase_rb.html +5 -1
  275. data/doc/lib/SheetReceiver_rb.html +3 -1
  276. data/doc/lib/SheetSender_rb.html +1 -1
  277. data/doc/lib/ShiftAssignments_rb.html +1 -1
  278. data/doc/lib/ShiftScenario_rb.html +1 -1
  279. data/doc/lib/Shift_rb.html +1 -1
  280. data/doc/lib/SimpleQueryExpander_rb.html +67 -0
  281. data/doc/lib/SourceFileInfo_rb.html +1 -1
  282. data/doc/lib/StatusSheetReceiver_rb.html +1 -1
  283. data/doc/lib/StatusSheetSender_rb.html +1 -1
  284. data/doc/lib/SyntaxReference_rb.html +1 -1
  285. data/doc/lib/TOCEntry_rb.html +1 -1
  286. data/doc/lib/TableColumnDefinition_rb.html +1 -1
  287. data/doc/lib/TableOfContents_rb.html +1 -1
  288. data/doc/lib/TaskDependency_rb.html +1 -1
  289. data/doc/lib/TaskJuggler_rb.html +1 -1
  290. data/doc/lib/TaskScenario_rb.html +1 -1
  291. data/doc/lib/Task_rb.html +1 -1
  292. data/doc/lib/TextFormatter_rb.html +1 -1
  293. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  294. data/doc/lib/TextParser/Rule_rb.html +1 -1
  295. data/doc/lib/TextParser/StackElement_rb.html +1 -1
  296. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  297. data/doc/lib/TextParser_rb.html +3 -1
  298. data/doc/lib/TextScanner_rb.html +1 -3
  299. data/doc/lib/TimeSheetReceiver_rb.html +1 -1
  300. data/doc/lib/TimeSheetSender_rb.html +1 -1
  301. data/doc/lib/TimeSheetSummary_rb.html +1 -1
  302. data/doc/lib/TimeSheets_rb.html +1 -1
  303. data/doc/lib/Tj3AppBase_rb.html +1 -1
  304. data/doc/lib/Tj3Config_rb.html +1 -1
  305. data/doc/lib/Tj3SheetAppBase_rb.html +1 -1
  306. data/doc/lib/TjException_rb.html +1 -1
  307. data/doc/lib/TjTime_rb.html +1 -1
  308. data/doc/lib/TjpExample_rb.html +1 -1
  309. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  310. data/doc/lib/URLParameter_rb.html +1 -1
  311. data/doc/lib/UTF8String_rb.html +1 -1
  312. data/doc/lib/UserManual_rb.html +1 -1
  313. data/doc/lib/{ruby-signal-bug_rb.html → VimSyntax_rb.html} +17 -4
  314. data/doc/lib/WorkingHours_rb.html +1 -1
  315. data/doc/lib/XMLDocument_rb.html +1 -1
  316. data/doc/lib/XMLElement_rb.html +1 -1
  317. data/doc/lib/daemon/Daemon_rb.html +1 -1
  318. data/doc/lib/daemon/ProcessIntercom_rb.html +1 -1
  319. data/doc/lib/daemon/ProjectBroker_rb.html +1 -1
  320. data/doc/lib/daemon/ProjectServer_rb.html +1 -1
  321. data/doc/lib/daemon/ReportServer_rb.html +1 -3
  322. data/doc/lib/daemon/WebServer_rb.html +1 -1
  323. data/doc/lib/deep_copy_rb.html +1 -1
  324. data/doc/lib/reports/CSVFile_rb.html +1 -1
  325. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  326. data/doc/lib/reports/GanttChart_rb.html +1 -1
  327. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  328. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  329. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  330. data/doc/lib/reports/GanttLine_rb.html +1 -1
  331. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  332. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  333. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  334. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  335. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  336. data/doc/lib/reports/Navigator_rb.html +1 -1
  337. data/doc/lib/reports/NikuReport_rb.html +1 -1
  338. data/doc/lib/reports/ReportBase_rb.html +1 -1
  339. data/doc/lib/reports/ReportContext_rb.html +1 -1
  340. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  341. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  342. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  343. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  344. data/doc/lib/reports/ReportTable_rb.html +1 -1
  345. data/doc/lib/reports/Report_rb.html +1 -1
  346. data/doc/lib/reports/ResourceListRE_rb.html +1 -1
  347. data/doc/lib/reports/StatusSheetReport_rb.html +1 -1
  348. data/doc/lib/reports/TableReport_rb.html +1 -1
  349. data/doc/lib/reports/TaskListRE_rb.html +1 -1
  350. data/doc/lib/reports/TextReport_rb.html +1 -1
  351. data/doc/lib/reports/TimeSheetReport_rb.html +1 -1
  352. data/doc/lib/reports/TjpExportRE_rb.html +1 -1
  353. data/doc/lib/taskjuggler3_rb.html +1 -1
  354. data/doc/lib/tj3client_rb.html +1 -1
  355. data/doc/lib/tj3d_rb.html +1 -1
  356. data/doc/lib/tj3man_rb.html +1 -1
  357. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  358. data/doc/lib/tj3ss_sender_rb.html +1 -1
  359. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  360. data/doc/lib/tj3ts_sender_rb.html +1 -1
  361. data/doc/lib/tj3ts_summary_rb.html +1 -1
  362. data/lib/Allocation.rb +8 -5
  363. data/lib/BatchProcessor.rb +7 -3
  364. data/lib/FileList.rb +58 -0
  365. data/lib/Journal.rb +73 -33
  366. data/lib/KeywordArray.rb +4 -0
  367. data/lib/KeywordDocumentation.rb +45 -11
  368. data/lib/Limits.rb +0 -1
  369. data/lib/LogicalExpression.rb +1 -1
  370. data/lib/LogicalFunction.rb +14 -12
  371. data/lib/MacroTable.rb +3 -4
  372. data/lib/MessageHandler.rb +136 -7
  373. data/lib/Project.rb +72 -86
  374. data/lib/ProjectFileParser.rb +30 -33
  375. data/lib/ProjectFileScanner.rb +7 -16
  376. data/lib/PropertyList.rb +25 -27
  377. data/lib/PropertySet.rb +1 -1
  378. data/lib/PropertyTreeNode.rb +9 -12
  379. data/lib/Query.rb +5 -4
  380. data/lib/RTFNavigator.rb +2 -1
  381. data/lib/RTFQuery.rb +4 -11
  382. data/lib/RTFReport.rb +2 -1
  383. data/lib/RTFReportLink.rb +10 -4
  384. data/lib/RTFWithQuerySupport.rb +45 -0
  385. data/lib/Resource.rb +20 -20
  386. data/lib/ResourceScenario.rb +3 -3
  387. data/lib/RichText.rb +15 -7
  388. data/lib/RichTextDocument.rb +8 -4
  389. data/lib/RichTextElement.rb +35 -12
  390. data/lib/RichTextFunctionHandler.rb +11 -12
  391. data/lib/RichTextParser.rb +5 -3
  392. data/lib/RichTextScanner.rb +144 -565
  393. data/lib/RichTextSnip.rb +3 -7
  394. data/lib/RichTextSyntaxRules.rb +51 -32
  395. data/lib/ScenarioData.rb +16 -25
  396. data/lib/SheetHandlerBase.rb +59 -2
  397. data/lib/SheetReceiver.rb +36 -18
  398. data/lib/SimpleQueryExpander.rb +58 -0
  399. data/lib/SyntaxReference.rb +9 -5
  400. data/lib/TOCEntry.rb +2 -0
  401. data/lib/TableOfContents.rb +4 -0
  402. data/lib/Task.rb +23 -12
  403. data/lib/TaskJuggler.rb +72 -33
  404. data/lib/TaskScenario.rb +131 -53
  405. data/lib/TextParser.rb +43 -30
  406. data/lib/TextParser/Pattern.rb +17 -13
  407. data/lib/TextParser/Rule.rb +5 -0
  408. data/lib/TextScanner.rb +46 -25
  409. data/lib/TimeSheetSummary.rb +9 -7
  410. data/lib/TimeSheets.rb +14 -23
  411. data/lib/Tj3Config.rb +1 -1
  412. data/lib/TjTime.rb +1 -2
  413. data/lib/TjpSyntaxRules.rb +128 -104
  414. data/lib/UTF8String.rb +0 -1
  415. data/lib/UserManual.rb +5 -4
  416. data/lib/VimSyntax.rb +223 -0
  417. data/lib/daemon/Daemon.rb +9 -0
  418. data/lib/daemon/ProcessIntercom.rb +19 -4
  419. data/lib/daemon/ProjectBroker.rb +149 -68
  420. data/lib/daemon/ProjectServer.rb +119 -79
  421. data/lib/daemon/ReportServer.rb +42 -31
  422. data/lib/daemon/WebServer.rb +21 -2
  423. data/lib/deep_copy.rb +1 -1
  424. data/lib/reports/GanttContainer.rb +2 -2
  425. data/lib/reports/GanttLine.rb +2 -3
  426. data/lib/reports/GanttTaskBar.rb +7 -3
  427. data/lib/reports/Report.rb +62 -57
  428. data/lib/reports/ReportBase.rb +6 -4
  429. data/lib/reports/ReportTableCell.rb +13 -14
  430. data/lib/reports/TableReport.rb +2 -1
  431. data/lib/reports/TextReport.rb +3 -0
  432. data/lib/reports/TimeSheetReport.rb +2 -3
  433. data/lib/reports/TjpExportRE.rb +0 -2
  434. data/lib/tj3client.rb +31 -3
  435. data/lib/tj3d.rb +8 -1
  436. data/manual/Day_To_Day_Juggling +2 -95
  437. data/manual/How_To_Contribute +2 -1
  438. data/manual/Rich_Text_Attributes +37 -3
  439. data/manual/Software +203 -0
  440. data/test/MessageChecker.rb +4 -4
  441. data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
  442. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  443. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  444. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  445. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  446. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  447. data/test/TestSuite/HTML-Reports/css/tjmanual.css +14 -0
  448. data/test/TestSuite/HTML-Reports/css/tjreport.css +233 -21
  449. data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
  450. data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
  451. data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +20 -20
  452. data/test/TestSuite/ReportGenerator/Correct/Alerts.tjp +48 -0
  453. data/test/TestSuite/ReportGenerator/Correct/Macros.tjp +57 -0
  454. data/test/TestSuite/ReportGenerator/Correct/refs/Alerts-1.csv +386 -0
  455. data/test/TestSuite/ReportGenerator/Correct/refs/Macros-1.csv +6 -0
  456. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjmanual.css +0 -0
  457. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjreport.css +0 -0
  458. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/details.png +0 -0
  459. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-green.png +0 -0
  460. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-red.png +0 -0
  461. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-yellow.png +0 -0
  462. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resource.png +0 -0
  463. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resourcegroup.png +0 -0
  464. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/task.png +0 -0
  465. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/taskgroup.png +0 -0
  466. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-down.png +0 -0
  467. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-flat.png +0 -0
  468. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-up.png +0 -0
  469. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +26 -0
  470. data/test/TestSuite/ReportGenerator/{Correct → Errors}/scripts/wz_tooltip.js +0 -0
  471. data/test/TestSuite/Scheduler/Correct/Allocate.html +3210 -0
  472. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +19 -0
  473. data/test/TestSuite/Scheduler/Correct/Container.html +22 -22
  474. data/test/TestSuite/Scheduler/Correct/Limits.html +4964 -0
  475. data/test/TestSuite/Scheduler/Correct/Shift.html +1707 -417
  476. data/test/TestSuite/Scheduler/Correct/Shift2.html +9 -9
  477. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +6 -2
  478. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +66 -0
  479. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +407 -0
  480. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  481. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  482. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  483. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  484. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  485. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  486. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  487. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  488. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  489. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  490. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  491. data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +1 -1
  492. data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +1 -1
  493. data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +1 -1
  494. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +1 -1
  495. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +1 -1
  496. data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +1 -1
  497. data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +1 -1
  498. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +1 -1
  499. data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +1 -1
  500. data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +1 -1
  501. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +1 -1
  502. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +1 -1
  503. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +1 -1
  504. data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +1 -1
  505. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +1301 -0
  506. data/test/TestSuite/Scheduler/Errors/task_pred_before.tjp +11 -0
  507. data/test/TestSuite/Scheduler/Errors/task_pred_before_gd.tjp +11 -0
  508. data/test/TestSuite/Scheduler/Errors/task_pred_before_gl.tjp +11 -0
  509. data/test/TestSuite/Scheduler/Errors/task_succ_after.tjp +12 -0
  510. data/test/TestSuite/Scheduler/Errors/task_succ_after_gd.tjp +12 -0
  511. data/test/TestSuite/Scheduler/Errors/task_succ_after_gl.tjp +12 -0
  512. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  513. data/test/TestSuite/StatusSheets/resrep.tji +7 -0
  514. data/test/TestSuite/StatusSheets/run +6 -4
  515. data/test/TestSuite/StatusSheets/tj3d.log +312 -0
  516. data/test/TestSuite/Syntax/Correct/Managers.html +263 -0
  517. data/test/TestSuite/Syntax/Correct/tutorial.tjp +1 -2
  518. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  519. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +1 -1
  520. data/test/TestSuite/TimeSheets/acceptable_intervals +1 -0
  521. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  522. data/test/TestSuite/TimeSheets/run +6 -5
  523. data/test/TestSuite/TimeSheets/statussheets.log +1 -0
  524. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  525. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  526. data/test/test_PropertySet.rb +2 -2
  527. data/test/test_RichText.rb +178 -387
  528. data/test/test_SimpleQueryExpander.rb +55 -0
  529. data/test/test_deep_copy.rb +2 -2
  530. metadata +854 -834
  531. data/lib/MacroParser.rb +0 -77
  532. data/lib/Message.rb +0 -56
  533. data/lib/ruby-signal-bug.rb +0 -43
  534. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  535. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  536. data/test/TestSuite/ReportGenerator/Correct/Journal.html +0 -63
  537. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  538. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  540. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  541. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  542. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  543. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  544. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  545. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
@@ -33,9 +33,10 @@ class TaskJuggler
33
33
  # Create the parser object. _messageHandler_ is a TjMessageHandler that is
34
34
  # used for error reporting.
35
35
  def initialize(messageHandler)
36
- super()
36
+ super
37
+
38
+ @tjMessageHandler = messageHandler
37
39
 
38
- @messageHandler = messageHandler
39
40
  # Define the token types that the ProjectFileScanner may return for
40
41
  # variable elements.
41
42
  @variables = %w( INTEGER FLOAT DATE TIME STRING LITERAL ID ID_WITH_COLON
@@ -49,17 +50,13 @@ class TaskJuggler
49
50
  # Call this function with the master file to start processing a TJP file or
50
51
  # a set of TJP files.
51
52
  def open(file, master, fileNameIsBuffer = false)
52
- begin
53
- @scanner = ProjectFileScanner.new(file, @messageHandler)
54
- # We need the ProjectFileScanner object for error reporting.
55
- if master && !fileNameIsBuffer && file != '.' && file[-4, 4] != '.tjp'
56
- error('illegal_extension', "Project file name must end with " +
57
- '\'.tjp\' extension')
58
- end
59
- @scanner.open(fileNameIsBuffer)
60
- rescue StandardError
61
- error('file_open', $!.message)
53
+ @scanner = ProjectFileScanner.new(file, @messageHandler)
54
+ # We need the ProjectFileScanner object for error reporting.
55
+ if master && !fileNameIsBuffer && file != '.' && file[-4, 4] != '.tjp'
56
+ error('illegal_extension', "Project file name must end with " +
57
+ '\'.tjp\' extension')
62
58
  end
59
+ @scanner.open(fileNameIsBuffer)
63
60
 
64
61
  @property = nil
65
62
  @scenarioIdx = 0
@@ -69,8 +66,7 @@ class TaskJuggler
69
66
  # Call this function to cleanup the parser structures after the file
70
67
  # processing has been completed.
71
68
  def close
72
- res = @scanner.close
73
- res
69
+ @scanner.close
74
70
  end
75
71
 
76
72
  # This function will deliver the next token from the scanner. A token is a
@@ -104,9 +100,9 @@ class TaskJuggler
104
100
  end
105
101
 
106
102
  def parseReportAttributes(report, attributes)
103
+ open(attributes, false, true)
107
104
  @property = report
108
105
  @project = report.project
109
- open(attributes, false, true)
110
106
  parse('reportAttributes')
111
107
  end
112
108
 
@@ -129,8 +125,8 @@ class TaskJuggler
129
125
  if @property.container?
130
126
  error('container_attribute',
131
127
  "The attribute #{attribute} may not be used for this property " +
132
- 'after sub properties have been added.', @property,
133
- @sourceFileInfo[0])
128
+ 'after sub properties have been added.', @sourceFileInfo[0],
129
+ @property)
134
130
  end
135
131
  end
136
132
 
@@ -154,15 +150,15 @@ class TaskJuggler
154
150
  def checkBooking(task, resource)
155
151
  unless task.leaf?
156
152
  error('booking_no_leaf', "#{task.fullId} is not a leaf task",
157
- task, @sourceFileInfo[0])
153
+ @sourceFileInfo[0], task)
158
154
  end
159
155
  if task['milestone', @scenarioIdx]
160
156
  error('booking_milestone', "You cannot add bookings to a milestone",
161
- task, @sourceFileInfo[0])
157
+ @sourceFileInfo[0], task)
162
158
  end
163
159
  unless resource.leaf?
164
160
  error('booking_group', "You cannot book a group resource",
165
- task, @sourceFileInfo[0])
161
+ @sourceFileInfo[0], task)
166
162
  end
167
163
  end
168
164
 
@@ -218,19 +214,20 @@ class TaskJuggler
218
214
  # by _tokenSet_.
219
215
  def newRichText(text, tokenSet = nil)
220
216
  sfi = sourceFileInfo
221
- begin
222
- rText = RichText.new(text, RTFHandlers.create(@project, sfi))
223
- rti = rText.generateIntermediateFormat( [ 0, 0, 0], tokenSet)
224
- rti.sectionNumbers = false
225
- rescue RichTextException => msg
226
- sfi = SourceFileInfo.new(sfi.fileName, sfi.lineNo + msg.lineNo - 1, 0)
227
- message = Message.new(msg.id, 'error', msg.text + "\n" + msg.line,
228
- @property, nil, sfi)
229
- @messageHandler.send(message)
230
-
231
- # An empty strings signals an already reported error
232
- raise TjException.new, ''
217
+ rText = RichText.new(text, RTFHandlers.create(@project, sfi))
218
+ unless (rti = rText.generateIntermediateFormat( [ 0, 0, 0], tokenSet))
219
+ rText.messageHandler.messages.each do |msg|
220
+ # Map the SourceFileInfo of the RichText back to the original
221
+ # location in the input file.
222
+ sfi = SourceFileInfo.new(sfi.fileName,
223
+ sfi.lineNo + msg.sourceFileInfo.lineNo - 1,
224
+ 0)
225
+ # Then replay the error message.
226
+ @messageHandler.addMessage(msg.type, msg.id, msg.message, sfi,
227
+ msg.line)
228
+ end
233
229
  end
230
+ rti.sectionNumbers = false
234
231
  rti
235
232
  end
236
233
 
@@ -429,8 +426,8 @@ class TaskJuggler
429
426
  # variables according to the now top-entry.
430
427
  def popFileStack
431
428
  @fileStack.pop
429
+ stackEntry = @fileStack.last
432
430
  @fileStackVariables.each do |var|
433
- stackEntry = @fileStack.last
434
431
  instance_variable_set('@' + var, stackEntry[var])
435
432
  end
436
433
  end
@@ -19,8 +19,6 @@ class TaskJuggler
19
19
  class ProjectFileScanner < TextScanner
20
20
 
21
21
  def initialize(masterFile, messageHandler)
22
- super
23
-
24
22
  tokenPatterns = [
25
23
  # Any white spaces
26
24
  [ nil, /\s+/, :tjp, method('newPos') ],
@@ -55,14 +53,14 @@ class TaskJuggler
55
53
  # with neither start nor end. Macro calls inside of strings need a
56
54
  # special start pattern that is active in the string modes. Both
57
55
  # patterns switch the scanner to macroCall mode.
58
- [ nil, /([-a-zA-Z_0-9>:.+]*|"(\\"|[^"])*|'(\\'|[^'])*|-8<-.*)?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
56
+ [ nil, /([-a-zA-Z_0-9>:.+]*|"(\\"|[^"])*?|'(\\'|[^'])*?)?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
59
57
  :tjp, method('startMacroCall') ],
60
58
  # This pattern is similar to the previous one, but is active inside of
61
59
  # multi-line strings. The corresponding rule for sizzors strings
62
60
  # can be found below.
63
- [ nil, /(\\"|[^"])*\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
61
+ [ nil, /(\\"|[^"])*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
64
62
  :dqString, method('startMacroCall') ],
65
- [ nil, /(\\'|[^'])*\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
63
+ [ nil, /(\\'|[^'])*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
66
64
  :sqString, method('startMacroCall') ],
67
65
  # This pattern matches the end of a macro call. It injects the prefix
68
66
  # and the expanded macro into the scanner again. The mode is restored
@@ -120,7 +118,7 @@ class TaskJuggler
120
118
  [ 'STRING', /\s*->8-/, :szrString1, method('endStringSZR') ],
121
119
  [ 'STRING', /\s*->8-/, :szrString, method('endStringSZR') ],
122
120
  # This rule handles macros inside of sizzors strings.
123
- [ nil, /.*\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
121
+ [ nil, /.*?\$\{\s*([a-zA-Z_]\w*)(\s*"(\\"|[^"])*")*/,
124
122
  [ :szrString, :szrString1 ], method('startMacroCall') ],
125
123
  # Any line not containing the start or end.
126
124
  [ 'nil', /.*\n/, :szrString1, method('firstStringSZR') ],
@@ -147,14 +145,7 @@ class TaskJuggler
147
145
  [ 'LITERAL', /./ ]
148
146
  ]
149
147
 
150
- tokenPatterns.each do |pat|
151
- type = pat[0]
152
- regExp = pat[1]
153
- mode = pat[2] || :tjp
154
- postProc = pat[3]
155
- addPattern(type, regExp, mode, postProc)
156
- end
157
- self.mode = :tjp
148
+ super(masterFile, messageHandler, tokenPatterns, :tjp)
158
149
  end
159
150
 
160
151
  private
@@ -266,7 +257,7 @@ class TaskJuggler
266
257
  def firstStringSZR(type, match)
267
258
  self.mode = :szrString
268
259
  # Split the leading indentation and the rest of the string.
269
- foo, @indent, @string = */(\s*)(.*\n)/.match(match)
260
+ @indent, @string = */(\s*)(.*\n)/.match(match)[1, 2]
270
261
  [ nil, '' ]
271
262
  end
272
263
 
@@ -333,7 +324,7 @@ class TaskJuggler
333
324
  # Remove '${' and '}'
334
325
  argsStr = @macroCall[2..-2]
335
326
  # Extract the macro name.
336
- if (nameEnd = argsStr.index(' ')).nil?
327
+ if argsStr.index(' ').nil?
337
328
  expandMacro(prefix, [ argsStr ])
338
329
  else
339
330
  macroName = argsStr[0, argsStr.index(' ')]
@@ -94,33 +94,6 @@ class TaskJuggler
94
94
  sort!
95
95
  end
96
96
 
97
- # Append a new sorting level to the existing levels.
98
- def addSortingCriteria(criteria, up, scIdx)
99
- unless @propertySet.knownAttribute?(criteria) ||
100
- @propertySet.hasQuery?(criteria, scIdx)
101
- raise TjException.new, "Unknown attribute #{criteria} used for " +
102
- 'sorting criterium'
103
- end
104
- if scIdx == -1
105
- if @propertySet.scenarioSpecific?(criteria)
106
- raise TjException.new, "Attribute #{criteria} is scenario specific." +
107
- "You must specify a scenario id."
108
- end
109
- else
110
- if @propertySet.project.scenario(scIdx).nil?
111
- raise TjException.new, "Unknown scenario index #{scIdx} used."
112
- end
113
- if !@propertySet.scenarioSpecific?(criteria)
114
- raise TjException.new, "Attribute #{criteria} is not scenario " +
115
- "specific"
116
- end
117
- end
118
- @sortingCriteria.push(criteria)
119
- @sortingUp.push(up)
120
- @scenarioIdx.push(scIdx)
121
- @sortingLevels += 1
122
- end
123
-
124
97
  # If the first sorting level is 'tree' the breakdown structure of the
125
98
  # list is preserved. This is a somewhat special mode and this function
126
99
  # returns true if the mode is set.
@@ -191,6 +164,31 @@ class TaskJuggler
191
164
 
192
165
  private
193
166
 
167
+ # Append a new sorting level to the existing levels.
168
+ def addSortingCriteria(criteria, up, scIdx)
169
+ unless @propertySet.knownAttribute?(criteria) ||
170
+ @propertySet.hasQuery?(criteria, scIdx)
171
+ raise "Unknown attribute #{criteria} used for sorting criterium"
172
+ end
173
+ if scIdx == -1
174
+ if @propertySet.scenarioSpecific?(criteria)
175
+ raise "Attribute #{criteria} is scenario specific." +
176
+ "You must specify a scenario id."
177
+ end
178
+ else
179
+ if @propertySet.project.scenario(scIdx).nil?
180
+ raise "Unknown scenario index #{scIdx} used."
181
+ end
182
+ if !@propertySet.scenarioSpecific?(criteria)
183
+ raise "Attribute #{criteria} is not scenario specific"
184
+ end
185
+ end
186
+ @sortingCriteria.push(criteria)
187
+ @sortingUp.push(up)
188
+ @scenarioIdx.push(scIdx)
189
+ @sortingLevels += 1
190
+ end
191
+
194
192
  # Update the 'tree' indicies that are needed for the 'tree' sorting mode.
195
193
  def indexTree
196
194
  @items.each do |property|
@@ -200,7 +200,7 @@ class TaskJuggler
200
200
  def addProperty(property)
201
201
  # The PropertySet defines the set of attribute that each PropertyTreeNode
202
202
  # in this set has. Create these attributes with their default values.
203
- @attributeDefinitions.each do |id, attributeType|
203
+ @attributeDefinitions.each_value do |attributeType|
204
204
  property.declareAttribute(attributeType)
205
205
  end
206
206
 
@@ -359,8 +359,7 @@ class TaskJuggler
359
359
  @sequenceNo
360
360
  else
361
361
  unless @attributes.has_key?(attributeId)
362
- raise TjException.new,
363
- "Unknown attribute '#{attributeId}' requested for " +
362
+ raise "Unknown attribute '#{attributeId}' requested for " +
364
363
  "#{self.class.to_s.sub(/TaskJuggler::/, '')} '#{fullId}'"
365
364
  end
366
365
  @attributes[attributeId].get
@@ -407,7 +406,7 @@ class TaskJuggler
407
406
  # In case the attribute does not exist, an exception is raised.
408
407
  def set(attributeId, value)
409
408
  unless @attributes.has_key?(attributeId)
410
- raise TjException.new, "Unknown attribute #{attributeId}"
409
+ raise "Unknown attribute #{attributeId}"
411
410
  end
412
411
  @attributes[attributeId].set(value)
413
412
  end
@@ -421,7 +420,7 @@ class TaskJuggler
421
420
  elsif @attributes.has_key?(attributeId)
422
421
  @attributes[attributeId].set(value)
423
422
  else
424
- raise TjException.new, "Unknown attribute #{attributeId}"
423
+ raise "Unknown attribute #{attributeId}"
425
424
  end
426
425
  @scenarioAttributes[scenario][attributeId].set(value)
427
426
  end
@@ -571,7 +570,7 @@ class TaskJuggler
571
570
  # we compose the result as RichText markup first.
572
571
  rText = ''
573
572
  entries.each do |entry|
574
- rText += "=== <nowiki>" + entry.headline + "</nowiki> ===\n"
573
+ rText += "==== <nowiki>" + entry.headline + "</nowiki> ====\n"
575
574
  rText += "''Reported on #{entry.date.to_s(query.timeFormat)}'' "
576
575
  if entry.author
577
576
  rText += "''by <nowiki>#{entry.author.name}</nowiki>''"
@@ -586,13 +585,11 @@ class TaskJuggler
586
585
  end
587
586
  # Now convert the RichText markup String into RichTextIntermediate
588
587
  # format.
589
- begin
590
- rti = RichText.new(rText, RTFHandlers.create(@project)).
591
- generateIntermediateFormat
592
- rescue RichTextException => msg
593
- $stderr.puts "Error while processing Rich Text\n" +
594
- "Line #{msg.lineNo}: #{msg.text}\n" +
595
- "#{msg.line}"
588
+ unless (rti = RichText.new(rText, RTFHandlers.create(@project),
589
+ @project.messageHandler).
590
+ generateIntermediateFormat)
591
+ @project.messageHandler.warning('ptn_journal',
592
+ "Syntax error in journal message")
596
593
  return nil
597
594
  end
598
595
  # No section numbers, please!
@@ -37,7 +37,7 @@ class TaskJuggler
37
37
  :attributeId, :scenarioIdx,
38
38
  :timeFormat, :numberFormat, :currencyFormat, :costAccount,
39
39
  :revenueAccount,
40
- :loadUnit,
40
+ :loadUnit, :selfContained,
41
41
  :ok, :errorMessage
42
42
  attr_reader :end, :endIdx, :start, :startIdx
43
43
  attr_writer :sortable, :numerical, :string, :rti
@@ -48,7 +48,8 @@ class TaskJuggler
48
48
  ps = %w( project propertyType propertyId property scopePropertyId
49
49
  scopeProperty attributeId scenario scenarioIdx
50
50
  loadUnit numberFormat currencyFormat timeFormat
51
- costAccount revenueAccount)
51
+ costAccount revenueAccount selfContained)
52
+ @selfContained = false
52
53
  ps.each do |p|
53
54
  instance_variable_set('@' + p, parameters[p] ? parameters[p] : nil)
54
55
  end
@@ -239,7 +240,7 @@ class TaskJuggler
239
240
 
240
241
  def resolvePropertyId(pType, pId)
241
242
  unless @project
242
- raise TjException.new, "Need Project reference to process the query"
243
+ raise "Need Project reference to process the query"
243
244
  end
244
245
  case pType
245
246
  when :Account
@@ -249,7 +250,7 @@ class TaskJuggler
249
250
  when:Resource
250
251
  @project.resource(pId)
251
252
  else
252
- raise TjException.new, "Unknown property type #{pType}"
253
+ raise "Unknown property type #{pType}"
253
254
  end
254
255
  end
255
256
 
@@ -22,7 +22,8 @@ class TaskJuggler
22
22
  class RTFNavigator < RichTextFunctionHandler
23
23
 
24
24
  def initialize(project, sourceFileInfo = nil)
25
- super(project, 'navigator', sourceFileInfo)
25
+ @project = project
26
+ super(project.messageHandler, 'navigator', sourceFileInfo)
26
27
  @blockFunction = true
27
28
  end
28
29
 
@@ -10,7 +10,7 @@
10
10
  # published by the Free Software Foundation.
11
11
  #
12
12
 
13
- require 'RichTextFunctionHandler'
13
+ require 'RTFWithQuerySupport'
14
14
  require 'XMLElement'
15
15
  require 'Query'
16
16
 
@@ -18,19 +18,12 @@ class TaskJuggler
18
18
 
19
19
  # This class is a specialized RichTextFunctionHandler that can be used to
20
20
  # query the value of a project or property attribute.
21
- class RTFQuery < RichTextFunctionHandler
21
+ class RTFQuery < RTFWithQuerySupport
22
22
 
23
23
  def initialize(project, sourceFileInfo = nil)
24
- super(project, 'query', sourceFileInfo)
24
+ @project = project
25
+ super(project.messageHandler, 'query', sourceFileInfo)
25
26
  @blockMode = false
26
- @query = nil
27
- end
28
-
29
- # This function must be called to register the Query object that will be
30
- # used to resolve the queries. It will create a copy of the object since
31
- # it will modify it.
32
- def setQuery(query)
33
- @query = query.dup
34
27
  end
35
28
 
36
29
  # Return the result of the query as String.
@@ -20,7 +20,8 @@ class TaskJuggler
20
20
  class RTFReport < RichTextFunctionHandler
21
21
 
22
22
  def initialize(project, sourceFileInfo = nil)
23
- super(project, 'report', sourceFileInfo)
23
+ @project = project
24
+ super(project.messageHandler, 'report', sourceFileInfo)
24
25
  @blockFunction = true
25
26
  end
26
27
 
@@ -10,19 +10,22 @@
10
10
  # published by the Free Software Foundation.
11
11
  #
12
12
 
13
- require 'RichTextFunctionHandler'
13
+ require 'RTFWithQuerySupport'
14
14
  require 'XMLElement'
15
15
  require 'URLParameter'
16
+ require 'SimpleQueryExpander'
16
17
 
17
18
  class TaskJuggler
18
19
 
19
20
  # This class is a specialized RichTextFunctionHandler that generates a link
20
21
  # to another report. It's not available on all output formats.
21
- class RTFReportLink < RichTextFunctionHandler
22
+ class RTFReportLink < RTFWithQuerySupport
22
23
 
23
24
  def initialize(project, sourceFileInfo = nil)
24
- super(project, 'reportlink', sourceFileInfo)
25
+ @project = project
26
+ super(project.messageHandler, 'reportlink', sourceFileInfo)
25
27
  @blockFunction = false
28
+ @query = nil
26
29
  end
27
30
 
28
31
  # Not supported for this function
@@ -49,7 +52,10 @@ class TaskJuggler
49
52
  "report=#{report.fullId}"
50
53
 
51
54
  if args['attributes']
52
- url += ";attributes=" + URLParameter.encode(args['attributes'])
55
+ qEx = SimpleQueryExpander.new(args['attributes'], @query,
56
+ @project.messageHandler,
57
+ @sourceFileInfo)
58
+ url += ";attributes=" + URLParameter.encode(qEx.expand)
53
59
  end
54
60
  else
55
61
  # The report name just gets a '.html' extension.