taskjuggler 0.0.8 → 0.0.9

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 (613) hide show
  1. data/CHANGELOG +1144 -2047
  2. data/README +1 -1
  3. data/Rakefile +6 -6
  4. data/data/css/tjmanual.css +20 -0
  5. data/data/css/tjreport.css +7 -6
  6. data/doc/AppConfig.html +136 -130
  7. data/doc/Arguments.html +46 -40
  8. data/doc/CHANGELOG.html +1162 -2057
  9. data/doc/COPYING.html +8 -2
  10. data/doc/Object.html +205 -199
  11. data/doc/README.html +9 -3
  12. data/doc/RuntimeConfig.html +75 -69
  13. data/doc/String.html +69 -63
  14. data/doc/TaskJuggler.html +350 -291
  15. data/doc/TaskJuggler/Account.html +26 -20
  16. data/doc/TaskJuggler/AccountAttribute.html +24 -18
  17. data/doc/TaskJuggler/AccountScenario.html +24 -18
  18. data/doc/TaskJuggler/Allocation.html +74 -68
  19. data/doc/TaskJuggler/AllocationAttribute.html +54 -48
  20. data/doc/TaskJuggler/AttributeBase.html +172 -93
  21. data/doc/TaskJuggler/AttributeDefinition.html +22 -16
  22. data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
  23. data/doc/TaskJuggler/BatchProcessor.html +263 -257
  24. data/doc/TaskJuggler/Booking.html +44 -38
  25. data/doc/TaskJuggler/BookingListAttribute.html +25 -21
  26. data/doc/TaskJuggler/BooleanAttribute.html +24 -18
  27. data/doc/TaskJuggler/CSVFile.html +193 -187
  28. data/doc/TaskJuggler/CellSettingPattern.html +13 -7
  29. data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
  30. data/doc/TaskJuggler/Charge.html +49 -43
  31. data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
  32. data/doc/TaskJuggler/ChargeSet.html +94 -88
  33. data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
  34. data/doc/TaskJuggler/CollisionDetector.html +142 -136
  35. data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
  36. data/doc/TaskJuggler/ColumnTable.html +50 -44
  37. data/doc/TaskJuggler/Daemon.html +71 -50
  38. data/doc/TaskJuggler/DataCache.html +110 -58
  39. data/doc/TaskJuggler/DataCacheEntry.html +22 -16
  40. data/doc/TaskJuggler/DateAttribute.html +24 -18
  41. data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
  42. data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
  43. data/doc/TaskJuggler/DurationAttribute.html +25 -19
  44. data/doc/TaskJuggler/FileList.html +25 -19
  45. data/doc/TaskJuggler/FileRecord.html +17 -11
  46. data/doc/TaskJuggler/FixnumAttribute.html +16 -10
  47. data/doc/TaskJuggler/FlagListAttribute.html +25 -21
  48. data/doc/TaskJuggler/FloatAttribute.html +20 -14
  49. data/doc/TaskJuggler/FormatListAttribute.html +17 -11
  50. data/doc/TaskJuggler/GanttChart.html +242 -236
  51. data/doc/TaskJuggler/GanttContainer.html +71 -67
  52. data/doc/TaskJuggler/GanttHeader.html +113 -107
  53. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
  54. data/doc/TaskJuggler/GanttLine.html +217 -210
  55. data/doc/TaskJuggler/GanttLoadStack.html +89 -83
  56. data/doc/TaskJuggler/GanttMilestone.html +11 -6
  57. data/doc/TaskJuggler/GanttRouter.html +194 -186
  58. data/doc/TaskJuggler/GanttTaskBar.html +41 -34
  59. data/doc/TaskJuggler/HTMLDocument.html +52 -46
  60. data/doc/TaskJuggler/HTMLGraphics.html +58 -52
  61. data/doc/TaskJuggler/Interval.html +90 -84
  62. data/doc/TaskJuggler/IntervalList.html +777 -0
  63. data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
  64. data/doc/TaskJuggler/JobInfo.html +36 -30
  65. data/doc/TaskJuggler/Journal.html +188 -177
  66. data/doc/TaskJuggler/JournalEntry.html +36 -30
  67. data/doc/TaskJuggler/JournalEntryList.html +88 -82
  68. data/doc/TaskJuggler/KeywordArray.html +12 -6
  69. data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
  70. data/doc/TaskJuggler/Limits.html +111 -105
  71. data/doc/TaskJuggler/Limits/Limit.html +71 -65
  72. data/doc/TaskJuggler/LimitsAttribute.html +21 -15
  73. data/doc/TaskJuggler/ListAttributeBase.html +16 -10
  74. data/doc/TaskJuggler/Log.html +111 -105
  75. data/doc/TaskJuggler/LogFile.html +54 -48
  76. data/doc/TaskJuggler/LogicalAttribute.html +35 -29
  77. data/doc/TaskJuggler/LogicalExpression.html +32 -26
  78. data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
  79. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
  80. data/doc/TaskJuggler/LogicalFlag.html +24 -18
  81. data/doc/TaskJuggler/LogicalFunction.html +164 -158
  82. data/doc/TaskJuggler/LogicalOperation.html +138 -132
  83. data/doc/TaskJuggler/Macro.html +14 -8
  84. data/doc/TaskJuggler/MacroTable.html +42 -36
  85. data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
  86. data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
  87. data/doc/TaskJuggler/Message.html +56 -50
  88. data/doc/TaskJuggler/MessageHandler.html +73 -67
  89. data/doc/TaskJuggler/Navigator.html +92 -86
  90. data/doc/TaskJuggler/NavigatorElement.html +88 -82
  91. data/doc/TaskJuggler/NikuProject.html +15 -9
  92. data/doc/TaskJuggler/NikuReport.html +405 -370
  93. data/doc/TaskJuggler/NikuResource.html +13 -7
  94. data/doc/TaskJuggler/NodeListAttribute.html +13 -9
  95. data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
  96. data/doc/TaskJuggler/ProcessIntercom.html +116 -110
  97. data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
  98. data/doc/TaskJuggler/Project.html +1064 -895
  99. data/doc/TaskJuggler/ProjectBroker.html +439 -366
  100. data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
  101. data/doc/TaskJuggler/ProjectFileParser.html +329 -319
  102. data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
  103. data/doc/TaskJuggler/ProjectRecord.html +66 -60
  104. data/doc/TaskJuggler/ProjectServer.html +287 -280
  105. data/doc/TaskJuggler/ProjectServerIface.html +43 -37
  106. data/doc/TaskJuggler/PropertyAttribute.html +16 -10
  107. data/doc/TaskJuggler/PropertyList.html +205 -199
  108. data/doc/TaskJuggler/PropertySet.html +264 -296
  109. data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
  110. data/doc/TaskJuggler/Query.html +309 -524
  111. data/doc/TaskJuggler/RTFHandlers.html +17 -11
  112. data/doc/TaskJuggler/RTFNavigator.html +33 -27
  113. data/doc/TaskJuggler/RTFQuery.html +135 -129
  114. data/doc/TaskJuggler/RTFReport.html +63 -57
  115. data/doc/TaskJuggler/RTFReportLink.html +55 -49
  116. data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
  117. data/doc/TaskJuggler/RealFormat.html +64 -58
  118. data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
  119. data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
  120. data/doc/TaskJuggler/Report.html +294 -249
  121. data/doc/TaskJuggler/ReportBase.html +229 -223
  122. data/doc/TaskJuggler/ReportContext.html +52 -46
  123. data/doc/TaskJuggler/ReportServer.html +143 -137
  124. data/doc/TaskJuggler/ReportServerIface.html +51 -43
  125. data/doc/TaskJuggler/ReportServerRecord.html +36 -30
  126. data/doc/TaskJuggler/ReportServlet.html +167 -140
  127. data/doc/TaskJuggler/ReportTable.html +137 -131
  128. data/doc/TaskJuggler/ReportTableCell.html +332 -292
  129. data/doc/TaskJuggler/ReportTableColumn.html +46 -40
  130. data/doc/TaskJuggler/ReportTableLegend.html +43 -38
  131. data/doc/TaskJuggler/ReportTableLine.html +66 -60
  132. data/doc/TaskJuggler/Resource.html +166 -160
  133. data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
  134. data/doc/TaskJuggler/ResourceListRE.html +47 -41
  135. data/doc/TaskJuggler/ResourceScenario.html +671 -644
  136. data/doc/TaskJuggler/RichText.html +51 -45
  137. data/doc/TaskJuggler/RichTextAttribute.html +28 -22
  138. data/doc/TaskJuggler/RichTextDocument.html +96 -90
  139. data/doc/TaskJuggler/RichTextElement.html +503 -497
  140. data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
  141. data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
  142. data/doc/TaskJuggler/RichTextImage.html +14 -8
  143. data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
  144. data/doc/TaskJuggler/RichTextParser.html +59 -53
  145. data/doc/TaskJuggler/RichTextScanner.html +184 -178
  146. data/doc/TaskJuggler/RichTextSnip.html +69 -63
  147. data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
  148. data/doc/TaskJuggler/Scenario.html +13 -7
  149. data/doc/TaskJuggler/ScenarioData.html +40 -34
  150. data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
  151. data/doc/TaskJuggler/Scoreboard.html +129 -107
  152. data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
  153. data/doc/TaskJuggler/SheetReceiver.html +333 -327
  154. data/doc/TaskJuggler/SheetSender.html +227 -221
  155. data/doc/TaskJuggler/Shift.html +26 -20
  156. data/doc/TaskJuggler/ShiftAssignment.html +45 -39
  157. data/doc/TaskJuggler/ShiftAssignments.html +178 -172
  158. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
  159. data/doc/TaskJuggler/ShiftScenario.html +29 -23
  160. data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
  161. data/doc/TaskJuggler/SortListAttribute.html +17 -13
  162. data/doc/TaskJuggler/SourceFileInfo.html +19 -13
  163. data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
  164. data/doc/TaskJuggler/StatusSheetReport.html +166 -159
  165. data/doc/TaskJuggler/StatusSheetSender.html +80 -74
  166. data/doc/TaskJuggler/StringAttribute.html +20 -14
  167. data/doc/TaskJuggler/SymbolAttribute.html +16 -10
  168. data/doc/TaskJuggler/SyntaxReference.html +231 -225
  169. data/doc/TaskJuggler/TOCEntry.html +46 -40
  170. data/doc/TaskJuggler/TSResourceRecord.html +15 -9
  171. data/doc/TaskJuggler/TSTaskRecord.html +16 -10
  172. data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
  173. data/doc/TaskJuggler/TableOfContents.html +28 -22
  174. data/doc/TaskJuggler/TableReport.html +906 -866
  175. data/doc/TaskJuggler/Task.html +99 -93
  176. data/doc/TaskJuggler/TaskDependency.html +24 -18
  177. data/doc/TaskJuggler/TaskListAttribute.html +29 -25
  178. data/doc/TaskJuggler/TaskListRE.html +46 -39
  179. data/doc/TaskJuggler/TaskScenario.html +2218 -1965
  180. data/doc/TaskJuggler/TextFormatter.html +154 -148
  181. data/doc/TaskJuggler/TextParser.html +362 -348
  182. data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
  183. data/doc/TaskJuggler/TextParser/Rule.html +147 -141
  184. data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
  185. data/doc/TaskJuggler/TextParser/State.html +88 -82
  186. data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
  187. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
  188. data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
  189. data/doc/TaskJuggler/TextReport.html +80 -74
  190. data/doc/TaskJuggler/TextScanner.html +284 -272
  191. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
  192. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
  193. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
  194. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  195. data/doc/TaskJuggler/TimeSheet.html +123 -117
  196. data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
  197. data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
  198. data/doc/TaskJuggler/TimeSheetReport.html +206 -199
  199. data/doc/TaskJuggler/TimeSheetSender.html +27 -21
  200. data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
  201. data/doc/TaskJuggler/TimeSheets.html +20 -14
  202. data/doc/TaskJuggler/Tj3AppBase.html +100 -94
  203. data/doc/TaskJuggler/Tj3Client.html +407 -483
  204. data/doc/TaskJuggler/Tj3Daemon.html +116 -107
  205. data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
  206. data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
  207. data/doc/TaskJuggler/Tj3SsSender.html +64 -58
  208. data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
  209. data/doc/TaskJuggler/Tj3TsSender.html +51 -45
  210. data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
  211. data/doc/TaskJuggler/TjException.html +13 -7
  212. data/doc/TaskJuggler/TjTime.html +444 -438
  213. data/doc/TaskJuggler/TjpExample.html +84 -78
  214. data/doc/TaskJuggler/TjpExportRE.html +356 -349
  215. data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
  216. data/doc/TaskJuggler/URLParameter.html +16 -10
  217. data/doc/TaskJuggler/UserManual.html +185 -179
  218. data/doc/TaskJuggler/VimSyntax.html +144 -138
  219. data/doc/TaskJuggler/WebServer.html +46 -39
  220. data/doc/TaskJuggler/WelcomePage.html +769 -0
  221. data/doc/TaskJuggler/WorkingHours.html +185 -179
  222. data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
  223. data/doc/TaskJuggler/XMLBlob.html +21 -15
  224. data/doc/TaskJuggler/XMLComment.html +17 -11
  225. data/doc/TaskJuggler/XMLDocument.html +33 -27
  226. data/doc/TaskJuggler/XMLElement.html +97 -91
  227. data/doc/TaskJuggler/XMLNamedText.html +13 -7
  228. data/doc/TaskJuggler/XMLText.html +32 -26
  229. data/doc/index.html +601 -563
  230. data/doc/lib/AccountScenario_rb.html +5 -3
  231. data/doc/lib/Account_rb.html +5 -3
  232. data/doc/lib/Allocation_rb.html +5 -3
  233. data/doc/lib/AppConfig_rb.html +5 -3
  234. data/doc/lib/AttributeBase_rb.html +5 -3
  235. data/doc/lib/AttributeDefinition_rb.html +5 -3
  236. data/doc/lib/Attributes_rb.html +5 -3
  237. data/doc/lib/BatchProcessor_rb.html +5 -3
  238. data/doc/lib/Booking_rb.html +5 -3
  239. data/doc/lib/ChargeSet_rb.html +5 -3
  240. data/doc/lib/Charge_rb.html +5 -3
  241. data/doc/lib/DataCache_rb.html +5 -3
  242. data/doc/lib/FileList_rb.html +5 -3
  243. data/doc/lib/HTMLDocument_rb.html +5 -3
  244. data/doc/lib/IntervalList_rb.html +69 -0
  245. data/doc/lib/Interval_rb.html +5 -3
  246. data/doc/lib/Journal_rb.html +5 -3
  247. data/doc/lib/KeywordArray_rb.html +5 -3
  248. data/doc/lib/KeywordDocumentation_rb.html +5 -3
  249. data/doc/lib/Limits_rb.html +5 -3
  250. data/doc/lib/LogFile_rb.html +5 -3
  251. data/doc/lib/Log_rb.html +5 -3
  252. data/doc/lib/LogicalExpression_rb.html +5 -3
  253. data/doc/lib/LogicalFunction_rb.html +5 -3
  254. data/doc/lib/LogicalOperation_rb.html +5 -3
  255. data/doc/lib/MacroTable_rb.html +5 -3
  256. data/doc/lib/MessageHandler_rb.html +5 -3
  257. data/doc/lib/ProjectFileParser_rb.html +5 -3
  258. data/doc/lib/ProjectFileScanner_rb.html +5 -3
  259. data/doc/lib/Project_rb.html +5 -3
  260. data/doc/lib/PropertyList_rb.html +5 -3
  261. data/doc/lib/PropertySet_rb.html +5 -3
  262. data/doc/lib/PropertyTreeNode_rb.html +5 -3
  263. data/doc/lib/Query_rb.html +5 -3
  264. data/doc/lib/RTFHandlers_rb.html +5 -3
  265. data/doc/lib/RTFNavigator_rb.html +5 -3
  266. data/doc/lib/RTFQuery_rb.html +5 -3
  267. data/doc/lib/RTFReportLink_rb.html +5 -3
  268. data/doc/lib/RTFReport_rb.html +5 -3
  269. data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
  270. data/doc/lib/RealFormat_rb.html +5 -3
  271. data/doc/lib/ResourceScenario_rb.html +5 -3
  272. data/doc/lib/Resource_rb.html +5 -3
  273. data/doc/lib/RichTextDocument_rb.html +5 -3
  274. data/doc/lib/RichTextElement_rb.html +5 -3
  275. data/doc/lib/RichTextFunctionExample_rb.html +5 -3
  276. data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
  277. data/doc/lib/RichTextParser_rb.html +5 -3
  278. data/doc/lib/RichTextScanner_rb.html +5 -3
  279. data/doc/lib/RichTextSnip_rb.html +5 -3
  280. data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
  281. data/doc/lib/RichText_rb.html +5 -3
  282. data/doc/lib/RuntimeConfig_rb.html +5 -3
  283. data/doc/lib/ScenarioData_rb.html +5 -3
  284. data/doc/lib/Scenario_rb.html +5 -3
  285. data/doc/lib/Scoreboard_rb.html +7 -3
  286. data/doc/lib/SheetHandlerBase_rb.html +5 -3
  287. data/doc/lib/SheetReceiver_rb.html +5 -3
  288. data/doc/lib/SheetSender_rb.html +5 -3
  289. data/doc/lib/ShiftAssignments_rb.html +5 -3
  290. data/doc/lib/ShiftScenario_rb.html +5 -3
  291. data/doc/lib/Shift_rb.html +5 -3
  292. data/doc/lib/SimpleQueryExpander_rb.html +5 -3
  293. data/doc/lib/SourceFileInfo_rb.html +5 -3
  294. data/doc/lib/StatusSheetReceiver_rb.html +5 -3
  295. data/doc/lib/StatusSheetSender_rb.html +5 -3
  296. data/doc/lib/SyntaxReference_rb.html +5 -3
  297. data/doc/lib/TOCEntry_rb.html +5 -3
  298. data/doc/lib/TableColumnDefinition_rb.html +5 -3
  299. data/doc/lib/TableOfContents_rb.html +5 -3
  300. data/doc/lib/TaskDependency_rb.html +5 -3
  301. data/doc/lib/TaskJuggler_rb.html +5 -3
  302. data/doc/lib/TaskScenario_rb.html +5 -3
  303. data/doc/lib/Task_rb.html +5 -3
  304. data/doc/lib/TextFormatter_rb.html +6 -4
  305. data/doc/lib/TextParser/Pattern_rb.html +5 -3
  306. data/doc/lib/TextParser/Rule_rb.html +5 -3
  307. data/doc/lib/TextParser/StackElement_rb.html +5 -3
  308. data/doc/lib/TextParser/State_rb.html +6 -4
  309. data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
  310. data/doc/lib/TextParser_rb.html +5 -3
  311. data/doc/lib/TextScanner_rb.html +5 -3
  312. data/doc/lib/TimeSheetReceiver_rb.html +5 -3
  313. data/doc/lib/TimeSheetSender_rb.html +5 -3
  314. data/doc/lib/TimeSheetSummary_rb.html +6 -4
  315. data/doc/lib/TimeSheets_rb.html +5 -3
  316. data/doc/lib/Tj3AppBase_rb.html +5 -3
  317. data/doc/lib/Tj3Config_rb.html +5 -3
  318. data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
  319. data/doc/lib/TjException_rb.html +5 -3
  320. data/doc/lib/TjTime_rb.html +5 -3
  321. data/doc/lib/TjpExample_rb.html +5 -3
  322. data/doc/lib/TjpSyntaxRules_rb.html +5 -3
  323. data/doc/lib/URLParameter_rb.html +5 -3
  324. data/doc/lib/UTF8String_rb.html +5 -3
  325. data/doc/lib/UserManual_rb.html +5 -3
  326. data/doc/lib/VimSyntax_rb.html +6 -4
  327. data/doc/lib/WorkingHours_rb.html +5 -3
  328. data/doc/lib/XMLDocument_rb.html +5 -3
  329. data/doc/lib/XMLElement_rb.html +5 -3
  330. data/doc/lib/daemon/Daemon_rb.html +5 -3
  331. data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
  332. data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
  333. data/doc/lib/daemon/ProjectServer_rb.html +5 -3
  334. data/doc/lib/daemon/ReportServer_rb.html +5 -3
  335. data/doc/lib/daemon/ReportServlet_rb.html +69 -0
  336. data/doc/lib/daemon/WebServer_rb.html +9 -3
  337. data/doc/lib/daemon/WelcomePage_rb.html +71 -0
  338. data/doc/lib/deep_copy_rb.html +5 -3
  339. data/doc/lib/reports/CSVFile_rb.html +5 -3
  340. data/doc/lib/reports/CollisionDetector_rb.html +5 -3
  341. data/doc/lib/reports/ColumnTable_rb.html +5 -3
  342. data/doc/lib/reports/GanttChart_rb.html +5 -3
  343. data/doc/lib/reports/GanttContainer_rb.html +5 -3
  344. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
  345. data/doc/lib/reports/GanttHeader_rb.html +5 -3
  346. data/doc/lib/reports/GanttLine_rb.html +5 -3
  347. data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
  348. data/doc/lib/reports/GanttMilestone_rb.html +5 -3
  349. data/doc/lib/reports/GanttRouter_rb.html +5 -3
  350. data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
  351. data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
  352. data/doc/lib/reports/Navigator_rb.html +5 -3
  353. data/doc/lib/reports/NikuReport_rb.html +5 -3
  354. data/doc/lib/reports/ReportBase_rb.html +5 -3
  355. data/doc/lib/reports/ReportContext_rb.html +5 -3
  356. data/doc/lib/reports/ReportTableCell_rb.html +5 -3
  357. data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
  358. data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
  359. data/doc/lib/reports/ReportTableLine_rb.html +5 -3
  360. data/doc/lib/reports/ReportTable_rb.html +5 -3
  361. data/doc/lib/reports/Report_rb.html +5 -3
  362. data/doc/lib/reports/ResourceListRE_rb.html +5 -3
  363. data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
  364. data/doc/lib/reports/TableReport_rb.html +5 -3
  365. data/doc/lib/reports/TaskListRE_rb.html +5 -3
  366. data/doc/lib/reports/TextReport_rb.html +5 -3
  367. data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
  368. data/doc/lib/reports/TjpExportRE_rb.html +5 -3
  369. data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
  370. data/doc/lib/tj3client_rb.html +5 -3
  371. data/doc/lib/tj3d_rb.html +6 -4
  372. data/doc/lib/tj3man_rb.html +5 -3
  373. data/doc/lib/tj3ss_receiver_rb.html +5 -3
  374. data/doc/lib/tj3ss_sender_rb.html +5 -3
  375. data/doc/lib/tj3ts_receiver_rb.html +5 -3
  376. data/doc/lib/tj3ts_sender_rb.html +5 -3
  377. data/doc/lib/tj3ts_summary_rb.html +5 -3
  378. data/examples/tutorial.tjp +13 -5
  379. data/gem_spec.rb +3 -0
  380. data/lib/Account.rb +2 -1
  381. data/lib/AccountScenario.rb +2 -1
  382. data/lib/Allocation.rb +2 -1
  383. data/lib/AppConfig.rb +2 -1
  384. data/lib/AttributeBase.rb +19 -5
  385. data/lib/AttributeDefinition.rb +2 -1
  386. data/lib/Attributes.rb +49 -38
  387. data/lib/BatchProcessor.rb +2 -1
  388. data/lib/Booking.rb +2 -1
  389. data/lib/Charge.rb +2 -1
  390. data/lib/ChargeSet.rb +2 -1
  391. data/lib/DataCache.rb +15 -1
  392. data/lib/FileList.rb +2 -1
  393. data/lib/HTMLDocument.rb +2 -1
  394. data/lib/Interval.rb +2 -1
  395. data/lib/IntervalList.rb +100 -0
  396. data/lib/Journal.rb +8 -2
  397. data/lib/KeywordArray.rb +2 -1
  398. data/lib/KeywordDocumentation.rb +10 -6
  399. data/lib/Limits.rb +2 -1
  400. data/lib/Log.rb +3 -2
  401. data/lib/LogFile.rb +2 -1
  402. data/lib/LogicalExpression.rb +2 -1
  403. data/lib/LogicalFunction.rb +2 -1
  404. data/lib/LogicalOperation.rb +2 -1
  405. data/lib/MacroTable.rb +2 -1
  406. data/lib/MessageHandler.rb +2 -1
  407. data/lib/Project.rb +92 -25
  408. data/lib/ProjectFileParser.rb +7 -2
  409. data/lib/ProjectFileScanner.rb +2 -1
  410. data/lib/PropertyList.rb +2 -1
  411. data/lib/PropertySet.rb +2 -6
  412. data/lib/PropertyTreeNode.rb +22 -44
  413. data/lib/Query.rb +32 -13
  414. data/lib/RTFHandlers.rb +2 -1
  415. data/lib/RTFNavigator.rb +2 -1
  416. data/lib/RTFQuery.rb +3 -2
  417. data/lib/RTFReport.rb +2 -1
  418. data/lib/RTFReportLink.rb +2 -1
  419. data/lib/RTFWithQuerySupport.rb +2 -1
  420. data/lib/RealFormat.rb +2 -1
  421. data/lib/Resource.rb +2 -1
  422. data/lib/ResourceScenario.rb +35 -14
  423. data/lib/RichText.rb +2 -1
  424. data/lib/RichTextDocument.rb +2 -1
  425. data/lib/RichTextElement.rb +2 -1
  426. data/lib/RichTextFunctionExample.rb +2 -1
  427. data/lib/RichTextFunctionHandler.rb +2 -1
  428. data/lib/RichTextParser.rb +2 -1
  429. data/lib/RichTextScanner.rb +2 -1
  430. data/lib/RichTextSnip.rb +2 -1
  431. data/lib/RichTextSyntaxRules.rb +2 -1
  432. data/lib/RuntimeConfig.rb +2 -1
  433. data/lib/Scenario.rb +2 -1
  434. data/lib/ScenarioData.rb +2 -1
  435. data/lib/Scoreboard.rb +27 -8
  436. data/lib/SheetHandlerBase.rb +2 -1
  437. data/lib/SheetReceiver.rb +2 -1
  438. data/lib/SheetSender.rb +2 -1
  439. data/lib/Shift.rb +2 -1
  440. data/lib/ShiftAssignments.rb +2 -1
  441. data/lib/ShiftScenario.rb +2 -1
  442. data/lib/SimpleQueryExpander.rb +2 -1
  443. data/lib/SourceFileInfo.rb +2 -1
  444. data/lib/StatusSheetReceiver.rb +2 -1
  445. data/lib/StatusSheetSender.rb +2 -1
  446. data/lib/SyntaxReference.rb +2 -1
  447. data/lib/TOCEntry.rb +2 -1
  448. data/lib/TableColumnDefinition.rb +9 -2
  449. data/lib/TableOfContents.rb +2 -1
  450. data/lib/Task.rb +2 -1
  451. data/lib/TaskDependency.rb +2 -1
  452. data/lib/TaskJuggler.rb +8 -6
  453. data/lib/TaskScenario.rb +337 -153
  454. data/lib/TextFormatter.rb +3 -2
  455. data/lib/TextParser.rb +7 -2
  456. data/lib/TextParser/Pattern.rb +2 -1
  457. data/lib/TextParser/Rule.rb +2 -1
  458. data/lib/TextParser/StackElement.rb +2 -1
  459. data/lib/TextParser/State.rb +3 -2
  460. data/lib/TextParser/TokenDoc.rb +2 -1
  461. data/lib/TextScanner.rb +12 -5
  462. data/lib/TimeSheetReceiver.rb +2 -1
  463. data/lib/TimeSheetSender.rb +2 -1
  464. data/lib/TimeSheetSummary.rb +3 -2
  465. data/lib/TimeSheets.rb +2 -1
  466. data/lib/Tj3AppBase.rb +6 -5
  467. data/lib/Tj3Config.rb +5 -4
  468. data/lib/Tj3SheetAppBase.rb +2 -1
  469. data/lib/TjException.rb +2 -1
  470. data/lib/TjTime.rb +2 -1
  471. data/lib/TjpExample.rb +2 -1
  472. data/lib/TjpSyntaxRules.rb +264 -65
  473. data/lib/URLParameter.rb +2 -1
  474. data/lib/UTF8String.rb +2 -1
  475. data/lib/UserManual.rb +2 -1
  476. data/lib/VimSyntax.rb +3 -2
  477. data/lib/WorkingHours.rb +2 -1
  478. data/lib/XMLDocument.rb +2 -1
  479. data/lib/XMLElement.rb +2 -1
  480. data/lib/daemon/Daemon.rb +3 -1
  481. data/lib/daemon/ProcessIntercom.rb +3 -1
  482. data/lib/daemon/ProjectBroker.rb +84 -32
  483. data/lib/daemon/ProjectServer.rb +5 -3
  484. data/lib/daemon/ReportServer.rb +8 -5
  485. data/lib/daemon/ReportServlet.rb +166 -0
  486. data/lib/daemon/WebServer.rb +6 -150
  487. data/lib/daemon/WelcomePage.rb +80 -0
  488. data/lib/deep_copy.rb +2 -1
  489. data/lib/reports/CSVFile.rb +2 -1
  490. data/lib/reports/CollisionDetector.rb +2 -1
  491. data/lib/reports/ColumnTable.rb +2 -1
  492. data/lib/reports/GanttChart.rb +2 -1
  493. data/lib/reports/GanttContainer.rb +3 -4
  494. data/lib/reports/GanttHeader.rb +2 -1
  495. data/lib/reports/GanttHeaderScaleItem.rb +2 -1
  496. data/lib/reports/GanttLine.rb +12 -10
  497. data/lib/reports/GanttLoadStack.rb +2 -1
  498. data/lib/reports/GanttMilestone.rb +3 -3
  499. data/lib/reports/GanttRouter.rb +4 -1
  500. data/lib/reports/GanttTaskBar.rb +9 -7
  501. data/lib/reports/HTMLGraphics.rb +2 -1
  502. data/lib/reports/Navigator.rb +2 -1
  503. data/lib/reports/NikuReport.rb +79 -49
  504. data/lib/reports/Report.rb +42 -10
  505. data/lib/reports/ReportBase.rb +2 -1
  506. data/lib/reports/ReportContext.rb +2 -1
  507. data/lib/reports/ReportTable.rb +2 -1
  508. data/lib/reports/ReportTableCell.rb +63 -28
  509. data/lib/reports/ReportTableColumn.rb +2 -1
  510. data/lib/reports/ReportTableLegend.rb +5 -5
  511. data/lib/reports/ReportTableLine.rb +2 -1
  512. data/lib/reports/ResourceListRE.rb +2 -1
  513. data/lib/reports/StatusSheetReport.rb +4 -2
  514. data/lib/reports/TableReport.rb +42 -38
  515. data/lib/reports/TaskListRE.rb +4 -2
  516. data/lib/reports/TextReport.rb +2 -1
  517. data/lib/reports/TimeSheetReport.rb +4 -2
  518. data/lib/reports/TjpExportRE.rb +4 -2
  519. data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
  520. data/lib/tj3client.rb +19 -36
  521. data/lib/tj3d.rb +6 -2
  522. data/lib/tj3man.rb +4 -3
  523. data/lib/tj3ss_receiver.rb +2 -1
  524. data/lib/tj3ss_sender.rb +2 -1
  525. data/lib/tj3ts_receiver.rb +2 -1
  526. data/lib/tj3ts_sender.rb +2 -1
  527. data/lib/tj3ts_summary.rb +2 -1
  528. data/manual/Day_To_Day_Juggling +36 -0
  529. data/manual/How_To_Contribute +9 -4
  530. data/manual/Installation +10 -3
  531. data/manual/TaskJuggler_Internals +0 -2
  532. data/manual/Tutorial +25 -3
  533. data/prj_cfg.rb +4 -2
  534. data/spec/IntervalList_spec.rb +138 -0
  535. data/spec/ProjectBroker_spec.rb +133 -0
  536. data/tasks/changelog.rake +41 -24
  537. data/tasks/csts.rake +1 -0
  538. data/tasks/gem.rake +1 -0
  539. data/tasks/rcov.rake +1 -1
  540. data/tasks/spec.rake +7 -0
  541. data/tasks/test.rake +1 -0
  542. data/test/MessageChecker.rb +2 -1
  543. data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
  544. data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
  545. data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
  546. data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
  547. data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
  548. data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
  549. data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
  550. data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
  551. data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
  552. data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
  553. data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
  554. data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
  555. data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
  556. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
  557. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
  558. data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
  559. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
  560. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
  561. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
  562. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
  563. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
  564. data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
  565. data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
  566. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
  567. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
  568. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
  569. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
  570. data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
  571. data/test/TestSuite/StatusSheets/sender.log +256 -0
  572. data/test/TestSuite/StatusSheets/statussheets.log +9 -0
  573. data/test/TestSuite/StatusSheets/tj3d.log +395 -0
  574. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
  575. data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
  576. data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
  577. data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
  578. data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
  579. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
  580. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
  581. data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
  582. data/test/all.rb +2 -4
  583. data/test/test_BatchProcessor.rb +2 -1
  584. data/test/test_CSV-Reports.rb +34 -23
  585. data/test/test_CSVFile.rb +2 -1
  586. data/test/test_CollisionDetector.rb +3 -2
  587. data/test/test_Journal.rb +2 -1
  588. data/test/test_Limits.rb +2 -1
  589. data/test/test_LogicalExpression.rb +2 -1
  590. data/test/test_MacroTable.rb +2 -1
  591. data/test/test_Project.rb +3 -2
  592. data/test/test_ProjectFileScanner.rb +2 -1
  593. data/test/test_PropertySet.rb +2 -1
  594. data/test/test_Query.rb +2 -1
  595. data/test/test_RealFormat.rb +2 -1
  596. data/test/test_ReportGenerator.rb +2 -1
  597. data/test/test_RichText.rb +2 -1
  598. data/test/test_Scheduler.rb +2 -1
  599. data/test/test_ShiftAssignments.rb +2 -1
  600. data/test/test_SimpleQueryExpander.rb +2 -1
  601. data/test/test_Syntax.rb +2 -1
  602. data/test/test_TextFormatter.rb +3 -2
  603. data/test/test_TjTime.rb +2 -1
  604. data/test/test_TjpExample.rb +2 -1
  605. data/test/test_URLParameter.rb +2 -1
  606. data/test/test_UTF8String.rb +2 -1
  607. data/test/test_WorkingHours.rb +2 -1
  608. data/test/test_deep_copy.rb +2 -1
  609. metadata +74 -20
  610. data/doc/StringIO.html +0 -595
  611. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
  612. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
  613. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
