taskjuggler 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. data/CHANGELOG +160 -0
  2. data/benchmarks/UTF-8-Strings.rb +58 -0
  3. data/data/css/tjreport.css +7 -2
  4. data/doc/AppConfig.html +10 -4
  5. data/doc/Arguments.html +10 -4
  6. data/doc/CHANGELOG.html +171 -5
  7. data/doc/COPYING.html +10 -4
  8. data/doc/Object.html +11 -107
  9. data/doc/README.html +10 -4
  10. data/doc/RuntimeConfig.html +10 -4
  11. data/doc/String.html +16 -11
  12. data/doc/StringIO.html +10 -4
  13. data/doc/TaskJuggler.html +506 -435
  14. data/doc/TaskJuggler/Account.html +10 -4
  15. data/doc/TaskJuggler/AccountAttribute.html +10 -4
  16. data/doc/TaskJuggler/AccountScenario.html +10 -4
  17. data/doc/TaskJuggler/Allocation.html +69 -60
  18. data/doc/TaskJuggler/AllocationAttribute.html +10 -4
  19. data/doc/TaskJuggler/AttributeBase.html +10 -4
  20. data/doc/TaskJuggler/AttributeDefinition.html +10 -4
  21. data/doc/TaskJuggler/BatchProcessor.html +202 -192
  22. data/doc/TaskJuggler/Booking.html +10 -4
  23. data/doc/TaskJuggler/BookingListAttribute.html +10 -4
  24. data/doc/TaskJuggler/BooleanAttribute.html +10 -4
  25. data/doc/TaskJuggler/CSVFile.html +10 -4
  26. data/doc/TaskJuggler/CellSettingPattern.html +10 -4
  27. data/doc/TaskJuggler/CellSettingPatternList.html +10 -4
  28. data/doc/TaskJuggler/Charge.html +10 -4
  29. data/doc/TaskJuggler/ChargeListAttribute.html +10 -4
  30. data/doc/TaskJuggler/ChargeSet.html +10 -4
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +10 -4
  32. data/doc/TaskJuggler/ColumnListAttribute.html +10 -4
  33. data/doc/TaskJuggler/ColumnTable.html +10 -4
  34. data/doc/TaskJuggler/Daemon.html +71 -52
  35. data/doc/TaskJuggler/DateAttribute.html +10 -4
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +10 -4
  37. data/doc/TaskJuggler/DependencyListAttribute.html +10 -4
  38. data/doc/TaskJuggler/DurationAttribute.html +10 -4
  39. data/doc/TaskJuggler/{MacroParser.html → FileList.html} +58 -173
  40. data/doc/TaskJuggler/{RichTextException.html → FileRecord.html} +59 -80
  41. data/doc/TaskJuggler/FixnumAttribute.html +10 -4
  42. data/doc/TaskJuggler/FlagListAttribute.html +10 -4
  43. data/doc/TaskJuggler/FloatAttribute.html +10 -4
  44. data/doc/TaskJuggler/FormatListAttribute.html +10 -4
  45. data/doc/TaskJuggler/GanttChart.html +10 -4
  46. data/doc/TaskJuggler/GanttContainer.html +14 -8
  47. data/doc/TaskJuggler/GanttHeader.html +10 -4
  48. data/doc/TaskJuggler/GanttHeaderScaleItem.html +10 -4
  49. data/doc/TaskJuggler/GanttLine.html +29 -24
  50. data/doc/TaskJuggler/GanttLoadStack.html +10 -4
  51. data/doc/TaskJuggler/GanttMilestone.html +10 -4
  52. data/doc/TaskJuggler/GanttRouter.html +10 -4
  53. data/doc/TaskJuggler/GanttTaskBar.html +20 -10
  54. data/doc/TaskJuggler/HTMLDocument.html +10 -4
  55. data/doc/TaskJuggler/HTMLGraphics.html +10 -4
  56. data/doc/TaskJuggler/Interval.html +10 -4
  57. data/doc/TaskJuggler/IntervalListAttribute.html +10 -4
  58. data/doc/TaskJuggler/JobInfo.html +10 -4
  59. data/doc/TaskJuggler/Journal.html +227 -160
  60. data/doc/TaskJuggler/JournalEntry.html +10 -4
  61. data/doc/TaskJuggler/JournalEntryList.html +158 -72
  62. data/doc/TaskJuggler/KeywordArray.html +21 -9
  63. data/doc/TaskJuggler/KeywordDocumentation.html +612 -475
  64. data/doc/TaskJuggler/Limits.html +13 -8
  65. data/doc/TaskJuggler/Limits/Limit.html +10 -4
  66. data/doc/TaskJuggler/LimitsAttribute.html +10 -4
  67. data/doc/TaskJuggler/ListAttributeBase.html +10 -4
  68. data/doc/TaskJuggler/Log.html +10 -4
  69. data/doc/TaskJuggler/LogFile.html +10 -4
  70. data/doc/TaskJuggler/LogicalAttribute.html +10 -4
  71. data/doc/TaskJuggler/LogicalExpression.html +11 -5
  72. data/doc/TaskJuggler/LogicalExpressionAttribute.html +10 -4
  73. data/doc/TaskJuggler/LogicalFlag.html +10 -4
  74. data/doc/TaskJuggler/LogicalFunction.html +132 -124
  75. data/doc/TaskJuggler/LogicalOperation.html +10 -4
  76. data/doc/TaskJuggler/Macro.html +16 -10
  77. data/doc/TaskJuggler/MacroTable.html +44 -38
  78. data/doc/TaskJuggler/ManagerResponsibilities.html +10 -4
  79. data/doc/TaskJuggler/ManagerStatusRecord.html +10 -4
  80. data/doc/TaskJuggler/Message.html +92 -68
  81. data/doc/TaskJuggler/MessageHandler.html +349 -28
  82. data/doc/TaskJuggler/Navigator.html +10 -4
  83. data/doc/TaskJuggler/NavigatorElement.html +10 -4
  84. data/doc/TaskJuggler/NikuProject.html +10 -4
  85. data/doc/TaskJuggler/NikuReport.html +10 -4
  86. data/doc/TaskJuggler/NikuResource.html +10 -4
  87. data/doc/TaskJuggler/NodeListAttribute.html +10 -4
  88. data/doc/TaskJuggler/OnShiftCache.html +10 -4
  89. data/doc/TaskJuggler/ProcessIntercom.html +118 -111
  90. data/doc/TaskJuggler/ProcessIntercomIface.html +75 -22
  91. data/doc/TaskJuggler/Project.html +886 -913
  92. data/doc/TaskJuggler/ProjectBroker.html +442 -331
  93. data/doc/TaskJuggler/ProjectBrokerIface.html +95 -38
  94. data/doc/TaskJuggler/ProjectFileParser.html +320 -317
  95. data/doc/TaskJuggler/ProjectFileScanner.html +336 -339
  96. data/doc/TaskJuggler/ProjectRecord.html +119 -56
  97. data/doc/TaskJuggler/ProjectServer.html +282 -237
  98. data/doc/TaskJuggler/ProjectServerIface.html +45 -39
  99. data/doc/TaskJuggler/PropertyAttribute.html +10 -4
  100. data/doc/TaskJuggler/PropertyList.html +177 -173
  101. data/doc/TaskJuggler/PropertySet.html +11 -5
  102. data/doc/TaskJuggler/PropertyTreeNode.html +194 -191
  103. data/doc/TaskJuggler/Query.html +280 -256
  104. data/doc/TaskJuggler/RTFHandlers.html +10 -4
  105. data/doc/TaskJuggler/RTFNavigator.html +33 -26
  106. data/doc/TaskJuggler/RTFQuery.html +135 -169
  107. data/doc/TaskJuggler/RTFReport.html +63 -56
  108. data/doc/TaskJuggler/RTFReportLink.html +58 -47
  109. data/doc/TaskJuggler/RTFWithQuerySupport.html +666 -0
  110. data/doc/TaskJuggler/RealFormat.html +10 -4
  111. data/doc/TaskJuggler/RealFormatAttribute.html +10 -4
  112. data/doc/TaskJuggler/ReferenceAttribute.html +10 -4
  113. data/doc/TaskJuggler/Report.html +333 -290
  114. data/doc/TaskJuggler/ReportBase.html +182 -174
  115. data/doc/TaskJuggler/ReportContext.html +10 -4
  116. data/doc/TaskJuggler/ReportServer.html +144 -126
  117. data/doc/TaskJuggler/ReportServerIface.html +50 -44
  118. data/doc/TaskJuggler/ReportServerRecord.html +38 -32
  119. data/doc/TaskJuggler/ReportServlet.html +144 -137
  120. data/doc/TaskJuggler/ReportTable.html +10 -4
  121. data/doc/TaskJuggler/ReportTableCell.html +169 -164
  122. data/doc/TaskJuggler/ReportTableColumn.html +10 -4
  123. data/doc/TaskJuggler/ReportTableLegend.html +10 -4
  124. data/doc/TaskJuggler/ReportTableLine.html +10 -4
  125. data/doc/TaskJuggler/Resource.html +121 -115
  126. data/doc/TaskJuggler/ResourceListAttribute.html +10 -4
  127. data/doc/TaskJuggler/ResourceListRE.html +10 -4
  128. data/doc/TaskJuggler/ResourceScenario.html +13 -7
  129. data/doc/TaskJuggler/RichText.html +61 -37
  130. data/doc/TaskJuggler/RichTextAttribute.html +10 -4
  131. data/doc/TaskJuggler/RichTextDocument.html +91 -81
  132. data/doc/TaskJuggler/RichTextElement.html +378 -317
  133. data/doc/TaskJuggler/RichTextFunctionExample.html +10 -4
  134. data/doc/TaskJuggler/RichTextFunctionHandler.html +16 -11
  135. data/doc/TaskJuggler/RichTextImage.html +10 -4
  136. data/doc/TaskJuggler/RichTextIntermediate.html +138 -70
  137. data/doc/TaskJuggler/RichTextParser.html +48 -40
  138. data/doc/TaskJuggler/RichTextScanner.html +328 -906
  139. data/doc/TaskJuggler/RichTextSnip.html +59 -57
  140. data/doc/TaskJuggler/RichTextSyntaxRules.html +458 -369
  141. data/doc/TaskJuggler/Scenario.html +10 -4
  142. data/doc/TaskJuggler/ScenarioData.html +33 -30
  143. data/doc/TaskJuggler/ScenarioListAttribute.html +10 -4
  144. data/doc/TaskJuggler/Scoreboard.html +10 -4
  145. data/doc/TaskJuggler/SheetHandlerBase.html +315 -191
  146. data/doc/TaskJuggler/SheetReceiver.html +334 -313
  147. data/doc/TaskJuggler/SheetSender.html +10 -4
  148. data/doc/TaskJuggler/Shift.html +10 -4
  149. data/doc/TaskJuggler/ShiftAssignment.html +10 -4
  150. data/doc/TaskJuggler/ShiftAssignments.html +10 -4
  151. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +10 -4
  152. data/doc/TaskJuggler/ShiftScenario.html +10 -4
  153. data/doc/TaskJuggler/SimpleQueryExpander.html +697 -0
  154. data/doc/TaskJuggler/SortListAttribute.html +10 -4
  155. data/doc/TaskJuggler/SourceFileInfo.html +10 -4
  156. data/doc/TaskJuggler/StatusSheetReceiver.html +10 -4
  157. data/doc/TaskJuggler/StatusSheetReport.html +10 -4
  158. data/doc/TaskJuggler/StatusSheetSender.html +10 -4
  159. data/doc/TaskJuggler/StringAttribute.html +10 -4
  160. data/doc/TaskJuggler/SymbolAttribute.html +10 -4
  161. data/doc/TaskJuggler/SyntaxReference.html +260 -230
  162. data/doc/TaskJuggler/TOCEntry.html +99 -42
  163. data/doc/TaskJuggler/TSResourceRecord.html +10 -4
  164. data/doc/TaskJuggler/TSTaskRecord.html +10 -4
  165. data/doc/TaskJuggler/TableColumnDefinition.html +10 -4
  166. data/doc/TaskJuggler/TableOfContents.html +54 -12
  167. data/doc/TaskJuggler/TableReport.html +877 -872
  168. data/doc/TaskJuggler/Task.html +117 -68
  169. data/doc/TaskJuggler/TaskDependency.html +10 -4
  170. data/doc/TaskJuggler/TaskListAttribute.html +10 -4
  171. data/doc/TaskJuggler/TaskListRE.html +10 -4
  172. data/doc/TaskJuggler/TaskScenario.html +1681 -1563
  173. data/doc/TaskJuggler/TextFormatter.html +10 -4
  174. data/doc/TaskJuggler/TextParser.html +567 -534
  175. data/doc/TaskJuggler/TextParser/Pattern.html +128 -118
  176. data/doc/TaskJuggler/TextParser/Rule.html +26 -15
  177. data/doc/TaskJuggler/TextParser/StackElement.html +10 -4
  178. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +22 -16
  179. data/doc/TaskJuggler/TextParser/TokenDoc.html +10 -4
  180. data/doc/TaskJuggler/TextReport.html +15 -6
  181. data/doc/TaskJuggler/TextScanner.html +319 -287
  182. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +16 -10
  183. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +23 -17
  184. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +17 -11
  185. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  186. data/doc/TaskJuggler/TimeSheet.html +138 -175
  187. data/doc/TaskJuggler/TimeSheetReceiver.html +10 -4
  188. data/doc/TaskJuggler/TimeSheetRecord.html +65 -58
  189. data/doc/TaskJuggler/TimeSheetReport.html +47 -42
  190. data/doc/TaskJuggler/TimeSheetSender.html +10 -4
  191. data/doc/TaskJuggler/TimeSheetSummary.html +91 -83
  192. data/doc/TaskJuggler/TimeSheets.html +22 -16
  193. data/doc/TaskJuggler/Tj3AppBase.html +10 -4
  194. data/doc/TaskJuggler/Tj3Client.html +399 -365
  195. data/doc/TaskJuggler/Tj3Daemon.html +107 -94
  196. data/doc/TaskJuggler/Tj3SheetAppBase.html +10 -4
  197. data/doc/TaskJuggler/Tj3SsReceiver.html +10 -4
  198. data/doc/TaskJuggler/Tj3SsSender.html +10 -4
  199. data/doc/TaskJuggler/Tj3TsReceiver.html +10 -4
  200. data/doc/TaskJuggler/Tj3TsSender.html +10 -4
  201. data/doc/TaskJuggler/Tj3TsSummary.html +10 -4
  202. data/doc/TaskJuggler/TjException.html +10 -4
  203. data/doc/TaskJuggler/TjTime.html +145 -140
  204. data/doc/TaskJuggler/TjpExample.html +10 -4
  205. data/doc/TaskJuggler/TjpExportRE.html +122 -118
  206. data/doc/TaskJuggler/TjpSyntaxRules.html +4065 -4052
  207. data/doc/TaskJuggler/URLParameter.html +10 -4
  208. data/doc/TaskJuggler/UserManual.html +162 -155
  209. data/doc/TaskJuggler/VimSyntax.html +1028 -0
  210. data/doc/TaskJuggler/WebServer.html +45 -27
  211. data/doc/TaskJuggler/WorkingHours.html +10 -4
  212. data/doc/TaskJuggler/WorkingHoursAttribute.html +10 -4
  213. data/doc/TaskJuggler/XMLBlob.html +10 -4
  214. data/doc/TaskJuggler/XMLComment.html +10 -4
  215. data/doc/TaskJuggler/XMLDocument.html +10 -4
  216. data/doc/TaskJuggler/XMLElement.html +10 -4
  217. data/doc/TaskJuggler/XMLNamedText.html +10 -4
  218. data/doc/TaskJuggler/XMLText.html +10 -4
  219. data/doc/index.html +735 -677
  220. data/doc/lib/AccountScenario_rb.html +1 -1
  221. data/doc/lib/Account_rb.html +1 -1
  222. data/doc/lib/Allocation_rb.html +1 -1
  223. data/doc/lib/AppConfig_rb.html +1 -1
  224. data/doc/lib/AttributeBase_rb.html +1 -1
  225. data/doc/lib/AttributeDefinition_rb.html +1 -1
  226. data/doc/lib/Attributes_rb.html +1 -1
  227. data/doc/lib/BatchProcessor_rb.html +1 -1
  228. data/doc/lib/Booking_rb.html +1 -1
  229. data/doc/lib/ChargeSet_rb.html +1 -1
  230. data/doc/lib/Charge_rb.html +1 -1
  231. data/doc/lib/{Message_rb.html → FileList_rb.html} +3 -5
  232. data/doc/lib/HTMLDocument_rb.html +1 -1
  233. data/doc/lib/Interval_rb.html +1 -1
  234. data/doc/lib/Journal_rb.html +1 -1
  235. data/doc/lib/KeywordArray_rb.html +1 -1
  236. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  237. data/doc/lib/Limits_rb.html +1 -1
  238. data/doc/lib/LogFile_rb.html +1 -1
  239. data/doc/lib/Log_rb.html +1 -1
  240. data/doc/lib/LogicalExpression_rb.html +1 -1
  241. data/doc/lib/LogicalFunction_rb.html +1 -1
  242. data/doc/lib/LogicalOperation_rb.html +1 -1
  243. data/doc/lib/MacroTable_rb.html +1 -3
  244. data/doc/lib/MessageHandler_rb.html +1 -1
  245. data/doc/lib/ProjectFileParser_rb.html +1 -1
  246. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  247. data/doc/lib/Project_rb.html +4 -2
  248. data/doc/lib/PropertyList_rb.html +1 -1
  249. data/doc/lib/PropertySet_rb.html +1 -1
  250. data/doc/lib/PropertyTreeNode_rb.html +1 -1
  251. data/doc/lib/Query_rb.html +1 -1
  252. data/doc/lib/RTFHandlers_rb.html +1 -1
  253. data/doc/lib/RTFNavigator_rb.html +1 -1
  254. data/doc/lib/RTFQuery_rb.html +2 -2
  255. data/doc/lib/RTFReportLink_rb.html +4 -2
  256. data/doc/lib/RTFReport_rb.html +1 -1
  257. data/doc/lib/{MacroParser_rb.html → RTFWithQuerySupport_rb.html} +4 -6
  258. data/doc/lib/RealFormat_rb.html +1 -1
  259. data/doc/lib/ResourceScenario_rb.html +1 -1
  260. data/doc/lib/Resource_rb.html +1 -1
  261. data/doc/lib/RichTextDocument_rb.html +1 -1
  262. data/doc/lib/RichTextElement_rb.html +1 -1
  263. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  264. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  265. data/doc/lib/RichTextParser_rb.html +1 -1
  266. data/doc/lib/RichTextScanner_rb.html +3 -1
  267. data/doc/lib/RichTextSnip_rb.html +1 -1
  268. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  269. data/doc/lib/RichText_rb.html +3 -1
  270. data/doc/lib/RuntimeConfig_rb.html +1 -1
  271. data/doc/lib/ScenarioData_rb.html +2 -2
  272. data/doc/lib/Scenario_rb.html +1 -1
  273. data/doc/lib/Scoreboard_rb.html +1 -1
  274. data/doc/lib/SheetHandlerBase_rb.html +5 -1
  275. data/doc/lib/SheetReceiver_rb.html +3 -1
  276. data/doc/lib/SheetSender_rb.html +1 -1
  277. data/doc/lib/ShiftAssignments_rb.html +1 -1
  278. data/doc/lib/ShiftScenario_rb.html +1 -1
  279. data/doc/lib/Shift_rb.html +1 -1
  280. data/doc/lib/SimpleQueryExpander_rb.html +67 -0
  281. data/doc/lib/SourceFileInfo_rb.html +1 -1
  282. data/doc/lib/StatusSheetReceiver_rb.html +1 -1
  283. data/doc/lib/StatusSheetSender_rb.html +1 -1
  284. data/doc/lib/SyntaxReference_rb.html +1 -1
  285. data/doc/lib/TOCEntry_rb.html +1 -1
  286. data/doc/lib/TableColumnDefinition_rb.html +1 -1
  287. data/doc/lib/TableOfContents_rb.html +1 -1
  288. data/doc/lib/TaskDependency_rb.html +1 -1
  289. data/doc/lib/TaskJuggler_rb.html +1 -1
  290. data/doc/lib/TaskScenario_rb.html +1 -1
  291. data/doc/lib/Task_rb.html +1 -1
  292. data/doc/lib/TextFormatter_rb.html +1 -1
  293. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  294. data/doc/lib/TextParser/Rule_rb.html +1 -1
  295. data/doc/lib/TextParser/StackElement_rb.html +1 -1
  296. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  297. data/doc/lib/TextParser_rb.html +3 -1
  298. data/doc/lib/TextScanner_rb.html +1 -3
  299. data/doc/lib/TimeSheetReceiver_rb.html +1 -1
  300. data/doc/lib/TimeSheetSender_rb.html +1 -1
  301. data/doc/lib/TimeSheetSummary_rb.html +1 -1
  302. data/doc/lib/TimeSheets_rb.html +1 -1
  303. data/doc/lib/Tj3AppBase_rb.html +1 -1
  304. data/doc/lib/Tj3Config_rb.html +1 -1
  305. data/doc/lib/Tj3SheetAppBase_rb.html +1 -1
  306. data/doc/lib/TjException_rb.html +1 -1
  307. data/doc/lib/TjTime_rb.html +1 -1
  308. data/doc/lib/TjpExample_rb.html +1 -1
  309. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  310. data/doc/lib/URLParameter_rb.html +1 -1
  311. data/doc/lib/UTF8String_rb.html +1 -1
  312. data/doc/lib/UserManual_rb.html +1 -1
  313. data/doc/lib/{ruby-signal-bug_rb.html → VimSyntax_rb.html} +17 -4
  314. data/doc/lib/WorkingHours_rb.html +1 -1
  315. data/doc/lib/XMLDocument_rb.html +1 -1
  316. data/doc/lib/XMLElement_rb.html +1 -1
  317. data/doc/lib/daemon/Daemon_rb.html +1 -1
  318. data/doc/lib/daemon/ProcessIntercom_rb.html +1 -1
  319. data/doc/lib/daemon/ProjectBroker_rb.html +1 -1
  320. data/doc/lib/daemon/ProjectServer_rb.html +1 -1
  321. data/doc/lib/daemon/ReportServer_rb.html +1 -3
  322. data/doc/lib/daemon/WebServer_rb.html +1 -1
  323. data/doc/lib/deep_copy_rb.html +1 -1
  324. data/doc/lib/reports/CSVFile_rb.html +1 -1
  325. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  326. data/doc/lib/reports/GanttChart_rb.html +1 -1
  327. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  328. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  329. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  330. data/doc/lib/reports/GanttLine_rb.html +1 -1
  331. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  332. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  333. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  334. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  335. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  336. data/doc/lib/reports/Navigator_rb.html +1 -1
  337. data/doc/lib/reports/NikuReport_rb.html +1 -1
  338. data/doc/lib/reports/ReportBase_rb.html +1 -1
  339. data/doc/lib/reports/ReportContext_rb.html +1 -1
  340. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  341. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  342. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  343. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  344. data/doc/lib/reports/ReportTable_rb.html +1 -1
  345. data/doc/lib/reports/Report_rb.html +1 -1
  346. data/doc/lib/reports/ResourceListRE_rb.html +1 -1
  347. data/doc/lib/reports/StatusSheetReport_rb.html +1 -1
  348. data/doc/lib/reports/TableReport_rb.html +1 -1
  349. data/doc/lib/reports/TaskListRE_rb.html +1 -1
  350. data/doc/lib/reports/TextReport_rb.html +1 -1
  351. data/doc/lib/reports/TimeSheetReport_rb.html +1 -1
  352. data/doc/lib/reports/TjpExportRE_rb.html +1 -1
  353. data/doc/lib/taskjuggler3_rb.html +1 -1
  354. data/doc/lib/tj3client_rb.html +1 -1
  355. data/doc/lib/tj3d_rb.html +1 -1
  356. data/doc/lib/tj3man_rb.html +1 -1
  357. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  358. data/doc/lib/tj3ss_sender_rb.html +1 -1
  359. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  360. data/doc/lib/tj3ts_sender_rb.html +1 -1
  361. data/doc/lib/tj3ts_summary_rb.html +1 -1
  362. data/lib/Allocation.rb +8 -5
  363. data/lib/BatchProcessor.rb +7 -3
  364. data/lib/FileList.rb +58 -0
  365. data/lib/Journal.rb +73 -33
  366. data/lib/KeywordArray.rb +4 -0
  367. data/lib/KeywordDocumentation.rb +45 -11
  368. data/lib/Limits.rb +0 -1
  369. data/lib/LogicalExpression.rb +1 -1
  370. data/lib/LogicalFunction.rb +14 -12
  371. data/lib/MacroTable.rb +3 -4
  372. data/lib/MessageHandler.rb +136 -7
  373. data/lib/Project.rb +72 -86
  374. data/lib/ProjectFileParser.rb +30 -33
  375. data/lib/ProjectFileScanner.rb +7 -16
  376. data/lib/PropertyList.rb +25 -27
  377. data/lib/PropertySet.rb +1 -1
  378. data/lib/PropertyTreeNode.rb +9 -12
  379. data/lib/Query.rb +5 -4
  380. data/lib/RTFNavigator.rb +2 -1
  381. data/lib/RTFQuery.rb +4 -11
  382. data/lib/RTFReport.rb +2 -1
  383. data/lib/RTFReportLink.rb +10 -4
  384. data/lib/RTFWithQuerySupport.rb +45 -0
  385. data/lib/Resource.rb +20 -20
  386. data/lib/ResourceScenario.rb +3 -3
  387. data/lib/RichText.rb +15 -7
  388. data/lib/RichTextDocument.rb +8 -4
  389. data/lib/RichTextElement.rb +35 -12
  390. data/lib/RichTextFunctionHandler.rb +11 -12
  391. data/lib/RichTextParser.rb +5 -3
  392. data/lib/RichTextScanner.rb +144 -565
  393. data/lib/RichTextSnip.rb +3 -7
  394. data/lib/RichTextSyntaxRules.rb +51 -32
  395. data/lib/ScenarioData.rb +16 -25
  396. data/lib/SheetHandlerBase.rb +59 -2
  397. data/lib/SheetReceiver.rb +36 -18
  398. data/lib/SimpleQueryExpander.rb +58 -0
  399. data/lib/SyntaxReference.rb +9 -5
  400. data/lib/TOCEntry.rb +2 -0
  401. data/lib/TableOfContents.rb +4 -0
  402. data/lib/Task.rb +23 -12
  403. data/lib/TaskJuggler.rb +72 -33
  404. data/lib/TaskScenario.rb +131 -53
  405. data/lib/TextParser.rb +43 -30
  406. data/lib/TextParser/Pattern.rb +17 -13
  407. data/lib/TextParser/Rule.rb +5 -0
  408. data/lib/TextScanner.rb +46 -25
  409. data/lib/TimeSheetSummary.rb +9 -7
  410. data/lib/TimeSheets.rb +14 -23
  411. data/lib/Tj3Config.rb +1 -1
  412. data/lib/TjTime.rb +1 -2
  413. data/lib/TjpSyntaxRules.rb +128 -104
  414. data/lib/UTF8String.rb +0 -1
  415. data/lib/UserManual.rb +5 -4
  416. data/lib/VimSyntax.rb +223 -0
  417. data/lib/daemon/Daemon.rb +9 -0
  418. data/lib/daemon/ProcessIntercom.rb +19 -4
  419. data/lib/daemon/ProjectBroker.rb +149 -68
  420. data/lib/daemon/ProjectServer.rb +119 -79
  421. data/lib/daemon/ReportServer.rb +42 -31
  422. data/lib/daemon/WebServer.rb +21 -2
  423. data/lib/deep_copy.rb +1 -1
  424. data/lib/reports/GanttContainer.rb +2 -2
  425. data/lib/reports/GanttLine.rb +2 -3
  426. data/lib/reports/GanttTaskBar.rb +7 -3
  427. data/lib/reports/Report.rb +62 -57
  428. data/lib/reports/ReportBase.rb +6 -4
  429. data/lib/reports/ReportTableCell.rb +13 -14
  430. data/lib/reports/TableReport.rb +2 -1
  431. data/lib/reports/TextReport.rb +3 -0
  432. data/lib/reports/TimeSheetReport.rb +2 -3
  433. data/lib/reports/TjpExportRE.rb +0 -2
  434. data/lib/tj3client.rb +31 -3
  435. data/lib/tj3d.rb +8 -1
  436. data/manual/Day_To_Day_Juggling +2 -95
  437. data/manual/How_To_Contribute +2 -1
  438. data/manual/Rich_Text_Attributes +37 -3
  439. data/manual/Software +203 -0
  440. data/test/MessageChecker.rb +4 -4
  441. data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
  442. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  443. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  444. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  445. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  446. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  447. data/test/TestSuite/HTML-Reports/css/tjmanual.css +14 -0
  448. data/test/TestSuite/HTML-Reports/css/tjreport.css +233 -21
  449. data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
  450. data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
  451. data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +20 -20
  452. data/test/TestSuite/ReportGenerator/Correct/Alerts.tjp +48 -0
  453. data/test/TestSuite/ReportGenerator/Correct/Macros.tjp +57 -0
  454. data/test/TestSuite/ReportGenerator/Correct/refs/Alerts-1.csv +386 -0
  455. data/test/TestSuite/ReportGenerator/Correct/refs/Macros-1.csv +6 -0
  456. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjmanual.css +0 -0
  457. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjreport.css +0 -0
  458. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/details.png +0 -0
  459. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-green.png +0 -0
  460. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-red.png +0 -0
  461. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-yellow.png +0 -0
  462. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resource.png +0 -0
  463. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resourcegroup.png +0 -0
  464. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/task.png +0 -0
  465. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/taskgroup.png +0 -0
  466. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-down.png +0 -0
  467. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-flat.png +0 -0
  468. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-up.png +0 -0
  469. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +26 -0
  470. data/test/TestSuite/ReportGenerator/{Correct → Errors}/scripts/wz_tooltip.js +0 -0
  471. data/test/TestSuite/Scheduler/Correct/Allocate.html +3210 -0
  472. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +19 -0
  473. data/test/TestSuite/Scheduler/Correct/Container.html +22 -22
  474. data/test/TestSuite/Scheduler/Correct/Limits.html +4964 -0
  475. data/test/TestSuite/Scheduler/Correct/Shift.html +1707 -417
  476. data/test/TestSuite/Scheduler/Correct/Shift2.html +9 -9
  477. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +6 -2
  478. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +66 -0
  479. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +407 -0
  480. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  481. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  482. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  483. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  484. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  485. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  486. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  487. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  488. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  489. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  490. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  491. data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +1 -1
  492. data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +1 -1
  493. data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +1 -1
  494. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +1 -1
  495. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +1 -1
  496. data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +1 -1
  497. data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +1 -1
  498. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +1 -1
  499. data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +1 -1
  500. data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +1 -1
  501. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +1 -1
  502. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +1 -1
  503. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +1 -1
  504. data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +1 -1
  505. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +1301 -0
  506. data/test/TestSuite/Scheduler/Errors/task_pred_before.tjp +11 -0
  507. data/test/TestSuite/Scheduler/Errors/task_pred_before_gd.tjp +11 -0
  508. data/test/TestSuite/Scheduler/Errors/task_pred_before_gl.tjp +11 -0
  509. data/test/TestSuite/Scheduler/Errors/task_succ_after.tjp +12 -0
  510. data/test/TestSuite/Scheduler/Errors/task_succ_after_gd.tjp +12 -0
  511. data/test/TestSuite/Scheduler/Errors/task_succ_after_gl.tjp +12 -0
  512. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  513. data/test/TestSuite/StatusSheets/resrep.tji +7 -0
  514. data/test/TestSuite/StatusSheets/run +6 -4
  515. data/test/TestSuite/StatusSheets/tj3d.log +312 -0
  516. data/test/TestSuite/Syntax/Correct/Managers.html +263 -0
  517. data/test/TestSuite/Syntax/Correct/tutorial.tjp +1 -2
  518. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  519. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +1 -1
  520. data/test/TestSuite/TimeSheets/acceptable_intervals +1 -0
  521. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  522. data/test/TestSuite/TimeSheets/run +6 -5
  523. data/test/TestSuite/TimeSheets/statussheets.log +1 -0
  524. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  525. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  526. data/test/test_PropertySet.rb +2 -2
  527. data/test/test_RichText.rb +178 -387
  528. data/test/test_SimpleQueryExpander.rb +55 -0
  529. data/test/test_deep_copy.rb +2 -2
  530. metadata +854 -834
  531. data/lib/MacroParser.rb +0 -77
  532. data/lib/Message.rb +0 -56
  533. data/lib/ruby-signal-bug.rb +0 -43
  534. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  535. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  536. data/test/TestSuite/ReportGenerator/Correct/Journal.html +0 -63
  537. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  538. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  540. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  541. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  542. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  543. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  544. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  545. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
