taskjuggler 0.0.6 → 0.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (545) hide show
  1. data/CHANGELOG +160 -0
  2. data/benchmarks/UTF-8-Strings.rb +58 -0
  3. data/data/css/tjreport.css +7 -2
  4. data/doc/AppConfig.html +10 -4
  5. data/doc/Arguments.html +10 -4
  6. data/doc/CHANGELOG.html +171 -5
  7. data/doc/COPYING.html +10 -4
  8. data/doc/Object.html +11 -107
  9. data/doc/README.html +10 -4
  10. data/doc/RuntimeConfig.html +10 -4
  11. data/doc/String.html +16 -11
  12. data/doc/StringIO.html +10 -4
  13. data/doc/TaskJuggler.html +506 -435
  14. data/doc/TaskJuggler/Account.html +10 -4
  15. data/doc/TaskJuggler/AccountAttribute.html +10 -4
  16. data/doc/TaskJuggler/AccountScenario.html +10 -4
  17. data/doc/TaskJuggler/Allocation.html +69 -60
  18. data/doc/TaskJuggler/AllocationAttribute.html +10 -4
  19. data/doc/TaskJuggler/AttributeBase.html +10 -4
  20. data/doc/TaskJuggler/AttributeDefinition.html +10 -4
  21. data/doc/TaskJuggler/BatchProcessor.html +202 -192
  22. data/doc/TaskJuggler/Booking.html +10 -4
  23. data/doc/TaskJuggler/BookingListAttribute.html +10 -4
  24. data/doc/TaskJuggler/BooleanAttribute.html +10 -4
  25. data/doc/TaskJuggler/CSVFile.html +10 -4
  26. data/doc/TaskJuggler/CellSettingPattern.html +10 -4
  27. data/doc/TaskJuggler/CellSettingPatternList.html +10 -4
  28. data/doc/TaskJuggler/Charge.html +10 -4
  29. data/doc/TaskJuggler/ChargeListAttribute.html +10 -4
  30. data/doc/TaskJuggler/ChargeSet.html +10 -4
  31. data/doc/TaskJuggler/ChargeSetListAttribute.html +10 -4
  32. data/doc/TaskJuggler/ColumnListAttribute.html +10 -4
  33. data/doc/TaskJuggler/ColumnTable.html +10 -4
  34. data/doc/TaskJuggler/Daemon.html +71 -52
  35. data/doc/TaskJuggler/DateAttribute.html +10 -4
  36. data/doc/TaskJuggler/DefinitionListAttribute.html +10 -4
  37. data/doc/TaskJuggler/DependencyListAttribute.html +10 -4
  38. data/doc/TaskJuggler/DurationAttribute.html +10 -4
  39. data/doc/TaskJuggler/{MacroParser.html → FileList.html} +58 -173
  40. data/doc/TaskJuggler/{RichTextException.html → FileRecord.html} +59 -80
  41. data/doc/TaskJuggler/FixnumAttribute.html +10 -4
  42. data/doc/TaskJuggler/FlagListAttribute.html +10 -4
  43. data/doc/TaskJuggler/FloatAttribute.html +10 -4
  44. data/doc/TaskJuggler/FormatListAttribute.html +10 -4
  45. data/doc/TaskJuggler/GanttChart.html +10 -4
  46. data/doc/TaskJuggler/GanttContainer.html +14 -8
  47. data/doc/TaskJuggler/GanttHeader.html +10 -4
  48. data/doc/TaskJuggler/GanttHeaderScaleItem.html +10 -4
  49. data/doc/TaskJuggler/GanttLine.html +29 -24
  50. data/doc/TaskJuggler/GanttLoadStack.html +10 -4
  51. data/doc/TaskJuggler/GanttMilestone.html +10 -4
  52. data/doc/TaskJuggler/GanttRouter.html +10 -4
  53. data/doc/TaskJuggler/GanttTaskBar.html +20 -10
  54. data/doc/TaskJuggler/HTMLDocument.html +10 -4
  55. data/doc/TaskJuggler/HTMLGraphics.html +10 -4
  56. data/doc/TaskJuggler/Interval.html +10 -4
  57. data/doc/TaskJuggler/IntervalListAttribute.html +10 -4
  58. data/doc/TaskJuggler/JobInfo.html +10 -4
  59. data/doc/TaskJuggler/Journal.html +227 -160
  60. data/doc/TaskJuggler/JournalEntry.html +10 -4
  61. data/doc/TaskJuggler/JournalEntryList.html +158 -72
  62. data/doc/TaskJuggler/KeywordArray.html +21 -9
  63. data/doc/TaskJuggler/KeywordDocumentation.html +612 -475
  64. data/doc/TaskJuggler/Limits.html +13 -8
  65. data/doc/TaskJuggler/Limits/Limit.html +10 -4
  66. data/doc/TaskJuggler/LimitsAttribute.html +10 -4
  67. data/doc/TaskJuggler/ListAttributeBase.html +10 -4
  68. data/doc/TaskJuggler/Log.html +10 -4
  69. data/doc/TaskJuggler/LogFile.html +10 -4
  70. data/doc/TaskJuggler/LogicalAttribute.html +10 -4
  71. data/doc/TaskJuggler/LogicalExpression.html +11 -5
  72. data/doc/TaskJuggler/LogicalExpressionAttribute.html +10 -4
  73. data/doc/TaskJuggler/LogicalFlag.html +10 -4
  74. data/doc/TaskJuggler/LogicalFunction.html +132 -124
  75. data/doc/TaskJuggler/LogicalOperation.html +10 -4
  76. data/doc/TaskJuggler/Macro.html +16 -10
  77. data/doc/TaskJuggler/MacroTable.html +44 -38
  78. data/doc/TaskJuggler/ManagerResponsibilities.html +10 -4
  79. data/doc/TaskJuggler/ManagerStatusRecord.html +10 -4
  80. data/doc/TaskJuggler/Message.html +92 -68
  81. data/doc/TaskJuggler/MessageHandler.html +349 -28
  82. data/doc/TaskJuggler/Navigator.html +10 -4
  83. data/doc/TaskJuggler/NavigatorElement.html +10 -4
  84. data/doc/TaskJuggler/NikuProject.html +10 -4
  85. data/doc/TaskJuggler/NikuReport.html +10 -4
  86. data/doc/TaskJuggler/NikuResource.html +10 -4
  87. data/doc/TaskJuggler/NodeListAttribute.html +10 -4
  88. data/doc/TaskJuggler/OnShiftCache.html +10 -4
  89. data/doc/TaskJuggler/ProcessIntercom.html +118 -111
  90. data/doc/TaskJuggler/ProcessIntercomIface.html +75 -22
  91. data/doc/TaskJuggler/Project.html +886 -913
  92. data/doc/TaskJuggler/ProjectBroker.html +442 -331
  93. data/doc/TaskJuggler/ProjectBrokerIface.html +95 -38
  94. data/doc/TaskJuggler/ProjectFileParser.html +320 -317
  95. data/doc/TaskJuggler/ProjectFileScanner.html +336 -339
  96. data/doc/TaskJuggler/ProjectRecord.html +119 -56
  97. data/doc/TaskJuggler/ProjectServer.html +282 -237
  98. data/doc/TaskJuggler/ProjectServerIface.html +45 -39
  99. data/doc/TaskJuggler/PropertyAttribute.html +10 -4
  100. data/doc/TaskJuggler/PropertyList.html +177 -173
  101. data/doc/TaskJuggler/PropertySet.html +11 -5
  102. data/doc/TaskJuggler/PropertyTreeNode.html +194 -191
  103. data/doc/TaskJuggler/Query.html +280 -256
  104. data/doc/TaskJuggler/RTFHandlers.html +10 -4
  105. data/doc/TaskJuggler/RTFNavigator.html +33 -26
  106. data/doc/TaskJuggler/RTFQuery.html +135 -169
  107. data/doc/TaskJuggler/RTFReport.html +63 -56
  108. data/doc/TaskJuggler/RTFReportLink.html +58 -47
  109. data/doc/TaskJuggler/RTFWithQuerySupport.html +666 -0
  110. data/doc/TaskJuggler/RealFormat.html +10 -4
  111. data/doc/TaskJuggler/RealFormatAttribute.html +10 -4
  112. data/doc/TaskJuggler/ReferenceAttribute.html +10 -4
  113. data/doc/TaskJuggler/Report.html +333 -290
  114. data/doc/TaskJuggler/ReportBase.html +182 -174
  115. data/doc/TaskJuggler/ReportContext.html +10 -4
  116. data/doc/TaskJuggler/ReportServer.html +144 -126
  117. data/doc/TaskJuggler/ReportServerIface.html +50 -44
  118. data/doc/TaskJuggler/ReportServerRecord.html +38 -32
  119. data/doc/TaskJuggler/ReportServlet.html +144 -137
  120. data/doc/TaskJuggler/ReportTable.html +10 -4
  121. data/doc/TaskJuggler/ReportTableCell.html +169 -164
  122. data/doc/TaskJuggler/ReportTableColumn.html +10 -4
  123. data/doc/TaskJuggler/ReportTableLegend.html +10 -4
  124. data/doc/TaskJuggler/ReportTableLine.html +10 -4
  125. data/doc/TaskJuggler/Resource.html +121 -115
  126. data/doc/TaskJuggler/ResourceListAttribute.html +10 -4
  127. data/doc/TaskJuggler/ResourceListRE.html +10 -4
  128. data/doc/TaskJuggler/ResourceScenario.html +13 -7
  129. data/doc/TaskJuggler/RichText.html +61 -37
  130. data/doc/TaskJuggler/RichTextAttribute.html +10 -4
  131. data/doc/TaskJuggler/RichTextDocument.html +91 -81
  132. data/doc/TaskJuggler/RichTextElement.html +378 -317
  133. data/doc/TaskJuggler/RichTextFunctionExample.html +10 -4
  134. data/doc/TaskJuggler/RichTextFunctionHandler.html +16 -11
  135. data/doc/TaskJuggler/RichTextImage.html +10 -4
  136. data/doc/TaskJuggler/RichTextIntermediate.html +138 -70
  137. data/doc/TaskJuggler/RichTextParser.html +48 -40
  138. data/doc/TaskJuggler/RichTextScanner.html +328 -906
  139. data/doc/TaskJuggler/RichTextSnip.html +59 -57
  140. data/doc/TaskJuggler/RichTextSyntaxRules.html +458 -369
  141. data/doc/TaskJuggler/Scenario.html +10 -4
  142. data/doc/TaskJuggler/ScenarioData.html +33 -30
  143. data/doc/TaskJuggler/ScenarioListAttribute.html +10 -4
  144. data/doc/TaskJuggler/Scoreboard.html +10 -4
  145. data/doc/TaskJuggler/SheetHandlerBase.html +315 -191
  146. data/doc/TaskJuggler/SheetReceiver.html +334 -313
  147. data/doc/TaskJuggler/SheetSender.html +10 -4
  148. data/doc/TaskJuggler/Shift.html +10 -4
  149. data/doc/TaskJuggler/ShiftAssignment.html +10 -4
  150. data/doc/TaskJuggler/ShiftAssignments.html +10 -4
  151. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +10 -4
  152. data/doc/TaskJuggler/ShiftScenario.html +10 -4
  153. data/doc/TaskJuggler/SimpleQueryExpander.html +697 -0
  154. data/doc/TaskJuggler/SortListAttribute.html +10 -4
  155. data/doc/TaskJuggler/SourceFileInfo.html +10 -4
  156. data/doc/TaskJuggler/StatusSheetReceiver.html +10 -4
  157. data/doc/TaskJuggler/StatusSheetReport.html +10 -4
  158. data/doc/TaskJuggler/StatusSheetSender.html +10 -4
  159. data/doc/TaskJuggler/StringAttribute.html +10 -4
  160. data/doc/TaskJuggler/SymbolAttribute.html +10 -4
  161. data/doc/TaskJuggler/SyntaxReference.html +260 -230
  162. data/doc/TaskJuggler/TOCEntry.html +99 -42
  163. data/doc/TaskJuggler/TSResourceRecord.html +10 -4
  164. data/doc/TaskJuggler/TSTaskRecord.html +10 -4
  165. data/doc/TaskJuggler/TableColumnDefinition.html +10 -4
  166. data/doc/TaskJuggler/TableOfContents.html +54 -12
  167. data/doc/TaskJuggler/TableReport.html +877 -872
  168. data/doc/TaskJuggler/Task.html +117 -68
  169. data/doc/TaskJuggler/TaskDependency.html +10 -4
  170. data/doc/TaskJuggler/TaskListAttribute.html +10 -4
  171. data/doc/TaskJuggler/TaskListRE.html +10 -4
  172. data/doc/TaskJuggler/TaskScenario.html +1681 -1563
  173. data/doc/TaskJuggler/TextFormatter.html +10 -4
  174. data/doc/TaskJuggler/TextParser.html +567 -534
  175. data/doc/TaskJuggler/TextParser/Pattern.html +128 -118
  176. data/doc/TaskJuggler/TextParser/Rule.html +26 -15
  177. data/doc/TaskJuggler/TextParser/StackElement.html +10 -4
  178. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +22 -16
  179. data/doc/TaskJuggler/TextParser/TokenDoc.html +10 -4
  180. data/doc/TaskJuggler/TextReport.html +15 -6
  181. data/doc/TaskJuggler/TextScanner.html +319 -287
  182. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +16 -10
  183. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +23 -17
  184. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +17 -11
  185. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  186. data/doc/TaskJuggler/TimeSheet.html +138 -175
  187. data/doc/TaskJuggler/TimeSheetReceiver.html +10 -4
  188. data/doc/TaskJuggler/TimeSheetRecord.html +65 -58
  189. data/doc/TaskJuggler/TimeSheetReport.html +47 -42
  190. data/doc/TaskJuggler/TimeSheetSender.html +10 -4
  191. data/doc/TaskJuggler/TimeSheetSummary.html +91 -83
  192. data/doc/TaskJuggler/TimeSheets.html +22 -16
  193. data/doc/TaskJuggler/Tj3AppBase.html +10 -4
  194. data/doc/TaskJuggler/Tj3Client.html +399 -365
  195. data/doc/TaskJuggler/Tj3Daemon.html +107 -94
  196. data/doc/TaskJuggler/Tj3SheetAppBase.html +10 -4
  197. data/doc/TaskJuggler/Tj3SsReceiver.html +10 -4
  198. data/doc/TaskJuggler/Tj3SsSender.html +10 -4
  199. data/doc/TaskJuggler/Tj3TsReceiver.html +10 -4
  200. data/doc/TaskJuggler/Tj3TsSender.html +10 -4
  201. data/doc/TaskJuggler/Tj3TsSummary.html +10 -4
  202. data/doc/TaskJuggler/TjException.html +10 -4
  203. data/doc/TaskJuggler/TjTime.html +145 -140
  204. data/doc/TaskJuggler/TjpExample.html +10 -4
  205. data/doc/TaskJuggler/TjpExportRE.html +122 -118
  206. data/doc/TaskJuggler/TjpSyntaxRules.html +4065 -4052
  207. data/doc/TaskJuggler/URLParameter.html +10 -4
  208. data/doc/TaskJuggler/UserManual.html +162 -155
  209. data/doc/TaskJuggler/VimSyntax.html +1028 -0
  210. data/doc/TaskJuggler/WebServer.html +45 -27
  211. data/doc/TaskJuggler/WorkingHours.html +10 -4
  212. data/doc/TaskJuggler/WorkingHoursAttribute.html +10 -4
  213. data/doc/TaskJuggler/XMLBlob.html +10 -4
  214. data/doc/TaskJuggler/XMLComment.html +10 -4
  215. data/doc/TaskJuggler/XMLDocument.html +10 -4
  216. data/doc/TaskJuggler/XMLElement.html +10 -4
  217. data/doc/TaskJuggler/XMLNamedText.html +10 -4
  218. data/doc/TaskJuggler/XMLText.html +10 -4
  219. data/doc/index.html +735 -677
  220. data/doc/lib/AccountScenario_rb.html +1 -1
  221. data/doc/lib/Account_rb.html +1 -1
  222. data/doc/lib/Allocation_rb.html +1 -1
  223. data/doc/lib/AppConfig_rb.html +1 -1
  224. data/doc/lib/AttributeBase_rb.html +1 -1
  225. data/doc/lib/AttributeDefinition_rb.html +1 -1
  226. data/doc/lib/Attributes_rb.html +1 -1
  227. data/doc/lib/BatchProcessor_rb.html +1 -1
  228. data/doc/lib/Booking_rb.html +1 -1
  229. data/doc/lib/ChargeSet_rb.html +1 -1
  230. data/doc/lib/Charge_rb.html +1 -1
  231. data/doc/lib/{Message_rb.html → FileList_rb.html} +3 -5
  232. data/doc/lib/HTMLDocument_rb.html +1 -1
  233. data/doc/lib/Interval_rb.html +1 -1
  234. data/doc/lib/Journal_rb.html +1 -1
  235. data/doc/lib/KeywordArray_rb.html +1 -1
  236. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  237. data/doc/lib/Limits_rb.html +1 -1
  238. data/doc/lib/LogFile_rb.html +1 -1
  239. data/doc/lib/Log_rb.html +1 -1
  240. data/doc/lib/LogicalExpression_rb.html +1 -1
  241. data/doc/lib/LogicalFunction_rb.html +1 -1
  242. data/doc/lib/LogicalOperation_rb.html +1 -1
  243. data/doc/lib/MacroTable_rb.html +1 -3
  244. data/doc/lib/MessageHandler_rb.html +1 -1
  245. data/doc/lib/ProjectFileParser_rb.html +1 -1
  246. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  247. data/doc/lib/Project_rb.html +4 -2
  248. data/doc/lib/PropertyList_rb.html +1 -1
  249. data/doc/lib/PropertySet_rb.html +1 -1
  250. data/doc/lib/PropertyTreeNode_rb.html +1 -1
  251. data/doc/lib/Query_rb.html +1 -1
  252. data/doc/lib/RTFHandlers_rb.html +1 -1
  253. data/doc/lib/RTFNavigator_rb.html +1 -1
  254. data/doc/lib/RTFQuery_rb.html +2 -2
  255. data/doc/lib/RTFReportLink_rb.html +4 -2
  256. data/doc/lib/RTFReport_rb.html +1 -1
  257. data/doc/lib/{MacroParser_rb.html → RTFWithQuerySupport_rb.html} +4 -6
  258. data/doc/lib/RealFormat_rb.html +1 -1
  259. data/doc/lib/ResourceScenario_rb.html +1 -1
  260. data/doc/lib/Resource_rb.html +1 -1
  261. data/doc/lib/RichTextDocument_rb.html +1 -1
  262. data/doc/lib/RichTextElement_rb.html +1 -1
  263. data/doc/lib/RichTextFunctionExample_rb.html +1 -1
  264. data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
  265. data/doc/lib/RichTextParser_rb.html +1 -1
  266. data/doc/lib/RichTextScanner_rb.html +3 -1
  267. data/doc/lib/RichTextSnip_rb.html +1 -1
  268. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  269. data/doc/lib/RichText_rb.html +3 -1
  270. data/doc/lib/RuntimeConfig_rb.html +1 -1
  271. data/doc/lib/ScenarioData_rb.html +2 -2
  272. data/doc/lib/Scenario_rb.html +1 -1
  273. data/doc/lib/Scoreboard_rb.html +1 -1
  274. data/doc/lib/SheetHandlerBase_rb.html +5 -1
  275. data/doc/lib/SheetReceiver_rb.html +3 -1
  276. data/doc/lib/SheetSender_rb.html +1 -1
  277. data/doc/lib/ShiftAssignments_rb.html +1 -1
  278. data/doc/lib/ShiftScenario_rb.html +1 -1
  279. data/doc/lib/Shift_rb.html +1 -1
  280. data/doc/lib/SimpleQueryExpander_rb.html +67 -0
  281. data/doc/lib/SourceFileInfo_rb.html +1 -1
  282. data/doc/lib/StatusSheetReceiver_rb.html +1 -1
  283. data/doc/lib/StatusSheetSender_rb.html +1 -1
  284. data/doc/lib/SyntaxReference_rb.html +1 -1
  285. data/doc/lib/TOCEntry_rb.html +1 -1
  286. data/doc/lib/TableColumnDefinition_rb.html +1 -1
  287. data/doc/lib/TableOfContents_rb.html +1 -1
  288. data/doc/lib/TaskDependency_rb.html +1 -1
  289. data/doc/lib/TaskJuggler_rb.html +1 -1
  290. data/doc/lib/TaskScenario_rb.html +1 -1
  291. data/doc/lib/Task_rb.html +1 -1
  292. data/doc/lib/TextFormatter_rb.html +1 -1
  293. data/doc/lib/TextParser/Pattern_rb.html +1 -1
  294. data/doc/lib/TextParser/Rule_rb.html +1 -1
  295. data/doc/lib/TextParser/StackElement_rb.html +1 -1
  296. data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
  297. data/doc/lib/TextParser_rb.html +3 -1
  298. data/doc/lib/TextScanner_rb.html +1 -3
  299. data/doc/lib/TimeSheetReceiver_rb.html +1 -1
  300. data/doc/lib/TimeSheetSender_rb.html +1 -1
  301. data/doc/lib/TimeSheetSummary_rb.html +1 -1
  302. data/doc/lib/TimeSheets_rb.html +1 -1
  303. data/doc/lib/Tj3AppBase_rb.html +1 -1
  304. data/doc/lib/Tj3Config_rb.html +1 -1
  305. data/doc/lib/Tj3SheetAppBase_rb.html +1 -1
  306. data/doc/lib/TjException_rb.html +1 -1
  307. data/doc/lib/TjTime_rb.html +1 -1
  308. data/doc/lib/TjpExample_rb.html +1 -1
  309. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  310. data/doc/lib/URLParameter_rb.html +1 -1
  311. data/doc/lib/UTF8String_rb.html +1 -1
  312. data/doc/lib/UserManual_rb.html +1 -1
  313. data/doc/lib/{ruby-signal-bug_rb.html → VimSyntax_rb.html} +17 -4
  314. data/doc/lib/WorkingHours_rb.html +1 -1
  315. data/doc/lib/XMLDocument_rb.html +1 -1
  316. data/doc/lib/XMLElement_rb.html +1 -1
  317. data/doc/lib/daemon/Daemon_rb.html +1 -1
  318. data/doc/lib/daemon/ProcessIntercom_rb.html +1 -1
  319. data/doc/lib/daemon/ProjectBroker_rb.html +1 -1
  320. data/doc/lib/daemon/ProjectServer_rb.html +1 -1
  321. data/doc/lib/daemon/ReportServer_rb.html +1 -3
  322. data/doc/lib/daemon/WebServer_rb.html +1 -1
  323. data/doc/lib/deep_copy_rb.html +1 -1
  324. data/doc/lib/reports/CSVFile_rb.html +1 -1
  325. data/doc/lib/reports/ColumnTable_rb.html +1 -1
  326. data/doc/lib/reports/GanttChart_rb.html +1 -1
  327. data/doc/lib/reports/GanttContainer_rb.html +1 -1
  328. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
  329. data/doc/lib/reports/GanttHeader_rb.html +1 -1
  330. data/doc/lib/reports/GanttLine_rb.html +1 -1
  331. data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
  332. data/doc/lib/reports/GanttMilestone_rb.html +1 -1
  333. data/doc/lib/reports/GanttRouter_rb.html +1 -1
  334. data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
  335. data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
  336. data/doc/lib/reports/Navigator_rb.html +1 -1
  337. data/doc/lib/reports/NikuReport_rb.html +1 -1
  338. data/doc/lib/reports/ReportBase_rb.html +1 -1
  339. data/doc/lib/reports/ReportContext_rb.html +1 -1
  340. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  341. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  342. data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
  343. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  344. data/doc/lib/reports/ReportTable_rb.html +1 -1
  345. data/doc/lib/reports/Report_rb.html +1 -1
  346. data/doc/lib/reports/ResourceListRE_rb.html +1 -1
  347. data/doc/lib/reports/StatusSheetReport_rb.html +1 -1
  348. data/doc/lib/reports/TableReport_rb.html +1 -1
  349. data/doc/lib/reports/TaskListRE_rb.html +1 -1
  350. data/doc/lib/reports/TextReport_rb.html +1 -1
  351. data/doc/lib/reports/TimeSheetReport_rb.html +1 -1
  352. data/doc/lib/reports/TjpExportRE_rb.html +1 -1
  353. data/doc/lib/taskjuggler3_rb.html +1 -1
  354. data/doc/lib/tj3client_rb.html +1 -1
  355. data/doc/lib/tj3d_rb.html +1 -1
  356. data/doc/lib/tj3man_rb.html +1 -1
  357. data/doc/lib/tj3ss_receiver_rb.html +1 -1
  358. data/doc/lib/tj3ss_sender_rb.html +1 -1
  359. data/doc/lib/tj3ts_receiver_rb.html +1 -1
  360. data/doc/lib/tj3ts_sender_rb.html +1 -1
  361. data/doc/lib/tj3ts_summary_rb.html +1 -1
  362. data/lib/Allocation.rb +8 -5
  363. data/lib/BatchProcessor.rb +7 -3
  364. data/lib/FileList.rb +58 -0
  365. data/lib/Journal.rb +73 -33
  366. data/lib/KeywordArray.rb +4 -0
  367. data/lib/KeywordDocumentation.rb +45 -11
  368. data/lib/Limits.rb +0 -1
  369. data/lib/LogicalExpression.rb +1 -1
  370. data/lib/LogicalFunction.rb +14 -12
  371. data/lib/MacroTable.rb +3 -4
  372. data/lib/MessageHandler.rb +136 -7
  373. data/lib/Project.rb +72 -86
  374. data/lib/ProjectFileParser.rb +30 -33
  375. data/lib/ProjectFileScanner.rb +7 -16
  376. data/lib/PropertyList.rb +25 -27
  377. data/lib/PropertySet.rb +1 -1
  378. data/lib/PropertyTreeNode.rb +9 -12
  379. data/lib/Query.rb +5 -4
  380. data/lib/RTFNavigator.rb +2 -1
  381. data/lib/RTFQuery.rb +4 -11
  382. data/lib/RTFReport.rb +2 -1
  383. data/lib/RTFReportLink.rb +10 -4
  384. data/lib/RTFWithQuerySupport.rb +45 -0
  385. data/lib/Resource.rb +20 -20
  386. data/lib/ResourceScenario.rb +3 -3
  387. data/lib/RichText.rb +15 -7
  388. data/lib/RichTextDocument.rb +8 -4
  389. data/lib/RichTextElement.rb +35 -12
  390. data/lib/RichTextFunctionHandler.rb +11 -12
  391. data/lib/RichTextParser.rb +5 -3
  392. data/lib/RichTextScanner.rb +144 -565
  393. data/lib/RichTextSnip.rb +3 -7
  394. data/lib/RichTextSyntaxRules.rb +51 -32
  395. data/lib/ScenarioData.rb +16 -25
  396. data/lib/SheetHandlerBase.rb +59 -2
  397. data/lib/SheetReceiver.rb +36 -18
  398. data/lib/SimpleQueryExpander.rb +58 -0
  399. data/lib/SyntaxReference.rb +9 -5
  400. data/lib/TOCEntry.rb +2 -0
  401. data/lib/TableOfContents.rb +4 -0
  402. data/lib/Task.rb +23 -12
  403. data/lib/TaskJuggler.rb +72 -33
  404. data/lib/TaskScenario.rb +131 -53
  405. data/lib/TextParser.rb +43 -30
  406. data/lib/TextParser/Pattern.rb +17 -13
  407. data/lib/TextParser/Rule.rb +5 -0
  408. data/lib/TextScanner.rb +46 -25
  409. data/lib/TimeSheetSummary.rb +9 -7
  410. data/lib/TimeSheets.rb +14 -23
  411. data/lib/Tj3Config.rb +1 -1
  412. data/lib/TjTime.rb +1 -2
  413. data/lib/TjpSyntaxRules.rb +128 -104
  414. data/lib/UTF8String.rb +0 -1
  415. data/lib/UserManual.rb +5 -4
  416. data/lib/VimSyntax.rb +223 -0
  417. data/lib/daemon/Daemon.rb +9 -0
  418. data/lib/daemon/ProcessIntercom.rb +19 -4
  419. data/lib/daemon/ProjectBroker.rb +149 -68
  420. data/lib/daemon/ProjectServer.rb +119 -79
  421. data/lib/daemon/ReportServer.rb +42 -31
  422. data/lib/daemon/WebServer.rb +21 -2
  423. data/lib/deep_copy.rb +1 -1
  424. data/lib/reports/GanttContainer.rb +2 -2
  425. data/lib/reports/GanttLine.rb +2 -3
  426. data/lib/reports/GanttTaskBar.rb +7 -3
  427. data/lib/reports/Report.rb +62 -57
  428. data/lib/reports/ReportBase.rb +6 -4
  429. data/lib/reports/ReportTableCell.rb +13 -14
  430. data/lib/reports/TableReport.rb +2 -1
  431. data/lib/reports/TextReport.rb +3 -0
  432. data/lib/reports/TimeSheetReport.rb +2 -3
  433. data/lib/reports/TjpExportRE.rb +0 -2
  434. data/lib/tj3client.rb +31 -3
  435. data/lib/tj3d.rb +8 -1
  436. data/manual/Day_To_Day_Juggling +2 -95
  437. data/manual/How_To_Contribute +2 -1
  438. data/manual/Rich_Text_Attributes +37 -3
  439. data/manual/Software +203 -0
  440. data/test/MessageChecker.rb +4 -4
  441. data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
  442. data/test/TestSuite/HTML-Reports/CellText.html +758 -0
  443. data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
  444. data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
  445. data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
  446. data/test/TestSuite/HTML-Reports/Query.html +31 -0
  447. data/test/TestSuite/HTML-Reports/css/tjmanual.css +14 -0
  448. data/test/TestSuite/HTML-Reports/css/tjreport.css +233 -21
  449. data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
  450. data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
  451. data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +20 -20
  452. data/test/TestSuite/ReportGenerator/Correct/Alerts.tjp +48 -0
  453. data/test/TestSuite/ReportGenerator/Correct/Macros.tjp +57 -0
  454. data/test/TestSuite/ReportGenerator/Correct/refs/Alerts-1.csv +386 -0
  455. data/test/TestSuite/ReportGenerator/Correct/refs/Macros-1.csv +6 -0
  456. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjmanual.css +0 -0
  457. data/test/TestSuite/ReportGenerator/{Correct → Errors}/css/tjreport.css +0 -0
  458. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/details.png +0 -0
  459. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-green.png +0 -0
  460. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-red.png +0 -0
  461. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/flag-yellow.png +0 -0
  462. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resource.png +0 -0
  463. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/resourcegroup.png +0 -0
  464. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/task.png +0 -0
  465. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/taskgroup.png +0 -0
  466. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-down.png +0 -0
  467. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-flat.png +0 -0
  468. data/test/TestSuite/ReportGenerator/{Correct → Errors}/icons/trend-up.png +0 -0
  469. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +26 -0
  470. data/test/TestSuite/ReportGenerator/{Correct → Errors}/scripts/wz_tooltip.js +0 -0
  471. data/test/TestSuite/Scheduler/Correct/Allocate.html +3210 -0
  472. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +19 -0
  473. data/test/TestSuite/Scheduler/Correct/Container.html +22 -22
  474. data/test/TestSuite/Scheduler/Correct/Limits.html +4964 -0
  475. data/test/TestSuite/Scheduler/Correct/Shift.html +1707 -417
  476. data/test/TestSuite/Scheduler/Correct/Shift2.html +9 -9
  477. data/test/TestSuite/Scheduler/Correct/css/tjreport.css +6 -2
  478. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +66 -0
  479. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +407 -0
  480. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  481. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  482. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  483. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  484. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  485. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  486. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  487. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  488. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  489. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  490. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  491. data/test/TestSuite/Scheduler/Errors/loop_detected_1.tjp +1 -1
  492. data/test/TestSuite/Scheduler/Errors/loop_detected_10.tjp +1 -1
  493. data/test/TestSuite/Scheduler/Errors/loop_detected_11.tjp +1 -1
  494. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +1 -1
  495. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +1 -1
  496. data/test/TestSuite/Scheduler/Errors/loop_detected_14.tjp +1 -1
  497. data/test/TestSuite/Scheduler/Errors/loop_detected_2.tjp +1 -1
  498. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +1 -1
  499. data/test/TestSuite/Scheduler/Errors/loop_detected_4.tjp +1 -1
  500. data/test/TestSuite/Scheduler/Errors/loop_detected_5.tjp +1 -1
  501. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +1 -1
  502. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +1 -1
  503. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +1 -1
  504. data/test/TestSuite/Scheduler/Errors/loop_detected_9.tjp +1 -1
  505. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +1301 -0
  506. data/test/TestSuite/Scheduler/Errors/task_pred_before.tjp +11 -0
  507. data/test/TestSuite/Scheduler/Errors/task_pred_before_gd.tjp +11 -0
  508. data/test/TestSuite/Scheduler/Errors/task_pred_before_gl.tjp +11 -0
  509. data/test/TestSuite/Scheduler/Errors/task_succ_after.tjp +12 -0
  510. data/test/TestSuite/Scheduler/Errors/task_succ_after_gd.tjp +12 -0
  511. data/test/TestSuite/Scheduler/Errors/task_succ_after_gl.tjp +12 -0
  512. data/test/TestSuite/StatusSheets/dev2.tji +22 -0
  513. data/test/TestSuite/StatusSheets/resrep.tji +7 -0
  514. data/test/TestSuite/StatusSheets/run +6 -4
  515. data/test/TestSuite/StatusSheets/tj3d.log +312 -0
  516. data/test/TestSuite/Syntax/Correct/Managers.html +263 -0
  517. data/test/TestSuite/Syntax/Correct/tutorial.tjp +1 -2
  518. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  519. data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +1 -1
  520. data/test/TestSuite/TimeSheets/acceptable_intervals +1 -0
  521. data/test/TestSuite/TimeSheets/resrep.tji +7 -0
  522. data/test/TestSuite/TimeSheets/run +6 -5
  523. data/test/TestSuite/TimeSheets/statussheets.log +1 -0
  524. data/test/TestSuite/TimeSheets/ts.tji +351 -0
  525. data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
  526. data/test/test_PropertySet.rb +2 -2
  527. data/test/test_RichText.rb +178 -387
  528. data/test/test_SimpleQueryExpander.rb +55 -0
  529. data/test/test_deep_copy.rb +2 -2
  530. metadata +854 -834
  531. data/lib/MacroParser.rb +0 -77
  532. data/lib/Message.rb +0 -56
  533. data/lib/ruby-signal-bug.rb +0 -43
  534. data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
  535. data/test/TestSuite/HTML-Reports/reference.html +0 -51
  536. data/test/TestSuite/ReportGenerator/Correct/Journal.html +0 -63
  537. data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
  538. data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
  539. data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
  540. data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
  541. data/test/TestSuite/Scheduler/Correct/Booking2.html +0 -603
  542. data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +0 -108
  543. data/test/TestSuite/StatusSheetTemplates/project.tji +0 -35
  544. data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
  545. data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +0 -32
