taskjuggler 0.0.7 → 0.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (415) hide show
  1. data/CHANGELOG +119 -0
  2. data/benchmarks/allocatedSlots.tjp +1602 -0
  3. data/benchmarks/booking.tjp +40 -30
  4. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/css/tjmanual.css +0 -0
  5. data/{test/TestSuite/Scheduler/Correct → benchmarks}/css/tjreport.css +1 -0
  6. data/benchmarks/gantt.tjp +57 -0
  7. data/benchmarks/htmltaskreport.tjp +26 -1
  8. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/details.png +0 -0
  9. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-green.png +0 -0
  10. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-red.png +0 -0
  11. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-yellow.png +0 -0
  12. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resource.png +0 -0
  13. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resourcegroup.png +0 -0
  14. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/task.png +0 -0
  15. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/taskgroup.png +0 -0
  16. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-down.png +0 -0
  17. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-flat.png +0 -0
  18. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-up.png +0 -0
  19. data/benchmarks/profile.clt +36082 -0
  20. data/benchmarks/profile.html +58182 -0
  21. data/benchmarks/runbench.rb +6 -0
  22. data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/scripts/wz_tooltip.js +0 -0
  23. data/doc/AppConfig.html +85 -37
  24. data/doc/Arguments.html +11 -1
  25. data/doc/CHANGELOG.html +131 -2
  26. data/doc/COPYING.html +11 -1
  27. data/doc/Object.html +12 -3
  28. data/doc/README.html +11 -1
  29. data/doc/RuntimeConfig.html +11 -1
  30. data/doc/String.html +11 -1
  31. data/doc/StringIO.html +11 -1
  32. data/doc/TaskJuggler.html +250 -219
  33. data/doc/TaskJuggler/Account.html +11 -1
  34. data/doc/TaskJuggler/AccountAttribute.html +11 -1
  35. data/doc/TaskJuggler/AccountScenario.html +11 -1
  36. data/doc/TaskJuggler/Allocation.html +11 -1
  37. data/doc/TaskJuggler/AllocationAttribute.html +11 -1
  38. data/doc/TaskJuggler/AttributeBase.html +11 -1
  39. data/doc/TaskJuggler/AttributeDefinition.html +11 -1
  40. data/doc/TaskJuggler/BatchProcessor.html +11 -1
  41. data/doc/TaskJuggler/Booking.html +11 -1
  42. data/doc/TaskJuggler/BookingListAttribute.html +11 -1
  43. data/doc/TaskJuggler/BooleanAttribute.html +11 -1
  44. data/doc/TaskJuggler/CSVFile.html +12 -2
  45. data/doc/TaskJuggler/CellSettingPattern.html +11 -1
  46. data/doc/TaskJuggler/CellSettingPatternList.html +11 -1
  47. data/doc/TaskJuggler/Charge.html +11 -1
  48. data/doc/TaskJuggler/ChargeListAttribute.html +11 -1
  49. data/doc/TaskJuggler/ChargeSet.html +11 -1
  50. data/doc/TaskJuggler/ChargeSetListAttribute.html +11 -1
  51. data/doc/TaskJuggler/CollisionDetector.html +1063 -0
  52. data/doc/TaskJuggler/ColumnListAttribute.html +11 -1
  53. data/doc/TaskJuggler/ColumnTable.html +11 -1
  54. data/doc/TaskJuggler/Daemon.html +11 -1
  55. data/doc/TaskJuggler/{OnShiftCache.html → DataCache.html} +127 -139
  56. data/doc/TaskJuggler/DataCacheEntry.html +711 -0
  57. data/doc/TaskJuggler/DateAttribute.html +11 -1
  58. data/doc/TaskJuggler/DefinitionListAttribute.html +11 -1
  59. data/doc/TaskJuggler/DependencyListAttribute.html +11 -1
  60. data/doc/TaskJuggler/DurationAttribute.html +16 -5
  61. data/doc/TaskJuggler/FileList.html +11 -1
  62. data/doc/TaskJuggler/FileRecord.html +11 -1
  63. data/doc/TaskJuggler/FixnumAttribute.html +19 -9
  64. data/doc/TaskJuggler/FlagListAttribute.html +29 -19
  65. data/doc/TaskJuggler/FloatAttribute.html +23 -13
  66. data/doc/TaskJuggler/FormatListAttribute.html +19 -9
  67. data/doc/TaskJuggler/GanttChart.html +94 -133
  68. data/doc/TaskJuggler/GanttContainer.html +11 -1
  69. data/doc/TaskJuggler/GanttHeader.html +11 -1
  70. data/doc/TaskJuggler/GanttHeaderScaleItem.html +11 -1
  71. data/doc/TaskJuggler/GanttLine.html +11 -1
  72. data/doc/TaskJuggler/GanttLoadStack.html +11 -1
  73. data/doc/TaskJuggler/GanttMilestone.html +11 -1
  74. data/doc/TaskJuggler/GanttRouter.html +247 -596
  75. data/doc/TaskJuggler/GanttTaskBar.html +11 -1
  76. data/doc/TaskJuggler/HTMLDocument.html +11 -1
  77. data/doc/TaskJuggler/HTMLGraphics.html +11 -1
  78. data/doc/TaskJuggler/Interval.html +11 -1
  79. data/doc/TaskJuggler/IntervalListAttribute.html +33 -23
  80. data/doc/TaskJuggler/JobInfo.html +11 -1
  81. data/doc/TaskJuggler/Journal.html +11 -1
  82. data/doc/TaskJuggler/JournalEntry.html +11 -1
  83. data/doc/TaskJuggler/JournalEntryList.html +11 -1
  84. data/doc/TaskJuggler/KeywordArray.html +11 -1
  85. data/doc/TaskJuggler/KeywordDocumentation.html +16 -6
  86. data/doc/TaskJuggler/Limits.html +11 -1
  87. data/doc/TaskJuggler/Limits/Limit.html +11 -1
  88. data/doc/TaskJuggler/LimitsAttribute.html +24 -14
  89. data/doc/TaskJuggler/ListAttributeBase.html +11 -1
  90. data/doc/TaskJuggler/Log.html +11 -1
  91. data/doc/TaskJuggler/LogFile.html +11 -1
  92. data/doc/TaskJuggler/LogicalAttribute.html +11 -1
  93. data/doc/TaskJuggler/LogicalExpression.html +11 -1
  94. data/doc/TaskJuggler/LogicalExpressionAttribute.html +19 -9
  95. data/doc/TaskJuggler/LogicalFlag.html +11 -1
  96. data/doc/TaskJuggler/LogicalFunction.html +11 -1
  97. data/doc/TaskJuggler/LogicalOperation.html +11 -1
  98. data/doc/TaskJuggler/Macro.html +11 -1
  99. data/doc/TaskJuggler/MacroTable.html +11 -1
  100. data/doc/TaskJuggler/ManagerResponsibilities.html +11 -1
  101. data/doc/TaskJuggler/ManagerStatusRecord.html +11 -1
  102. data/doc/TaskJuggler/Message.html +11 -1
  103. data/doc/TaskJuggler/MessageHandler.html +11 -1
  104. data/doc/TaskJuggler/Navigator.html +12 -2
  105. data/doc/TaskJuggler/NavigatorElement.html +11 -1
  106. data/doc/TaskJuggler/NikuProject.html +11 -1
  107. data/doc/TaskJuggler/NikuReport.html +11 -1
  108. data/doc/TaskJuggler/NikuResource.html +11 -1
  109. data/doc/TaskJuggler/NodeListAttribute.html +17 -7
  110. data/doc/TaskJuggler/PlaceHolderCell.html +722 -0
  111. data/doc/TaskJuggler/ProcessIntercom.html +11 -1
  112. data/doc/TaskJuggler/ProcessIntercomIface.html +11 -1
  113. data/doc/TaskJuggler/Project.html +587 -500
  114. data/doc/TaskJuggler/ProjectBroker.html +11 -1
  115. data/doc/TaskJuggler/ProjectBrokerIface.html +11 -1
  116. data/doc/TaskJuggler/ProjectFileParser.html +205 -192
  117. data/doc/TaskJuggler/ProjectFileScanner.html +230 -207
  118. data/doc/TaskJuggler/ProjectRecord.html +11 -1
  119. data/doc/TaskJuggler/ProjectServer.html +11 -1
  120. data/doc/TaskJuggler/ProjectServerIface.html +11 -1
  121. data/doc/TaskJuggler/PropertyAttribute.html +19 -9
  122. data/doc/TaskJuggler/PropertyList.html +95 -83
  123. data/doc/TaskJuggler/PropertySet.html +11 -1
  124. data/doc/TaskJuggler/PropertyTreeNode.html +11 -1
  125. data/doc/TaskJuggler/Query.html +234 -232
  126. data/doc/TaskJuggler/RTFHandlers.html +11 -1
  127. data/doc/TaskJuggler/RTFNavigator.html +11 -1
  128. data/doc/TaskJuggler/RTFQuery.html +11 -1
  129. data/doc/TaskJuggler/RTFReport.html +11 -1
  130. data/doc/TaskJuggler/RTFReportLink.html +11 -1
  131. data/doc/TaskJuggler/RTFWithQuerySupport.html +11 -1
  132. data/doc/TaskJuggler/RealFormat.html +12 -2
  133. data/doc/TaskJuggler/RealFormatAttribute.html +15 -5
  134. data/doc/TaskJuggler/ReferenceAttribute.html +38 -28
  135. data/doc/TaskJuggler/Report.html +96 -113
  136. data/doc/TaskJuggler/ReportBase.html +161 -152
  137. data/doc/TaskJuggler/ReportContext.html +11 -1
  138. data/doc/TaskJuggler/ReportServer.html +59 -48
  139. data/doc/TaskJuggler/ReportServerIface.html +51 -41
  140. data/doc/TaskJuggler/ReportServerRecord.html +11 -1
  141. data/doc/TaskJuggler/ReportServlet.html +11 -1
  142. data/doc/TaskJuggler/ReportTable.html +46 -25
  143. data/doc/TaskJuggler/ReportTableCell.html +296 -275
  144. data/doc/TaskJuggler/ReportTableColumn.html +14 -4
  145. data/doc/TaskJuggler/ReportTableLegend.html +11 -1
  146. data/doc/TaskJuggler/ReportTableLine.html +19 -7
  147. data/doc/TaskJuggler/Resource.html +12 -2
  148. data/doc/TaskJuggler/ResourceListAttribute.html +40 -30
  149. data/doc/TaskJuggler/ResourceListRE.html +11 -1
  150. data/doc/TaskJuggler/ResourceScenario.html +708 -565
  151. data/doc/TaskJuggler/RichText.html +54 -36
  152. data/doc/TaskJuggler/RichTextAttribute.html +31 -21
  153. data/doc/TaskJuggler/RichTextDocument.html +11 -1
  154. data/doc/TaskJuggler/RichTextElement.html +11 -1
  155. data/doc/TaskJuggler/RichTextFunctionExample.html +11 -1
  156. data/doc/TaskJuggler/RichTextFunctionHandler.html +11 -1
  157. data/doc/TaskJuggler/RichTextImage.html +11 -1
  158. data/doc/TaskJuggler/RichTextIntermediate.html +81 -71
  159. data/doc/TaskJuggler/RichTextParser.html +88 -33
  160. data/doc/TaskJuggler/RichTextScanner.html +45 -35
  161. data/doc/TaskJuggler/RichTextSnip.html +11 -1
  162. data/doc/TaskJuggler/RichTextSyntaxRules.html +436 -389
  163. data/doc/TaskJuggler/Scenario.html +11 -1
  164. data/doc/TaskJuggler/ScenarioData.html +11 -1
  165. data/doc/TaskJuggler/ScenarioListAttribute.html +23 -13
  166. data/doc/TaskJuggler/Scoreboard.html +92 -73
  167. data/doc/TaskJuggler/SheetHandlerBase.html +11 -1
  168. data/doc/TaskJuggler/SheetReceiver.html +11 -1
  169. data/doc/TaskJuggler/SheetSender.html +11 -1
  170. data/doc/TaskJuggler/Shift.html +11 -1
  171. data/doc/TaskJuggler/ShiftAssignment.html +11 -1
  172. data/doc/TaskJuggler/ShiftAssignments.html +11 -1
  173. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +24 -14
  174. data/doc/TaskJuggler/ShiftScenario.html +11 -1
  175. data/doc/TaskJuggler/SimpleQueryExpander.html +11 -1
  176. data/doc/TaskJuggler/SortListAttribute.html +21 -11
  177. data/doc/TaskJuggler/SourceFileInfo.html +11 -1
  178. data/doc/TaskJuggler/StatusSheetReceiver.html +11 -1
  179. data/doc/TaskJuggler/StatusSheetReport.html +11 -1
  180. data/doc/TaskJuggler/StatusSheetSender.html +112 -11
  181. data/doc/TaskJuggler/StringAttribute.html +23 -13
  182. data/doc/TaskJuggler/SymbolAttribute.html +19 -9
  183. data/doc/TaskJuggler/SyntaxReference.html +80 -71
  184. data/doc/TaskJuggler/TOCEntry.html +11 -1
  185. data/doc/TaskJuggler/TSResourceRecord.html +11 -1
  186. data/doc/TaskJuggler/TSTaskRecord.html +11 -1
  187. data/doc/TaskJuggler/TableColumnDefinition.html +11 -1
  188. data/doc/TaskJuggler/TableOfContents.html +11 -1
  189. data/doc/TaskJuggler/TableReport.html +422 -411
  190. data/doc/TaskJuggler/Task.html +11 -1
  191. data/doc/TaskJuggler/TaskDependency.html +11 -1
  192. data/doc/TaskJuggler/TaskListAttribute.html +33 -23
  193. data/doc/TaskJuggler/TaskListRE.html +11 -1
  194. data/doc/TaskJuggler/TaskScenario.html +2007 -1919
  195. data/doc/TaskJuggler/TextFormatter.html +11 -1
  196. data/doc/TaskJuggler/TextParser.html +421 -612
  197. data/doc/TaskJuggler/TextParser/Pattern.html +410 -211
  198. data/doc/TaskJuggler/TextParser/Rule.html +224 -152
  199. data/doc/TaskJuggler/TextParser/StackElement.html +190 -28
  200. data/doc/TaskJuggler/TextParser/State.html +989 -0
  201. data/doc/TaskJuggler/TextParser/StateTransition.html +782 -0
  202. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +25 -14
  203. data/doc/TaskJuggler/TextParser/TokenDoc.html +11 -1
  204. data/doc/TaskJuggler/TextReport.html +11 -1
  205. data/doc/TaskJuggler/TextScanner.html +285 -273
  206. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +17 -7
  207. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +24 -14
  208. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +11 -1
  209. data/doc/TaskJuggler/TextScanner/StreamHandle.html +64 -52
  210. data/doc/TaskJuggler/TimeSheet.html +11 -1
  211. data/doc/TaskJuggler/TimeSheetReceiver.html +11 -1
  212. data/doc/TaskJuggler/TimeSheetRecord.html +11 -1
  213. data/doc/TaskJuggler/TimeSheetReport.html +11 -1
  214. data/doc/TaskJuggler/TimeSheetSender.html +11 -1
  215. data/doc/TaskJuggler/TimeSheetSummary.html +11 -1
  216. data/doc/TaskJuggler/TimeSheets.html +11 -1
  217. data/doc/TaskJuggler/Tj3AppBase.html +11 -1
  218. data/doc/TaskJuggler/Tj3Client.html +11 -1
  219. data/doc/TaskJuggler/Tj3Daemon.html +11 -1
  220. data/doc/TaskJuggler/Tj3SheetAppBase.html +11 -1
  221. data/doc/TaskJuggler/Tj3SsReceiver.html +11 -1
  222. data/doc/TaskJuggler/Tj3SsSender.html +11 -1
  223. data/doc/TaskJuggler/Tj3TsReceiver.html +11 -1
  224. data/doc/TaskJuggler/Tj3TsSender.html +11 -1
  225. data/doc/TaskJuggler/Tj3TsSummary.html +11 -1
  226. data/doc/TaskJuggler/TjException.html +11 -1
  227. data/doc/TaskJuggler/TjTime.html +474 -324
  228. data/doc/TaskJuggler/TjpExample.html +11 -1
  229. data/doc/TaskJuggler/TjpExportRE.html +11 -1
  230. data/doc/TaskJuggler/TjpSyntaxRules.html +3731 -3662
  231. data/doc/TaskJuggler/URLParameter.html +11 -1
  232. data/doc/TaskJuggler/UserManual.html +11 -1
  233. data/doc/TaskJuggler/VimSyntax.html +11 -1
  234. data/doc/TaskJuggler/WebServer.html +11 -1
  235. data/doc/TaskJuggler/WorkingHours.html +295 -221
  236. data/doc/TaskJuggler/WorkingHoursAttribute.html +11 -1
  237. data/doc/TaskJuggler/XMLBlob.html +11 -1
  238. data/doc/TaskJuggler/XMLComment.html +11 -1
  239. data/doc/TaskJuggler/XMLDocument.html +11 -1
  240. data/doc/TaskJuggler/XMLElement.html +11 -1
  241. data/doc/TaskJuggler/XMLNamedText.html +11 -1
  242. data/doc/TaskJuggler/XMLText.html +11 -1
  243. data/doc/index.html +694 -624
  244. data/doc/lib/AppConfig_rb.html +1 -1
  245. data/doc/lib/Attributes_rb.html +1 -1
  246. data/doc/lib/Booking_rb.html +1 -1
  247. data/doc/lib/DataCache_rb.html +69 -0
  248. data/doc/lib/KeywordDocumentation_rb.html +1 -1
  249. data/doc/lib/ProjectFileParser_rb.html +1 -1
  250. data/doc/lib/ProjectFileScanner_rb.html +1 -1
  251. data/doc/lib/Project_rb.html +1 -1
  252. data/doc/lib/PropertyList_rb.html +1 -1
  253. data/doc/lib/Query_rb.html +1 -1
  254. data/doc/lib/RealFormat_rb.html +1 -1
  255. data/doc/lib/ResourceScenario_rb.html +1 -1
  256. data/doc/lib/Resource_rb.html +1 -1
  257. data/doc/lib/RichTextParser_rb.html +1 -1
  258. data/doc/lib/RichTextScanner_rb.html +1 -1
  259. data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
  260. data/doc/lib/RichText_rb.html +1 -1
  261. data/doc/lib/Scoreboard_rb.html +1 -1
  262. data/doc/lib/StatusSheetSender_rb.html +1 -1
  263. data/doc/lib/SyntaxReference_rb.html +1 -1
  264. data/doc/lib/TaskJuggler_rb.html +1 -1
  265. data/doc/lib/TaskScenario_rb.html +3 -1
  266. data/doc/lib/TextParser/Pattern_rb.html +3 -1
  267. data/doc/lib/TextParser/Rule_rb.html +3 -1
  268. data/doc/lib/TextParser/StackElement_rb.html +3 -1
  269. data/doc/lib/TextParser/State_rb.html +65 -0
  270. data/doc/lib/TextParser_rb.html +1 -1
  271. data/doc/lib/TextScanner_rb.html +1 -1
  272. data/doc/lib/Tj3Config_rb.html +1 -1
  273. data/doc/lib/TjTime_rb.html +1 -1
  274. data/doc/lib/TjpSyntaxRules_rb.html +1 -1
  275. data/doc/lib/WorkingHours_rb.html +3 -1
  276. data/doc/lib/daemon/ReportServer_rb.html +1 -1
  277. data/doc/lib/reports/CSVFile_rb.html +1 -1
  278. data/doc/lib/reports/CollisionDetector_rb.html +67 -0
  279. data/doc/lib/reports/GanttChart_rb.html +1 -1
  280. data/doc/lib/reports/GanttRouter_rb.html +3 -1
  281. data/doc/lib/reports/Navigator_rb.html +1 -1
  282. data/doc/lib/reports/ReportBase_rb.html +1 -1
  283. data/doc/lib/reports/ReportTableCell_rb.html +1 -1
  284. data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
  285. data/doc/lib/reports/ReportTableLine_rb.html +1 -1
  286. data/doc/lib/reports/ReportTable_rb.html +1 -1
  287. data/doc/lib/reports/Report_rb.html +1 -1
  288. data/doc/lib/reports/TableReport_rb.html +1 -1
  289. data/doc/lib/taskjuggler3_rb.html +1 -1
  290. data/examples/tutorial.tjp +1 -2
  291. data/lib/AppConfig.rb +10 -4
  292. data/lib/Attributes.rb +4 -4
  293. data/lib/DataCache.rb +124 -0
  294. data/lib/KeywordDocumentation.rb +5 -5
  295. data/lib/Project.rb +54 -10
  296. data/lib/ProjectFileParser.rb +10 -9
  297. data/lib/ProjectFileScanner.rb +38 -25
  298. data/lib/PropertyList.rb +6 -4
  299. data/lib/Query.rb +0 -8
  300. data/lib/RealFormat.rb +1 -1
  301. data/lib/Resource.rb +1 -1
  302. data/lib/ResourceScenario.rb +96 -31
  303. data/lib/RichText.rb +17 -5
  304. data/lib/RichTextParser.rb +22 -9
  305. data/lib/RichTextScanner.rb +34 -34
  306. data/lib/RichTextSyntaxRules.rb +41 -36
  307. data/lib/Scoreboard.rb +16 -7
  308. data/lib/StatusSheetSender.rb +63 -0
  309. data/lib/SyntaxReference.rb +9 -10
  310. data/lib/TaskJuggler.rb +28 -4
  311. data/lib/TaskScenario.rb +66 -19
  312. data/lib/TextParser.rb +219 -384
  313. data/lib/TextParser/Pattern.rb +168 -49
  314. data/lib/TextParser/Rule.rb +33 -17
  315. data/lib/TextParser/StackElement.rb +42 -2
  316. data/lib/TextParser/State.rb +175 -0
  317. data/lib/TextScanner.rb +19 -15
  318. data/lib/Tj3Config.rb +1 -1
  319. data/lib/TjTime.rb +111 -3
  320. data/lib/TjpSyntaxRules.rb +122 -66
  321. data/lib/WorkingHours.rb +91 -186
  322. data/lib/daemon/ReportServer.rb +3 -2
  323. data/lib/reports/CSVFile.rb +1 -1
  324. data/lib/reports/CollisionDetector.rb +177 -0
  325. data/lib/reports/GanttChart.rb +25 -41
  326. data/lib/reports/GanttRouter.rb +104 -233
  327. data/lib/reports/Navigator.rb +1 -1
  328. data/lib/reports/Report.rb +9 -33
  329. data/lib/reports/ReportBase.rb +0 -1
  330. data/lib/reports/ReportTable.rb +19 -8
  331. data/lib/reports/ReportTableCell.rb +61 -25
  332. data/lib/reports/ReportTableColumn.rb +2 -2
  333. data/lib/reports/ReportTableLine.rb +4 -2
  334. data/lib/reports/TableReport.rb +1 -0
  335. data/lib/taskjuggler3.rb +0 -1
  336. data/manual/Installation +7 -3
  337. data/manual/Intro +12 -10
  338. data/manual/The_TaskJuggler_Syntax +4 -4
  339. data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -14
  340. data/test/TestSuite/CSV-Reports/genrefs +1 -1
  341. data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -4
  342. data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -22
  343. data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -14
  344. data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -14
  345. data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -14
  346. data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -14
  347. data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -14
  348. data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +32 -24
  349. data/test/TestSuite/CSV-Reports/weekly-Reference.csv +13 -0
  350. data/test/TestSuite/CSV-Reports/weekly.tjp +9 -0
  351. data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -2
  352. data/test/TestSuite/HTML-Reports/depArrows.html +839 -830
  353. data/test/TestSuite/HTML-Reports/depArrows.tjp +12 -12
  354. data/test/TestSuite/HTML-Reports/profile.html +37581 -0
  355. data/test/TestSuite/ReportGenerator/Errors/no_report_defined.tjp +7 -0
  356. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +1 -1
  357. data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/missing-reports +2 -0
  358. data/test/TestSuite/StatusSheets/run +2 -0
  359. data/test/TestSuite/Syntax/Correct/Booking.tjp +13 -5
  360. data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +21 -0
  361. data/test/TestSuite/Syntax/Correct/RollupResource.tjp +21 -0
  362. data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +1 -1
  363. data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
  364. data/test/TestSuite/Syntax/Errors/include_before_project.tjp +2 -0
  365. data/test/TestSuite/Syntax/Errors/no_reduce.tjp +6 -0
  366. data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
  367. data/test/TestSuite/TimeSheets/run +1 -1
  368. data/test/test_CSV-Reports.rb +2 -4
  369. data/test/test_CollisionDetector.rb +85 -0
  370. data/test/test_Project.rb +2 -2
  371. data/test/test_ProjectFileScanner.rb +73 -31
  372. data/test/test_Query.rb +2 -2
  373. data/test/test_ReportGenerator.rb +1 -1
  374. data/test/test_RichText.rb +4 -4
  375. data/test/test_WorkingHours.rb +150 -11
  376. metadata +75 -67
  377. data/test/TestSuite/ReportGenerator/Errors/css/tjreport.css +0 -407
  378. data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +0 -26
  379. data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -3210
  380. data/test/TestSuite/Scheduler/Correct/Container.html +0 -349
  381. data/test/TestSuite/Scheduler/Correct/Limits.html +0 -4964
  382. data/test/TestSuite/Scheduler/Correct/Shift.html +0 -1719
  383. data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
  384. data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -66
  385. data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
  386. data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
  387. data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
  388. data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
  389. data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
  390. data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
  391. data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
  392. data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
  393. data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
  394. data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
  395. data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
  396. data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
  397. data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +0 -66
  398. data/test/TestSuite/Scheduler/Errors/css/tjreport.css +0 -407
  399. data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
  400. data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
  401. data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
  402. data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
  403. data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
  404. data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
  405. data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
  406. data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
  407. data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
  408. data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
  409. data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
  410. data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +0 -1301
  411. data/test/TestSuite/StatusSheets/resrep.tji +0 -7
  412. data/test/TestSuite/StatusSheets/tj3d.log +0 -312
  413. data/test/TestSuite/Syntax/Correct/Managers.html +0 -263
  414. data/test/TestSuite/TimeSheets/acceptable_intervals +0 -1
  415. data/test/TestSuite/TimeSheets/statussheets.log +0 -1