@@ -165,6 +165,10 @@
165
165
 
166
166
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
167
167
 
168
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
169
+
170
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
171
+
168
172
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
169
173
 
170
174
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -237,8 +241,6 @@
237
241
 
238
242
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
239
243
 
240
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
241
-
242
244
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
243
245
 
244
246
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -303,6 +305,8 @@
303
305
 
304
306
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
305
307
 
308
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
309
+
306
310
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
307
311
 
308
312
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -349,8 +353,6 @@
349
353
 
350
354
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
351
355
 
352
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
353
-
354
356
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
355
357
 
356
358
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -391,6 +393,8 @@
391
393
 
392
394
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
393
395
 
396
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
397
+
394
398
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
395
399
 
396
400
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -501,6 +505,8 @@
501
505
 
502
506
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
503
507
 
508
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
509
+
504
510
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
505
511
 
506
512
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -165,6 +165,10 @@
165
165
 
166
166
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
167
167
 
168
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
169
+
170
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
171
+
168
172
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
169
173
 
170
174
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -237,8 +241,6 @@
237
241
 
238
242
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
239
243
 
240
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
241
-
242
244
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
243
245
 
244
246
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -303,6 +305,8 @@
303
305
 
304
306
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
305
307
 
308
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
309
+
306
310
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
307
311
 
