taskjuggler 0.0.11 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (697) hide show
  1. data/CHANGELOG +6 -1550
  2. data/benchmarks/UTF-8-Strings.rb +58 -0
  3. data/benchmarks/profile.clt +36082 -0
  4. data/benchmarks/profile.html +58182 -0
  5. data/benchmarks/runbench.rb +2 -2
  6. data/data/css/tjmanual.css +0 -1
  7. data/doc/AppConfig.html +1491 -0
  8. data/doc/CHANGELOG.html +557 -0
  9. data/doc/COPYING.html +899 -0
  10. data/doc/Diff.html +1193 -0
  11. data/doc/Diff/Hunk.html +1026 -0
  12. data/doc/Diffable.html +684 -0
  13. data/doc/DiffableString.html +684 -0
  14. data/doc/Object.html +720 -0
  15. data/doc/README_rdoc.html +742 -0
  16. data/doc/RuntimeConfig.html +856 -0
  17. data/doc/String.html +1005 -0
  18. data/doc/TaskJuggler.html +2639 -0
  19. data/doc/TaskJuggler/Account.html +753 -0
  20. data/doc/TaskJuggler/AccountAttribute.html +769 -0
  21. data/doc/TaskJuggler/AccountScenario.html +712 -0
  22. data/doc/TaskJuggler/Allocation.html +963 -0
  23. data/doc/TaskJuggler/AllocationAttribute.html +799 -0
  24. data/doc/TaskJuggler/AttributeBase.html +1328 -0
  25. data/doc/TaskJuggler/AttributeDefinition.html +815 -0
  26. data/doc/TaskJuggler/AttributeOverwrite.html +606 -0
  27. data/doc/TaskJuggler/BatchProcessor.html +1178 -0
  28. data/doc/TaskJuggler/Booking.html +859 -0
  29. data/doc/TaskJuggler/BookingListAttribute.html +769 -0
  30. data/doc/TaskJuggler/BooleanAttribute.html +769 -0
  31. data/doc/TaskJuggler/CSVFile.html +1128 -0
  32. data/doc/TaskJuggler/CellSettingPattern.html +700 -0
  33. data/doc/TaskJuggler/CellSettingPatternList.html +749 -0
  34. data/doc/TaskJuggler/Charge.html +777 -0
  35. data/doc/TaskJuggler/ChargeListAttribute.html +733 -0
  36. data/doc/TaskJuggler/ChargeSet.html +949 -0
  37. data/doc/TaskJuggler/ChargeSetListAttribute.html +778 -0
  38. data/doc/TaskJuggler/CollisionDetector.html +1089 -0
  39. data/doc/TaskJuggler/ColumnListAttribute.html +733 -0
  40. data/doc/TaskJuggler/ColumnTable.html +763 -0
  41. data/doc/TaskJuggler/Daemon.html +819 -0
  42. data/doc/TaskJuggler/DataCache.html +1025 -0
  43. data/doc/TaskJuggler/DataCacheEntry.html +737 -0
  44. data/doc/TaskJuggler/DateAttribute.html +737 -0
  45. data/doc/TaskJuggler/DefinitionListAttribute.html +655 -0
  46. data/doc/TaskJuggler/DependencyListAttribute.html +773 -0
  47. data/doc/TaskJuggler/DurationAttribute.html +770 -0
  48. data/doc/TaskJuggler/FileList.html +793 -0
  49. data/doc/TaskJuggler/FileRecord.html +702 -0
  50. data/doc/TaskJuggler/FixnumAttribute.html +691 -0
  51. data/doc/TaskJuggler/FlagListAttribute.html +769 -0
  52. data/doc/TaskJuggler/FloatAttribute.html +733 -0
  53. data/doc/TaskJuggler/FormatListAttribute.html +697 -0
  54. data/doc/TaskJuggler/GanttChart.html +1487 -0
  55. data/doc/TaskJuggler/GanttContainer.html +945 -0
  56. data/doc/TaskJuggler/GanttHeader.html +948 -0
  57. data/doc/TaskJuggler/GanttHeaderScaleItem.html +762 -0
  58. data/doc/TaskJuggler/GanttLine.html +1325 -0
  59. data/doc/TaskJuggler/GanttLoadStack.html +828 -0
  60. data/doc/TaskJuggler/GanttMilestone.html +926 -0
  61. data/doc/TaskJuggler/GanttRouter.html +1136 -0
  62. data/doc/TaskJuggler/GanttTaskBar.html +948 -0
  63. data/doc/TaskJuggler/HTMLDocument.html +754 -0
  64. data/doc/TaskJuggler/HTMLElements.html +599 -0
  65. data/doc/TaskJuggler/HTMLGraphics.html +837 -0
  66. data/doc/TaskJuggler/Interval.html +1076 -0
  67. data/doc/TaskJuggler/IntervalList.html +797 -0
  68. data/doc/TaskJuggler/IntervalListAttribute.html +773 -0
  69. data/doc/TaskJuggler/JobInfo.html +943 -0
  70. data/doc/TaskJuggler/Journal.html +1248 -0
  71. data/doc/TaskJuggler/JournalEntry.html +860 -0
  72. data/doc/TaskJuggler/JournalEntryList.html +1229 -0
  73. data/doc/TaskJuggler/KeywordArray.html +696 -0
  74. data/doc/TaskJuggler/KeywordDocumentation.html +2250 -0
  75. data/doc/TaskJuggler/Limits.html +1036 -0
  76. data/doc/TaskJuggler/Limits/Limit.html +947 -0
  77. data/doc/TaskJuggler/LimitsAttribute.html +734 -0
  78. data/doc/TaskJuggler/ListAttributeBase.html +703 -0
  79. data/doc/TaskJuggler/Log.html +1163 -0
  80. data/doc/TaskJuggler/LogFile.html +980 -0
  81. data/doc/TaskJuggler/LogicalAttribute.html +760 -0
  82. data/doc/TaskJuggler/LogicalExpression.html +801 -0
  83. data/doc/TaskJuggler/LogicalExpressionAttribute.html +691 -0
  84. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +691 -0
  85. data/doc/TaskJuggler/LogicalFlag.html +753 -0
  86. data/doc/TaskJuggler/LogicalFunction.html +1409 -0
  87. data/doc/TaskJuggler/LogicalOperation.html +1144 -0
  88. data/doc/TaskJuggler/ManagerResponsibilities.html +736 -0
  89. data/doc/TaskJuggler/ManagerStatusRecord.html +740 -0
  90. data/doc/TaskJuggler/Message.html +837 -0
  91. data/doc/TaskJuggler/MessageHandler.html +1056 -0
  92. data/doc/TaskJuggler/Navigator.html +943 -0
  93. data/doc/TaskJuggler/NavigatorElement.html +994 -0
  94. data/doc/TaskJuggler/NikuProject.html +724 -0
  95. data/doc/TaskJuggler/NikuReport.html +1470 -0
  96. data/doc/TaskJuggler/NikuResource.html +694 -0
  97. data/doc/TaskJuggler/NodeListAttribute.html +655 -0
  98. data/doc/TaskJuggler/PlaceHolderCell.html +748 -0
  99. data/doc/TaskJuggler/ProcessIntercom.html +1017 -0
  100. data/doc/TaskJuggler/ProcessIntercomIface.html +773 -0
  101. data/doc/TaskJuggler/Project.html +3478 -0
  102. data/doc/TaskJuggler/ProjectBroker.html +1676 -0
  103. data/doc/TaskJuggler/ProjectBrokerIface.html +851 -0
  104. data/doc/TaskJuggler/ProjectFileParser.html +2102 -0
  105. data/doc/TaskJuggler/ProjectFileScanner.html +1896 -0
  106. data/doc/TaskJuggler/ProjectRecord.html +978 -0
  107. data/doc/TaskJuggler/ProjectServer.html +1249 -0
  108. data/doc/TaskJuggler/ProjectServerIface.html +868 -0
  109. data/doc/TaskJuggler/PropertyAttribute.html +691 -0
  110. data/doc/TaskJuggler/PropertyList.html +1399 -0
  111. data/doc/TaskJuggler/PropertySet.html +1796 -0
  112. data/doc/TaskJuggler/PropertyTreeNode.html +2851 -0
  113. data/doc/TaskJuggler/Query.html +1756 -0
  114. data/doc/TaskJuggler/RTFHandlers.html +664 -0
  115. data/doc/TaskJuggler/RTFNavigator.html +792 -0
  116. data/doc/TaskJuggler/RTFQuery.html +1083 -0
  117. data/doc/TaskJuggler/RTFReport.html +820 -0
  118. data/doc/TaskJuggler/RTFReportLink.html +812 -0
  119. data/doc/TaskJuggler/RTFWithQuerySupport.html +702 -0
  120. data/doc/TaskJuggler/RealFormat.html +805 -0
  121. data/doc/TaskJuggler/RealFormatAttribute.html +655 -0
  122. data/doc/TaskJuggler/ReferenceAttribute.html +880 -0
  123. data/doc/TaskJuggler/Report.html +1501 -0
  124. data/doc/TaskJuggler/ReportBase.html +1266 -0
  125. data/doc/TaskJuggler/ReportContext.html +837 -0
  126. data/doc/TaskJuggler/ReportServer.html +1068 -0
  127. data/doc/TaskJuggler/ReportServerIface.html +902 -0
  128. data/doc/TaskJuggler/ReportServerRecord.html +781 -0
  129. data/doc/TaskJuggler/ReportServlet.html +1029 -0
  130. data/doc/TaskJuggler/ReportTable.html +1179 -0
  131. data/doc/TaskJuggler/ReportTableCell.html +1666 -0
  132. data/doc/TaskJuggler/ReportTableColumn.html +890 -0
  133. data/doc/TaskJuggler/ReportTableLegend.html +1060 -0
  134. data/doc/TaskJuggler/ReportTableLine.html +1067 -0
  135. data/doc/TaskJuggler/Resource.html +1004 -0
  136. data/doc/TaskJuggler/ResourceListAttribute.html +829 -0
  137. data/doc/TaskJuggler/ResourceListRE.html +737 -0
  138. data/doc/TaskJuggler/ResourceScenario.html +2549 -0
  139. data/doc/TaskJuggler/RichText.html +879 -0
  140. data/doc/TaskJuggler/RichTextAttribute.html +811 -0
  141. data/doc/TaskJuggler/RichTextDocument.html +1038 -0
  142. data/doc/TaskJuggler/RichTextElement.html +1780 -0
  143. data/doc/TaskJuggler/RichTextFunctionExample.html +799 -0
  144. data/doc/TaskJuggler/RichTextFunctionHandler.html +750 -0
  145. data/doc/TaskJuggler/RichTextImage.html +712 -0
  146. data/doc/TaskJuggler/RichTextIntermediate.html +1285 -0
  147. data/doc/TaskJuggler/RichTextParser.html +868 -0
  148. data/doc/TaskJuggler/RichTextScanner.html +1565 -0
  149. data/doc/TaskJuggler/RichTextSnip.html +1000 -0
  150. data/doc/TaskJuggler/RichTextSyntaxRules.html +2052 -0
  151. data/doc/TaskJuggler/Scenario.html +656 -0
  152. data/doc/TaskJuggler/ScenarioData.html +838 -0
  153. data/doc/TaskJuggler/ScenarioListAttribute.html +733 -0
  154. data/doc/TaskJuggler/Scoreboard.html +1201 -0
  155. data/doc/TaskJuggler/SheetHandlerBase.html +1297 -0
  156. data/doc/TaskJuggler/SheetReceiver.html +1398 -0
  157. data/doc/TaskJuggler/SheetSender.html +1168 -0
  158. data/doc/TaskJuggler/Shift.html +751 -0
  159. data/doc/TaskJuggler/ShiftAssignment.html +1008 -0
  160. data/doc/TaskJuggler/ShiftAssignments.html +1413 -0
  161. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +734 -0
  162. data/doc/TaskJuggler/ShiftScenario.html +782 -0
  163. data/doc/TaskJuggler/SimpleQueryExpander.html +732 -0
  164. data/doc/TaskJuggler/SortListAttribute.html +691 -0
  165. data/doc/TaskJuggler/StatusSheetReceiver.html +678 -0
  166. data/doc/TaskJuggler/StatusSheetReport.html +935 -0
  167. data/doc/TaskJuggler/StatusSheetSender.html +808 -0
  168. data/doc/TaskJuggler/StdIoWrapper.html +696 -0
  169. data/doc/TaskJuggler/StringAttribute.html +733 -0
  170. data/doc/TaskJuggler/SymbolAttribute.html +691 -0
  171. data/doc/TaskJuggler/SyntaxReference.html +1240 -0
  172. data/doc/TaskJuggler/TOCEntry.html +836 -0
  173. data/doc/TaskJuggler/TSResourceRecord.html +732 -0
  174. data/doc/TaskJuggler/TSTaskRecord.html +744 -0
  175. data/doc/TaskJuggler/TableColumnDefinition.html +949 -0
  176. data/doc/TaskJuggler/TableOfContents.html +790 -0
  177. data/doc/TaskJuggler/TableReport.html +2555 -0
  178. data/doc/TaskJuggler/Task.html +890 -0
  179. data/doc/TaskJuggler/TaskDepListAttribute.html +773 -0
  180. data/doc/TaskJuggler/TaskDependency.html +832 -0
  181. data/doc/TaskJuggler/TaskListAttribute.html +773 -0
  182. data/doc/TaskJuggler/TaskListRE.html +736 -0
  183. data/doc/TaskJuggler/TaskScenario.html +5180 -0
  184. data/doc/TaskJuggler/TernarySearchTree.html +1341 -0
  185. data/doc/TaskJuggler/TextFormatter.html +973 -0
  186. data/doc/TaskJuggler/TextParser.html +1862 -0
  187. data/doc/TaskJuggler/TextParser/Macro.html +708 -0
  188. data/doc/TaskJuggler/TextParser/MacroTable.html +832 -0
  189. data/doc/TaskJuggler/TextParser/Pattern.html +1743 -0
  190. data/doc/TaskJuggler/TextParser/Rule.html +1419 -0
  191. data/doc/TaskJuggler/TextParser/Scanner.html +1516 -0
  192. data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +661 -0
  193. data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +727 -0
  194. data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +724 -0
  195. data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +1095 -0
  196. data/doc/TaskJuggler/TextParser/SourceFileInfo.html +760 -0
  197. data/doc/TaskJuggler/TextParser/StackElement.html +940 -0
  198. data/doc/TaskJuggler/TextParser/State.html +1015 -0
  199. data/doc/TaskJuggler/TextParser/StateTransition.html +808 -0
  200. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +711 -0
  201. data/doc/TaskJuggler/TextParser/TokenDoc.html +742 -0
  202. data/doc/TaskJuggler/TextReport.html +921 -0
  203. data/doc/TaskJuggler/TimeSheet.html +1264 -0
  204. data/doc/TaskJuggler/TimeSheetReceiver.html +675 -0
  205. data/doc/TaskJuggler/TimeSheetRecord.html +1415 -0
  206. data/doc/TaskJuggler/TimeSheetReport.html +1013 -0
  207. data/doc/TaskJuggler/TimeSheetSender.html +700 -0
  208. data/doc/TaskJuggler/TimeSheetSummary.html +959 -0
  209. data/doc/TaskJuggler/TimeSheets.html +736 -0
  210. data/doc/TaskJuggler/Tj3.html +857 -0
  211. data/doc/TaskJuggler/Tj3AppBase.html +942 -0
  212. data/doc/TaskJuggler/Tj3Client.html +1510 -0
  213. data/doc/TaskJuggler/Tj3Daemon.html +870 -0
  214. data/doc/TaskJuggler/Tj3Man.html +768 -0
  215. data/doc/TaskJuggler/Tj3SheetAppBase.html +758 -0
  216. data/doc/TaskJuggler/Tj3SsReceiver.html +747 -0
  217. data/doc/TaskJuggler/Tj3SsSender.html +780 -0
  218. data/doc/TaskJuggler/Tj3TsReceiver.html +747 -0
  219. data/doc/TaskJuggler/Tj3TsSender.html +767 -0
  220. data/doc/TaskJuggler/Tj3TsSummary.html +775 -0
  221. data/doc/TaskJuggler/TjException.html +692 -0
  222. data/doc/TaskJuggler/TjRuntimeError.html +606 -0
  223. data/doc/TaskJuggler/TjTime.html +3117 -0
  224. data/doc/TaskJuggler/TjpExample.html +897 -0
  225. data/doc/TaskJuggler/TjpExportRE.html +1772 -0
  226. data/doc/TaskJuggler/TjpSyntaxRules.html +14329 -0
  227. data/doc/TaskJuggler/URLParameter.html +691 -0
  228. data/doc/TaskJuggler/UserManual.html +1224 -0
  229. data/doc/TaskJuggler/VimSyntax.html +1064 -0
  230. data/doc/TaskJuggler/WebServer.html +757 -0
  231. data/doc/TaskJuggler/WelcomePage.html +789 -0
  232. data/doc/TaskJuggler/WorkingHours.html +1218 -0
  233. data/doc/TaskJuggler/WorkingHoursAttribute.html +756 -0
  234. data/doc/TaskJuggler/XMLBlob.html +707 -0
  235. data/doc/TaskJuggler/XMLComment.html +702 -0
  236. data/doc/TaskJuggler/XMLDocument.html +803 -0
  237. data/doc/TaskJuggler/XMLElement.html +990 -0
  238. data/doc/TaskJuggler/XMLNamedText.html +663 -0
  239. data/doc/TaskJuggler/XMLText.html +717 -0
  240. data/doc/index.html +4518 -0
  241. data/doc/lib/taskjuggler/AccountScenario_rb.html +69 -0
  242. data/doc/lib/taskjuggler/Account_rb.html +71 -0
  243. data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +67 -0
  244. data/doc/lib/taskjuggler/Allocation_rb.html +71 -0
  245. data/doc/lib/taskjuggler/AppConfig_rb.html +69 -0
  246. data/doc/lib/taskjuggler/AttributeBase_rb.html +69 -0
  247. data/doc/lib/taskjuggler/AttributeDefinition_rb.html +67 -0
  248. data/doc/lib/taskjuggler/Attributes_rb.html +83 -0
  249. data/doc/lib/taskjuggler/BatchProcessor_rb.html +71 -0
  250. data/doc/lib/taskjuggler/Booking_rb.html +67 -0
  251. data/doc/lib/taskjuggler/ChargeSet_rb.html +69 -0
  252. data/doc/lib/taskjuggler/Charge_rb.html +69 -0
  253. data/doc/lib/taskjuggler/DataCache_rb.html +71 -0
  254. data/doc/lib/taskjuggler/FileList_rb.html +67 -0
  255. data/doc/lib/taskjuggler/HTMLDocument_rb.html +71 -0
  256. data/doc/lib/taskjuggler/HTMLElements_rb.html +69 -0
  257. data/doc/lib/taskjuggler/IntervalList_rb.html +69 -0
  258. data/doc/lib/taskjuggler/Interval_rb.html +69 -0
  259. data/doc/lib/taskjuggler/Journal_rb.html +67 -0
  260. data/doc/lib/taskjuggler/KeywordArray_rb.html +67 -0
  261. data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +77 -0
  262. data/doc/lib/taskjuggler/Limits_rb.html +69 -0
  263. data/doc/lib/taskjuggler/LogFile_rb.html +69 -0
  264. data/doc/lib/taskjuggler/Log_rb.html +71 -0
  265. data/doc/lib/taskjuggler/LogicalExpression_rb.html +73 -0
  266. data/doc/lib/taskjuggler/LogicalFunction_rb.html +69 -0
  267. data/doc/lib/taskjuggler/LogicalOperation_rb.html +69 -0
  268. data/doc/lib/taskjuggler/MessageHandler_rb.html +69 -0
  269. data/doc/lib/taskjuggler/ProjectFileParser_rb.html +77 -0
  270. data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +69 -0
  271. data/doc/lib/taskjuggler/Project_rb.html +113 -0
  272. data/doc/lib/taskjuggler/PropertyList_rb.html +67 -0
  273. data/doc/lib/taskjuggler/PropertySet_rb.html +71 -0
  274. data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +67 -0
  275. data/doc/lib/taskjuggler/Query_rb.html +69 -0
  276. data/doc/lib/taskjuggler/RealFormat_rb.html +67 -0
  277. data/doc/lib/taskjuggler/ResourceScenario_rb.html +69 -0
  278. data/doc/lib/taskjuggler/Resource_rb.html +71 -0
  279. data/doc/lib/taskjuggler/RichText/Document_rb.html +73 -0
  280. data/doc/lib/taskjuggler/RichText/Element_rb.html +75 -0
  281. data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +73 -0
  282. data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +67 -0
  283. data/doc/lib/taskjuggler/RichText/Parser_rb.html +75 -0
  284. data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +75 -0
  285. data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +73 -0
  286. data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +73 -0
  287. data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +75 -0
  288. data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +71 -0
  289. data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +69 -0
  290. data/doc/lib/taskjuggler/RichText/Scanner_rb.html +71 -0
  291. data/doc/lib/taskjuggler/RichText/Snip_rb.html +71 -0
  292. data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +67 -0
  293. data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +71 -0
  294. data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +71 -0
  295. data/doc/lib/taskjuggler/RichText_rb.html +73 -0
  296. data/doc/lib/taskjuggler/RuntimeConfig_rb.html +69 -0
  297. data/doc/lib/taskjuggler/ScenarioData_rb.html +71 -0
  298. data/doc/lib/taskjuggler/Scenario_rb.html +69 -0
  299. data/doc/lib/taskjuggler/Scoreboard_rb.html +69 -0
  300. data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +75 -0
  301. data/doc/lib/taskjuggler/SheetReceiver_rb.html +81 -0
  302. data/doc/lib/taskjuggler/SheetSender_rb.html +79 -0
  303. data/doc/lib/taskjuggler/ShiftAssignments_rb.html +71 -0
  304. data/doc/lib/taskjuggler/ShiftScenario_rb.html +69 -0
  305. data/doc/lib/taskjuggler/Shift_rb.html +71 -0
  306. data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +69 -0
  307. data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +69 -0
  308. data/doc/lib/taskjuggler/StatusSheetSender_rb.html +69 -0
  309. data/doc/lib/taskjuggler/StdIoWrapper_rb.html +67 -0
  310. data/doc/lib/taskjuggler/SyntaxReference_rb.html +75 -0
  311. data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +67 -0
  312. data/doc/lib/taskjuggler/TaskDependency_rb.html +67 -0
  313. data/doc/lib/taskjuggler/TaskJuggler_rb.html +75 -0
  314. data/doc/lib/taskjuggler/TaskScenario_rb.html +71 -0
  315. data/doc/lib/taskjuggler/Task_rb.html +71 -0
  316. data/doc/lib/taskjuggler/TernarySearchTree_rb.html +69 -0
  317. data/doc/lib/taskjuggler/TextFormatter_rb.html +69 -0
  318. data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +67 -0
  319. data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +71 -0
  320. data/doc/lib/taskjuggler/TextParser/Rule_rb.html +69 -0
  321. data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +77 -0
  322. data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +67 -0
  323. data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +67 -0
  324. data/doc/lib/taskjuggler/TextParser/State_rb.html +67 -0
  325. data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +67 -0
  326. data/doc/lib/taskjuggler/TextParser_rb.html +79 -0
  327. data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +69 -0
  328. data/doc/lib/taskjuggler/TimeSheetSender_rb.html +69 -0
  329. data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +69 -0
  330. data/doc/lib/taskjuggler/TimeSheets_rb.html +67 -0
  331. data/doc/lib/taskjuggler/Tj3AppBase_rb.html +79 -0
  332. data/doc/lib/taskjuggler/Tj3Config_rb.html +71 -0
  333. data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +69 -0
  334. data/doc/lib/taskjuggler/TjException_rb.html +67 -0
  335. data/doc/lib/taskjuggler/TjTime_rb.html +71 -0
  336. data/doc/lib/taskjuggler/TjpExample_rb.html +69 -0
  337. data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +67 -0
  338. data/doc/lib/taskjuggler/URLParameter_rb.html +69 -0
  339. data/doc/lib/taskjuggler/UTF8String_rb.html +69 -0
  340. data/doc/lib/taskjuggler/UserManual_rb.html +81 -0
  341. data/doc/lib/taskjuggler/VimSyntax_rb.html +69 -0
  342. data/doc/lib/taskjuggler/WorkingHours_rb.html +71 -0
  343. data/doc/lib/taskjuggler/XMLDocument_rb.html +69 -0
  344. data/doc/lib/taskjuggler/XMLElement_rb.html +69 -0
  345. data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +75 -0
  346. data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +75 -0
  347. data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +75 -0
  348. data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +71 -0
  349. data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +71 -0
  350. data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +71 -0
  351. data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +71 -0
  352. data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +71 -0
  353. data/doc/lib/taskjuggler/apps/Tj3_rb.html +71 -0
  354. data/doc/lib/taskjuggler/daemon/Daemon_rb.html +69 -0
  355. data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +71 -0
  356. data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +83 -0
  357. data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +85 -0
  358. data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +73 -0
  359. data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +69 -0
  360. data/doc/lib/taskjuggler/daemon/WebServer_rb.html +81 -0
  361. data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +71 -0
  362. data/doc/lib/taskjuggler/deep_copy_rb.html +67 -0
  363. data/doc/lib/taskjuggler/reports/CSVFile_rb.html +69 -0
  364. data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +69 -0
  365. data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +69 -0
  366. data/doc/lib/taskjuggler/reports/GanttChart_rb.html +75 -0
  367. data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +69 -0
  368. data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +67 -0
  369. data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +69 -0
  370. data/doc/lib/taskjuggler/reports/GanttLine_rb.html +79 -0
  371. data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +69 -0
  372. data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +69 -0
  373. data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +69 -0
  374. data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +69 -0
  375. data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +67 -0
  376. data/doc/lib/taskjuggler/reports/Navigator_rb.html +69 -0
  377. data/doc/lib/taskjuggler/reports/NikuReport_rb.html +71 -0
  378. data/doc/lib/taskjuggler/reports/ReportBase_rb.html +67 -0
  379. data/doc/lib/taskjuggler/reports/ReportContext_rb.html +67 -0
  380. data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +67 -0
  381. data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +67 -0
  382. data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +67 -0
  383. data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +69 -0
  384. data/doc/lib/taskjuggler/reports/ReportTable_rb.html +71 -0
  385. data/doc/lib/taskjuggler/reports/Report_rb.html +93 -0
  386. data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +75 -0
  387. data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +69 -0
  388. data/doc/lib/taskjuggler/reports/TableReport_rb.html +77 -0
  389. data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +75 -0
  390. data/doc/lib/taskjuggler/reports/TextReport_rb.html +69 -0
  391. data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +69 -0
  392. data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +69 -0
  393. data/doc/lib/tj3_rb.html +69 -0
  394. data/doc/lib/tj3client_rb.html +69 -0
  395. data/doc/lib/tj3d_rb.html +69 -0
  396. data/doc/lib/tj3man_rb.html +69 -0
  397. data/doc/lib/tj3ss_receiver_rb.html +69 -0
  398. data/doc/lib/tj3ss_sender_rb.html +69 -0
  399. data/doc/lib/tj3ts_receiver_rb.html +69 -0
  400. data/doc/lib/tj3ts_sender_rb.html +69 -0
  401. data/doc/lib/tj3ts_summary_rb.html +69 -0
  402. data/doc/rdoc.css +706 -0
  403. data/examples/tutorial.tjp +2 -1
  404. data/lib/taskjuggler/Attributes.rb +33 -12
  405. data/lib/taskjuggler/DataCache.rb +17 -0
  406. data/lib/taskjuggler/FileList.rb +9 -0
  407. data/lib/taskjuggler/HTMLDocument.rb +19 -21
  408. data/lib/taskjuggler/HTMLElements.rb +46 -0
  409. data/lib/taskjuggler/Journal.rb +95 -46
  410. data/lib/taskjuggler/KeywordDocumentation.rb +248 -185
  411. data/lib/taskjuggler/LogicalExpression.rb +2 -2
  412. data/lib/taskjuggler/LogicalFunction.rb +22 -1
  413. data/lib/taskjuggler/LogicalOperation.rb +15 -5
  414. data/lib/taskjuggler/Project.rb +73 -16
  415. data/lib/taskjuggler/ProjectFileParser.rb +1 -1
  416. data/lib/taskjuggler/ProjectFileScanner.rb +27 -0
  417. data/lib/taskjuggler/PropertySet.rb +22 -45
  418. data/lib/taskjuggler/PropertyTreeNode.rb +99 -128
  419. data/lib/taskjuggler/Query.rb +39 -8
  420. data/lib/taskjuggler/Resource.rb +15 -6
  421. data/lib/taskjuggler/RichText/Document.rb +3 -3
  422. data/lib/taskjuggler/RichText/RTFQuery.rb +4 -4
  423. data/lib/taskjuggler/SheetHandlerBase.rb +14 -12
  424. data/lib/taskjuggler/SheetReceiver.rb +17 -15
  425. data/lib/taskjuggler/SheetSender.rb +16 -10
  426. data/{spec/support → lib/taskjuggler}/StdIoWrapper.rb +17 -0
  427. data/lib/taskjuggler/SyntaxReference.rb +2 -2
  428. data/lib/taskjuggler/TableColumnDefinition.rb +4 -3
  429. data/lib/taskjuggler/Task.rb +7 -2
  430. data/lib/taskjuggler/TaskJuggler.rb +74 -0
  431. data/lib/taskjuggler/TaskScenario.rb +62 -83
  432. data/lib/taskjuggler/TextParser.rb +20 -13
  433. data/lib/taskjuggler/TextParser/Scanner.rb +17 -1
  434. data/lib/taskjuggler/TimeSheetSummary.rb +9 -5
  435. data/lib/taskjuggler/TimeSheets.rb +6 -1
  436. data/lib/taskjuggler/Tj3AppBase.rb +41 -18
  437. data/lib/taskjuggler/Tj3Config.rb +1 -1
  438. data/lib/taskjuggler/TjTime.rb +6 -1
  439. data/lib/taskjuggler/TjpSyntaxRules.rb +408 -227
  440. data/lib/taskjuggler/UTF8String.rb +10 -0
  441. data/lib/taskjuggler/UserManual.rb +89 -81
  442. data/lib/taskjuggler/WorkingHours.rb +2 -3
  443. data/lib/taskjuggler/XMLDocument.rb +13 -4
  444. data/lib/taskjuggler/XMLElement.rb +31 -3
  445. data/lib/taskjuggler/apps/Tj3.rb +53 -21
  446. data/lib/taskjuggler/apps/Tj3Client.rb +19 -17
  447. data/lib/taskjuggler/apps/Tj3Daemon.rb +24 -21
  448. data/lib/taskjuggler/{Tj3Man.rb → apps/Tj3Man.rb} +2 -2
  449. data/lib/taskjuggler/apps/Tj3SsReceiver.rb +14 -11
  450. data/lib/taskjuggler/apps/Tj3SsSender.rb +17 -14
  451. data/lib/taskjuggler/apps/Tj3TsReceiver.rb +14 -11
  452. data/lib/taskjuggler/apps/Tj3TsSender.rb +16 -13
  453. data/lib/taskjuggler/apps/Tj3TsSummary.rb +16 -13
  454. data/lib/taskjuggler/reports/GanttChart.rb +1 -1
  455. data/lib/taskjuggler/reports/GanttRouter.rb +0 -2
  456. data/lib/taskjuggler/reports/GanttTaskBar.rb +2 -1
  457. data/lib/taskjuggler/reports/Navigator.rb +2 -1
  458. data/lib/taskjuggler/reports/NikuReport.rb +11 -7
  459. data/lib/taskjuggler/reports/ReportContext.rb +1 -0
  460. data/lib/taskjuggler/reports/StatusSheetReport.rb +7 -2
  461. data/lib/taskjuggler/reports/TableReport.rb +6 -4
  462. data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -0
  463. data/lib/taskjuggler/reports/TjpExportRE.rb +4 -4
  464. data/lib/tj3man.rb +1 -1
  465. data/manual/Day_To_Day_Juggling +134 -137
  466. data/manual/TaskJuggler_2x_Migration +39 -32
  467. data/manual/The_TaskJuggler_Syntax +6 -0
  468. data/prj_cfg.rb +2 -3
  469. data/spec/StatusSheets_spec.rb +314 -0
  470. data/spec/TimeSheets_spec.rb +237 -16
  471. data/spec/Tj3_spec.rb +1 -1
  472. data/spec/support/DaemonControl.rb +1 -1
  473. data/tasks/changelog.rake +13 -3
  474. data/tasks/manual.rake +1 -1
  475. data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -1
  476. data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +1 -1
  477. data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +1 -1
  478. data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -1
  479. data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -1
  480. data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +1 -1
  481. data/test/TestSuite/CSV-Reports/refs/taskreport.csv +1 -1
  482. data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +1 -1
  483. data/test/TestSuite/CSV-Reports/sortByTree.tjp +3 -1
  484. data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +4 -1
  485. data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -1
  486. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +4 -1
  487. data/test/TestSuite/CSV-Reports/taskreport.tjp +3 -1
  488. data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +3 -1
  489. data/test/TestSuite/CSV-Reports/weekly.tjp +1 -0
  490. data/test/TestSuite/Export-Reports/refs/Account.tjp +25 -30
  491. data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +1 -0
  492. data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +43 -72
  493. data/test/TestSuite/Export-Reports/refs/Alternative.tjp +17 -22
  494. data/test/TestSuite/Export-Reports/refs/AutoID.tjp +11 -10
  495. data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +1 -0
  496. data/test/TestSuite/Export-Reports/refs/Booking.tjp +16 -23
  497. data/test/TestSuite/Export-Reports/refs/Caption.tjp +13 -16
  498. data/test/TestSuite/Export-Reports/refs/Celltext.tjp +12 -16
  499. data/test/TestSuite/Export-Reports/refs/Comments.tjp +15 -19
  500. data/test/TestSuite/Export-Reports/refs/Complete.tjp +17 -26
  501. data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
  502. data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +1 -0
  503. data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +1 -0
  504. data/test/TestSuite/Export-Reports/refs/Depends1.tjp +5 -4
  505. data/test/TestSuite/Export-Reports/refs/Durations.tjp +18 -27
  506. data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +21 -20
  507. data/test/TestSuite/Export-Reports/refs/EnvVar.tjp +21 -0
  508. data/test/TestSuite/Export-Reports/refs/Flags.tjp +6 -5
  509. data/test/TestSuite/Export-Reports/refs/Gap.tjp +2 -1
  510. data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +15 -19
  511. data/test/TestSuite/Export-Reports/refs/Include.tjp +21 -20
  512. data/test/TestSuite/Export-Reports/refs/Journal.tjp +6 -5
  513. data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +92 -140
  514. data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +293 -566
  515. data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +1 -0
  516. data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +17 -22
  517. data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +32 -53
  518. data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +1 -0
  519. data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +1 -0
  520. data/test/TestSuite/Export-Reports/refs/Manager.tjp +51 -50
  521. data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +22 -31
  522. data/test/TestSuite/Export-Reports/refs/Milestone.tjp +1 -0
  523. data/test/TestSuite/Export-Reports/refs/MinMax.tjp +2 -1
  524. data/test/TestSuite/Export-Reports/refs/Niku.tjp +80 -139
  525. data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +1 -0
  526. data/test/TestSuite/Export-Reports/refs/Period.tjp +1 -0
  527. data/test/TestSuite/Export-Reports/refs/Persistent.tjp +17 -21
  528. data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +1 -0
  529. data/test/TestSuite/Export-Reports/refs/Priority.tjp +121 -107
  530. data/test/TestSuite/Export-Reports/refs/Project.tjp +1 -0
  531. data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +1 -0
  532. data/test/TestSuite/Export-Reports/refs/Query.tjp +17 -26
  533. data/test/TestSuite/Export-Reports/refs/Reports.tjp +42 -61
  534. data/test/TestSuite/Export-Reports/refs/Resource.tjp +21 -20
  535. data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +16 -20
  536. data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +36 -35
  537. data/test/TestSuite/Export-Reports/refs/Responsible.tjp +17 -21
  538. data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +36 -35
  539. data/test/TestSuite/Export-Reports/refs/Scenario.tjp +3 -1
  540. data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +1 -0
  541. data/test/TestSuite/Export-Reports/refs/Select.tjp +29 -43
  542. data/test/TestSuite/Export-Reports/refs/Shift.tjp +12 -11
  543. data/test/TestSuite/Export-Reports/refs/Simple.tjp +15 -19
  544. data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +33 -47
  545. data/test/TestSuite/Export-Reports/refs/String.tjp +9 -10
  546. data/test/TestSuite/Export-Reports/refs/Supplement.tjp +7 -8
  547. data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +10 -11
  548. data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +10 -9
  549. data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +9 -9
  550. data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +25 -37
  551. data/test/TestSuite/Export-Reports/refs/Timezone.tjp +1 -0
  552. data/test/TestSuite/Export-Reports/refs/Vacation.tjp +26 -25
  553. data/test/TestSuite/Export-Reports/refs/tutorial.tjp +453 -821
  554. data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
  555. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  556. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  557. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  558. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  559. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  560. data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
  561. data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
  562. data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
  563. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  564. data/test/TestSuite/{ReportGenerator/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
  565. data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +27 -3
  566. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions3.tjp +20 -0
  567. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions4.tjp +16 -0
  568. data/test/TestSuite/ReportGenerator/Correct/refs/DependencyList-1.csv +4 -0
  569. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +2 -0
  570. data/test/TestSuite/ReportGenerator/Correct/refs/Journal-2.csv +8 -0
  571. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions3-1.csv +4 -0
  572. data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions4-1.csv +2 -0
  573. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +3 -1
  574. data/test/TestSuite/Scheduler/Correct/Booking.tjp +8 -7
  575. data/test/TestSuite/Scheduler/Correct/Booking2.tjp +16 -9
  576. data/test/TestSuite/Scheduler/Correct/Booking3.tjp +28 -0
  577. data/test/TestSuite/Scheduler/Correct/Container.tjp +2 -2
  578. data/test/TestSuite/Scheduler/Correct/Depends.tjp +3 -3
  579. data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +4 -4
  580. data/test/TestSuite/Scheduler/Correct/Limits.tjp +3 -1
  581. data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +2 -2
  582. data/test/TestSuite/Scheduler/Correct/MultipleMandatories.tjp +2 -2
  583. data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +2 -2
  584. data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +3 -3
  585. data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +3 -3
  586. data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +3 -3
  587. data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +7 -7
  588. data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +2 -2
  589. data/test/TestSuite/Scheduler/Correct/Shift.tjp +7 -5
  590. data/test/TestSuite/Scheduler/Correct/Shift2.tjp +1 -1
  591. data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +5 -2
  592. data/test/TestSuite/Scheduler/Errors/booking_no_duty.tjp +1 -1
  593. data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +4 -2
  594. data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +4 -2
  595. data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +4 -2
  596. data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +4 -2
  597. data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +4 -2
  598. data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +4 -2
  599. data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +4 -2
  600. data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +4 -2
  601. data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +5 -2
  602. data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +4 -2
  603. data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +4 -2
  604. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  605. data/test/TestSuite/StatusSheets/run +1 -1
  606. data/test/TestSuite/Syntax/Correct/Booking.tjp +0 -5
  607. data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
  608. data/test/TestSuite/Syntax/Correct/EnvVar.tjp +12 -0
  609. data/test/TestSuite/Syntax/Correct/Freeze.tjp +1 -3
  610. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +9 -5
  611. data/test/TestSuite/Syntax/Correct/Priority.tjp +22 -11
  612. data/test/TestSuite/Syntax/Correct/Scenario.tjp +1 -1
  613. data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +2 -0
  614. data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -4
  615. data/test/TestSuite/Syntax/Correct/css/tjmanual.css +20 -0
  616. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -6
  617. data/test/TestSuite/Syntax/Correct/tutorial.tjp +2 -1
  618. data/test/TestSuite/Syntax/Errors/no_own_resource_booking.tjp +16 -0
  619. data/test/TestSuite/Syntax/Errors/no_own_task_booking.tjp +16 -0
  620. data/test/TestSuite/Syntax/Errors/resourceroot_leaf.tjp +10 -0
  621. data/test/TestSuite/Syntax/Errors/runaway_token.tjp +8 -0
  622. data/test/TestSuite/Syntax/Errors/sorting_bsi.tjp +11 -0
  623. data/test/TestSuite/Syntax/Errors/ss_no_tracking_scenario.tjp +14 -0
  624. data/test/TestSuite/Syntax/Errors/taskroot_leaf.tjp +8 -0
  625. data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +4 -2
  626. data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +4 -2
  627. data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +4 -2
  628. data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +4 -2
  629. data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +4 -2
  630. data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +4 -2
  631. data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +4 -2
  632. data/test/TestSuite/Syntax/Errors/ts_no_tracking_scenario.tjp +14 -0
  633. data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +4 -2
  634. data/test/TestSuite/Syntax/Errors/unknown_env_var.tjp +7 -0
  635. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  636. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  637. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  638. data/test/test_Export-Reports.rb +3 -0
  639. data/test/test_Journal.rb +4 -4
  640. data/test/test_PropertySet.rb +5 -5
  641. data/test/test_Syntax.rb +3 -0
  642. data/test/test_WorkingHours.rb +11 -18
  643. metadata +1012 -649
  644. data/lib/exchangebug.rb +0 -42
  645. data/lib/ruby-signal-bug.rb +0 -55
  646. data/spec/tj3client.log +0 -23
  647. data/test/TestSuite/CSV-Reports/alert.tjp +0 -9
  648. data/test/TestSuite/CSV-Reports/refs/alert.csv +0 -15
  649. data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +0 -41
  650. data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -89
  651. data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -79
  652. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  653. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  654. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -1
  655. data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -78
  656. data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -6
  657. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  658. data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +0 -66
  659. data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +0 -413
  660. data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
  661. data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
  662. data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
  663. data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
  664. data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
  665. data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
  666. data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
  667. data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
  668. data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
  669. data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
  670. data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
  671. data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
  672. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  673. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  674. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  675. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
  676. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
  677. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  678. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  679. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  680. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  681. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  682. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  683. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  684. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  685. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  686. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  687. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  688. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  689. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  690. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  691. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
  692. data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +0 -33
  693. data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
  694. data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
  695. data/test/TestSuite/Syntax/Correct/niku.xml +0 -30
  696. data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +0 -11
  697. data/test/TestSuite/TimeSheets/uu.txt +0 -29
@@ -0,0 +1,2102 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+ <head>
6
+ <meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
7
+
8
+ <title>Class: TaskJuggler::ProjectFileParser</title>
9
+
10
+ <link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
11
+
12
+ <script src="../js/jquery.js" type="text/javascript"
13
+ charset="utf-8"></script>
14
+ <script src="../js/thickbox-compressed.js" type="text/javascript"
15
+ charset="utf-8"></script>
16
+ <script src="../js/quicksearch.js" type="text/javascript"
17
+ charset="utf-8"></script>
18
+ <script src="../js/darkfish.js" type="text/javascript"
19
+ charset="utf-8"></script>
20
+
21
+ </head>
22
+ <body class="class">
23
+
24
+ <div id="metadata">
25
+ <div id="home-metadata">
26
+ <div id="home-section" class="section">
27
+ <h3 class="section-header">
28
+ <a href="../index.html">Home</a>
29
+ <a href="../index.html#classes">Classes</a>
30
+ <a href="../index.html#methods">Methods</a>
31
+ </h3>
32
+ </div>
33
+ </div>
34
+
35
+ <div id="file-metadata">
36
+ <div id="file-list-section" class="section">
37
+ <h3 class="section-header">In Files</h3>
38
+ <div class="section-body">
39
+ <ul>
40
+
41
+ <li><a href="../lib/taskjuggler/ProjectFileParser_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/taskjuggler/ProjectFileParser.rb">lib/taskjuggler/ProjectFileParser.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+ <div id="parent-class-section" class="section">
56
+ <h3 class="section-header">Parent</h3>
57
+
58
+ <p class="link"><a href="TextParser.html">TaskJuggler::TextParser</a></p>
59
+
60
+ </div>
61
+
62
+
63
+ <!-- Namespace Contents -->
64
+
65
+
66
+ <!-- Method Quickref -->
67
+
68
+ <div id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+ <ul class="link-list">
71
+
72
+ <li><a href="#method-c-new">::new</a></li>
73
+
74
+ <li><a href="#method-i-allOrNothingListRule">#allOrNothingListRule</a></li>
75
+
76
+ <li><a href="#method-i-also">#also</a></li>
77
+
78
+ <li><a href="#method-i-arg">#arg</a></li>
79
+
80
+ <li><a href="#method-i-checkBooking">#checkBooking</a></li>
81
+
82
+ <li><a href="#method-i-checkContainer">#checkContainer</a></li>
83
+
84
+ <li><a href="#method-i-checkInterval">#checkInterval</a></li>
85
+
86
+ <li><a href="#method-i-close">#close</a></li>
87
+
88
+ <li><a href="#method-i-columnTitle">#columnTitle</a></li>
89
+
90
+ <li><a href="#method-i-commaListRule">#commaListRule</a></li>
91
+
92
+ <li><a href="#method-i-descr">#descr</a></li>
93
+
94
+ <li><a href="#method-i-doc">#doc</a></li>
95
+
96
+ <li><a href="#method-i-example">#example</a></li>
97
+
98
+ <li><a href="#method-i-extendPropertySetDefinition">#extendPropertySetDefinition</a></li>
99
+
100
+ <li><a href="#method-i-initFileStack">#initFileStack</a></li>
101
+
102
+ <li><a href="#method-i-lastSyntaxToken">#lastSyntaxToken</a></li>
103
+
104
+ <li><a href="#method-i-listRule">#listRule</a></li>
105
+
106
+ <li><a href="#method-i-newReport">#newReport</a></li>
107
+
108
+ <li><a href="#method-i-newRichText">#newRichText</a></li>
109
+
110
+ <li><a href="#method-i-nextToken">#nextToken</a></li>
111
+
112
+ <li><a href="#method-i-open">#open</a></li>
113
+
114
+ <li><a href="#method-i-optionsRule">#optionsRule</a></li>
115
+
116
+ <li><a href="#method-i-parseReportAttributes">#parseReportAttributes</a></li>
117
+
118
+ <li><a href="#method-i-popFileStack">#popFileStack</a></li>
119
+
120
+ <li><a href="#method-i-pushFileStack">#pushFileStack</a></li>
121
+
122
+ <li><a href="#method-i-returnToken">#returnToken</a></li>
123
+
124
+ <li><a href="#method-i-setDurationAttribute">#setDurationAttribute</a></li>
125
+
126
+ <li><a href="#method-i-setGlobalMacros">#setGlobalMacros</a></li>
127
+
128
+ <li><a href="#method-i-setLimit">#setLimit</a></li>
129
+
130
+ <li><a href="#method-i-singlePattern">#singlePattern</a></li>
131
+
132
+ <li><a href="#method-i-weekDay">#weekDay</a></li>
133
+
134
+ </ul>
135
+ </div>
136
+
137
+
138
+ <!-- Included Modules -->
139
+
140
+ <div id="includes-section" class="section">
141
+ <h3 class="section-header">Included Modules</h3>
142
+ <ul class="link-list">
143
+
144
+
145
+ <li><span class="include">TjpSyntaxRules</span></li>
146
+
147
+
148
+ </ul>
149
+ </div>
150
+
151
+ </div>
152
+
153
+ <div id="project-metadata">
154
+
155
+
156
+ <div id="fileindex-section" class="section project-section">
157
+ <h3 class="section-header">Files</h3>
158
+ <ul>
159
+
160
+ <li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
161
+
162
+ <li class="file"><a href="../COPYING.html">COPYING</a></li>
163
+
164
+ <li class="file"><a href="../README_rdoc.html">README.rdoc</a></li>
165
+
166
+ </ul>
167
+ </div>
168
+
169
+
170
+ <div id="classindex-section" class="section project-section">
171
+ <h3 class="section-header">Class Index
172
+ <span class="search-toggle"><img src="../images/find.png"
173
+ height="16" width="16" alt="[+]"
174
+ title="show/hide quicksearch" /></span></h3>
175
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
176
+ <fieldset>
177
+ <legend>Quicksearch</legend>
178
+ <input type="text" name="quicksearch" value=""
179
+ class="quicksearch-field" />
180
+ </fieldset>
181
+ </form>
182
+
183
+ <ul class="link-list">
184
+
185
+ <li><a href="../TaskJuggler.html">TaskJuggler</a></li>
186
+
187
+ <li><a href="../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
188
+
189
+ <li><a href="../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
190
+
191
+ <li><a href="../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
192
+
193
+ <li><a href="../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
194
+
195
+ <li><a href="../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
196
+
197
+ <li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
198
+
199
+ <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
200
+
201
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
202
+
203
+ <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
204
+
205
+ <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
206
+
207
+ <li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
208
+
209
+ <li><a href="../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
210
+
211
+ <li><a href="../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
212
+
213
+ <li><a href="../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
214
+
215
+ <li><a href="../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
216
+
217
+ <li><a href="../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
218
+
219
+ <li><a href="../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
220
+
221
+ <li><a href="../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
222
+
223
+ <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
224
+
225
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
226
+
227
+ <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
228
+
229
+ <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
230
+
231
+ <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
232
+
233
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
234
+
235
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
236
+
237
+ <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
238
+
239
+ <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
240
+
241
+ <li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
242
+
243
+ <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
244
+
245
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
246
+
247
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
248
+
249
+ <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
250
+
251
+ <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
252
+
253
+ <li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
254
+
255
+ <li><a href="../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
256
+
257
+ <li><a href="../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
258
+
259
+ <li><a href="../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
260
+
261
+ <li><a href="../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
262
+
263
+ <li><a href="../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
264
+
265
+ <li><a href="../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
266
+
267
+ <li><a href="../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
268
+
269
+ <li><a href="../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
270
+
271
+ <li><a href="../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
272
+
273
+ <li><a href="../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
274
+
275
+ <li><a href="../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
276
+
277
+ <li><a href="../TaskJuggler/HTMLElements.html">TaskJuggler::HTMLElements</a></li>
278
+
279
+ <li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
280
+
281
+ <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
282
+
283
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
284
+
285
+ <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
286
+
287
+ <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
288
+
289
+ <li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
290
+
291
+ <li><a href="../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
292
+
293
+ <li><a href="../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
294
+
295
+ <li><a href="../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
296
+
297
+ <li><a href="../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
298
+
299
+ <li><a href="../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
300
+
301
+ <li><a href="../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
302
+
303
+ <li><a href="../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
304
+
305
+ <li><a href="../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
306
+
307
+ <li><a href="../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
308
+
309
+ <li><a href="../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
310
+
311
+ <li><a href="../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
312
+
313
+ <li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
314
+
315
+ <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
316
+
317
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
318
+
319
+ <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
320
+
321
+ <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
322
+
323
+ <li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
324
+
325
+ <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
326
+
327
+ <li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
328
+
329
+ <li><a href="../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
330
+
331
+ <li><a href="../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
332
+
333
+ <li><a href="../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
334
+
335
+ <li><a href="../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
336
+
337
+ <li><a href="../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
338
+
339
+ <li><a href="../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
340
+
341
+ <li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
342
+
343
+ <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
344
+
345
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
346
+
347
+ <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
348
+
349
+ <li><a href="../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
350
+
351
+ <li><a href="../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
352
+
353
+ <li><a href="../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
354
+
355
+ <li><a href="../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
356
+
357
+ <li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
358
+
359
+ <li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
360
+
361
+ <li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
362
+
363
+ <li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
364
+
365
+ <li><a href="../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
366
+
367
+ <li><a href="../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
368
+
369
+ <li><a href="../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
370
+
371
+ <li><a href="../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
372
+
373
+ <li><a href="../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
374
+
375
+ <li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
376
+
377
+ <li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
378
+
379
+ <li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
380
+
381
+ <li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
382
+
383
+ <li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
384
+
385
+ <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
386
+
387
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
388
+
389
+ <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
390
+
391
+ <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
392
+
393
+ <li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
394
+
395
+ <li><a href="../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
396
+
397
+ <li><a href="../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
398
+
399
+ <li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
400
+
401
+ <li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
402
+
403
+ <li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
404
+
405
+ <li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
406
+
407
+ <li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
408
+
409
+ <li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
410
+
411
+ <li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
412
+
413
+ <li><a href="../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
414
+
415
+ <li><a href="../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
416
+
417
+ <li><a href="../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
418
+
419
+ <li><a href="../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
420
+
421
+ <li><a href="../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
422
+
423
+ <li><a href="../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
424
+
425
+ <li><a href="../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
426
+
427
+ <li><a href="../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
428
+
429
+ <li><a href="../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
430
+
431
+ <li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
432
+
433
+ <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
434
+
435
+ <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
436
+
437
+ <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
438
+
439
+ <li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
440
+
441
+ <li><a href="../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
442
+
443
+ <li><a href="../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
444
+
445
+ <li><a href="../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
446
+
447
+ <li><a href="../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
448
+
449
+ <li><a href="../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
450
+
451
+ <li><a href="../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
452
+
453
+ <li><a href="../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
454
+
455
+ <li><a href="../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
456
+
457
+ <li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
458
+
459
+ <li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
460
+
461
+ <li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
462
+
463
+ <li><a href="../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
464
+
465
+ <li><a href="../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
466
+
467
+ <li><a href="../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
468
+
469
+ <li><a href="../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
470
+
471
+ <li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
472
+
473
+ <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
474
+
475
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
476
+
477
+ <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
478
+
479
+ <li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
480
+
481
+ <li><a href="../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
482
+
483
+ <li><a href="../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
484
+
485
+ <li><a href="../TaskJuggler/StdIoWrapper.html">TaskJuggler::StdIoWrapper</a></li>
486
+
487
+ <li><a href="../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
488
+
489
+ <li><a href="../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
490
+
491
+ <li><a href="../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
492
+
493
+ <li><a href="../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
494
+
495
+ <li><a href="../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
496
+
497
+ <li><a href="../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
498
+
499
+ <li><a href="../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
500
+
501
+ <li><a href="../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
502
+
503
+ <li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
504
+
505
+ <li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
506
+
507
+ <li><a href="../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
508
+
509
+ <li><a href="../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
510
+
511
+ <li><a href="../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
512
+
513
+ <li><a href="../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
514
+
515
+ <li><a href="../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
516
+
517
+ <li><a href="../TaskJuggler/TernarySearchTree.html">TaskJuggler::TernarySearchTree</a></li>
518
+
519
+ <li><a href="../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
520
+
521
+ <li><a href="../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
522
+
523
+ <li><a href="../TaskJuggler/TextParser/Macro.html">TaskJuggler::TextParser::Macro</a></li>
524
+
525
+ <li><a href="../TaskJuggler/TextParser/MacroTable.html">TaskJuggler::TextParser::MacroTable</a></li>
526
+
527
+ <li><a href="../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
528
+
529
+ <li><a href="../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
530
+
531
+ <li><a href="../TaskJuggler/TextParser/Scanner.html">TaskJuggler::TextParser::Scanner</a></li>
532
+
533
+ <li><a href="../TaskJuggler/TextParser/Scanner/BufferStreamHandle.html">TaskJuggler::TextParser::Scanner::BufferStreamHandle</a></li>
534
+
535
+ <li><a href="../TaskJuggler/TextParser/Scanner/FileStreamHandle.html">TaskJuggler::TextParser::Scanner::FileStreamHandle</a></li>
536
+
537
+ <li><a href="../TaskJuggler/TextParser/Scanner/MacroStackEntry.html">TaskJuggler::TextParser::Scanner::MacroStackEntry</a></li>
538
+
539
+ <li><a href="../TaskJuggler/TextParser/Scanner/StreamHandle.html">TaskJuggler::TextParser::Scanner::StreamHandle</a></li>
540
+
541
+ <li><a href="../TaskJuggler/TextParser/SourceFileInfo.html">TaskJuggler::TextParser::SourceFileInfo</a></li>
542
+
543
+ <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
544
+
545
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
546
+
547
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
548
+
549
+ <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
550
+
551
+ <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
552
+
553
+ <li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
554
+
555
+ <li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
556
+
557
+ <li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
558
+
559
+ <li><a href="../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
560
+
561
+ <li><a href="../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
562
+
563
+ <li><a href="../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
564
+
565
+ <li><a href="../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
566
+
567
+ <li><a href="../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
568
+
569
+ <li><a href="../TaskJuggler/Tj3.html">TaskJuggler::Tj3</a></li>
570
+
571
+ <li><a href="../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
572
+
573
+ <li><a href="../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
574
+
575
+ <li><a href="../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
576
+
577
+ <li><a href="../TaskJuggler/Tj3Man.html">TaskJuggler::Tj3Man</a></li>
578
+
579
+ <li><a href="../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
580
+
581
+ <li><a href="../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
582
+
583
+ <li><a href="../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
584
+
585
+ <li><a href="../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
586
+
587
+ <li><a href="../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
588
+
589
+ <li><a href="../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
590
+
591
+ <li><a href="../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
592
+
593
+ <li><a href="../TaskJuggler/TjRuntimeError.html">TaskJuggler::TjRuntimeError</a></li>
594
+
595
+ <li><a href="../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
596
+
597
+ <li><a href="../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
598
+
599
+ <li><a href="../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
600
+
601
+ <li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
602
+
603
+ <li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
604
+
605
+ <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
606
+
607
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
608
+
609
+ <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
610
+
611
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
612
+
613
+ <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
614
+
615
+ <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
616
+
617
+ <li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
618
+
619
+ <li><a href="../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
620
+
621
+ <li><a href="../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
622
+
623
+ <li><a href="../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
624
+
625
+ <li><a href="../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
626
+
627
+ <li><a href="../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
628
+
629
+ <li><a href="../Diff.html">Diff</a></li>
630
+
631
+ <li><a href="../Diff/Hunk.html">Diff::Hunk</a></li>
632
+
633
+ <li><a href="../AppConfig.html">AppConfig</a></li>
634
+
635
+ <li><a href="../Diffable.html">Diffable</a></li>
636
+
637
+ <li><a href="../DiffableString.html">DiffableString</a></li>
638
+
639
+ <li><a href="../Object.html">Object</a></li>
640
+
641
+ <li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
642
+
643
+ <li><a href="../String.html">String</a></li>
644
+
645
+ </ul>
646
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
647
+ </div>
648
+
649
+
650
+ </div>
651
+ </div>
652
+
653
+ <div id="documentation">
654
+ <h1 class="class">TaskJuggler::ProjectFileParser</h1>
655
+
656
+ <div id="description">
657
+ <p>
658
+ This class specializes the <a href="TextParser.html">TextParser</a> class
659
+ for use with <a href="../TaskJuggler.html">TaskJuggler</a> project files
660
+ (TJP Files). The primary purpose is to provide functionality that make it
661
+ more comfortable to define the <a
662
+ href="../TaskJuggler.html">TaskJuggler</a> syntax in a form that is human
663
+ creatable but also powerful enough to define the data structures the parser
664
+ needs to understand the syntax.
665
+ </p>
666
+ <p>
667
+ By adding some additional information to the syntax rules, we can also
668
+ generate the complete reference manual from this rule set.
669
+ </p>
670
+
671
+ </div>
672
+
673
+ <!-- Constants -->
674
+
675
+
676
+ <!-- Attributes -->
677
+
678
+
679
+ <!-- Methods -->
680
+
681
+ <div id="public-class-method-details" class="method-section section">
682
+ <h3 class="section-header">Public Class Methods</h3>
683
+
684
+
685
+ <div id="new-method" class="method-detail ">
686
+ <a name="method-c-new"></a>
687
+
688
+ <div class="method-heading">
689
+
690
+ <span class="method-name">new</span><span
691
+ class="method-args">(messageHandler)</span>
692
+ <span class="method-click-advice">click to toggle source</span>
693
+
694
+ </div>
695
+
696
+ <div class="method-description">
697
+
698
+ <p>
699
+ Create the parser object. <em>messageHandler</em> is a TjMessageHandler
700
+ that is used for error reporting.
701
+ </p>
702
+
703
+
704
+
705
+ <div class="method-source-code"
706
+ id="new-source">
707
+ <pre>
708
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 36</span>
709
+ 36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">messageHandler</span>)
710
+ 37: <span class="ruby-keyword kw">super</span>
711
+ 38:
712
+ 39: <span class="ruby-ivar">@tjMessageHandler</span> = <span class="ruby-identifier">messageHandler</span>
713
+ 40:
714
+ 41: <span class="ruby-comment cmt"># Define the token types that the ProjectFileScanner may return for</span>
715
+ 42: <span class="ruby-comment cmt"># variable elements.</span>
716
+ 43: <span class="ruby-ivar">@variables</span> = [ <span class="ruby-value">:INTEGER</span>, <span class="ruby-value">:FLOAT</span>, <span class="ruby-value">:DATE</span>, <span class="ruby-value">:TIME</span>, <span class="ruby-value">:STRING</span>, <span class="ruby-value">:LITERAL</span>,
717
+ 44: <span class="ruby-value">:ID</span>, <span class="ruby-value">:ID_WITH_COLON</span>, <span class="ruby-value">:ABSOLUTE_ID</span>, <span class="ruby-value">:MACRO</span> ]
718
+ 45:
719
+ 46: <span class="ruby-identifier">initRules</span>
720
+ 47: <span class="ruby-identifier">updateParserTables</span>
721
+ 48:
722
+ 49: <span class="ruby-ivar">@project</span> = <span class="ruby-keyword kw">nil</span>
723
+ 50: <span class="ruby-keyword kw">end</span></pre>
724
+ </div>
725
+
726
+ </div>
727
+
728
+
729
+
730
+
731
+ </div>
732
+
733
+
734
+ </div>
735
+
736
+ <div id="public-instance-method-details" class="method-section section">
737
+ <h3 class="section-header">Public Instance Methods</h3>
738
+
739
+
740
+ <div id="close-method" class="method-detail ">
741
+ <a name="method-i-close"></a>
742
+
743
+ <div class="method-heading">
744
+
745
+ <span class="method-name">close</span><span
746
+ class="method-args">()</span>
747
+ <span class="method-click-advice">click to toggle source</span>
748
+
749
+ </div>
750
+
751
+ <div class="method-description">
752
+
753
+ <p>
754
+ Call this function to cleanup the parser structures after the file
755
+ processing has been completed.
756
+ </p>
757
+
758
+
759
+
760
+ <div class="method-source-code"
761
+ id="close-source">
762
+ <pre>
763
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 70</span>
764
+ 70: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
765
+ 71: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">close</span>
766
+ 72: <span class="ruby-keyword kw">end</span></pre>
767
+ </div>
768
+
769
+ </div>
770
+
771
+
772
+
773
+
774
+ </div>
775
+
776
+
777
+ <div id="next-oken-method" class="method-detail ">
778
+ <a name="method-i-nextToken"></a>
779
+
780
+ <div class="method-heading">
781
+
782
+ <span class="method-name">nextToken</span><span
783
+ class="method-args">()</span>
784
+ <span class="method-click-advice">click to toggle source</span>
785
+
786
+ </div>
787
+
788
+ <div class="method-description">
789
+
790
+ <p>
791
+ This function will deliver the next token from the scanner. A token is a
792
+ two element Array that contains the ID or type of the token as well as the
793
+ text string of the token.
794
+ </p>
795
+
796
+
797
+
798
+ <div class="method-source-code"
799
+ id="next-oken-source">
800
+ <pre>
801
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 77</span>
802
+ 77: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
803
+ 78: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">nextToken</span>
804
+ 79: <span class="ruby-keyword kw">end</span></pre>
805
+ </div>
806
+
807
+ </div>
808
+
809
+
810
+
811
+
812
+ </div>
813
+
814
+
815
+ <div id="open-method" class="method-detail ">
816
+ <a name="method-i-open"></a>
817
+
818
+ <div class="method-heading">
819
+
820
+ <span class="method-name">open</span><span
821
+ class="method-args">(file, master, fileNameIsBuffer = false)</span>
822
+ <span class="method-click-advice">click to toggle source</span>
823
+
824
+ </div>
825
+
826
+ <div class="method-description">
827
+
828
+ <p>
829
+ Call this function with the master file to start processing a TJP file or a
830
+ set of TJP files.
831
+ </p>
832
+
833
+
834
+
835
+ <div class="method-source-code"
836
+ id="open-source">
837
+ <pre>
838
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 54</span>
839
+ 54: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">master</span>, <span class="ruby-identifier">fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>)
840
+ 55: <span class="ruby-ivar">@scanner</span> = <span class="ruby-constant">ProjectFileScanner</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">file</span>, <span class="ruby-ivar">@messageHandler</span>)
841
+ 56: <span class="ruby-comment cmt"># We need the ProjectFileScanner object for error reporting.</span>
842
+ 57: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">master</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">fileNameIsBuffer</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">file</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">'.'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">file</span>[<span class="ruby-value">4</span>, <span class="ruby-value">4</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'.tjp'</span>
843
+ 58: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'illegal_extension'</span>, <span class="ruby-value str">&quot;Project file name must end with &quot;</span> <span class="ruby-operator">+</span>
844
+ 59: <span class="ruby-value str">'\.tjp\ extension'</span>)
845
+ 60: <span class="ruby-keyword kw">end</span>
846
+ 61: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileNameIsBuffer</span>)
847
+ 62:
848
+ 63: <span class="ruby-ivar">@property</span> = <span class="ruby-keyword kw">nil</span>
849
+ 64: <span class="ruby-ivar">@scenarioIdx</span> = <span class="ruby-value">0</span>
850
+ 65: <span class="ruby-identifier">initFileStack</span>
851
+ 66: <span class="ruby-keyword kw">end</span></pre>
852
+ </div>
853
+
854
+ </div>
855
+
856
+
857
+
858
+
859
+ </div>
860
+
861
+
862
+ <div id="parse-eport-ttributes-method" class="method-detail ">
863
+ <a name="method-i-parseReportAttributes"></a>
864
+
865
+ <div class="method-heading">
866
+
867
+ <span class="method-name">parseReportAttributes</span><span
868
+ class="method-args">(report, attributes)</span>
869
+ <span class="method-click-advice">click to toggle source</span>
870
+
871
+ </div>
872
+
873
+ <div class="method-description">
874
+
875
+
876
+
877
+
878
+
879
+ <div class="method-source-code"
880
+ id="parse-eport-ttributes-source">
881
+ <pre>
882
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 104</span>
883
+ 104: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parseReportAttributes</span>(<span class="ruby-identifier">report</span>, <span class="ruby-identifier">attributes</span>)
884
+ 105: <span class="ruby-identifier">open</span>(<span class="ruby-identifier">attributes</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-keyword kw">true</span>)
885
+ 106: <span class="ruby-ivar">@property</span> = <span class="ruby-identifier">report</span>
886
+ 107: <span class="ruby-ivar">@project</span> = <span class="ruby-identifier">report</span>.<span class="ruby-identifier">project</span>
887
+ 108: <span class="ruby-identifier">parse</span>(<span class="ruby-value">:reportAttributes</span>)
888
+ 109: <span class="ruby-keyword kw">end</span></pre>
889
+ </div>
890
+
891
+ </div>
892
+
893
+
894
+
895
+
896
+ </div>
897
+
898
+
899
+ <div id="return-oken-method" class="method-detail ">
900
+ <a name="method-i-returnToken"></a>
901
+
902
+ <div class="method-heading">
903
+
904
+ <span class="method-name">returnToken</span><span
905
+ class="method-args">(token)</span>
906
+ <span class="method-click-advice">click to toggle source</span>
907
+
908
+ </div>
909
+
910
+ <div class="method-description">
911
+
912
+ <p>
913
+ This function can be used to return tokens. Returned tokens will be pushed
914
+ on a LIFO stack. To preserve the order of the original tokens the last
915
+ token must be returned first. This mechanism is used to implement
916
+ look-ahead functionality.
917
+ </p>
918
+
919
+
920
+
921
+ <div class="method-source-code"
922
+ id="return-oken-source">
923
+ <pre>
924
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 85</span>
925
+ 85: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
926
+ 86: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
927
+ 87: <span class="ruby-keyword kw">end</span></pre>
928
+ </div>
929
+
930
+ </div>
931
+
932
+
933
+
934
+
935
+ </div>
936
+
937
+
938
+ <div id="set-lobal-acros-method" class="method-detail ">
939
+ <a name="method-i-setGlobalMacros"></a>
940
+
941
+ <div class="method-heading">
942
+
943
+ <span class="method-name">setGlobalMacros</span><span
944
+ class="method-args">()</span>
945
+ <span class="method-click-advice">click to toggle source</span>
946
+
947
+ </div>
948
+
949
+ <div class="method-description">
950
+
951
+ <p>
952
+ A set of standard marcros is defined in all files as soon as the project
953
+ header has been read. Calling this functions gets the values from @project
954
+ and inserts the Macro objects into the <a
955
+ href="ProjectFileScanner.html">ProjectFileScanner</a>.
956
+ </p>
957
+
958
+
959
+
960
+ <div class="method-source-code"
961
+ id="set-lobal-acros-source">
962
+ <pre>
963
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 92</span>
964
+ 92: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setGlobalMacros</span>
965
+ 93: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">addMacro</span>(<span class="ruby-constant">Macro</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'projectstart'</span>, <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>].<span class="ruby-identifier">to_s</span>,
966
+ 94: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">sourceFileInfo</span>))
967
+ 95: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">addMacro</span>(<span class="ruby-constant">Macro</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'projectend'</span>, <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>].<span class="ruby-identifier">to_s</span>,
968
+ 96: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">sourceFileInfo</span>))
969
+ 97: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">addMacro</span>(<span class="ruby-constant">Macro</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'now'</span>, <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>].<span class="ruby-identifier">to_s</span>,
970
+ 98: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">sourceFileInfo</span>))
971
+ 99: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">addMacro</span>(<span class="ruby-constant">Macro</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'today'</span>, <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'now'</span>].
972
+ 100: <span class="ruby-identifier">to_s</span>(<span class="ruby-ivar">@project</span>[<span class="ruby-value str">'timeFormat'</span>]),
973
+ 101: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">sourceFileInfo</span>))
974
+ 102: <span class="ruby-keyword kw">end</span></pre>
975
+ </div>
976
+
977
+ </div>
978
+
979
+
980
+
981
+
982
+ </div>
983
+
984
+
985
+ </div>
986
+
987
+ <div id="private-instance-method-details" class="method-section section">
988
+ <h3 class="section-header">Private Instance Methods</h3>
989
+
990
+
991
+ <div id="all-r-othing-ist-ule-method" class="method-detail ">
992
+ <a name="method-i-allOrNothingListRule"></a>
993
+
994
+ <div class="method-heading">
995
+
996
+ <span class="method-name">allOrNothingListRule</span><span
997
+ class="method-args">(name, items)</span>
998
+ <span class="method-click-advice">click to toggle source</span>
999
+
1000
+ </div>
1001
+
1002
+ <div class="method-description">
1003
+
1004
+ <p>
1005
+ This function creates a set of rules to describe a list of keywords.
1006
+ <em>name</em> is the name of the top-level rule and <em>items</em> can be a
1007
+ Hash or Array. The array just contains the allowed keywords, the Hash
1008
+ contains keyword/description pairs. The description is used to describe the
1009
+ keyword in the manual. The syntax supports two special cases. A
1010
+ &#8217;*&#8217; means all items in the list and &#8217;-&#8217; means the
1011
+ list is empty.
1012
+ </p>
1013
+
1014
+
1015
+
1016
+ <div class="method-source-code"
1017
+ id="all-r-othing-ist-ule-source">
1018
+ <pre>
1019
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 296</span>
1020
+ 296: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">allOrNothingListRule</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">items</span>)
1021
+ 297: <span class="ruby-identifier">newRule</span>(<span class="ruby-identifier">name</span>) {
1022
+ 298: <span class="ruby-comment cmt"># A '*' means all possible items should be in the list.</span>
1023
+ 299: <span class="ruby-identifier">pattern</span>(<span class="ruby-node">%( _* )</span>, <span class="ruby-identifier">lambda</span> {
1024
+ 300: <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>([ <span class="ruby-value str">'*'</span> ])
1025
+ 301: })
1026
+ 302: <span class="ruby-identifier">descr</span>(<span class="ruby-value str">'A shortcut for all items'</span>)
1027
+ 303: <span class="ruby-comment cmt"># A '-' means the list should be empty.</span>
1028
+ 304: <span class="ruby-identifier">pattern</span>([ <span class="ruby-value str">'_-'</span> ], <span class="ruby-identifier">lambda</span> {
1029
+ 305: <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>
1030
+ 306: })
1031
+ 307: <span class="ruby-identifier">descr</span>(<span class="ruby-value str">'No items'</span>)
1032
+ 308: <span class="ruby-comment cmt"># Or the list consists of one or more comma separated keywords.</span>
1033
+ 309: <span class="ruby-identifier">pattern</span>([ <span class="ruby-node">&quot;!#{name}_AoN_ruleItems&quot;</span> ], <span class="ruby-identifier">lambda</span> {
1034
+ 310: <span class="ruby-constant">KeywordArray</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@val</span>[<span class="ruby-value">0</span>])
1035
+ 311: })
1036
+ 312: }
1037
+ 313: <span class="ruby-comment cmt"># Create the rule for the comma separated list.</span>
1038
+ 314: <span class="ruby-identifier">newRule</span>(<span class="ruby-node">&quot;#{name}_AoN_ruleItems&quot;</span>) {
1039
+ 315: <span class="ruby-identifier">listRule</span>(<span class="ruby-node">&quot;more#{name}_AoN_ruleItems&quot;</span>, <span class="ruby-node">&quot;!#{name}_AoN_ruleItem&quot;</span>)
1040
+ 316: }
1041
+ 317: <span class="ruby-comment cmt"># Create the rule for the keywords with their description.</span>
1042
+ 318: <span class="ruby-identifier">newRule</span>(<span class="ruby-node">&quot;#{name}_AoN_ruleItem&quot;</span>) {
1043
+ 319: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">items</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
1044
+ 320: <span class="ruby-identifier">items</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span> <span class="ruby-identifier">singlePattern</span>(<span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">keyword</span>) }
1045
+ 321: <span class="ruby-keyword kw">else</span>
1046
+ 322: <span class="ruby-identifier">items</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">description</span><span class="ruby-operator">|</span>
1047
+ 323: <span class="ruby-identifier">singlePattern</span>(<span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">keyword</span>)
1048
+ 324: <span class="ruby-identifier">descr</span>(<span class="ruby-identifier">description</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">description</span>
1049
+ 325: <span class="ruby-keyword kw">end</span>
1050
+ 326: <span class="ruby-keyword kw">end</span>
1051
+ 327: }
1052
+ 328: <span class="ruby-keyword kw">end</span></pre>
1053
+ </div>
1054
+
1055
+ </div>
1056
+
1057
+
1058
+
1059
+
1060
+ </div>
1061
+
1062
+
1063
+ <div id="also-method" class="method-detail ">
1064
+ <a name="method-i-also"></a>
1065
+
1066
+ <div class="method-heading">
1067
+
1068
+ <span class="method-name">also</span><span
1069
+ class="method-args">(seeAlso)</span>
1070
+ <span class="method-click-advice">click to toggle source</span>
1071
+
1072
+ </div>
1073
+
1074
+ <div class="method-description">
1075
+
1076
+ <p>
1077
+ Add a reference to another pattern. This information is only used to
1078
+ generate the documentation for the patterns of this rule.
1079
+ </p>
1080
+
1081
+
1082
+
1083
+ <div class="method-source-code"
1084
+ id="also-source">
1085
+ <pre>
1086
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 399</span>
1087
+ 399: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">also</span>(<span class="ruby-identifier">seeAlso</span>)
1088
+ 400: <span class="ruby-identifier">seeAlso</span> = [ <span class="ruby-identifier">seeAlso</span> ] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">seeAlso</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
1089
+ 401: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">setSeeAlso</span>(<span class="ruby-identifier">seeAlso</span>)
1090
+ 402: <span class="ruby-keyword kw">end</span></pre>
1091
+ </div>
1092
+
1093
+ </div>
1094
+
1095
+
1096
+
1097
+
1098
+ </div>
1099
+
1100
+
1101
+ <div id="arg-method" class="method-detail ">
1102
+ <a name="method-i-arg"></a>
1103
+
1104
+ <div class="method-heading">
1105
+
1106
+ <span class="method-name">arg</span><span
1107
+ class="method-args">(idx, name, text)</span>
1108
+ <span class="method-click-advice">click to toggle source</span>
1109
+
1110
+ </div>
1111
+
1112
+ <div class="method-description">
1113
+
1114
+ <p>
1115
+ Add documentation for the arguments with index <em>idx</em> of the current
1116
+ pattern of the currently processed rule. <em>name</em> is that should be
1117
+ used for this variable. <em>text</em> is the documentation text.
1118
+ </p>
1119
+
1120
+
1121
+
1122
+ <div class="method-source-code"
1123
+ id="arg-source">
1124
+ <pre>
1125
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 387</span>
1126
+ 387: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">arg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">text</span>)
1127
+ 388: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">setArg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">TokenDoc</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">text</span>))
1128
+ 389: <span class="ruby-keyword kw">end</span></pre>
1129
+ </div>
1130
+
1131
+ </div>
1132
+
1133
+
1134
+
1135
+
1136
+ </div>
1137
+
1138
+
1139
+ <div id="check-ooking-method" class="method-detail ">
1140
+ <a name="method-i-checkBooking"></a>
1141
+
1142
+ <div class="method-heading">
1143
+
1144
+ <span class="method-name">checkBooking</span><span
1145
+ class="method-args">(task, resource)</span>
1146
+ <span class="method-click-advice">click to toggle source</span>
1147
+
1148
+ </div>
1149
+
1150
+ <div class="method-description">
1151
+
1152
+ <p>
1153
+ Convenience function to check the integrity of a booking statement.
1154
+ </p>
1155
+
1156
+
1157
+
1158
+ <div class="method-source-code"
1159
+ id="check-ooking-source">
1160
+ <pre>
1161
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 152</span>
1162
+ 152: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkBooking</span>(<span class="ruby-identifier">task</span>, <span class="ruby-identifier">resource</span>)
1163
+ 153: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">task</span>.<span class="ruby-identifier">leaf?</span>
1164
+ 154: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_no_leaf'</span>, <span class="ruby-node">&quot;#{task.fullId} is not a leaf task&quot;</span>,
1165
+ 155: <span class="ruby-ivar">@sourceFileInfo</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">task</span>)
1166
+ 156: <span class="ruby-keyword kw">end</span>
1167
+ 157: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">task</span>[<span class="ruby-value str">'milestone'</span>, <span class="ruby-ivar">@scenarioIdx</span>]
1168
+ 158: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_milestone'</span>, <span class="ruby-value str">&quot;You cannot add bookings to a milestone&quot;</span>,
1169
+ 159: <span class="ruby-ivar">@sourceFileInfo</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">task</span>)
1170
+ 160: <span class="ruby-keyword kw">end</span>
1171
+ 161: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">resource</span>.<span class="ruby-identifier">leaf?</span>
1172
+ 162: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'booking_group'</span>, <span class="ruby-value str">&quot;You cannot book a group resource&quot;</span>,
1173
+ 163: <span class="ruby-ivar">@sourceFileInfo</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">task</span>)
1174
+ 164: <span class="ruby-keyword kw">end</span>
1175
+ 165: <span class="ruby-keyword kw">end</span></pre>
1176
+ </div>
1177
+
1178
+ </div>
1179
+
1180
+
1181
+
1182
+
1183
+ </div>
1184
+
1185
+
1186
+ <div id="check-ontainer-method" class="method-detail ">
1187
+ <a name="method-i-checkContainer"></a>
1188
+
1189
+ <div class="method-heading">
1190
+
1191
+ <span class="method-name">checkContainer</span><span
1192
+ class="method-args">(attribute)</span>
1193
+ <span class="method-click-advice">click to toggle source</span>
1194
+
1195
+ </div>
1196
+
1197
+ <div class="method-description">
1198
+
1199
+ <p>
1200
+ Make sure that certain attributes are not used after sub properties have
1201
+ been added to a property.
1202
+ </p>
1203
+
1204
+
1205
+
1206
+ <div class="method-source-code"
1207
+ id="check-ontainer-source">
1208
+ <pre>
1209
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 126</span>
1210
+ 126: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkContainer</span>(<span class="ruby-identifier">attribute</span>)
1211
+ 127: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">container?</span>
1212
+ 128: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'container_attribute'</span>,
1213
+ 129: <span class="ruby-node">&quot;The attribute #{attribute} may not be used for this property &quot;</span> <span class="ruby-operator">+</span>
1214
+ 130: <span class="ruby-value str">'after sub properties have been added.'</span>, <span class="ruby-ivar">@sourceFileInfo</span>[<span class="ruby-value">0</span>],
1215
+ 131: <span class="ruby-ivar">@property</span>)
1216
+ 132: <span class="ruby-keyword kw">end</span>
1217
+ 133: <span class="ruby-keyword kw">end</span></pre>
1218
+ </div>
1219
+
1220
+ </div>
1221
+
1222
+
1223
+
1224
+
1225
+ </div>
1226
+
1227
+
1228
+ <div id="check-nterval-method" class="method-detail ">
1229
+ <a name="method-i-checkInterval"></a>
1230
+
1231
+ <div class="method-heading">
1232
+
1233
+ <span class="method-name">checkInterval</span><span
1234
+ class="method-args">(iv)</span>
1235
+ <span class="method-click-advice">click to toggle source</span>
1236
+
1237
+ </div>
1238
+
1239
+ <div class="method-description">
1240
+
1241
+ <p>
1242
+ Convenience function to check that an <a href="Interval.html">Interval</a>
1243
+ fits completely within the project time frame.
1244
+ </p>
1245
+
1246
+
1247
+
1248
+ <div class="method-source-code"
1249
+ id="check-nterval-source">
1250
+ <pre>
1251
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 137</span>
1252
+ 137: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkInterval</span>(<span class="ruby-identifier">iv</span>)
1253
+ 138: <span class="ruby-comment cmt"># Make sure the interval is within the project time frame.</span>
1254
+ 139: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">iv</span>.<span class="ruby-identifier">start</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>]
1255
+ 140: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'interval_start_in_range'</span>,
1256
+ 141: <span class="ruby-node">&quot;Start date #{iv.start} must be within the project time frame &quot;</span> <span class="ruby-operator">+</span>
1257
+ 142: <span class="ruby-node">&quot;(#{@project['start']} - #{@project['end']})&quot;</span>)
1258
+ 143: <span class="ruby-keyword kw">end</span>
1259
+ 144: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">iv</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'start'</span>] <span class="ruby-operator">||</span> <span class="ruby-identifier">iv</span>.<span class="ruby-identifier">end</span> <span class="ruby-operator">&gt;</span> <span class="ruby-ivar">@project</span>[<span class="ruby-value str">'end'</span>]
1260
+ 145: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'interval_end_in_range'</span>,
1261
+ 146: <span class="ruby-node">&quot;End date #{iv.end} must be within the project time frame &quot;</span> <span class="ruby-operator">+</span>
1262
+ 147: <span class="ruby-node">&quot;(#{@project['start']} - #{@project['end']})&quot;</span>)
1263
+ 148: <span class="ruby-keyword kw">end</span>
1264
+ 149: <span class="ruby-keyword kw">end</span></pre>
1265
+ </div>
1266
+
1267
+ </div>
1268
+
1269
+
1270
+
1271
+
1272
+ </div>
1273
+
1274
+
1275
+ <div id="column-itle-method" class="method-detail ">
1276
+ <a name="method-i-columnTitle"></a>
1277
+
1278
+ <div class="method-heading">
1279
+
1280
+ <span class="method-name">columnTitle</span><span
1281
+ class="method-args">(colId)</span>
1282
+ <span class="method-click-advice">click to toggle source</span>
1283
+
1284
+ </div>
1285
+
1286
+ <div class="method-description">
1287
+
1288
+ <p>
1289
+ Determine the title of the column with the ID <em>colId</em>. The title may
1290
+ be from the static set or be from a user defined attribute.
1291
+ </p>
1292
+
1293
+
1294
+
1295
+ <div class="method-source-code"
1296
+ id="column-itle-source">
1297
+ <pre>
1298
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 412</span>
1299
+ 412: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">columnTitle</span>(<span class="ruby-identifier">colId</span>)
1300
+ 413: <span class="ruby-constant">TableReport</span>.<span class="ruby-identifier">defaultColumnTitle</span>(<span class="ruby-identifier">colId</span>) <span class="ruby-operator">||</span>
1301
+ 414: <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">attributeName</span>(<span class="ruby-identifier">colId</span>)
1302
+ 415: <span class="ruby-keyword kw">end</span></pre>
1303
+ </div>
1304
+
1305
+ </div>
1306
+
1307
+
1308
+
1309
+
1310
+ </div>
1311
+
1312
+
1313
+ <div id="comma-ist-ule-method" class="method-detail ">
1314
+ <a name="method-i-commaListRule"></a>
1315
+
1316
+ <div class="method-heading">
1317
+
1318
+ <span class="method-name">commaListRule</span><span
1319
+ class="method-args">(listItem)</span>
1320
+ <span class="method-click-advice">click to toggle source</span>
1321
+
1322
+ </div>
1323
+
1324
+ <div class="method-description">
1325
+
1326
+
1327
+
1328
+
1329
+
1330
+ <div class="method-source-code"
1331
+ id="comma-ist-ule-source">
1332
+ <pre>
1333
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 343</span>
1334
+ 343: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">commaListRule</span>(<span class="ruby-identifier">listItem</span>)
1335
+ 344: <span class="ruby-identifier">optional</span>
1336
+ 345: <span class="ruby-identifier">repeatable</span>
1337
+ 346: <span class="ruby-identifier">pattern</span>([ <span class="ruby-value str">'_,'</span>, <span class="ruby-node">&quot;#{listItem}&quot;</span> ], <span class="ruby-identifier">lambda</span> {
1338
+ 347: <span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>]
1339
+ 348: })
1340
+ 349: <span class="ruby-keyword kw">end</span></pre>
1341
+ </div>
1342
+
1343
+ </div>
1344
+
1345
+
1346
+
1347
+
1348
+ </div>
1349
+
1350
+
1351
+ <div id="descr-method" class="method-detail ">
1352
+ <a name="method-i-descr"></a>
1353
+
1354
+ <div class="method-heading">
1355
+
1356
+ <span class="method-name">descr</span><span
1357
+ class="method-args">(text)</span>
1358
+ <span class="method-click-advice">click to toggle source</span>
1359
+
1360
+ </div>
1361
+
1362
+ <div class="method-description">
1363
+
1364
+ <p>
1365
+ Add documentation for patterns that only consists of a single terminal
1366
+ token.
1367
+ </p>
1368
+
1369
+
1370
+
1371
+ <div class="method-source-code"
1372
+ id="descr-source">
1373
+ <pre>
1374
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 375</span>
1375
+ 375: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">descr</span>(<span class="ruby-identifier">text</span>)
1376
+ 376: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-value">1</span> <span class="ruby-operator">||</span>
1377
+ 377: (<span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">patterns</span>[<span class="ruby-value">1</span>][<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value">:literal</span> <span class="ruby-operator">&amp;&amp;</span>
1378
+ 378: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">patterns</span>[<span class="ruby-value">1</span>][<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value">:variable</span>)
1379
+ 379: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'descr() may only be used for patterns with terminal tokens.'</span>
1380
+ 380: <span class="ruby-keyword kw">end</span>
1381
+ 381: <span class="ruby-identifier">arg</span>(<span class="ruby-value">0</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">text</span>)
1382
+ 382: <span class="ruby-keyword kw">end</span></pre>
1383
+ </div>
1384
+
1385
+ </div>
1386
+
1387
+
1388
+
1389
+
1390
+ </div>
1391
+
1392
+
1393
+ <div id="doc-method" class="method-detail ">
1394
+ <a name="method-i-doc"></a>
1395
+
1396
+ <div class="method-heading">
1397
+
1398
+ <span class="method-name">doc</span><span
1399
+ class="method-args">(keyword, text)</span>
1400
+ <span class="method-click-advice">click to toggle source</span>
1401
+
1402
+ </div>
1403
+
1404
+ <div class="method-description">
1405
+
1406
+ <p>
1407
+ Add documentation for the current pattern of the currently processed rule.
1408
+ </p>
1409
+
1410
+
1411
+
1412
+ <div class="method-source-code"
1413
+ id="doc-source">
1414
+ <pre>
1415
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 369</span>
1416
+ 369: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">doc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">text</span>)
1417
+ 370: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">setDoc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">text</span>)
1418
+ 371: <span class="ruby-keyword kw">end</span></pre>
1419
+ </div>
1420
+
1421
+ </div>
1422
+
1423
+
1424
+
1425
+
1426
+ </div>
1427
+
1428
+
1429
+ <div id="example-method" class="method-detail ">
1430
+ <a name="method-i-example"></a>
1431
+
1432
+ <div class="method-heading">
1433
+
1434
+ <span class="method-name">example</span><span
1435
+ class="method-args">(file, tag = nil)</span>
1436
+ <span class="method-click-advice">click to toggle source</span>
1437
+
1438
+ </div>
1439
+
1440
+ <div class="method-description">
1441
+
1442
+ <p>
1443
+ Add a TJP file or parts of it as an example. The TJP <em>file</em> must be
1444
+ in the directory test/TestSuite/Syntax/Correct. <em>tag</em> can be used to
1445
+ identify that only a part of the file should be included.
1446
+ </p>
1447
+
1448
+
1449
+
1450
+ <div class="method-source-code"
1451
+ id="example-source">
1452
+ <pre>
1453
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 407</span>
1454
+ 407: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">example</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span> = <span class="ruby-keyword kw">nil</span>)
1455
+ 408: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">setExample</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span>)
1456
+ 409: <span class="ruby-keyword kw">end</span></pre>
1457
+ </div>
1458
+
1459
+ </div>
1460
+
1461
+
1462
+
1463
+
1464
+ </div>
1465
+
1466
+
1467
+ <div id="extend-roperty-et-efinition-method" class="method-detail ">
1468
+ <a name="method-i-extendPropertySetDefinition"></a>
1469
+
1470
+ <div class="method-heading">
1471
+
1472
+ <span class="method-name">extendPropertySetDefinition</span><span
1473
+ class="method-args">(type, default)</span>
1474
+ <span class="method-click-advice">click to toggle source</span>
1475
+
1476
+ </div>
1477
+
1478
+ <div class="method-description">
1479
+
1480
+ <p>
1481
+ The <a href="../TaskJuggler.html">TaskJuggler</a> syntax can be extended by
1482
+ the user when the properties are extended with user-defined attributes.
1483
+ These attribute definitions introduce keywords that have to be processed
1484
+ like the build-in keywords. The parser therefor needs to adapt on the fly
1485
+ to the new syntax. By calling this function, a <a
1486
+ href="../TaskJuggler.html">TaskJuggler</a> property can be extended with a
1487
+ new attribute. @propertySet determines what property should be extended.
1488
+ <em>type</em> is the attribute type, <em>default</em> is the default value.
1489
+ </p>
1490
+
1491
+
1492
+
1493
+ <div class="method-source-code"
1494
+ id="extend-roperty-et-efinition-source">
1495
+ <pre>
1496
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 174</span>
1497
+ 174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">extendPropertySetDefinition</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">default</span>)
1498
+ 175: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">knownAttribute?</span>(<span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>])
1499
+ 176: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'extend_redefinition'</span>,
1500
+ 177: <span class="ruby-node">&quot;The extended attribute #{@val[1]} has already been defined.&quot;</span>)
1501
+ 178: <span class="ruby-keyword kw">end</span>
1502
+ 179:
1503
+ 180: <span class="ruby-comment cmt"># Determine the values for scenarioSpecific and inheritable.</span>
1504
+ 181: <span class="ruby-identifier">inherit</span> = <span class="ruby-keyword kw">false</span>
1505
+ 182: <span class="ruby-identifier">scenarioSpecific</span> = <span class="ruby-keyword kw">false</span>
1506
+ 183: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@val</span>[<span class="ruby-value">3</span>].<span class="ruby-identifier">nil?</span>
1507
+ 184: <span class="ruby-ivar">@val</span>[<span class="ruby-value">3</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">option</span><span class="ruby-operator">|</span>
1508
+ 185: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">option</span>
1509
+ 186: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'inherit'</span>
1510
+ 187: <span class="ruby-identifier">inherit</span> = <span class="ruby-keyword kw">true</span>
1511
+ 188: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'scenariospecific'</span>
1512
+ 189: <span class="ruby-identifier">scenarioSpecific</span> = <span class="ruby-keyword kw">true</span>
1513
+ 190: <span class="ruby-keyword kw">end</span>
1514
+ 191: <span class="ruby-keyword kw">end</span>
1515
+ 192: <span class="ruby-keyword kw">end</span>
1516
+ 193: <span class="ruby-comment cmt"># Register the new Attribute type with the Property set it should belong</span>
1517
+ 194: <span class="ruby-comment cmt"># to.</span>
1518
+ 195: <span class="ruby-ivar">@propertySet</span>.<span class="ruby-identifier">addAttributeType</span>(<span class="ruby-constant">AttributeDefinition</span>.<span class="ruby-identifier">new</span>(
1519
+ 196: <span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>], <span class="ruby-ivar">@val</span>[<span class="ruby-value">2</span>], <span class="ruby-identifier">type</span>, <span class="ruby-identifier">inherit</span>, <span class="ruby-keyword kw">false</span>, <span class="ruby-identifier">scenarioSpecific</span>, <span class="ruby-identifier">default</span>, <span class="ruby-keyword kw">true</span>))
1520
+ 197:
1521
+ 198: <span class="ruby-comment cmt"># Add the new user-defined attribute as reportable attribute to the parser</span>
1522
+ 199: <span class="ruby-comment cmt"># rule.</span>
1523
+ 200: <span class="ruby-identifier">oldCurrentRule</span> = <span class="ruby-ivar">@cr</span>
1524
+ 201: <span class="ruby-ivar">@cr</span> = <span class="ruby-ivar">@rules</span>[<span class="ruby-value">:reportableAttributes</span>]
1525
+ 202: <span class="ruby-identifier">singlePattern</span>(<span class="ruby-value str">'_'</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>])
1526
+ 203: <span class="ruby-identifier">descr</span>(<span class="ruby-ivar">@val</span>[<span class="ruby-value">2</span>])
1527
+ 204: <span class="ruby-ivar">@cr</span> = <span class="ruby-identifier">oldCurrentRule</span>
1528
+ 205:
1529
+ 206: <span class="ruby-identifier">scenarioSpecific</span>
1530
+ 207: <span class="ruby-keyword kw">end</span></pre>
1531
+ </div>
1532
+
1533
+ </div>
1534
+
1535
+
1536
+
1537
+
1538
+ </div>
1539
+
1540
+
1541
+ <div id="init-ile-tack-method" class="method-detail ">
1542
+ <a name="method-i-initFileStack"></a>
1543
+
1544
+ <div class="method-heading">
1545
+
1546
+ <span class="method-name">initFileStack</span><span
1547
+ class="method-args">()</span>
1548
+ <span class="method-click-advice">click to toggle source</span>
1549
+
1550
+ </div>
1551
+
1552
+ <div class="method-description">
1553
+
1554
+ <p>
1555
+ To manage certain variables that have file scope throughout a hierachie of
1556
+ nested include files, we use a @fileStack to track those variables. The
1557
+ values primarily live in their class instance variables. But upon return
1558
+ from an included file, we need to restore the old values. This function
1559
+ creates or resets the stack.
1560
+ </p>
1561
+
1562
+
1563
+
1564
+ <div class="method-source-code"
1565
+ id="init-ile-tack-source">
1566
+ <pre>
1567
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 423</span>
1568
+ 423: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initFileStack</span>
1569
+ 424: <span class="ruby-ivar">@fileStackVariables</span> = <span class="ruby-node">%( taskprefix reportprefix
1570
+ 425: resourceprefix accountprefix )</span>
1571
+ 426: <span class="ruby-identifier">stackEntry</span> = {}
1572
+ 427: <span class="ruby-ivar">@fileStackVariables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
1573
+ 428: <span class="ruby-identifier">stackEntry</span>[<span class="ruby-identifier">var</span>] = <span class="ruby-value str">''</span>
1574
+ 429: <span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">var</span>, <span class="ruby-value str">''</span>)
1575
+ 430: <span class="ruby-keyword kw">end</span>
1576
+ 431: <span class="ruby-ivar">@fileStack</span> = [ <span class="ruby-identifier">stackEntry</span> ]
1577
+ 432: <span class="ruby-keyword kw">end</span></pre>
1578
+ </div>
1579
+
1580
+ </div>
1581
+
1582
+
1583
+
1584
+
1585
+ </div>
1586
+
1587
+
1588
+ <div id="last-yntax-oken-method" class="method-detail ">
1589
+ <a name="method-i-lastSyntaxToken"></a>
1590
+
1591
+ <div class="method-heading">
1592
+
1593
+ <span class="method-name">lastSyntaxToken</span><span
1594
+ class="method-args">(idx)</span>
1595
+ <span class="method-click-advice">click to toggle source</span>
1596
+
1597
+ </div>
1598
+
1599
+ <div class="method-description">
1600
+
1601
+ <p>
1602
+ Restrict the syntax documentation of the previously defined pattern to the
1603
+ first <tt>idx</tt> tokens.
1604
+ </p>
1605
+
1606
+
1607
+
1608
+ <div class="method-source-code"
1609
+ id="last-yntax-oken-source">
1610
+ <pre>
1611
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 393</span>
1612
+ 393: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">lastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
1613
+ 394: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">setLastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
1614
+ 395: <span class="ruby-keyword kw">end</span></pre>
1615
+ </div>
1616
+
1617
+ </div>
1618
+
1619
+
1620
+
1621
+
1622
+ </div>
1623
+
1624
+
1625
+ <div id="list-ule-method" class="method-detail ">
1626
+ <a name="method-i-listRule"></a>
1627
+
1628
+ <div class="method-heading">
1629
+
1630
+ <span class="method-name">listRule</span><span
1631
+ class="method-args">(name, listItem)</span>
1632
+ <span class="method-click-advice">click to toggle source</span>
1633
+
1634
+ </div>
1635
+
1636
+ <div class="method-description">
1637
+
1638
+
1639
+
1640
+
1641
+
1642
+ <div class="method-source-code"
1643
+ id="list-ule-source">
1644
+ <pre>
1645
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 330</span>
1646
+ 330: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">listRule</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">listItem</span>)
1647
+ 331: <span class="ruby-identifier">pattern</span>([ <span class="ruby-node">&quot;#{listItem}&quot;</span>, <span class="ruby-node">&quot;!#{name}&quot;</span> ], <span class="ruby-identifier">lambda</span> {
1648
+ 332: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">include?</span>(<span class="ruby-ivar">@val</span>[<span class="ruby-value">0</span>])
1649
+ 333: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'duplicate_in_list'</span>,
1650
+ 334: <span class="ruby-value str">&quot;Duplicate items in list.&quot;</span>)
1651
+ 335: <span class="ruby-keyword kw">end</span>
1652
+ 336: [ <span class="ruby-ivar">@val</span>[<span class="ruby-value">0</span>] ] <span class="ruby-operator">+</span> (<span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">nil?</span> <span class="ruby-operator">?</span> [] <span class="ruby-operator">:</span> <span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>])
1653
+ 337: })
1654
+ 338: <span class="ruby-identifier">newRule</span>(<span class="ruby-identifier">name</span>) {
1655
+ 339: <span class="ruby-identifier">commaListRule</span>(<span class="ruby-identifier">listItem</span>)
1656
+ 340: }
1657
+ 341: <span class="ruby-keyword kw">end</span></pre>
1658
+ </div>
1659
+
1660
+ </div>
1661
+
1662
+
1663
+
1664
+
1665
+ </div>
1666
+
1667
+
1668
+ <div id="new-eport-method" class="method-detail ">
1669
+ <a name="method-i-newReport"></a>
1670
+
1671
+ <div class="method-heading">
1672
+
1673
+ <span class="method-name">newReport</span><span
1674
+ class="method-args">(id, name, type, sourceFileInfo)</span>
1675
+ <span class="method-click-advice">click to toggle source</span>
1676
+
1677
+ </div>
1678
+
1679
+ <div class="method-description">
1680
+
1681
+ <p>
1682
+ This method is a convenience wrapper around Project.new. It checks if the
1683
+ report name already exists. It also triggers the attribute inheritance.
1684
+ <tt>name</tt> is the name of the report, <tt>type</tt> is the report type.
1685
+ <tt>sourceFileInfo</tt> is a SourceFileInfo of the report definition. The
1686
+ method returns the newly created <a href="Report.html">Report</a>.
1687
+ </p>
1688
+
1689
+
1690
+
1691
+ <div class="method-source-code"
1692
+ id="new-eport-source">
1693
+ <pre>
1694
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 239</span>
1695
+ 239: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newReport</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">name</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">sourceFileInfo</span>)
1696
+ 240: <span class="ruby-ivar">@reportCounter</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1697
+ 241: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">'.'</span>
1698
+ 242: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@project</span>.<span class="ruby-identifier">reportByName</span>(<span class="ruby-identifier">name</span>)
1699
+ 243: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'report_redefinition'</span>,
1700
+ 244: <span class="ruby-node">&quot;A report with the name #{name} has already been defined.&quot;</span>)
1701
+ 245: <span class="ruby-keyword kw">end</span>
1702
+ 246: <span class="ruby-keyword kw">end</span>
1703
+ 247: <span class="ruby-ivar">@property</span> = <span class="ruby-constant">Report</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@project</span>, <span class="ruby-identifier">id</span> <span class="ruby-operator">||</span> <span class="ruby-node">&quot;report#{@reportCounter}&quot;</span>,
1704
+ 248: <span class="ruby-identifier">name</span>, <span class="ruby-keyword kw">nil</span>)
1705
+ 249: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">typeSpec</span> = <span class="ruby-identifier">type</span>
1706
+ 250: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">sourceFileInfo</span> = <span class="ruby-identifier">sourceFileInfo</span>
1707
+ 251: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">set</span>(<span class="ruby-value str">'formats'</span>, [ <span class="ruby-value">:tjp</span> ])
1708
+ 252: <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">inheritAttributes</span>
1709
+ 253: <span class="ruby-ivar">@property</span>
1710
+ 254: <span class="ruby-keyword kw">end</span></pre>
1711
+ </div>
1712
+
1713
+ </div>
1714
+
1715
+
1716
+
1717
+
1718
+ </div>
1719
+
1720
+
1721
+ <div id="new-ich-ext-method" class="method-detail ">
1722
+ <a name="method-i-newRichText"></a>
1723
+
1724
+ <div class="method-heading">
1725
+
1726
+ <span class="method-name">newRichText</span><span
1727
+ class="method-args">(text, sfi, tokenSet = nil)</span>
1728
+ <span class="method-click-advice">click to toggle source</span>
1729
+
1730
+ </div>
1731
+
1732
+ <div class="method-description">
1733
+
1734
+ <p>
1735
+ This function is primarily a wrapper around the <a
1736
+ href="RichText.html">RichText</a> constructor. It catches all <a
1737
+ href="RichTextScanner.html">RichTextScanner</a> processing problems and
1738
+ converts the exception data into a <a
1739
+ href="MessageHandler.html">MessageHandler</a> message that points to the
1740
+ correct location. This is necessary, because the <a
1741
+ href="RichText.html">RichText</a> parser knows nothing about the actual
1742
+ input file. So we have to map the error location in the <a
1743
+ href="RichText.html">RichText</a> input stream back to the position in the
1744
+ project file. <em>sfi</em> is the SourceFileInfo of the input string. To
1745
+ limit the supported set of variable tokens, a subset can be provided by
1746
+ <em>tokenSet</em>.
1747
+ </p>
1748
+
1749
+
1750
+
1751
+ <div class="method-source-code"
1752
+ id="new-ich-ext-source">
1753
+ <pre>
1754
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 217</span>
1755
+ 217: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newRichText</span>(<span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">tokenSet</span> = <span class="ruby-keyword kw">nil</span>)
1756
+ 218: <span class="ruby-identifier">rText</span> = <span class="ruby-constant">RichText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span>, <span class="ruby-constant">RTFHandlers</span>.<span class="ruby-identifier">create</span>(<span class="ruby-ivar">@project</span>, <span class="ruby-identifier">sfi</span>))
1757
+ 219: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">rti</span> = <span class="ruby-identifier">rText</span>.<span class="ruby-identifier">generateIntermediateFormat</span>( [ <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>], <span class="ruby-identifier">tokenSet</span>))
1758
+ 220: <span class="ruby-identifier">rText</span>.<span class="ruby-identifier">messageHandler</span>.<span class="ruby-identifier">messages</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">msg</span><span class="ruby-operator">|</span>
1759
+ 221: <span class="ruby-comment cmt"># Map the SourceFileInfo of the RichText back to the original</span>
1760
+ 222: <span class="ruby-comment cmt"># location in the input file.</span>
1761
+ 223: <span class="ruby-identifier">sfi</span> = <span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(
1762
+ 224: <span class="ruby-identifier">sfi</span>.<span class="ruby-identifier">fileName</span>, <span class="ruby-identifier">sfi</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">sourceFileInfo</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>, <span class="ruby-value">0</span>)
1763
+ 225: <span class="ruby-comment cmt"># Then replay the error message.</span>
1764
+ 226: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">addMessage</span>(<span class="ruby-identifier">msg</span>.<span class="ruby-identifier">type</span>, <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">id</span>, <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">message</span>, <span class="ruby-identifier">sfi</span>,
1765
+ 227: <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">line</span>)
1766
+ 228: <span class="ruby-keyword kw">end</span>
1767
+ 229: <span class="ruby-keyword kw">end</span>
1768
+ 230: <span class="ruby-identifier">rti</span>.<span class="ruby-identifier">sectionNumbers</span> = <span class="ruby-keyword kw">false</span>
1769
+ 231: <span class="ruby-identifier">rti</span>
1770
+ 232: <span class="ruby-keyword kw">end</span></pre>
1771
+ </div>
1772
+
1773
+ </div>
1774
+
1775
+
1776
+
1777
+
1778
+ </div>
1779
+
1780
+
1781
+ <div id="options-ule-method" class="method-detail ">
1782
+ <a name="method-i-optionsRule"></a>
1783
+
1784
+ <div class="method-heading">
1785
+
1786
+ <span class="method-name">optionsRule</span><span
1787
+ class="method-args">(attributes)</span>
1788
+ <span class="method-click-advice">click to toggle source</span>
1789
+
1790
+ </div>
1791
+
1792
+ <div class="method-description">
1793
+
1794
+ <p>
1795
+ Create pattern that turns the rule into the definition for optional
1796
+ attributes. <em>attributes</em> is the rule that lists these attributes.
1797
+ </p>
1798
+
1799
+
1800
+
1801
+ <div class="method-source-code"
1802
+ id="options-ule-source">
1803
+ <pre>
1804
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 353</span>
1805
+ 353: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optionsRule</span>(<span class="ruby-identifier">attributes</span>)
1806
+ 354: <span class="ruby-identifier">optional</span>
1807
+ 355: <span class="ruby-identifier">pattern</span>([ <span class="ruby-value str">'_{'</span>, <span class="ruby-node">&quot;!#{attributes}&quot;</span>, <span class="ruby-value str">'_}'</span> ], <span class="ruby-identifier">lambda</span> {
1808
+ 356: <span class="ruby-ivar">@val</span>[<span class="ruby-value">1</span>]
1809
+ 357: })
1810
+ 358: <span class="ruby-keyword kw">end</span></pre>
1811
+ </div>
1812
+
1813
+ </div>
1814
+
1815
+
1816
+
1817
+
1818
+ </div>
1819
+
1820
+
1821
+ <div id="pop-ile-tack-method" class="method-detail ">
1822
+ <a name="method-i-popFileStack"></a>
1823
+
1824
+ <div class="method-heading">
1825
+
1826
+ <span class="method-name">popFileStack</span><span
1827
+ class="method-args">()</span>
1828
+ <span class="method-click-advice">click to toggle source</span>
1829
+
1830
+ </div>
1831
+
1832
+ <div class="method-description">
1833
+
1834
+ <p>
1835
+ Pop the last stack entry from the @fileStack and restore the class
1836
+ variables according to the now top-entry.
1837
+ </p>
1838
+
1839
+
1840
+
1841
+ <div class="method-source-code"
1842
+ id="pop-ile-tack-source">
1843
+ <pre>
1844
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 445</span>
1845
+ 445: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">popFileStack</span>
1846
+ 446: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">pop</span>
1847
+ 447: <span class="ruby-identifier">stackEntry</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>
1848
+ 448: <span class="ruby-ivar">@fileStackVariables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
1849
+ 449: <span class="ruby-identifier">instance_variable_set</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">var</span>, <span class="ruby-identifier">stackEntry</span>[<span class="ruby-identifier">var</span>])
1850
+ 450: <span class="ruby-keyword kw">end</span>
1851
+ 451: <span class="ruby-comment cmt"># Include files can only occur at global level or in the project header.</span>
1852
+ 452: <span class="ruby-comment cmt"># In both cases, the @property was nil on including and must be reset to</span>
1853
+ 453: <span class="ruby-comment cmt"># nil again after the include file.</span>
1854
+ 454: <span class="ruby-ivar">@property</span> = <span class="ruby-keyword kw">nil</span>
1855
+ 455: <span class="ruby-keyword kw">end</span></pre>
1856
+ </div>
1857
+
1858
+ </div>
1859
+
1860
+
1861
+
1862
+
1863
+ </div>
1864
+
1865
+
1866
+ <div id="push-ile-tack-method" class="method-detail ">
1867
+ <a name="method-i-pushFileStack"></a>
1868
+
1869
+ <div class="method-heading">
1870
+
1871
+ <span class="method-name">pushFileStack</span><span
1872
+ class="method-args">()</span>
1873
+ <span class="method-click-advice">click to toggle source</span>
1874
+
1875
+ </div>
1876
+
1877
+ <div class="method-description">
1878
+
1879
+ <p>
1880
+ Push a new set of variables onto the @fileStack.
1881
+ </p>
1882
+
1883
+
1884
+
1885
+ <div class="method-source-code"
1886
+ id="push-ile-tack-source">
1887
+ <pre>
1888
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 435</span>
1889
+ 435: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pushFileStack</span>
1890
+ 436: <span class="ruby-identifier">stackEntry</span> = {}
1891
+ 437: <span class="ruby-ivar">@fileStackVariables</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">var</span><span class="ruby-operator">|</span>
1892
+ 438: <span class="ruby-identifier">stackEntry</span>[<span class="ruby-identifier">var</span>] = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">var</span>)
1893
+ 439: <span class="ruby-keyword kw">end</span>
1894
+ 440: <span class="ruby-ivar">@fileStack</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">stackEntry</span>
1895
+ 441: <span class="ruby-keyword kw">end</span></pre>
1896
+ </div>
1897
+
1898
+ </div>
1899
+
1900
+
1901
+
1902
+
1903
+ </div>
1904
+
1905
+
1906
+ <div id="set-uration-ttribute-method" class="method-detail ">
1907
+ <a name="method-i-setDurationAttribute"></a>
1908
+
1909
+ <div class="method-heading">
1910
+
1911
+ <span class="method-name">setDurationAttribute</span><span
1912
+ class="method-args">(attribute, value = true)</span>
1913
+ <span class="method-click-advice">click to toggle source</span>
1914
+
1915
+ </div>
1916
+
1917
+ <div class="method-description">
1918
+
1919
+ <p>
1920
+ Set the <em>attribute</em> to <em>value</em> and reset all other duration
1921
+ attributes.
1922
+ </p>
1923
+
1924
+
1925
+
1926
+ <div class="method-source-code"
1927
+ id="set-uration-ttribute-source">
1928
+ <pre>
1929
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 269</span>
1930
+ 269: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setDurationAttribute</span>(<span class="ruby-identifier">attribute</span>, <span class="ruby-identifier">value</span> = <span class="ruby-keyword kw">true</span>)
1931
+ 270: <span class="ruby-identifier">checkContainer</span>(<span class="ruby-identifier">attribute</span>)
1932
+ 271: { <span class="ruby-value str">'milestone'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-keyword kw">false</span>, <span class="ruby-value str">'duration'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>,
1933
+ 272: <span class="ruby-value str">'length'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>, <span class="ruby-value str">'effort'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> }.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">attr</span>, <span class="ruby-identifier">val</span><span class="ruby-operator">|</span>
1934
+ 273: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">attribute</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">attr</span>
1935
+ 274: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">attr</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">value</span>
1936
+ 275: <span class="ruby-keyword kw">else</span>
1937
+ 276: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@property</span>.<span class="ruby-identifier">getAttribute</span>(<span class="ruby-identifier">attr</span>, <span class="ruby-ivar">@scenarioIdx</span>).<span class="ruby-identifier">provided</span>
1938
+ 277: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'multiple_durations'</span>,
1939
+ 278: <span class="ruby-value str">&quot;This duration criteria is overwriting a previously &quot;</span> <span class="ruby-operator">+</span>
1940
+ 279: <span class="ruby-value str">&quot;provided criteria (duration, effort, length or milestone).&quot;</span>)
1941
+ 280: <span class="ruby-keyword kw">end</span>
1942
+ 281: <span class="ruby-ivar">@property</span>[<span class="ruby-identifier">attr</span>, <span class="ruby-ivar">@scenarioIdx</span>] = <span class="ruby-identifier">val</span>
1943
+ 282: <span class="ruby-keyword kw">end</span>
1944
+ 283: <span class="ruby-keyword kw">end</span>
1945
+ 284: <span class="ruby-keyword kw">end</span></pre>
1946
+ </div>
1947
+
1948
+ </div>
1949
+
1950
+
1951
+
1952
+
1953
+ </div>
1954
+
1955
+
1956
+ <div id="set-imit-method" class="method-detail ">
1957
+ <a name="method-i-setLimit"></a>
1958
+
1959
+ <div class="method-heading">
1960
+
1961
+ <span class="method-name">setLimit</span><span
1962
+ class="method-args">(name, value, interval)</span>
1963
+ <span class="method-click-advice">click to toggle source</span>
1964
+
1965
+ </div>
1966
+
1967
+ <div class="method-description">
1968
+
1969
+ <p>
1970
+ If the @limitResources list is not empty, we have to create a <a
1971
+ href="Limits.html">Limits</a> object for each <a
1972
+ href="Resource.html">Resource</a>. Otherwise, one <a
1973
+ href="Limits.html">Limits</a> object is enough.
1974
+ </p>
1975
+
1976
+
1977
+
1978
+ <div class="method-source-code"
1979
+ id="set-imit-source">
1980
+ <pre>
1981
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 258</span>
1982
+ 258: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span>)
1983
+ 259: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@limitResources</span>.<span class="ruby-identifier">empty?</span>
1984
+ 260: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">setLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span>)
1985
+ 261: <span class="ruby-keyword kw">else</span>
1986
+ 262: <span class="ruby-ivar">@limitResources</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
1987
+ 263: <span class="ruby-ivar">@limits</span>.<span class="ruby-identifier">setLimit</span>(<span class="ruby-identifier">name</span>, <span class="ruby-identifier">value</span>, <span class="ruby-identifier">interval</span>, <span class="ruby-identifier">resource</span>)
1988
+ 264: <span class="ruby-keyword kw">end</span>
1989
+ 265: <span class="ruby-keyword kw">end</span>
1990
+ 266: <span class="ruby-keyword kw">end</span></pre>
1991
+ </div>
1992
+
1993
+ </div>
1994
+
1995
+
1996
+
1997
+
1998
+ </div>
1999
+
2000
+
2001
+ <div id="single-attern-method" class="method-detail ">
2002
+ <a name="method-i-singlePattern"></a>
2003
+
2004
+ <div class="method-heading">
2005
+
2006
+ <span class="method-name">singlePattern</span><span
2007
+ class="method-args">(item)</span>
2008
+ <span class="method-click-advice">click to toggle source</span>
2009
+
2010
+ </div>
2011
+
2012
+ <div class="method-description">
2013
+
2014
+ <p>
2015
+ Create a pattern with just a single <em>item</em>. The pattern returns the
2016
+ value of that item.
2017
+ </p>
2018
+
2019
+
2020
+
2021
+ <div class="method-source-code"
2022
+ id="single-attern-source">
2023
+ <pre>
2024
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 362</span>
2025
+ 362: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">singlePattern</span>(<span class="ruby-identifier">item</span>)
2026
+ 363: <span class="ruby-identifier">pattern</span>([ <span class="ruby-identifier">item</span> ], <span class="ruby-identifier">lambda</span> {
2027
+ 364: <span class="ruby-ivar">@val</span>[<span class="ruby-value">0</span>]
2028
+ 365: })
2029
+ 366: <span class="ruby-keyword kw">end</span></pre>
2030
+ </div>
2031
+
2032
+ </div>
2033
+
2034
+
2035
+
2036
+
2037
+ </div>
2038
+
2039
+
2040
+ <div id="week-ay-method" class="method-detail ">
2041
+ <a name="method-i-weekDay"></a>
2042
+
2043
+ <div class="method-heading">
2044
+
2045
+ <span class="method-name">weekDay</span><span
2046
+ class="method-args">(name)</span>
2047
+ <span class="method-click-advice">click to toggle source</span>
2048
+
2049
+ </div>
2050
+
2051
+ <div class="method-description">
2052
+
2053
+ <p>
2054
+ Utility function that convers English weekday names into their index number
2055
+ and does some error checking. It returns 0 for &#8216;sun&#8217;, 1 for
2056
+ &#8216;mon&#8217; and so on.
2057
+ </p>
2058
+
2059
+
2060
+
2061
+ <div class="method-source-code"
2062
+ id="week-ay-source">
2063
+ <pre>
2064
+ <span class="ruby-comment cmt"># File lib/taskjuggler/ProjectFileParser.rb, line 116</span>
2065
+ 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">weekDay</span>(<span class="ruby-identifier">name</span>)
2066
+ 117: <span class="ruby-identifier">names</span> = <span class="ruby-node">%( sun mon tue wed thu fri sat )</span>
2067
+ 118: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">day</span> = <span class="ruby-identifier">names</span>.<span class="ruby-identifier">index</span>(<span class="ruby-ivar">@val</span>[<span class="ruby-value">0</span>])).<span class="ruby-identifier">nil?</span>
2068
+ 119: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'weekday'</span>, <span class="ruby-node">&quot;Weekday name expected (#{names.join(', ')})&quot;</span>)
2069
+ 120: <span class="ruby-keyword kw">end</span>
2070
+ 121: <span class="ruby-identifier">day</span>
2071
+ 122: <span class="ruby-keyword kw">end</span></pre>
2072
+ </div>
2073
+
2074
+ </div>
2075
+
2076
+
2077
+
2078
+
2079
+ </div>
2080
+
2081
+
2082
+ </div>
2083
+
2084
+
2085
+ </div>
2086
+
2087
+
2088
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
2089
+
2090
+ <p>Disabled; run with --debug to generate this.</p>
2091
+
2092
+ </div>
2093
+
2094
+ <div id="validator-badges">
2095
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
2096
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
2097
+ Rdoc Generator</a> 1.1.6</small>.</p>
2098
+ </div>
2099
+
2100
+ </body>
2101
+ </html>
2102
+