@@ -73,9 +73,13 @@
73
73
 
74
74
  <li><a href="#method-i-addPattern">#addPattern</a></li>
75
75
 
76
+ <li><a href="#method-i-addTransitionsToState">#addTransitionsToState</a></li>
77
+
76
78
  <li><a href="#method-i-dump">#dump</a></li>
77
79
 
78
- <li><a href="#method-i-matchingPatternIndex">#matchingPatternIndex</a></li>
80
+ <li><a href="#method-i-flushCache">#flushCache</a></li>
81
+
82
+ <li><a href="#method-i-generateStates">#generateStates</a></li>
79
83
 
80
84
  <li><a href="#method-i-optional%3F">#optional?</a></li>
81
85
 
@@ -175,12 +179,18 @@
175
179
 
176
180
  <li><a href="../../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
177
181
 
182
+ <li><a href="../../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
183
+
178
184
  <li><a href="../../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
179
185
 
180
186
  <li><a href="../../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
181
187
 
182
188
  <li><a href="../../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
183
189
 
190
+ <li><a href="../../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
191
+
192
+ <li><a href="../../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
193
+
184
194
  <li><a href="../../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
185
195
 
186
196
  <li><a href="../../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
@@ -287,7 +297,7 @@
287
297
 
288
298
  <li><a href="../../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