308
312
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -349,8 +353,6 @@
349
353
 
350
354
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
351
355
 
352
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
353
-
354
356
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
355
357
 
356
358
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -391,6 +393,8 @@
391
393
 
392
394
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
393
395
 
396
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
397
+
394
398
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
395
399
 
396
400
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -501,6 +505,8 @@
501
505
 
502
506
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
503
507
 
508
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
509
+
504
510
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
505
511
 
506
512
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -163,6 +163,10 @@
163
163
 
164
164
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
165
165
 
166
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
167
+
168
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
169
+
166
170
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
167
171
 
168
172
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -235,8 +239,6 @@
235
239
 
236
240
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
237
241
 
238
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
239
-
240
242
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
241
243
 
242
244
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -301,6 +303,8 @@
301
303
 
302
304
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
303
305
 
306
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
307
+
304
308
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
305
309
 
306
310
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -347,8 +351,6 @@
347
351
 
348
352
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
349
353
 
350
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
351
-
352
354
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
353
355
 
354
356
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -389,6 +391,8 @@
389
391
 
390
392
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
391
393
 
394
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
395
+
392
396
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
393
397
 
394
398
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -499,6 +503,8 @@
499
503
 
500
504
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
501
505
 
506
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
507
+
502
508
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
503
509
 