@@ -133,6 +133,8 @@
133
133
 
134
134
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
135
135
 
136
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
137
+
136
138
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
137
139
 
138
140
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -211,6 +213,8 @@
211
213
 
212
214
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
213
215
 
216
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
217
+
214
218
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
215
219
 
216
220
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -243,6 +247,8 @@
243
247
 
244
248
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
245
249
 
250
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
251
+
246
252
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
247
253
 
248
254
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -523,6 +529,8 @@
523
529
 
524
530
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
525
531
 
532
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
533
+
526
534
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
527
535
 
528
536
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -549,8 +557,6 @@
549
557
 
550
558
  <li><a href="../String.html">String</a></li>
551
559
 
552
- <li><a href="../StringIO.html">StringIO</a></li>
553
-
554
560
  </ul>
555
561
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
556
562
  </div>
@@ -694,13 +700,13 @@ footer and a central text with margin elements left and right.
694
700
  <div class="method-source-code"
695
701
  id="new-source">
696
702
  <pre>
697
- <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 24</span>
698
- 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">report</span>)
699
- 25: <span class="ruby-keyword kw">super</span>
700
- 26:
701
- 27: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-ivar">@cWidth</span> = <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">0</span>
702
- 28: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-ivar">@cPadding</span> = <span class="ruby-ivar">@rPadding</span> = <span class="ruby-value">0</span>
703
- 29: <span class="ruby-keyword kw">end</span></pre>
703
+ <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 25</span>
704
+ 25: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">report</span>)
705
+ 26: <span class="ruby-keyword kw">super</span>
706
+ 27:
707
+ 28: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-ivar">@cWidth</span> = <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">0</span>
708
+ 29: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-ivar">@cPadding</span> = <span class="ruby-ivar">@rPadding</span> = <span class="ruby-value">0</span>
709
+ 30: <span class="ruby-keyword kw">end</span></pre>
704
710
  </div>