@@ -180,6 +180,10 @@
180
180
 
181
181
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
182
182
 
183
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
184
+
185
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
186
+
183
187
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
184
188
 
185
189
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -252,8 +256,6 @@
252
256
 
253
257
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
254
258
 
255
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
256
-
257
259
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
258
260
 
259
261
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -318,6 +320,8 @@
318
320
 
319
321
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
320
322
 
323
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
324
+
321
325
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
322
326
 
323
327
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -364,8 +368,6 @@
364
368
 
365
369
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
366
370
 
367
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
368
-
369
371
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
370
372
 
371
373
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -406,6 +408,8 @@
406
408
 
407
409
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
408
410
 
411
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
412
+
409
413
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
410
414
 
411
415
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -516,6 +520,8 @@
516
520
 
517
521
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
518
522
 
523
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
524
+
519
525
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
520
526
 
521
527
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -589,7 +595,7 @@ href="RichTextScanner.html">RichTextScanner</a> class is used.
589
595
  <div class="method-heading">
590
596
 
591
597
  <span class="method-name">new</span><span
592
- class="method-args">(rti, sectionCounter = [ 0, 0, 0, 0 ], tokenSet = nil)</span>
598
+ class="method-args">(messageHandler, rti, sectionCounter = [ 0, 0, 0, 0 ], tokenSet = nil)</span>
593
599
  <span class="method-click-advice">click to toggle source</span>