289
299
 
290
- <li><a href="../../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
300
+ <li><a href="../../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
291
301
 
292
302
  <li><a href="../../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
293
303
 
@@ -467,6 +477,10 @@
467
477
 
468
478
  <li><a href="../../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
469
479
 
480
+ <li><a href="../../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
481
+
482
+ <li><a href="../../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
483
+
470
484
  <li><a href="../../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
471
485
 
472
486
  <li><a href="../../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
@@ -684,23 +698,6 @@ the parsed file.
684
698
 
685
699
 
686
700
 
687
- </div>
688
- </div>
689
-
690
- <div id="transitions-attribute-method" class="method-detail">
691
- <a name="transitions"></a>
692
-
693
- <a name="transitions="></a>
694
-
695
- <div class="method-heading attribute-method-heading">
696
- <span class="method-name">transitions</span><span
697
- class="attribute-access-type">[RW]</span>
698
- </div>
699
-
700
- <div class="method-description">
701
-
702
-
703
-
704
701
  </div>
705
702
  </div>
706
703
 
@@ -735,18 +732,16 @@ Create a new syntax rule called <tt>name</tt>.
735
732
  <div class="method-source-code"
736
733
  id="new-source">
737
734
  <pre>
738
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 31</span>
739
- 31: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">name</span>)
740
- 32: <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
741
- 33: <span class="ruby-ivar">@patterns</span> = []
742
- 34: <span class="ruby-ivar">@repeatable</span> = <span class="ruby-keyword kw">false</span>
743
- 35: <span class="ruby-ivar">@optional</span> = <span class="ruby-keyword kw">false</span>
744
- 36: <span class="ruby-ivar">@transitions</span> = []
745
- 37: <span class="ruby-comment cmt"># In case a rule is optional or any of the patterns is fully optional,</span>
746
- 38: <span class="ruby-comment cmt"># this variable is set to true.</span>
747
- 39: <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">nil</span>
748
- 40: <span class="ruby-ivar">@keyword</span> = <span class="ruby-keyword kw">nil</span>
749
- 41: <span class="ruby-keyword kw">end</span></pre>
735
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 32</span>
736
+ 32: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">name</span>)
737
+ 33: <span class="ruby-ivar">@name</span> = <span class="ruby-identifier">name</span>
738
+ 34: <span class="ruby-ivar">@patterns</span> = []
739
+ 35: <span class="ruby-ivar">@repeatable</span> = <span class="ruby-keyword kw">false</span>
740
+ 36: <span class="ruby-ivar">@optional</span> = <span class="ruby-keyword kw">false</span>
741
+ 37: <span class="ruby-ivar">@keyword</span> = <span class="ruby-keyword kw">nil</span>
742
+ 38:
743
+ 39: <span class="ruby-identifier">flushCache</span>
744
+ 40: <span class="ruby-keyword kw">end</span></pre>
750
745
  </div>