705
711
 
706
712
  </div>
@@ -737,38 +743,38 @@ footer and a central text with margin elements left and right.
737
743
  <div class="method-source-code"
738
744
  id="generate-ntermediate-ormat-source">
739
745
  <pre>
740
- <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 31</span>
741
- 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateIntermediateFormat</span>
742
- 32: <span class="ruby-keyword kw">super</span>
743
- 33:
744
- 34: <span class="ruby-comment cmt"># A width of 0 means, the columns flexible.</span>
745
- 35: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'center'</span>)
746
- 36: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
747
- 37: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">20</span>
748
- 38: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">60</span>
749
- 39: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-ivar">@cPadding</span> = <span class="ruby-value">2</span>
750
- 40: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
751
- 41: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-value">25</span>
752
- 42: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">75</span>
753
- 43: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-value">2</span>
754
- 44: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
755
- 45: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">75</span>
756
- 46: <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">25</span>
757
- 47: <span class="ruby-ivar">@cPadding</span> = <span class="ruby-value">2</span>
758
- 48: <span class="ruby-keyword kw">else</span>
759
- 49: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">100</span>
760
- 50: <span class="ruby-keyword kw">end</span>
761
- 51: <span class="ruby-keyword kw">else</span>
762
- 52: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
763
- 53: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">50</span>
764
- 54: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-value">2</span>
765
- 55: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
766
- 56: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-value">100</span>
767
- 57: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
768
- 58: <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">100</span>
769
- 59: <span class="ruby-keyword kw">end</span>
770
- 60: <span class="ruby-keyword kw">end</span>
771
- 61: <span class="ruby-keyword kw">end</span></pre>
746
+ <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 32</span>
747
+ 32: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateIntermediateFormat</span>
748
+ 33: <span class="ruby-keyword kw">super</span>
749
+ 34:
750
+ 35: <span class="ruby-comment cmt"># A width of 0 means, the columns flexible.</span>
751
+ 36: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'center'</span>)
752
+ 37: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
753
+ 38: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">20</span>
754
+ 39: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">60</span>
755
+ 40: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-ivar">@cPadding</span> = <span class="ruby-value">2</span>
756
+ 41: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
757
+ 42: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-value">25</span>
758
+ 43: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">75</span>
759
+ 44: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-value">2</span>
760
+ 45: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
761
+ 46: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">75</span>
762
+ 47: <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">25</span>
763
+ 48: <span class="ruby-ivar">@cPadding</span> = <span class="ruby-value">2</span>
764
+ 49: <span class="ruby-keyword kw">else</span>
765
+ 50: <span class="ruby-ivar">@cWidth</span> = <span class="ruby-value">100</span>
766
+ 51: <span class="ruby-keyword kw">end</span>
767
+ 52: <span class="ruby-keyword kw">else</span>
768
+ 53: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
769
+ 54: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">50</span>
770
+ 55: <span class="ruby-ivar">@lPadding</span> = <span class="ruby-value">2</span>
771
+ 56: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
772
+ 57: <span class="ruby-ivar">@lWidth</span> = <span class="ruby-value">100</span>
773
+ 58: <span class="ruby-keyword kw">elsif</span> <span class="ruby-operator">!</span><span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
774
+ 59: <span class="ruby-ivar">@rWidth</span> = <span class="ruby-value">100</span>
775
+ 60: <span class="ruby-keyword kw">end</span>
776
+ 61: <span class="ruby-keyword kw">end</span>
777
+ 62: <span class="ruby-keyword kw">end</span></pre>
772
778
  </div>
