taskjuggler 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. data/CHANGELOG +119 -0
  2. data/benchmarks/allocatedSlots.tjp +1602 -0
  3. data/benchmarks/booking.tjp +40 -30
  4. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/css/tjmanual.css +0 -0
  5. data/{test/TestSuite/Scheduler/Correct → benchmarks}/css/tjreport.css +1 -0
  6. data/benchmarks/gantt.tjp +57 -0
  7. data/benchmarks/htmltaskreport.tjp +26 -1
  8. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/details.png +0 -0
  9. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-green.png +0 -0
  10. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-red.png +0 -0
  11. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-yellow.png +0 -0
  12. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resource.png +0 -0
  13. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resourcegroup.png +0 -0
  14. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/task.png +0 -0
  15. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/taskgroup.png +0 -0
  16. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-down.png +0 -0
  17. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-flat.png +0 -0
  18. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-up.png +0 -0
  19. data/benchmarks/profile.clt +36082 -0
  20. data/benchmarks/profile.html +58182 -0
  21. data/benchmarks/runbench.rb +6 -0
  22. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/scripts/wz_tooltip.js +0 -0
  23. data/doc/AppConfig.html +85 -37
  24. data/doc/Arguments.html +11 -1
  25. data/doc/CHANGELOG.html +131 -2
  26. data/doc/COPYING.html +11 -1
  27. data/doc/Object.html +12 -3
  28. data/doc/README.html +11 -1
  29. data/doc/RuntimeConfig.html +11 -1
  30. data/doc/String.html +11 -1
  31. data/doc/StringIO.html +11 -1
  32. data/doc/TaskJuggler.html +250 -219
  33. data/doc/TaskJuggler/Account.html +11 -1
  34. data/doc/TaskJuggler/AccountAttribute.html +11 -1
  35. data/doc/TaskJuggler/AccountScenario.html +11 -1
  36. data/doc/TaskJuggler/Allocation.html +11 -1
  37. data/doc/TaskJuggler/AllocationAttribute.html +11 -1
  38. data/doc/TaskJuggler/AttributeBase.html +11 -1
  39. data/doc/TaskJuggler/AttributeDefinition.html +11 -1
  40. data/doc/TaskJuggler/BatchProcessor.html +11 -1
  41. data/doc/TaskJuggler/Booking.html +11 -1
  42. data/doc/TaskJuggler/BookingListAttribute.html +11 -1
  43. data/doc/TaskJuggler/BooleanAttribute.html +11 -1
  44. data/doc/TaskJuggler/CSVFile.html +12 -2
  45. data/doc/TaskJuggler/CellSettingPattern.html +11 -1
  46. data/doc/TaskJuggler/CellSettingPatternList.html +11 -1
  47. data/doc/TaskJuggler/Charge.html +11 -1
  48. data/doc/TaskJuggler/ChargeListAttribute.html +11 -1
  49. data/doc/TaskJuggler/ChargeSet.html +11 -1
  50. data/doc/TaskJuggler/ChargeSetListAttribute.html +11 -1
  51. data/doc/TaskJuggler/CollisionDetector.html +1063 -0
  52. data/doc/TaskJuggler/ColumnListAttribute.html +11 -1
  53. data/doc/TaskJuggler/ColumnTable.html +11 -1
  54. data/doc/TaskJuggler/Daemon.html +11 -1
  55. data/doc/TaskJuggler/{OnShiftCache.html → DataCache.html} +127 -139
  56. data/doc/TaskJuggler/DataCacheEntry.html +711 -0
  57. data/doc/TaskJuggler/DateAttribute.html +11 -1
  58. data/doc/TaskJuggler/DefinitionListAttribute.html +11 -1
  59. data/doc/TaskJuggler/DependencyListAttribute.html +11 -1
  60. data/doc/TaskJuggler/DurationAttribute.html +16 -5
  61. data/doc/TaskJuggler/FileList.html +11 -1
  62. data/doc/TaskJuggler/FileRecord.html +11 -1
  63. data/doc/TaskJuggler/FixnumAttribute.html +19 -9
  64. data/doc/TaskJuggler/FlagListAttribute.html +29 -19
  65. data/doc/TaskJuggler/FloatAttribute.html +23 -13
  66. data/doc/TaskJuggler/FormatListAttribute.html +19 -9
  67. data/doc/TaskJuggler/GanttChart.html +94 -133
  68. data/doc/TaskJuggler/GanttContainer.html +11 -1
  69. data/doc/TaskJuggler/GanttHeader.html +11 -1
  70. data/doc/TaskJuggler/GanttHeaderScaleItem.html +11 -1
  71. data/doc/TaskJuggler/GanttLine.html +11 -1
  72. data/doc/TaskJuggler/GanttLoadStack.html +11 -1
  73. data/doc/TaskJuggler/GanttMilestone.html +11 -1
  74. data/doc/TaskJuggler/GanttRouter.html +247 -596
  75. data/doc/TaskJuggler/GanttTaskBar.html +11 -1
  76. data/doc/TaskJuggler/HTMLDocument.html +11 -1
  77. data/doc/TaskJuggler/HTMLGraphics.html +11 -1
  78. data/doc/TaskJuggler/Interval.html +11 -1
  79. data/doc/TaskJuggler/IntervalListAttribute.html +33 -23
  80. data/doc/TaskJuggler/JobInfo.html +11 -1
  81. data/doc/TaskJuggler/Journal.html +11 -1
  82. data/doc/TaskJuggler/JournalEntry.html +11 -1
  83. data/doc/TaskJuggler/JournalEntryList.html +11 -1
  84. data/doc/TaskJuggler/KeywordArray.html +11 -1
  85. data/doc/TaskJuggler/KeywordDocumentation.html +16 -6
  86. data/doc/TaskJuggler/Limits.html +11 -1
  87. data/doc/TaskJuggler/Limits/Limit.html +11 -1
  88. data/doc/TaskJuggler/LimitsAttribute.html +24 -14
  89. data/doc/TaskJuggler/ListAttributeBase.html +11 -1
  90. data/doc/TaskJuggler/Log.html +11 -1
  91. data/doc/TaskJuggler/LogFile.html +11 -1
  92. data/doc/TaskJuggler/LogicalAttribute.html +11 -1
  93. data/doc/TaskJuggler/LogicalExpression.html +11 -1
  94. data/doc/TaskJuggler/LogicalExpressionAttribute.html +19 -9
  95. data/doc/TaskJuggler/LogicalFlag.html +11 -1
  96. data/doc/TaskJuggler/LogicalFunction.html +11 -1
  97. data/doc/TaskJuggler/LogicalOperation.html +11 -1
  98. data/doc/TaskJuggler/Macro.html +11 -1
  99. data/doc/TaskJuggler/MacroTable.html +11 -1
  100. data/doc/TaskJuggler/ManagerResponsibilities.html +11 -1
  101. data/doc/TaskJuggler/ManagerStatusRecord.html +11 -1
  102. data/doc/TaskJuggler/Message.html +11 -1
  103. data/doc/TaskJuggler/MessageHandler.html +11 -1
  104. data/doc/TaskJuggler/Navigator.html +12 -2
  105. data/doc/TaskJuggler/NavigatorElement.html +11 -1
  106. data/doc/TaskJuggler/NikuProject.html +11 -1
  107. data/doc/TaskJuggler/NikuReport.html +11 -1
  108. data/doc/TaskJuggler/NikuResource.html +11 -1
  109. data/doc/TaskJuggler/NodeListAttribute.html +17 -7
  110. data/doc/TaskJuggler/PlaceHolderCell.html +722 -0
  111. data/doc/TaskJuggler/ProcessIntercom.html +11 -1
  112. data/doc/TaskJuggler/ProcessIntercomIface.html +11 -1
  113. data/doc/TaskJuggler/Project.html +587 -500
  114. data/doc/TaskJuggler/ProjectBroker.html +11 -1
  115. data/doc/TaskJuggler/ProjectBrokerIface.html +11 -1
  116. data/doc/TaskJuggler/ProjectFileParser.html +205 -192
  117. data/doc/TaskJuggler/ProjectFileScanner.html +230 -207
  118. data/doc/TaskJuggler/ProjectRecord.html +11 -1
  119. data/doc/TaskJuggler/ProjectServer.html +11 -1
  120. data/doc/TaskJuggler/ProjectServerIface.html +11 -1
  121. data/doc/TaskJuggler/PropertyAttribute.html +19 -9
  122. data/doc/TaskJuggler/PropertyList.html +95 -83
  123. data/doc/TaskJuggler/PropertySet.html +11 -1
  124. data/doc/TaskJuggler/PropertyTreeNode.html +11 -1
  125. data/doc/TaskJuggler/Query.html +234 -232
  126. data/doc/TaskJuggler/RTFHandlers.html +11 -1
  127. data/doc/TaskJuggler/RTFNavigator.html +11 -1
  128. data/doc/TaskJuggler/RTFQuery.html +11 -1
  129. data/doc/TaskJuggler/RTFReport.html +11 -1
  130. data/doc/TaskJuggler/RTFReportLink.html +11 -1
  131. data/doc/TaskJuggler/RTFWithQuerySupport.html +11 -1
  132. data/doc/TaskJuggler/RealFormat.html +12 -2
  133. data/doc/TaskJuggler/RealFormatAttribute.html +15 -5
  134. data/doc/TaskJuggler/ReferenceAttribute.html +38 -28
  135. data/doc/TaskJuggler/Report.html +96 -113
  136. data/doc/TaskJuggler/ReportBase.html +161 -152
  137. data/doc/TaskJuggler/ReportContext.html +11 -1
  138. data/doc/TaskJuggler/ReportServer.html +59 -48
  139. data/doc/TaskJuggler/ReportServerIface.html +51 -41
  140. data/doc/TaskJuggler/ReportServerRecord.html +11 -1
  141. data/doc/TaskJuggler/ReportServlet.html +11 -1
  142. data/doc/TaskJuggler/ReportTable.html +46 -25
  143. data/doc/TaskJuggler/ReportTableCell.html +296 -275
  144. data/doc/TaskJuggler/ReportTableColumn.html +14 -4
  145. data/doc/TaskJuggler/ReportTableLegend.html +11 -1
  146. data/doc/TaskJuggler/ReportTableLine.html +19 -7
  147. data/doc/TaskJuggler/Resource.html +12 -2
  148. data/doc/TaskJuggler/ResourceListAttribute.html +40 -30
  149. data/doc/TaskJuggler/ResourceListRE.html +11 -1
  150. data/doc/TaskJuggler/ResourceScenario.html +708 -565
  151. data/doc/TaskJuggler/RichText.html +54 -36
  152. data/doc/TaskJuggler/RichTextAttribute.html +31 -21
  153. data/doc/TaskJuggler/RichTextDocument.html +11 -1
  154. data/doc/TaskJuggler/RichTextElement.html +11 -1
  155. data/doc/TaskJuggler/RichTextFunctionExample.html +11 -1
  156. data/doc/TaskJuggler/RichTextFunctionHandler.html +11 -1
  157. data/doc/TaskJuggler/RichTextImage.html +11 -1
  158. data/doc/TaskJuggler/RichTextIntermediate.html +81 -71
  159. data/doc/TaskJuggler/RichTextParser.html +88 -33
  160. data/doc/TaskJuggler/RichTextScanner.html +45 -35
  161. data/doc/TaskJuggler/RichTextSnip.html +11 -1
  162. data/doc/TaskJuggler/RichTextSyntaxRules.html +436 -389
  163. data/doc/TaskJuggler/Scenario.html +11 -1
  164. data/doc/TaskJuggler/ScenarioData.html +11 -1
  165. data/doc/TaskJuggler/ScenarioListAttribute.html +23 -13
  166. data/doc/TaskJuggler/Scoreboard.html +92 -73
  167. data/doc/TaskJuggler/SheetHandlerBase.html +11 -1
  168. data/doc/TaskJuggler/SheetReceiver.html +11 -1
  169. data/doc/TaskJuggler/SheetSender.html +11 -1
  170. data/doc/TaskJuggler/Shift.html +11 -1
  171. data/doc/TaskJuggler/ShiftAssignment.html +11 -1
  172. data/doc/TaskJuggler/ShiftAssignments.html +11 -1
  173. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +24 -14
  174. data/doc/TaskJuggler/ShiftScenario.html +11 -1
  175. data/doc/TaskJuggler/SimpleQueryExpander.html +11 -1
  176. data/doc/TaskJuggler/SortListAttribute.html +21 -11
  177. data/doc/TaskJuggler/SourceFileInfo.html +11 -1
  178. data/doc/TaskJuggler/StatusSheetReceiver.html +11 -1
  179. data/doc/TaskJuggler/StatusSheetReport.html +11 -1
  180. data/doc/TaskJuggler/StatusSheetSender.html +112 -11
  181. data/doc/TaskJuggler/StringAttribute.html +23 -13
  182. data/doc/TaskJuggler/SymbolAttribute.html +19 -9
  183. data/doc/TaskJuggler/SyntaxReference.html +80 -71
  184. data/doc/TaskJuggler/TOCEntry.html +11 -1
  185. data/doc/TaskJuggler/TSResourceRecord.html +11 -1
  186. data/doc/TaskJuggler/TSTaskRecord.html +11 -1
  187. data/doc/TaskJuggler/TableColumnDefinition.html +11 -1
  188. data/doc/TaskJuggler/TableOfContents.html +11 -1
  189. data/doc/TaskJuggler/TableReport.html +422 -411
  190. data/doc/TaskJuggler/Task.html +11 -1
  191. data/doc/TaskJuggler/TaskDependency.html +11 -1
  192. data/doc/TaskJuggler/TaskListAttribute.html +33 -23
  193. data/doc/TaskJuggler/TaskListRE.html +11 -1
  194. data/doc/TaskJuggler/TaskScenario.html +2007 -1919
  195. data/doc/TaskJuggler/TextFormatter.html +11 -1
  196. data/doc/TaskJuggler/TextParser.html +421 -612
  197. data/doc/TaskJuggler/TextParser/Pattern.html +410 -211
  198. data/doc/TaskJuggler/TextParser/Rule.html +224 -152
  199. data/doc/TaskJuggler/TextParser/StackElement.html +190 -28
  200. data/doc/TaskJuggler/TextParser/State.html +989 -0
  201. data/doc/TaskJuggler/TextParser/StateTransition.html +782 -0
  202. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +25 -14
  203. data/doc/TaskJuggler/TextParser/TokenDoc.html +11 -1
  204. data/doc/TaskJuggler/TextReport.html +11 -1
  205. data/doc/TaskJuggler/TextScanner.html +285 -273
  206. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +17 -7
  207. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +24 -14
  208. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +11 -1
  209. data/doc/TaskJuggler/TextScanner/StreamHandle.html +64 -52
  210. data/doc/TaskJuggler/TimeSheet.html +11 -1
  211. data/doc/TaskJuggler/TimeSheetReceiver.html +11 -1
  212. data/doc/TaskJuggler/TimeSheetRecord.html +11 -1
  213. data/doc/TaskJuggler/TimeSheetReport.html +11 -1
  214. data/doc/TaskJuggler/TimeSheetSender.html +11 -1
  215. data/doc/TaskJuggler/TimeSheetSummary.html +11 -1
  216. data/doc/TaskJuggler/TimeSheets.html +11 -1
  217. data/doc/TaskJuggler/Tj3AppBase.html +11 -1
  218. data/doc/TaskJuggler/Tj3Client.html +11 -1
  219. data/doc/TaskJuggler/Tj3Daemon.html +11 -1
  220. data/doc/TaskJuggler/Tj3SheetAppBase.html +11 -1
  221. data/doc/TaskJuggler/Tj3SsReceiver.html +11 -1
  222. data/doc/TaskJuggler/Tj3SsSender.html +11 -1
  223. data/doc/TaskJuggler/Tj3TsReceiver.html +11 -1
  224. data/doc/TaskJuggler/Tj3TsSender.html +11 -1
  225. data/doc/TaskJuggler/Tj3TsSummary.html +11 -1
  226. data/doc/TaskJuggler/TjException.html +11 -1
  227. data/doc/TaskJuggler/TjTime.html +474 -324
  228. data/doc/TaskJuggler/TjpExample.html +11 -1
  229. data/doc/TaskJuggler/TjpExportRE.html +11 -1
  230. data/doc/TaskJuggler/TjpSyntaxRules.html +3731 -3662
  231. data/doc/TaskJuggler/URLParameter.html +11 -1
  232. data/doc/TaskJuggler/UserManual.html +11 -1
  233. data/doc/TaskJuggler/VimSyntax.html +11 -1
  234. data/doc/TaskJuggler/WebServer.html +11 -1
  235. data/doc/TaskJuggler/WorkingHours.html +295 -221
  236. data/doc/TaskJuggler/WorkingHoursAttribute.html +11 -1
  237. data/doc/TaskJuggler/XMLBlob.html +11 -1
  238. data/doc/TaskJuggler/XMLComment.html +11 -1
  239. data/doc/TaskJuggler/XMLDocument.html +11 -1
  240. data/doc/TaskJuggler/XMLElement.html +11 -1
  241. data/doc/TaskJuggler/XMLNamedText.html +11 -1
  242. data/doc/TaskJuggler/XMLText.html +11 -1
  243. data/doc/index.html +694 -624
  244. data/doc/lib/AppConfig_rb.html +1 -1
  245. data/doc/lib/Attributes_rb.html +1 -1
  246. data/doc/lib/Booking_rb.html +1 -1
  247. data/doc/lib/DataCache_rb.html +69 -0
  248. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  249. data/doc/lib/ProjectFileParser_rb.html +1 -1
  250. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  251. data/doc/lib/Project_rb.html +1 -1
  252. data/doc/lib/PropertyList_rb.html +1 -1
  253. data/doc/lib/Query_rb.html +1 -1
  254. data/doc/lib/RealFormat_rb.html +1 -1
  255. data/doc/lib/ResourceScenario_rb.html +1 -1
  256. data/doc/lib/Resource_rb.html +1 -1
  257. data/doc/lib/RichTextParser_rb.html +1 -1
  258. data/doc/lib/RichTextScanner_rb.html +1 -1
  259. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  260. data/doc/lib/RichText_rb.html +1 -1
  261. data/doc/lib/Scoreboard_rb.html +1 -1
  262. data/doc/lib/StatusSheetSender_rb.html +1 -1
  263. data/doc/lib/SyntaxReference_rb.html +1 -1
  264. data/doc/lib/TaskJuggler_rb.html +1 -1
  265. data/doc/lib/TaskScenario_rb.html +3 -1
  266. data/doc/lib/TextParser/Pattern_rb.html +3 -1
  267. data/doc/lib/TextParser/Rule_rb.html +3 -1
  268. data/doc/lib/TextParser/StackElement_rb.html +3 -1
  269. data/doc/lib/TextParser/State_rb.html +65 -0
  270. data/doc/lib/TextParser_rb.html +1 -1
  271. data/doc/lib/TextScanner_rb.html +1 -1
  272. data/doc/lib/Tj3Config_rb.html +1 -1
  273. data/doc/lib/TjTime_rb.html +1 -1
  274. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  275. data/doc/lib/WorkingHours_rb.html +3 -1
  276. data/doc/lib/daemon/ReportServer_rb.html +1 -1
  277. data/doc/lib/reports/CSVFile_rb.html +1 -1
  278. data/doc/lib/reports/CollisionDetector_rb.html +67 -0
  279. data/doc/lib/reports/GanttChart_rb.html +1 -1
  280. data/doc/lib/reports/GanttRouter_rb.html +3 -1
  281. data/doc/lib/reports/Navigator_rb.html +1 -1
  282. data/doc/lib/reports/ReportBase_rb.html +1 -1
  283. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  284. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  285. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  286. data/doc/lib/reports/ReportTable_rb.html +1 -1
  287. data/doc/lib/reports/Report_rb.html +1 -1
  288. data/doc/lib/reports/TableReport_rb.html +1 -1
  289. data/doc/lib/taskjuggler3_rb.html +1 -1
  290. data/examples/tutorial.tjp +1 -2
  291. data/lib/AppConfig.rb +10 -4
  292. data/lib/Attributes.rb +4 -4
  293. data/lib/DataCache.rb +124 -0
  294. data/lib/KeywordDocumentation.rb +5 -5
  295. data/lib/Project.rb +54 -10
  296. data/lib/ProjectFileParser.rb +10 -9
  297. data/lib/ProjectFileScanner.rb +38 -25
  298. data/lib/PropertyList.rb +6 -4
  299. data/lib/Query.rb +0 -8
  300. data/lib/RealFormat.rb +1 -1
  301. data/lib/Resource.rb +1 -1
  302. data/lib/ResourceScenario.rb +96 -31
  303. data/lib/RichText.rb +17 -5
  304. data/lib/RichTextParser.rb +22 -9
  305. data/lib/RichTextScanner.rb +34 -34
  306. data/lib/RichTextSyntaxRules.rb +41 -36
  307. data/lib/Scoreboard.rb +16 -7
  308. data/lib/StatusSheetSender.rb +63 -0
  309. data/lib/SyntaxReference.rb +9 -10
  310. data/lib/TaskJuggler.rb +28 -4
  311. data/lib/TaskScenario.rb +66 -19
  312. data/lib/TextParser.rb +219 -384
  313. data/lib/TextParser/Pattern.rb +168 -49
  314. data/lib/TextParser/Rule.rb +33 -17
  315. data/lib/TextParser/StackElement.rb +42 -2
  316. data/lib/TextParser/State.rb +175 -0
  317. data/lib/TextScanner.rb +19 -15
  318. data/lib/Tj3Config.rb +1 -1
  319. data/lib/TjTime.rb +111 -3
  320. data/lib/TjpSyntaxRules.rb +122 -66
  321. data/lib/WorkingHours.rb +91 -186
  322. data/lib/daemon/ReportServer.rb +3 -2
  323. data/lib/reports/CSVFile.rb +1 -1
  324. data/lib/reports/CollisionDetector.rb +177 -0
  325. data/lib/reports/GanttChart.rb +25 -41
  326. data/lib/reports/GanttRouter.rb +104 -233
  327. data/lib/reports/Navigator.rb +1 -1
  328. data/lib/reports/Report.rb +9 -33
  329. data/lib/reports/ReportBase.rb +0 -1
  330. data/lib/reports/ReportTable.rb +19 -8
  331. data/lib/reports/ReportTableCell.rb +61 -25
  332. data/lib/reports/ReportTableColumn.rb +2 -2
  333. data/lib/reports/ReportTableLine.rb +4 -2
  334. data/lib/reports/TableReport.rb +1 -0
  335. data/lib/taskjuggler3.rb +0 -1
  336. data/manual/Installation +7 -3
  337. data/manual/Intro +12 -10
  338. data/manual/The_TaskJuggler_Syntax +4 -4
  339. data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -14
  340. data/test/TestSuite/CSV-Reports/genrefs +1 -1
  341. data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -4
  342. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -22
  343. data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -14
  344. data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -14
  345. data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -14
  346. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -14
  347. data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -14
  348. data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +32 -24
  349. data/test/TestSuite/CSV-Reports/weekly-Reference.csv +13 -0
  350. data/test/TestSuite/CSV-Reports/weekly.tjp +9 -0
  351. data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -2
  352. data/test/TestSuite/HTML-Reports/depArrows.html +839 -830
  353. data/test/TestSuite/HTML-Reports/depArrows.tjp +12 -12
  354. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  355. data/test/TestSuite/ReportGenerator/Errors/no_report_defined.tjp +7 -0
  356. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +1 -1
  357. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/missing-reports +2 -0
  358. data/test/TestSuite/StatusSheets/run +2 -0
  359. data/test/TestSuite/Syntax/Correct/Booking.tjp +13 -5
  360. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +21 -0
  361. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +21 -0
  362. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +1 -1
  363. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  364. data/test/TestSuite/Syntax/Errors/include_before_project.tjp +2 -0
  365. data/test/TestSuite/Syntax/Errors/no_reduce.tjp +6 -0
  366. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  367. data/test/TestSuite/TimeSheets/run +1 -1
  368. data/test/test_CSV-Reports.rb +2 -4
  369. data/test/test_CollisionDetector.rb +85 -0
  370. data/test/test_Project.rb +2 -2
  371. data/test/test_ProjectFileScanner.rb +73 -31
  372. data/test/test_Query.rb +2 -2
  373. data/test/test_ReportGenerator.rb +1 -1
  374. data/test/test_RichText.rb +4 -4
  375. data/test/test_WorkingHours.rb +150 -11
  376. metadata +75 -67
  377. data/test/TestSuite/ReportGenerator/Errors/css/tjreport.css +0 -407
  378. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +0 -26
  379. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -3210
  380. data/test/TestSuite/Scheduler/Correct/Container.html +0 -349
  381. data/test/TestSuite/Scheduler/Correct/Limits.html +0 -4964
  382. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -1719
  383. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  384. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -66
  385. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  386. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  387. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  388. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  389. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  390. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  391. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  392. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  393. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  394. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  395. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  396. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  397. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +0 -66
  398. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +0 -407
  399. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  400. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  401. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  402. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  403. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  404. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  405. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  406. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  407. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  408. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  409. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  410. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +0 -1301
  411. data/test/TestSuite/StatusSheets/resrep.tji +0 -7
  412. data/test/TestSuite/StatusSheets/tj3d.log +0 -312
  413. data/test/TestSuite/Syntax/Correct/Managers.html +0 -263
  414. data/test/TestSuite/TimeSheets/acceptable_intervals +0 -1
  415. data/test/TestSuite/TimeSheets/statussheets.log +0 -1