504
510
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -169,6 +169,10 @@
169
169
 
170
170
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
171
171
 
172
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
173
+
174
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
175
+
172
176
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
173
177
 
174
178
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -241,8 +245,6 @@
241
245
 
242
246
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
243
247
 
244
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
245
-
246
248
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
247
249
 
248
250
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -307,6 +309,8 @@
307
309
 
308
310
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
309
311
 
312
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
313
+
310
314
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
311
315
 
312
316
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -353,8 +357,6 @@
353
357
 
354
358
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
355
359
 
356
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
357
-
358
360
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
359
361
 
360
362
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -395,6 +397,8 @@
395
397
 
396
398
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
397
399
 
400
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
401
+
398
402
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
399
403
 
400
404
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -505,6 +509,8 @@
505
509
 
506
510
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
507
511
 
512
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
513
+
508
514
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
509
515
 
510
516
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -163,6 +163,10 @@
163
163
 
164
164
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
165
165
 
166
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
167
+
168
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
169
+
166
170
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
167
171
 
168
172
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -235,8 +239,6 @@
235
239
 
236
240
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
237
241
 
238
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
239
-
240
242
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
241
243
 
242
244
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -301,6 +303,8 @@
301
303
 
302
304
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
303
305
 
306
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
307
+
304
308
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
305
309
 
306
310
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -347,8 +351,6 @@
347
351
 
348
352
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
349
353
 
350
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
351
-
352
354
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
353
355
 
354
356
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -389,6 +391,8 @@
389
391
 
390
392
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
391
393
 
394
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
395
+
392
396
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
393
397
 
394
398
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -499,6 +503,8 @@
499
503
 
500
504
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
501
505
 
506
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
507
+
502
508
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
503
509
 
504
510
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -167,6 +167,10 @@
167
167
 
168
168
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
169
169
 
170
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
171
+
172
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
173
+
170
174
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
171
175
 
172
176
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -239,8 +243,6 @@
239
243
 
240
244
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
241
245
 
242
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
243
-
244
246
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
245
247
 
246
248
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -305,6 +307,8 @@
305
307
 
306
308
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
307
309
 
310
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
311
+
308
312
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
309
313
 
310
314
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -351,8 +355,6 @@
351
355
 
352
356
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
353
357
 
354
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
355
-
356
358
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
357
359
 
358
360
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -393,6 +395,8 @@
393
395
 
394
396
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
395
397
 
398
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
399
+
396
400
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
397
401
 