751
746
 
752
747
  </div>
@@ -786,10 +781,51 @@ be of type <a href="Pattern.html">TextParser::Pattern</a>.
786
781
  <div class="method-source-code"
787
782
  id="add-attern-source">
788
783
  <pre>
789
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 45</span>
790
- 45: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addPattern</span>(<span class="ruby-identifier">pattern</span>)
791
- 46: <span class="ruby-ivar">@patterns</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">pattern</span>
792
- 47: <span class="ruby-keyword kw">end</span></pre>
784
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 51</span>
785
+ 51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addPattern</span>(<span class="ruby-identifier">pattern</span>)
786
+ 52: <span class="ruby-ivar">@patterns</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">pattern</span>
787
+ 53: <span class="ruby-keyword kw">end</span></pre>
788
+ </div>
789
+
790
+ </div>
791
+
792
+
793
+
794
+
795
+ </div>
796
+
797
+
798
+ <div id="add-ransitions-o-tate-method" class="method-detail ">
799
+ <a name="method-i-addTransitionsToState"></a>
800
+
801
+ <div class="method-heading">
802
+
803
+ <span class="method-name">addTransitionsToState</span><span
804
+ class="method-args">(states, rules, stateStack, sourceState, loopBack)</span>
805
+ <span class="method-click-advice">click to toggle source</span>
806
+
807
+ </div>
808
+
809
+ <div class="method-description">
810
+
811
+ <p>
812
+ Return a Hash of all state transitions caused by the 1st token of each
813
+ pattern of this rule.
814
+ </p>
815
+
816
+
817
+
818
+ <div class="method-source-code"
819
+ id="add-ransitions-o-tate-source">
820
+ <pre>
821
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 94</span>
822
+ 94: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">stateStack</span>, <span class="ruby-identifier">sourceState</span>,
823
+ 95: <span class="ruby-identifier">loopBack</span>)
824
+ 96: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span>
825
+ 97: <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">dup</span>, <span class="ruby-identifier">sourceState</span>,
826
+ 98: <span class="ruby-keyword kw">self</span>, <span class="ruby-value">0</span>, <span class="ruby-identifier">loopBack</span>)
827
+ 99: <span class="ruby-keyword kw">end</span>
828
+ 100: <span class="ruby-keyword kw">end</span></pre>
793
829
  </div>