@@ -151,12 +151,18 @@
151
151
 
152
152
  <li><a href="../../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
153
153
 
154
+ <li><a href="../../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
155
+
154
156
  <li><a href="../../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
155
157
 
156
158
  <li><a href="../../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
157
159
 
158
160
  <li><a href="../../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
159
161
 
162
+ <li><a href="../../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
163
+
164
+ <li><a href="../../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
165
+
160
166
  <li><a href="../../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
161
167
 
162
168
  <li><a href="../../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -263,7 +269,7 @@
263
269
 
264
270
  <li><a href="../../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
265
271
 
266
- <li><a href="../../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
272
+ <li><a href="../../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
267
273
 
268
274
  <li><a href="../../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
269
275
 
@@ -443,6 +449,10 @@
443
449
 
444
450
  <li><a href="../../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
445
451
 
452
+ <li><a href="../../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
453
+
454
+ <li><a href="../../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
455
+
446
456
  <li><a href="../../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
447
457
 
448
458
  <li><a href="../../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -551,7 +561,8 @@
551
561
  <div id="description">
552
562
  <p>
553
563
  Utility class so that we can distinguish Array results from the Array
554
- containing the results of a repeatable rule.
564
+ containing the results of a repeatable rule. We define some merging method
565
+ with a slightly different behaviour.
555
566
  </p>