773
779
 
774
780
  </div>
@@ -799,13 +805,13 @@ footer and a central text with margin elements left and right.
799
805
  <div class="method-source-code"
800
806
  id="to-csv-source">
801
807
  <pre>
802
- <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 89</span>
803
- 89: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_csv</span>
804
- 90: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'text_report_no_csv'</span>,
805
- 91: <span class="ruby-node">&quot;textreport '#{@report.fullId}' cannot be converted &quot;</span> <span class="ruby-operator">+</span>
806
- 92: <span class="ruby-value str">&quot;into CSV format&quot;</span>)
807
- 93: <span class="ruby-keyword kw">nil</span>
808
- 94: <span class="ruby-keyword kw">end</span></pre>
808
+ <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 90</span>
809
+ 90: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_csv</span>
810
+ 91: <span class="ruby-ivar">@report</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'text_report_no_csv'</span>,
811
+ 92: <span class="ruby-node">&quot;textreport '#{@report.fullId}' cannot be converted &quot;</span> <span class="ruby-operator">+</span>
812
+ 93: <span class="ruby-value str">&quot;into CSV format&quot;</span>)
813
+ 94: <span class="ruby-keyword kw">nil</span>
814
+ 95: <span class="ruby-keyword kw">end</span></pre>
809
815
  </div>