794
830
 
795
831
  </div>
@@ -820,28 +856,28 @@ be of type <a href="Pattern.html">TextParser::Pattern</a>.
820
856
  <div class="method-source-code"
821
857
  id="dump-source">
822
858
  <pre>
823
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 154</span>
824
- 154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dump</span>
825
- 155: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Rule: #{name} #{@optional ? &quot;[optional]&quot; : &quot;&quot;} &quot;</span> <span class="ruby-operator">+</span>
826
- 156: <span class="ruby-node">&quot;#{@repeatable ? &quot;[repeatable]&quot; : &quot;&quot;}&quot;</span>
827
- 157: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">length</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>
828
- 158: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot; Pattern: \&quot;#{@patterns[i]}\&quot;&quot;</span>
829
- 159: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@transitions</span>[<span class="ruby-identifier">i</span>]
830
- 160: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;No transitions for this pattern!&quot;</span>
831
- 161: <span class="ruby-keyword kw">next</span>
832
- 162: <span class="ruby-keyword kw">end</span>
833
- 163:
834
- 164: <span class="ruby-ivar">@transitions</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>
835
- 165: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">__</span>
836
- 166: <span class="ruby-identifier">token</span> = <span class="ruby-value str">&quot;\&quot;&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">key</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\&quot;&quot;</span>
837
- 167: <span class="ruby-keyword kw">else</span>
838
- 168: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">key</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
839
- 169: <span class="ruby-keyword kw">end</span>
840
- 170: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot; #{token} -&gt; #{rule.name}&quot;</span>
841
- 171: <span class="ruby-keyword kw">end</span>
842
- 172: <span class="ruby-keyword kw">end</span>
843
- 173: <span class="ruby-identifier">puts</span>
844
- 174: <span class="ruby-keyword kw">end</span></pre>
859
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 170</span>
860
+ 170: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dump</span>
861
+ 171: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot;Rule: #{name} #{@optional ? &quot;[optional]&quot; : &quot;&quot;} &quot;</span> <span class="ruby-operator">+</span>
862
+ 172: <span class="ruby-node">&quot;#{@repeatable ? &quot;[repeatable]&quot; : &quot;&quot;}&quot;</span>
863
+ 173: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">length</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>
864
+ 174: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot; Pattern: \&quot;#{@patterns[i]}\&quot;&quot;</span>
865
+ 175: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@transitions</span>[<span class="ruby-identifier">i</span>]
866
+ 176: <span class="ruby-identifier">puts</span> <span class="ruby-value str">&quot;No transitions for this pattern!&quot;</span>
867
+ 177: <span class="ruby-keyword kw">next</span>
868
+ 178: <span class="ruby-keyword kw">end</span>
869
+ 179:
870
+ 180: <span class="ruby-ivar">@transitions</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">key</span>, <span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>
871
+ 181: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">key</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">__</span>
872
+ 182: <span class="ruby-identifier">token</span> = <span class="ruby-value str">&quot;\&quot;&quot;</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">key</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">key</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>) <span class="ruby-operator">+</span> <span class="ruby-value str">&quot;\&quot;&quot;</span>
873
+ 183: <span class="ruby-keyword kw">else</span>
874
+ 184: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">key</span>.<span class="ruby-identifier">slice</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">key</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)
875
+ 185: <span class="ruby-keyword kw">end</span>
876
+ 186: <span class="ruby-identifier">puts</span> <span class="ruby-node">&quot; #{token} -&gt; #{rule.name}&quot;</span>
877
+ 187: <span class="ruby-keyword kw">end</span>
878
+ 188: <span class="ruby-keyword kw">end</span>
879
+ 189: <span class="ruby-identifier">puts</span>
880
+ 190: <span class="ruby-keyword kw">end</span></pre>
845
881
  </div>