556
567
 
557
568
  </div>
@@ -588,10 +599,10 @@ containing the results of a repeatable rule.
588
599
  <div class="method-source-code"
589
600
  id="new-source">
590
601
  <pre>
591
- <span class="ruby-comment cmt"># File lib/TextParser.rb, line 50</span>
592
- 50: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
593
- 51: <span class="ruby-keyword kw">super</span>
594
- 52: <span class="ruby-keyword kw">end</span></pre>
602
+ <span class="ruby-comment cmt"># File lib/TextParser.rb, line 57</span>
603
+ 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>
604
+ 58: <span class="ruby-keyword kw">super</span>
605
+ 59: <span class="ruby-keyword kw">end</span></pre>
595
606
  </div>
596
607
 
597
608
  </div>
@@ -633,14 +644,14 @@ Array.
633
644
  <div class="method-source-code"
634
645
  id="--source">
635
646
  <pre>
636
- <span class="ruby-comment cmt"># File lib/TextParser.rb, line 58</span>
637
- 58: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;&lt;</span>(<span class="ruby-identifier">arg</span>)
638
- 59: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TextParserResultArray</span>)
639
- 60: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">arg</span>)
640
- 61: <span class="ruby-keyword kw">else</span>
641
- 62: <span class="ruby-keyword kw">super</span>
642
- 63: <span class="ruby-keyword kw">end</span>
643
- 64: <span class="ruby-keyword kw">end</span></pre>
647
+ <span class="ruby-comment cmt"># File lib/TextParser.rb, line 65</span>
648
+ 65: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">&lt;&lt;</span>(<span class="ruby-identifier">arg</span>)
649
+ 66: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">arg</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">TextParserResultArray</span>)
650
+ 67: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">concat</span>(<span class="ruby-identifier">arg</span>)
651
+ 68: <span class="ruby-keyword kw">else</span>
652
+ 69: <span class="ruby-keyword kw">super</span>
653
+ 70: <span class="ruby-keyword kw">end</span>
654
+ 71: <span class="ruby-keyword kw">end</span></pre>
644
655
  </div>