398
402
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -503,6 +507,8 @@
503
507
 
504
508
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
505
509
 
510
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
511
+
506
512
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
507
513
 
508
514
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -165,6 +165,10 @@
165
165
 
166
166
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
167
167
 
168
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
169
+
170
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
171
+
168
172
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
169
173
 
170
174
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -237,8 +241,6 @@
237
241
 
238
242
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
239
243
 
240
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
241
-
242
244
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
243
245
 
244
246
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -303,6 +305,8 @@
303
305
 
304
306
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
305
307
 
308
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
309
+
306
310
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
307
311
 
308
312
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -349,8 +353,6 @@
349
353
 
350
354
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
351
355
 
352
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
353
-
354
356
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
355
357
 
356
358
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -391,6 +393,8 @@
391
393
 
392
394
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
393
395
 
396
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
397
+
394
398
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
395
399
 
396
400
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -501,6 +505,8 @@
501
505
 
502
506
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
503
507
 
508
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
509
+
504
510
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
505
511
 
506
512
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -181,6 +181,10 @@
181
181
 
182
182
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
183
183
 
184
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
185
+
186
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
187
+
184
188
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
185
189
 
186
190
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -253,8 +257,6 @@
253
257
 
254
258
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
255
259
 
256
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
257
-
258
260
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
259
261
 
260
262
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -319,6 +321,8 @@
319
321
 
320
322
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
321
323
 
324
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
325
+
322
326
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
323
327
 
324
328
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -365,8 +369,6 @@
365
369
 
366
370
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
367
371
 
368
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
369
-
370
372
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
371
373
 
372
374
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -407,6 +409,8 @@
407
409
 
408
410
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
409
411
 
412
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
413
+
410
414
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
411
415
 
412
416
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -517,6 +521,8 @@
517
521
 
518
522
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
519
523
 
524
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
525
+
520
526
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
521
527
 
522
528
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -575,6 +581,27 @@ HTML files are supported.
575
581
 
576
582
  <!-- Attributes -->
577
583
 
584
+ <div id="attribute-method-details" class="method-section section">
585
+ <h3 class="section-header">Attributes</h3>
586
+
587
+
588
+ <div id="keywords-attribute-method" class="method-detail">
589
+ <a name="keywords"></a>
590
+
591
+ <div class="method-heading attribute-method-heading">
592
+ <span class="method-name">keywords</span><span
593
+ class="attribute-access-type">[R]</span>
594
+ </div>
595
+
596
+ <div class="method-description">
597
+
598
+
599
+
600
+ </div>
601
+ </div>
602
+
603
+ </div>
604
+
578
605
 
579
606
  <!-- Methods -->
580
607
 
@@ -600,7 +627,9 @@ The constructor is the most important function of this class. It creates a
600
627
  parser object and then traverses all rules and extracts the documented
601
628
  patterns. In a second pass the extracted <a
602
629
  href="KeywordDocumentation.html">KeywordDocumentation</a> objects are then
603
- cross referenced to capture their relationships.
630
+ cross referenced to capture their relationships. <em>manual</em> is an
631
+ optional reference to the <a href="UserManual.html">UserManual</a> object
632
+ that uses this <a href="SyntaxReference.html">SyntaxReference</a>.
604
633
  </p>
605
634
 
606
635
 
@@ -608,47 +637,47 @@ cross referenced to capture their relationships.
608
637
  <div class="method-source-code"
609
638
  id="new-source">
610
639
  <pre>
611
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 31</span>
612
- 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">manual</span> = <span class="ruby-keyword kw">nil</span>)
613
- 32: <span class="ruby-ivar">@manual</span> = <span class="ruby-identifier">manual</span>
614
- 33: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-constant">MessageHandler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
615
- 34: <span class="ruby-ivar">@parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
616
- 35: <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">updateParserTables</span>
617
- 36:
618
- 37: <span class="ruby-comment cmt"># This hash stores all documented keywords using the keyword as</span>
619
- 38: <span class="ruby-comment cmt"># index.</span>
620
- 39: <span class="ruby-ivar">@keywords</span> = {}
621
- 40: <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>
622
- 41: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span>
623
- 42: <span class="ruby-comment cmt"># Only patterns that are documented are of interest.</span>
624
- 43: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>.<span class="ruby-identifier">nil?</span>
625
- 44:
626
- 45: <span class="ruby-comment cmt"># Make sure each keyword is unique.</span>
627
- 46: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">keyword</span>)
628
- 47: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Multiple patterns have the same keyword #{pattern.keyword}&quot;</span>
629
- 48: <span class="ruby-keyword kw">end</span>
630
- 49:
631
- 50: <span class="ruby-identifier">argDocs</span> = []
632
- 51: <span class="ruby-comment cmt"># Create a new KeywordDocumentation object and fill-in all extracted</span>
633
- 52: <span class="ruby-comment cmt"># values.</span>
634
- 53: <span class="ruby-identifier">kwd</span> = <span class="ruby-constant">KeywordDocumentation</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-identifier">pattern</span>,
635
- 54: <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>), <span class="ruby-identifier">argDocs</span>,
636
- 55: <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">pattern</span>, {}), <span class="ruby-ivar">@manual</span>)
637
- 56: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">keyword</span>] = <span class="ruby-identifier">kwd</span>
638
- 57: <span class="ruby-keyword kw">end</span>
639
- 58: <span class="ruby-keyword kw">end</span>
640
- 59:
641
- 60: <span class="ruby-comment cmt"># Make sure all references to other keywords are present.</span>
642
- 61: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
643
- 62: <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">crossReference</span>(<span class="ruby-ivar">@keywords</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>)
644
- 63: <span class="ruby-keyword kw">end</span>
645
- 64:
646
- 65: <span class="ruby-comment cmt"># Figure out whether the keyword describes an inheritable attribute or</span>
647
- 66: <span class="ruby-comment cmt"># not.</span>
648
- 67: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
649
- 68: <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">computeInheritance</span>(<span class="ruby-ivar">@keywords</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>)
650
- 69: <span class="ruby-keyword kw">end</span>
651
- 70: <span class="ruby-keyword kw">end</span></pre>
640
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 35</span>
641
+ 35: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">manual</span> = <span class="ruby-keyword kw">nil</span>)
642
+ 36: <span class="ruby-ivar">@manual</span> = <span class="ruby-identifier">manual</span>
643
+ 37: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-constant">MessageHandler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
644
+ 38: <span class="ruby-ivar">@parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
645
+ 39: <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">updateParserTables</span>
646
+ 40:
647
+ 41: <span class="ruby-comment cmt"># This hash stores all documented keywords using the keyword as</span>
648
+ 42: <span class="ruby-comment cmt"># index.</span>
649
+ 43: <span class="ruby-ivar">@keywords</span> = {}
650
+ 44: <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>
651
+ 45: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span>
652
+ 46: <span class="ruby-comment cmt"># Only patterns that are documented are of interest.</span>
653
+ 47: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>.<span class="ruby-identifier">nil?</span>
654
+ 48:
655
+ 49: <span class="ruby-comment cmt"># Make sure each keyword is unique.</span>
656
+ 50: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">keyword</span>)
657
+ 51: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Multiple patterns have the same keyword #{pattern.keyword}&quot;</span>
658
+ 52: <span class="ruby-keyword kw">end</span>
659
+ 53:
660
+ 54: <span class="ruby-identifier">argDocs</span> = []
661
+ 55: <span class="ruby-comment cmt"># Create a new KeywordDocumentation object and fill-in all extracted</span>
662
+ 56: <span class="ruby-comment cmt"># values.</span>
663
+ 57: <span class="ruby-identifier">kwd</span> = <span class="ruby-constant">KeywordDocumentation</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-identifier">pattern</span>,
664
+ 58: <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>), <span class="ruby-identifier">argDocs</span>,
665
+ 59: <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">pattern</span>, {}), <span class="ruby-ivar">@manual</span>)
666
+ 60: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">keyword</span>] = <span class="ruby-identifier">kwd</span>
667
+ 61: <span class="ruby-keyword kw">end</span>
668
+ 62: <span class="ruby-keyword kw">end</span>
669
+ 63:
670
+ 64: <span class="ruby-comment cmt"># Make sure all references to other keywords are present.</span>
671
+ 65: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
672
+ 66: <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">crossReference</span>(<span class="ruby-ivar">@keywords</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>)
673
+ 67: <span class="ruby-keyword kw">end</span>
674
+ 68:
675
+ 69: <span class="ruby-comment cmt"># Figure out whether the keyword describes an inheritable attribute or</span>
676
+ 70: <span class="ruby-comment cmt"># not.</span>
677
+ 71: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
678
+ 72: <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">computeInheritance</span>(<span class="ruby-ivar">@keywords</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>)
679
+ 73: <span class="ruby-keyword kw">end</span>
680
+ 74: <span class="ruby-keyword kw">end</span></pre>
652
681
  </div>
653
682
 
654
683
  </div>
@@ -679,7 +708,8 @@ cross referenced to capture their relationships.
679
708
  <div class="method-description">
680
709
 
681
710
  <p>
682
- Return a sorted Array with all keywords.
711
+ Return a sorted Array with all keywords (as <a
712
+ href="../String.html">String</a> objects).
683
713
  </p>
684
714
 
685
715
 
@@ -687,19 +717,19 @@ Return a sorted Array with all keywords.
687
717
  <div class="method-source-code"
688
718
  id="all-source">
689
719
  <pre>