810
816
 
811
817
  </div>
@@ -836,32 +842,32 @@ footer and a central text with margin elements left and right.
836
842
  <div class="method-source-code"
837
843
  id="to-html-source">
838
844
  <pre>
839
- <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 63</span>
840
- 63: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span>
841
- 64: <span class="ruby-identifier">html</span> = []
842
- 65: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rt_to_html</span>(<span class="ruby-value str">'header'</span>)
843
- 66: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'center'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
844
- 67: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">table</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'table'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'tj_text_page'</span>,
845
- 68: <span class="ruby-value str">'cellspacing'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'0'</span>))
846
- 69: <span class="ruby-identifier">table</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">row</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'tr'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'tj_text_row'</span>))
847
- 70: <span class="ruby-node">%( left center right)</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
848
- 71: <span class="ruby-identifier">width</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">i</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'Width'</span>)
849
- 72: <span class="ruby-identifier">padding</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">i</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'Padding'</span>)
850
- 73: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-identifier">i</span>)
851
- 74: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">col</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'td'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;tj_column_#{i}&quot;</span>))
852
- 75: <span class="ruby-identifier">style</span> = <span class="ruby-value str">''</span>
853
- 76: <span class="ruby-identifier">style</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;width:#{width}%; &quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">width</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
854
- 77: <span class="ruby-identifier">style</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;padding-right:#{padding}%; &quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">padding</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
855
- 78: <span class="ruby-identifier">col</span>[<span class="ruby-value str">'style'</span>] = <span class="ruby-identifier">style</span>
856
- 79: <span class="ruby-identifier">col</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rt_to_html</span>(<span class="ruby-identifier">i</span>)
857
- 80: <span class="ruby-keyword kw">end</span>
858
- 81: <span class="ruby-keyword kw">end</span>
859
- 82:
860
- 83: <span class="ruby-keyword kw">end</span>
861
- 84: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rt_to_html</span>(<span class="ruby-value str">'footer'</span>)
862
- 85:
863
- 86: <span class="ruby-identifier">html</span>
864
- 87: <span class="ruby-keyword kw">end</span></pre>
845
+ <span class="ruby-comment cmt"># File lib/reports/TextReport.rb, line 64</span>
846
+ 64: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_html</span>
847
+ 65: <span class="ruby-identifier">html</span> = []
848
+ 66: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rt_to_html</span>(<span class="ruby-value str">'header'</span>)
849
+ 67: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'left'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'center'</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">a</span>(<span class="ruby-value str">'right'</span>)
850
+ 68: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">table</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'table'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'tj_text_page'</span>,
851
+ 69: <span class="ruby-value str">'cellspacing'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'0'</span>))
852
+ 70: <span class="ruby-identifier">table</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">row</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'tr'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-value str">'tj_text_row'</span>))
853
+ 71: <span class="ruby-node">%( left center right)</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
854
+ 72: <span class="ruby-identifier">width</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">i</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'Width'</span>)
855
+ 73: <span class="ruby-identifier">padding</span> = <span class="ruby-identifier">instance_variable_get</span>(<span class="ruby-value str">'@'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">i</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">chr</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'Padding'</span>)
856
+ 74: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">a</span>(<span class="ruby-identifier">i</span>)
857
+ 75: <span class="ruby-identifier">row</span> <span class="ruby-operator">&lt;&lt;</span> (<span class="ruby-identifier">col</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'td'</span>, <span class="ruby-value str">'class'</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-node">&quot;tj_column_#{i}&quot;</span>))
858
+ 76: <span class="ruby-identifier">style</span> = <span class="ruby-value str">''</span>
859
+ 77: <span class="ruby-identifier">style</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;width:#{width}%; &quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">width</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
860
+ 78: <span class="ruby-identifier">style</span> <span class="ruby-operator">+=</span> <span class="ruby-node">&quot;padding-right:#{padding}%; &quot;</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">padding</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
861
+ 79: <span class="ruby-identifier">col</span>[<span class="ruby-value str">'style'</span>] = <span class="ruby-identifier">style</span>
862
+ 80: <span class="ruby-identifier">col</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rt_to_html</span>(<span class="ruby-identifier">i</span>)
863
+ 81: <span class="ruby-keyword kw">end</span>
864
+ 82: <span class="ruby-keyword kw">end</span>
865
+ 83:
866
+ 84: <span class="ruby-keyword kw">end</span>
867
+ 85: <span class="ruby-identifier">html</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">rt_to_html</span>(<span class="ruby-value str">'footer'</span>)
868
+ 86:
869
+ 87: <span class="ruby-identifier">html</span>
870
+ 88: <span class="ruby-keyword kw">end</span></pre>
865
871
  </div>
866
872
 
867
873
  </div>
@@ -172,6 +172,8 @@
172
172
 
173
173
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
174
174
 
175
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
176
+
175
177
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
176
178
 
177
179
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -250,6 +252,8 @@
250
252
 
251
253
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
252
254
 
255
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
256
+
253
257
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
254
258
 
255
259
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -282,6 +286,8 @@
282
286
 
283
287
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
284
288
 
289
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
290
+
285
291
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
286
292
 
287
293
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -562,6 +568,8 @@
562
568
 
563
569
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
564
570
 
571
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
572
+
565
573
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
566
574
 
567
575
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -588,8 +596,6 @@
588
596
 
589
597
  <li><a href="../String.html">String</a></li>
590
598
 
591
- <li><a href="../StringIO.html">StringIO</a></li>
592
-
593
599
  </ul>
594
600
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
595
601
  </div>
@@ -653,46 +659,46 @@ messages.
653
659
  <div class="method-source-code"
654
660
  id="new-source">
655
661
  <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>
662
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 189</span>
663
+ 189: <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>)
664
+ 190: <span class="ruby-ivar">@masterFile</span> = <span class="ruby-identifier">masterFile</span>
665
+ 191: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
666
+ 192: <span class="ruby-comment cmt"># This table contains all macros that may be expanded when found in the</span>
667
+ 193: <span class="ruby-comment cmt"># text.</span>
668
+ 194: <span class="ruby-ivar">@macroTable</span> = <span class="ruby-constant">MacroTable</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">messageHandler</span>)
669
+ 195: <span class="ruby-comment cmt"># The currently processed IO object.</span>
670
+ 196: <span class="ruby-ivar">@cf</span> = <span class="ruby-keyword kw">nil</span>
671
+ 197: <span class="ruby-comment cmt"># This Array stores the currently processed nested files. It's an Array</span>
672
+ 198: <span class="ruby-comment cmt"># of Arrays. The nested Array consists of 2 elements, the IO object and</span>
673
+ 199: <span class="ruby-comment cmt"># the @tokenBuffer.</span>
674
+ 200: <span class="ruby-ivar">@fileStack</span> = []
675
+ 201: <span class="ruby-comment cmt"># This flag is set if we have reached the end of a file. Since we will</span>
676
+ 202: <span class="ruby-comment cmt"># only know when the next new token is requested that the file is really</span>
677
+ 203: <span class="ruby-comment cmt"># done now, we have to use this flag.</span>
678
+ 204: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
679
+ 205: <span class="ruby-comment cmt"># True if the scanner operates on a buffer.</span>
680
+ 206: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>
681
+ 207: <span class="ruby-comment cmt"># A SourceFileInfo of the start of the currently processed token.</span>
682
+ 208: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-keyword kw">nil</span>
683
+ 209: <span class="ruby-comment cmt"># Line number correction for error messages.</span>
684
+ 210: <span class="ruby-ivar">@lineDelta</span> = <span class="ruby-value">0</span>
685
+ 211: <span class="ruby-comment cmt"># Lists of regexps that describe the detectable tokens. The Arrays are</span>
686
+ 212: <span class="ruby-comment cmt"># grouped by mode.</span>
687
+ 213: <span class="ruby-ivar">@patternsByMode</span> = { }
688
+ 214: <span class="ruby-comment cmt"># The currently active scanner mode.</span>
689
+ 215: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-keyword kw">nil</span>
690
+ 216: <span class="ruby-comment cmt"># Points to the currently active pattern set as defined by the mode.</span>
691
+ 217: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-keyword kw">nil</span>
692
+ 218:
693
+ 219: <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>
694
+ 220: <span class="ruby-identifier">type</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">0</span>]
695
+ 221: <span class="ruby-identifier">regExp</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">1</span>]
696
+ 222: <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>
697
+ 223: <span class="ruby-identifier">postProc</span> = <span class="ruby-identifier">pat</span>[<span class="ruby-value">3</span>]
698
+ 224: <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>)
699
+ 225: <span class="ruby-keyword kw">end</span>
700
+ 226: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-identifier">defaultMode</span>
701
+ 227: <span class="ruby-keyword kw">end</span></pre>
696
702
  </div>