645
656
 
646
657
  </div>
@@ -149,12 +149,18 @@
149
149
 
150
150
  <li><a href="../../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
151
151
 
152
+ <li><a href="../../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
153
+
152
154
  <li><a href="../../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
153
155
 
154
156
  <li><a href="../../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
155
157
 
156
158
  <li><a href="../../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
157
159
 
160
+ <li><a href="../../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
161
+
162
+ <li><a href="../../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
163
+
158
164
  <li><a href="../../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
159
165
 
160
166
  <li><a href="../../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -261,7 +267,7 @@
261
267
 
262
268
  <li><a href="../../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
263
269
 
264
- <li><a href="../../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
270
+ <li><a href="../../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
265
271
 
266
272
  <li><a href="../../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
267
273
 
@@ -441,6 +447,10 @@
441
447
 
442
448
  <li><a href="../../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
443
449
 
450
+ <li><a href="../../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
451
+
452
+ <li><a href="../../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
453
+
444
454
  <li><a href="../../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
445
455
 
446
456
  <li><a href="../../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -155,12 +155,18 @@
155
155
 
156
156
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
157
157
 
158
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
159
+
158
160
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
159
161
 
160
162
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
161
163
 
162
164
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
163
165
 
166
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
167
+
168
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
169
+
164
170
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
165
171
 
166
172
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -267,7 +273,7 @@
267
273
 
268
274
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
269
275
 
270
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
276
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
271
277
 
272
278
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
273
279
 
@@ -447,6 +453,10 @@
447
453
 
448
454
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
449
455
 
456
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
457
+
458
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
459
+
450
460
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
451
461
 
452
462
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -194,12 +194,18 @@
194
194
 
195
195
  <li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
196
196
 
197
+ <li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
198
+
197
199
  <li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
198
200
 
199
201
  <li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
200
202
 
201
203
  <li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
202
204
 
205
+ <li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
206
+
207
+ <li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
208
+
203
209
  <li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
204
210
 
205
211
  <li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -306,7 +312,7 @@
306
312
 
307
313
  <li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
308
314
 
309
- <li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
315
+ <li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
310
316
 
311
317
  <li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
312
318
 
@@ -486,6 +492,10 @@
486
492
 
487
493
  <li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
488
494
 
495
+ <li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
496
+
497
+ <li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
498
+
489
499
  <li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
490
500
 
491
501
  <li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -643,46 +653,46 @@ messages.
643
653
  <div class="method-source-code"
644
654
  id="new-source">
645
655
  <pre>
646
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 186</span>
647
- 186: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">masterFile</span>, <span class="ruby-identifier">messageHandler</span>, <span class="ruby-identifier">tokenPatterns</span>, <span class="ruby-identifier">defaultMode</span>)
648
- 187: <span class="ruby-ivar">@masterFile</span> = <span class="ruby-identifier">masterFile</span>
649
- 188: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
650
- 189: <span class="ruby-comment cmt"># This table contains all macros that may be expanded when found in the</span>
651
- 190: <span class="ruby-comment cmt"># text.</span>
652
- 191: <span class="ruby-ivar">@macroTable</span> = <span class="ruby-constant">MacroTable</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">messageHandler</span>)
653
- 192: <span class="ruby-comment cmt"># The currently processed IO object.</span>
654
- 193: <span class="ruby-ivar">@cf</span> = <span class="ruby-keyword kw">nil</span>
655
- 194: <span class="ruby-comment cmt"># This Array stores the currently processed nested files. It's an Array</span>
656
- 195: <span class="ruby-comment cmt"># of Arrays. The nested Array consists of 2 elements, the IO object and</span>
657
- 196: <span class="ruby-comment cmt"># the @tokenBuffer.</span>
658
- 197: <span class="ruby-ivar">@fileStack</span> = []
659
- 198: <span class="ruby-comment cmt"># This flag is set if we have reached the end of a file. Since we will</span>
660
- 199: <span class="ruby-comment cmt"># only know when the next new token is requested that the file is really</span>
661
- 200: <span class="ruby-comment cmt"># done now, we have to use this flag.</span>
662
- 201: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
663
- 202: <span class="ruby-comment cmt"># True if the scanner operates on a buffer.</span>
664
- 203: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>
665
- 204: <span class="ruby-comment cmt"># A SourceFileInfo of the start of the currently processed token.</span>
666
- 205: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-keyword kw">nil</span>
667
- 206: <span class="ruby-comment cmt"># Line number correction for error messages.</span>
668
- 207: <span class="ruby-ivar">@lineDelta</span> = <span class="ruby-value">0</span>
669
- 208: <span class="ruby-comment cmt"># Lists of regexps that describe the detectable tokens. The Arrays are</span>
670
- 209: <span class="ruby-comment cmt"># grouped by mode.</span>
671
- 210: <span class="ruby-ivar">@patternsByMode</span> = { }
672
- 211: <span class="ruby-comment cmt"># The currently active scanner mode.</span>
673
- 212: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-keyword kw">nil</span>
674
- 213: <span class="ruby-comment cmt"># Points to the currently active pattern set as defined by the mode.</span>
675
- 214: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-keyword kw">nil</span>
676
- 215:
677
- 216: <span class="ruby-identifier">tokenPatterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span>
678
- 217: <span class="ruby-identifier">type</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">0</span>]
679
- 218: <span class="ruby-identifier">regExp</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">1</span>]
680
- 219: <span class="ruby-identifier">mode</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:tjp</span>
681
- 220: <span class="ruby-identifier">postProc</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">3</span>]
682
- 221: <span class="ruby-identifier">addPattern</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">postProc</span>)
683
- 222: <span class="ruby-keyword kw">end</span>
684
- 223: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">defaultMode</span>
685
- 224: <span class="ruby-keyword kw">end</span></pre>
656
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 188</span>
657
+ 188: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">masterFile</span>, <span class="ruby-identifier">messageHandler</span>, <span class="ruby-identifier">tokenPatterns</span>, <span class="ruby-identifier">defaultMode</span>)
658
+ 189: <span class="ruby-ivar">@masterFile</span> = <span class="ruby-identifier">masterFile</span>
659
+ 190: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
660
+ 191: <span class="ruby-comment cmt"># This table contains all macros that may be expanded when found in the</span>
661
+ 192: <span class="ruby-comment cmt"># text.</span>
662
+ 193: <span class="ruby-ivar">@macroTable</span> = <span class="ruby-constant">MacroTable</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">messageHandler</span>)
663
+ 194: <span class="ruby-comment cmt"># The currently processed IO object.</span>
664
+ 195: <span class="ruby-ivar">@cf</span> = <span class="ruby-keyword kw">nil</span>
665
+ 196: <span class="ruby-comment cmt"># This Array stores the currently processed nested files. It's an Array</span>
666
+ 197: <span class="ruby-comment cmt"># of Arrays. The nested Array consists of 2 elements, the IO object and</span>
667
+ 198: <span class="ruby-comment cmt"># the @tokenBuffer.</span>
668
+ 199: <span class="ruby-ivar">@fileStack</span> = []
669
+ 200: <span class="ruby-comment cmt"># This flag is set if we have reached the end of a file. Since we will</span>
670
+ 201: <span class="ruby-comment cmt"># only know when the next new token is requested that the file is really</span>
671
+ 202: <span class="ruby-comment cmt"># done now, we have to use this flag.</span>
672
+ 203: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
673
+ 204: <span class="ruby-comment cmt"># True if the scanner operates on a buffer.</span>
674
+ 205: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>
675
+ 206: <span class="ruby-comment cmt"># A SourceFileInfo of the start of the currently processed token.</span>
676
+ 207: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-keyword kw">nil</span>
677
+ 208: <span class="ruby-comment cmt"># Line number correction for error messages.</span>
678
+ 209: <span class="ruby-ivar">@lineDelta</span> = <span class="ruby-value">0</span>
679
+ 210: <span class="ruby-comment cmt"># Lists of regexps that describe the detectable tokens. The Arrays are</span>
680
+ 211: <span class="ruby-comment cmt"># grouped by mode.</span>
681
+ 212: <span class="ruby-ivar">@patternsByMode</span> = { }
682
+ 213: <span class="ruby-comment cmt"># The currently active scanner mode.</span>
683
+ 214: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-keyword kw">nil</span>
684
+ 215: <span class="ruby-comment cmt"># Points to the currently active pattern set as defined by the mode.</span>
685
+ 216: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-keyword kw">nil</span>
686
+ 217:
687
+ 218: <span class="ruby-identifier">tokenPatterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span>
688
+ 219: <span class="ruby-identifier">type</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">0</span>]
689
+ 220: <span class="ruby-identifier">regExp</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">1</span>]
690
+ 221: <span class="ruby-identifier">mode</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">2</span>] <span class="ruby-operator">||</span> <span class="ruby-value">:tjp</span>
691
+ 222: <span class="ruby-identifier">postProc</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">3</span>]
692
+ 223: <span class="ruby-identifier">addPattern</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">postProc</span>)
693
+ 224: <span class="ruby-keyword kw">end</span>
694
+ 225: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">defaultMode</span>
695
+ 226: <span class="ruby-keyword kw">end</span></pre>
686
696
  </div>