690
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 73</span>
691
- 73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">all</span>
692
- 74: <span class="ruby-identifier">sorted</span> = <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>
693
- 75: <span class="ruby-comment cmt"># Register the neighbours with each keyword so we can use this info in</span>
694
- 76: <span class="ruby-comment cmt"># navigation bars.</span>
695
- 77: <span class="ruby-identifier">pred</span> = <span class="ruby-keyword kw">nil</span>
696
- 78: <span class="ruby-identifier">sorted</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
697
- 79: <span class="ruby-identifier">keyword</span> = <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">kwd</span>]
698
- 80: <span class="ruby-identifier">pred</span>.<span class="ruby-identifier">successor</span> = <span class="ruby-identifier">keyword</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pred</span>
699
- 81: <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">predecessor</span> = <span class="ruby-identifier">pred</span>
700
- 82: <span class="ruby-identifier">pred</span> = <span class="ruby-identifier">keyword</span>
701
- 83: <span class="ruby-keyword kw">end</span>
702
- 84: <span class="ruby-keyword kw">end</span></pre>
720
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 77</span>
721
+ 77: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">all</span>
722
+ 78: <span class="ruby-identifier">sorted</span> = <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>
723
+ 79: <span class="ruby-comment cmt"># Register the neighbours with each keyword so we can use this info in</span>
724
+ 80: <span class="ruby-comment cmt"># navigation bars.</span>
725
+ 81: <span class="ruby-identifier">pred</span> = <span class="ruby-keyword kw">nil</span>
726
+ 82: <span class="ruby-identifier">sorted</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
727
+ 83: <span class="ruby-identifier">keyword</span> = <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">kwd</span>]
728
+ 84: <span class="ruby-identifier">pred</span>.<span class="ruby-identifier">successor</span> = <span class="ruby-identifier">keyword</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pred</span>
729
+ 85: <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">predecessor</span> = <span class="ruby-identifier">pred</span>
730
+ 86: <span class="ruby-identifier">pred</span> = <span class="ruby-identifier">keyword</span>
731
+ 87: <span class="ruby-keyword kw">end</span>
732
+ 88: <span class="ruby-keyword kw">end</span></pre>
703
733
  </div>
704
734
 
705
735
  </div>
@@ -733,49 +763,49 @@ support navigating through the syntax reference.
733
763
  <div class="method-source-code"
734
764
  id="generate-navbar-source">
735
765
  <pre>
736
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 137</span>
737
- 137: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateHTMLnavbar</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">keywords</span>)
738
- 138: <span class="ruby-identifier">html</span> = <span class="ruby-constant">HTMLDocument</span>.<span class="ruby-identifier">new</span>
739
- 139: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">html</span>.<span class="ruby-identifier">generateHead</span>(<span class="ruby-value str">'TaskJuggler Syntax Reference Navigator'</span>)
740
- 140: <span class="ruby-identifier">head</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'base'</span>, <span class="ruby-value str">'target'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'display'</span>)
741
- 141: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">body</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'body'</span>))
742
- 142:
743
- 143: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'Table Of Contents'</span>, <span class="ruby-value str">'a'</span>, <span class="ruby-value str">'href'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'toc.html'</span>)
744
- 144: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'br'</span>)
745
- 145:
746
- 146: <span class="ruby-identifier">normalizedKeywords</span> = {}
747
- 147: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
748
- 148: <span class="ruby-identifier">normalizedKeywords</span>[<span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">title</span>] = <span class="ruby-identifier">keyword</span>
749
- 149: <span class="ruby-keyword kw">end</span>
750
- 150: <span class="ruby-identifier">letter</span> = <span class="ruby-keyword kw">nil</span>
751
- 151: <span class="ruby-identifier">letters</span> = []
752
- 152: <span class="ruby-identifier">normalizedKeywords</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort!</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">normalized</span><span class="ruby-operator">|</span>
753
- 153: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">normalized</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">letter</span>
754
- 154: <span class="ruby-identifier">letter</span> = <span class="ruby-identifier">normalized</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>]
755
- 155: <span class="ruby-identifier">letters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">letter</span>
756
- 156: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">h</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'h3'</span>))
757
- 157: <span class="ruby-identifier">h</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">letter</span>.<span class="ruby-identifier">upcase</span>, <span class="ruby-value str">'a'</span>, <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">letter</span>)
758
- 158: <span class="ruby-keyword kw">end</span>
759
- 159: <span class="ruby-identifier">keyword</span> = <span class="ruby-identifier">normalizedKeywords</span>[<span class="ruby-identifier">normalized</span>]
760
- 160: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{normalized}&quot;</span>, <span class="ruby-value str">'a'</span>,
761
- 161: <span class="ruby-value str">'href'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{keyword}.html&quot;</span>)
762
- 162: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'br'</span>)
763
- 163: <span class="ruby-keyword kw">end</span>
764
- 164:
765
- 165: <span class="ruby-identifier">html</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">directory</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'navbar.html'</span>)
766
- 166:
767
- 167: <span class="ruby-identifier">html</span> = <span class="ruby-constant">HTMLDocument</span>.<span class="ruby-identifier">new</span>
768
- 168: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">html</span>.<span class="ruby-identifier">generateHead</span>(<span class="ruby-value str">'TaskJuggler Syntax Reference Navigator'</span>)
769
- 169: <span class="ruby-identifier">head</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'base'</span>, <span class="ruby-value str">'target'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'navigator'</span>)
770
- 170: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">body</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'body'</span>))
771
- 171:
772
- 172: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">h3</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'h3'</span>))
773
- 173: <span class="ruby-identifier">letters</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span>
774
- 174: <span class="ruby-identifier">h3</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">l</span>.<span class="ruby-identifier">upcase</span>, <span class="ruby-value str">'a'</span>,
775
- 175: <span class="ruby-value str">'href'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;navbar.html##{l}&quot;</span>)
776
- 176: <span class="ruby-keyword kw">end</span>
777
- 177: <span class="ruby-identifier">html</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">directory</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'alphabet.html'</span>)
778
- 178: <span class="ruby-keyword kw">end</span></pre>
766
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 141</span>
767
+ 141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateHTMLnavbar</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">keywords</span>)
768
+ 142: <span class="ruby-identifier">html</span> = <span class="ruby-constant">HTMLDocument</span>.<span class="ruby-identifier">new</span>
769
+ 143: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">html</span>.<span class="ruby-identifier">generateHead</span>(<span class="ruby-value str">'TaskJuggler Syntax Reference Navigator'</span>)
770
+ 144: <span class="ruby-identifier">head</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'base'</span>, <span class="ruby-value str">'target'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'display'</span>)
771
+ 145: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">body</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'body'</span>))
772
+ 146:
773
+ 147: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'Table Of Contents'</span>, <span class="ruby-value str">'a'</span>, <span class="ruby-value str">'href'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'toc.html'</span>)
774
+ 148: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'br'</span>)
775
+ 149:
776
+ 150: <span class="ruby-identifier">normalizedKeywords</span> = {}
777
+ 151: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
778
+ 152: <span class="ruby-identifier">normalizedKeywords</span>[<span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">title</span>] = <span class="ruby-identifier">keyword</span>
779
+ 153: <span class="ruby-keyword kw">end</span>
780
+ 154: <span class="ruby-identifier">letter</span> = <span class="ruby-keyword kw">nil</span>
781
+ 155: <span class="ruby-identifier">letters</span> = []
782
+ 156: <span class="ruby-identifier">normalizedKeywords</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort!</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">normalized</span><span class="ruby-operator">|</span>
783
+ 157: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">normalized</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">letter</span>
784
+ 158: <span class="ruby-identifier">letter</span> = <span class="ruby-identifier">normalized</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>]
785
+ 159: <span class="ruby-identifier">letters</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">letter</span>
786
+ 160: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">h</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'h3'</span>))
787
+ 161: <span class="ruby-identifier">h</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">letter</span>.<span class="ruby-identifier">upcase</span>, <span class="ruby-value str">'a'</span>, <span class="ruby-value str">'name'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">letter</span>)
788
+ 162: <span class="ruby-keyword kw">end</span>
789
+ 163: <span class="ruby-identifier">keyword</span> = <span class="ruby-identifier">normalizedKeywords</span>[<span class="ruby-identifier">normalized</span>]
790
+ 164: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{normalized}&quot;</span>, <span class="ruby-value str">'a'</span>,
791
+ 165: <span class="ruby-value str">'href'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;#{keyword}.html&quot;</span>)
792
+ 166: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'br'</span>)
793
+ 167: <span class="ruby-keyword kw">end</span>
794
+ 168:
795
+ 169: <span class="ruby-identifier">html</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">directory</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'navbar.html'</span>)
796
+ 170:
797
+ 171: <span class="ruby-identifier">html</span> = <span class="ruby-constant">HTMLDocument</span>.<span class="ruby-identifier">new</span>
798
+ 172: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">html</span>.<span class="ruby-identifier">generateHead</span>(<span class="ruby-value str">'TaskJuggler Syntax Reference Navigator'</span>)
799
+ 173: <span class="ruby-identifier">head</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'base'</span>, <span class="ruby-value str">'target'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'navigator'</span>)
800
+ 174: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">body</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'body'</span>))
801
+ 175:
802
+ 176: <span class="ruby-identifier">body</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">h3</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'h3'</span>))
803
+ 177: <span class="ruby-identifier">letters</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span>
804
+ 178: <span class="ruby-identifier">h3</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">l</span>.<span class="ruby-identifier">upcase</span>, <span class="ruby-value str">'a'</span>,
805
+ 179: <span class="ruby-value str">'href'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;navbar.html##{l}&quot;</span>)
806
+ 180: <span class="ruby-keyword kw">end</span>
807
+ 181: <span class="ruby-identifier">html</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">directory</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'alphabet.html'</span>)
808
+ 182: <span class="ruby-keyword kw">end</span></pre>
779
809
  </div>