697
703
 
698
704
  </div>
@@ -731,10 +737,10 @@ Add a <a href="Macro.html">Macro</a> to the macro translation table.
731
737
  <div class="method-source-code"
732
738
  id="add-acro-source">
733
739
  <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>
740
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 447</span>
741
+ 447: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addMacro</span>(<span class="ruby-identifier">macro</span>)
742
+ 448: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">macro</span>)
743
+ 449: <span class="ruby-keyword kw">end</span></pre>
738
744
  </div>
739
745
 
740
746
  </div>
@@ -775,20 +781,20 @@ href="../String.html">String</a> and returns them again in an Array.
775
781
  <div class="method-source-code"
776
782
  id="add-attern-source">
777
783
  <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>
784
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 237</span>
785
+ 237: <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>)
786
+ 238: <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>)
787
+ 239: <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>
788
+ 240: <span class="ruby-comment cmt"># The pattern is active in multiple modes</span>
789
+ 241: <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>)
790
+ 242: <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> ]
791
+ 243: <span class="ruby-keyword kw">end</span>
792
+ 244: <span class="ruby-keyword kw">else</span>
793
+ 245: <span class="ruby-comment cmt"># The pattern is only active in one specific mode.</span>
794
+ 246: <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>)
795
+ 247: <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> ]
796
+ 248: <span class="ruby-keyword kw">end</span>
797
+ 249: <span class="ruby-keyword kw">end</span></pre>
792
798
  </div>