687
697
 
688
698
  </div>
@@ -721,10 +731,10 @@ Add a <a href="Macro.html">Macro</a> to the macro translation table.
721
731
  <div class="method-source-code"
722
732
  id="add-acro-source">
723
733
  <pre>
724
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 436</span>
725
- 436: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addMacro</span>(<span class="ruby-identifier">macro</span>)
726
- 437: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">macro</span>)
727
- 438: <span class="ruby-keyword kw">end</span></pre>
734
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 440</span>
735
+ 440: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addMacro</span>(<span class="ruby-identifier">macro</span>)
736
+ 441: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">macro</span>)
737
+ 442: <span class="ruby-keyword kw">end</span></pre>
728
738
  </div>
729
739
 
730
740
  </div>
@@ -765,20 +775,20 @@ href="../String.html">String</a> and returns them again in an Array.
765
775
  <div class="method-source-code"
766
776
  id="add-attern-source">
767
777
  <pre>
768
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 234</span>
769
- 234: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addPattern</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">postProc</span> = <span class="ruby-keyword kw">nil</span>)
770
- 235: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
771
- 236: <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span>
772
- 237: <span class="ruby-comment cmt"># The pattern is active in multiple modes</span>
773
- 238: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">m</span>] = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@patternsByMode</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">m</span>)
774
- 239: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">m</span>] <span class="ruby-operator">&lt;&lt;</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">postProc</span> ]
775
- 240: <span class="ruby-keyword kw">end</span>
776
- 241: <span class="ruby-keyword kw">else</span>
777
- 242: <span class="ruby-comment cmt"># The pattern is only active in one specific mode.</span>
778
- 243: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">mode</span>] = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@patternsByMode</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">mode</span>)
779
- 244: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">mode</span>] <span class="ruby-operator">&lt;&lt;</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">postProc</span> ]
780
- 245: <span class="ruby-keyword kw">end</span>
781
- 246: <span class="ruby-keyword kw">end</span></pre>
778
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 236</span>
779
+ 236: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addPattern</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">postProc</span> = <span class="ruby-keyword kw">nil</span>)
780
+ 237: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
781
+ 238: <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span>
782
+ 239: <span class="ruby-comment cmt"># The pattern is active in multiple modes</span>
783
+ 240: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">m</span>] = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@patternsByMode</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">m</span>)
784
+ 241: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">m</span>] <span class="ruby-operator">&lt;&lt;</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">postProc</span> ]
785
+ 242: <span class="ruby-keyword kw">end</span>
786
+ 243: <span class="ruby-keyword kw">else</span>
787
+ 244: <span class="ruby-comment cmt"># The pattern is only active in one specific mode.</span>
788
+ 245: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">mode</span>] = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@patternsByMode</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">mode</span>)
789
+ 246: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">mode</span>] <span class="ruby-operator">&lt;&lt;</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">postProc</span> ]
790
+ 247: <span class="ruby-keyword kw">end</span>
791
+ 248: <span class="ruby-keyword kw">end</span></pre>
782
792
  </div>
783
793
 
784
794
  </div>
@@ -811,15 +821,15 @@ Finish processing and reset all data structures.
811
821
  <div class="method-source-code"
812
822
  id="close-source">
813
823
  <pre>
814
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 276</span>
815
- 276: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
816
- 277: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileNameIsBuffer</span>
817
- 278: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Reading file #{@masterFile}&quot;</span>)
818
- 279: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
819
- 280: <span class="ruby-keyword kw">end</span>
820
- 281: <span class="ruby-ivar">@fileStack</span> = []
821
- 282: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
822
- 283: <span class="ruby-keyword kw">end</span></pre>
824
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 278</span>
825
+ 278: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
826
+ 279: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileNameIsBuffer</span>
827
+ 280: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Reading file #{@masterFile}&quot;</span>)
828
+ 281: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
829
+ 282: <span class="ruby-keyword kw">end</span>
830
+ 283: <span class="ruby-ivar">@fileStack</span> = []
831
+ 284: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
832
+ 285: <span class="ruby-keyword kw">end</span></pre>
823
833
  </div>
824
834
 
825
835
  </div>
@@ -852,10 +862,10 @@ Call this function to report any errors related to the parsed input.
852
862
  <div class="method-source-code"
853
863
  id="error-source">
854
864
  <pre>
855
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 465</span>
856
- 465: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">data</span> = <span class="ruby-keyword kw">nil</span>)
857
- 466: <span class="ruby-identifier">message</span>(<span class="ruby-value">:error</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
858
- 467: <span class="ruby-keyword kw">end</span></pre>
865
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 469</span>
866
+ 469: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">data</span> = <span class="ruby-keyword kw">nil</span>)
867
+ 470: <span class="ruby-identifier">message</span>(<span class="ruby-value">:error</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
868
+ 471: <span class="ruby-keyword kw">end</span></pre>
859
869
  </div>
860
870
 
861
871
  </div>
@@ -891,21 +901,21 @@ is the macro name, the rest are the parameters.
891
901
  <div class="method-source-code"
892
902
  id="expand-acro-source">
893
903
  <pre>
894
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 449</span>
895
- 449: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">args</span>)
896
- 450: <span class="ruby-comment cmt"># Get the expanded macro from the @macroTable.</span>
897
- 451: <span class="ruby-identifier">macro</span>, <span class="ruby-identifier">text</span> = <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">resolve</span>(<span class="ruby-identifier">args</span>, <span class="ruby-identifier">sourceFileInfo</span>)
898
- 452: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">macro</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">text</span>
899
- 453: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'undefined_macro'</span>, <span class="ruby-node">&quot;Undefined macro '#{args[0]}' called&quot;</span>)
900
- 454: <span class="ruby-keyword kw">end</span>
901
- 455:
902
- 456: <span class="ruby-comment cmt"># If the expanded macro is empty, we can ignore it.</span>
903
- 457: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
904
- 458:
905
- 459: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">injectMacro</span>(<span class="ruby-identifier">macro</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">prefix</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">text</span>)
906
- 460: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'macro_stack_overflow'</span>, <span class="ruby-value str">&quot;Too many nested macro calls.&quot;</span>)
907
- 461: <span class="ruby-keyword kw">end</span>
908
- 462: <span class="ruby-keyword kw">end</span></pre>
904
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 453</span>
905
+ 453: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">args</span>)
906
+ 454: <span class="ruby-comment cmt"># Get the expanded macro from the @macroTable.</span>
907
+ 455: <span class="ruby-identifier">macro</span>, <span class="ruby-identifier">text</span> = <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">resolve</span>(<span class="ruby-identifier">args</span>, <span class="ruby-identifier">sourceFileInfo</span>)
908
+ 456: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">macro</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">text</span>
909
+ 457: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'undefined_macro'</span>, <span class="ruby-node">&quot;Undefined macro '#{args[0]}' called&quot;</span>)
910
+ 458: <span class="ruby-keyword kw">end</span>
911
+ 459:
912
+ 460: <span class="ruby-comment cmt"># If the expanded macro is empty, we can ignore it.</span>
913
+ 461: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
914
+ 462:
915
+ 463: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">injectMacro</span>(<span class="ruby-identifier">macro</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">prefix</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">text</span>)
916
+ 464: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'macro_stack_overflow'</span>, <span class="ruby-value str">&quot;Too many nested macro calls.&quot;</span>)
917
+ 465: <span class="ruby-keyword kw">end</span>
918
+ 466: <span class="ruby-keyword kw">end</span></pre>
909
919
  </div>
910
920
 
911
921
  </div>
@@ -939,10 +949,10 @@ text buffer, the text will be returned.
939
949
  <div class="method-source-code"
940
950
  id="file-ame-source">
941
951
  <pre>