780
810
 
781
811
  </div>
@@ -810,14 +840,14 @@ error the result is empty but an error message will be send to $stderr.
810
840
  <div class="method-source-code"
811
841
  id="generate-reference-source">
812
842
  <pre>
813
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 127</span>
814
- 127: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateHTMLreference</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">keyword</span>)
815
- 128: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
816
- 129: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">generateHTML</span>(<span class="ruby-identifier">directory</span>)
817
- 130: <span class="ruby-keyword kw">else</span>
818
- 131: <span class="ruby-value str">''</span>
819
- 132: <span class="ruby-keyword kw">end</span>
820
- 133: <span class="ruby-keyword kw">end</span></pre>
843
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 131</span>
844
+ 131: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateHTMLreference</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">keyword</span>)
845
+ 132: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
846
+ 133: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">generateHTML</span>(<span class="ruby-identifier">directory</span>)
847
+ 134: <span class="ruby-keyword kw">else</span>
848
+ 135: <span class="ruby-value str">''</span>
849
+ 136: <span class="ruby-keyword kw">end</span>
850
+ 137: <span class="ruby-keyword kw">end</span></pre>
821
851
  </div>
822
852
 
823
853
  </div>
@@ -848,15 +878,15 @@ error the result is empty but an error message will be send to $stderr.
848
878
  <div class="method-source-code"
849
879
  id="internal-eferences-source">
850
880
  <pre>