793
799
 
794
800
  </div>
@@ -821,15 +827,15 @@ Finish processing and reset all data structures.
821
827
  <div class="method-source-code"
822
828
  id="close-source">
823
829
  <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>
830
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 279</span>
831
+ 279: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
832
+ 280: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileNameIsBuffer</span>
833
+ 281: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">&quot;Reading file #{@masterFile}&quot;</span>)
834
+ 282: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
835
+ 283: <span class="ruby-keyword kw">end</span>
836
+ 284: <span class="ruby-ivar">@fileStack</span> = []
837
+ 285: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
838
+ 286: <span class="ruby-keyword kw">end</span></pre>
833
839
  </div>
834
840
 
835
841
  </div>
@@ -862,10 +868,10 @@ Call this function to report any errors related to the parsed input.
862
868
  <div class="method-source-code"
863
869
  id="error-source">
864
870
  <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>
871
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 476</span>
872
+ 476: <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>)
873
+ 477: <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>)
874
+ 478: <span class="ruby-keyword kw">end</span></pre>
869
875
  </div>
870
876
 
871
877
  </div>
@@ -901,21 +907,21 @@ is the macro name, the rest are the parameters.
901
907
  <div class="method-source-code"
902
908
  id="expand-acro-source">
903
909
  <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>)
910
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 460</span>
911
+ 460: <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>)
912
+ 461: <span class="ruby-comment cmt"># Get the expanded macro from the @macroTable.</span>
913
+ 462: <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>)
914
+ 463: <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>
915
+ 464: <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>)
917
916
  465: <span class="ruby-keyword kw">end</span>
918
- 466: <span class="ruby-keyword kw">end</span></pre>
917
+ 466:
918
+ 467: <span class="ruby-comment cmt"># If the expanded macro is empty, we can ignore it.</span>
919
+ 468: <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>
920
+ 469:
921
+ 470: <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>)
922
+ 471: <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>)
923
+ 472: <span class="ruby-keyword kw">end</span>
924
+ 473: <span class="ruby-keyword kw">end</span></pre>
919
925
  </div>
920
926
 
921
927
  </div>
@@ -949,10 +955,10 @@ text buffer, the text will be returned.
949
955
  <div class="method-source-code"
950
956
  id="file-ame-source">
951
957
  <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>
958
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 336</span>
959
+ 336: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fileName</span>
960
+ 337: <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>
961
+ 338: <span class="ruby-keyword kw">end</span></pre>
956
962
  </div>
957
963
 
958
964
  </div>
@@ -969,7 +975,7 @@ text buffer, the text will be returned.
969
975
  <div class="method-heading">
970
976
 
971
977
  <span class="method-name">include</span><span
972
- class="method-args">(includeFileName, sfi)</span>
978
+ class="method-args">(includeFileName, sfi, &block)</span>
973
979
  <span class="method-click-advice">click to toggle source</span>
974
980
 
975
981
  </div>
@@ -988,41 +994,42 @@ qualified name of the included file.
988
994
  <div class="method-source-code"
989
995
  id="include-source">
990
996
  <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>
997
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 292</span>
998
+ 292: <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>, &amp;<span class="ruby-identifier">block</span>)
999
+ 293: <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>
1000
+ 294: <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>
1001
+ 295: <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>
1002
+ 296: <span class="ruby-comment cmt"># If the included file is not an absolute name, we interpret the file</span>
1003
+ 297: <span class="ruby-comment cmt"># name relative to the including file.</span>
1004
+ 298: <span class="ruby-identifier">includeFileName</span> = <span class="ruby-identifier">path</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">includeFileName</span>
1005
+ 299: <span class="ruby-keyword kw">end</span>
1006
+ 300:
1007
+ 301: <span class="ruby-comment cmt"># Try to dectect recursive inclusions. This will not work if files are</span>
1008
+ 302: <span class="ruby-comment cmt"># accessed via filesystem links.</span>
1009
+ 303: <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>
1010
+ 304: <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>
1011
+ 305: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'include_recursion'</span>,
1012
+ 306: <span class="ruby-node">&quot;Recursive inclusion of #{includeFileName} detected&quot;</span>, <span class="ruby-identifier">sfi</span>)
1013
+ 307: <span class="ruby-keyword kw">end</span>
1014
+ 308: <span class="ruby-keyword kw">end</span>
1015
+ 309:
1016
+ 310: <span class="ruby-comment cmt"># Save @tokenBuffer in the record of the parent file.</span>
1017
+ 311: <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>
1018
+ 312: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1019
+ 313: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
1020
+ 314:
1021
+ 315: <span class="ruby-comment cmt"># Open the new file and push the handle on the @fileStack.</span>
1022
+ 316: <span class="ruby-keyword kw">begin</span>
1023
+ 317: <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>)),
1024
+ 318: <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">block</span> ]
1025
+ 319: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Parsing file #{includeFileName}&quot;</span>
1026
+ 320: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
1027
+ 321: <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>)
1028
+ 322: <span class="ruby-keyword kw">end</span>
1029
+ 323:
1030
+ 324: <span class="ruby-comment cmt"># Return the name of the included file.</span>
1031
+ 325: <span class="ruby-identifier">includeFileName</span>
1032
+ 326: <span class="ruby-keyword kw">end</span></pre>
1026
1033
  </div>
1027
1034
 
1028
1035
  </div>
@@ -1056,10 +1063,10 @@ added already.
1056
1063
  <div class="method-source-code"
1057
1064
  id="macro-efined--source">
1058
1065
  <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>
1066
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 452</span>
1067
+ 452: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">macroDefined?</span>(<span class="ruby-identifier">name</span>)
1068
+ 453: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
1069
+ 454: <span class="ruby-keyword kw">end</span></pre>
1063
1070
  </div>
1064
1071
 
1065
1072
  </div>
@@ -1093,13 +1100,13 @@ patterns of that <em>newMode</em>.
1093
1100
  <div class="method-source-code"
1094
1101
  id="mode--source">
1095
1102
  <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>
1103
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 253</span>
1104
+ 253: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mode=</span>(<span class="ruby-identifier">newMode</span>)
1105
+ 254: <span class="ruby-comment cmt">#puts &quot;**** New mode: #{newMode}&quot;</span>
1106
+ 255: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">newMode</span>]
1107
+ 256: <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>
1108
+ 257: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-identifier">newMode</span>
1109
+ 258: <span class="ruby-keyword kw">end</span></pre>
1103
1110
  </div>
1104
1111
 
1105
1112
  </div>
@@ -1135,81 +1142,86 @@ started.
1135
1142
  <div class="method-source-code"
1136
1143
  id="next-oken-source">
1137
1144
  <pre>
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>
1145
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 355</span>
1146
+ 355: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
1147
+ 356: <span class="ruby-comment cmt"># If we have a pushed-back token, return that first.</span>
1148
+ 357: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
1149
+ 358: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@tokenBuffer</span>
1150
+ 359: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1151
+ 360: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span>
1152
+ 361: <span class="ruby-keyword kw">end</span>
1153
+ 362:
1154
+ 363: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@finishLastFile</span>
1155
+ 364: <span class="ruby-comment cmt"># The previously processed file has now really been processed to</span>
1156
+ 365: <span class="ruby-comment cmt"># completion. Close it and remove the corresponding entry from the</span>
1157
+ 366: <span class="ruby-comment cmt"># @fileStack.</span>
1158
+ 367: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
1159
+ 368: <span class="ruby-comment cmt">#Log &lt;&lt; &quot;Completed file #{@cf.fileName}&quot;</span>
1155
1160
  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>