846
882
 
847
883
  </div>
@@ -852,39 +888,75 @@ be of type <a href="Pattern.html">TextParser::Pattern</a>.
852
888
  </div>
853
889
 
854
890
 
855
- <div id="matching-attern-ndex-method" class="method-detail ">
856
- <a name="method-i-matchingPatternIndex"></a>
891
+ <div id="flush-ache-method" class="method-detail ">
892
+ <a name="method-i-flushCache"></a>
857
893
 
858
894
  <div class="method-heading">
859
895
 
860
- <span class="method-name">matchingPatternIndex</span><span
861
- class="method-args">(token)</span>
896
+ <span class="method-name">flushCache</span><span
897
+ class="method-args">()</span>
862
898
  <span class="method-click-advice">click to toggle source</span>
863
899
 
864
900
  </div>
865
901
 
866
902
  <div class="method-description">
867
903
 
868
- <p>
869
- Return the pattern of this rule that matches the given <tt>token</tt>. If
870
- no pattern matches, return nil.
871
- </p>
904
+
872
905
 
873
906
 
874
907
 
875
908
  <div class="method-source-code"
876
- id="matching-attern-ndex-source">
909
+ id="flush-ache-source">
877
910
  <pre>
878
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 122</span>
879
- 122: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">matchingPatternIndex</span>(<span class="ruby-identifier">token</span>)
880
- 123: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
881
- 124: <span class="ruby-ivar">@transitions</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">t</span><span class="ruby-operator">|</span>
882
- 125: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">i</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">t</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">token</span>)
883
- 126: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
884
- 127: <span class="ruby-keyword kw">end</span>
885
- 128:
886
- 129: <span class="ruby-keyword kw">nil</span>
887
- 130: <span class="ruby-keyword kw">end</span></pre>
911
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 42</span>
912
+ 42: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">flushCache</span>
913
+ 43: <span class="ruby-comment cmt"># A rule is considered to describe optional tokens in case the @optional</span>
914
+ 44: <span class="ruby-comment cmt"># flag is set or all of the patterns reference optional rules again.</span>
915
+ 45: <span class="ruby-comment cmt"># This variable caches the transitively determined optional value.</span>
916
+ 46: <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">nil</span>
917
+ 47: <span class="ruby-keyword kw">end</span></pre>
918
+ </div>
919
+
920
+ </div>
921
+
922
+
923
+
924
+
925
+ </div>
926
+
927
+
928
+ <div id="generate-tates-method" class="method-detail ">
929
+ <a name="method-i-generateStates"></a>
930
+
931
+ <div class="method-heading">
932
+
933
+ <span class="method-name">generateStates</span><span
934
+ class="method-args">()</span>
935
+ <span class="method-click-advice">click to toggle source</span>
936
+
937
+ </div>
938
+
939
+ <div class="method-description">
940
+
941
+
942
+
943
+
944
+
945
+ <div class="method-source-code"
946
+ id="generate-tates-source">
947
+ <pre>
948
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 80</span>
949
+ 80: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateStates</span>
950
+ 81: <span class="ruby-comment cmt"># First, add an entry State for this rule. Entry states are never</span>
951
+ 82: <span class="ruby-comment cmt"># reached by normal state transitions. They are only used as (re-)start</span>
952
+ 83: <span class="ruby-comment cmt"># states.</span>
953
+ 84: <span class="ruby-identifier">states</span> = [ <span class="ruby-constant">State</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>) ]
954
+ 85:
955
+ 86: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pattern</span><span class="ruby-operator">|</span>
956
+ 87: <span class="ruby-identifier">states</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">generateStates</span>(<span class="ruby-keyword kw">self</span>)
957
+ 88: <span class="ruby-keyword kw">end</span>
958
+ 89: <span class="ruby-identifier">states</span>
959
+ 90: <span class="ruby-keyword kw">end</span></pre>
888
960
  </div>