594
600
 
595
601
  </div>
@@ -608,27 +614,28 @@ href="RichTextElement.html">RichTextElement</a> objects should belong to.
608
614
  id="new-source">
609
615
  <pre>
610
616
  <span class="ruby-comment cmt"># File lib/RichTextParser.rb, line 30</span>
611
- 30: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">rti</span>, <span class="ruby-identifier">sectionCounter</span> = [ <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span> ], <span class="ruby-identifier">tokenSet</span> = <span class="ruby-keyword kw">nil</span>)
612
- 31: <span class="ruby-keyword kw">super</span>()
613
- 32: <span class="ruby-ivar">@richTextI</span> = <span class="ruby-identifier">rti</span>
614
- 33: <span class="ruby-comment cmt"># These are the tokens that can be returned by the RichTextScanner.</span>
615
- 34: <span class="ruby-ivar">@variables</span> = <span class="ruby-node">%( LINEBREAK SPACE WORD BOLD ITALIC CODE BOLDITALIC PRE
616
- 35: HREF HREFEND REF REFEND HLINE
617
- 36: QUERY
618
- 37: INLINEFUNCSTART INLINEFUNCEND
619
- 38: BLOCKFUNCSTART BLOCKFUNCEND ID STRING
620
- 39: TITLE1 TITLE2 TITLE3 TITLE4
621
- 40: TITLE1END TITLE2END TITLE3END TITLE4END
622
- 41: BULLET1 BULLET2 BULLET3 BULLET4
623
- 42: NUMBER1 NUMBER2 NUMBER3 NUMBER4 )</span>
624
- 43: <span class="ruby-identifier">limitTokenSet</span>(<span class="ruby-identifier">tokenSet</span>)
625
- 44: <span class="ruby-comment cmt"># Load the rule set into the parser.</span>
626
- 45: <span class="ruby-identifier">initRules</span>
627
- 46: <span class="ruby-comment cmt"># The sections and numbered list can each nest 3 levels deep. We use these</span>
628
- 47: <span class="ruby-comment cmt"># counter Arrays to generate proper 1.2.3 type labels.</span>
629
- 48: <span class="ruby-ivar">@sectionCounter</span> = <span class="ruby-identifier">sectionCounter</span>
630
- 49: <span class="ruby-ivar">@numberListCounter</span> = [ <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span> ]
631
- 50: <span class="ruby-keyword kw">end</span></pre>
617
+ 30: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">messageHandler</span>, <span class="ruby-identifier">rti</span>, <span class="ruby-identifier">sectionCounter</span> = [ <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span> ],
618
+ 31: <span class="ruby-identifier">tokenSet</span> = <span class="ruby-keyword kw">nil</span>)
619
+ 32: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">messageHandler</span>)
620
+ 33: <span class="ruby-ivar">@richTextI</span> = <span class="ruby-identifier">rti</span>
621
+ 34: <span class="ruby-comment cmt"># These are the tokens that can be returned by the RichTextScanner.</span>
622
+ 35: <span class="ruby-ivar">@variables</span> = <span class="ruby-node">%( LINEBREAK SPACE WORD BOLD ITALIC CODE BOLDITALIC PRE
623
+ 36: HREF HREFEND REF REFEND HLINE
624
+ 37: QUERY
625
+ 38: INLINEFUNCSTART INLINEFUNCEND
626
+ 39: BLOCKFUNCSTART BLOCKFUNCEND ID STRING
627
+ 40: TITLE1 TITLE2 TITLE3 TITLE4
628
+ 41: TITLE1END TITLE2END TITLE3END TITLE4END
629
+ 42: BULLET1 BULLET2 BULLET3 BULLET4
630
+ 43: NUMBER1 NUMBER2 NUMBER3 NUMBER4 )</span>
631
+ 44: <span class="ruby-identifier">limitTokenSet</span>(<span class="ruby-identifier">tokenSet</span>)
632
+ 45: <span class="ruby-comment cmt"># Load the rule set into the parser.</span>
633
+ 46: <span class="ruby-identifier">initRules</span>
634
+ 47: <span class="ruby-comment cmt"># The sections and numbered list can each nest 3 levels deep. We use these</span>
635
+ 48: <span class="ruby-comment cmt"># counter Arrays to generate proper 1.2.3 type labels.</span>
636
+ 49: <span class="ruby-ivar">@sectionCounter</span> = <span class="ruby-identifier">sectionCounter</span>
637
+ 50: <span class="ruby-ivar">@numberListCounter</span> = [ <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span> ]
638
+ 51: <span class="ruby-keyword kw">end</span></pre>
632
639
  </div>
633
640
 
634
641
  </div>
@@ -667,10 +674,10 @@ Get the next token from the scanner.
667
674
  <div class="method-source-code"
668
675
  id="next-oken-source">
669
676
  <pre>
670
- <span class="ruby-comment cmt"># File lib/RichTextParser.rb, line 60</span>
671
- 60: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
672
- 61: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">nextToken</span>
673
- 62: <span class="ruby-keyword kw">end</span></pre>
677
+ <span class="ruby-comment cmt"># File lib/RichTextParser.rb, line 62</span>
678
+ 62: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
679
+ 63: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">nextToken</span>
680
+ 64: <span class="ruby-keyword kw">end</span></pre>
674
681
  </div>
675
682
 
676
683
  </div>
@@ -703,12 +710,13 @@ Construct the parser and get ready to read.
703
710
  <div class="method-source-code"
704
711
  id="open-source">
705
712
  <pre>
706
- <span class="ruby-comment cmt"># File lib/RichTextParser.rb, line 53</span>
707
- 53: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-identifier">text</span>)
708
- 54: <span class="ruby-comment cmt"># Make sure that the last line is properly terminated with a newline.</span>
709
- 55: <span class="ruby-comment cmt"># Multiple newlines at the end are simply ignored.</span>
710
- 56: <span class="ruby-ivar">@scanner</span> = <span class="ruby-constant">RichTextScanner</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n\n&quot;</span>)
711
- 57: <span class="ruby-keyword kw">end</span></pre>
713
+ <span class="ruby-comment cmt"># File lib/RichTextParser.rb, line 54</span>
714
+ 54: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-identifier">text</span>)
715
+ 55: <span class="ruby-comment cmt"># Make sure that the last line is properly terminated with a newline.</span>
716
+ 56: <span class="ruby-comment cmt"># Multiple newlines at the end are simply ignored.</span>
717
+ 57: <span class="ruby-ivar">@scanner</span> = <span class="ruby-constant">RichTextScanner</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">text</span> <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\n\n&quot;</span>, <span class="ruby-ivar">@messageHandler</span>)
718
+ 58: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">open</span>(<span class="ruby-keyword kw">true</span>)
719
+ 59: <span class="ruby-keyword kw">end</span></pre>
712
720
  </div>
713
721
 
714
722
  </div>
@@ -741,10 +749,10 @@ Return the last fetch token again to the scanner.
741
749
  <div class="method-source-code"
742
750
  id="return-oken-source">
743
751
  <pre>
744
- <span class="ruby-comment cmt"># File lib/RichTextParser.rb, line 65</span>
745
- 65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
746
- 66: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
747
- 67: <span class="ruby-keyword kw">end</span></pre>
752
+ <span class="ruby-comment cmt"># File lib/RichTextParser.rb, line 67</span>
753
+ 67: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
754
+ 68: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
755
+ 69: <span class="ruby-keyword kw">end</span></pre>
748
756
  </div>
749
757
 
750
758
  </div>
@@ -55,7 +55,7 @@
55
55
  <div id="parent-class-section" class="section">
56
56
  <h3 class="section-header">Parent</h3>
57
57
 
58
- <p class="link"><a href="../Object.html">Object</a></p>
58
+ <p class="link"><a href="TextScanner.html">TaskJuggler::TextScanner</a></p>
59
59
 
60
60
  </div>
61
61
 
@@ -71,55 +71,45 @@
71
71
 
72
72
  <li><a href="#method-c-new">::new</a></li>
73
73
 
74
- <li><a href="#method-i-error">#error</a></li>
74
+ <li><a href="#method-i-bullet">#bullet</a></li>
75
75
 
76
- <li><a href="#method-i-fileName">#fileName</a></li>
76
+ <li><a href="#method-i-dqString">#dqString</a></li>
77
77
 
78
- <li><a href="#method-i-isIdStart">#isIdStart</a></li>
78
+ <li><a href="#method-i-functionEnd">#functionEnd</a></li>
79
79
 
80
- <li><a href="#method-i-nextChar">#nextChar</a></li>
80
+ <li><a href="#method-i-functionStart">#functionStart</a></li>
81
81
 
82
- <li><a href="#method-i-nextToken">#nextToken</a></li>
82
+ <li><a href="#method-i-hrefEnd">#hrefEnd</a></li>
83
83
 
84
- <li><a href="#method-i-nextTokenFuncArg">#nextTokenFuncArg</a></li>
84
+ <li><a href="#method-i-hrefStart">#hrefStart</a></li>
85
85
 
86
- <li><a href="#method-i-nextTokenHRef">#nextTokenHRef</a></li>
86
+ <li><a href="#method-i-inlineMode">#inlineMode</a></li>
87
87
 
88
- <li><a href="#method-i-nextTokenNewline">#nextTokenNewline</a></li>
88
+ <li><a href="#method-i-linebreak">#linebreak</a></li>
89
89
 
90
- <li><a href="#method-i-nextTokenNoWikiInline">#nextTokenNoWikiInline</a></li>
90
+ <li><a href="#method-i-nowikiEnd">#nowikiEnd</a></li>
91
91
 
92
- <li><a href="#method-i-nextTokenOpenAngle">#nextTokenOpenAngle</a></li>
92
+ <li><a href="#method-i-nowikiStart">#nowikiStart</a></li>
93
93
 
94
- <li><a href="#method-i-nextTokenRef">#nextTokenRef</a></li>
94
+ <li><a href="#method-i-number">#number</a></li>
95
95
 
96
- <li><a href="#method-i-nextTokenWikiBOL">#nextTokenWikiBOL</a></li>
96
+ <li><a href="#method-i-pre">#pre</a></li>
97
97
 
98
- <li><a href="#method-i-nextTokenWikiInline">#nextTokenWikiInline</a></li>
98
+ <li><a href="#method-i-query">#query</a></li>
99
99
 
100
- <li><a href="#method-i-nextTokenWord">#nextTokenWord</a></li>
100
+ <li><a href="#method-i-quotes">#quotes</a></li>
101
101
 
102
- <li><a href="#method-i-peek">#peek</a></li>
102
+ <li><a href="#method-i-refEnd">#refEnd</a></li>
103
103
 
104
- <li><a href="#method-i-peekMatch">#peekMatch</a></li>
104
+ <li><a href="#method-i-refStart">#refStart</a></li>
105
105
 
106
- <li><a href="#method-i-readBlanks">#readBlanks</a></li>
106
+ <li><a href="#method-i-space">#space</a></li>
107
107
 
108
- <li><a href="#method-i-readCode">#readCode</a></li>
108
+ <li><a href="#method-i-sqString">#sqString</a></li>
109
109
 
110
- <li><a href="#method-i-readId">#readId</a></li>
110
+ <li><a href="#method-i-titleEnd">#titleEnd</a></li>
111
111
 
112
- <li><a href="#method-i-readSequence">#readSequence</a></li>
113
-
114
- <li><a href="#method-i-readSequenceMax">#readSequenceMax</a></li>
115
-
116
- <li><a href="#method-i-readString">#readString</a></li>
117
-
118
- <li><a href="#method-i-returnChar">#returnChar</a></li>
119
-
120
- <li><a href="#method-i-returnToken">#returnToken</a></li>
121
-
122
- <li><a href="#method-i-sourceFileInfo">#sourceFileInfo</a></li>
112
+ <li><a href="#method-i-titleStart">#titleStart</a></li>
123
113
 
124
114
  </ul>
125
115
  </div>
@@ -213,6 +203,10 @@
213
203
 
214
204
  <li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
215
205
 
206
+ <li><a href="../TaskJuggler/FileList.html">TaskJuggler::FileList</a></li>
207
+
208
+ <li><a href="../TaskJuggler/FileRecord.html">TaskJuggler::FileRecord</a></li>
209
+
216
210
  <li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
217
211
 
218
212
  <li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
@@ -285,8 +279,6 @@
285
279
 
286
280
  <li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
287
281
 
288
- <li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
289
-
290
282
  <li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
291
283
 
292
284
  <li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
@@ -351,6 +343,8 @@
351
343
 
352
344
  <li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
353
345
 
346
+ <li><a href="../TaskJuggler/RTFWithQuerySupport.html">TaskJuggler::RTFWithQuerySupport</a></li>
347
+
354
348
  <li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
355
349
 
356
350
  <li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
@@ -397,8 +391,6 @@
397
391
 
398
392
  <li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
399
393
 
400
- <li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
401
-
402
394
  <li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
403
395
 
404
396
  <li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
@@ -439,6 +431,8 @@
439
431
 
440
432
  <li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
441
433
 
434
+ <li><a href="../TaskJuggler/SimpleQueryExpander.html">TaskJuggler::SimpleQueryExpander</a></li>
435
+
442
436
  <li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
443
437
 
444
438
  <li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
@@ -549,6 +543,8 @@
549
543
 
550
544
  <li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
551
545
 
546
+ <li><a href="../TaskJuggler/VimSyntax.html">TaskJuggler::VimSyntax</a></li>
547
+
552
548
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
553
549
 
554
550
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
@@ -594,11 +590,18 @@
594
590
  <p>
595
591
  The <a href="RichTextScanner.html">RichTextScanner</a> is used by the <a
596
592
  href="RichTextParser.html">RichTextParser</a> to chop the input text into
597
- digestable tokens. The parser and the scanner only communicate over <a
598
- href="RichTextScanner.html#method-i-nextToken">RichTextScanner#nextToken</a>
599
- and <a
600
- href="RichTextScanner.html#method-i-returnToken">RichTextScanner#returnToken</a>.
601
- The scanner can break the text into words and special tokens.
593
+ digestable tokens. It specializes the <a
594
+ href="TextScanner.html">TextScanner</a> class for <a
595
+ href="RichText.html">RichText</a> syntax. The scanner can operate in
596
+ various modes. The current mode is context dependent. The following modes
597
+ are supported:
598
+ </p>
599
+ <p>
600
+ :bop : at the begining of a paragraph. :bol : at the begining of a
601
+ line. :inline : in the middle of a line :nowiki : ignoring all MediaWiki
602
+ special tokens :ref : inside of a REF [[ .. ]] :href : inside of an
603
+ HREF [ .. ] :func : inside of a block <[ .. ]> or inline <- .. ->
604
+ function
602
605
  </p>