1187
- 401:
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>
1161
+ 370: <span class="ruby-comment cmt"># If we have a block to be executed on EOF, we call it now.</span>
1162
+ 371: <span class="ruby-identifier">onEof</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">2</span>]
1163
+ 372: <span class="ruby-identifier">onEof</span>.<span class="ruby-identifier">call</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">onEof</span>
1164
+ 373:
1165
+ 374: <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>
1166
+ 375: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">pop</span>
1167
+ 376:
1168
+ 377: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
1169
+ 378: <span class="ruby-comment cmt"># We are done with the top-level file now.</span>
1170
+ 379: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1171
+ 380: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
1172
+ 381: <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> ]
1173
+ 382: <span class="ruby-keyword kw">else</span>
1174
+ 383: <span class="ruby-comment cmt"># Continue parsing the file that included the current file.</span>
1175
+ 384: <span class="ruby-ivar">@cf</span>, <span class="ruby-identifier">tokenBuffer</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>
1176
+ 385: <span class="ruby-constant">Log</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-node">&quot;Parsing file #{@cf.fileName} ...&quot;</span>
1177
+ 386: <span class="ruby-comment cmt"># If we have a left over token from previously processing this file,</span>
1178
+ 387: <span class="ruby-comment cmt"># return it now.</span>
1179
+ 388: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tokenBuffer</span>
1180
+ 389: <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>
1181
+ 390: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tokenBuffer</span>
1182
+ 391: <span class="ruby-keyword kw">end</span>
1183
+ 392: <span class="ruby-keyword kw">end</span>
1184
+ 393: <span class="ruby-keyword kw">end</span>
1185
+ 394:
1186
+ 395: <span class="ruby-comment cmt"># Start processing characters from the input.</span>
1187
+ 396: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
1188
+ 397: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1189
+ 398: <span class="ruby-identifier">match</span> = <span class="ruby-keyword kw">nil</span>
1190
+ 399: <span class="ruby-keyword kw">begin</span>
1191
+ 400: <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>
1192
+ 401: <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>))
1193
+ 402: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span> <span class="ruby-operator">==</span> <span class="ruby-value">:scannerEOF</span>
1194
+ 403: <span class="ruby-comment cmt"># We've found the end of an input file. Return a special token</span>
1195
+ 404: <span class="ruby-comment cmt"># that describes the end of a file.</span>
1196
+ 405: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
1197
+ 406: <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> ]
1198
+ 407: <span class="ruby-keyword kw">end</span>
1194
1199
  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>
1200
+ 409: <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>
1201
+ 410: <span class="ruby-comment cmt"># If we have a post processing method, call it now. It may modify</span>
1202
+ 411: <span class="ruby-comment cmt"># the type or the found token String.</span>
1203
+ 412: <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>
1204
+ 413:
1205
+ 414: <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>
1201
1206
  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>
1207
+ 416: <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> ]
1208
+ 417: <span class="ruby-keyword kw">end</span>
1209
+ 418: <span class="ruby-keyword kw">end</span>
1210
+ 419: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">ArgumentError</span>
1211
+ 420: <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>)
1212
+ 421: <span class="ruby-keyword kw">end</span>
1213
+ 422:
1214
+ 423: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">nil?</span>
1215
+ 424: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">eof?</span>
1216
+ 425: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unexpected_eof'</span>,
1217
+ 426: <span class="ruby-value str">&quot;Unexpected end of file found&quot;</span>)
1218
+ 427: <span class="ruby-keyword kw">else</span>
1219
+ 428: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_token_match'</span>,
1220
+ 429: <span class="ruby-node">&quot;Unexpected characters found: '#{@cf.peek(10)}...'&quot;</span>)
1221
+ 430: <span class="ruby-keyword kw">end</span>
1222
+ 431: <span class="ruby-keyword kw">end</span>
1223
+ 432: <span class="ruby-keyword kw">end</span>
1224
+ 433: <span class="ruby-keyword kw">end</span></pre>
1213
1225
  </div>
1214
1226
 
1215
1227
  </div>
@@ -1243,21 +1255,21 @@ Start the processing. if <em>fileNameIsBuffer</em> is true, we operate on a
1243
1255
  <div class="method-source-code"
1244
1256
  id="open-source">
1245
1257
  <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>
1258
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 263</span>
1259
+ 263: <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>)
1260
+ 264: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-identifier">fileNameIsBuffer</span>
1261
+ 265: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fileNameIsBuffer</span>
1262
+ 266: <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>, <span class="ruby-keyword kw">nil</span> ] ]
1263
+ 267: <span class="ruby-keyword kw">else</span>
1264
+ 268: <span class="ruby-keyword kw">begin</span>
1265
+ 269: <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>, <span class="ruby-keyword kw">nil</span> ] ]
1266
+ 270: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
1267
+ 271: <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>)
1268
+ 272: <span class="ruby-keyword kw">end</span>
1269
+ 273: <span class="ruby-keyword kw">end</span>
1270
+ 274: <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>
1271
+ 275: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
1272
+ 276: <span class="ruby-keyword kw">end</span></pre>
1261
1273
  </div>
1262
1274
 
1263
1275
  </div>
@@ -1291,15 +1303,15 @@ token can be returned before the next nextToken() call.
1291
1303
  <div class="method-source-code"
1292
1304
  id="return-oken-source">
1293
1305
  <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>
1306
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 437</span>
1307
+ 437: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
1308
+ 438: <span class="ruby-comment cmt">#Log &lt;&lt; &quot;-&gt; Returning Token: [#{token[0]}][#{token[1]}]&quot;</span>
1309
+ 439: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
1310
+ 440: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@tokenBuffer</span>
1311
+ 441: <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>
1312
+ 442: <span class="ruby-keyword kw">end</span>
1313
+ 443: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-identifier">token</span>
1314
+ 444: <span class="ruby-keyword kw">end</span></pre>
1303
1315
  </div>
1304
1316
 
1305
1317
  </div>
@@ -1333,11 +1345,11 @@ processing prosition.
1333
1345
  <div class="method-source-code"
1334
1346
  id="source-ile-nfo-source">
1335
1347
  <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>
1348
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 329</span>
1349
+ 329: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sourceFileInfo</span>
1350
+ 330: <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>
1351
+ 331: <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>)
1352
+ 332: <span class="ruby-keyword kw">end</span></pre>
1341
1353
  </div>
1342
1354
 
1343
1355
  </div>
@@ -1368,10 +1380,10 @@ processing prosition.
1368
1380
  <div class="method-source-code"
1369
1381
  id="warning-source">
1370
1382
  <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>
1383
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 480</span>
1384
+ 480: <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>)
1385
+ 481: <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>)
1386
+ 482: <span class="ruby-keyword kw">end</span></pre>
1375
1387
  </div>
1376
1388
 
1377
1389
  </div>
@@ -1408,35 +1420,35 @@ processing prosition.
1408
1420
  <div class="method-source-code"
1409
1421
  id="message-source">
1410
1422
  <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>
1423
+ <span class="ruby-comment cmt"># File lib/TextScanner.rb, line 486</span>
1424
+ 486: <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>)
1425
+ 487: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
1426
+ 488: <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>
1427
+ 489: <span class="ruby-identifier">sfi</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">sourceFileInfo</span>
1428
+ 490:
1429
+ 491: <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>
1430
+ 492: <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>)
1431
+ 493:
1432
+ 494: <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>
1433
+ 495: <span class="ruby-identifier">macro</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">macro</span>
1434
+ 496: <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>]
1435
+ 497: <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> }
1436
+ 498: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">info</span>(<span class="ruby-value str">'macro_stack'</span>,
1437
+ 499: <span class="ruby-node">&quot; ${#{macro.name} #{args.join(' ')}}&quot;</span>,
1438
+ 500: <span class="ruby-identifier">macro</span>.<span class="ruby-identifier">sourceFileInfo</span>)
1439
+ 501: <span class="ruby-keyword kw">end</span>
1440
+ 502: <span class="ruby-keyword kw">end</span>
1441
+ 503:
1442
+ 504: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
1443
+ 505: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:error</span>
1444
+ 506: <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>)
1445
+ 507: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:warning</span>
1446
+ 508: <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>)
1447
+ 509: <span class="ruby-keyword kw">else</span>
1448
+ 510: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Unknown message type #{type}&quot;</span>
1449
+ 511: <span class="ruby-keyword kw">end</span>
1450
+ 512: <span class="ruby-keyword kw">end</span>
1451
+ 513: <span class="ruby-keyword kw">end</span></pre>
1440
1452
  </div>
1441
1453
 
1442
1454
  </div>