889
961
 
890
962
  </div>
@@ -919,23 +991,23 @@ be reused for later calls.
919
991
  <div class="method-source-code"
920
992
  id="optional--source">
921
993
  <pre>
922
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 57</span>
923
- 57: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
924
- 58: <span class="ruby-comment cmt"># If we have a cached result, use this.</span>
925
- 59: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@transitiveOptional</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@transitiveOptional</span>
926
- 60:
927
- 61: <span class="ruby-comment cmt"># If the rule is marked optional, then it is optional.</span>
928
- 62: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@optional</span>
929
- 63: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">true</span>
930
- 64: <span class="ruby-keyword kw">end</span>
931
- 65:
932
- 66: <span class="ruby-comment cmt"># If all patterns describe optional content, then this rule is optional</span>
933
- 67: <span class="ruby-comment cmt"># as well.</span>
934
- 68: <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">true</span>
935
- 69: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span>
936
- 70: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">pat</span>.<span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
937
- 71: <span class="ruby-keyword kw">end</span>
938
- 72: <span class="ruby-keyword kw">end</span></pre>
994
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 63</span>
995
+ 63: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
996
+ 64: <span class="ruby-comment cmt"># If we have a cached result, use this.</span>
997
+ 65: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@transitiveOptional</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@transitiveOptional</span>
998
+ 66:
999
+ 67: <span class="ruby-comment cmt"># If the rule is marked optional, then it is optional.</span>
1000
+ 68: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@optional</span>
1001
+ 69: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">true</span>
1002
+ 70: <span class="ruby-keyword kw">end</span>
1003
+ 71:
1004
+ 72: <span class="ruby-comment cmt"># If all patterns describe optional content, then this rule is optional</span>
1005
+ 73: <span class="ruby-comment cmt"># as well.</span>
1006
+ 74: <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">true</span>
1007
+ 75: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span>
1008
+ 76: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@transitiveOptional</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">pat</span>.<span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
1009
+ 77: <span class="ruby-keyword kw">end</span>
1010
+ 78: <span class="ruby-keyword kw">end</span></pre>
939
1011
  </div>
940
1012
 
941
1013
  </div>
@@ -968,10 +1040,10 @@ Return a reference the pattern of this <a href="Rule.html">Rule</a>.
968
1040
  <div class="method-source-code"
969
1041
  id="pattern-source">
970
1042
  <pre>
971
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 116</span>
972
- 116: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pattern</span>(<span class="ruby-identifier">idx</span>)
973
- 117: <span class="ruby-ivar">@patterns</span>[<span class="ruby-identifier">idx</span>]
974
- 118: <span class="ruby-keyword kw">end</span></pre>
1043
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 144</span>
1044
+ 144: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pattern</span>(<span class="ruby-identifier">idx</span>)
1045
+ 145: <span class="ruby-ivar">@patterns</span>[<span class="ruby-identifier">idx</span>]
1046
+ 146: <span class="ruby-keyword kw">end</span></pre>
975
1047
  </div>
976
1048
 
977
1049
  </div>
@@ -1004,11 +1076,11 @@ Add a description for a pattern element of the last added pattern.
1004
1076
  <div class="method-source-code"
1005
1077
  id="set-rg-source">
1006
1078
  <pre>
1007
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 90</span>
1008
- 90: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setArg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-identifier">doc</span>)
1009
- 91: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1010
- 92: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setArg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-identifier">doc</span>)
1011
- 93: <span class="ruby-keyword kw">end</span></pre>
1079
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 118</span>
1080
+ 118: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setArg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-identifier">doc</span>)
1081
+ 119: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1082
+ 120: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setArg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-identifier">doc</span>)
1083
+ 121: <span class="ruby-keyword kw">end</span></pre>
1012
1084
  </div>
1013
1085
 
1014
1086
  </div>
@@ -1045,11 +1117,11 @@ scope can be appended, separated by a dot (E.g. name.scope).
1045
1117
  <div class="method-source-code"
1046
1118
  id="set-oc-source">
1047
1119
  <pre>
1048
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 84</span>
1049
- 84: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setDoc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">doc</span>)
1050
- 85: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1051
- 86: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setDoc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">doc</span>)
1052
- 87: <span class="ruby-keyword kw">end</span></pre>
1120
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 112</span>
1121
+ 112: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setDoc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">doc</span>)
1122
+ 113: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1123
+ 114: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setDoc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">doc</span>)
1124
+ 115: <span class="ruby-keyword kw">end</span></pre>
1053
1125
  </div>
1054
1126
 
1055
1127
  </div>
@@ -1083,10 +1155,10 @@ Add a reference to a code example. <tt>file</tt> is the name of the file.
1083
1155
  <div class="method-source-code"
1084
1156
  id="set-xample-source">
1085
1157
  <pre>