603
606
 
604
607
  </div>
@@ -621,52 +624,82 @@ The scanner can break the text into words and special tokens.
621
624
  <div class="method-heading">
622
625
 
623
626
  <span class="method-name">new</span><span
624
- class="method-args">(text)</span>
627
+ class="method-args">(masterFile, messageHandler)</span>
625
628
  <span class="method-click-advice">click to toggle source</span>
626
629
 
627
630
  </div>
628
631
 
629
632
  <div class="method-description">
630
633
 
631
- <p>
632
- Create the <a href="RichTextScanner.html">RichTextScanner</a> object and
633
- initialize all state variables.
634
- </p>
634
+
635
635
 
636
636
 
637
637
 
638
638
  <div class="method-source-code"
639
639
  id="new-source">
640
640
  <pre>
641
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 24</span>
642
- 24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">text</span>)
643
- 25: <span class="ruby-comment cmt"># The token buffer is used to hold a returned token. Only one token can</span>
644
- 26: <span class="ruby-comment cmt"># be returned at a time.</span>
645
- 27: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
646
- 28: <span class="ruby-comment cmt"># A reference to the input text.</span>
647
- 29: <span class="ruby-ivar">@text</span> = <span class="ruby-identifier">text</span>
648
- 30: <span class="ruby-comment cmt"># The reference text should not change during processing. So we can</span>
649
- 31: <span class="ruby-comment cmt"># determine the length upfront. It's frequently used.</span>
650
- 32: <span class="ruby-ivar">@textLength</span> = <span class="ruby-identifier">text</span>.<span class="ruby-identifier">length</span>
651
- 33: <span class="ruby-comment cmt"># The number of current line.</span>
652
- 34: <span class="ruby-ivar">@lineNo</span> = <span class="ruby-value">1</span>
653
- 35: <span class="ruby-comment cmt"># This is the current position withing @text.</span>
654
- 36: <span class="ruby-ivar">@pos</span> = <span class="ruby-value">0</span>
655
- 37: <span class="ruby-comment cmt"># This flag is set to true whenever we are at the start of a text line.</span>
656
- 38: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">true</span>
657
- 39: <span class="ruby-comment cmt"># This is the position of the start of the currently processed line.</span>
658
- 40: <span class="ruby-comment cmt"># It's only used for error reporting.</span>
659
- 41: <span class="ruby-ivar">@lineStart</span> = <span class="ruby-value">0</span>
660
- 42: <span class="ruby-comment cmt"># This variable stores the mode that the parser is operating in. The</span>
661
- 43: <span class="ruby-comment cmt"># following modes are supported:</span>
662
- 44: <span class="ruby-comment cmt"># :wiki : accept supported MediaWiki subset plus TJ extensions</span>
663
- 45: <span class="ruby-comment cmt"># :nowiki : ignore most markup except for the &lt;/nowiki&gt; token</span>
664
- 46: <span class="ruby-comment cmt"># :funcarg : parse name and parameters of an block or inline parser</span>
665
- 47: <span class="ruby-comment cmt"># function.</span>
666
- 48: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:wiki</span>
667
- 49: <span class="ruby-comment cmt"># Enable to trigger printout instead of exception.</span>
668
- 50: <span class="ruby-ivar">@debug</span> = <span class="ruby-keyword kw">false</span>
669
- 51: <span class="ruby-keyword kw">end</span></pre>
641
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 32</span>
642
+ 32: <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>)
643
+ 33: <span class="ruby-identifier">tokenPatterns</span> = [
644
+ 34: <span class="ruby-comment cmt"># :bol mode rules</span>
645
+ 35: [ <span class="ruby-value str">'LINEBREAK'</span>, <span class="ruby-regexp re">/\s*\n/</span>, <span class="ruby-value">:bol</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'linebreak'</span>) ],
646
+ 36: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\s+/</span>, <span class="ruby-value">:bol</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'inlineMode'</span>) ],
647
+ 37:
648
+ 38: <span class="ruby-comment cmt"># :bop mode rules</span>
649
+ 39: [ <span class="ruby-value str">'PRE'</span>, <span class="ruby-regexp re">/ [^\n]+\n?/</span>, <span class="ruby-value">:bop</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'pre'</span>) ],
650
+ 40: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\s*\n/</span>, <span class="ruby-value">:bop</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'linebreak'</span>) ],
651
+ 41:
652
+ 42: <span class="ruby-comment cmt"># :inline mode rules</span>
653
+ 43: [ <span class="ruby-value str">'SPACE'</span>, <span class="ruby-regexp re">/[ \t\n]+/</span>, <span class="ruby-value">:inline</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'space'</span>) ],
654
+ 44:
655
+ 45: <span class="ruby-comment cmt"># :bop and :bol mode rules</span>
656
+ 46: [ <span class="ruby-value str">'INLINEFUNCSTART'</span>, <span class="ruby-regexp re">/&lt;-/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span>, <span class="ruby-value">:inline</span> ],
657
+ 47: <span class="ruby-identifier">method</span>(<span class="ruby-value str">'functionStart'</span>) ],
658
+ 48: [ <span class="ruby-value str">'BLOCKFUNCSTART'</span>, <span class="ruby-regexp re">/&lt;\[/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'functionStart'</span>) ],
659
+ 49: [ <span class="ruby-value str">'TITLE*'</span>, <span class="ruby-regexp re">/={2,5}/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'titleStart'</span>) ],
660
+ 50: [ <span class="ruby-value str">'TITLE*END'</span>, <span class="ruby-regexp re">/={2,5}/</span>, <span class="ruby-value">:inline</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'titleEnd'</span>) ],
661
+ 51: [ <span class="ruby-value str">'BULLET*'</span>, <span class="ruby-regexp re">/\*{1,4} /</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'bullet'</span>) ],
662
+ 52: [ <span class="ruby-value str">'NUMBER*'</span>, <span class="ruby-regexp re">/\#{1,4} /</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'number'</span>) ],
663
+ 53: [ <span class="ruby-value str">'HLINE'</span>, <span class="ruby-regexp re">/----/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'inlineMode'</span>) ],
664
+ 54:
665
+ 55: <span class="ruby-comment cmt"># :bop, :bol and :inline mode rules</span>
666
+ 56: <span class="ruby-comment cmt"># The &lt;nowiki&gt; token puts the scanner into :nowiki mode.</span>
667
+ 57: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/&lt;nowiki&gt;/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span>, <span class="ruby-value">:inline</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'nowikiStart'</span>) ],
668
+ 58: [ <span class="ruby-value str">'QUOTES'</span>, <span class="ruby-regexp re">/'{2,5}/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span>, <span class="ruby-value">:inline</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'quotes'</span>) ],
669
+ 59: [ <span class="ruby-value str">'REF'</span>, <span class="ruby-regexp re">/\[\[/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span>, <span class="ruby-value">:inline</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'refStart'</span>) ],
670
+ 60: [ <span class="ruby-value str">'HREF'</span>, <span class="ruby-regexp re">/\[/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span>, <span class="ruby-value">:inline</span>], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'hrefStart'</span>) ],
671
+ 61: [ <span class="ruby-value str">'WORD'</span>, <span class="ruby-regexp re">/.[^ \n\t\[&lt;']*/</span>, [ <span class="ruby-value">:bop</span>, <span class="ruby-value">:bol</span>, <span class="ruby-value">:inline</span> ],
672
+ 62: <span class="ruby-identifier">method</span>(<span class="ruby-value str">'inlineMode'</span>) ],
673
+ 63:
674
+ 64: <span class="ruby-comment cmt"># :nowiki mode rules</span>
675
+ 65: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/&lt;\/nowiki&gt;/</span>, <span class="ruby-value">:nowiki</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'nowikiEnd'</span>) ],
676
+ 66: [ <span class="ruby-value str">'WORD'</span>, <span class="ruby-regexp re">/(&lt;(?!\/nowiki&gt;)|[^ \t\n&lt;])+/</span>, <span class="ruby-value">:nowiki</span> ],
677
+ 67: [ <span class="ruby-value str">'SPACE'</span>, <span class="ruby-regexp re">/[ \t]+/</span>, <span class="ruby-value">:nowiki</span> ],
678
+ 68: [ <span class="ruby-value str">'LINEBREAK'</span>, <span class="ruby-regexp re">/\s*\n/</span>, <span class="ruby-value">:nowiki</span> ],
679
+ 69:
680
+ 70: <span class="ruby-comment cmt"># :ref mode rules</span>
681
+ 71: [ <span class="ruby-value str">'REFEND'</span>, <span class="ruby-regexp re">/\]\]/</span>, <span class="ruby-value">:ref</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'refEnd'</span>) ],
682
+ 72: [ <span class="ruby-value str">'WORD'</span>, <span class="ruby-regexp re">/(&lt;(?!-)|(\](?!\])|[^|&lt;\]]))+/</span>, <span class="ruby-value">:ref</span> ],
683
+ 73: [ <span class="ruby-value str">'QUERY'</span>, <span class="ruby-regexp re">/&lt;-\w+-&gt;/</span>, <span class="ruby-value">:ref</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'query'</span>) ],
684
+ 74: [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-regexp re">/./</span>, <span class="ruby-value">:ref</span> ],
685
+ 75:
686
+ 76: <span class="ruby-comment cmt"># :href mode rules</span>
687
+ 77: [ <span class="ruby-value str">'HREFEND'</span>, <span class="ruby-regexp re">/\]/</span>, <span class="ruby-value">:href</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'hrefEnd'</span>) ],
688
+ 78: [ <span class="ruby-value str">'WORD'</span>, <span class="ruby-regexp re">/(&lt;(?!-)|[^ \t\n\]&lt;])+/</span>, <span class="ruby-value">:href</span> ],
689
+ 79: [ <span class="ruby-value str">'QUERY'</span>, <span class="ruby-regexp re">/&lt;-\w+-&gt;/</span>, <span class="ruby-value">:href</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'query'</span>) ],
690
+ 80: [ <span class="ruby-value str">'SPACE'</span>, <span class="ruby-regexp re">/[ \t\n]+/</span>, <span class="ruby-value">:href</span> ],
691
+ 81:
692
+ 82: <span class="ruby-comment cmt"># :func mode rules</span>
693
+ 83: [ <span class="ruby-value str">'INLINEFUNCEND'</span>, <span class="ruby-regexp re">/-&gt;/</span> , <span class="ruby-value">:func</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'functionEnd'</span>) ],
694
+ 84: [ <span class="ruby-value str">'BLOCKFUNCEND'</span>, <span class="ruby-regexp re">/\]&gt;/</span>, <span class="ruby-value">:func</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'functionEnd'</span>) ],
695
+ 85: [ <span class="ruby-value str">'ID'</span>, <span class="ruby-regexp re">/[a-zA-Z_]\w*/</span>, <span class="ruby-value">:func</span> ],
696
+ 86: [ <span class="ruby-value str">'STRING'</span>, <span class="ruby-regexp re">/&quot;(\\&quot;|[^&quot;])*&quot;/</span>, <span class="ruby-value">:func</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'dqString'</span>) ],
697
+ 87: [ <span class="ruby-value str">'STRING'</span>, <span class="ruby-regexp re">/'(\\'|[^'])*'/</span>, <span class="ruby-value">:func</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'sqString'</span>) ],
698
+ 88: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/[ \t\n]+/</span>, <span class="ruby-value">:func</span> ],
699
+ 89: [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-regexp re">/./</span>, <span class="ruby-value">:func</span> ]
700
+ 90: ]
701
+ 91: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">masterFile</span>, <span class="ruby-identifier">messageHandler</span>, <span class="ruby-identifier">tokenPatterns</span>, <span class="ruby-value">:bop</span>)
702
+ 92: <span class="ruby-keyword kw">end</span></pre>
670
703
  </div>
671
704
 
672
705
  </div>
@@ -679,79 +712,35 @@ initialize all state variables.
679
712
 
680
713
  </div>
681
714
 
682
- <div id="public-instance-method-details" class="method-section section">
683
- <h3 class="section-header">Public Instance Methods</h3>
715
+ <div id="private-instance-method-details" class="method-section section">
716
+ <h3 class="section-header">Private Instance Methods</h3>
684
717
 
685
718
 
686
- <div id="error-method" class="method-detail ">
687
- <a name="method-i-error"></a>
719
+ <div id="bullet-method" class="method-detail ">
720
+ <a name="method-i-bullet"></a>
688
721
 
689
722
  <div class="method-heading">
690
723
 
691
- <span class="method-name">error</span><span
692
- class="method-args">(id, text, foo = nil, bar = nil)</span>
724
+ <span class="method-name">bullet</span><span
725
+ class="method-args">(type, match)</span>
693
726
  <span class="method-click-advice">click to toggle source</span>
694
727
 
695
728
  </div>
696
729
 
697
730
  <div class="method-description">
698
731
 
699
- <p>
700
- The parser uses this function to report any errors during parsing.
701
- </p>
702
-
703
-
704
-
705
- <div class="method-source-code"
706
- id="error-source">
707
- <pre>
708
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 115</span>
709
- 115: <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">foo</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">bar</span> = <span class="ruby-keyword kw">nil</span>)
710
- 116: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@debug</span>
711
- 117: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Line #{@lineNo}: #{text}\n&quot;</span> <span class="ruby-operator">+</span>
712
- 118: <span class="ruby-node">&quot;#{@text[@lineStart, @pos - @lineStart]}&quot;</span>
713
- 119: <span class="ruby-keyword kw">else</span>
714
- 120: <span class="ruby-identifier">raise</span> <span class="ruby-constant">RichTextException</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-ivar">@lineNo</span>, <span class="ruby-identifier">text</span>,
715
- 121: <span class="ruby-ivar">@text</span>[<span class="ruby-ivar">@lineStart</span>, <span class="ruby-ivar">@pos</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lineStart</span>])
716
- 122: <span class="ruby-keyword kw">end</span>
717
- 123: <span class="ruby-keyword kw">end</span></pre>
718
- </div>
719
-
720
- </div>
721
-
722
-
723
-
724
-
725
- </div>
726
-
727
-
728
- <div id="file-ame-method" class="method-detail ">
729
- <a name="method-i-fileName"></a>
730
-
731
- <div class="method-heading">
732
-
733
- <span class="method-name">fileName</span><span
734
- class="method-args">()</span>
735
- <span class="method-click-advice">click to toggle source</span>
736
-
737
- </div>
738
-
739
- <div class="method-description">
740
732
 
741
- <p>
742
- This function makes more sense for parsers that process actual files. As we
743
- don&#8217;t have a file name, we just return &#8216;input text&#8217;.
744
- </p>
745
733
 
746
734
 
747
735
 
748
736
  <div class="method-source-code"
749
- id="file-ame-source">
737
+ id="bullet-source">
750
738
  <pre>
751
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 110</span>
752
- 110: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fileName</span>
753
- 111: <span class="ruby-value str">'input text'</span>
754
- 112: <span class="ruby-keyword kw">end</span></pre>
739
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 125</span>
740
+ 125: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">bullet</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
741
+ 126: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:inline</span>
742
+ 127: [ <span class="ruby-node">&quot;BULLET#{match.length - 1}&quot;</span>, <span class="ruby-identifier">match</span> ]
743
+ 128: <span class="ruby-keyword kw">end</span></pre>
755
744
  </div>
756
745
 
757
746
  </div>
@@ -762,100 +751,32 @@ don&#8217;t have a file name, we just return &#8216;input text&#8217;.
762
751
  </div>
763
752
 
764
753
 
765
- <div id="next-oken-method" class="method-detail ">
766
- <a name="method-i-nextToken"></a>
754
+ <div id="dq-tring-method" class="method-detail ">
755
+ <a name="method-i-dqString"></a>
767
756
 
768
757
  <div class="method-heading">
769
758
 
770
- <span class="method-name">nextToken</span><span
771
- class="method-args">()</span>
759
+ <span class="method-name">dqString</span><span
760
+ class="method-args">(type, match)</span>
772
761
  <span class="method-click-advice">click to toggle source</span>
773
762
 
774
763
  </div>
775
764
 
776
765
  <div class="method-description">
777
766
 
778
- <p>
779
- Return the next token from the input text.
780
- </p>
781
-
782
-
783
-
784
- <div class="method-source-code"
785
- id="next-oken-source">
786
- <pre>
787
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 62</span>
788
- 62: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
789
- 63: <span class="ruby-comment cmt"># If we have a returned token, this is returned first.</span>
790
- 64: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tokenBuffer</span>
791
- 65: <span class="ruby-identifier">tok</span> = <span class="ruby-ivar">@tokenBuffer</span>
792
- 66: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
793
- 67: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tok</span>
794
- 68: <span class="ruby-keyword kw">end</span>
795
- 69:
796
- 70: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:funcarg</span>
797
- 71: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nextTokenFuncArg</span>
798
- 72: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:href</span>
799
- 73: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nextTokenHRef</span>
800
- 74: <span class="ruby-keyword kw">elsif</span> <span class="ruby-ivar">@mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:ref</span>
801
- 75: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nextTokenRef</span>
802
- 76: <span class="ruby-keyword kw">end</span>
803
- 77: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@beginOfLine</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:wiki</span>
804
- 78: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">res</span> = <span class="ruby-identifier">nextTokenWikiBOL</span>)
805
- 79: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span>
806
- 80: <span class="ruby-keyword kw">end</span>
807
- 81: <span class="ruby-keyword kw">end</span>
808
- 82:
809
- 83: <span class="ruby-comment cmt"># Many inline control character sequences consit of multiple characters.</span>
810
- 84: <span class="ruby-comment cmt"># In case of incomplete sequences, we roll back to the start character</span>
811
- 85: <span class="ruby-comment cmt"># and set the ignoreInlineMarkup flag to simply treat them as normal</span>
812
- 86: <span class="ruby-comment cmt"># text.</span>
813
- 87: <span class="ruby-ivar">@ignoreInlineMarkup</span> = <span class="ruby-keyword kw">false</span>
814
- 88: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
815
- 89: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">res</span> = (<span class="ruby-ivar">@mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:wiki</span> <span class="ruby-operator">?</span> <span class="ruby-identifier">nextTokenWikiInline</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">nextTokenNoWikiInline</span>)
816
- 90: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span>
817
- 91: <span class="ruby-keyword kw">end</span>
818
- 92: <span class="ruby-keyword kw">end</span>
819
- 93: <span class="ruby-keyword kw">end</span></pre>
820
- </div>
821
-
822
- </div>
823
-
824
-
825
-
826
-
827
- </div>
828
-
829
-
830
- <div id="return-oken-method" class="method-detail ">
831
- <a name="method-i-returnToken"></a>
832
-
833
- <div class="method-heading">
834
-
835
- <span class="method-name">returnToken</span><span
836
- class="method-args">(token)</span>
837
- <span class="method-click-advice">click to toggle source</span>
838
-
839
- </div>
840
-
841
- <div class="method-description">
842
767
 