942
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 332</span>
943
- 332: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fileName</span>
944
- 333: <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">fileName</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@masterFile</span>
945
- 334: <span class="ruby-keyword kw">end</span></pre>
952
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 334</span>
953
+ 334: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fileName</span>
954
+ 335: <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">fileName</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@masterFile</span>
955
+ 336: <span class="ruby-keyword kw">end</span></pre>
946
956
  </div>
947
957
 
948
958
  </div>
@@ -978,41 +988,41 @@ qualified name of the included file.
978
988
  <div class="method-source-code"
979
989
  id="include-source">
980
990
  <pre>
981
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 289</span>
982
- 289: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include</span>(<span class="ruby-identifier">includeFileName</span>, <span class="ruby-identifier">sfi</span>)
983
- 290: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">includeFileName</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'/'</span>
984
- 291: <span class="ruby-identifier">pathOfCallingFile</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">dirname</span>
985
- 292: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">pathOfCallingFile</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">?</span> <span class="ruby-value str">''</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">pathOfCallingFile</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
986
- 293: <span class="ruby-comment cmt"># If the included file is not an absolute name, we interpret the file</span>
987
- 294: <span class="ruby-comment cmt"># name relative to the including file.</span>
988
- 295: <span class="ruby-identifier">includeFileName</span> = <span class="ruby-identifier">path</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">includeFileName</span>
989
- 296: <span class="ruby-keyword kw">end</span>
990
- 297:
991
- 298: <span class="ruby-comment cmt"># Try to dectect recursive inclusions. This will not work if files are</span>
992
- 299: <span class="ruby-comment cmt"># accessed via filesystem links.</span>
993
- 300: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
994
- 301: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">includeFileName</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fileName</span>
995
- 302: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'include_recursion'</span>,
996
- 303: <span class="ruby-node">&quot;Recursive inclusion of #{includeFileName} detected&quot;</span>, <span class="ruby-identifier">sfi</span>)
997
- 304: <span class="ruby-keyword kw">end</span>
998
- 305: <span class="ruby-keyword kw">end</span>
999
- 306:
1000
- 307: <span class="ruby-comment cmt"># Save @tokenBuffer in the record of the parent file.</span>
1001
- 308: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">1</span>] = <span class="ruby-ivar">@tokenBuffer</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
1002
- 309: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1003
- 310: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
1004
- 311:
1005
- 312: <span class="ruby-comment cmt"># Open the new file and push the handle on the @fileStack.</span>
1006
- 313: <span class="ruby-keyword kw">begin</span>
1007
- 314: <span class="ruby-ivar">@fileStack</span> <span class="ruby-operator">&lt;&lt;</span> [ (<span class="ruby-ivar">@cf</span> = <span class="ruby-constant">FileStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">includeFileName</span>)), <span class="ruby-keyword kw">nil</span>, ]
1008
- 315: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Parsing file #{includeFileName}&quot;</span>
1009
- 316: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
1010
- 317: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'bad_include'</span>, <span class="ruby-node">&quot;Cannot open include file #{includeFileName}&quot;</span>, <span class="ruby-identifier">sfi</span>)
1011
- 318: <span class="ruby-keyword kw">end</span>
1012
- 319:
1013
- 320: <span class="ruby-comment cmt"># Return the name of the included file.</span>
1014
- 321: <span class="ruby-identifier">includeFileName</span>
1015
- 322: <span class="ruby-keyword kw">end</span></pre>
991
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 291</span>
992
+ 291: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include</span>(<span class="ruby-identifier">includeFileName</span>, <span class="ruby-identifier">sfi</span>)
993
+ 292: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">includeFileName</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'/'</span>
994
+ 293: <span class="ruby-identifier">pathOfCallingFile</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">dirname</span>
995
+ 294: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">pathOfCallingFile</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">?</span> <span class="ruby-value str">''</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">pathOfCallingFile</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
996
+ 295: <span class="ruby-comment cmt"># If the included file is not an absolute name, we interpret the file</span>
997
+ 296: <span class="ruby-comment cmt"># name relative to the including file.</span>
998
+ 297: <span class="ruby-identifier">includeFileName</span> = <span class="ruby-identifier">path</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">includeFileName</span>
999
+ 298: <span class="ruby-keyword kw">end</span>
1000
+ 299:
1001
+ 300: <span class="ruby-comment cmt"># Try to dectect recursive inclusions. This will not work if files are</span>
1002
+ 301: <span class="ruby-comment cmt"># accessed via filesystem links.</span>
1003
+ 302: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
1004
+ 303: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">includeFileName</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fileName</span>
1005
+ 304: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'include_recursion'</span>,
1006
+ 305: <span class="ruby-node">&quot;Recursive inclusion of #{includeFileName} detected&quot;</span>, <span class="ruby-identifier">sfi</span>)
1007
+ 306: <span class="ruby-keyword kw">end</span>
1008
+ 307: <span class="ruby-keyword kw">end</span>
1009
+ 308:
1010
+ 309: <span class="ruby-comment cmt"># Save @tokenBuffer in the record of the parent file.</span>
1011
+ 310: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">1</span>] = <span class="ruby-ivar">@tokenBuffer</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
1012
+ 311: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1013
+ 312: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
1014
+ 313:
1015
+ 314: <span class="ruby-comment cmt"># Open the new file and push the handle on the @fileStack.</span>
1016
+ 315: <span class="ruby-keyword kw">begin</span>
1017
+ 316: <span class="ruby-ivar">@fileStack</span> <span class="ruby-operator">&lt;&lt;</span> [ (<span class="ruby-ivar">@cf</span> = <span class="ruby-constant">FileStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">includeFileName</span>)), <span class="ruby-keyword kw">nil</span>, ]
1018
+ 317: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Parsing file #{includeFileName}&quot;</span>
1019
+ 318: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
1020
+ 319: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'bad_include'</span>, <span class="ruby-node">&quot;Cannot open include file #{includeFileName}&quot;</span>, <span class="ruby-identifier">sfi</span>)
1021
+ 320: <span class="ruby-keyword kw">end</span>
1022
+ 321:
1023
+ 322: <span class="ruby-comment cmt"># Return the name of the included file.</span>
1024
+ 323: <span class="ruby-identifier">includeFileName</span>
1025
+ 324: <span class="ruby-keyword kw">end</span></pre>
1016
1026
  </div>
1017
1027
 
1018
1028
  </div>
@@ -1046,10 +1056,10 @@ added already.
1046
1056
  <div class="method-source-code"
1047
1057
  id="macro-efined--source">
1048
1058
  <pre>
1049
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 441</span>
1050
- 441: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">macroDefined?</span>(<span class="ruby-identifier">name</span>)
1051
- 442: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
1052
- 443: <span class="ruby-keyword kw">end</span></pre>
1059
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 445</span>
1060
+ 445: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">macroDefined?</span>(<span class="ruby-identifier">name</span>)
1061
+ 446: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
1062
+ 447: <span class="ruby-keyword kw">end</span></pre>
1053
1063
  </div>
1054
1064
 
1055
1065
  </div>
@@ -1074,8 +1084,8 @@ added already.
1074
1084
  <div class="method-description">
1075
1085
 
1076
1086
  <p>
1077
- Switch the parser to another mode. The scanner will then only detect with
1078
- pattens of that <em>newMode</em>.
1087
+ Switch the parser to another mode. The scanner will then only detect
1088
+ patterns of that <em>newMode</em>.
1079
1089
  </p>
1080
1090
 
1081
1091
 
@@ -1083,13 +1093,13 @@ pattens of that <em>newMode</em>.
1083
1093
  <div class="method-source-code"
1084
1094
  id="mode--source">
1085
1095
  <pre>
1086
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 250</span>
1087
- 250: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mode=</span>(<span class="ruby-identifier">newMode</span>)
1088
- 251: <span class="ruby-comment cmt">#puts &quot;**** New mode: #{newMode}&quot;</span>
1089
- 252: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">newMode</span>]
1090
- 253: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Undefined mode #{newMode}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@activePatterns</span>
1091
- 254: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-identifier">newMode</span>
1092
- 255: <span class="ruby-keyword kw">end</span></pre>
1096
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 252</span>
1097
+ 252: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mode=</span>(<span class="ruby-identifier">newMode</span>)
1098
+ 253: <span class="ruby-comment cmt">#puts &quot;**** New mode: #{newMode}&quot;</span>
1099
+ 254: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">newMode</span>]
1100
+ 255: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Undefined mode #{newMode}&quot;</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@activePatterns</span>
1101
+ 256: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-identifier">newMode</span>
1102
+ 257: <span class="ruby-keyword kw">end</span></pre>
1093
1103
  </div>
1094
1104
 
1095
1105
  </div>
@@ -1125,79 +1135,81 @@ started.
1125
1135
  <div class="method-source-code"
1126
1136
  id="next-oken-source">
1127
1137
  <pre>
1128
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 351</span>
1129
- 351: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
1130
- 352: <span class="ruby-comment cmt"># If we have a pushed-back token, return that first.</span>
1131
- 353: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
1132
- 354: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@tokenBuffer</span>
1133
- 355: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1134
- 356: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span>
1135
- 357: <span class="ruby-keyword kw">end</span>
1136
- 358:
1137
- 359: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@finishLastFile</span>
1138
- 360: <span class="ruby-comment cmt"># The previously processed file has now really been processed to</span>
1139
- 361: <span class="ruby-comment cmt"># completion. Close it and remove the corresponding entry from the</span>
1140
- 362: <span class="ruby-comment cmt"># @fileStack.</span>
1141
- 363: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
1142
- 364: <span class="ruby-comment cmt">#Log &lt;&lt; &quot;Completed file #{@cf.fileName}&quot;</span>
1143
- 365: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">close</span>
1144
- 366: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">pop</span>
1145
- 367:
1146
- 368: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
1147
- 369: <span class="ruby-comment cmt"># We are done with the top-level file now.</span>
1148
- 370: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1149
- 371: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
1150
- 372: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END&gt;'</span>, <span class="ruby-ivar">@startOfToken</span> ]
1151
- 373: <span class="ruby-keyword kw">else</span>
1152
- 374: <span class="ruby-comment cmt"># Continue parsing the file that included the current file.</span>
1153
- 375: <span class="ruby-ivar">@cf</span>, <span class="ruby-identifier">tokenBuffer</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>
1154
- 376: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Parsing file #{@cf.fileName} ...&quot;</span>
1155
- 377: <span class="ruby-comment cmt"># If we have a left over token from previously processing this file,</span>
1156
- 378: <span class="ruby-comment cmt"># return it now.</span>
1157
- 379: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tokenBuffer</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tokenBuffer</span>
1158
- 380: <span class="ruby-keyword kw">end</span>
1159
- 381: <span class="ruby-keyword kw">end</span>
1160
- 382:
1161
- 383: <span class="ruby-comment cmt"># Start processing characters from the input.</span>
1162
- 384: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
1163
- 385: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1164
- 386: <span class="ruby-identifier">match</span> = <span class="ruby-keyword kw">nil</span>
1165
- 387: <span class="ruby-keyword kw">begin</span>
1166
- 388: <span class="ruby-ivar">@activePatterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">re</span>, <span class="ruby-identifier">postProc</span><span class="ruby-operator">|</span>
1167
- 389: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">match</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">re</span>))
1168
- 390: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span> <span class="ruby-operator">==</span> <span class="ruby-value">:scannerEOF</span>
1169
- 391: <span class="ruby-comment cmt"># We've found the end of an input file. Return a special token</span>
1170
- 392: <span class="ruby-comment cmt"># that describes the end of a file.</span>
1171
- 393: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
1172
- 394: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END&gt;'</span>, <span class="ruby-ivar">@startOfToken</span> ]
1173
- 395: <span class="ruby-keyword kw">end</span>
1174
- 396:
1175
- 397: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;#{re} matches empty string&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">empty?</span>
1176
- 398: <span class="ruby-comment cmt"># If we have a post processing method, call it now. It may modify</span>
1177
- 399: <span class="ruby-comment cmt"># the type or the found token String.</span>
1178
- 400: <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> = <span class="ruby-identifier">postProc</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">postProc</span>
1138
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 353</span>
1139
+ 353: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
1140
+ 354: <span class="ruby-comment cmt"># If we have a pushed-back token, return that first.</span>
1141
+ 355: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
1142
+ 356: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@tokenBuffer</span>
1143
+ 357: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1144
+ 358: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span>
1145
+ 359: <span class="ruby-keyword kw">end</span>
1146
+ 360:
1147
+ 361: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@finishLastFile</span>
1148
+ 362: <span class="ruby-comment cmt"># The previously processed file has now really been processed to</span>
1149
+ 363: <span class="ruby-comment cmt"># completion. Close it and remove the corresponding entry from the</span>
1150
+ 364: <span class="ruby-comment cmt"># @fileStack.</span>
1151
+ 365: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
1152
+ 366: <span class="ruby-comment cmt">#Log &lt;&lt; &quot;Completed file #{@cf.fileName}&quot;</span>
1153
+ 367: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>
1154
+ 368: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">pop</span>
1155
+ 369:
1156
+ 370: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
1157
+ 371: <span class="ruby-comment cmt"># We are done with the top-level file now.</span>
1158
+ 372: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1159
+ 373: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
1160
+ 374: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value">:endOfText</span>, <span class="ruby-value str">'&lt;EOT&gt;'</span>, <span class="ruby-ivar">@startOfToken</span> ]
1161
+ 375: <span class="ruby-keyword kw">else</span>
1162
+ 376: <span class="ruby-comment cmt"># Continue parsing the file that included the current file.</span>
1163
+ 377: <span class="ruby-ivar">@cf</span>, <span class="ruby-identifier">tokenBuffer</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>
1164
+ 378: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Parsing file #{@cf.fileName} ...&quot;</span>
1165
+ 379: <span class="ruby-comment cmt"># If we have a left over token from previously processing this file,</span>
1166
+ 380: <span class="ruby-comment cmt"># return it now.</span>
1167
+ 381: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tokenBuffer</span>
1168
+ 382: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tokenBuffer</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:eof</span>
1169
+ 383: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tokenBuffer</span>
1170
+ 384: <span class="ruby-keyword kw">end</span>
1171
+ 385: <span class="ruby-keyword kw">end</span>
1172
+ 386: <span class="ruby-keyword kw">end</span>
1173
+ 387:
1174
+ 388: <span class="ruby-comment cmt"># Start processing characters from the input.</span>
1175
+ 389: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
1176
+ 390: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1177
+ 391: <span class="ruby-identifier">match</span> = <span class="ruby-keyword kw">nil</span>
1178
+ 392: <span class="ruby-keyword kw">begin</span>
1179
+ 393: <span class="ruby-ivar">@activePatterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">re</span>, <span class="ruby-identifier">postProc</span><span class="ruby-operator">|</span>
1180
+ 394: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">match</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">re</span>))
1181
+ 395: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span> <span class="ruby-operator">==</span> <span class="ruby-value">:scannerEOF</span>
1182
+ 396: <span class="ruby-comment cmt"># We've found the end of an input file. Return a special token</span>
1183
+ 397: <span class="ruby-comment cmt"># that describes the end of a file.</span>
1184
+ 398: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
1185
+ 399: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value">:eof</span>, <span class="ruby-value str">'&lt;END&gt;'</span>, <span class="ruby-ivar">@startOfToken</span> ]
1186
+ 400: <span class="ruby-keyword kw">end</span>
1179
1187
  401:
