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,1743 @@
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::TextParser::Pattern</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/TextParser/Pattern_rb.html?TB_iframe=true&amp;height=550&amp;width=785"
42
+ class="thickbox" title="lib/taskjuggler/TextParser/Pattern.rb">lib/taskjuggler/TextParser/Pattern.rb</a></li>
43
+
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+
49
+ </div>
50
+
51
+ <div id="class-metadata">
52
+
53
+ <!-- Parent Class -->
54
+
55
+ <div id="parent-class-section" class="section">
56
+ <h3 class="section-header">Parent</h3>
57
+
58
+ <p class="link"><a href="../../Object.html">Object</a></p>
59
+
60
+ </div>
61
+
62
+
63
+ <!-- Namespace Contents -->
64
+
65
+
66
+ <!-- Method Quickref -->
67
+
68
+ <div id="method-list-section" class="section">
69
+ <h3 class="section-header">Methods</h3>
70
+ <ul class="link-list">
71
+
72
+ <li><a href="#method-c-new">::new</a></li>
73
+
74
+ <li><a href="#method-i-%5B%5D">#[]</a></li>
75
+
76
+ <li><a href="#method-i-addArgDoc">#addArgDoc</a></li>
77
+
78
+ <li><a href="#method-i-addTransitionsToState">#addTransitionsToState</a></li>
79
+
80
+ <li><a href="#method-i-each">#each</a></li>
81
+
82
+ <li><a href="#method-i-empty%3F">#empty?</a></li>
83
+
84
+ <li><a href="#method-i-generateStates">#generateStates</a></li>
85
+
86
+ <li><a href="#method-i-length">#length</a></li>
87
+
88
+ <li><a href="#method-i-optional%3F">#optional?</a></li>
89
+
90
+ <li><a href="#method-i-setArg">#setArg</a></li>
91
+
92
+ <li><a href="#method-i-setDoc">#setDoc</a></li>
93
+
94
+ <li><a href="#method-i-setExample">#setExample</a></li>
95
+
96
+ <li><a href="#method-i-setLastSyntaxToken">#setLastSyntaxToken</a></li>
97
+
98
+ <li><a href="#method-i-setSeeAlso">#setSeeAlso</a></li>
99
+
100
+ <li><a href="#method-i-terminalSymbol%3F">#terminalSymbol?</a></li>
101
+
102
+ <li><a href="#method-i-terminalTokens">#terminalTokens</a></li>
103
+
104
+ <li><a href="#method-i-to_s">#to_s</a></li>
105
+
106
+ <li><a href="#method-i-to_syntax">#to_syntax</a></li>
107
+
108
+ <li><a href="#method-i-to_syntax_r">#to_syntax_r</a></li>
109
+
110
+ </ul>
111
+ </div>
112
+
113
+
114
+ <!-- Included Modules -->
115
+
116
+ </div>
117
+
118
+ <div id="project-metadata">
119
+
120
+
121
+ <div id="fileindex-section" class="section project-section">
122
+ <h3 class="section-header">Files</h3>
123
+ <ul>
124
+
125
+ <li class="file"><a href="../../CHANGELOG.html">CHANGELOG</a></li>
126
+
127
+ <li class="file"><a href="../../COPYING.html">COPYING</a></li>
128
+
129
+ <li class="file"><a href="../../README_rdoc.html">README.rdoc</a></li>
130
+
131
+ </ul>
132
+ </div>
133
+
134
+
135
+ <div id="classindex-section" class="section project-section">
136
+ <h3 class="section-header">Class Index
137
+ <span class="search-toggle"><img src="../../images/find.png"
138
+ height="16" width="16" alt="[+]"
139
+ title="show/hide quicksearch" /></span></h3>
140
+ <form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
141
+ <fieldset>
142
+ <legend>Quicksearch</legend>
143
+ <input type="text" name="quicksearch" value=""
144
+ class="quicksearch-field" />
145
+ </fieldset>
146
+ </form>
147
+
148
+ <ul class="link-list">
149
+
150
+ <li><a href="../../TaskJuggler.html">TaskJuggler</a></li>
151
+
152
+ <li><a href="../../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
153
+
154
+ <li><a href="../../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
155
+
156
+ <li><a href="../../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
157
+
158
+ <li><a href="../../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
159
+
160
+ <li><a href="../../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
161
+
162
+ <li><a href="../../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
163
+
164
+ <li><a href="../../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
165
+
166
+ <li><a href="../../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
167
+
168
+ <li><a href="../../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
169
+
170
+ <li><a href="../../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
171
+
172
+ <li><a href="../../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
173
+
174
+ <li><a href="../../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
175
+
176
+ <li><a href="../../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
177
+
178
+ <li><a href="../../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
179
+
180
+ <li><a href="../../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
181
+
182
+ <li><a href="../../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
183
+
184
+ <li><a href="../../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
185
+
186
+ <li><a href="../../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
187
+
188
+ <li><a href="../../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
189
+
190
+ <li><a href="../../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
191
+
192
+ <li><a href="../../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
193
+
194
+ <li><a href="../../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
195
+
196
+ <li><a href="../../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
197
+
198
+ <li><a href="../../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
199
+
200
+ <li><a href="../../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
201
+
202
+ <li><a href="../../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
203
+
204
+ <li><a href="../../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
205
+
206
+ <li><a href="../../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
207
+
208
+ <li><a href="../../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
209
+
210
+ <li><a href="../../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
211
+
212
+ <li><a href="../../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
213
+
214
+ <li><a href="../../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
215
+
216
+ <li><a href="../../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
217
+
218
+ <li><a href="../../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
219
+
220
+ <li><a href="../../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
221
+
222
+ <li><a href="../../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
223
+
224
+ <li><a href="../../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
225
+
226
+ <li><a href="../../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
227
+
228
+ <li><a href="../../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
229
+
230
+ <li><a href="../../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
231
+
232
+ <li><a href="../../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
233
+
234
+ <li><a href="../../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
235
+
236
+ <li><a href="../../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
237
+
238
+ <li><a href="../../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
239
+
240
+ <li><a href="../../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
241
+
242
+ <li><a href="../../TaskJuggler/HTMLElements.html">TaskJuggler::HTMLElements</a></li>
243
+
244
+ <li><a href="../../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
245
+
246
+ <li><a href="../../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
247
+
248
+ <li><a href="../../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
249
+
250
+ <li><a href="../../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
251
+
252
+ <li><a href="../../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
253
+
254
+ <li><a href="../../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
255
+
256
+ <li><a href="../../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
257
+
258
+ <li><a href="../../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
259
+
260
+ <li><a href="../../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
261
+
262
+ <li><a href="../../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
263
+
264
+ <li><a href="../../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
265
+
266
+ <li><a href="../../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
267
+
268
+ <li><a href="../../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
269
+
270
+ <li><a href="../../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
271
+
272
+ <li><a href="../../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
273
+
274
+ <li><a href="../../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
275
+
276
+ <li><a href="../../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
277
+
278
+ <li><a href="../../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
279
+
280
+ <li><a href="../../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
281
+
282
+ <li><a href="../../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
283
+
284
+ <li><a href="../../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
285
+
286
+ <li><a href="../../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
287
+
288
+ <li><a href="../../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
289
+
290
+ <li><a href="../../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
291
+
292
+ <li><a href="../../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
293
+
294
+ <li><a href="../../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
295
+
296
+ <li><a href="../../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
297
+
298
+ <li><a href="../../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
299
+
300
+ <li><a href="../../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
301
+
302
+ <li><a href="../../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
303
+
304
+ <li><a href="../../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
305
+
306
+ <li><a href="../../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
307
+
308
+ <li><a href="../../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
309
+
310
+ <li><a href="../../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
311
+
312
+ <li><a href="../../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
313
+
314
+ <li><a href="../../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
315
+
316
+ <li><a href="../../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
317
+
318
+ <li><a href="../../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
319
+
320
+ <li><a href="../../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
321
+
322
+ <li><a href="../../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
323
+
324
+ <li><a href="../../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
325
+
326
+ <li><a href="../../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
327
+
328
+ <li><a href="../../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
329
+
330
+ <li><a href="../../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
331
+
332
+ <li><a href="../../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
333
+
334
+ <li><a href="../../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
335
+
336
+ <li><a href="../../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
337
+
338
+ <li><a href="../../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
339
+
340
+ <li><a href="../../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
341
+
342
+ <li><a href="../../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
343
+
344
+ <li><a href="../../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
345
+
346
+ <li><a href="../../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
347
+
348
+ <li><a href="../../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
349
+
350
+ <li><a href="../../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
351
+
352
+ <li><a href="../../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
353
+
354
+ <li><a href="../../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
355
+
356
+ <li><a href="../../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
357
+
358
+ <li><a href="../../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
359
+
360
+ <li><a href="../../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
361
+
362
+ <li><a href="../../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
363
+
364
+ <li><a href="../../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
365
+
366
+ <li><a href="../../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
367
+
368
+ <li><a href="../../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
369
+
370
+ <li><a href="../../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
371
+
372
+ <li><a href="../../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
373
+
374
+ <li><a href="../../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
375
+
376
+ <li><a href="../../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
377
+
378
+ <li><a href="../../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
379
+
380
+ <li><a href="../../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
381
+
382
+ <li><a href="../../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
383
+
384
+ <li><a href="../../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
385
+
386
+ <li><a href="../../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
387
+
388
+ <li><a href="../../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
389
+
390
+ <li><a href="../../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
391
+
392
+ <li><a href="../../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
393
+
394
+ <li><a href="../../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
395
+
396
+ <li><a href="../../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
397
+
398
+ <li><a href="../../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
399
+
400
+ <li><a href="../../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
401
+
402
+ <li><a href="../../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
403
+
404
+ <li><a href="../../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
405
+
406
+ <li><a href="../../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
407
+
408
+ <li><a href="../../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
409
+
410
+ <li><a href="../../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
411
+
412
+ <li><a href="../../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
413
+
414
+ <li><a href="../../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
415
+
416
+ <li><a href="../../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
417
+
418
+ <li><a href="../../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
419
+
420
+ <li><a href="../../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
421
+
422
+ <li><a href="../../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
423
+
424
+ <li><a href="../../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
425
+
426
+ <li><a href="../../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
427
+
428
+ <li><a href="../../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
429
+
430
+ <li><a href="../../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
431
+
432
+ <li><a href="../../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
433
+
434
+ <li><a href="../../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
435
+
436
+ <li><a href="../../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
437
+
438
+ <li><a href="../../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
439
+
440
+ <li><a href="../../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
441
+
442
+ <li><a href="../../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
443
+
444
+ <li><a href="../../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
445
+
446
+ <li><a href="../../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
447
+
448
+ <li><a href="../../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
449
+
450
+ <li><a href="../../TaskJuggler/StdIoWrapper.html">TaskJuggler::StdIoWrapper</a></li>
451
+
452
+ <li><a href="../../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
453
+
454
+ <li><a href="../../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
455
+
456
+ <li><a href="../../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
457
+
458
+ <li><a href="../../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
459
+
460
+ <li><a href="../../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
461
+
462
+ <li><a href="../../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
463
+
464
+ <li><a href="../../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
465
+
466
+ <li><a href="../../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
467
+
468
+ <li><a href="../../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
469
+
470
+ <li><a href="../../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
471
+
472
+ <li><a href="../../TaskJuggler/TaskDepListAttribute.html">TaskJuggler::TaskDepListAttribute</a></li>
473
+
474
+ <li><a href="../../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
475
+
476
+ <li><a href="../../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
477
+
478
+ <li><a href="../../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
479
+
480
+ <li><a href="../../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
481
+
482
+ <li><a href="../../TaskJuggler/TernarySearchTree.html">TaskJuggler::TernarySearchTree</a></li>
483
+
484
+ <li><a href="../../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
485
+
486
+ <li><a href="../../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
487
+
488
+ <li><a href="../../TaskJuggler/TextParser/Macro.html">TaskJuggler::TextParser::Macro</a></li>
489
+
490
+ <li><a href="../../TaskJuggler/TextParser/MacroTable.html">TaskJuggler::TextParser::MacroTable</a></li>
491
+
492
+ <li><a href="../../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
493
+
494
+ <li><a href="../../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
495
+
496
+ <li><a href="../../TaskJuggler/TextParser/Scanner.html">TaskJuggler::TextParser::Scanner</a></li>
497
+
498
+ <li><a href="../../TaskJuggler/TextParser/Scanner/BufferStreamHandle.html">TaskJuggler::TextParser::Scanner::BufferStreamHandle</a></li>
499
+
500
+ <li><a href="../../TaskJuggler/TextParser/Scanner/FileStreamHandle.html">TaskJuggler::TextParser::Scanner::FileStreamHandle</a></li>
501
+
502
+ <li><a href="../../TaskJuggler/TextParser/Scanner/MacroStackEntry.html">TaskJuggler::TextParser::Scanner::MacroStackEntry</a></li>
503
+
504
+ <li><a href="../../TaskJuggler/TextParser/Scanner/StreamHandle.html">TaskJuggler::TextParser::Scanner::StreamHandle</a></li>
505
+
506
+ <li><a href="../../TaskJuggler/TextParser/SourceFileInfo.html">TaskJuggler::TextParser::SourceFileInfo</a></li>
507
+
508
+ <li><a href="../../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
509
+
510
+ <li><a href="../../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
511
+
512
+ <li><a href="../../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
513
+
514
+ <li><a href="../../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
515
+
516
+ <li><a href="../../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
517
+
518
+ <li><a href="../../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
519
+
520
+ <li><a href="../../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
521
+
522
+ <li><a href="../../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
523
+
524
+ <li><a href="../../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
525
+
526
+ <li><a href="../../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
527
+
528
+ <li><a href="../../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
529
+
530
+ <li><a href="../../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
531
+
532
+ <li><a href="../../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
533
+
534
+ <li><a href="../../TaskJuggler/Tj3.html">TaskJuggler::Tj3</a></li>
535
+
536
+ <li><a href="../../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
537
+
538
+ <li><a href="../../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
539
+
540
+ <li><a href="../../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
541
+
542
+ <li><a href="../../TaskJuggler/Tj3Man.html">TaskJuggler::Tj3Man</a></li>
543
+
544
+ <li><a href="../../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
545
+
546
+ <li><a href="../../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
547
+
548
+ <li><a href="../../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
549
+
550
+ <li><a href="../../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
551
+
552
+ <li><a href="../../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
553
+
554
+ <li><a href="../../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
555
+
556
+ <li><a href="../../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
557
+
558
+ <li><a href="../../TaskJuggler/TjRuntimeError.html">TaskJuggler::TjRuntimeError</a></li>
559
+
560
+ <li><a href="../../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
561
+
562
+ <li><a href="../../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
563
+
564
+ <li><a href="../../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
565
+
566
+ <li><a href="../../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
567
+
568
+ <li><a href="../../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
569
+
570
+ <li><a href="../../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
571
+
572
+ <li><a href="../../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
573
+
574
+ <li><a href="../../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
575
+
576
+ <li><a href="../../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
577
+
578
+ <li><a href="../../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
579
+
580
+ <li><a href="../../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
581
+
582
+ <li><a href="../../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
583
+
584
+ <li><a href="../../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
585
+
586
+ <li><a href="../../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
587
+
588
+ <li><a href="../../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
589
+
590
+ <li><a href="../../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
591
+
592
+ <li><a href="../../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
593
+
594
+ <li><a href="../../Diff.html">Diff</a></li>
595
+
596
+ <li><a href="../../Diff/Hunk.html">Diff::Hunk</a></li>
597
+
598
+ <li><a href="../../AppConfig.html">AppConfig</a></li>
599
+
600
+ <li><a href="../../Diffable.html">Diffable</a></li>
601
+
602
+ <li><a href="../../DiffableString.html">DiffableString</a></li>
603
+
604
+ <li><a href="../../Object.html">Object</a></li>
605
+
606
+ <li><a href="../../RuntimeConfig.html">RuntimeConfig</a></li>
607
+
608
+ <li><a href="../../String.html">String</a></li>
609
+
610
+ </ul>
611
+ <div id="no-class-search-results" style="display: none;">No matching classes.</div>
612
+ </div>
613
+
614
+
615
+ </div>
616
+ </div>
617
+
618
+ <div id="documentation">
619
+ <h1 class="class">TaskJuggler::TextParser::Pattern</h1>
620
+
621
+ <div id="description">
622
+ <p>
623
+ This class models the most crutial elements of a syntax description - the
624
+ pattern. A TextParserPattern primarily consists of a set of tokens. Tokens
625
+ are Strings where the first character determines the type of the token.
626
+ There are 4 known types.
627
+ </p>
628
+ <p>
629
+ Terminal token: In the syntax declaration the terminal token is prefixed by
630
+ an underscore. Terminal tokens are terminal symbols of the syntax tree.
631
+ They just represent themselves.
632
+ </p>
633
+ <p>
634
+ Variable token: The variable token describes values of a certain class such
635
+ as strings or numbers. In the syntax declaration the token is prefixed by a
636
+ dollar sign and the text of the token specifies the variable type. See <a
637
+ href="../ProjectFileParser.html">ProjectFileParser</a> for a complete list
638
+ of variable types.
639
+ </p>
640
+ <p>
641
+ Reference token: The reference token specifies a reference to another
642
+ parser rule. In the syntax declaration the token is prefixed by a bang and
643
+ the text matches the name of the rule. See TextParserRule for details.
644
+ </p>
645
+ <p>
646
+ End token: The . token marks the expected end of the input stream.
647
+ </p>
648
+ <p>
649
+ In addition to the pure syntax tree information the pattern also holds
650
+ documentary information about the pattern.
651
+ </p>
652
+
653
+ </div>
654
+
655
+ <!-- Constants -->
656
+
657
+
658
+ <!-- Attributes -->
659
+
660
+ <div id="attribute-method-details" class="method-section section">
661
+ <h3 class="section-header">Attributes</h3>
662
+
663
+
664
+ <div id="keyword-attribute-method" class="method-detail">
665
+ <a name="keyword"></a>
666
+
667
+ <div class="method-heading attribute-method-heading">
668
+ <span class="method-name">keyword</span><span
669
+ class="attribute-access-type">[R]</span>
670
+ </div>
671
+
672
+ <div class="method-description">
673
+
674
+
675
+
676
+ </div>
677
+ </div>
678
+
679
+ <div id="doc-attribute-method" class="method-detail">
680
+ <a name="doc"></a>
681
+
682
+ <div class="method-heading attribute-method-heading">
683
+ <span class="method-name">doc</span><span
684
+ class="attribute-access-type">[R]</span>
685
+ </div>
686
+
687
+ <div class="method-description">
688
+
689
+
690
+
691
+ </div>
692
+ </div>
693
+
694
+ <div id="see-lso-attribute-method" class="method-detail">
695
+ <a name="seeAlso"></a>
696
+
697
+ <div class="method-heading attribute-method-heading">
698
+ <span class="method-name">seeAlso</span><span
699
+ class="attribute-access-type">[R]</span>
700
+ </div>
701
+
702
+ <div class="method-description">
703
+
704
+
705
+
706
+ </div>
707
+ </div>
708
+
709
+ <div id="example-ile-attribute-method" class="method-detail">
710
+ <a name="exampleFile"></a>
711
+
712
+ <div class="method-heading attribute-method-heading">
713
+ <span class="method-name">exampleFile</span><span
714
+ class="attribute-access-type">[R]</span>
715
+ </div>
716
+
717
+ <div class="method-description">
718
+
719
+
720
+
721
+ </div>
722
+ </div>
723
+
724
+ <div id="example-ag-attribute-method" class="method-detail">
725
+ <a name="exampleTag"></a>
726
+
727
+ <div class="method-heading attribute-method-heading">
728
+ <span class="method-name">exampleTag</span><span
729
+ class="attribute-access-type">[R]</span>
730
+ </div>
731
+
732
+ <div class="method-description">
733
+
734
+
735
+
736
+ </div>
737
+ </div>
738
+
739
+ <div id="tokens-attribute-method" class="method-detail">
740
+ <a name="tokens"></a>
741
+
742
+ <div class="method-heading attribute-method-heading">
743
+ <span class="method-name">tokens</span><span
744
+ class="attribute-access-type">[R]</span>
745
+ </div>
746
+
747
+ <div class="method-description">
748
+
749
+
750
+
751
+ </div>
752
+ </div>
753
+
754
+ <div id="function-attribute-method" class="method-detail">
755
+ <a name="function"></a>
756
+
757
+ <div class="method-heading attribute-method-heading">
758
+ <span class="method-name">function</span><span
759
+ class="attribute-access-type">[R]</span>
760
+ </div>
761
+
762
+ <div class="method-description">
763
+
764
+
765
+
766
+ </div>
767
+ </div>
768
+
769
+ </div>
770
+
771
+
772
+ <!-- Methods -->
773
+
774
+ <div id="public-class-method-details" class="method-section section">
775
+ <h3 class="section-header">Public Class Methods</h3>
776
+
777
+
778
+ <div id="new-method" class="method-detail ">
779
+ <a name="method-c-new"></a>
780
+
781
+ <div class="method-heading">
782
+
783
+ <span class="method-name">new</span><span
784
+ class="method-args">(tokens, function = nil)</span>
785
+ <span class="method-click-advice">click to toggle source</span>
786
+
787
+ </div>
788
+
789
+ <div class="method-description">
790
+
791
+ <p>
792
+ Create a new <a href="Pattern.html">Pattern</a> object. <em>tokens</em>
793
+ must be an Array of <a href="../../String.html">String</a> objects that
794
+ describe the <a href="Pattern.html">Pattern</a>. <em>function</em> can be a
795
+ reference to a method that should be called when the <a
796
+ href="Pattern.html">Pattern</a> was recognized by the parser.
797
+ </p>
798
+
799
+
800
+
801
+ <div class="method-source-code"
802
+ id="new-source">
803
+ <pre>
804
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 49</span>
805
+ 49: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">tokens</span>, <span class="ruby-identifier">function</span> = <span class="ruby-keyword kw">nil</span>)
806
+ 50: <span class="ruby-comment cmt"># A unique name for the pattern that is used in the documentation.</span>
807
+ 51: <span class="ruby-ivar">@keyword</span> = <span class="ruby-keyword kw">nil</span>
808
+ 52: <span class="ruby-comment cmt"># Initialize pattern doc as empty.</span>
809
+ 53: <span class="ruby-ivar">@doc</span> = <span class="ruby-keyword kw">nil</span>
810
+ 54: <span class="ruby-comment cmt"># A list of TokenDoc elements that describe the meaning of variable</span>
811
+ 55: <span class="ruby-comment cmt"># tokens. The order of the tokens and entries in the Array must correlate.</span>
812
+ 56: <span class="ruby-ivar">@args</span> = []
813
+ 57: <span class="ruby-comment cmt"># A list of references to other patterns that are related to this pattern.</span>
814
+ 58: <span class="ruby-ivar">@seeAlso</span> = []
815
+ 59: <span class="ruby-comment cmt"># A reference to a file under test/TestSuite/Syntax/Correct and a tag</span>
816
+ 60: <span class="ruby-comment cmt"># within that file. This identifies example TJP code to be included with</span>
817
+ 61: <span class="ruby-comment cmt"># the reference manual.</span>
818
+ 62: <span class="ruby-ivar">@exampleFile</span> = <span class="ruby-keyword kw">nil</span>
819
+ 63: <span class="ruby-ivar">@exampleTag</span> = <span class="ruby-keyword kw">nil</span>
820
+ 64:
821
+ 65: <span class="ruby-ivar">@tokens</span> = []
822
+ 66: <span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">token</span><span class="ruby-operator">|</span>
823
+ 67: <span class="ruby-keyword kw">unless</span> <span class="ruby-value str">'!$_.'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>])
824
+ 68: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Fatal Error: All pattern tokens must start with a type &quot;</span> <span class="ruby-operator">+</span>
825
+ 69: <span class="ruby-node">&quot;identifier [!$_.]: #{tokens.join(', ')}&quot;</span>
826
+ 70: <span class="ruby-keyword kw">end</span>
827
+ 71: <span class="ruby-comment cmt"># For the syntax specification using a prefix character is more</span>
828
+ 72: <span class="ruby-comment cmt"># convenient. But for further processing, we need to split the string</span>
829
+ 73: <span class="ruby-comment cmt"># into two symbols. The prefix determines the token type, the rest is</span>
830
+ 74: <span class="ruby-comment cmt"># the token name. There are 4 types of tokens:</span>
831
+ 75: <span class="ruby-comment cmt"># :reference : a reference to another rule</span>
832
+ 76: <span class="ruby-comment cmt"># :variable : a terminal symbol</span>
833
+ 77: <span class="ruby-comment cmt"># :literal : a user defined string</span>
834
+ 78: <span class="ruby-comment cmt"># :eof : marks the end of an input stream</span>
835
+ 79: <span class="ruby-identifier">type</span> = [ <span class="ruby-value">:reference</span>, <span class="ruby-value">:variable</span>, <span class="ruby-value">:literal</span>, <span class="ruby-value">:eof</span> ][<span class="ruby-value str">'!$_.'</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>])]
836
+ 80: <span class="ruby-comment cmt"># For literals we use a String to store the token content. For others,</span>
837
+ 81: <span class="ruby-comment cmt"># a symbol is better suited.</span>
838
+ 82: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span> <span class="ruby-operator">?</span>
839
+ 83: <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">:</span> (<span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:eof</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'&lt;END&gt;'</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">intern</span>)
840
+ 84: <span class="ruby-comment cmt"># We favor an Array to store the 2 elements over a Hash for</span>
841
+ 85: <span class="ruby-comment cmt"># performance reasons.</span>
842
+ 86: <span class="ruby-ivar">@tokens</span> <span class="ruby-operator">&lt;&lt;</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span> ]
843
+ 87: <span class="ruby-comment cmt"># Initialize pattern argument descriptions as empty.</span>
844
+ 88: <span class="ruby-ivar">@args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-keyword kw">nil</span>
845
+ 89: <span class="ruby-keyword kw">end</span>
846
+ 90: <span class="ruby-ivar">@function</span> = <span class="ruby-identifier">function</span>
847
+ 91: <span class="ruby-comment cmt"># In some cases we don't want to show all tokens in the syntax</span>
848
+ 92: <span class="ruby-comment cmt"># documentation. This value specifies the index of the last shown token.</span>
849
+ 93: <span class="ruby-ivar">@lastSyntaxToken</span> = <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
850
+ 94:
851
+ 95: <span class="ruby-ivar">@transitions</span> = []
852
+ 96: <span class="ruby-keyword kw">end</span></pre>
853
+ </div>
854
+
855
+ </div>
856
+
857
+
858
+
859
+
860
+ </div>
861
+
862
+
863
+ </div>
864
+
865
+ <div id="public-instance-method-details" class="method-section section">
866
+ <h3 class="section-header">Public Instance Methods</h3>
867
+
868
+
869
+ <div id="--method" class="method-detail ">
870
+ <a name="method-i-%5B%5D"></a>
871
+
872
+ <div class="method-heading">
873
+
874
+ <span class="method-name">[]</span><span
875
+ class="method-args">(i)</span>
876
+ <span class="method-click-advice">click to toggle source</span>
877
+
878
+ </div>
879
+
880
+ <div class="method-description">
881
+
882
+ <p>
883
+ Conveniance function to access individual tokens by index.
884
+ </p>
885
+
886
+
887
+
888
+ <div class="method-source-code"
889
+ id="--source">
890
+ <pre>
891
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 214</span>
892
+ 214: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">i</span>)
893
+ 215: <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>]
894
+ 216: <span class="ruby-keyword kw">end</span></pre>
895
+ </div>
896
+
897
+ </div>
898
+
899
+
900
+
901
+
902
+ </div>
903
+
904
+
905
+ <div id="add-ransitions-o-tate-method" class="method-detail ">
906
+ <a name="method-i-addTransitionsToState"></a>
907
+
908
+ <div class="method-heading">
909
+
910
+ <span class="method-name">addTransitionsToState</span><span
911
+ class="method-args">(states, rules, stateStack, sourceState, destRule, destIndex, loopBack)</span>
912
+ <span class="method-click-advice">click to toggle source</span>
913
+
914
+ </div>
915
+
916
+ <div class="method-description">
917
+
918
+ <p>
919
+ Add the transitions to the <a href="State.html">State</a> objects of this
920
+ pattern. <em>states</em> is a Hash with all <a href="State.html">State</a>
921
+ objects. <em>rules</em> is a Hash with the <a href="Rule.html">Rule</a>
922
+ objects of the syntax. <em>stateStack</em> is an Array of <a
923
+ href="State.html">State</a> objects that have been traversed before
924
+ reaching this pattern. <em>sourceState</em> is the <a
925
+ href="State.html">State</a> that the transition originates from.
926
+ <em>destRule</em>, this pattern and <em>destIndex</em> describe the <a
927
+ href="State.html">State</a> the transition is leading to. <em>loopBack</em>
928
+ is boolean flag, set to true when the transition describes a loop back to
929
+ the start of the <a href="Rule.html">Rule</a>.
930
+ </p>
931
+
932
+
933
+
934
+ <div class="method-source-code"
935
+ id="add-ransitions-o-tate-source">
936
+ <pre>
937
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 115</span>
938
+ 115: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">stateStack</span>, <span class="ruby-identifier">sourceState</span>,
939
+ 116: <span class="ruby-identifier">destRule</span>, <span class="ruby-identifier">destIndex</span>, <span class="ruby-identifier">loopBack</span>)
940
+ 117: <span class="ruby-comment cmt"># If we hit a token in the pattern that is optional, we need to consider</span>
941
+ 118: <span class="ruby-comment cmt"># the next token of the pattern as well.</span>
942
+ 119: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
943
+ 120: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">destIndex</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span>
944
+ 121: <span class="ruby-comment cmt"># Have we reached the end of the pattern? Such state always trigger</span>
945
+ 122: <span class="ruby-comment cmt"># a reduce operation.</span>
946
+ 123: <span class="ruby-identifier">sourceState</span>.<span class="ruby-identifier">noReduce</span> = <span class="ruby-keyword kw">false</span>
947
+ 124: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sourceState</span>.<span class="ruby-identifier">rule</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">destRule</span>
948
+ 125: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">destRule</span>.<span class="ruby-identifier">repeatable</span>
949
+ 126: <span class="ruby-comment cmt"># The transition leads us back to the start of the Rule. This</span>
950
+ 127: <span class="ruby-comment cmt"># will generate transitions to the first token of all patterns</span>
951
+ 128: <span class="ruby-comment cmt"># of this Rule.</span>
952
+ 129: <span class="ruby-identifier">destRule</span>.<span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, [], <span class="ruby-identifier">sourceState</span>,
953
+ 130: <span class="ruby-keyword kw">true</span>)
954
+ 131: <span class="ruby-keyword kw">end</span>
955
+ 132: <span class="ruby-keyword kw">end</span>
956
+ 133: <span class="ruby-comment cmt"># We've reached the end of the pattern. No more transitions to</span>
957
+ 134: <span class="ruby-comment cmt"># consider.</span>
958
+ 135: <span class="ruby-keyword kw">return</span>
959
+ 136: <span class="ruby-keyword kw">end</span>
960
+ 137:
961
+ 138: <span class="ruby-comment cmt"># The token descriptor tells us where the transition(s) need to go to.</span>
962
+ 139: <span class="ruby-identifier">tokenType</span>, <span class="ruby-identifier">tokenName</span> = <span class="ruby-identifier">token</span> = <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">destIndex</span>]
963
+ 140:
964
+ 141: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">tokenType</span>
965
+ 142: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:reference</span>
966
+ 143: <span class="ruby-comment cmt"># The descriptor references another rule.</span>
967
+ 144: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">refRule</span> = <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">tokenName</span>])
968
+ 145: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown rule #{tokenName} referenced in rule #{refRule.name}&quot;</span>
969
+ 146: <span class="ruby-keyword kw">end</span>
970
+ 147: <span class="ruby-comment cmt"># If we reference another rule from a pattern, we need to come back</span>
971
+ 148: <span class="ruby-comment cmt"># to the pattern once we are done with the referenced rule. To be</span>
972
+ 149: <span class="ruby-comment cmt"># able to come back, we collect a list of all the States that we</span>
973
+ 150: <span class="ruby-comment cmt"># have passed during a reference resolution. This list forms a stack</span>
974
+ 151: <span class="ruby-comment cmt"># that is popped during recude operations of the parser FSM.</span>
975
+ 152: <span class="ruby-identifier">skippedState</span> = <span class="ruby-identifier">states</span>[[ <span class="ruby-identifier">destRule</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">destIndex</span> ]]
976
+ 153: <span class="ruby-comment cmt"># Rules may reference themselves directly or indirectly. To avoid</span>
977
+ 154: <span class="ruby-comment cmt"># endless recursions of this algorithm, we stop once we have</span>
978
+ 155: <span class="ruby-comment cmt"># detected a recursion. We have already all necessary transitions</span>
979
+ 156: <span class="ruby-comment cmt"># collected. The recursion will be unrolled in the parser FSM.</span>
980
+ 157: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">skippedState</span>)
981
+ 158: <span class="ruby-comment cmt"># Push the skipped state on the stateStack before recursing.</span>
982
+ 159: <span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">skippedState</span>)
983
+ 160: <span class="ruby-identifier">refRule</span>.<span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">stateStack</span>,
984
+ 161: <span class="ruby-identifier">sourceState</span>, <span class="ruby-identifier">loopBack</span>)
985
+ 162: <span class="ruby-comment cmt"># Once we're done, remove the State from the stateStack again.</span>
986
+ 163: <span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">pop</span>
987
+ 164: <span class="ruby-keyword kw">end</span>
988
+ 165:
989
+ 166: <span class="ruby-comment cmt"># If the referenced rule is not optional, we have no further</span>
990
+ 167: <span class="ruby-comment cmt"># transitions for this pattern at this destIndex.</span>
991
+ 168: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">refRule</span>.<span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
992
+ 169: <span class="ruby-keyword kw">else</span>
993
+ 170: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">destState</span> = <span class="ruby-identifier">states</span>[[ <span class="ruby-identifier">destRule</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">destIndex</span> ]])
994
+ 171: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Destination state not found&quot;</span>
995
+ 172: <span class="ruby-keyword kw">end</span>
996
+ 173: <span class="ruby-comment cmt"># We've found a transition to a terminal token. Add the transition</span>
997
+ 174: <span class="ruby-comment cmt"># to the source State.</span>
998
+ 175: <span class="ruby-identifier">sourceState</span>.<span class="ruby-identifier">addTransition</span>(<span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">destIndex</span>], <span class="ruby-identifier">destState</span>, <span class="ruby-identifier">stateStack</span>,
999
+ 176: <span class="ruby-identifier">loopBack</span>)
1000
+ 177: <span class="ruby-comment cmt"># Fixed tokens are never optional. There are no more transitions for</span>
1001
+ 178: <span class="ruby-comment cmt"># this pattern at this index.</span>
1002
+ 179: <span class="ruby-keyword kw">break</span>
1003
+ 180: <span class="ruby-keyword kw">end</span>
1004
+ 181:
1005
+ 182: <span class="ruby-identifier">destIndex</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1006
+ 183: <span class="ruby-keyword kw">end</span>
1007
+ 184: <span class="ruby-keyword kw">end</span></pre>
1008
+ </div>
1009
+
1010
+ </div>
1011
+
1012
+
1013
+
1014
+
1015
+ </div>
1016
+
1017
+
1018
+ <div id="each-method" class="method-detail ">
1019
+ <a name="method-i-each"></a>
1020
+
1021
+ <div class="method-heading">
1022
+
1023
+ <span class="method-name">each</span><span
1024
+ class="method-args">()</span>
1025
+ <span class="method-click-advice">click to toggle source</span>
1026
+
1027
+ </div>
1028
+
1029
+ <div class="method-description">
1030
+
1031
+ <p>
1032
+ Iterator for tokens.
1033
+ </p>
1034
+
1035
+
1036
+
1037
+ <div class="method-source-code"
1038
+ id="each-source">
1039
+ <pre>
1040
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 219</span>
1041
+ 219: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
1042
+ 220: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span>) }
1043
+ 221: <span class="ruby-keyword kw">end</span></pre>
1044
+ </div>
1045
+
1046
+ </div>
1047
+
1048
+
1049
+
1050
+
1051
+ </div>
1052
+
1053
+
1054
+ <div id="empty--method" class="method-detail ">
1055
+ <a name="method-i-empty%3F"></a>
1056
+
1057
+ <div class="method-heading">
1058
+
1059
+ <span class="method-name">empty?</span><span
1060
+ class="method-args">()</span>
1061
+ <span class="method-click-advice">click to toggle source</span>
1062
+
1063
+ </div>
1064
+
1065
+ <div class="method-description">
1066
+
1067
+ <p>
1068
+ Returns true of the pattern is empty.
1069
+ </p>
1070
+
1071
+
1072
+
1073
+ <div class="method-source-code"
1074
+ id="empty--source">
1075
+ <pre>
1076
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 224</span>
1077
+ 224: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty?</span>
1078
+ 225: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">empty?</span>
1079
+ 226: <span class="ruby-keyword kw">end</span></pre>
1080
+ </div>
1081
+
1082
+ </div>
1083
+
1084
+
1085
+
1086
+
1087
+ </div>
1088
+
1089
+
1090
+ <div id="generate-tates-method" class="method-detail ">
1091
+ <a name="method-i-generateStates"></a>
1092
+
1093
+ <div class="method-heading">
1094
+
1095
+ <span class="method-name">generateStates</span><span
1096
+ class="method-args">(rule)</span>
1097
+ <span class="method-click-advice">click to toggle source</span>
1098
+
1099
+ </div>
1100
+
1101
+ <div class="method-description">
1102
+
1103
+ <p>
1104
+ Generate the state machine states for the pattern. <em>rule</em> is the <a
1105
+ href="Rule.html">Rule</a> that the pattern belongs to. A list of generated
1106
+ <a href="State.html">State</a> objects will be returned.
1107
+ </p>
1108
+
1109
+
1110
+
1111
+ <div class="method-source-code"
1112
+ id="generate-tates-source">
1113
+ <pre>
1114
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 101</span>
1115
+ 101: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateStates</span>(<span class="ruby-identifier">rule</span>)
1116
+ 102: <span class="ruby-identifier">states</span> = []
1117
+ 103: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">states</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">State</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">i</span>) }
1118
+ 104: <span class="ruby-identifier">states</span>
1119
+ 105: <span class="ruby-keyword kw">end</span></pre>
1120
+ </div>
1121
+
1122
+ </div>
1123
+
1124
+
1125
+
1126
+
1127
+ </div>
1128
+
1129
+
1130
+ <div id="length-method" class="method-detail ">
1131
+ <a name="method-i-length"></a>
1132
+
1133
+ <div class="method-heading">
1134
+
1135
+ <span class="method-name">length</span><span
1136
+ class="method-args">()</span>
1137
+ <span class="method-click-advice">click to toggle source</span>
1138
+
1139
+ </div>
1140
+
1141
+ <div class="method-description">
1142
+
1143
+ <p>
1144
+ Returns the number of tokens in the pattern.
1145
+ </p>
1146
+
1147
+
1148
+
1149
+ <div class="method-source-code"
1150
+ id="length-source">
1151
+ <pre>
1152
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 229</span>
1153
+ 229: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">length</span>
1154
+ 230: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span>
1155
+ 231: <span class="ruby-keyword kw">end</span></pre>
1156
+ </div>
1157
+
1158
+ </div>
1159
+
1160
+
1161
+
1162
+
1163
+ </div>
1164
+
1165
+
1166
+ <div id="optional--method" class="method-detail ">
1167
+ <a name="method-i-optional%3F"></a>
1168
+
1169
+ <div class="method-heading">
1170
+
1171
+ <span class="method-name">optional?</span><span
1172
+ class="method-args">(rules)</span>
1173
+ <span class="method-click-advice">click to toggle source</span>
1174
+
1175
+ </div>
1176
+
1177
+ <div class="method-description">
1178
+
1179
+ <p>
1180
+ Return true if all tokens of the pattern are optional. If a token
1181
+ references a rule, this rule is followed for the check.
1182
+ </p>
1183
+
1184
+
1185
+
1186
+ <div class="method-source-code"
1187
+ id="optional--source">
1188
+ <pre>
1189
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 235</span>
1190
+ 235: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
1191
+ 236: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
1192
+ 237: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span>
1193
+ 238: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1194
+ 239: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
1195
+ 240: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
1196
+ 241: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1197
+ 242: <span class="ruby-keyword kw">end</span>
1198
+ 243: <span class="ruby-keyword kw">end</span>
1199
+ 244: <span class="ruby-keyword kw">end</span>
1200
+ 245: <span class="ruby-keyword kw">true</span>
1201
+ 246: <span class="ruby-keyword kw">end</span></pre>
1202
+ </div>
1203
+
1204
+ </div>
1205
+
1206
+
1207
+
1208
+
1209
+ </div>
1210
+
1211
+
1212
+ <div id="set-rg-method" class="method-detail ">
1213
+ <a name="method-i-setArg"></a>
1214
+
1215
+ <div class="method-heading">
1216
+
1217
+ <span class="method-name">setArg</span><span
1218
+ class="method-args">(idx, doc)</span>
1219
+ <span class="method-click-advice">click to toggle source</span>
1220
+
1221
+ </div>
1222
+
1223
+ <div class="method-description">
1224
+
1225
+ <p>
1226
+ Set the documentation text and for the idx-th variable.
1227
+ </p>
1228
+
1229
+
1230
+
1231
+ <div class="method-source-code"
1232
+ id="set-rg-source">
1233
+ <pre>
1234
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 193</span>
1235
+ 193: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setArg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-identifier">doc</span>)
1236
+ 194: <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-identifier">doc</span>
1237
+ 195: <span class="ruby-keyword kw">end</span></pre>
1238
+ </div>
1239
+
1240
+ </div>
1241
+
1242
+
1243
+
1244
+
1245
+ </div>
1246
+
1247
+
1248
+ <div id="set-oc-method" class="method-detail ">
1249
+ <a name="method-i-setDoc"></a>
1250
+
1251
+ <div class="method-heading">
1252
+
1253
+ <span class="method-name">setDoc</span><span
1254
+ class="method-args">(keyword, doc)</span>
1255
+ <span class="method-click-advice">click to toggle source</span>
1256
+
1257
+ </div>
1258
+
1259
+ <div class="method-description">
1260
+
1261
+ <p>
1262
+ Set the keyword and documentation text for the pattern.
1263
+ </p>
1264
+
1265
+
1266
+
1267
+ <div class="method-source-code"
1268
+ id="set-oc-source">
1269
+ <pre>
1270
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 187</span>
1271
+ 187: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setDoc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">doc</span>)
1272
+ 188: <span class="ruby-ivar">@keyword</span> = <span class="ruby-identifier">keyword</span>
1273
+ 189: <span class="ruby-ivar">@doc</span> = <span class="ruby-identifier">doc</span>
1274
+ 190: <span class="ruby-keyword kw">end</span></pre>
1275
+ </div>
1276
+
1277
+ </div>
1278
+
1279
+
1280
+
1281
+
1282
+ </div>
1283
+
1284
+
1285
+ <div id="set-xample-method" class="method-detail ">
1286
+ <a name="method-i-setExample"></a>
1287
+
1288
+ <div class="method-heading">
1289
+
1290
+ <span class="method-name">setExample</span><span
1291
+ class="method-args">(file, tag)</span>
1292
+ <span class="method-click-advice">click to toggle source</span>
1293
+
1294
+ </div>
1295
+
1296
+ <div class="method-description">
1297
+
1298
+ <p>
1299
+ Set the file and tag for the TJP code example.
1300
+ </p>
1301
+
1302
+
1303
+
1304
+ <div class="method-source-code"
1305
+ id="set-xample-source">
1306
+ <pre>
1307
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 208</span>
1308
+ 208: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setExample</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span>)
1309
+ 209: <span class="ruby-ivar">@exampleFile</span> = <span class="ruby-identifier">file</span>
1310
+ 210: <span class="ruby-ivar">@exampleTag</span> = <span class="ruby-identifier">tag</span>
1311
+ 211: <span class="ruby-keyword kw">end</span></pre>
1312
+ </div>
1313
+
1314
+ </div>
1315
+
1316
+
1317
+
1318
+
1319
+ </div>
1320
+
1321
+
1322
+ <div id="set-ast-yntax-oken-method" class="method-detail ">
1323
+ <a name="method-i-setLastSyntaxToken"></a>
1324
+
1325
+ <div class="method-heading">
1326
+
1327
+ <span class="method-name">setLastSyntaxToken</span><span
1328
+ class="method-args">(idx)</span>
1329
+ <span class="method-click-advice">click to toggle source</span>
1330
+
1331
+ </div>
1332
+
1333
+ <div class="method-description">
1334
+
1335
+ <p>
1336
+ Restrict the syntax documentation to the first <tt>idx</tt> tokens.
1337
+ </p>
1338
+
1339
+
1340
+
1341
+ <div class="method-source-code"
1342
+ id="set-ast-yntax-oken-source">
1343
+ <pre>
1344
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 198</span>
1345
+ 198: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setLastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
1346
+ 199: <span class="ruby-ivar">@lastSyntaxToken</span> = <span class="ruby-identifier">idx</span>
1347
+ 200: <span class="ruby-keyword kw">end</span></pre>
1348
+ </div>
1349
+
1350
+ </div>
1351
+
1352
+
1353
+
1354
+
1355
+ </div>
1356
+
1357
+
1358
+ <div id="set-ee-lso-method" class="method-detail ">
1359
+ <a name="method-i-setSeeAlso"></a>
1360
+
1361
+ <div class="method-heading">
1362
+
1363
+ <span class="method-name">setSeeAlso</span><span
1364
+ class="method-args">(also)</span>
1365
+ <span class="method-click-advice">click to toggle source</span>
1366
+
1367
+ </div>
1368
+
1369
+ <div class="method-description">
1370
+
1371
+ <p>
1372
+ Set the references to related patterns.
1373
+ </p>
1374
+
1375
+
1376
+
1377
+ <div class="method-source-code"
1378
+ id="set-ee-lso-source">
1379
+ <pre>
1380
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 203</span>
1381
+ 203: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setSeeAlso</span>(<span class="ruby-identifier">also</span>)
1382
+ 204: <span class="ruby-ivar">@seeAlso</span> = <span class="ruby-identifier">also</span>
1383
+ 205: <span class="ruby-keyword kw">end</span></pre>
1384
+ </div>
1385
+
1386
+ </div>
1387
+
1388
+
1389
+
1390
+
1391
+ </div>
1392
+
1393
+
1394
+ <div id="terminal-ymbol--method" class="method-detail ">
1395
+ <a name="method-i-terminalSymbol%3F"></a>
1396
+
1397
+ <div class="method-heading">
1398
+
1399
+ <span class="method-name">terminalSymbol?</span><span
1400
+ class="method-args">(i)</span>
1401
+ <span class="method-click-advice">click to toggle source</span>
1402
+
1403
+ </div>
1404
+
1405
+ <div class="method-description">
1406
+
1407
+ <p>
1408
+ Returns true if the i-th token is a terminal symbol.
1409
+ </p>
1410
+
1411
+
1412
+
1413
+ <div class="method-source-code"
1414
+ id="terminal-ymbol--source">
1415
+ <pre>
1416
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 249</span>
1417
+ 249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminalSymbol?</span>(<span class="ruby-identifier">i</span>)
1418
+ 250: <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span>
1419
+ 251: <span class="ruby-keyword kw">end</span></pre>
1420
+ </div>
1421
+
1422
+ </div>
1423
+
1424
+
1425
+
1426
+
1427
+ </div>
1428
+
1429
+
1430
+ <div id="terminal-okens-method" class="method-detail ">
1431
+ <a name="method-i-terminalTokens"></a>
1432
+
1433
+ <div class="method-heading">
1434
+
1435
+ <span class="method-name">terminalTokens</span><span
1436
+ class="method-args">(rules, index = 0)</span>
1437
+ <span class="method-click-advice">click to toggle source</span>
1438
+
1439
+ </div>
1440
+
1441
+ <div class="method-description">
1442
+
1443
+ <p>
1444
+ Find recursively the first terminal token of this pattern. If an index is
1445
+ specified start the search at this n-th pattern token instead of the first.
1446
+ The return value is an Array of [ token, pattern ] tuple.
1447
+ </p>
1448
+
1449
+
1450
+
1451
+ <div class="method-source-code"
1452
+ id="terminal-okens-source">
1453
+ <pre>
1454
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 256</span>
1455
+ 256: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminalTokens</span>(<span class="ruby-identifier">rules</span>, <span class="ruby-identifier">index</span> = <span class="ruby-value">0</span>)
1456
+ 257: <span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">index</span>]
1457
+ 258: <span class="ruby-comment cmt"># Terminal token start with an underscore or dollar character.</span>
1458
+ 259: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span>
1459
+ 260: <span class="ruby-keyword kw">return</span> [ [ <span class="ruby-identifier">name</span>, <span class="ruby-keyword kw">self</span> ] ]
1460
+ 261: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span>
1461
+ 262: <span class="ruby-keyword kw">return</span> []
1462
+ 263: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
1463
+ 264: <span class="ruby-comment cmt"># We have to continue the search at this rule.</span>
1464
+ 265: <span class="ruby-identifier">rule</span> = <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>]
1465
+ 266: <span class="ruby-comment cmt"># The rule may only have a single pattern. If not, then this pattern</span>
1466
+ 267: <span class="ruby-comment cmt"># has no terminal token.</span>
1467
+ 268: <span class="ruby-identifier">tts</span> = []
1468
+ 269: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">tts</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">terminalTokens</span>(<span class="ruby-identifier">rules</span>, <span class="ruby-value">0</span>) }
1469
+ 270: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tts</span>
1470
+ 271: <span class="ruby-keyword kw">else</span>
1471
+ 272: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unexpected token #{type} #{name}&quot;</span>
1472
+ 273: <span class="ruby-keyword kw">end</span>
1473
+ 274: <span class="ruby-keyword kw">end</span></pre>
1474
+ </div>
1475
+
1476
+ </div>
1477
+
1478
+
1479
+
1480
+
1481
+ </div>
1482
+
1483
+
1484
+ <div id="to-s-method" class="method-detail ">
1485
+ <a name="method-i-to_s"></a>
1486
+
1487
+ <div class="method-heading">
1488
+
1489
+ <span class="method-name">to_s</span><span
1490
+ class="method-args">()</span>
1491
+ <span class="method-click-advice">click to toggle source</span>
1492
+
1493
+ </div>
1494
+
1495
+ <div class="method-description">
1496
+
1497
+ <p>
1498
+ Generate a text form of the pattern. This is similar to the syntax in the
1499
+ original syntax description.
1500
+ </p>
1501
+
1502
+
1503
+
1504
+ <div class="method-source-code"
1505
+ id="to-s-source">
1506
+ <pre>
1507
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 358</span>
1508
+ 358: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
1509
+ 359: <span class="ruby-identifier">str</span> = <span class="ruby-value str">&quot;&quot;</span>
1510
+ 360: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
1511
+ 361: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
1512
+ 362: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:reference</span>
1513
+ 363: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;!#{name} &quot;</span>
1514
+ 364: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:variable</span>
1515
+ 365: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;$#{name } &quot;</span>
1516
+ 366: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:literal</span>
1517
+ 367: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;#{name} &quot;</span>
1518
+ 368: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:eof</span>
1519
+ 369: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">&quot;. &quot;</span>
1520
+ 370: <span class="ruby-keyword kw">else</span>
1521
+ 371: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown type #{type}&quot;</span>
1522
+ 372: <span class="ruby-keyword kw">end</span>
1523
+ 373: <span class="ruby-keyword kw">end</span>
1524
+ 374:
1525
+ 375: <span class="ruby-identifier">str</span>
1526
+ 376: <span class="ruby-keyword kw">end</span></pre>
1527
+ </div>
1528
+
1529
+ </div>
1530
+
1531
+
1532
+
1533
+
1534
+ </div>
1535
+
1536
+
1537
+ <div id="to-syntax-method" class="method-detail ">
1538
+ <a name="method-i-to_syntax"></a>
1539
+
1540
+ <div class="method-heading">
1541
+
1542
+ <span class="method-name">to_syntax</span><span
1543
+ class="method-args">(argDocs, rules, skip = 0)</span>
1544
+ <span class="method-click-advice">click to toggle source</span>
1545
+
1546
+ </div>
1547
+
1548
+ <div class="method-description">
1549
+
1550
+ <p>
1551
+ Returns a string that expresses the elements of the pattern in an EBNF like
1552
+ fashion. The resolution of the pattern is done recursively. This is just
1553
+ the wrapper function that sets up the stack.
1554
+ </p>
1555
+
1556
+
1557
+
1558
+ <div class="method-source-code"
1559
+ id="to-syntax-source">
1560
+ <pre>
1561
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 279</span>
1562
+ 279: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span> = <span class="ruby-value">0</span>)
1563
+ 280: <span class="ruby-identifier">to_syntax_r</span>({}, <span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
1564
+ 281: <span class="ruby-keyword kw">end</span></pre>
1565
+ </div>
1566
+
1567
+ </div>
1568
+
1569
+
1570
+
1571
+
1572
+ </div>
1573
+
1574
+
1575
+ <div id="to-syntax-r-method" class="method-detail ">
1576
+ <a name="method-i-to_syntax_r"></a>
1577
+
1578
+ <div class="method-heading">
1579
+
1580
+ <span class="method-name">to_syntax_r</span><span
1581
+ class="method-args">(stack, argDocs, rules, skip)</span>
1582
+ <span class="method-click-advice">click to toggle source</span>
1583
+
1584
+ </div>
1585
+
1586
+ <div class="method-description">
1587
+
1588
+ <p>
1589
+ Generate a syntax description for this pattern.
1590
+ </p>
1591
+
1592
+
1593
+
1594
+ <div class="method-source-code"
1595
+ id="to-syntax-r-source">
1596
+ <pre>
1597
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 284</span>
1598
+ 284: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_syntax_r</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
1599
+ 285: <span class="ruby-comment cmt"># If we find ourself on the stack we hit a recursive pattern. This is used</span>
1600
+ 286: <span class="ruby-comment cmt"># in repetitions.</span>
1601
+ 287: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stack</span>[<span class="ruby-keyword kw">self</span>]
1602
+ 288: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'[, ... ]'</span>
1603
+ 289: <span class="ruby-keyword kw">end</span>
1604
+ 290:
1605
+ 291: <span class="ruby-comment cmt"># &quot;Push&quot; us on the stack.</span>
1606
+ 292: <span class="ruby-identifier">stack</span>[<span class="ruby-keyword kw">self</span>] = <span class="ruby-keyword kw">true</span>
1607
+ 293:
1608
+ 294: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
1609
+ 295: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1610
+ 296: <span class="ruby-comment cmt"># Analyze the tokens of the pattern skipping the first 'skip' tokens.</span>
1611
+ 297: <span class="ruby-identifier">skip</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@lastSyntaxToken</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1612
+ 298: <span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>]
1613
+ 299: <span class="ruby-comment cmt"># If the first token is a _{ the pattern describes optional attributes.</span>
1614
+ 300: <span class="ruby-comment cmt"># They are represented by a standard idiom.</span>
1615
+ 301: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1616
+ 302: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1617
+ 303: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'{ &lt;attributes&gt; }'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'{'</span>
1618
+ 304: <span class="ruby-keyword kw">else</span>
1619
+ 305: <span class="ruby-comment cmt"># Separate the syntax elemens by a whitespace.</span>
1620
+ 306: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' '</span>
1621
+ 307: <span class="ruby-keyword kw">end</span>
1622
+ 308:
1623
+ 309: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">i</span>]
1624
+ 310: <span class="ruby-comment cmt"># The argument is documented in the syntax definition. We copy the</span>
1625
+ 311: <span class="ruby-comment cmt"># entry as we need to modify it.</span>
1626
+ 312: <span class="ruby-identifier">argDoc</span> = <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">dup</span>
1627
+ 313:
1628
+ 314: <span class="ruby-comment cmt"># A documented argument without a name is a terminal token. We use the</span>
1629
+ 315: <span class="ruby-comment cmt"># terminal symbol as name.</span>
1630
+ 316: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
1631
+ 317: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;#{name}&quot;</span>
1632
+ 318: <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>
1633
+ 319: <span class="ruby-keyword kw">else</span>
1634
+ 320: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;&lt;#{@args[i].name}&gt;&quot;</span>
1635
+ 321: <span class="ruby-keyword kw">end</span>
1636
+ 322: <span class="ruby-identifier">addArgDoc</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">argDoc</span>)
1637
+ 323:
1638
+ 324: <span class="ruby-comment cmt"># Documented arguments don't have the type set yet. Use the token</span>
1639
+ 325: <span class="ruby-comment cmt"># value for that.</span>
1640
+ 326: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span>
1641
+ 327: <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">typeSpec</span> = <span class="ruby-node">&quot;&lt;#{name}&gt;&quot;</span>
1642
+ 328: <span class="ruby-keyword kw">end</span>
1643
+ 329: <span class="ruby-keyword kw">else</span>
1644
+ 330: <span class="ruby-comment cmt"># Undocumented tokens are recursively expanded.</span>
1645
+ 331: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
1646
+ 332: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:literal</span>
1647
+ 333: <span class="ruby-comment cmt"># Literals are shown as such.</span>
1648
+ 334: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>
1649
+ 335: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:variable</span>
1650
+ 336: <span class="ruby-comment cmt"># Variables are enclosed by angle brackets.</span>
1651
+ 337: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;&lt;#{name}&gt;&quot;</span>
1652
+ 338: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:reference</span>
1653
+ 339: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">&amp;&amp;</span>
1654
+ 340: <span class="ruby-operator">!</span><span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">doc</span>.<span class="ruby-identifier">nil?</span>
1655
+ 341: <span class="ruby-identifier">addArgDoc</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-constant">TokenDoc</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">keyword</span>,
1656
+ 342: <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>]))
1657
+ 343: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'&lt;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">keyword</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'&gt;'</span>
1658
+ 344: <span class="ruby-keyword kw">else</span>
1659
+ 345: <span class="ruby-comment cmt"># References are followed recursively.</span>
1660
+ 346: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-value">0</span>)
1661
+ 347: <span class="ruby-keyword kw">end</span>
1662
+ 348: <span class="ruby-keyword kw">end</span>
1663
+ 349: <span class="ruby-keyword kw">end</span>
1664
+ 350: <span class="ruby-keyword kw">end</span>
1665
+ 351: <span class="ruby-comment cmt"># Remove us from the &quot;stack&quot; again.</span>
1666
+ 352: <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-keyword kw">self</span>)
1667
+ 353: <span class="ruby-identifier">str</span>
1668
+ 354: <span class="ruby-keyword kw">end</span></pre>
1669
+ </div>
1670
+
1671
+ </div>
1672
+
1673
+
1674
+
1675
+
1676
+ </div>
1677
+
1678
+
1679
+ </div>
1680
+
1681
+ <div id="private-instance-method-details" class="method-section section">
1682
+ <h3 class="section-header">Private Instance Methods</h3>
1683
+
1684
+
1685
+ <div id="add-rg-oc-method" class="method-detail ">
1686
+ <a name="method-i-addArgDoc"></a>
1687
+
1688
+ <div class="method-heading">
1689
+
1690
+ <span class="method-name">addArgDoc</span><span
1691
+ class="method-args">(argDocs, argDoc)</span>
1692
+ <span class="method-click-advice">click to toggle source</span>
1693
+
1694
+ </div>
1695
+
1696
+ <div class="method-description">
1697
+
1698
+
1699
+
1700
+
1701
+
1702
+ <div class="method-source-code"
1703
+ id="add-rg-oc-source">
1704
+ <pre>
1705
+ <span class="ruby-comment cmt"># File lib/taskjuggler/TextParser/Pattern.rb, line 380</span>
1706
+ 380: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addArgDoc</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">argDoc</span>)
1707
+ 381: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'Error'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
1708
+ 382: <span class="ruby-identifier">argDocs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ad</span><span class="ruby-operator">|</span>
1709
+ 383: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ad</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">name</span>
1710
+ 384: <span class="ruby-keyword kw">end</span>
1711
+ 385: <span class="ruby-identifier">argDocs</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">argDoc</span>
1712
+ 386: <span class="ruby-keyword kw">end</span></pre>
1713
+ </div>
1714
+
1715
+ </div>
1716
+
1717
+
1718
+
1719
+
1720
+ </div>
1721
+
1722
+
1723
+ </div>
1724
+
1725
+
1726
+ </div>
1727
+
1728
+
1729
+ <div id="rdoc-debugging-section-dump" class="debugging-section">
1730
+
1731
+ <p>Disabled; run with --debug to generate this.</p>
1732
+
1733
+ </div>
1734
+
1735
+ <div id="validator-badges">
1736
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
1737
+ <p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
1738
+ Rdoc Generator</a> 1.1.6</small>.</p>
1739
+ </div>
1740
+
1741
+ </body>
1742
+ </html>
1743
+