843
- <p>
844
- Return the last issued token to the token buffer.
845
- </p>
846
768
 
847
769
 
848
770
 
849
771
  <div class="method-source-code"
850
- id="return-oken-source">
772
+ id="dq-tring-source">
851
773
  <pre>
852
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 96</span>
853
- 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
854
- 97: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
855
- 98: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">'Token buffer overflow!'</span>
856
- 99: <span class="ruby-keyword kw">end</span>
857
- 100: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-identifier">token</span>
858
- 101: <span class="ruby-keyword kw">end</span></pre>
774
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 169</span>
775
+ 169: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dqString</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
776
+ 170: <span class="ruby-comment cmt"># Remove first and last character and remove backslashes from quoted</span>
777
+ 171: <span class="ruby-comment cmt"># double quotes.</span>
778
+ 172: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\&quot;/</span>, <span class="ruby-value str">'&quot;'</span>) ]
779
+ 173: <span class="ruby-keyword kw">end</span></pre>
859
780
  </div>
860
781
 
861
782
  </div>
@@ -866,32 +787,32 @@ Return the last issued token to the token buffer.
866
787
  </div>
867
788
 
868
789
 
869
- <div id="source-ile-nfo-method" class="method-detail ">
870
- <a name="method-i-sourceFileInfo"></a>
790
+ <div id="function-nd-method" class="method-detail ">
791
+ <a name="method-i-functionEnd"></a>
871
792
 
872
793
  <div class="method-heading">
873
794
 
874
- <span class="method-name">sourceFileInfo</span><span
875
- class="method-args">()</span>
795
+ <span class="method-name">functionEnd</span><span
796
+ class="method-args">(type, match)</span>
876
797
  <span class="method-click-advice">click to toggle source</span>
877
798
 
878
799
  </div>
879
800
 
880
801
  <div class="method-description">
881
802
 
882
- <p>
883
- <a href="Report.html">Report</a> the current cursor position.
884
- </p>
803
+
885
804
 
886
805
 
887
806
 
888
807
  <div class="method-source-code"
889
- id="source-ile-nfo-source">
808
+ id="function-nd-source">
890
809
  <pre>
891
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 104</span>
892
- 104: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sourceFileInfo</span>
893
- 105: [ <span class="ruby-ivar">@lineNo</span>, <span class="ruby-ivar">@pos</span> ]
894
- 106: <span class="ruby-keyword kw">end</span></pre>
810
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 159</span>
811
+ 159: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">functionEnd</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
812
+ 160: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-ivar">@funcLastMode</span>
813
+ 161: <span class="ruby-ivar">@funcLastMode</span> = <span class="ruby-keyword kw">nil</span>
814
+ 162: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
815
+ 163: <span class="ruby-keyword kw">end</span></pre>
895
816
  </div>
896
817
 
897
818
  </div>
@@ -902,19 +823,13 @@ Return the last issued token to the token buffer.
902
823
  </div>
903
824
 
904
825
 
905
- </div>
906
-
907
- <div id="private-instance-method-details" class="method-section section">
908
- <h3 class="section-header">Private Instance Methods</h3>
909
-
910
-
911
- <div id="is-d-tart-method" class="method-detail ">
912
- <a name="method-i-isIdStart"></a>
826
+ <div id="function-tart-method" class="method-detail ">
827
+ <a name="method-i-functionStart"></a>
913
828
 
914
829
  <div class="method-heading">
915
830
 
916
- <span class="method-name">isIdStart</span><span
917
- class="method-args">(c)</span>
831
+ <span class="method-name">functionStart</span><span
832
+ class="method-args">(type, match)</span>
918
833
  <span class="method-click-advice">click to toggle source</span>
919
834
 
920
835
  </div>
@@ -926,12 +841,16 @@ Return the last issued token to the token buffer.
926
841
 
927
842
 
928
843
  <div class="method-source-code"
929
- id="is-d-tart-source">
844
+ id="function-tart-source">
930
845
  <pre>
931
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 583</span>
932
- 583: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">isIdStart</span>(<span class="ruby-identifier">c</span>)
933
- 584: ((<span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'_'</span>)
934
- 585: <span class="ruby-keyword kw">end</span></pre>
846
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 151</span>
847
+ 151: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">functionStart</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
848
+ 152: <span class="ruby-comment cmt"># When restoring :bol or :bop mode, we need to switch to :inline mode.</span>
849
+ 153: <span class="ruby-ivar">@funcLastMode</span> = (<span class="ruby-ivar">@scannerMode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:bop</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@scannerMode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:bol</span>) <span class="ruby-operator">?</span>
850
+ 154: <span class="ruby-value">:inline</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@scannerMode</span>
851
+ 155: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:func</span>
852
+ 156: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
853
+ 157: <span class="ruby-keyword kw">end</span></pre>
935
854
  </div>
936
855
 
937
856
  </div>
@@ -942,118 +861,32 @@ Return the last issued token to the token buffer.
942
861
  </div>
943
862
 
944
863
 
945
- <div id="next-har-method" class="method-detail ">
946
- <a name="method-i-nextChar"></a>
864
+ <div id="href-nd-method" class="method-detail ">
865
+ <a name="method-i-hrefEnd"></a>
947
866
 
948
867
  <div class="method-heading">
949
868
 
950
- <span class="method-name">nextChar</span><span
951
- class="method-args">()</span>
869
+ <span class="method-name">hrefEnd</span><span
870
+ class="method-args">(type, match)</span>
952
871
  <span class="method-click-advice">click to toggle source</span>
953
872
 
954
873
  </div>
955
874
 
956
875
  <div class="method-description">
957
876
 
958
- <p>
959
- Deliver the next character. Keep track of the cursor position. In case we
960
- reach the end, nil is returned.
961
- </p>
962
877
 
963
-
964
-
965
- <div class="method-source-code"
966
- id="next-har-source">
967
- <pre>
968
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 464</span>
969
- 464: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextChar</span>
970
- 465: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pos</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@textLength</span>
971
- 466: <span class="ruby-comment cmt"># Correct @pos so that returnChar works properly but mutliple reads of</span>
972
- 467: <span class="ruby-comment cmt"># EOT are ignored.</span>
973
- 468: <span class="ruby-ivar">@pos</span> = <span class="ruby-ivar">@textLength</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>
974
- 469: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
975
- 470: <span class="ruby-keyword kw">end</span>
976
- 471: <span class="ruby-identifier">c</span> = <span class="ruby-ivar">@text</span>[<span class="ruby-ivar">@pos</span>]
977
- 472: <span class="ruby-ivar">@pos</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
978
- 473: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
979
- 474: <span class="ruby-ivar">@lineNo</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
980
- 475: <span class="ruby-comment cmt"># Save the position of the line start for later use during error</span>
981
- 476: <span class="ruby-comment cmt"># reporting. The line begins after the newline.</span>
982
- 477: <span class="ruby-ivar">@lineStart</span> = <span class="ruby-ivar">@pos</span>
983
- 478: <span class="ruby-keyword kw">end</span>
984
- 479: <span class="ruby-comment cmt"># Since Ruby 1.9 is returning Strings for String#[] we need to emulate</span>
985
- 480: <span class="ruby-comment cmt"># this for Ruby 1.8.</span>
986
- 481: <span class="ruby-value str">''</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
987
- 482: <span class="ruby-keyword kw">end</span></pre>
988
- </div>
989
-
990
- </div>
991
-
992
-
993
-
994
-
995
- </div>
996
-
997
-
998
- <div id="next-oken-unc-rg-method" class="method-detail ">
999
- <a name="method-i-nextTokenFuncArg"></a>
1000
-
1001
- <div class="method-heading">
1002
-
1003
- <span class="method-name">nextTokenFuncArg</span><span
1004
- class="method-args">()</span>
1005
- <span class="method-click-advice">click to toggle source</span>
1006
-
1007
- </div>
1008
-
1009
- <div class="method-description">
1010
-
1011
- <p>
1012
- Function arguments have the following formats:
1013
- </p>
1014
- <pre>
1015
- &lt;[blockfunc par1=&quot;value1&quot; par2='value2']&gt;
1016
- &lt;-inlinefunc par1=&quot;value1&quot; ... -&gt;</pre>
1017
878
 
1018
879
 
1019
880
 
1020
881
  <div class="method-source-code"
1021
- id="next-oken-unc-rg-source">
882
+ id="href-nd-source">
1022
883
  <pre>
1023
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 130</span>
1024
- 130: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenFuncArg</span>
1025
- 131: <span class="ruby-identifier">token</span> = [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END&gt;'</span> ]
1026
- 132: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
1027
- 133: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">c</span>
1028
- 134: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">' '</span>, <span class="ruby-value str">&quot;\n&quot;</span>, <span class="ruby-value str">&quot;\t&quot;</span>
1029
- 135: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">tok</span> = <span class="ruby-identifier">readBlanks</span>(<span class="ruby-identifier">c</span>))
1030
- 136: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">tok</span>
1031
- 137: <span class="ruby-keyword kw">break</span>
1032
- 138: <span class="ruby-keyword kw">end</span>
1033
- 139: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'='</span>
1034
- 140: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'_='</span>, <span class="ruby-value str">'='</span> ]
1035
- 141: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">&quot;'&quot;</span>
1036
- 142: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">readString</span>(<span class="ruby-identifier">c</span>)
1037
- 143: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'&quot;'</span>
1038
- 144: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">readString</span>(<span class="ruby-identifier">c</span>)
1039
- 145: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>, <span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>, <span class="ruby-value str">'_'</span>
1040
- 146: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">readId</span>(<span class="ruby-identifier">c</span>)
1041
- 147: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">']'</span>
1042
- 148: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&gt;'</span>
1043
- 149: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:wiki</span>
1044
- 150: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'BLOCKFUNCEND'</span>, <span class="ruby-value str">']&gt;'</span> ]
1045
- 151: <span class="ruby-keyword kw">end</span>
1046
- 152: <span class="ruby-identifier">returnChar</span>
1047
- 153: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'-'</span>
1048
- 154: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&gt;'</span>
1049
- 155: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:wiki</span>
1050
- 156: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'INLINEFUNCEND'</span>, <span class="ruby-value str">'-&gt;'</span> ]
1051
- 157: <span class="ruby-keyword kw">end</span>
1052
- 158: <span class="ruby-identifier">returnChar</span>
1053
- 159: <span class="ruby-keyword kw">end</span>
1054
- 160: <span class="ruby-keyword kw">end</span>
1055
- 161: <span class="ruby-identifier">token</span>
1056
- 162: <span class="ruby-keyword kw">end</span></pre>
884
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 194</span>
885
+ 194: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hrefEnd</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
886
+ 195: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-ivar">@hrefLastMode</span>
887
+ 196: <span class="ruby-ivar">@hrefLastMode</span> = <span class="ruby-keyword kw">nil</span>
888
+ 197: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
889
+ 198: <span class="ruby-keyword kw">end</span></pre>
1057
890
  </div>
1058
891
 
1059
892
  </div>
@@ -1064,13 +897,13 @@ Function arguments have the following formats:
1064
897
  </div>
1065
898
 
1066
899
 
1067
- <div id="next-oken-ef-method" class="method-detail ">
1068
- <a name="method-i-nextTokenHRef"></a>
900
+ <div id="href-tart-method" class="method-detail ">
901
+ <a name="method-i-hrefStart"></a>
1069
902
 
1070
903
  <div class="method-heading">
1071
904
 
1072
- <span class="method-name">nextTokenHRef</span><span
1073
- class="method-args">()</span>
905
+ <span class="method-name">hrefStart</span><span
906
+ class="method-args">(type, match)</span>
1074
907
  <span class="method-click-advice">click to toggle source</span>
1075
908
 
1076
909
  </div>
@@ -1082,43 +915,16 @@ Function arguments have the following formats:
1082
915
 
1083
916
 
1084
917
  <div class="method-source-code"
1085
- id="next-oken-ef-source">
918
+ id="href-tart-source">
1086
919
  <pre>
1087
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 188</span>
1088
- 188: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenHRef</span>
1089
- 189: <span class="ruby-identifier">token</span> = [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END&gt;'</span> ]
1090
- 190: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
1091
- 191: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
1092
- 192: <span class="ruby-comment cmt"># We've reached the end of the text.</span>
1093
- 193: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">token</span>
1094
- 194: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\t&quot;</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\n&quot;</span>
1095
- 195: <span class="ruby-comment cmt"># Sequences of tabs, spaces and newlines are treated as token</span>
1096
- 196: <span class="ruby-comment cmt"># boundaries, but otherwise they are ignored.</span>
1097
- 197: <span class="ruby-identifier">readSequence</span>(<span class="ruby-value str">&quot; \n\t&quot;</span>)
1098
- 198: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'SPACE'</span>, <span class="ruby-value str">' '</span> ]
1099
- 199: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@ignoreInlineMarkup</span>
1100
- 200: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">isIdStart</span>(<span class="ruby-identifier">peek</span>(<span class="ruby-value">1</span>))
1101
- 201: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">readId</span>(<span class="ruby-value str">''</span>, <span class="ruby-value str">'QUERY'</span>)
1102
- 202: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&gt;'</span>
1103
- 203: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unterminated_query'</span>,
1104
- 204: <span class="ruby-value str">&quot;Inline query must be terminated with '-&gt;'&quot;</span>)
1105
- 205: <span class="ruby-keyword kw">end</span>
1106
- 206: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">token</span>
1107
- 207: <span class="ruby-keyword kw">else</span>
1108
- 208: <span class="ruby-comment cmt"># It's not a query.</span>
1109
- 209: <span class="ruby-identifier">returnChar</span>(<span class="ruby-value">2</span>)
1110
- 210: <span class="ruby-ivar">@ignoreInlineMarkup</span> = <span class="ruby-keyword kw">true</span>
1111
- 211: <span class="ruby-keyword kw">next</span>
1112
- 212: <span class="ruby-keyword kw">end</span>
1113
- 213: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">']'</span>
1114
- 214: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:wiki</span>
1115
- 215: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'HREFEND'</span>, <span class="ruby-value str">']'</span> ]
1116
- 216: <span class="ruby-keyword kw">else</span>
1117
- 217: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nextTokenWord</span>(<span class="ruby-identifier">c</span>)
1118
- 218: <span class="ruby-keyword kw">end</span>
1119
- 219: <span class="ruby-keyword kw">end</span>
1120
- 220: <span class="ruby-identifier">token</span>
1121
- 221: <span class="ruby-keyword kw">end</span></pre>
920
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 186</span>
921
+ 186: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">hrefStart</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
922
+ 187: <span class="ruby-comment cmt"># When restoring :bol or :bop mode, we need to switch to :inline mode.</span>
923
+ 188: <span class="ruby-ivar">@hrefLastMode</span> = (<span class="ruby-ivar">@scannerMode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:bop</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@scannerMode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:bol</span>) <span class="ruby-operator">?</span>
924
+ 189: <span class="ruby-value">:inline</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@scannerMode</span>
925
+ 190: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:href</span>
926
+ 191: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
927
+ 192: <span class="ruby-keyword kw">end</span></pre>
1122
928
  </div>
1123
929
 
1124
930
  </div>
@@ -1129,61 +935,31 @@ Function arguments have the following formats:
1129
935
  </div>
1130
936
 
1131
937
 
1132
- <div id="next-oken-ewline-method" class="method-detail ">
1133
- <a name="method-i-nextTokenNewline"></a>
938
+ <div id="inline-ode-method" class="method-detail ">
939
+ <a name="method-i-inlineMode"></a>
1134
940
 