1180
- 402: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-comment cmt"># Ignore certain tokens with nil type.</span>
1181
- 403:
1182
- 404: <span class="ruby-comment cmt">#puts &quot;type: #{type} match: [#{match}]&quot;</span>
1183
- 405: <span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>, <span class="ruby-ivar">@startOfToken</span> ]
1184
- 406: <span class="ruby-keyword kw">end</span>
1185
- 407: <span class="ruby-keyword kw">end</span>
1186
- 408: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">ArgumentError</span>
1187
- 409: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'scan_encoding_error'</span>, <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>)
1188
- 410: <span class="ruby-keyword kw">end</span>
1189
- 411:
1190
- 412: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">nil?</span>
1191
- 413: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">eof?</span>
1192
- 414: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unexpected_eof'</span>,
1193
- 415: <span class="ruby-value str">&quot;Unexpected end of file found&quot;</span>)
1194
- 416: <span class="ruby-keyword kw">else</span>
1195
- 417: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_token_match'</span>,
1196
- 418: <span class="ruby-node">&quot;Unexpected characters found: '#{@cf.peek(10)}...'&quot;</span>)
1197
- 419: <span class="ruby-keyword kw">end</span>
1198
- 420: <span class="ruby-keyword kw">end</span>
1199
- 421: <span class="ruby-keyword kw">end</span>
1200
- 422: <span class="ruby-keyword kw">end</span></pre>
1188
+ 402: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;#{re} matches empty string&quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">empty?</span>
1189
+ 403: <span class="ruby-comment cmt"># If we have a post processing method, call it now. It may modify</span>
1190
+ 404: <span class="ruby-comment cmt"># the type or the found token String.</span>
1191
+ 405: <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> = <span class="ruby-identifier">postProc</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">postProc</span>
1192
+ 406:
1193
+ 407: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-comment cmt"># Ignore certain tokens with nil type.</span>
1194
+ 408:
1195
+ 409: <span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>, <span class="ruby-ivar">@startOfToken</span> ]
1196
+ 410: <span class="ruby-keyword kw">end</span>
1197
+ 411: <span class="ruby-keyword kw">end</span>
1198
+ 412: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">ArgumentError</span>
1199
+ 413: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'scan_encoding_error'</span>, <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>)
1200
+ 414: <span class="ruby-keyword kw">end</span>
1201
+ 415:
1202
+ 416: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">nil?</span>
1203
+ 417: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">eof?</span>
1204
+ 418: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unexpected_eof'</span>,
1205
+ 419: <span class="ruby-value str">&quot;Unexpected end of file found&quot;</span>)
1206
+ 420: <span class="ruby-keyword kw">else</span>
1207
+ 421: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_token_match'</span>,
1208
+ 422: <span class="ruby-node">&quot;Unexpected characters found: '#{@cf.peek(10)}...'&quot;</span>)
1209
+ 423: <span class="ruby-keyword kw">end</span>
1210
+ 424: <span class="ruby-keyword kw">end</span>
1211
+ 425: <span class="ruby-keyword kw">end</span>
1212
+ 426: <span class="ruby-keyword kw">end</span></pre>
1201
1213
  </div>
1202
1214
 
1203
1215
  </div>