851
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 104</span>
852
- 104: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">internalReferences</span>
853
- 105: <span class="ruby-identifier">references</span> = {}
854
- 106: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
855
- 107: (<span class="ruby-identifier">refs</span> = <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">references</span>.<span class="ruby-identifier">uniq</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
856
- 108: <span class="ruby-identifier">references</span>[<span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">keyword</span>] = <span class="ruby-identifier">refs</span>
857
- 109: <span class="ruby-keyword kw">end</span>
858
- 110: <span class="ruby-identifier">references</span>
859
- 111: <span class="ruby-keyword kw">end</span></pre>
881
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 108</span>
882
+ 108: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">internalReferences</span>
883
+ 109: <span class="ruby-identifier">references</span> = {}
884
+ 110: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
885
+ 111: (<span class="ruby-identifier">refs</span> = <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">references</span>.<span class="ruby-identifier">uniq</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
886
+ 112: <span class="ruby-identifier">references</span>[<span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">keyword</span>] = <span class="ruby-identifier">refs</span>
887
+ 113: <span class="ruby-keyword kw">end</span>
888
+ 114: <span class="ruby-identifier">references</span>
889
+ 115: <span class="ruby-keyword kw">end</span></pre>
860
890
  </div>
861
891
 
862
892
  </div>
@@ -894,19 +924,19 @@ the keywords will be enumerated &#8216;A.1&#8217; to &#8216;A.20&#8217;.
894
924
  <div class="method-source-code"
895
925
  id="table-f-ontents-source">
896
926
  <pre>
897
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 91</span>
898
- 91: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tableOfContents</span>(<span class="ruby-identifier">toc</span>, <span class="ruby-identifier">sectionPrefix</span>)
899
- 92: <span class="ruby-identifier">keywords</span> = <span class="ruby-identifier">all</span>
900
- 93: <span class="ruby-comment cmt"># Set the chapter name to 'Syntax Reference' with a link to the first</span>
901
- 94: <span class="ruby-comment cmt"># keyword.</span>
902
- 95: <span class="ruby-identifier">toc</span>.<span class="ruby-identifier">addEntry</span>(<span class="ruby-constant">TOCEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">sectionPrefix</span>, <span class="ruby-value str">'Syntax Reference'</span>, <span class="ruby-identifier">keywords</span>[<span class="ruby-value">0</span>]))
903
- 96: <span class="ruby-identifier">i</span> = <span class="ruby-value">1</span>
904
- 97: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
905
- 98: <span class="ruby-identifier">title</span> = <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">title</span>
906
- 99: <span class="ruby-identifier">toc</span>.<span class="ruby-identifier">addEntry</span>(<span class="ruby-constant">TOCEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{sectionPrefix}.#{i}&quot;</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">keyword</span>))
907
- 100: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
908
- 101: <span class="ruby-keyword kw">end</span>
909
- 102: <span class="ruby-keyword kw">end</span></pre>
927
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 95</span>
928
+ 95: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tableOfContents</span>(<span class="ruby-identifier">toc</span>, <span class="ruby-identifier">sectionPrefix</span>)
929
+ 96: <span class="ruby-identifier">keywords</span> = <span class="ruby-identifier">all</span>
930
+ 97: <span class="ruby-comment cmt"># Set the chapter name to 'Syntax Reference' with a link to the first</span>
931
+ 98: <span class="ruby-comment cmt"># keyword.</span>
932
+ 99: <span class="ruby-identifier">toc</span>.<span class="ruby-identifier">addEntry</span>(<span class="ruby-constant">TOCEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">sectionPrefix</span>, <span class="ruby-value str">'Syntax Reference'</span>, <span class="ruby-identifier">keywords</span>[<span class="ruby-value">0</span>]))
933
+ 100: <span class="ruby-identifier">i</span> = <span class="ruby-value">1</span>
934
+ 101: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
935
+ 102: <span class="ruby-identifier">title</span> = <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">title</span>
936
+ 103: <span class="ruby-identifier">toc</span>.<span class="ruby-identifier">addEntry</span>(<span class="ruby-constant">TOCEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">&quot;#{sectionPrefix}.#{i}&quot;</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">keyword</span>))
937
+ 104: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
938
+ 105: <span class="ruby-keyword kw">end</span>
939
+ 106: <span class="ruby-keyword kw">end</span></pre>
910
940
  </div>
911
941
 
912
942
  </div>
@@ -942,14 +972,14 @@ be send to $stderr.
942
972
  <div class="method-source-code"
943
973
  id="to-s-source">
944
974
  <pre>
945
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 116</span>
946
- 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">keyword</span>)
947
- 117: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
948
- 118: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">to_s</span>
949
- 119: <span class="ruby-keyword kw">else</span>
950
- 120: <span class="ruby-value str">''</span>
951
- 121: <span class="ruby-keyword kw">end</span>
952
- 122: <span class="ruby-keyword kw">end</span></pre>
975
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 120</span>
976
+ 120: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">keyword</span>)
977
+ 121: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
978
+ 122: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">to_s</span>
979
+ 123: <span class="ruby-keyword kw">else</span>
980
+ 124: <span class="ruby-value str">''</span>
981
+ 125: <span class="ruby-keyword kw">end</span>
982
+ 126: <span class="ruby-keyword kw">end</span></pre>
953
983
  </div>
954
984
 
955
985
  </div>
@@ -991,39 +1021,39 @@ value specifies whether the attribute is scenario specific or not.
991
1021
  <div class="method-source-code"
992
1022
  id="attributes-source">
993
1023
  <pre>
994
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 220</span>
995
- 220: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">token</span>, <span class="ruby-identifier">scenarioSpecific</span>)
996
- 221: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Token #{token} must reference a rule&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value">!!</span>
997
- 222: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">token</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
998
- 223: <span class="ruby-comment cmt"># Find the matching rule.</span>
999
- 224: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">token</span>]
1000
- 225: <span class="ruby-identifier">attrs</span> = {}
1001
- 226: <span class="ruby-comment cmt"># Now we look at the first token of each pattern.</span>
1002
- 227: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span>
1003
- 228: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">__</span>
1004
- 229: <span class="ruby-comment cmt"># If it's a terminal symbol, we found what we are looking for. We add</span>
1005
- 230: <span class="ruby-comment cmt"># it to the attrs hash and mark it as non scenario specific.</span>
1006
- 231: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
1007
- 232: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'!scenarioIdCol'</span>
1008
- 233: <span class="ruby-comment cmt"># A reference to the !scenarioId rule marks the next token of the</span>
1009
- 234: <span class="ruby-comment cmt"># pattern as a reference to a rule with all scenario specific</span>
1010
- 235: <span class="ruby-comment cmt"># attributes.</span>
1011
- 236: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">true</span>))
1012
- 237: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">!!</span>
1013
- 238: <span class="ruby-comment cmt"># In case we have a reference to another rule, we just follow the</span>
1014
- 239: <span class="ruby-comment cmt"># reference. If the pattern is documented we don't have to follow the</span>
1015
- 240: <span class="ruby-comment cmt"># reference. We can use the pattern instead.</span>
1016
- 241: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>.<span class="ruby-identifier">nil?</span>
1017
- 242: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">scenarioSpecific</span>))
1018
- 243: <span class="ruby-keyword kw">else</span>
1019
- 244: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
1020
- 245: <span class="ruby-keyword kw">end</span>
1021
- 246: <span class="ruby-keyword kw">else</span>
1022
- 247: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Hit unknown token #{token}&quot;</span>
1023
- 248: <span class="ruby-keyword kw">end</span>
1024
- 249: <span class="ruby-keyword kw">end</span>
1025
- 250: <span class="ruby-identifier">attrs</span>
1026
- 251: <span class="ruby-keyword kw">end</span></pre>
1024
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 224</span>
1025
+ 224: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">token</span>, <span class="ruby-identifier">scenarioSpecific</span>)
1026
+ 225: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Token #{token} must reference a rule&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value">!!</span>
1027
+ 226: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">token</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
1028
+ 227: <span class="ruby-comment cmt"># Find the matching rule.</span>
1029
+ 228: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">token</span>]
1030
+ 229: <span class="ruby-identifier">attrs</span> = {}
1031
+ 230: <span class="ruby-comment cmt"># Now we look at the first token of each pattern.</span>
1032
+ 231: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span>
1033
+ 232: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">__</span>
1034
+ 233: <span class="ruby-comment cmt"># If it's a terminal symbol, we found what we are looking for. We add</span>
1035
+ 234: <span class="ruby-comment cmt"># it to the attrs hash and mark it as non scenario specific.</span>
1036
+ 235: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
1037
+ 236: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'!scenarioIdCol'</span>
1038
+ 237: <span class="ruby-comment cmt"># A reference to the !scenarioId rule marks the next token of the</span>
1039
+ 238: <span class="ruby-comment cmt"># pattern as a reference to a rule with all scenario specific</span>
1040
+ 239: <span class="ruby-comment cmt"># attributes.</span>
1041
+ 240: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">true</span>))
1042
+ 241: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">!!</span>
1043
+ 242: <span class="ruby-comment cmt"># In case we have a reference to another rule, we just follow the</span>
1044
+ 243: <span class="ruby-comment cmt"># reference. If the pattern is documented we don't have to follow the</span>
1045
+ 244: <span class="ruby-comment cmt"># reference. We can use the pattern instead.</span>
1046
+ 245: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>.<span class="ruby-identifier">nil?</span>
1047
+ 246: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">scenarioSpecific</span>))
1048
+ 247: <span class="ruby-keyword kw">else</span>
1049
+ 248: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
1050
+ 249: <span class="ruby-keyword kw">end</span>
1051
+ 250: <span class="ruby-keyword kw">else</span>
1052
+ 251: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Hit unknown token #{token}&quot;</span>
1053
+ 252: <span class="ruby-keyword kw">end</span>
1054
+ 253: <span class="ruby-keyword kw">end</span>
1055
+ 254: <span class="ruby-identifier">attrs</span>
1056
+ 255: <span class="ruby-keyword kw">end</span></pre>
1027
1057
  </div>
1028
1058
 
1029
1059
  </div>
@@ -1054,29 +1084,29 @@ value specifies whether the attribute is scenario specific or not.
1054
1084
  <div class="method-source-code"
1055
1085
  id="check-eyword-source">
1056
1086
  <pre>
1057
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 253</span>
1058
- 253: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
1059
- 254: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">nil?</span>
1060
- 255: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">nil?</span>
1061
- 256: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;ERROR: #{keyword} is not a known keyword.\n\n&quot;</span>
1062
- 257: <span class="ruby-keyword kw">end</span>
1063
- 258: <span class="ruby-comment cmt"># Create list of top-level keywords.</span>
1064
- 259: <span class="ruby-identifier">kwdStr</span> = <span class="ruby-value str">''</span>
1065
- 260: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
1066
- 261: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
1067
- 262: (<span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</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> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">kwd</span>)
1068
- 263: <span class="ruby-identifier">kwdStr</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">kwdStr</span>.<span class="ruby-identifier">empty?</span>
1069
- 264: <span class="ruby-identifier">kwdStr</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">keyword</span>
1070
- 265: <span class="ruby-keyword kw">end</span>
1071
- 266: <span class="ruby-keyword kw">end</span>
1072
- 267: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Try one of the following keywords as argument to this &quot;</span> <span class="ruby-operator">+</span>
1073
- 268: <span class="ruby-value str">&quot;program:\n&quot;</span>
1074
- 269: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{kwdStr}&quot;</span>
1075
- 270: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1076
- 271: <span class="ruby-keyword kw">end</span>
1077
- 272:
1078
- 273: <span class="ruby-keyword kw">true</span>
1079
- 274: <span class="ruby-keyword kw">end</span></pre>
1087
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 257</span>
1088
+ 257: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
1089
+ 258: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">nil?</span>
1090
+ 259: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">nil?</span>
1091
+ 260: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;ERROR: #{keyword} is not a known keyword.\n\n&quot;</span>
1092
+ 261: <span class="ruby-keyword kw">end</span>
1093
+ 262: <span class="ruby-comment cmt"># Create list of top-level keywords.</span>
1094
+ 263: <span class="ruby-identifier">kwdStr</span> = <span class="ruby-value str">''</span>
1095
+ 264: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
1096
+ 265: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
1097
+ 266: (<span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</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> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">kwd</span>)
1098
+ 267: <span class="ruby-identifier">kwdStr</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">kwdStr</span>.<span class="ruby-identifier">empty?</span>
1099
+ 268: <span class="ruby-identifier">kwdStr</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">keyword</span>
1100
+ 269: <span class="ruby-keyword kw">end</span>
1101
+ 270: <span class="ruby-keyword kw">end</span>
1102
+ 271: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;Try one of the following keywords as argument to this &quot;</span> <span class="ruby-operator">+</span>
1103
+ 272: <span class="ruby-value str">&quot;program:\n&quot;</span>
1104
+ 273: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;#{kwdStr}&quot;</span>
1105
+ 274: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
1106
+ 275: <span class="ruby-keyword kw">end</span>
1107
+ 276:
1108
+ 277: <span class="ruby-keyword kw">true</span>
1109
+ 278: <span class="ruby-keyword kw">end</span></pre>
1080
1110
  </div>
1081
1111
 
1082
1112
  </div>
@@ -1109,39 +1139,39 @@ Find optional attributes and return them hashed by the defining pattern.
1109
1139
  <div class="method-source-code"
1110
1140
  id="optional-ttributes-source">
1111
1141
  <pre>
1112
- <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 183</span>
1113
- 183: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">stack</span>)
1114
- 184: <span class="ruby-comment cmt"># If we hit an endless recursion we won't find any attributes. So we push</span>
1115
- 185: <span class="ruby-comment cmt"># each pattern we process on the 'stack'. If we hit it again, we just</span>
1116
- 186: <span class="ruby-comment cmt"># return an empty hash.</span>
1117
- 187: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stack</span>[<span class="ruby-identifier">pattern</span>]
1118
- 188:
1119
- 189: <span class="ruby-comment cmt"># If we hit a pattern that is documented, we ignore it.</span>
1120
- 190: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">stack</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>
1121
- 191:
1122
- 192: <span class="ruby-comment cmt"># Push pattern onto 'stack'.</span>
1123
- 193: <span class="ruby-identifier">stack</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-keyword kw">true</span>
1124
- 194:
1125
- 195: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'_{'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'_}'</span>
1126
- 196: <span class="ruby-comment cmt"># We have found an optional attribute pattern!</span>
1127
- 197: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">false</span>)
1128
- 198: <span class="ruby-keyword kw">end</span>
1129
- 199:
1130
- 200: <span class="ruby-comment cmt"># If a token of the pattern is a reference, we recursively</span>
1131
- 201: <span class="ruby-comment cmt"># follow the reference to the next pattern.</span>
1132
- 202: <span class="ruby-identifier">pattern</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>
1133
- 203: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">!!</span>
1134
- 204: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">token</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
1135
- 205: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">token</span>]
1136
- 206: <span class="ruby-comment cmt"># Rules with multiple patterns won't lead to attributes.</span>
1137
- 207: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
1138
- 208:
1139
- 209: <span class="ruby-identifier">attrs</span> = <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">stack</span>)
1140
- 210: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attrs</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">empty?</span>
1141
- 211: <span class="ruby-keyword kw">end</span>
1142
- 212: <span class="ruby-keyword kw">end</span>
1143
- 213: {}
1144
- 214: <span class="ruby-keyword kw">end</span></pre>
1142
+ <span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 187</span>
1143
+ 187: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">stack</span>)
1144
+ 188: <span class="ruby-comment cmt"># If we hit an endless recursion we won't find any attributes. So we push</span>
1145
+ 189: <span class="ruby-comment cmt"># each pattern we process on the 'stack'. If we hit it again, we just</span>
1146
+ 190: <span class="ruby-comment cmt"># return an empty hash.</span>
1147
+ 191: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stack</span>[<span class="ruby-identifier">pattern</span>]
1148
+ 192:
1149
+ 193: <span class="ruby-comment cmt"># If we hit a pattern that is documented, we ignore it.</span>
1150
+ 194: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">stack</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>
1151
+ 195:
1152
+ 196: <span class="ruby-comment cmt"># Push pattern onto 'stack'.</span>
1153
+ 197: <span class="ruby-identifier">stack</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-keyword kw">true</span>
1154
+ 198:
1155
+ 199: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'_{'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'_}'</span>
1156
+ 200: <span class="ruby-comment cmt"># We have found an optional attribute pattern!</span>
1157
+ 201: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">false</span>)
1158
+ 202: <span class="ruby-keyword kw">end</span>
1159
+ 203:
1160
+ 204: <span class="ruby-comment cmt"># If a token of the pattern is a reference, we recursively</span>
1161
+ 205: <span class="ruby-comment cmt"># follow the reference to the next pattern.</span>
1162
+ 206: <span class="ruby-identifier">pattern</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>
1163
+ 207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">!!</span>
1164
+ 208: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">token</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
1165
+ 209: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">token</span>]
1166
+ 210: <span class="ruby-comment cmt"># Rules with multiple patterns won't lead to attributes.</span>
1167
+ 211: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
1168
+ 212:
1169
+ 213: <span class="ruby-identifier">attrs</span> = <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">stack</span>)
1170
+ 214: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attrs</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">empty?</span>
1171
+ 215: <span class="ruby-keyword kw">end</span>
1172
+ 216: <span class="ruby-keyword kw">end</span>
1173
+ 217: {}
1174
+ 218: <span class="ruby-keyword kw">end</span></pre>
1145
1175
  </div>
1146
1176
 
1147
1177
  </div>