1135
941
  <div class="method-heading">
1136
942
 
1137
- <span class="method-name">nextTokenNewline</span><span
1138
- class="method-args">()</span>
943
+ <span class="method-name">inlineMode</span><span
944
+ class="method-args">(type, match)</span>
1139
945
  <span class="method-click-advice">click to toggle source</span>
1140
946
 
1141
947
  </div>
1142
948
 
1143
949
  <div class="method-description">
1144
950
 
1145
- <p>
1146
- We&#8217;ve just read a newline. Now we need to figure out whether this is
1147
- a LINEBREAK or just a SPACE. This is determined by looking at the next
1148
- character.
1149
- </p>
951
+
1150
952
 
1151
953
 
1152
954
 
1153
955
  <div class="method-source-code"
1154
- id="next-oken-ewline-source">
956
+ id="inline-ode-source">
1155
957
  <pre>
1156
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 379</span>
1157
- 379: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenNewline</span>
1158
- 380: <span class="ruby-comment cmt"># Newlines are pretty important as they can terminate blocks and turn</span>
1159
- 381: <span class="ruby-comment cmt"># the next character into the start of a control sequence.</span>
1160
- 382: <span class="ruby-comment cmt"># Hard linebreaks consist of a newline followed by another newline or</span>
1161
- 383: <span class="ruby-comment cmt"># any of the begin-of-line control characters.</span>
1162
- 384: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>).<span class="ruby-identifier">nil?</span>
1163
- 385: <span class="ruby-comment cmt"># We hit the end of the text.</span>
1164
- 386: [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END&gt;'</span> ]
1165
- 387: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">peekMatch</span>(<span class="ruby-value str">'['</span>)
1166
- 388: <span class="ruby-comment cmt"># the '&lt;' can be a start of a block (BLOCKFUNCSTART) or inline text</span>
1167
- 389: <span class="ruby-comment cmt"># (INLINEFUNCSTART). Only for the first case the linebreak is real.</span>
1168
- 390: <span class="ruby-identifier">returnChar</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;\n&quot;</span>
1169
- 391: <span class="ruby-comment cmt"># The next character may be a control character.</span>
1170
- 392: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">true</span>
1171
- 393: [ <span class="ruby-value str">'LINEBREAK'</span>, <span class="ruby-value str">&quot;\n&quot;</span> ]
1172
- 394: <span class="ruby-keyword kw">elsif</span> <span class="ruby-node">&quot;\n*#=-&quot;</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">c</span>)
1173
- 395: <span class="ruby-comment cmt"># These characters correspond to the first characters of a block</span>
1174
- 396: <span class="ruby-comment cmt"># element. When they are found at the begin of the line, the newline</span>
1175
- 397: <span class="ruby-comment cmt"># was really a line break.</span>
1176
- 398: <span class="ruby-identifier">returnChar</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;\n&quot;</span>
1177
- 399: <span class="ruby-comment cmt"># The next character may be a control character.</span>
1178
- 400: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">true</span>
1179
- 401: [ <span class="ruby-value str">'LINEBREAK'</span>, <span class="ruby-value str">&quot;\n&quot;</span> ]
1180
- 402: <span class="ruby-keyword kw">else</span>
1181
- 403: <span class="ruby-comment cmt"># Single line breaks are treated as spaces. Return the char after</span>
1182
- 404: <span class="ruby-comment cmt"># the newline and start with this one again.</span>
1183
- 405: <span class="ruby-identifier">returnChar</span>
1184
- 406: [ <span class="ruby-value str">'SPACE'</span>, <span class="ruby-value str">' '</span> ]
1185
- 407: <span class="ruby-keyword kw">end</span>
1186
- 408: <span class="ruby-keyword kw">end</span></pre>
958
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 111</span>
959
+ 111: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">inlineMode</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
960
+ 112: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:inline</span>
961
+ 113: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
962
+ 114: <span class="ruby-keyword kw">end</span></pre>
1187
963
  </div>
1188
964
 
1189
965
  </div>
@@ -1194,13 +970,13 @@ character.
1194
970
  </div>
1195
971
 
1196
972
 
1197
- <div id="next-oken-o-iki-nline-method" class="method-detail ">
1198
- <a name="method-i-nextTokenNoWikiInline"></a>
973
+ <div id="linebreak-method" class="method-detail ">
974
+ <a name="method-i-linebreak"></a>
1199
975
 
1200
976
  <div class="method-heading">
1201
977
 
1202
- <span class="method-name">nextTokenNoWikiInline</span><span
1203
- class="method-args">()</span>
978
+ <span class="method-name">linebreak</span><span
979
+ class="method-args">(type, match)</span>
1204
980
  <span class="method-click-advice">click to toggle source</span>
1205
981
 
1206
982
  </div>
@@ -1212,27 +988,13 @@ character.
1212
988
 
1213
989
 
1214
990
  <div class="method-source-code"
1215
- id="next-oken-o-iki-nline-source">
991
+ id="linebreak-source">
1216
992
  <pre>
1217
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 357</span>
1218
- 357: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenNoWikiInline</span>
1219
- 358: <span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>
1220
- 359: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
1221
- 360: <span class="ruby-comment cmt"># We've reached the end of the text.</span>
1222
- 361: [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END&gt;'</span> ]
1223
- 362: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\t&quot;</span>
1224
- 363: <span class="ruby-comment cmt"># Sequences of tabs or spaces are treated as token boundaries, but</span>
1225
- 364: <span class="ruby-comment cmt"># otherwise they are ignored.</span>
1226
- 365: <span class="ruby-identifier">readSequence</span>(<span class="ruby-value str">&quot; \t&quot;</span>)
1227
- 366: [ <span class="ruby-value str">'SPACE'</span>, <span class="ruby-value str">' '</span> ]
1228
- 367: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\n&quot;</span>
1229
- 368: <span class="ruby-identifier">nextTokenNewline</span>
1230
- 369: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@ignoreInlineMarkup</span>
1231
- 370: <span class="ruby-identifier">nextTokenOpenAngle</span>
1232
- 371: <span class="ruby-keyword kw">else</span>
1233
- 372: <span class="ruby-identifier">nextTokenWord</span>(<span class="ruby-identifier">c</span>)
1234
- 373: <span class="ruby-keyword kw">end</span>
1235
- 374: <span class="ruby-keyword kw">end</span></pre>
993
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 106</span>
994
+ 106: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">linebreak</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
995
+ 107: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:bop</span>
996
+ 108: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
997
+ 109: <span class="ruby-keyword kw">end</span></pre>
1236
998
  </div>
1237
999
 
1238
1000
  </div>
@@ -1243,13 +1005,13 @@ character.
1243
1005
  </div>
1244
1006
 
1245
1007
 
1246
- <div id="next-oken-pen-ngle-method" class="method-detail ">
1247
- <a name="method-i-nextTokenOpenAngle"></a>
1008
+ <div id="nowiki-nd-method" class="method-detail ">
1009
+ <a name="method-i-nowikiEnd"></a>
1248
1010
 
1249
1011
  <div class="method-heading">
1250
1012
 
1251
- <span class="method-name">nextTokenOpenAngle</span><span
1252
- class="method-args">()</span>
1013
+ <span class="method-name">nowikiEnd</span><span
1014
+ class="method-args">(type, match)</span>
1253
1015
  <span class="method-click-advice">click to toggle source</span>
1254
1016
 
1255
1017
  </div>
@@ -1261,31 +1023,13 @@ character.
1261
1023
 
1262
1024
 
1263
1025
  <div class="method-source-code"
1264
- id="next-oken-pen-ngle-source">
1026
+ id="nowiki-nd-source">
1265
1027
  <pre>
1266
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 410</span>
1267
- 410: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenOpenAngle</span>
1268
- 411: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">peekMatch</span>(<span class="ruby-value str">'nowiki&gt;'</span>)
1269
- 412: <span class="ruby-comment cmt"># Turn most wiki markup interpretation off.</span>
1270
- 413: <span class="ruby-ivar">@pos</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">'nowiki&gt;'</span>.<span class="ruby-identifier">length</span>
1271
- 414: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:nowiki</span>
1272
- 415: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">peekMatch</span>(<span class="ruby-value str">'/nowiki&gt;'</span>)
1273
- 416: <span class="ruby-comment cmt"># Turn most wiki markup interpretation on.</span>
1274
- 417: <span class="ruby-ivar">@pos</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">'/nowiki&gt;'</span>.<span class="ruby-identifier">length</span>
1275
- 418: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:wiki</span>
1276
- 419: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">peekMatch</span>(<span class="ruby-value str">'-'</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@mode</span> <span class="ruby-operator">==</span> <span class="ruby-value">:wiki</span>
1277
- 420: <span class="ruby-identifier">nextChar</span>
1278
- 421: <span class="ruby-comment cmt"># Switch the parser to function argument parsing mode.</span>
1279
- 422: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:funcarg</span>
1280
- 423: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'INLINEFUNCSTART'</span>, <span class="ruby-value str">'&lt;-'</span> ]
1281
- 424: <span class="ruby-keyword kw">else</span>
1282
- 425: <span class="ruby-comment cmt"># We've not found a valid control sequence. Push back the character</span>
1283
- 426: <span class="ruby-comment cmt"># and make sure we treat it as a normal character.</span>
1284
- 427: <span class="ruby-ivar">@ignoreInlineMarkup</span> = <span class="ruby-keyword kw">true</span>
1285
- 428: <span class="ruby-identifier">returnChar</span>
1286
- 429: <span class="ruby-keyword kw">end</span>
1287
- 430: <span class="ruby-keyword kw">nil</span>
1288
- 431: <span class="ruby-keyword kw">end</span></pre>
1028
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 146</span>
1029
+ 146: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nowikiEnd</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1030
+ 147: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:inline</span>
1031
+ 148: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
1032
+ 149: <span class="ruby-keyword kw">end</span></pre>
1289
1033
  </div>
1290
1034
 
1291
1035
  </div>
@@ -1296,13 +1040,13 @@ character.
1296
1040
  </div>
1297
1041
 
1298
1042
 
1299
- <div id="next-oken-ef-method" class="method-detail ">
1300
- <a name="method-i-nextTokenRef"></a>
1043
+ <div id="nowiki-tart-method" class="method-detail ">
1044
+ <a name="method-i-nowikiStart"></a>
1301
1045
 
1302
1046
  <div class="method-heading">
1303
1047
 
1304
- <span class="method-name">nextTokenRef</span><span
1305
- class="method-args">()</span>
1048
+ <span class="method-name">nowikiStart</span><span
1049
+ class="method-args">(type, match)</span>
1306
1050
  <span class="method-click-advice">click to toggle source</span>
1307
1051
 
1308
1052
  </div>
@@ -1314,32 +1058,13 @@ character.
1314
1058
 
1315
1059
 
1316
1060
  <div class="method-source-code"
1317
- id="next-oken-ef-source">
1061
+ id="nowiki-tart-source">
1318
1062
  <pre>
1319
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 164</span>
1320
- 164: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenRef</span>
1321
- 165: <span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>
1322
- 166: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END'</span> ] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
1323
- 167:
1324
- 168: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'|'</span> ] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'|'</span>
1325
- 169:
1326
- 170: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">']'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">peek</span> <span class="ruby-operator">==</span> <span class="ruby-value str">']'</span>
1327
- 171: <span class="ruby-identifier">nextChar</span>
1328
- 172: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:wiki</span>
1329
- 173: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'REFEND'</span>, <span class="ruby-value str">']]'</span> ]
1330
- 174: <span class="ruby-keyword kw">end</span>
1331
- 175:
1332
- 176: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">c</span>
1333
- 177: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
1334
- 178: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
1335
- 179: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'|'</span> <span class="ruby-operator">||</span> (<span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">']'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">peek</span> <span class="ruby-operator">==</span> <span class="ruby-value str">']'</span>)
1336
- 180: <span class="ruby-identifier">returnChar</span>
1337
- 181: <span class="ruby-keyword kw">break</span>
1338
- 182: <span class="ruby-keyword kw">end</span>
1339
- 183: <span class="ruby-identifier">token</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1340
- 184: <span class="ruby-keyword kw">end</span>
1341
- 185: [ <span class="ruby-value str">'WORD'</span>, <span class="ruby-identifier">token</span> ]
1342
- 186: <span class="ruby-keyword kw">end</span></pre>
1063
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 141</span>
1064
+ 141: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nowikiStart</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1065
+ 142: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:nowiki</span>
1066
+ 143: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
1067
+ 144: <span class="ruby-keyword kw">end</span></pre>
1343
1068
  </div>
1344
1069
 
1345
1070
  </div>
@@ -1350,13 +1075,13 @@ character.
1350
1075
  </div>
1351
1076
 
1352
1077
 
1353
- <div id="next-oken-iki--method" class="method-detail ">
1354
- <a name="method-i-nextTokenWikiBOL"></a>
1078
+ <div id="number-method" class="method-detail ">
1079
+ <a name="method-i-number"></a>
1355
1080
 
1356
1081
  <div class="method-heading">
1357
1082
 
1358
- <span class="method-name">nextTokenWikiBOL</span><span
1359
- class="method-args">()</span>
1083
+ <span class="method-name">number</span><span
1084
+ class="method-args">(type, match)</span>
1360
1085
  <span class="method-click-advice">click to toggle source</span>
1361
1086
 
1362
1087
  </div>
@@ -1368,79 +1093,13 @@ character.
1368
1093
 
1369
1094
 
1370
1095
  <div class="method-source-code"
1371
- id="next-oken-iki--source">
1096
+ id="number-source">
1372
1097
  <pre>