@@ -1231,21 +1243,21 @@ Start the processing. if <em>fileNameIsBuffer</em> is true, we operate on a
1231
1243
  <div class="method-source-code"
1232
1244
  id="open-source">
1233
1245
  <pre>
1234
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 260</span>
1235
- 260: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>)
1236
- 261: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-identifier">fileNameIsBuffer</span>
1237
- 262: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fileNameIsBuffer</span>
1238
- 263: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">BufferStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span> ] ]
1239
- 264: <span class="ruby-keyword kw">else</span>
1240
- 265: <span class="ruby-keyword kw">begin</span>
1241
- 266: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">FileStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span> ] ]
1242
- 267: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
1243
- 268: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'open_file'</span>, <span class="ruby-node">&quot;Cannot open file #{@masterFile}&quot;</span>)
1244
- 269: <span class="ruby-keyword kw">end</span>
1245
- 270: <span class="ruby-keyword kw">end</span>
1246
- 271: <span class="ruby-ivar">@masterPath</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">dirname</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
1247
- 272: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1248
- 273: <span class="ruby-keyword kw">end</span></pre>
1246
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 262</span>
1247
+ 262: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>)
1248
+ 263: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-identifier">fileNameIsBuffer</span>
1249
+ 264: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fileNameIsBuffer</span>
1250
+ 265: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">BufferStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span> ] ]
1251
+ 266: <span class="ruby-keyword kw">else</span>
1252
+ 267: <span class="ruby-keyword kw">begin</span>
1253
+ 268: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">FileStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span> ] ]
1254
+ 269: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
1255
+ 270: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'open_file'</span>, <span class="ruby-node">&quot;Cannot open file #{@masterFile}&quot;</span>)
1256
+ 271: <span class="ruby-keyword kw">end</span>
1257
+ 272: <span class="ruby-keyword kw">end</span>
1258
+ 273: <span class="ruby-ivar">@masterPath</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">dirname</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
1259
+ 274: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1260
+ 275: <span class="ruby-keyword kw">end</span></pre>
1249
1261
  </div>
1250
1262
 
1251
1263
  </div>
@@ -1279,15 +1291,15 @@ token can be returned before the next nextToken() call.
1279
1291
  <div class="method-source-code"
1280
1292
  id="return-oken-source">
1281
1293
  <pre>
1282
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 426</span>
1283
- 426: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
1284
- 427: <span class="ruby-comment cmt">#Log &lt;&lt; &quot;-&gt; Returning Token: [#{token[0]}][#{token[1]}]&quot;</span>
1285
- 428: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
1286
- 429: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@tokenBuffer</span>
1287
- 430: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Fatal Error: Cannot return more than 1 token in a row&quot;</span>
1288
- 431: <span class="ruby-keyword kw">end</span>
1289
- 432: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-identifier">token</span>
1290
- 433: <span class="ruby-keyword kw">end</span></pre>
1294
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 430</span>
1295
+ 430: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
1296
+ 431: <span class="ruby-comment cmt">#Log &lt;&lt; &quot;-&gt; Returning Token: [#{token[0]}][#{token[1]}]&quot;</span>
1297
+ 432: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
1298
+ 433: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@tokenBuffer</span>
1299
+ 434: <span class="ruby-identifier">raise</span> <span class="ruby-value str">&quot;Fatal Error: Cannot return more than 1 token in a row&quot;</span>
1300
+ 435: <span class="ruby-keyword kw">end</span>
1301
+ 436: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-identifier">token</span>
1302
+ 437: <span class="ruby-keyword kw">end</span></pre>
1291
1303
  </div>
1292
1304
 
1293
1305
  </div>
@@ -1321,11 +1333,11 @@ processing prosition.
1321
1333
  <div class="method-source-code"
1322
1334
  id="source-ile-nfo-source">
1323
1335
  <pre>
1324
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 325</span>
1325
- 325: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sourceFileInfo</span>
1326
- 326: <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lineDelta</span>, <span class="ruby-value">0</span>) <span class="ruby-operator">:</span>
1327
- 327: <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
1328
- 328: <span class="ruby-keyword kw">end</span></pre>
1336
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 327</span>
1337
+ 327: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sourceFileInfo</span>
1338
+ 328: <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lineDelta</span>, <span class="ruby-value">0</span>) <span class="ruby-operator">:</span>
1339
+ 329: <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
1340
+ 330: <span class="ruby-keyword kw">end</span></pre>
1329
1341
  </div>
1330
1342
 
1331
1343
  </div>
@@ -1356,10 +1368,10 @@ processing prosition.
1356
1368
  <div class="method-source-code"
1357
1369
  id="warning-source">
1358
1370
  <pre>
1359
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 469</span>
1360
- 469: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">data</span> = <span class="ruby-keyword kw">nil</span>)
1361
- 470: <span class="ruby-identifier">message</span>(<span class="ruby-value">:warning</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">data</span>)
1362
- 471: <span class="ruby-keyword kw">end</span></pre>
1371
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 473</span>
1372
+ 473: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">data</span> = <span class="ruby-keyword kw">nil</span>)
1373
+ 474: <span class="ruby-identifier">message</span>(<span class="ruby-value">:warning</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
1374
+ 475: <span class="ruby-keyword kw">end</span></pre>
1363
1375
  </div>
1364
1376
 
1365
1377
  </div>
@@ -1396,35 +1408,35 @@ processing prosition.
1396
1408
  <div class="method-source-code"
1397
1409
  id="message-source">
1398
1410
  <pre>
1399
- <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 475</span>
1400
- 475: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">message</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
1401
- 476: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
1402
- 477: <span class="ruby-identifier">line</span> = <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
1403
- 478: <span class="ruby-identifier">sfi</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">sourceFileInfo</span>
1404
- 479:
1405
- 480: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">macroStack</span>.<span class="ruby-identifier">empty?</span>
1406
- 481: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">info</span>(<span class="ruby-value str">'macro_stack'</span>, <span class="ruby-value str">'Macro call history:'</span>, <span class="ruby-keyword kw">nil</span>)
1407
- 482:
1408
- 483: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">macroStack</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
1409
- 484: <span class="ruby-identifier">macro</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">macro</span>
1410
- 485: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">args</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
1411
- 486: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-value str">'&quot;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'&quot;'</span> }
1412
- 487: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">info</span>(<span class="ruby-value str">'macro_stack'</span>,
1413
- 488: <span class="ruby-node">&quot; ${#{macro.name} #{args.join(' ')}}&quot;</span>,
1414
- 489: <span class="ruby-identifier">macro</span>.<span class="ruby-identifier">sourceFileInfo</span>)
1415
- 490: <span class="ruby-keyword kw">end</span>
1416
- 491: <span class="ruby-keyword kw">end</span>
1417
- 492:
1418
- 493: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
1419
- 494: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:error</span>
1420
- 495: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">line</span>, <span class="ruby-identifier">data</span>)
1421
- 496: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:warning</span>
1422
- 497: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">line</span>, <span class="ruby-identifier">data</span>)
1423
- 498: <span class="ruby-keyword kw">else</span>
1424
- 499: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown message type #{type}&quot;</span>
1425
- 500: <span class="ruby-keyword kw">end</span>
1426
- 501: <span class="ruby-keyword kw">end</span>
1427
- 502: <span class="ruby-keyword kw">end</span></pre>
1411
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 479</span>
1412
+ 479: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">message</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
1413
+ 480: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
1414
+ 481: <span class="ruby-identifier">line</span> = <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
1415
+ 482: <span class="ruby-identifier">sfi</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">sourceFileInfo</span>
1416
+ 483:
1417
+ 484: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">macroStack</span>.<span class="ruby-identifier">empty?</span>
1418
+ 485: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">info</span>(<span class="ruby-value str">'macro_stack'</span>, <span class="ruby-value str">'Macro call history:'</span>, <span class="ruby-keyword kw">nil</span>)
1419
+ 486:
1420
+ 487: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">macroStack</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
1421
+ 488: <span class="ruby-identifier">macro</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">macro</span>
1422
+ 489: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">args</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
1423
+ 490: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-value str">'&quot;'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'&quot;'</span> }
1424
+ 491: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">info</span>(<span class="ruby-value str">'macro_stack'</span>,
1425
+ 492: <span class="ruby-node">&quot; ${#{macro.name} #{args.join(' ')}}&quot;</span>,
1426
+ 493: <span class="ruby-identifier">macro</span>.<span class="ruby-identifier">sourceFileInfo</span>)
1427
+ 494: <span class="ruby-keyword kw">end</span>
1428
+ 495: <span class="ruby-keyword kw">end</span>
1429
+ 496:
1430
+ 497: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
1431
+ 498: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:error</span>
1432
+ 499: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">line</span>, <span class="ruby-identifier">data</span>)
1433
+ 500: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:warning</span>
1434
+ 501: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">line</span>, <span class="ruby-identifier">data</span>)
1435
+ 502: <span class="ruby-keyword kw">else</span>
1436
+ 503: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown message type #{type}&quot;</span>
1437
+ 504: <span class="ruby-keyword kw">end</span>
1438
+ 505: <span class="ruby-keyword kw">end</span>
1439
+ 506: <span class="ruby-keyword kw">end</span></pre>
1428
1440
  </div>
1429
1441
 
1430
1442
  </div>