1086
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 111</span>
1087
- 111: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setExample</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span>)
1088
- 112: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setExample</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span>)
1089
- 113: <span class="ruby-keyword kw">end</span></pre>
1158
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 139</span>
1159
+ 139: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setExample</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span>)
1160
+ 140: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setExample</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span>)
1161
+ 141: <span class="ruby-keyword kw">end</span></pre>
1090
1162
  </div>
1091
1163
 
1092
1164
  </div>
@@ -1120,12 +1192,12 @@ documentation. All subsequent tokens will be ignored.
1120
1192
  <div class="method-source-code"
1121
1193
  id="set-ast-yntax-oken-source">
1122
1194
  <pre>
1123
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 97</span>
1124
- 97: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setLastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
1125
- 98: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1126
- 99: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'Token index too large'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">length</span>
1127
- 100: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setLastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
1128
- 101: <span class="ruby-keyword kw">end</span></pre>
1195
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 125</span>
1196
+ 125: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setLastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
1197
+ 126: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1198
+ 127: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'Token index too large'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">idx</span> <span class="ruby-operator">&gt;=</span> <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">length</span>
1199
+ 128: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setLastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
1200
+ 129: <span class="ruby-keyword kw">end</span></pre>
1129
1201
  </div>
1130
1202
 
1131
1203
  </div>
@@ -1158,10 +1230,10 @@ Mark the rule as an optional element of the syntax.
1158
1230
  <div class="method-source-code"
1159
1231
  id="set-ptional-source">
1160
1232
  <pre>
1161
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 50</span>
1162
- 50: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setOptional</span>
1163
- 51: <span class="ruby-ivar">@optional</span> = <span class="ruby-keyword kw">true</span>
1164
- 52: <span class="ruby-keyword kw">end</span></pre>
1233
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 56</span>
1234
+ 56: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setOptional</span>
1235
+ 57: <span class="ruby-ivar">@optional</span> = <span class="ruby-keyword kw">true</span>
1236
+ 58: <span class="ruby-keyword kw">end</span></pre>
1165
1237
  </div>
1166
1238
 
1167
1239
  </div>
@@ -1195,10 +1267,10 @@ repeatable element that can occur once or more times in sequence.
1195
1267
  <div class="method-source-code"
1196
1268
  id="set-epeatable-source">
1197
1269
  <pre>
1198
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 76</span>
1199
- 76: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setRepeatable</span>
1200
- 77: <span class="ruby-ivar">@repeatable</span> = <span class="ruby-keyword kw">true</span>
1201
- 78: <span class="ruby-keyword kw">end</span></pre>
1270
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 104</span>
1271
+ 104: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setRepeatable</span>
1272
+ 105: <span class="ruby-ivar">@repeatable</span> = <span class="ruby-keyword kw">true</span>
1273
+ 106: <span class="ruby-keyword kw">end</span></pre>
1202
1274
  </div>
1203
1275
 
1204
1276
  </div>
@@ -1231,11 +1303,11 @@ Add a reference to another rule for documentation purposes.
1231
1303
  <div class="method-source-code"
1232
1304
  id="set-ee-lso-source">
1233
1305
  <pre>
1234
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 104</span>
1235
- 104: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setSeeAlso</span>(<span class="ruby-identifier">also</span>)
1236
- 105: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1237
- 106: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setSeeAlso</span>(<span class="ruby-identifier">also</span>)
1238
- 107: <span class="ruby-keyword kw">end</span></pre>
1306
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 132</span>
1307
+ 132: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setSeeAlso</span>(<span class="ruby-identifier">also</span>)
1308
+ 133: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'No pattern defined yet'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">empty?</span>
1309
+ 134: <span class="ruby-ivar">@patterns</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">setSeeAlso</span>(<span class="ruby-identifier">also</span>)
1310
+ 135: <span class="ruby-keyword kw">end</span></pre>
1239
1311
  </div>
1240
1312
 
1241
1313
  </div>
@@ -1266,28 +1338,28 @@ Add a reference to another rule for documentation purposes.
1266
1338
  <div class="method-source-code"
1267
1339
  id="to-syntax-source">
1268
1340
  <pre>
1269
- <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 132</span>
1270
- 132: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">docs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
1271
- 133: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
1272
- 134: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'['</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@optional</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@repeatable</span>
1273
- 135: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'('</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
1274
- 136: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1275
- 137: <span class="ruby-identifier">pStr</span> = <span class="ruby-value str">''</span>
1276
- 138: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span>
1277
- 139: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1278
- 140: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1279
- 141: <span class="ruby-keyword kw">else</span>
1280
- 142: <span class="ruby-identifier">pStr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' | '</span>
1281
- 143: <span class="ruby-keyword kw">end</span>
1282
- 144: <span class="ruby-identifier">pStr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">pat</span>.<span class="ruby-identifier">to_syntax_r</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">docs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
1283
- 145: <span class="ruby-keyword kw">end</span>
1284
- 146: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pStr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
1285
- 147: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">pStr</span>
1286
- 148: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'...'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@repeatable</span>
1287
- 149: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">')'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
1288
- 150: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">']'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@optional</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@repeatable</span>
1289
- 151: <span class="ruby-identifier">str</span>
1290
- 152: <span class="ruby-keyword kw">end</span></pre>
1341
+ <span class="ruby-comment cmt"># File lib/TextParser/Rule.rb, line 148</span>
1342
+ 148: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">docs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
1343
+ 149: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
1344
+ 150: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'['</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@optional</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@repeatable</span>
1345
+ 151: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'('</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
1346
+ 152: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
1347
+ 153: <span class="ruby-identifier">pStr</span> = <span class="ruby-value str">''</span>
1348
+ 154: <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span>
1349
+ 155: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
1350
+ 156: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
1351
+ 157: <span class="ruby-keyword kw">else</span>
1352
+ 158: <span class="ruby-identifier">pStr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">' | '</span>
1353
+ 159: <span class="ruby-keyword kw">end</span>
1354
+ 160: <span class="ruby-identifier">pStr</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">pat</span>.<span class="ruby-identifier">to_syntax_r</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">docs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
1355
+ 161: <span class="ruby-keyword kw">end</span>
1356
+ 162: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">''</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pStr</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
1357
+ 163: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">pStr</span>
1358
+ 164: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">'...'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@repeatable</span>
1359
+ 165: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">')'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">1</span>
1360
+ 166: <span class="ruby-identifier">str</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-value str">']'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@optional</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@repeatable</span>
1361
+ 167: <span class="ruby-identifier">str</span>
1362
+ 168: <span class="ruby-keyword kw">end</span></pre>
1291
1363
  </div>
1292
1364
 
1293
1365
  </div>