1373
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 223</span>
1374
- 223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenWikiBOL</span>
1375
- 224: <span class="ruby-comment cmt"># Some characters have only a special meaning at the start of the line.</span>
1376
- 225: <span class="ruby-comment cmt"># When the last token pushed the cursor into a new line, this flag is set</span>
1377
- 226: <span class="ruby-comment cmt"># to true.</span>
1378
- 227:
1379
- 228: <span class="ruby-comment cmt"># Reset the flag again.</span>
1380
- 229: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">false</span>
1381
- 230:
1382
- 231: <span class="ruby-comment cmt"># We already know that the last newline was a real linebreak. Further</span>
1383
- 232: <span class="ruby-comment cmt"># newlines can safely be ignored.</span>
1384
- 233: <span class="ruby-identifier">readSequence</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
1385
- 234:
1386
- 235: <span class="ruby-comment cmt"># All the lead characters of a token here also need to be registered</span>
1387
- 236: <span class="ruby-comment cmt"># with nextTokenNewline!</span>
1388
- 237: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
1389
- 238: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'='</span>
1390
- 239: <span class="ruby-comment cmt"># Headings start with 2 or more = and must be followed by a space.</span>
1391
- 240: <span class="ruby-identifier">level</span> = <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-value str">'='</span>, <span class="ruby-value">5</span>)
1392
- 241: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1393
- 242: <span class="ruby-comment cmt"># 1 = does not mean anything. Push it back and process it as normal</span>
1394
- 243: <span class="ruby-comment cmt"># text further down.</span>
1395
- 244: <span class="ruby-identifier">returnChar</span>
1396
- 245: <span class="ruby-keyword kw">else</span>
1397
- 246: <span class="ruby-comment cmt"># Between the = characters and the title text must be exactly one</span>
1398
- 247: <span class="ruby-comment cmt"># space.</span>
1399
- 248: <span class="ruby-keyword kw">return</span> [ <span class="ruby-node">&quot;TITLE#{level - 1}&quot;</span>, <span class="ruby-value str">'='</span> * <span class="ruby-identifier">level</span> ] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span>
1400
- 249: <span class="ruby-comment cmt"># If that's missing, The = are treated as normal text further down.</span>
1401
- 250: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">level</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
1402
- 251: <span class="ruby-keyword kw">end</span>
1403
- 252: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'-'</span>
1404
- 253: <span class="ruby-comment cmt"># Horizontal ruler. Must have exactly 4 -.</span>
1405
- 254: <span class="ruby-identifier">level</span> = <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-value str">'-'</span>, <span class="ruby-value">4</span>)
1406
- 255: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">&quot;HLINE&quot;</span>, <span class="ruby-value str">'-'</span> * <span class="ruby-value">4</span> ] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-value">4</span>
1407
- 256: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">level</span>)
1408
- 257: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'*'</span>
1409
- 258: <span class="ruby-comment cmt"># Bullet lists start with one to three * characters.</span>
1410
- 259: <span class="ruby-identifier">level</span> = <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-value str">'*'</span>, <span class="ruby-value">4</span>)
1411
- 260: <span class="ruby-comment cmt"># Between the * characters and the bullet text must be exactly one</span>
1412
- 261: <span class="ruby-comment cmt"># space.</span>
1413
- 262: <span class="ruby-keyword kw">return</span> [ <span class="ruby-node">&quot;BULLET#{level}&quot;</span>, <span class="ruby-value str">'*'</span> * <span class="ruby-identifier">level</span> ] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span>
1414
- 263: <span class="ruby-comment cmt"># If that's missing, The # are treated as normal text further down.</span>
1415
- 264: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">level</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
1416
- 265: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'#'</span>
1417
- 266: <span class="ruby-comment cmt"># Numbered list start with one to three # characters.</span>
1418
- 267: <span class="ruby-identifier">level</span> = <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-value str">'#'</span>, <span class="ruby-value">4</span>)
1419
- 268: <span class="ruby-comment cmt"># Between the # characters and the bullet text must be exactly one</span>
1420
- 269: <span class="ruby-comment cmt"># space.</span>
1421
- 270: <span class="ruby-keyword kw">return</span> [ <span class="ruby-node">&quot;NUMBER#{level}&quot;</span>, <span class="ruby-value str">'#'</span> * <span class="ruby-identifier">level</span> ] <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span>
1422
- 271: <span class="ruby-comment cmt"># If that's missing, The # are treated as normal text further down.</span>
1423
- 272: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">level</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span>)
1424
- 273: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'&lt;'</span>
1425
- 274: <span class="ruby-comment cmt"># This may be the start of a block generating function.</span>
1426
- 275: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'['</span>
1427
- 276: <span class="ruby-comment cmt"># Switch the parser to block function argument parsing mode.</span>
1428
- 277: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:funcarg</span>
1429
- 278: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'BLOCKFUNCSTART'</span>, <span class="ruby-value str">'&lt;['</span> ]
1430
- 279: <span class="ruby-keyword kw">end</span>
1431
- 280: <span class="ruby-comment cmt"># Maybe not.</span>
1432
- 281: <span class="ruby-identifier">returnChar</span>(<span class="ruby-value">2</span>)
1433
- 282: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">' '</span>
1434
- 283: <span class="ruby-comment cmt"># Lines that start with a space are treated as verbatim text.</span>
1435
- 284: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">&quot;PRE&quot;</span>, <span class="ruby-identifier">readCode</span> ] <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">peek</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;\n&quot;</span>
1436
- 285: <span class="ruby-keyword kw">else</span>
1437
- 286: <span class="ruby-comment cmt"># If the character is not a known control character we push it back</span>
1438
- 287: <span class="ruby-comment cmt"># and treat it as normal text further down.</span>
1439
- 288: <span class="ruby-identifier">returnChar</span>
1440
- 289: <span class="ruby-keyword kw">end</span>
1441
- 290:
1442
- 291: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1443
- 292: <span class="ruby-keyword kw">end</span></pre>
1098
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 130</span>
1099
+ 130: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">number</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1100
+ 131: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:inline</span>
1101
+ 132: [ <span class="ruby-node">&quot;NUMBER#{match.length - 1}&quot;</span>, <span class="ruby-identifier">match</span> ]
1102
+ 133: <span class="ruby-keyword kw">end</span></pre>
1444
1103
  </div>
1445
1104
 
1446
1105
  </div>
@@ -1451,13 +1110,13 @@ character.
1451
1110
  </div>
1452
1111
 
1453
1112
 
1454
- <div id="next-oken-iki-nline-method" class="method-detail ">
1455
- <a name="method-i-nextTokenWikiInline"></a>
1113
+ <div id="pre-method" class="method-detail ">
1114
+ <a name="method-i-pre"></a>
1456
1115
 
1457
1116
  <div class="method-heading">
1458
1117
 
1459
- <span class="method-name">nextTokenWikiInline</span><span
1460
- class="method-args">()</span>
1118
+ <span class="method-name">pre</span><span
1119
+ class="method-args">(type, match)</span>
1461
1120
  <span class="method-click-advice">click to toggle source</span>
1462
1121
 
1463
1122
  </div>
@@ -1469,71 +1128,12 @@ character.
1469
1128
 
1470
1129
 
1471
1130
  <div class="method-source-code"
1472
- id="next-oken-iki-nline-source">
1131
+ id="pre-source">
1473
1132
  <pre>
1474
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 294</span>
1475
- 294: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenWikiInline</span>
1476
- 295: <span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>
1477
- 296: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
1478
- 297: <span class="ruby-comment cmt"># We've reached the end of the text.</span>
1479
- 298: [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'&lt;END&gt;'</span> ]
1480
- 299: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\t&quot;</span>
1481
- 300: <span class="ruby-comment cmt"># Sequences of tabs or spaces are treated as token boundaries, but</span>
1482
- 301: <span class="ruby-comment cmt"># otherwise they are ignored.</span>
1483
- 302: <span class="ruby-identifier">readSequence</span>(<span class="ruby-value str">&quot; \t&quot;</span>)
1484
- 303: [ <span class="ruby-value str">'SPACE'</span>, <span class="ruby-value str">' '</span> ]
1485
- 304: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@ignoreInlineMarkup</span>
1486
- 305: <span class="ruby-comment cmt"># Sequence of 2 ' means italic, 3 ' means bold, 4 ' means monospaced</span>
1487
- 306: <span class="ruby-comment cmt"># code, 5 ' means italic and bold. Anything else is just normal text.</span>
1488
- 307: <span class="ruby-identifier">level</span> = <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-value str">&quot;'&quot;</span>, <span class="ruby-value">5</span>)
1489
- 308: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-value">2</span>
1490
- 309: [ <span class="ruby-value str">'ITALIC'</span>, <span class="ruby-value str">&quot;'&quot;</span> * <span class="ruby-identifier">level</span> ]
1491
- 310: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-value">3</span>
1492
- 311: [ <span class="ruby-value str">'BOLD'</span>, <span class="ruby-value str">&quot;'&quot;</span> * <span class="ruby-identifier">level</span> ]
1493
- 312: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-value">4</span>
1494
- 313: [ <span class="ruby-value str">'CODE'</span>, <span class="ruby-value str">&quot;'&quot;</span> * <span class="ruby-identifier">level</span> ]
1495
- 314: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-value">5</span>
1496
- 315: [ <span class="ruby-value str">'BOLDITALIC'</span>, <span class="ruby-value str">&quot;'&quot;</span> * <span class="ruby-identifier">level</span> ]
1497
- 316: <span class="ruby-keyword kw">else</span>
1498
- 317: <span class="ruby-comment cmt"># We have not found the right syntax. Treat the found characters as</span>
1499
- 318: <span class="ruby-comment cmt"># normal text. Push all ' back and start again but ignoring the '</span>
1500
- 319: <span class="ruby-comment cmt"># code for once.</span>
1501
- 320: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">level</span>)
1502
- 321: <span class="ruby-ivar">@ignoreInlineMarkup</span> = <span class="ruby-keyword kw">true</span>
1503
- 322: <span class="ruby-keyword kw">nil</span>
1504
- 323: <span class="ruby-keyword kw">end</span>
1505
- 324: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@ignoreInlineMarkup</span>
1506
- 325: <span class="ruby-identifier">level</span> = <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-value str">'='</span>, <span class="ruby-value">5</span>)
1507
- 326: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
1508
- 327: [ <span class="ruby-node">&quot;TITLE#{level - 1}END&quot;</span>, <span class="ruby-value str">'='</span> * <span class="ruby-identifier">level</span> ]
1509
- 328: <span class="ruby-keyword kw">else</span>
1510
- 329: <span class="ruby-comment cmt"># We have not found the right syntax. Treat found characters as</span>
1511
- 330: <span class="ruby-comment cmt"># normal text. Push all = back and start again but ignoring the =</span>
1512
- 331: <span class="ruby-comment cmt"># code for once.</span>
1513
- 332: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">level</span>)
1514
- 333: <span class="ruby-ivar">@ignoreInlineMarkup</span> = <span class="ruby-keyword kw">true</span>
1515
- 334: <span class="ruby-keyword kw">nil</span>
1516
- 335: <span class="ruby-keyword kw">end</span>
1517
- 336: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'['</span>
1518
- 337: <span class="ruby-identifier">level</span> = <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-value str">'['</span>, <span class="ruby-value">2</span>)
1519
- 338: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">level</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span>
1520
- 339: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:href</span>
1521
- 340: [ <span class="ruby-value str">'HREF'</span> , <span class="ruby-value str">'['</span> ]
1522
- 341: <span class="ruby-keyword kw">else</span>
1523
- 342: <span class="ruby-ivar">@mode</span> = <span class="ruby-value">:ref</span>
1524
- 343: [ <span class="ruby-value str">'REF'</span>, <span class="ruby-value str">'[['</span> ]
1525
- 344: <span class="ruby-keyword kw">end</span>
1526
- 345: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">']'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">peek</span> <span class="ruby-operator">==</span> <span class="ruby-value str">']'</span>
1527
- 346: <span class="ruby-identifier">nextChar</span>
1528
- 347: [ <span class="ruby-value str">'REFEND'</span>, <span class="ruby-value str">']]'</span> ]
1529
- 348: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\n&quot;</span>
1530
- 349: <span class="ruby-identifier">nextTokenNewline</span>
1531
- 350: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;'</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@ignoreInlineMarkup</span>
1532
- 351: <span class="ruby-identifier">nextTokenOpenAngle</span>
1533
- 352: <span class="ruby-keyword kw">else</span>
1534
- 353: <span class="ruby-identifier">nextTokenWord</span>(<span class="ruby-identifier">c</span>)
1535
- 354: <span class="ruby-keyword kw">end</span>
1536
- 355: <span class="ruby-keyword kw">end</span></pre>
1133
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 165</span>
1134
+ 165: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pre</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1135
+ 166: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] ]
1136
+ 167: <span class="ruby-keyword kw">end</span></pre>
1537
1137
  </div>
1538
1138
 
1539
1139
  </div>
@@ -1544,97 +1144,31 @@ character.
1544
1144
  </div>
1545
1145
 
1546
1146
 
1547
- <div id="next-oken-ord-method" class="method-detail ">
1548
- <a name="method-i-nextTokenWord"></a>
1147
+ <div id="query-method" class="method-detail ">
1148
+ <a name="method-i-query"></a>
1549
1149
 
1550
1150
  <div class="method-heading">
1551
1151
 
1552
- <span class="method-name">nextTokenWord</span><span
1553
- class="method-args">(c)</span>
1152
+ <span class="method-name">query</span><span
1153
+ class="method-args">(type, match)</span>
1554
1154
  <span class="method-click-advice">click to toggle source</span>
1555
1155
 
1556
1156
  </div>
1557
1157
 
1558
1158
  <div class="method-description">
1559
1159
 
1560
- <p>
1561
- <em>c</em> does not match any start of a control sequence, so we read
1562
- characters until we find the end of the word.
1563
- </p>
1564
1160
 
1565
-
1566
-
1567
- <div class="method-source-code"
1568
- id="next-oken-ord-source">
1569
- <pre>
1570
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 435</span>
1571
- 435: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextTokenWord</span>(<span class="ruby-identifier">c</span>)
1572
- 436: <span class="ruby-comment cmt"># Reset this flag again.</span>
1573
- 437: <span class="ruby-ivar">@ignoreInlineMarkup</span> = <span class="ruby-keyword kw">false</span>
1574
- 438: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
1575
- 439: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1576
- 440: <span class="ruby-comment cmt"># Now we can collect characters of a word until we hit a whitespace.</span>
1577
- 441: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-operator">!</span><span class="ruby-value str">&quot; \n\t&quot;</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">c</span>)
1578
- 442: <span class="ruby-keyword kw">case</span> <span class="ruby-ivar">@mode</span>
1579
- 443: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:wiki</span>
1580
- 444: <span class="ruby-comment cmt"># Or at least two ' characters in a row.</span>
1581
- 445: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;'&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">peek</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;'&quot;</span>
1582
- 446: <span class="ruby-comment cmt"># Or a ] or &lt;</span>
1583
- 447: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-value str">']&lt;'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">c</span>)
1584
- 448: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:href</span>
1585
- 449: <span class="ruby-comment cmt"># Look for - of the end mark -&gt; end ']'</span>
1586
- 450: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-value str">'-]&lt;'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">c</span>)
1587
- 451: <span class="ruby-keyword kw">else</span>
1588
- 452: <span class="ruby-comment cmt"># Make sure we find the &lt;/nowiki&gt; tag even within a word.</span>
1589
- 453: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'&lt;'</span>
1590
- 454: <span class="ruby-keyword kw">end</span>
1591
- 455: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1592
- 456: <span class="ruby-keyword kw">end</span>
1593
- 457: <span class="ruby-comment cmt"># Return the character that indicated the word end.</span>
1594
- 458: <span class="ruby-identifier">returnChar</span>
1595
- 459: [ <span class="ruby-value str">'WORD'</span>, <span class="ruby-identifier">str</span> ]
1596
- 460: <span class="ruby-keyword kw">end</span></pre>
1597
- </div>
1598
-
1599
- </div>
1600
-
1601
-
1602
-
1603
-
1604
- </div>
1605
-
1606
-
1607
- <div id="peek-method" class="method-detail ">
1608
- <a name="method-i-peek"></a>
1609
-
1610
- <div class="method-heading">
1611
-
1612
- <span class="method-name">peek</span><span
1613
- class="method-args">(lookAhead = 1)</span>
1614
- <span class="method-click-advice">click to toggle source</span>
1615
-
1616
- </div>
1617
-
1618
- <div class="method-description">
1619
-
1620
- <p>
1621
- Return a character further up the text without moving the cursor.
1622
- <em>lookAhead</em> is the number of characters to peek ahead. A value of 0
1623
- would return the last character provided by nextChar().
1624
- </p>
1625
1161
 
1626
1162
 
1627
1163
 
1628
1164
  <div class="method-source-code"
1629
- id="peek-source">
1165
+ id="query-source">
1630
1166
  <pre>
1631
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 510</span>
1632
- 510: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">peek</span>(<span class="ruby-identifier">lookAhead</span> = <span class="ruby-value">1</span>)
1633
- 511: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-ivar">@pos</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">lookAhead</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@textLength</span>
1634
- 512: <span class="ruby-comment cmt"># Since Ruby 1.9 is returning Strings for String#[] we need to emulate</span>
1635
- 513: <span class="ruby-comment cmt"># this for Ruby 1.8.</span>
1636
- 514: <span class="ruby-value str">''</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@text</span>[<span class="ruby-ivar">@pos</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">lookAhead</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>]
1637
- 515: <span class="ruby-keyword kw">end</span></pre>
1167
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 181</span>
1168
+ 181: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">query</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1169
+ 182: <span class="ruby-comment cmt"># Remove &lt;- and -&gt;.</span>
1170
+ 183: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>[<span class="ruby-value">2</span><span class="ruby-operator">..</span><span class="ruby-value">3</span>] ]
1171
+ 184: <span class="ruby-keyword kw">end</span></pre>
1638
1172
  </div>
1639
1173
 
1640
1174
  </div>
@@ -1645,35 +1179,32 @@ would return the last character provided by nextChar().
1645
1179
  </div>
1646
1180
 
1647
1181
 
1648
- <div id="peek-atch-method" class="method-detail ">
1649
- <a name="method-i-peekMatch"></a>
1182
+ <div id="quotes-method" class="method-detail ">
1183
+ <a name="method-i-quotes"></a>
1650
1184
 
1651
1185
  <div class="method-heading">
1652
1186
 
1653
- <span class="method-name">peekMatch</span><span
1654
- class="method-args">(word)</span>
1187
+ <span class="method-name">quotes</span><span
1188
+ class="method-args">(type, match)</span>
1655
1189
  <span class="method-click-advice">click to toggle source</span>
1656
1190
 
1657
1191
  </div>
1658
1192
 
1659
1193
  <div class="method-description">
1660
1194
 
1661
- <p>
1662
- Return true if the next characters match exactly the character sequence in
1663
- word.
1664
- </p>
1195
+
1665
1196
 
1666
1197
 
1667
1198
 
1668
1199
  <div class="method-source-code"
1669
- id="peek-atch-source">
1200
+ id="quotes-source">
1670
1201
  <pre>
1671
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 519</span>
1672
- 519: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">peekMatch</span>(<span class="ruby-identifier">word</span>)
1673
- 520: <span class="ruby-comment cmt"># Since Ruby 1.9 is returning Strings for String#[] we need to emulate</span>
1674
- 521: <span class="ruby-comment cmt"># this for Ruby 1.8.</span>
1675
- 522: (<span class="ruby-value str">''</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-ivar">@text</span>[<span class="ruby-ivar">@pos</span>, <span class="ruby-identifier">word</span>.<span class="ruby-identifier">length</span>]) <span class="ruby-operator">==</span> <span class="ruby-identifier">word</span>
1676
- 523: <span class="ruby-keyword kw">end</span></pre>
1202
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 135</span>
1203
+ 135: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">quotes</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1204
+ 136: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:inline</span>
1205
+ 137: <span class="ruby-identifier">types</span> = [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">'ITALIC'</span>, <span class="ruby-value str">'BOLD'</span> , <span class="ruby-value str">'CODE'</span>, <span class="ruby-value str">'BOLDITALIC'</span> ]
1206
+ 138: [ <span class="ruby-identifier">types</span>[<span class="ruby-identifier">match</span>.<span class="ruby-identifier">length</span>], <span class="ruby-identifier">match</span> ]
1207
+ 139: <span class="ruby-keyword kw">end</span></pre>
1677
1208
  </div>
1678
1209
 
1679
1210
  </div>
@@ -1684,13 +1215,13 @@ word.
1684
1215
  </div>
1685
1216
 
1686
1217
 
1687
- <div id="read-lanks-method" class="method-detail ">
1688
- <a name="method-i-readBlanks"></a>
1218
+ <div id="ref-nd-method" class="method-detail ">
1219
+ <a name="method-i-refEnd"></a>
1689
1220
 
1690
1221
  <div class="method-heading">
1691
1222
 
1692
- <span class="method-name">readBlanks</span><span
1693
- class="method-args">(c)</span>
1223
+ <span class="method-name">refEnd</span><span
1224
+ class="method-args">(type, match)</span>
1694
1225
  <span class="method-click-advice">click to toggle source</span>
1695
1226
 
1696
1227
  </div>
@@ -1702,18 +1233,13 @@ word.
1702
1233
 
1703
1234
 
1704
1235
  <div class="method-source-code"
1705
- id="read-lanks-source">
1236
+ id="ref-nd-source">
1706
1237
  <pre>
1707
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 573</span>
1708
- 573: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readBlanks</span>(<span class="ruby-identifier">c</span>)
1709
- 574: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1710
- 575: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;\n&quot;</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;\t&quot;</span>
1711
- 576: <span class="ruby-identifier">returnChar</span>
1712
- 577: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
1713
- 578: <span class="ruby-keyword kw">end</span>
1714
- 579: <span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>
1715
- 580: <span class="ruby-keyword kw">end</span>
1716
- 581: <span class="ruby-keyword kw">end</span></pre>
1238
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 205</span>
1239
+ 205: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">refEnd</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1240
+ 206: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:inline</span>
1241
+ 207: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
1242
+ 208: <span class="ruby-keyword kw">end</span></pre>
1717
1243
  </div>
1718
1244
 
1719
1245
  </div>
@@ -1724,50 +1250,31 @@ word.
1724
1250
  </div>
1725
1251
 
1726
1252
 
1727
- <div id="read-ode-method" class="method-detail ">
1728
- <a name="method-i-readCode"></a>
1253
+ <div id="ref-tart-method" class="method-detail ">
1254
+ <a name="method-i-refStart"></a>
1729
1255
 
1730
1256
  <div class="method-heading">
1731
1257
 
1732
- <span class="method-name">readCode</span><span
1733
- class="method-args">()</span>
1258
+ <span class="method-name">refStart</span><span
1259
+ class="method-args">(type, match)</span>
1734
1260
  <span class="method-click-advice">click to toggle source</span>
1735
1261
 
1736
1262
  </div>
1737
1263
 
1738
1264
  <div class="method-description">
1739
1265
 
1740
- <p>
1741
- Read a block of pre-formatted text. All lines must start with a space
1742
- character.
1743
- </p>
1266
+
1744
1267
 
1745
1268
 
1746
1269
 
1747
1270
  <div class="method-source-code"
1748
- id="read-ode-source">
1271
+ id="ref-tart-source">
1749
1272
  <pre>
1750
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 552</span>
1751
- 552: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readCode</span>
1752
- 553: <span class="ruby-identifier">tok</span> = <span class="ruby-value str">''</span>
1753
- 554: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
1754
- 555: <span class="ruby-comment cmt"># Read until the end of the line</span>
1755
- 556: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">&quot;\n&quot;</span>
1756
- 557: <span class="ruby-comment cmt"># Append a found characters.</span>
1757
- 558: <span class="ruby-identifier">tok</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1758
- 559: <span class="ruby-keyword kw">end</span>
1759
- 560: <span class="ruby-comment cmt"># Append the newline.</span>
1760
- 561: <span class="ruby-identifier">tok</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1761
- 562: <span class="ruby-comment cmt"># If the next line does not start with a space, we've reached the end of</span>
1762
- 563: <span class="ruby-comment cmt"># the code block.</span>
1763
- 564: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">' '</span>
1764
- 565: <span class="ruby-keyword kw">break</span>
1765
- 566: <span class="ruby-keyword kw">end</span>
1766
- 567: <span class="ruby-keyword kw">end</span>
1767
- 568: <span class="ruby-identifier">returnChar</span>
1768
- 569: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">true</span>
1769
- 570: <span class="ruby-identifier">tok</span>
1770
- 571: <span class="ruby-keyword kw">end</span></pre>
1273
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 200</span>
1274
+ 200: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">refStart</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1275
+ 201: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:ref</span>
1276
+ 202: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
1277
+ 203: <span class="ruby-keyword kw">end</span></pre>
1771
1278
  </div>
1772
1279
 
1773
1280
  </div>
@@ -1778,13 +1285,13 @@ character.
1778
1285
  </div>
1779
1286
 
1780
1287
 
1781
- <div id="read-d-method" class="method-detail ">
1782
- <a name="method-i-readId"></a>
1288
+ <div id="space-method" class="method-detail ">
1289
+ <a name="method-i-space"></a>
1783
1290
 
1784
1291
  <div class="method-heading">
1785
1292
 
1786
- <span class="method-name">readId</span><span
1787
- class="method-args">(c, tokenType = 'ID')</span>
1293
+ <span class="method-name">space</span><span
1294
+ class="method-args">(type, match)</span>
1788
1295
  <span class="method-click-advice">click to toggle source</span>
1789
1296
 
1790
1297
  </div>
@@ -1796,20 +1303,18 @@ character.
1796
1303
 
1797
1304
 
1798
1305
  <div class="method-source-code"
1799
- id="read-d-source">
1306
+ id="space-source">
1800
1307
  <pre>
1801
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 587</span>
1802
- 587: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readId</span>(<span class="ruby-identifier">c</span>, <span class="ruby-identifier">tokenType</span> = <span class="ruby-value str">'ID'</span>)
1803
- 588: <span class="ruby-identifier">token</span> = <span class="ruby-value str">&quot;&quot;</span>
1804
- 589: <span class="ruby-identifier">token</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1805
- 590: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&amp;&amp;</span>
1806
- 591: ((<span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span>
1807
- 592: <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'_'</span>)
1808
- 593: <span class="ruby-identifier">token</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1809
- 594: <span class="ruby-keyword kw">end</span>
1810
- 595: <span class="ruby-identifier">returnChar</span>
1811
- 596: <span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">tokenType</span>, <span class="ruby-identifier">token</span> ]
1812
- 597: <span class="ruby-keyword kw">end</span></pre>
1308
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 96</span>
1309
+ 96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">space</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1310
+ 97: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">&quot;\n&quot;</span>)
1311
+ 98: <span class="ruby-comment cmt"># If the match contains a linebreak we switch to :bol mode.</span>
1312
+ 99: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:bol</span>
1313
+ 100: <span class="ruby-comment cmt"># And return an empty string.</span>
1314
+ 101: <span class="ruby-identifier">match</span> = <span class="ruby-value str">''</span>
1315
+ 102: <span class="ruby-keyword kw">end</span>
1316
+ 103: [<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> ]
1317
+ 104: <span class="ruby-keyword kw">end</span></pre>
1813
1318
  </div>
1814
1319
 
1815
1320
  </div>
@@ -1820,84 +1325,32 @@ character.
1820
1325
  </div>
1821
1326
 
1822
1327
 
1823
- <div id="read-equence-method" class="method-detail ">
1824
- <a name="method-i-readSequence"></a>
1328
+ <div id="sq-tring-method" class="method-detail ">
1329
+ <a name="method-i-sqString"></a>
1825
1330
 
1826
1331
  <div class="method-heading">
1827
1332
 
1828
- <span class="method-name">readSequence</span><span
1829
- class="method-args">(chars)</span>
1333
+ <span class="method-name">sqString</span><span
1334
+ class="method-args">(type, match)</span>
1830
1335
  <span class="method-click-advice">click to toggle source</span>
1831
1336
 
1832
1337
  </div>
1833
1338
 
1834
1339
  <div class="method-description">
1835
1340
 
1836
- <p>
1837
- Read a sequence of characters that are all contained in the <em>chars</em>
1838
- Array. If a character is found that is not in <em>chars</em> the method
1839
- returns the so far found sequence of chars as <a
1840
- href="../String.html">String</a>.
1841
- </p>
1842
-
1843
-
1844
1341
 
1845
- <div class="method-source-code"
1846
- id="read-equence-source">
1847
- <pre>
1848
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 528</span>
1849
- 528: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readSequence</span>(<span class="ruby-identifier">chars</span>)
1850
- 529: <span class="ruby-identifier">sequence</span> = <span class="ruby-value str">''</span>
1851
- 530: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">chars</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">c</span>)
1852
- 531: <span class="ruby-identifier">sequence</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1853
- 532: <span class="ruby-keyword kw">end</span>
1854
- 533: <span class="ruby-comment cmt"># Push back the character that did no longer match.</span>
1855
- 534: <span class="ruby-identifier">returnChar</span>
1856
- 535: <span class="ruby-identifier">sequence</span>
1857
- 536: <span class="ruby-keyword kw">end</span></pre>
1858
- </div>
1859
-
1860
- </div>
1861
-
1862
-
1863
-
1864
-
1865
- </div>
1866
-
1867
-
1868
- <div id="read-equence-ax-method" class="method-detail ">
1869
- <a name="method-i-readSequenceMax"></a>
1870
-
1871
- <div class="method-heading">
1872
-
1873
- <span class="method-name">readSequenceMax</span><span
1874
- class="method-args">(c, max = 3)</span>
1875
- <span class="method-click-advice">click to toggle source</span>
1876
-
1877
- </div>
1878
-
1879
- <div class="method-description">
1880
-
1881
- <p>
1882
- Read a sequence of <em>c</em> characters until a different character is
1883
- found or <em>max</em> count has been reached.
1884
- </p>
1885
1342
 
1886
1343
 
1887
1344
 
1888
1345
  <div class="method-source-code"
1889
- id="read-equence-ax-source">
1346
+ id="sq-tring-source">
1890
1347
  <pre>
1891
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 540</span>
1892
- 540: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readSequenceMax</span>(<span class="ruby-identifier">c</span>, <span class="ruby-identifier">max</span> = <span class="ruby-value">3</span>)
1893
- 541: <span class="ruby-identifier">i</span> = <span class="ruby-value">1</span>
1894
- 542: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&lt;</span> <span class="ruby-identifier">max</span>
1895
- 543: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1896
- 544: <span class="ruby-keyword kw">end</span>
1897
- 545: <span class="ruby-comment cmt"># Return the non matching character.</span>
1898
- 546: <span class="ruby-identifier">returnChar</span>
1899
- 547: <span class="ruby-identifier">i</span>
1900
- 548: <span class="ruby-keyword kw">end</span></pre>
1348
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 175</span>
1349
+ 175: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sqString</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1350
+ 176: <span class="ruby-comment cmt"># Remove first and last character and remove backslashes from quoted</span>
1351
+ 177: <span class="ruby-comment cmt"># single quotes.</span>
1352
+ 178: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\'/</span>, <span class="ruby-value str">&quot;'&quot;</span>) ]
1353
+ 179: <span class="ruby-keyword kw">end</span></pre>
1901
1354
  </div>
1902
1355
 
1903
1356
  </div>
@@ -1908,13 +1361,13 @@ found or <em>max</em> count has been reached.
1908
1361
  </div>
1909
1362
 
1910
1363
 
1911
- <div id="read-tring-method" class="method-detail ">
1912
- <a name="method-i-readString"></a>
1364
+ <div id="title-nd-method" class="method-detail ">
1365
+ <a name="method-i-titleEnd"></a>
1913
1366
 
1914
1367
  <div class="method-heading">
1915
1368
 
1916
- <span class="method-name">readString</span><span
1917
- class="method-args">(terminator)</span>
1369
+ <span class="method-name">titleEnd</span><span
1370
+ class="method-args">(type, match)</span>
1918
1371
  <span class="method-click-advice">click to toggle source</span>
1919
1372
 
1920
1373
  </div>
@@ -1926,24 +1379,12 @@ found or <em>max</em> count has been reached.
1926
1379
 
1927
1380
 
1928
1381
  <div class="method-source-code"
1929
- id="read-tring-source">
1382
+ id="title-nd-source">
1930
1383
  <pre>
1931
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 599</span>
1932
- 599: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readString</span>(<span class="ruby-identifier">terminator</span>)
1933
- 600: <span class="ruby-identifier">token</span> = <span class="ruby-value str">&quot;&quot;</span>
1934
- 601: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">terminator</span>
1935
- 602: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">&quot;\\&quot;</span>
1936
- 603: <span class="ruby-comment cmt"># Terminators can be used as regular characters when prefixed by a \.</span>
1937
- 604: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">terminator</span>
1938
- 605: <span class="ruby-comment cmt"># \ followed by non-terminator. Just add both.</span>
1939
- 606: <span class="ruby-identifier">token</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">&quot;\\&quot;</span>
1940
- 607: <span class="ruby-keyword kw">end</span>
1941
- 608: <span class="ruby-keyword kw">end</span>
1942
- 609: <span class="ruby-identifier">token</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">c</span>
1943
- 610: <span class="ruby-keyword kw">end</span>
1944
- 611:
1945
- 612: [ <span class="ruby-value str">'STRING'</span>, <span class="ruby-identifier">token</span> ]
1946
- 613: <span class="ruby-keyword kw">end</span></pre>
1384
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 121</span>
1385
+ 121: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">titleEnd</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1386
+ 122: [ <span class="ruby-node">&quot;TITLE#{match.length - 1}END&quot;</span>, <span class="ruby-identifier">match</span> ]
1387
+ 123: <span class="ruby-keyword kw">end</span></pre>
1947
1388
  </div>
1948
1389
 
1949
1390
  </div>
@@ -1954,50 +1395,31 @@ found or <em>max</em> count has been reached.
1954
1395
  </div>
1955
1396
 
1956
1397
 
1957
- <div id="return-har-method" class="method-detail ">
1958
- <a name="method-i-returnChar"></a>
1398
+ <div id="title-tart-method" class="method-detail ">
1399
+ <a name="method-i-titleStart"></a>
1959
1400
 
1960
1401
  <div class="method-heading">
1961
1402
 
1962
- <span class="method-name">returnChar</span><span
1963
- class="method-args">(n = 1)</span>
1403
+ <span class="method-name">titleStart</span><span
1404
+ class="method-args">(type, match)</span>
1964
1405
  <span class="method-click-advice">click to toggle source</span>
1965
1406
 
1966
1407
  </div>
1967
1408
 
1968
1409
  <div class="method-description">
1969
1410
 
1970
- <p>
1971
- Return one or more characters. <em>n</em> is the number of characters to
1972
- move back the cursor.
1973
- </p>
1411
+
1974
1412
 
1975
1413
 
1976
1414
 
1977
1415
  <div class="method-source-code"
1978
- id="return-har-source">
1416
+ id="title-tart-source">
1979
1417
  <pre>
1980
- <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 486</span>
1981
- 486: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">n</span> = <span class="ruby-value">1</span>)
1982
- 487: <span class="ruby-identifier">crossedNewline</span> = <span class="ruby-keyword kw">false</span>
1983
- 488: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pos</span> <span class="ruby-operator">&lt;=</span> <span class="ruby-ivar">@textLength</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@pos</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-identifier">n</span>
1984
- 489: <span class="ruby-comment cmt"># Check for newlines and update @lineNo accordingly.</span>
1985
- 490: <span class="ruby-identifier">n</span>.<span class="ruby-identifier">times</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
1986
- 491: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@text</span>[<span class="ruby-ivar">@pos</span> <span class="ruby-operator">-</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
1987
- 492: <span class="ruby-identifier">crossedNewline</span> = <span class="ruby-keyword kw">true</span>
1988
- 493: <span class="ruby-ivar">@lineNo</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
1989
- 494: <span class="ruby-keyword kw">end</span>
1990
- 495: <span class="ruby-keyword kw">end</span>
1991
- 496: <span class="ruby-ivar">@pos</span> <span class="ruby-operator">-=</span> <span class="ruby-identifier">n</span>
1992
- 497: <span class="ruby-keyword kw">end</span>
1993
- 498:
1994
- 499: <span class="ruby-comment cmt"># If we have crossed a newline during rewind, we have to find the start of</span>
1995
- 500: <span class="ruby-comment cmt"># the current line again.</span>
1996
- 501: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">crossedNewline</span>
1997
- 502: <span class="ruby-ivar">@lineStart</span> = <span class="ruby-ivar">@pos</span>
1998
- 503: <span class="ruby-ivar">@lineStart</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">while</span> <span class="ruby-ivar">@lineStart</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@text</span>[<span class="ruby-ivar">@lineStart</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>] <span class="ruby-operator">!=</span> <span class="ruby-value">\n\</span>
1999
- 504: <span class="ruby-keyword kw">end</span>
2000
- 505: <span class="ruby-keyword kw">end</span></pre>
1418
+ <span class="ruby-comment cmt"># File lib/RichTextScanner.rb, line 116</span>
1419
+ 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">titleStart</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1420
+ 117: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:inline</span>
1421
+ 118: [ <span class="ruby-node">&quot;TITLE#{match.length - 1}&quot;</span>, <span class="ruby-identifier">match</span> ]
1422
+ 119: <span class="ruby-keyword kw">end</span></pre>
2001
1423
  </div>
2002
1424
 
2003
1425
  </div>