taskjuggler 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. data/CHANGELOG +1144 -2047
  2. data/README +1 -1
  3. data/Rakefile +6 -6
  4. data/data/css/tjmanual.css +20 -0
  5. data/data/css/tjreport.css +7 -6
  6. data/doc/AppConfig.html +136 -130
  7. data/doc/Arguments.html +46 -40
  8. data/doc/CHANGELOG.html +1162 -2057
  9. data/doc/COPYING.html +8 -2
  10. data/doc/Object.html +205 -199
  11. data/doc/README.html +9 -3
  12. data/doc/RuntimeConfig.html +75 -69
  13. data/doc/String.html +69 -63
  14. data/doc/TaskJuggler.html +350 -291
  15. data/doc/TaskJuggler/Account.html +26 -20
  16. data/doc/TaskJuggler/AccountAttribute.html +24 -18
  17. data/doc/TaskJuggler/AccountScenario.html +24 -18
  18. data/doc/TaskJuggler/Allocation.html +74 -68
  19. data/doc/TaskJuggler/AllocationAttribute.html +54 -48
  20. data/doc/TaskJuggler/AttributeBase.html +172 -93
  21. data/doc/TaskJuggler/AttributeDefinition.html +22 -16
  22. data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
  23. data/doc/TaskJuggler/BatchProcessor.html +263 -257
  24. data/doc/TaskJuggler/Booking.html +44 -38
  25. data/doc/TaskJuggler/BookingListAttribute.html +25 -21
  26. data/doc/TaskJuggler/BooleanAttribute.html +24 -18
  27. data/doc/TaskJuggler/CSVFile.html +193 -187
  28. data/doc/TaskJuggler/CellSettingPattern.html +13 -7
  29. data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
  30. data/doc/TaskJuggler/Charge.html +49 -43
  31. data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
  32. data/doc/TaskJuggler/ChargeSet.html +94 -88
  33. data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
  34. data/doc/TaskJuggler/CollisionDetector.html +142 -136
  35. data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
  36. data/doc/TaskJuggler/ColumnTable.html +50 -44
  37. data/doc/TaskJuggler/Daemon.html +71 -50
  38. data/doc/TaskJuggler/DataCache.html +110 -58
  39. data/doc/TaskJuggler/DataCacheEntry.html +22 -16
  40. data/doc/TaskJuggler/DateAttribute.html +24 -18
  41. data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
  42. data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
  43. data/doc/TaskJuggler/DurationAttribute.html +25 -19
  44. data/doc/TaskJuggler/FileList.html +25 -19
  45. data/doc/TaskJuggler/FileRecord.html +17 -11
  46. data/doc/TaskJuggler/FixnumAttribute.html +16 -10
  47. data/doc/TaskJuggler/FlagListAttribute.html +25 -21
  48. data/doc/TaskJuggler/FloatAttribute.html +20 -14
  49. data/doc/TaskJuggler/FormatListAttribute.html +17 -11
  50. data/doc/TaskJuggler/GanttChart.html +242 -236
  51. data/doc/TaskJuggler/GanttContainer.html +71 -67
  52. data/doc/TaskJuggler/GanttHeader.html +113 -107
  53. data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
  54. data/doc/TaskJuggler/GanttLine.html +217 -210
  55. data/doc/TaskJuggler/GanttLoadStack.html +89 -83
  56. data/doc/TaskJuggler/GanttMilestone.html +11 -6
  57. data/doc/TaskJuggler/GanttRouter.html +194 -186
  58. data/doc/TaskJuggler/GanttTaskBar.html +41 -34
  59. data/doc/TaskJuggler/HTMLDocument.html +52 -46
  60. data/doc/TaskJuggler/HTMLGraphics.html +58 -52
  61. data/doc/TaskJuggler/Interval.html +90 -84
  62. data/doc/TaskJuggler/IntervalList.html +777 -0
  63. data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
  64. data/doc/TaskJuggler/JobInfo.html +36 -30
  65. data/doc/TaskJuggler/Journal.html +188 -177
  66. data/doc/TaskJuggler/JournalEntry.html +36 -30
  67. data/doc/TaskJuggler/JournalEntryList.html +88 -82
  68. data/doc/TaskJuggler/KeywordArray.html +12 -6
  69. data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
  70. data/doc/TaskJuggler/Limits.html +111 -105
  71. data/doc/TaskJuggler/Limits/Limit.html +71 -65
  72. data/doc/TaskJuggler/LimitsAttribute.html +21 -15
  73. data/doc/TaskJuggler/ListAttributeBase.html +16 -10
  74. data/doc/TaskJuggler/Log.html +111 -105
  75. data/doc/TaskJuggler/LogFile.html +54 -48
  76. data/doc/TaskJuggler/LogicalAttribute.html +35 -29
  77. data/doc/TaskJuggler/LogicalExpression.html +32 -26
  78. data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
  79. data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
  80. data/doc/TaskJuggler/LogicalFlag.html +24 -18
  81. data/doc/TaskJuggler/LogicalFunction.html +164 -158
  82. data/doc/TaskJuggler/LogicalOperation.html +138 -132
  83. data/doc/TaskJuggler/Macro.html +14 -8
  84. data/doc/TaskJuggler/MacroTable.html +42 -36
  85. data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
  86. data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
  87. data/doc/TaskJuggler/Message.html +56 -50
  88. data/doc/TaskJuggler/MessageHandler.html +73 -67
  89. data/doc/TaskJuggler/Navigator.html +92 -86
  90. data/doc/TaskJuggler/NavigatorElement.html +88 -82
  91. data/doc/TaskJuggler/NikuProject.html +15 -9
  92. data/doc/TaskJuggler/NikuReport.html +405 -370
  93. data/doc/TaskJuggler/NikuResource.html +13 -7
  94. data/doc/TaskJuggler/NodeListAttribute.html +13 -9
  95. data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
  96. data/doc/TaskJuggler/ProcessIntercom.html +116 -110
  97. data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
  98. data/doc/TaskJuggler/Project.html +1064 -895
  99. data/doc/TaskJuggler/ProjectBroker.html +439 -366
  100. data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
  101. data/doc/TaskJuggler/ProjectFileParser.html +329 -319
  102. data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
  103. data/doc/TaskJuggler/ProjectRecord.html +66 -60
  104. data/doc/TaskJuggler/ProjectServer.html +287 -280
  105. data/doc/TaskJuggler/ProjectServerIface.html +43 -37
  106. data/doc/TaskJuggler/PropertyAttribute.html +16 -10
  107. data/doc/TaskJuggler/PropertyList.html +205 -199
  108. data/doc/TaskJuggler/PropertySet.html +264 -296
  109. data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
  110. data/doc/TaskJuggler/Query.html +309 -524
  111. data/doc/TaskJuggler/RTFHandlers.html +17 -11
  112. data/doc/TaskJuggler/RTFNavigator.html +33 -27
  113. data/doc/TaskJuggler/RTFQuery.html +135 -129
  114. data/doc/TaskJuggler/RTFReport.html +63 -57
  115. data/doc/TaskJuggler/RTFReportLink.html +55 -49
  116. data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
  117. data/doc/TaskJuggler/RealFormat.html +64 -58
  118. data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
  119. data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
  120. data/doc/TaskJuggler/Report.html +294 -249
  121. data/doc/TaskJuggler/ReportBase.html +229 -223
  122. data/doc/TaskJuggler/ReportContext.html +52 -46
  123. data/doc/TaskJuggler/ReportServer.html +143 -137
  124. data/doc/TaskJuggler/ReportServerIface.html +51 -43
  125. data/doc/TaskJuggler/ReportServerRecord.html +36 -30
  126. data/doc/TaskJuggler/ReportServlet.html +167 -140
  127. data/doc/TaskJuggler/ReportTable.html +137 -131
  128. data/doc/TaskJuggler/ReportTableCell.html +332 -292
  129. data/doc/TaskJuggler/ReportTableColumn.html +46 -40
  130. data/doc/TaskJuggler/ReportTableLegend.html +43 -38
  131. data/doc/TaskJuggler/ReportTableLine.html +66 -60
  132. data/doc/TaskJuggler/Resource.html +166 -160
  133. data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
  134. data/doc/TaskJuggler/ResourceListRE.html +47 -41
  135. data/doc/TaskJuggler/ResourceScenario.html +671 -644
  136. data/doc/TaskJuggler/RichText.html +51 -45
  137. data/doc/TaskJuggler/RichTextAttribute.html +28 -22
  138. data/doc/TaskJuggler/RichTextDocument.html +96 -90
  139. data/doc/TaskJuggler/RichTextElement.html +503 -497
  140. data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
  141. data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
  142. data/doc/TaskJuggler/RichTextImage.html +14 -8
  143. data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
  144. data/doc/TaskJuggler/RichTextParser.html +59 -53
  145. data/doc/TaskJuggler/RichTextScanner.html +184 -178
  146. data/doc/TaskJuggler/RichTextSnip.html +69 -63
  147. data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
  148. data/doc/TaskJuggler/Scenario.html +13 -7
  149. data/doc/TaskJuggler/ScenarioData.html +40 -34
  150. data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
  151. data/doc/TaskJuggler/Scoreboard.html +129 -107
  152. data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
  153. data/doc/TaskJuggler/SheetReceiver.html +333 -327
  154. data/doc/TaskJuggler/SheetSender.html +227 -221
  155. data/doc/TaskJuggler/Shift.html +26 -20
  156. data/doc/TaskJuggler/ShiftAssignment.html +45 -39
  157. data/doc/TaskJuggler/ShiftAssignments.html +178 -172
  158. data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
  159. data/doc/TaskJuggler/ShiftScenario.html +29 -23
  160. data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
  161. data/doc/TaskJuggler/SortListAttribute.html +17 -13
  162. data/doc/TaskJuggler/SourceFileInfo.html +19 -13
  163. data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
  164. data/doc/TaskJuggler/StatusSheetReport.html +166 -159
  165. data/doc/TaskJuggler/StatusSheetSender.html +80 -74
  166. data/doc/TaskJuggler/StringAttribute.html +20 -14
  167. data/doc/TaskJuggler/SymbolAttribute.html +16 -10
  168. data/doc/TaskJuggler/SyntaxReference.html +231 -225
  169. data/doc/TaskJuggler/TOCEntry.html +46 -40
  170. data/doc/TaskJuggler/TSResourceRecord.html +15 -9
  171. data/doc/TaskJuggler/TSTaskRecord.html +16 -10
  172. data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
  173. data/doc/TaskJuggler/TableOfContents.html +28 -22
  174. data/doc/TaskJuggler/TableReport.html +906 -866
  175. data/doc/TaskJuggler/Task.html +99 -93
  176. data/doc/TaskJuggler/TaskDependency.html +24 -18
  177. data/doc/TaskJuggler/TaskListAttribute.html +29 -25
  178. data/doc/TaskJuggler/TaskListRE.html +46 -39
  179. data/doc/TaskJuggler/TaskScenario.html +2218 -1965
  180. data/doc/TaskJuggler/TextFormatter.html +154 -148
  181. data/doc/TaskJuggler/TextParser.html +362 -348
  182. data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
  183. data/doc/TaskJuggler/TextParser/Rule.html +147 -141
  184. data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
  185. data/doc/TaskJuggler/TextParser/State.html +88 -82
  186. data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
  187. data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
  188. data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
  189. data/doc/TaskJuggler/TextReport.html +80 -74
  190. data/doc/TaskJuggler/TextScanner.html +284 -272
  191. data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
  192. data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
  193. data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
  194. data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
  195. data/doc/TaskJuggler/TimeSheet.html +123 -117
  196. data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
  197. data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
  198. data/doc/TaskJuggler/TimeSheetReport.html +206 -199
  199. data/doc/TaskJuggler/TimeSheetSender.html +27 -21
  200. data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
  201. data/doc/TaskJuggler/TimeSheets.html +20 -14
  202. data/doc/TaskJuggler/Tj3AppBase.html +100 -94
  203. data/doc/TaskJuggler/Tj3Client.html +407 -483
  204. data/doc/TaskJuggler/Tj3Daemon.html +116 -107
  205. data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
  206. data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
  207. data/doc/TaskJuggler/Tj3SsSender.html +64 -58
  208. data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
  209. data/doc/TaskJuggler/Tj3TsSender.html +51 -45
  210. data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
  211. data/doc/TaskJuggler/TjException.html +13 -7
  212. data/doc/TaskJuggler/TjTime.html +444 -438
  213. data/doc/TaskJuggler/TjpExample.html +84 -78
  214. data/doc/TaskJuggler/TjpExportRE.html +356 -349
  215. data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
  216. data/doc/TaskJuggler/URLParameter.html +16 -10
  217. data/doc/TaskJuggler/UserManual.html +185 -179
  218. data/doc/TaskJuggler/VimSyntax.html +144 -138
  219. data/doc/TaskJuggler/WebServer.html +46 -39
  220. data/doc/TaskJuggler/WelcomePage.html +769 -0
  221. data/doc/TaskJuggler/WorkingHours.html +185 -179
  222. data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
  223. data/doc/TaskJuggler/XMLBlob.html +21 -15
  224. data/doc/TaskJuggler/XMLComment.html +17 -11
  225. data/doc/TaskJuggler/XMLDocument.html +33 -27
  226. data/doc/TaskJuggler/XMLElement.html +97 -91
  227. data/doc/TaskJuggler/XMLNamedText.html +13 -7
  228. data/doc/TaskJuggler/XMLText.html +32 -26
  229. data/doc/index.html +601 -563
  230. data/doc/lib/AccountScenario_rb.html +5 -3
  231. data/doc/lib/Account_rb.html +5 -3
  232. data/doc/lib/Allocation_rb.html +5 -3
  233. data/doc/lib/AppConfig_rb.html +5 -3
  234. data/doc/lib/AttributeBase_rb.html +5 -3
  235. data/doc/lib/AttributeDefinition_rb.html +5 -3
  236. data/doc/lib/Attributes_rb.html +5 -3
  237. data/doc/lib/BatchProcessor_rb.html +5 -3
  238. data/doc/lib/Booking_rb.html +5 -3
  239. data/doc/lib/ChargeSet_rb.html +5 -3
  240. data/doc/lib/Charge_rb.html +5 -3
  241. data/doc/lib/DataCache_rb.html +5 -3
  242. data/doc/lib/FileList_rb.html +5 -3
  243. data/doc/lib/HTMLDocument_rb.html +5 -3
  244. data/doc/lib/IntervalList_rb.html +69 -0
  245. data/doc/lib/Interval_rb.html +5 -3
  246. data/doc/lib/Journal_rb.html +5 -3
  247. data/doc/lib/KeywordArray_rb.html +5 -3
  248. data/doc/lib/KeywordDocumentation_rb.html +5 -3
  249. data/doc/lib/Limits_rb.html +5 -3
  250. data/doc/lib/LogFile_rb.html +5 -3
  251. data/doc/lib/Log_rb.html +5 -3
  252. data/doc/lib/LogicalExpression_rb.html +5 -3
  253. data/doc/lib/LogicalFunction_rb.html +5 -3
  254. data/doc/lib/LogicalOperation_rb.html +5 -3
  255. data/doc/lib/MacroTable_rb.html +5 -3
  256. data/doc/lib/MessageHandler_rb.html +5 -3
  257. data/doc/lib/ProjectFileParser_rb.html +5 -3
  258. data/doc/lib/ProjectFileScanner_rb.html +5 -3
  259. data/doc/lib/Project_rb.html +5 -3
  260. data/doc/lib/PropertyList_rb.html +5 -3
  261. data/doc/lib/PropertySet_rb.html +5 -3
  262. data/doc/lib/PropertyTreeNode_rb.html +5 -3
  263. data/doc/lib/Query_rb.html +5 -3
  264. data/doc/lib/RTFHandlers_rb.html +5 -3
  265. data/doc/lib/RTFNavigator_rb.html +5 -3
  266. data/doc/lib/RTFQuery_rb.html +5 -3
  267. data/doc/lib/RTFReportLink_rb.html +5 -3
  268. data/doc/lib/RTFReport_rb.html +5 -3
  269. data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
  270. data/doc/lib/RealFormat_rb.html +5 -3
  271. data/doc/lib/ResourceScenario_rb.html +5 -3
  272. data/doc/lib/Resource_rb.html +5 -3
  273. data/doc/lib/RichTextDocument_rb.html +5 -3
  274. data/doc/lib/RichTextElement_rb.html +5 -3
  275. data/doc/lib/RichTextFunctionExample_rb.html +5 -3
  276. data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
  277. data/doc/lib/RichTextParser_rb.html +5 -3
  278. data/doc/lib/RichTextScanner_rb.html +5 -3
  279. data/doc/lib/RichTextSnip_rb.html +5 -3
  280. data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
  281. data/doc/lib/RichText_rb.html +5 -3
  282. data/doc/lib/RuntimeConfig_rb.html +5 -3
  283. data/doc/lib/ScenarioData_rb.html +5 -3
  284. data/doc/lib/Scenario_rb.html +5 -3
  285. data/doc/lib/Scoreboard_rb.html +7 -3
  286. data/doc/lib/SheetHandlerBase_rb.html +5 -3
  287. data/doc/lib/SheetReceiver_rb.html +5 -3
  288. data/doc/lib/SheetSender_rb.html +5 -3
  289. data/doc/lib/ShiftAssignments_rb.html +5 -3
  290. data/doc/lib/ShiftScenario_rb.html +5 -3
  291. data/doc/lib/Shift_rb.html +5 -3
  292. data/doc/lib/SimpleQueryExpander_rb.html +5 -3
  293. data/doc/lib/SourceFileInfo_rb.html +5 -3
  294. data/doc/lib/StatusSheetReceiver_rb.html +5 -3
  295. data/doc/lib/StatusSheetSender_rb.html +5 -3
  296. data/doc/lib/SyntaxReference_rb.html +5 -3
  297. data/doc/lib/TOCEntry_rb.html +5 -3
  298. data/doc/lib/TableColumnDefinition_rb.html +5 -3
  299. data/doc/lib/TableOfContents_rb.html +5 -3
  300. data/doc/lib/TaskDependency_rb.html +5 -3
  301. data/doc/lib/TaskJuggler_rb.html +5 -3
  302. data/doc/lib/TaskScenario_rb.html +5 -3
  303. data/doc/lib/Task_rb.html +5 -3
  304. data/doc/lib/TextFormatter_rb.html +6 -4
  305. data/doc/lib/TextParser/Pattern_rb.html +5 -3
  306. data/doc/lib/TextParser/Rule_rb.html +5 -3
  307. data/doc/lib/TextParser/StackElement_rb.html +5 -3
  308. data/doc/lib/TextParser/State_rb.html +6 -4
  309. data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
  310. data/doc/lib/TextParser_rb.html +5 -3
  311. data/doc/lib/TextScanner_rb.html +5 -3
  312. data/doc/lib/TimeSheetReceiver_rb.html +5 -3
  313. data/doc/lib/TimeSheetSender_rb.html +5 -3
  314. data/doc/lib/TimeSheetSummary_rb.html +6 -4
  315. data/doc/lib/TimeSheets_rb.html +5 -3
  316. data/doc/lib/Tj3AppBase_rb.html +5 -3
  317. data/doc/lib/Tj3Config_rb.html +5 -3
  318. data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
  319. data/doc/lib/TjException_rb.html +5 -3
  320. data/doc/lib/TjTime_rb.html +5 -3
  321. data/doc/lib/TjpExample_rb.html +5 -3
  322. data/doc/lib/TjpSyntaxRules_rb.html +5 -3
  323. data/doc/lib/URLParameter_rb.html +5 -3
  324. data/doc/lib/UTF8String_rb.html +5 -3
  325. data/doc/lib/UserManual_rb.html +5 -3
  326. data/doc/lib/VimSyntax_rb.html +6 -4
  327. data/doc/lib/WorkingHours_rb.html +5 -3
  328. data/doc/lib/XMLDocument_rb.html +5 -3
  329. data/doc/lib/XMLElement_rb.html +5 -3
  330. data/doc/lib/daemon/Daemon_rb.html +5 -3
  331. data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
  332. data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
  333. data/doc/lib/daemon/ProjectServer_rb.html +5 -3
  334. data/doc/lib/daemon/ReportServer_rb.html +5 -3
  335. data/doc/lib/daemon/ReportServlet_rb.html +69 -0
  336. data/doc/lib/daemon/WebServer_rb.html +9 -3
  337. data/doc/lib/daemon/WelcomePage_rb.html +71 -0
  338. data/doc/lib/deep_copy_rb.html +5 -3
  339. data/doc/lib/reports/CSVFile_rb.html +5 -3
  340. data/doc/lib/reports/CollisionDetector_rb.html +5 -3
  341. data/doc/lib/reports/ColumnTable_rb.html +5 -3
  342. data/doc/lib/reports/GanttChart_rb.html +5 -3
  343. data/doc/lib/reports/GanttContainer_rb.html +5 -3
  344. data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
  345. data/doc/lib/reports/GanttHeader_rb.html +5 -3
  346. data/doc/lib/reports/GanttLine_rb.html +5 -3
  347. data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
  348. data/doc/lib/reports/GanttMilestone_rb.html +5 -3
  349. data/doc/lib/reports/GanttRouter_rb.html +5 -3
  350. data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
  351. data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
  352. data/doc/lib/reports/Navigator_rb.html +5 -3
  353. data/doc/lib/reports/NikuReport_rb.html +5 -3
  354. data/doc/lib/reports/ReportBase_rb.html +5 -3
  355. data/doc/lib/reports/ReportContext_rb.html +5 -3
  356. data/doc/lib/reports/ReportTableCell_rb.html +5 -3
  357. data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
  358. data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
  359. data/doc/lib/reports/ReportTableLine_rb.html +5 -3
  360. data/doc/lib/reports/ReportTable_rb.html +5 -3
  361. data/doc/lib/reports/Report_rb.html +5 -3
  362. data/doc/lib/reports/ResourceListRE_rb.html +5 -3
  363. data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
  364. data/doc/lib/reports/TableReport_rb.html +5 -3
  365. data/doc/lib/reports/TaskListRE_rb.html +5 -3
  366. data/doc/lib/reports/TextReport_rb.html +5 -3
  367. data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
  368. data/doc/lib/reports/TjpExportRE_rb.html +5 -3
  369. data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
  370. data/doc/lib/tj3client_rb.html +5 -3
  371. data/doc/lib/tj3d_rb.html +6 -4
  372. data/doc/lib/tj3man_rb.html +5 -3
  373. data/doc/lib/tj3ss_receiver_rb.html +5 -3
  374. data/doc/lib/tj3ss_sender_rb.html +5 -3
  375. data/doc/lib/tj3ts_receiver_rb.html +5 -3
  376. data/doc/lib/tj3ts_sender_rb.html +5 -3
  377. data/doc/lib/tj3ts_summary_rb.html +5 -3
  378. data/examples/tutorial.tjp +13 -5
  379. data/gem_spec.rb +3 -0
  380. data/lib/Account.rb +2 -1
  381. data/lib/AccountScenario.rb +2 -1
  382. data/lib/Allocation.rb +2 -1
  383. data/lib/AppConfig.rb +2 -1
  384. data/lib/AttributeBase.rb +19 -5
  385. data/lib/AttributeDefinition.rb +2 -1
  386. data/lib/Attributes.rb +49 -38
  387. data/lib/BatchProcessor.rb +2 -1
  388. data/lib/Booking.rb +2 -1
  389. data/lib/Charge.rb +2 -1
  390. data/lib/ChargeSet.rb +2 -1
  391. data/lib/DataCache.rb +15 -1
  392. data/lib/FileList.rb +2 -1
  393. data/lib/HTMLDocument.rb +2 -1
  394. data/lib/Interval.rb +2 -1
  395. data/lib/IntervalList.rb +100 -0
  396. data/lib/Journal.rb +8 -2
  397. data/lib/KeywordArray.rb +2 -1
  398. data/lib/KeywordDocumentation.rb +10 -6
  399. data/lib/Limits.rb +2 -1
  400. data/lib/Log.rb +3 -2
  401. data/lib/LogFile.rb +2 -1
  402. data/lib/LogicalExpression.rb +2 -1
  403. data/lib/LogicalFunction.rb +2 -1
  404. data/lib/LogicalOperation.rb +2 -1
  405. data/lib/MacroTable.rb +2 -1
  406. data/lib/MessageHandler.rb +2 -1
  407. data/lib/Project.rb +92 -25
  408. data/lib/ProjectFileParser.rb +7 -2
  409. data/lib/ProjectFileScanner.rb +2 -1
  410. data/lib/PropertyList.rb +2 -1
  411. data/lib/PropertySet.rb +2 -6
  412. data/lib/PropertyTreeNode.rb +22 -44
  413. data/lib/Query.rb +32 -13
  414. data/lib/RTFHandlers.rb +2 -1
  415. data/lib/RTFNavigator.rb +2 -1
  416. data/lib/RTFQuery.rb +3 -2
  417. data/lib/RTFReport.rb +2 -1
  418. data/lib/RTFReportLink.rb +2 -1
  419. data/lib/RTFWithQuerySupport.rb +2 -1
  420. data/lib/RealFormat.rb +2 -1
  421. data/lib/Resource.rb +2 -1
  422. data/lib/ResourceScenario.rb +35 -14
  423. data/lib/RichText.rb +2 -1
  424. data/lib/RichTextDocument.rb +2 -1
  425. data/lib/RichTextElement.rb +2 -1
  426. data/lib/RichTextFunctionExample.rb +2 -1
  427. data/lib/RichTextFunctionHandler.rb +2 -1
  428. data/lib/RichTextParser.rb +2 -1
  429. data/lib/RichTextScanner.rb +2 -1
  430. data/lib/RichTextSnip.rb +2 -1
  431. data/lib/RichTextSyntaxRules.rb +2 -1
  432. data/lib/RuntimeConfig.rb +2 -1
  433. data/lib/Scenario.rb +2 -1
  434. data/lib/ScenarioData.rb +2 -1
  435. data/lib/Scoreboard.rb +27 -8
  436. data/lib/SheetHandlerBase.rb +2 -1
  437. data/lib/SheetReceiver.rb +2 -1
  438. data/lib/SheetSender.rb +2 -1
  439. data/lib/Shift.rb +2 -1
  440. data/lib/ShiftAssignments.rb +2 -1
  441. data/lib/ShiftScenario.rb +2 -1
  442. data/lib/SimpleQueryExpander.rb +2 -1
  443. data/lib/SourceFileInfo.rb +2 -1
  444. data/lib/StatusSheetReceiver.rb +2 -1
  445. data/lib/StatusSheetSender.rb +2 -1
  446. data/lib/SyntaxReference.rb +2 -1
  447. data/lib/TOCEntry.rb +2 -1
  448. data/lib/TableColumnDefinition.rb +9 -2
  449. data/lib/TableOfContents.rb +2 -1
  450. data/lib/Task.rb +2 -1
  451. data/lib/TaskDependency.rb +2 -1
  452. data/lib/TaskJuggler.rb +8 -6
  453. data/lib/TaskScenario.rb +337 -153
  454. data/lib/TextFormatter.rb +3 -2
  455. data/lib/TextParser.rb +7 -2
  456. data/lib/TextParser/Pattern.rb +2 -1
  457. data/lib/TextParser/Rule.rb +2 -1
  458. data/lib/TextParser/StackElement.rb +2 -1
  459. data/lib/TextParser/State.rb +3 -2
  460. data/lib/TextParser/TokenDoc.rb +2 -1
  461. data/lib/TextScanner.rb +12 -5
  462. data/lib/TimeSheetReceiver.rb +2 -1
  463. data/lib/TimeSheetSender.rb +2 -1
  464. data/lib/TimeSheetSummary.rb +3 -2
  465. data/lib/TimeSheets.rb +2 -1
  466. data/lib/Tj3AppBase.rb +6 -5
  467. data/lib/Tj3Config.rb +5 -4
  468. data/lib/Tj3SheetAppBase.rb +2 -1
  469. data/lib/TjException.rb +2 -1
  470. data/lib/TjTime.rb +2 -1
  471. data/lib/TjpExample.rb +2 -1
  472. data/lib/TjpSyntaxRules.rb +264 -65
  473. data/lib/URLParameter.rb +2 -1
  474. data/lib/UTF8String.rb +2 -1
  475. data/lib/UserManual.rb +2 -1
  476. data/lib/VimSyntax.rb +3 -2
  477. data/lib/WorkingHours.rb +2 -1
  478. data/lib/XMLDocument.rb +2 -1
  479. data/lib/XMLElement.rb +2 -1
  480. data/lib/daemon/Daemon.rb +3 -1
  481. data/lib/daemon/ProcessIntercom.rb +3 -1
  482. data/lib/daemon/ProjectBroker.rb +84 -32
  483. data/lib/daemon/ProjectServer.rb +5 -3
  484. data/lib/daemon/ReportServer.rb +8 -5
  485. data/lib/daemon/ReportServlet.rb +166 -0
  486. data/lib/daemon/WebServer.rb +6 -150
  487. data/lib/daemon/WelcomePage.rb +80 -0
  488. data/lib/deep_copy.rb +2 -1
  489. data/lib/reports/CSVFile.rb +2 -1
  490. data/lib/reports/CollisionDetector.rb +2 -1
  491. data/lib/reports/ColumnTable.rb +2 -1
  492. data/lib/reports/GanttChart.rb +2 -1
  493. data/lib/reports/GanttContainer.rb +3 -4
  494. data/lib/reports/GanttHeader.rb +2 -1
  495. data/lib/reports/GanttHeaderScaleItem.rb +2 -1
  496. data/lib/reports/GanttLine.rb +12 -10
  497. data/lib/reports/GanttLoadStack.rb +2 -1
  498. data/lib/reports/GanttMilestone.rb +3 -3
  499. data/lib/reports/GanttRouter.rb +4 -1
  500. data/lib/reports/GanttTaskBar.rb +9 -7
  501. data/lib/reports/HTMLGraphics.rb +2 -1
  502. data/lib/reports/Navigator.rb +2 -1
  503. data/lib/reports/NikuReport.rb +79 -49
  504. data/lib/reports/Report.rb +42 -10
  505. data/lib/reports/ReportBase.rb +2 -1
  506. data/lib/reports/ReportContext.rb +2 -1
  507. data/lib/reports/ReportTable.rb +2 -1
  508. data/lib/reports/ReportTableCell.rb +63 -28
  509. data/lib/reports/ReportTableColumn.rb +2 -1
  510. data/lib/reports/ReportTableLegend.rb +5 -5
  511. data/lib/reports/ReportTableLine.rb +2 -1
  512. data/lib/reports/ResourceListRE.rb +2 -1
  513. data/lib/reports/StatusSheetReport.rb +4 -2
  514. data/lib/reports/TableReport.rb +42 -38
  515. data/lib/reports/TaskListRE.rb +4 -2
  516. data/lib/reports/TextReport.rb +2 -1
  517. data/lib/reports/TimeSheetReport.rb +4 -2
  518. data/lib/reports/TjpExportRE.rb +4 -2
  519. data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
  520. data/lib/tj3client.rb +19 -36
  521. data/lib/tj3d.rb +6 -2
  522. data/lib/tj3man.rb +4 -3
  523. data/lib/tj3ss_receiver.rb +2 -1
  524. data/lib/tj3ss_sender.rb +2 -1
  525. data/lib/tj3ts_receiver.rb +2 -1
  526. data/lib/tj3ts_sender.rb +2 -1
  527. data/lib/tj3ts_summary.rb +2 -1
  528. data/manual/Day_To_Day_Juggling +36 -0
  529. data/manual/How_To_Contribute +9 -4
  530. data/manual/Installation +10 -3
  531. data/manual/TaskJuggler_Internals +0 -2
  532. data/manual/Tutorial +25 -3
  533. data/prj_cfg.rb +4 -2
  534. data/spec/IntervalList_spec.rb +138 -0
  535. data/spec/ProjectBroker_spec.rb +133 -0
  536. data/tasks/changelog.rake +41 -24
  537. data/tasks/csts.rake +1 -0
  538. data/tasks/gem.rake +1 -0
  539. data/tasks/rcov.rake +1 -1
  540. data/tasks/spec.rake +7 -0
  541. data/tasks/test.rake +1 -0
  542. data/test/MessageChecker.rb +2 -1
  543. data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
  544. data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
  545. data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
  546. data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
  547. data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
  548. data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
  549. data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
  550. data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
  551. data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
  552. data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
  553. data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
  554. data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
  555. data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
  556. data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
  557. data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
  558. data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
  559. data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
  560. data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
  561. data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
  562. data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
  563. data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
  564. data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
  565. data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
  566. data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
  567. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
  568. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
  569. data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
  570. data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
  571. data/test/TestSuite/StatusSheets/sender.log +256 -0
  572. data/test/TestSuite/StatusSheets/statussheets.log +9 -0
  573. data/test/TestSuite/StatusSheets/tj3d.log +395 -0
  574. data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
  575. data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
  576. data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
  577. data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
  578. data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
  579. data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
  580. data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
  581. data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
  582. data/test/all.rb +2 -4
  583. data/test/test_BatchProcessor.rb +2 -1
  584. data/test/test_CSV-Reports.rb +34 -23
  585. data/test/test_CSVFile.rb +2 -1
  586. data/test/test_CollisionDetector.rb +3 -2
  587. data/test/test_Journal.rb +2 -1
  588. data/test/test_Limits.rb +2 -1
  589. data/test/test_LogicalExpression.rb +2 -1
  590. data/test/test_MacroTable.rb +2 -1
  591. data/test/test_Project.rb +3 -2
  592. data/test/test_ProjectFileScanner.rb +2 -1
  593. data/test/test_PropertySet.rb +2 -1
  594. data/test/test_Query.rb +2 -1
  595. data/test/test_RealFormat.rb +2 -1
  596. data/test/test_ReportGenerator.rb +2 -1
  597. data/test/test_RichText.rb +2 -1
  598. data/test/test_Scheduler.rb +2 -1
  599. data/test/test_ShiftAssignments.rb +2 -1
  600. data/test/test_SimpleQueryExpander.rb +2 -1
  601. data/test/test_Syntax.rb +2 -1
  602. data/test/test_TextFormatter.rb +3 -2
  603. data/test/test_TjTime.rb +2 -1
  604. data/test/test_TjpExample.rb +2 -1
  605. data/test/test_URLParameter.rb +2 -1
  606. data/test/test_UTF8String.rb +2 -1
  607. data/test/test_WorkingHours.rb +2 -1
  608. data/test/test_deep_copy.rb +2 -1
  609. metadata +74 -20
  610. data/doc/StringIO.html +0 -595
  611. data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
  612. data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
  613. data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
@@ -179,6 +179,8 @@
179
179
 
180
180
  <li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
181
181
 
182
+ <li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
183
+
182
184
  <li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
183
185
 
184
186
  <li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
@@ -257,6 +259,8 @@
257
259
 
258
260
  <li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
259
261
 
262
+ <li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
263
+
260
264
  <li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
261
265
 
262
266
  <li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
@@ -289,6 +293,8 @@
289
293
 
290
294
  <li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
291
295
 
296
+ <li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
297
+
292
298
  <li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
293
299
 
294
300
  <li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
@@ -569,6 +575,8 @@
569
575
 
570
576
  <li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
571
577
 
578
+ <li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
579
+
572
580
  <li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
573
581
 
574
582
  <li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
@@ -595,8 +603,6 @@
595
603
 
596
604
  <li><a href="../String.html">String</a></li>
597
605
 
598
- <li><a href="../StringIO.html">StringIO</a></li>
599
-
600
606
  </ul>
601
607
  <div id="no-class-search-results" style="display: none;">No matching classes.</div>
602
608
  </div>
@@ -648,136 +654,136 @@ to detect the tokens of the TJP syntax.
648
654
  <div class="method-source-code"
649
655
  id="new-source">
650
656
  <pre>
651
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 21</span>
652
- 21: <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>)
653
- 22: <span class="ruby-identifier">tokenPatterns</span> = [
654
- 23: <span class="ruby-comment cmt"># Any white spaces</span>
655
- 24: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\s+/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
656
- 25:
657
- 26: <span class="ruby-comment cmt"># Single line comments starting with #</span>
658
- 27: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-node">/#.*\n?/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
659
- 28:
660
- 29: <span class="ruby-comment cmt"># C++ style single line comments starting with //</span>
661
- 30: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\/\/.*\n?/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
662
- 31:
663
- 32: <span class="ruby-comment cmt"># C style single line comment /* .. */.</span>
664
- 33: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\/\*.*\*\//</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
665
- 34:
666
- 35: <span class="ruby-comment cmt"># C style multi line comment: We need three patterns here. The first</span>
667
- 36: <span class="ruby-comment cmt"># one is for the start of the string. It switches the scanner mode to</span>
668
- 37: <span class="ruby-comment cmt"># the :cppComment mode.</span>
669
- 38: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\/\*([^*]*[^\/]|.*)\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startComment'</span>) ],
670
- 39: <span class="ruby-comment cmt"># This is the string end pattern. It switches back to tjp mode.</span>
671
- 40: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*\*\//</span>, <span class="ruby-value">:cppComment</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endComment'</span>) ],
672
- 41: <span class="ruby-comment cmt"># This pattern matches string lines that contain neither the start,</span>
673
- 42: <span class="ruby-comment cmt"># nor the end of the string.</span>
674
- 43: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/^.*\n/</span>, <span class="ruby-value">:cppComment</span> ],
675
- 44:
676
- 45: <span class="ruby-comment cmt"># Macro Call: This case is more complicated because we want to replace</span>
677
- 46: <span class="ruby-comment cmt"># macro calls inside of numbers, strings and identifiers. For this to</span>
678
- 47: <span class="ruby-comment cmt"># work, macro calls may have a prefix that looks like a number, a part</span>
679
- 48: <span class="ruby-comment cmt"># of a string or an identifier. This prefix is preserved and</span>
680
- 49: <span class="ruby-comment cmt"># re-injected into the scanner together with the expanded text. Macro</span>
681
- 50: <span class="ruby-comment cmt"># calls may span multiple lines. The ${ and the macro name must be in</span>
682
- 51: <span class="ruby-comment cmt"># the first line. Arguments that span multiple lines are not</span>
683
- 52: <span class="ruby-comment cmt"># supported. As above, we need rules for the start, the end and lines</span>
684
- 53: <span class="ruby-comment cmt"># with neither start nor end. Macro calls inside of strings need a</span>
685
- 54: <span class="ruby-comment cmt"># special start pattern that is active in the string modes. Both</span>
686
- 55: <span class="ruby-comment cmt"># patterns switch the scanner to macroCall mode.</span>
687
- 56: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/([-a-zA-Z_0-9&gt;:.+]*|&quot;(\\&quot;|[^&quot;])*?|'(\\'|[^'])*?)?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
688
- 57: <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
689
- 58: <span class="ruby-comment cmt"># This pattern is similar to the previous one, but is active inside of</span>
690
- 59: <span class="ruby-comment cmt"># multi-line strings. The corresponding rule for sizzors strings</span>
691
- 60: <span class="ruby-comment cmt"># can be found below.</span>
692
- 61: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/(\\&quot;|[^&quot;])*?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
693
- 62: <span class="ruby-value">:dqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
694
- 63: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/(\\'|[^'])*?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
695
- 64: <span class="ruby-value">:sqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
696
- 65: <span class="ruby-comment cmt"># This pattern matches the end of a macro call. It injects the prefix</span>
697
- 66: <span class="ruby-comment cmt"># and the expanded macro into the scanner again. The mode is restored</span>
698
- 67: <span class="ruby-comment cmt"># to the previous mode.</span>
699
- 68: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*\s*\}/</span>, <span class="ruby-value">:macroCall</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endMacroCall'</span>) ],
700
- 69: <span class="ruby-comment cmt"># This pattern collects macro call arguments in lines that contain</span>
701
- 70: <span class="ruby-comment cmt"># neither the start nor the end of the macro.</span>
702
- 71: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:macroCall</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midMacroCall'</span>) ],
703
- 72:
704
- 73: <span class="ruby-comment cmt"># An ID with a colon suffix: foo:</span>
705
- 74: [ <span class="ruby-value">:ID_WITH_COLON</span>, <span class="ruby-regexp re">/[a-zA-Z_]\w*:/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'chop'</span>) ],
706
- 75:
707
- 76: <span class="ruby-comment cmt"># An absolute ID: a.b.c</span>
708
- 77: [ <span class="ruby-value">:ABSOLUTE_ID</span>, <span class="ruby-regexp re">/[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)+/</span> ],
709
- 78:
710
- 79: <span class="ruby-comment cmt"># A normal ID: bar</span>
711
- 80: [ <span class="ruby-value">:ID</span>, <span class="ruby-regexp re">/[a-zA-Z_]\w*/</span> ],
712
- 81:
713
- 82: <span class="ruby-comment cmt"># A date</span>
714
- 83: [ <span class="ruby-value">:DATE</span>, <span class="ruby-regexp re">/\d{4}-\d{1,2}-\d{1,2}(-\d{1,2}:\d{1,2}(:\d{1,2})?(-[-+]?\d{4})?)?/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_date'</span>) ],
715
- 84:
716
- 85: <span class="ruby-comment cmt"># A time of day</span>
717
- 86: [ <span class="ruby-value">:TIME</span>, <span class="ruby-regexp re">/\d{1,2}:\d{2}/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_time'</span>) ],
718
- 87:
719
- 88: <span class="ruby-comment cmt"># A floating point number (e. g. 3.143)</span>
720
- 89: [ <span class="ruby-value">:FLOAT</span>, <span class="ruby-regexp re">/\d*\.\d+/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_f'</span>) ],
721
- 90:
722
- 91: <span class="ruby-comment cmt"># An integer number</span>
723
- 92: [ <span class="ruby-value">:INTEGER</span>, <span class="ruby-regexp re">/\d+/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_i'</span>) ],
724
- 93:
725
- 94: <span class="ruby-comment cmt"># Multi line string enclosed with double quotes. The string may</span>
726
- 95: <span class="ruby-comment cmt"># contain double quotes prefixed by a backslash. The first rule</span>
727
- 96: <span class="ruby-comment cmt"># switches the scanner to dqString mode.</span>
728
- 97: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/&quot;(\\&quot;|[^&quot;])*/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startStringDQ'</span>) ],
729
- 98: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
730
- 99: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/^(\\&quot;|[^&quot;])*\n/</span>, <span class="ruby-value">:dqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midStringDQ'</span>) ],
731
- 100: <span class="ruby-comment cmt"># The end of the string.</span>
732
- 101: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/(\\&quot;|[^&quot;])*&quot;/</span>, <span class="ruby-value">:dqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringDQ'</span>) ],
733
- 102:
734
- 103: <span class="ruby-comment cmt"># Multi line string enclosed with single quotes.</span>
735
- 104: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/'(\\'|[^'])*/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startStringSQ'</span>) ],
736
- 105: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
737
- 106: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/^(\\'|[^'])*\n/</span>, <span class="ruby-value">:sqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midStringSQ'</span>) ],
738
- 107: <span class="ruby-comment cmt"># The end of the string.</span>
739
- 108: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/(\\'|[^'])*'/</span>, <span class="ruby-value">:sqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringSQ'</span>) ],
740
- 109:
741
- 110: <span class="ruby-comment cmt"># Scizzors marked string -8&lt;- ... -&gt;8-: The opening mark must be the</span>
742
- 111: <span class="ruby-comment cmt"># last thing in the line. The indentation of the first line after the</span>
743
- 112: <span class="ruby-comment cmt"># opening mark determines the indentation for all following lines. So,</span>
744
- 113: <span class="ruby-comment cmt"># we first switch the scanner to szrString1 mode.</span>
745
- 114: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/-8&lt;-.*\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startStringSZR'</span>) ],
746
- 115: <span class="ruby-comment cmt"># Since the first line can be the last line (empty string case), we</span>
747
- 116: <span class="ruby-comment cmt"># need to detect the end in szrString1 and szrString mode. The</span>
748
- 117: <span class="ruby-comment cmt"># patterns switch the scanner back to tjp mode.</span>
749
- 118: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/\s*-&gt;8-/</span>, <span class="ruby-value">:szrString1</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringSZR'</span>) ],
750
- 119: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/\s*-&gt;8-/</span>, <span class="ruby-value">:szrString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringSZR'</span>) ],
751
- 120: <span class="ruby-comment cmt"># This rule handles macros inside of sizzors strings.</span>
752
- 121: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
753
- 122: [ <span class="ruby-value">:szrString</span>, <span class="ruby-value">:szrString1</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
754
- 123: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
755
- 124: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:szrString1</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'firstStringSZR'</span>) ],
756
- 125: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:szrString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midStringSZR'</span>) ],
757
- 126:
758
- 127: <span class="ruby-comment cmt"># Single line macro definition</span>
759
- 128: [ <span class="ruby-value">:MACRO</span>, <span class="ruby-regexp re">/\[.*\]\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'chop2nl'</span>) ],
760
- 129:
761
- 130: <span class="ruby-comment cmt"># Multi line macro definition: The pattern switches the scanner into</span>
762
- 131: <span class="ruby-comment cmt"># macroDef mode.</span>
763
- 132: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\[.*\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroDef'</span>) ],
764
- 133: <span class="ruby-comment cmt"># The end of the macro is marked by a ']' that is immediately followed</span>
765
- 134: <span class="ruby-comment cmt"># by a line break. It switches the scanner back to tjp mode.</span>
766
- 135: [ <span class="ruby-value">:MACRO</span>, <span class="ruby-regexp re">/.*\]\n/</span>, <span class="ruby-value">:macroDef</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endMacroDef'</span>) ],
767
- 136: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
768
- 137: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:macroDef</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midMacroDef'</span>) ],
769
- 138:
770
- 139: <span class="ruby-comment cmt"># Some multi-char literals.</span>
771
- 140: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/&lt;=?/</span> ],
772
- 141: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/&gt;=?/</span> ],
773
- 142: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/!=?/</span> ],
774
- 143:
775
- 144: <span class="ruby-comment cmt"># Everything else is returned as a single-char literal.</span>
776
- 145: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/./</span> ]
777
- 146: ]
778
- 147:
779
- 148: <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">:tjp</span>)
780
- 149: <span class="ruby-keyword kw">end</span></pre>
657
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 22</span>
658
+ 22: <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>)
659
+ 23: <span class="ruby-identifier">tokenPatterns</span> = [
660
+ 24: <span class="ruby-comment cmt"># Any white spaces</span>
661
+ 25: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\s+/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
662
+ 26:
663
+ 27: <span class="ruby-comment cmt"># Single line comments starting with #</span>
664
+ 28: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-node">/#.*\n?/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
665
+ 29:
666
+ 30: <span class="ruby-comment cmt"># C++ style single line comments starting with //</span>
667
+ 31: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\/\/.*\n?/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
668
+ 32:
669
+ 33: <span class="ruby-comment cmt"># C style single line comment /* .. */.</span>
670
+ 34: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\/\*.*\*\//</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'newPos'</span>) ],
671
+ 35:
672
+ 36: <span class="ruby-comment cmt"># C style multi line comment: We need three patterns here. The first</span>
673
+ 37: <span class="ruby-comment cmt"># one is for the start of the string. It switches the scanner mode to</span>
674
+ 38: <span class="ruby-comment cmt"># the :cppComment mode.</span>
675
+ 39: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\/\*([^*]*[^\/]|.*)\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startComment'</span>) ],
676
+ 40: <span class="ruby-comment cmt"># This is the string end pattern. It switches back to tjp mode.</span>
677
+ 41: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*\*\//</span>, <span class="ruby-value">:cppComment</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endComment'</span>) ],
678
+ 42: <span class="ruby-comment cmt"># This pattern matches string lines that contain neither the start,</span>
679
+ 43: <span class="ruby-comment cmt"># nor the end of the string.</span>
680
+ 44: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/^.*\n/</span>, <span class="ruby-value">:cppComment</span> ],
681
+ 45:
682
+ 46: <span class="ruby-comment cmt"># Macro Call: This case is more complicated because we want to replace</span>
683
+ 47: <span class="ruby-comment cmt"># macro calls inside of numbers, strings and identifiers. For this to</span>
684
+ 48: <span class="ruby-comment cmt"># work, macro calls may have a prefix that looks like a number, a part</span>
685
+ 49: <span class="ruby-comment cmt"># of a string or an identifier. This prefix is preserved and</span>
686
+ 50: <span class="ruby-comment cmt"># re-injected into the scanner together with the expanded text. Macro</span>
687
+ 51: <span class="ruby-comment cmt"># calls may span multiple lines. The ${ and the macro name must be in</span>
688
+ 52: <span class="ruby-comment cmt"># the first line. Arguments that span multiple lines are not</span>
689
+ 53: <span class="ruby-comment cmt"># supported. As above, we need rules for the start, the end and lines</span>
690
+ 54: <span class="ruby-comment cmt"># with neither start nor end. Macro calls inside of strings need a</span>
691
+ 55: <span class="ruby-comment cmt"># special start pattern that is active in the string modes. Both</span>
692
+ 56: <span class="ruby-comment cmt"># patterns switch the scanner to macroCall mode.</span>
693
+ 57: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/([-a-zA-Z_0-9&gt;:.+]*|&quot;(\\&quot;|[^&quot;])*?|'(\\'|[^'])*?)?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
694
+ 58: <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
695
+ 59: <span class="ruby-comment cmt"># This pattern is similar to the previous one, but is active inside of</span>
696
+ 60: <span class="ruby-comment cmt"># multi-line strings. The corresponding rule for sizzors strings</span>
697
+ 61: <span class="ruby-comment cmt"># can be found below.</span>
698
+ 62: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/(\\&quot;|[^&quot;])*?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
699
+ 63: <span class="ruby-value">:dqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
700
+ 64: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/(\\'|[^'])*?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
701
+ 65: <span class="ruby-value">:sqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
702
+ 66: <span class="ruby-comment cmt"># This pattern matches the end of a macro call. It injects the prefix</span>
703
+ 67: <span class="ruby-comment cmt"># and the expanded macro into the scanner again. The mode is restored</span>
704
+ 68: <span class="ruby-comment cmt"># to the previous mode.</span>
705
+ 69: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*\s*\}/</span>, <span class="ruby-value">:macroCall</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endMacroCall'</span>) ],
706
+ 70: <span class="ruby-comment cmt"># This pattern collects macro call arguments in lines that contain</span>
707
+ 71: <span class="ruby-comment cmt"># neither the start nor the end of the macro.</span>
708
+ 72: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:macroCall</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midMacroCall'</span>) ],
709
+ 73:
710
+ 74: <span class="ruby-comment cmt"># An ID with a colon suffix: foo:</span>
711
+ 75: [ <span class="ruby-value">:ID_WITH_COLON</span>, <span class="ruby-regexp re">/[a-zA-Z_]\w*:/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'chop'</span>) ],
712
+ 76:
713
+ 77: <span class="ruby-comment cmt"># An absolute ID: a.b.c</span>
714
+ 78: [ <span class="ruby-value">:ABSOLUTE_ID</span>, <span class="ruby-regexp re">/[a-zA-Z_]\w*(\.[a-zA-Z_]\w*)+/</span> ],
715
+ 79:
716
+ 80: <span class="ruby-comment cmt"># A normal ID: bar</span>
717
+ 81: [ <span class="ruby-value">:ID</span>, <span class="ruby-regexp re">/[a-zA-Z_]\w*/</span> ],
718
+ 82:
719
+ 83: <span class="ruby-comment cmt"># A date</span>
720
+ 84: [ <span class="ruby-value">:DATE</span>, <span class="ruby-regexp re">/\d{4}-\d{1,2}-\d{1,2}(-\d{1,2}:\d{1,2}(:\d{1,2})?(-[-+]?\d{4})?)?/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_date'</span>) ],
721
+ 85:
722
+ 86: <span class="ruby-comment cmt"># A time of day</span>
723
+ 87: [ <span class="ruby-value">:TIME</span>, <span class="ruby-regexp re">/\d{1,2}:\d{2}/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_time'</span>) ],
724
+ 88:
725
+ 89: <span class="ruby-comment cmt"># A floating point number (e. g. 3.143)</span>
726
+ 90: [ <span class="ruby-value">:FLOAT</span>, <span class="ruby-regexp re">/\d*\.\d+/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_f'</span>) ],
727
+ 91:
728
+ 92: <span class="ruby-comment cmt"># An integer number</span>
729
+ 93: [ <span class="ruby-value">:INTEGER</span>, <span class="ruby-regexp re">/\d+/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'to_i'</span>) ],
730
+ 94:
731
+ 95: <span class="ruby-comment cmt"># Multi line string enclosed with double quotes. The string may</span>
732
+ 96: <span class="ruby-comment cmt"># contain double quotes prefixed by a backslash. The first rule</span>
733
+ 97: <span class="ruby-comment cmt"># switches the scanner to dqString mode.</span>
734
+ 98: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/&quot;(\\&quot;|[^&quot;])*/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startStringDQ'</span>) ],
735
+ 99: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
736
+ 100: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/^(\\&quot;|[^&quot;])*\n/</span>, <span class="ruby-value">:dqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midStringDQ'</span>) ],
737
+ 101: <span class="ruby-comment cmt"># The end of the string.</span>
738
+ 102: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/(\\&quot;|[^&quot;])*&quot;/</span>, <span class="ruby-value">:dqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringDQ'</span>) ],
739
+ 103:
740
+ 104: <span class="ruby-comment cmt"># Multi line string enclosed with single quotes.</span>
741
+ 105: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/'(\\'|[^'])*/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startStringSQ'</span>) ],
742
+ 106: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
743
+ 107: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/^(\\'|[^'])*\n/</span>, <span class="ruby-value">:sqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midStringSQ'</span>) ],
744
+ 108: <span class="ruby-comment cmt"># The end of the string.</span>
745
+ 109: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/(\\'|[^'])*'/</span>, <span class="ruby-value">:sqString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringSQ'</span>) ],
746
+ 110:
747
+ 111: <span class="ruby-comment cmt"># Scizzors marked string -8&lt;- ... -&gt;8-: The opening mark must be the</span>
748
+ 112: <span class="ruby-comment cmt"># last thing in the line. The indentation of the first line after the</span>
749
+ 113: <span class="ruby-comment cmt"># opening mark determines the indentation for all following lines. So,</span>
750
+ 114: <span class="ruby-comment cmt"># we first switch the scanner to szrString1 mode.</span>
751
+ 115: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/-8&lt;-.*\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startStringSZR'</span>) ],
752
+ 116: <span class="ruby-comment cmt"># Since the first line can be the last line (empty string case), we</span>
753
+ 117: <span class="ruby-comment cmt"># need to detect the end in szrString1 and szrString mode. The</span>
754
+ 118: <span class="ruby-comment cmt"># patterns switch the scanner back to tjp mode.</span>
755
+ 119: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/\s*-&gt;8-/</span>, <span class="ruby-value">:szrString1</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringSZR'</span>) ],
756
+ 120: [ <span class="ruby-value">:STRING</span>, <span class="ruby-regexp re">/\s*-&gt;8-/</span>, <span class="ruby-value">:szrString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endStringSZR'</span>) ],
757
+ 121: <span class="ruby-comment cmt"># This rule handles macros inside of sizzors strings.</span>
758
+ 122: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*?\$\{\s*([a-zA-Z_]\w*)(\s*&quot;(\\&quot;|[^&quot;])*&quot;)*/</span>,
759
+ 123: [ <span class="ruby-value">:szrString</span>, <span class="ruby-value">:szrString1</span> ], <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroCall'</span>) ],
760
+ 124: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
761
+ 125: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:szrString1</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'firstStringSZR'</span>) ],
762
+ 126: [ <span class="ruby-value str">'nil'</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:szrString</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midStringSZR'</span>) ],
763
+ 127:
764
+ 128: <span class="ruby-comment cmt"># Single line macro definition</span>
765
+ 129: [ <span class="ruby-value">:MACRO</span>, <span class="ruby-regexp re">/\[.*\]\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'chop2nl'</span>) ],
766
+ 130:
767
+ 131: <span class="ruby-comment cmt"># Multi line macro definition: The pattern switches the scanner into</span>
768
+ 132: <span class="ruby-comment cmt"># macroDef mode.</span>
769
+ 133: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/\[.*\n/</span>, <span class="ruby-value">:tjp</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'startMacroDef'</span>) ],
770
+ 134: <span class="ruby-comment cmt"># The end of the macro is marked by a ']' that is immediately followed</span>
771
+ 135: <span class="ruby-comment cmt"># by a line break. It switches the scanner back to tjp mode.</span>
772
+ 136: [ <span class="ruby-value">:MACRO</span>, <span class="ruby-regexp re">/.*\]\n/</span>, <span class="ruby-value">:macroDef</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'endMacroDef'</span>) ],
773
+ 137: <span class="ruby-comment cmt"># Any line not containing the start or end.</span>
774
+ 138: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-regexp re">/.*\n/</span>, <span class="ruby-value">:macroDef</span>, <span class="ruby-identifier">method</span>(<span class="ruby-value str">'midMacroDef'</span>) ],
775
+ 139:
776
+ 140: <span class="ruby-comment cmt"># Some multi-char literals.</span>
777
+ 141: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/&lt;=?/</span> ],
778
+ 142: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/&gt;=?/</span> ],
779
+ 143: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/!=?/</span> ],
780
+ 144:
781
+ 145: <span class="ruby-comment cmt"># Everything else is returned as a single-char literal.</span>
782
+ 146: [ <span class="ruby-value">:LITERAL</span>, <span class="ruby-regexp re">/./</span> ]
783
+ 147: ]
784
+ 148:
785
+ 149: <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">:tjp</span>)
786
+ 150: <span class="ruby-keyword kw">end</span></pre>
781
787
  </div>
782
788
 
783
789
  </div>
@@ -814,10 +820,10 @@ to detect the tokens of the TJP syntax.
814
820
  <div class="method-source-code"
815
821
  id="chop-source">
816
822
  <pre>
817
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 191</span>
818
- 191: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">chop</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
819
- 192: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>] ]
820
- 193: <span class="ruby-keyword kw">end</span></pre>
823
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 192</span>
824
+ 192: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">chop</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
825
+ 193: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>] ]
826
+ 194: <span class="ruby-keyword kw">end</span></pre>
821
827
  </div>
822
828
 
823
829
  </div>
@@ -848,11 +854,11 @@ to detect the tokens of the TJP syntax.
848
854
  <div class="method-source-code"
849
855
  id="chop--source">
850
856
  <pre>
851
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 195</span>
852
- 195: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">chop2</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
853
- 196: <span class="ruby-comment cmt"># Remove first and last character.</span>
854
- 197: [ <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>] ]
855
- 198: <span class="ruby-keyword kw">end</span></pre>
857
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 196</span>
858
+ 196: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">chop2</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
859
+ 197: <span class="ruby-comment cmt"># Remove first and last character.</span>
860
+ 198: [ <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>] ]
861
+ 199: <span class="ruby-keyword kw">end</span></pre>
856
862
  </div>
857
863
 
858
864
  </div>
@@ -883,11 +889,11 @@ to detect the tokens of the TJP syntax.
883
889
  <div class="method-source-code"
884
890
  id="chop-nl-source">
885
891
  <pre>
886
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 200</span>
887
- 200: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">chop2nl</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
888
- 201: <span class="ruby-comment cmt"># remove first and last 2 characters.</span>
889
- 202: [ <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">3</span>] ]
890
- 203: <span class="ruby-keyword kw">end</span></pre>
892
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 201</span>
893
+ 201: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">chop2nl</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
894
+ 202: <span class="ruby-comment cmt"># remove first and last 2 characters.</span>
895
+ 203: [ <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">3</span>] ]
896
+ 204: <span class="ruby-keyword kw">end</span></pre>
891
897
  </div>
892
898
 
893
899
  </div>
@@ -918,11 +924,11 @@ to detect the tokens of the TJP syntax.
918
924
  <div class="method-source-code"
919
925
  id="end-omment-source">
920
926
  <pre>
921
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 210</span>
922
- 210: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endComment</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
923
- 211: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
924
- 212: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
925
- 213: <span class="ruby-keyword kw">end</span></pre>
927
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 211</span>
928
+ 211: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endComment</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
929
+ 212: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
930
+ 213: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
931
+ 214: <span class="ruby-keyword kw">end</span></pre>
926
932
  </div>
927
933
 
928
934
  </div>
@@ -953,48 +959,48 @@ to detect the tokens of the TJP syntax.
953
959
  <div class="method-source-code"
954
960
  id="end-acro-all-source">
955
961
  <pre>
956
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 324</span>
957
- 324: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endMacroCall</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
958
- 325: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-ivar">@macroCallPreviousMode</span>
959
- 326: <span class="ruby-ivar">@macroCall</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>
960
- 327:
961
- 328: <span class="ruby-comment cmt"># Store any characters that precede the ${ in prefix and remove it from</span>
962
- 329: <span class="ruby-comment cmt"># @macroCall.</span>
963
- 330: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">macroStart</span> = <span class="ruby-ivar">@macroCall</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'${'</span>)) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
964
- 331: <span class="ruby-identifier">prefix</span> = <span class="ruby-ivar">@macroCall</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">macroStart</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)]
965
- 332: <span class="ruby-ivar">@macroCall</span> = <span class="ruby-ivar">@macroCall</span>[<span class="ruby-identifier">macroStart</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
966
- 333: <span class="ruby-keyword kw">else</span>
967
- 334: <span class="ruby-identifier">prefix</span> = <span class="ruby-value str">''</span>
968
- 335: <span class="ruby-keyword kw">end</span>
969
- 336:
970
- 337: <span class="ruby-comment cmt"># Remove '${' and '}'</span>
971
- 338: <span class="ruby-identifier">argsStr</span> = <span class="ruby-ivar">@macroCall</span>[<span class="ruby-value">2</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>]
972
- 339: <span class="ruby-comment cmt"># Extract the macro name.</span>
973
- 340: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argsStr</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">' '</span>).<span class="ruby-identifier">nil?</span>
974
- 341: <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">prefix</span>, [ <span class="ruby-identifier">argsStr</span> ])
975
- 342: <span class="ruby-keyword kw">else</span>
976
- 343: <span class="ruby-identifier">macroName</span> = <span class="ruby-identifier">argsStr</span>[<span class="ruby-value">0</span>, <span class="ruby-identifier">argsStr</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">' '</span>)]
977
- 344: <span class="ruby-comment cmt"># Remove the name part from argsStr</span>
978
- 345: <span class="ruby-identifier">argsStr</span> = <span class="ruby-identifier">argsStr</span>[<span class="ruby-identifier">macroName</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
979
- 346: <span class="ruby-comment cmt"># Array to hold the arguments</span>
980
- 347: <span class="ruby-identifier">args</span> = []
981
- 348: <span class="ruby-comment cmt"># We use another StringScanner to clean the double quotes.</span>
982
- 349: <span class="ruby-identifier">scanner</span> = <span class="ruby-constant">StringScanner</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">argsStr</span>)
983
- 350: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/\s*&quot;/</span>))
984
- 351: <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/(\\&quot;|[^&quot;])*/</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\&quot;/</span>, <span class="ruby-value str">'&quot;'</span>)
985
- 352: <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/&quot;\s*/</span>)
986
- 353: <span class="ruby-keyword kw">end</span>
987
- 354:
988
- 355: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">eos?</span>
989
- 356: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Junk found at end of macro: #{argsStr[scanner.pos..-1]}&quot;</span>
990
- 357: <span class="ruby-keyword kw">end</span>
991
- 358:
992
- 359: <span class="ruby-comment cmt"># Expand the macro and inject it into the scanner.</span>
993
- 360: <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">prefix</span>, [ <span class="ruby-identifier">macroName</span> ] <span class="ruby-operator">+</span> <span class="ruby-identifier">args</span>)
994
- 361: <span class="ruby-keyword kw">end</span>
995
- 362:
996
- 363: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
997
- 364: <span class="ruby-keyword kw">end</span></pre>
962
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 325</span>
963
+ 325: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endMacroCall</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
964
+ 326: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-ivar">@macroCallPreviousMode</span>
965
+ 327: <span class="ruby-ivar">@macroCall</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>
966
+ 328:
967
+ 329: <span class="ruby-comment cmt"># Store any characters that precede the ${ in prefix and remove it from</span>
968
+ 330: <span class="ruby-comment cmt"># @macroCall.</span>
969
+ 331: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">macroStart</span> = <span class="ruby-ivar">@macroCall</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">'${'</span>)) <span class="ruby-operator">&gt;</span> <span class="ruby-value">0</span>
970
+ 332: <span class="ruby-identifier">prefix</span> = <span class="ruby-ivar">@macroCall</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span>(<span class="ruby-identifier">macroStart</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>)]
971
+ 333: <span class="ruby-ivar">@macroCall</span> = <span class="ruby-ivar">@macroCall</span>[<span class="ruby-identifier">macroStart</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
972
+ 334: <span class="ruby-keyword kw">else</span>
973
+ 335: <span class="ruby-identifier">prefix</span> = <span class="ruby-value str">''</span>
974
+ 336: <span class="ruby-keyword kw">end</span>
975
+ 337:
976
+ 338: <span class="ruby-comment cmt"># Remove '${' and '}'</span>
977
+ 339: <span class="ruby-identifier">argsStr</span> = <span class="ruby-ivar">@macroCall</span>[<span class="ruby-value">2</span><span class="ruby-operator">..</span><span class="ruby-value">2</span>]
978
+ 340: <span class="ruby-comment cmt"># Extract the macro name.</span>
979
+ 341: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argsStr</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">' '</span>).<span class="ruby-identifier">nil?</span>
980
+ 342: <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">prefix</span>, [ <span class="ruby-identifier">argsStr</span> ])
981
+ 343: <span class="ruby-keyword kw">else</span>
982
+ 344: <span class="ruby-identifier">macroName</span> = <span class="ruby-identifier">argsStr</span>[<span class="ruby-value">0</span>, <span class="ruby-identifier">argsStr</span>.<span class="ruby-identifier">index</span>(<span class="ruby-value str">' '</span>)]
983
+ 345: <span class="ruby-comment cmt"># Remove the name part from argsStr</span>
984
+ 346: <span class="ruby-identifier">argsStr</span> = <span class="ruby-identifier">argsStr</span>[<span class="ruby-identifier">macroName</span>.<span class="ruby-identifier">length</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
985
+ 347: <span class="ruby-comment cmt"># Array to hold the arguments</span>
986
+ 348: <span class="ruby-identifier">args</span> = []
987
+ 349: <span class="ruby-comment cmt"># We use another StringScanner to clean the double quotes.</span>
988
+ 350: <span class="ruby-identifier">scanner</span> = <span class="ruby-constant">StringScanner</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">argsStr</span>)
989
+ 351: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/\s*&quot;/</span>))
990
+ 352: <span class="ruby-identifier">args</span> <span class="ruby-operator">&lt;&lt;</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/(\\&quot;|[^&quot;])*/</span>).<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\&quot;/</span>, <span class="ruby-value str">'&quot;'</span>)
991
+ 353: <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-regexp re">/&quot;\s*/</span>)
992
+ 354: <span class="ruby-keyword kw">end</span>
993
+ 355:
994
+ 356: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">scanner</span>.<span class="ruby-identifier">eos?</span>
995
+ 357: <span class="ruby-identifier">raise</span> <span class="ruby-node">&quot;Junk found at end of macro: #{argsStr[scanner.pos..-1]}&quot;</span>
996
+ 358: <span class="ruby-keyword kw">end</span>
997
+ 359:
998
+ 360: <span class="ruby-comment cmt"># Expand the macro and inject it into the scanner.</span>
999
+ 361: <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">prefix</span>, [ <span class="ruby-identifier">macroName</span> ] <span class="ruby-operator">+</span> <span class="ruby-identifier">args</span>)
1000
+ 362: <span class="ruby-keyword kw">end</span>
1001
+ 363:
1002
+ 364: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1003
+ 365: <span class="ruby-keyword kw">end</span></pre>
998
1004
  </div>
999
1005
 
1000
1006
  </div>
@@ -1025,13 +1031,13 @@ to detect the tokens of the TJP syntax.
1025
1031
  <div class="method-source-code"
1026
1032
  id="end-acro-ef-source">
1027
1033
  <pre>
1028
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 305</span>
1029
- 305: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endMacroDef</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1030
- 306: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1031
- 307: <span class="ruby-comment cmt"># Remove &quot;]\n&quot;</span>
1032
- 308: <span class="ruby-ivar">@macroDef</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">3</span>]
1033
- 309: [ <span class="ruby-value">:MACRO</span>, <span class="ruby-ivar">@macroDef</span> ]
1034
- 310: <span class="ruby-keyword kw">end</span></pre>
1034
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 306</span>
1035
+ 306: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endMacroDef</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1036
+ 307: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1037
+ 308: <span class="ruby-comment cmt"># Remove &quot;]\n&quot;</span>
1038
+ 309: <span class="ruby-ivar">@macroDef</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</span><span class="ruby-operator">..</span><span class="ruby-value">3</span>]
1039
+ 310: [ <span class="ruby-value">:MACRO</span>, <span class="ruby-ivar">@macroDef</span> ]
1040
+ 311: <span class="ruby-keyword kw">end</span></pre>
1035
1041
  </div>
1036
1042
 
1037
1043
  </div>
@@ -1062,13 +1068,13 @@ to detect the tokens of the TJP syntax.
1062
1068
  <div class="method-source-code"
1063
1069
  id="end-tring--source">
1064
1070
  <pre>
1065
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 228</span>
1066
- 228: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endStringDQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1067
- 229: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1068
- 230: <span class="ruby-comment cmt"># Remove the trailing &quot; and remove the backslashes from escaped &quot;.</span>
1069
- 231: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</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>)
1070
- 232: [ <span class="ruby-value">:STRING</span>, <span class="ruby-ivar">@string</span> ]
1071
- 233: <span class="ruby-keyword kw">end</span></pre>
1071
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 229</span>
1072
+ 229: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endStringDQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1073
+ 230: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1074
+ 231: <span class="ruby-comment cmt"># Remove the trailing &quot; and remove the backslashes from escaped &quot;.</span>
1075
+ 232: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</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>)
1076
+ 233: [ <span class="ruby-value">:STRING</span>, <span class="ruby-ivar">@string</span> ]
1077
+ 234: <span class="ruby-keyword kw">end</span></pre>
1072
1078
  </div>
1073
1079
 
1074
1080
  </div>
@@ -1099,13 +1105,13 @@ to detect the tokens of the TJP syntax.
1099
1105
  <div class="method-source-code"
1100
1106
  id="end-tring--source">
1101
1107
  <pre>
1102
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 248</span>
1103
- 248: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endStringSQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1104
- 249: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1105
- 250: <span class="ruby-comment cmt"># Remove the trailing ' and remove the backslashes from escaped '.</span>
1106
- 251: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</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>)
1107
- 252: [ <span class="ruby-value">:STRING</span>, <span class="ruby-ivar">@string</span> ]
1108
- 253: <span class="ruby-keyword kw">end</span></pre>
1108
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 249</span>
1109
+ 249: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endStringSQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1110
+ 250: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1111
+ 251: <span class="ruby-comment cmt"># Remove the trailing ' and remove the backslashes from escaped '.</span>
1112
+ 252: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-value">0</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>)
1113
+ 253: [ <span class="ruby-value">:STRING</span>, <span class="ruby-ivar">@string</span> ]
1114
+ 254: <span class="ruby-keyword kw">end</span></pre>
1109
1115
  </div>
1110
1116
 
1111
1117
  </div>
@@ -1136,11 +1142,11 @@ to detect the tokens of the TJP syntax.
1136
1142
  <div class="method-source-code"
1137
1143
  id="end-tring--source">
1138
1144
  <pre>
1139
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 288</span>
1140
- 288: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1141
- 289: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1142
- 290: [ <span class="ruby-value">:STRING</span>, <span class="ruby-ivar">@string</span> ]
1143
- 291: <span class="ruby-keyword kw">end</span></pre>
1145
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 289</span>
1146
+ 289: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">endStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1147
+ 290: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:tjp</span>
1148
+ 291: [ <span class="ruby-value">:STRING</span>, <span class="ruby-ivar">@string</span> ]
1149
+ 292: <span class="ruby-keyword kw">end</span></pre>
1144
1150
  </div>
1145
1151
 
1146
1152
  </div>
@@ -1171,13 +1177,13 @@ to detect the tokens of the TJP syntax.
1171
1177
  <div class="method-source-code"
1172
1178
  id="first-tring--source">
1173
1179
  <pre>
1174
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 270</span>
1175
- 270: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">firstStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1176
- 271: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:szrString</span>
1177
- 272: <span class="ruby-comment cmt"># Split the leading indentation and the rest of the string.</span>
1178
- 273: <span class="ruby-ivar">@indent</span>, <span class="ruby-ivar">@string</span> = *<span class="ruby-regexp re">/(\s*)(.*\n)/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">match</span>)[<span class="ruby-value">1</span>, <span class="ruby-value">2</span>]
1179
- 274: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1180
- 275: <span class="ruby-keyword kw">end</span></pre>
1180
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 271</span>
1181
+ 271: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">firstStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1182
+ 272: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:szrString</span>
1183
+ 273: <span class="ruby-comment cmt"># Split the leading indentation and the rest of the string.</span>
1184
+ 274: <span class="ruby-ivar">@indent</span>, <span class="ruby-ivar">@string</span> = *<span class="ruby-regexp re">/(\s*)(.*\n)/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">match</span>)[<span class="ruby-value">1</span>, <span class="ruby-value">2</span>]
1185
+ 275: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1186
+ 276: <span class="ruby-keyword kw">end</span></pre>
1181
1187
  </div>
1182
1188
 
1183
1189
  </div>
@@ -1208,11 +1214,11 @@ to detect the tokens of the TJP syntax.
1208
1214
  <div class="method-source-code"
1209
1215
  id="mid-acro-all-source">
1210
1216
  <pre>
1211
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 319</span>
1212
- 319: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midMacroCall</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1213
- 320: <span class="ruby-ivar">@macroCall</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>
1214
- 321: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1215
- 322: <span class="ruby-keyword kw">end</span></pre>
1217
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 320</span>
1218
+ 320: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midMacroCall</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1219
+ 321: <span class="ruby-ivar">@macroCall</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>
1220
+ 322: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1221
+ 323: <span class="ruby-keyword kw">end</span></pre>
1216
1222
  </div>
1217
1223
 
1218
1224
  </div>
@@ -1243,11 +1249,11 @@ to detect the tokens of the TJP syntax.
1243
1249
  <div class="method-source-code"
1244
1250
  id="mid-acro-ef-source">
1245
1251
  <pre>
1246
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 300</span>
1247
- 300: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midMacroDef</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1248
- 301: <span class="ruby-ivar">@macroDef</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>
1249
- 302: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1250
- 303: <span class="ruby-keyword kw">end</span></pre>
1252
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 301</span>
1253
+ 301: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midMacroDef</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1254
+ 302: <span class="ruby-ivar">@macroDef</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>
1255
+ 303: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1256
+ 304: <span class="ruby-keyword kw">end</span></pre>
1251
1257
  </div>
1252
1258
 
1253
1259
  </div>
@@ -1278,12 +1284,12 @@ to detect the tokens of the TJP syntax.
1278
1284
  <div class="method-source-code"
1279
1285
  id="mid-tring--source">
1280
1286
  <pre>
1281
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 222</span>
1282
- 222: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midStringDQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1283
- 223: <span class="ruby-comment cmt"># Remove the backslashes from escaped &quot;.</span>
1284
- 224: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\&quot;/</span>, <span class="ruby-value str">'&quot;'</span>)
1285
- 225: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1286
- 226: <span class="ruby-keyword kw">end</span></pre>
1287
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 223</span>
1288
+ 223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midStringDQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1289
+ 224: <span class="ruby-comment cmt"># Remove the backslashes from escaped &quot;.</span>
1290
+ 225: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\&quot;/</span>, <span class="ruby-value str">'&quot;'</span>)
1291
+ 226: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1292
+ 227: <span class="ruby-keyword kw">end</span></pre>
1287
1293
  </div>
1288
1294
 
1289
1295
  </div>
@@ -1314,12 +1320,12 @@ to detect the tokens of the TJP syntax.
1314
1320
  <div class="method-source-code"
1315
1321
  id="mid-tring--source">
1316
1322
  <pre>
1317
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 242</span>
1318
- 242: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midStringSQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1319
- 243: <span class="ruby-comment cmt"># Remove the backslashes from escaped '.</span>
1320
- 244: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\'/</span>, <span class="ruby-value str">&quot;'&quot;</span>)
1321
- 245: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1322
- 246: <span class="ruby-keyword kw">end</span></pre>
1323
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 243</span>
1324
+ 243: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midStringSQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1325
+ 244: <span class="ruby-comment cmt"># Remove the backslashes from escaped '.</span>
1326
+ 245: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\'/</span>, <span class="ruby-value str">&quot;'&quot;</span>)
1327
+ 246: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1328
+ 247: <span class="ruby-keyword kw">end</span></pre>
1323
1329
  </div>
1324
1330
 
1325
1331
  </div>
@@ -1350,17 +1356,17 @@ to detect the tokens of the TJP syntax.
1350
1356
  <div class="method-source-code"
1351
1357
  id="mid-tring--source">
1352
1358
  <pre>
1353
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 277</span>
1354
- 277: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1355
- 278: <span class="ruby-comment cmt"># Ignore all the characters from the begining of match that are the same</span>
1356
- 279: <span class="ruby-comment cmt"># in @indent.</span>
1357
- 280: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1358
- 281: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@indent</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@indent</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">match</span>[<span class="ruby-identifier">i</span>]
1359
- 282: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1360
- 283: <span class="ruby-keyword kw">end</span>
1361
- 284: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
1362
- 285: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1363
- 286: <span class="ruby-keyword kw">end</span></pre>
1359
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 278</span>
1360
+ 278: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">midStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1361
+ 279: <span class="ruby-comment cmt"># Ignore all the characters from the begining of match that are the same</span>
1362
+ 280: <span class="ruby-comment cmt"># in @indent.</span>
1363
+ 281: <span class="ruby-identifier">i</span> = <span class="ruby-value">0</span>
1364
+ 282: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">i</span> <span class="ruby-operator">&lt;</span> <span class="ruby-ivar">@indent</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-ivar">@indent</span>[<span class="ruby-identifier">i</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">match</span>[<span class="ruby-identifier">i</span>]
1365
+ 283: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
1366
+ 284: <span class="ruby-keyword kw">end</span>
1367
+ 285: <span class="ruby-ivar">@string</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">match</span>[<span class="ruby-identifier">i</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
1368
+ 286: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1369
+ 287: <span class="ruby-keyword kw">end</span></pre>
1364
1370
  </div>
1365
1371
 
1366
1372
  </div>
@@ -1391,11 +1397,11 @@ to detect the tokens of the TJP syntax.
1391
1397
  <div class="method-source-code"
1392
1398
  id="new-os-source">
1393
1399
  <pre>
1394
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 186</span>
1395
- 186: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newPos</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1396
- 187: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
1397
- 188: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1398
- 189: <span class="ruby-keyword kw">end</span></pre>
1400
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 187</span>
1401
+ 187: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newPos</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1402
+ 188: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
1403
+ 189: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1404
+ 190: <span class="ruby-keyword kw">end</span></pre>
1399
1405
  </div>
1400
1406
 
1401
1407
  </div>
@@ -1426,11 +1432,11 @@ to detect the tokens of the TJP syntax.
1426
1432
  <div class="method-source-code"
1427
1433
  id="start-omment-source">
1428
1434
  <pre>
1429
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 205</span>
1430
- 205: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startComment</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1431
- 206: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:cppComment</span>
1432
- 207: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1433
- 208: <span class="ruby-keyword kw">end</span></pre>
1435
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 206</span>
1436
+ 206: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startComment</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1437
+ 207: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:cppComment</span>
1438
+ 208: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1439
+ 209: <span class="ruby-keyword kw">end</span></pre>
1434
1440
  </div>
1435
1441
 
1436
1442
  </div>
@@ -1461,13 +1467,13 @@ to detect the tokens of the TJP syntax.
1461
1467
  <div class="method-source-code"
1462
1468
  id="start-acro-all-source">
1463
1469
  <pre>
1464
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 312</span>
1465
- 312: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startMacroCall</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1466
- 313: <span class="ruby-ivar">@macroCallPreviousMode</span> = <span class="ruby-ivar">@scannerMode</span>
1467
- 314: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:macroCall</span>
1468
- 315: <span class="ruby-ivar">@macroCall</span> = <span class="ruby-identifier">match</span>
1469
- 316: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1470
- 317: <span class="ruby-keyword kw">end</span></pre>
1470
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 313</span>
1471
+ 313: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startMacroCall</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1472
+ 314: <span class="ruby-ivar">@macroCallPreviousMode</span> = <span class="ruby-ivar">@scannerMode</span>
1473
+ 315: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:macroCall</span>
1474
+ 316: <span class="ruby-ivar">@macroCall</span> = <span class="ruby-identifier">match</span>
1475
+ 317: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1476
+ 318: <span class="ruby-keyword kw">end</span></pre>
1471
1477
  </div>
1472
1478
 
1473
1479
  </div>
@@ -1498,13 +1504,13 @@ to detect the tokens of the TJP syntax.
1498
1504
  <div class="method-source-code"
1499
1505
  id="start-acro-ef-source">
1500
1506
  <pre>
1501
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 293</span>
1502
- 293: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startMacroDef</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1503
- 294: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:macroDef</span>
1504
- 295: <span class="ruby-comment cmt"># Remove the opening '['</span>
1505
- 296: <span class="ruby-ivar">@macroDef</span> = <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
1506
- 297: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1507
- 298: <span class="ruby-keyword kw">end</span></pre>
1507
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 294</span>
1508
+ 294: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startMacroDef</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1509
+ 295: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:macroDef</span>
1510
+ 296: <span class="ruby-comment cmt"># Remove the opening '['</span>
1511
+ 297: <span class="ruby-ivar">@macroDef</span> = <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
1512
+ 298: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1513
+ 299: <span class="ruby-keyword kw">end</span></pre>
1508
1514
  </div>
1509
1515
 
1510
1516
  </div>
@@ -1535,13 +1541,13 @@ to detect the tokens of the TJP syntax.
1535
1541
  <div class="method-source-code"
1536
1542
  id="start-tring--source">
1537
1543
  <pre>
1538
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 215</span>
1539
- 215: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startStringDQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1540
- 216: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:dqString</span>
1541
- 217: <span class="ruby-comment cmt"># Remove the opening &quot; and remove the backslashes from escaped &quot;.</span>
1542
- 218: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\&quot;/</span>, <span class="ruby-value str">'&quot;'</span>)
1543
- 219: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1544
- 220: <span class="ruby-keyword kw">end</span></pre>
1544
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 216</span>
1545
+ 216: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startStringDQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1546
+ 217: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:dqString</span>
1547
+ 218: <span class="ruby-comment cmt"># Remove the opening &quot; and remove the backslashes from escaped &quot;.</span>
1548
+ 219: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\&quot;/</span>, <span class="ruby-value str">'&quot;'</span>)
1549
+ 220: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1550
+ 221: <span class="ruby-keyword kw">end</span></pre>
1545
1551
  </div>
1546
1552
 
1547
1553
  </div>
@@ -1572,13 +1578,13 @@ to detect the tokens of the TJP syntax.
1572
1578
  <div class="method-source-code"
1573
1579
  id="start-tring--source">
1574
1580
  <pre>
1575
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 235</span>
1576
- 235: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startStringSQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1577
- 236: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:sqString</span>
1578
- 237: <span class="ruby-comment cmt"># Remove the opening ' and remove the backslashes from escaped '.</span>
1579
- 238: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\'/</span>, <span class="ruby-value str">&quot;'&quot;</span>)
1580
- 239: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1581
- 240: <span class="ruby-keyword kw">end</span></pre>
1581
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 236</span>
1582
+ 236: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startStringSQ</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1583
+ 237: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:sqString</span>
1584
+ 238: <span class="ruby-comment cmt"># Remove the opening ' and remove the backslashes from escaped '.</span>
1585
+ 239: <span class="ruby-ivar">@string</span> = <span class="ruby-identifier">match</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/\\'/</span>, <span class="ruby-value str">&quot;'&quot;</span>)
1586
+ 240: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1587
+ 241: <span class="ruby-keyword kw">end</span></pre>
1582
1588
  </div>
1583
1589
 
1584
1590
  </div>
@@ -1609,21 +1615,21 @@ to detect the tokens of the TJP syntax.
1609
1615
  <div class="method-source-code"
1610
1616
  id="start-tring--source">
1611
1617
  <pre>
1612
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 255</span>
1613
- 255: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1614
- 256: <span class="ruby-comment cmt"># There should be a line break after the cut mark, but we allow some</span>
1615
- 257: <span class="ruby-comment cmt"># spaces between the mark and the line break as well.</span>
1616
- 258: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-value">5</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-regexp re">/-8&lt;-\s*\n$/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">match</span>).<span class="ruby-identifier">nil?</span>
1617
- 259: <span class="ruby-ivar">@lineDelta</span> = <span class="ruby-value">1</span>
1618
- 260: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'junk_after_cut'</span>,
1619
- 261: <span class="ruby-value str">'The cut mark -8&lt;- must be immediately followed by a '</span> <span class="ruby-operator">+</span>
1620
- 262: <span class="ruby-value str">'line break.'</span>)
1621
- 263: <span class="ruby-keyword kw">end</span>
1622
- 264: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:szrString1</span>
1623
- 265: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
1624
- 266: <span class="ruby-ivar">@string</span> = <span class="ruby-value str">''</span>
1625
- 267: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1626
- 268: <span class="ruby-keyword kw">end</span></pre>
1618
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 256</span>
1619
+ 256: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">startStringSZR</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1620
+ 257: <span class="ruby-comment cmt"># There should be a line break after the cut mark, but we allow some</span>
1621
+ 258: <span class="ruby-comment cmt"># spaces between the mark and the line break as well.</span>
1622
+ 259: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">!=</span> <span class="ruby-value">5</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-regexp re">/-8&lt;-\s*\n$/</span>.<span class="ruby-identifier">match</span>(<span class="ruby-identifier">match</span>).<span class="ruby-identifier">nil?</span>
1623
+ 260: <span class="ruby-ivar">@lineDelta</span> = <span class="ruby-value">1</span>
1624
+ 261: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'junk_after_cut'</span>,
1625
+ 262: <span class="ruby-value str">'The cut mark -8&lt;- must be immediately followed by a '</span> <span class="ruby-operator">+</span>
1626
+ 263: <span class="ruby-value str">'line break.'</span>)
1627
+ 264: <span class="ruby-keyword kw">end</span>
1628
+ 265: <span class="ruby-keyword kw">self</span>.<span class="ruby-identifier">mode</span> = <span class="ruby-value">:szrString1</span>
1629
+ 266: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
1630
+ 267: <span class="ruby-ivar">@string</span> = <span class="ruby-value str">''</span>
1631
+ 268: [ <span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">''</span> ]
1632
+ 269: <span class="ruby-keyword kw">end</span></pre>
1627
1633
  </div>
1628
1634
 
1629
1635
  </div>
@@ -1654,14 +1660,14 @@ to detect the tokens of the TJP syntax.
1654
1660
  <div class="method-source-code"
1655
1661
  id="to-date-source">
1656
1662
  <pre>
1657
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 178</span>
1658
- 178: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_date</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1659
- 179: <span class="ruby-keyword kw">begin</span>
1660
- 180: [ <span class="ruby-identifier">type</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">match</span>) ]
1661
- 181: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">msg</span>
1662
- 182: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_error'</span>, <span class="ruby-identifier">msg</span>)
1663
- 183: <span class="ruby-keyword kw">end</span>
1664
- 184: <span class="ruby-keyword kw">end</span></pre>
1663
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 179</span>
1664
+ 179: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_date</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1665
+ 180: <span class="ruby-keyword kw">begin</span>
1666
+ 181: [ <span class="ruby-identifier">type</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">match</span>) ]
1667
+ 182: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span> =<span class="ruby-operator">&gt;</span> <span class="ruby-identifier">msg</span>
1668
+ 183: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_error'</span>, <span class="ruby-identifier">msg</span>)
1669
+ 184: <span class="ruby-keyword kw">end</span>
1670
+ 185: <span class="ruby-keyword kw">end</span></pre>
1665
1671
  </div>
1666
1672
 
1667
1673
  </div>
@@ -1692,10 +1698,10 @@ to detect the tokens of the TJP syntax.
1692
1698
  <div class="method-source-code"
1693
1699
  id="to-f-source">
1694
1700
  <pre>
1695
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 157</span>
1696
- 157: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_f</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1697
- 158: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>.<span class="ruby-identifier">to_f</span> ]
1698
- 159: <span class="ruby-keyword kw">end</span></pre>
1701
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 158</span>
1702
+ 158: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_f</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1703
+ 159: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>.<span class="ruby-identifier">to_f</span> ]
1704
+ 160: <span class="ruby-keyword kw">end</span></pre>
1699
1705
  </div>
1700
1706
 
1701
1707
  </div>
@@ -1726,10 +1732,10 @@ to detect the tokens of the TJP syntax.
1726
1732
  <div class="method-source-code"
1727
1733
  id="to-i-source">
1728
1734
  <pre>
1729
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 153</span>
1730
- 153: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_i</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1731
- 154: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>.<span class="ruby-identifier">to_i</span> ]
1732
- 155: <span class="ruby-keyword kw">end</span></pre>
1735
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 154</span>
1736
+ 154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_i</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1737
+ 155: [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>.<span class="ruby-identifier">to_i</span> ]
1738
+ 156: <span class="ruby-keyword kw">end</span></pre>
1733
1739
  </div>
1734
1740
 
1735
1741
  </div>
@@ -1760,23 +1766,23 @@ to detect the tokens of the TJP syntax.
1760
1766
  <div class="method-source-code"
1761
1767
  id="to-time-source">
1762
1768
  <pre>
1763
- <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 161</span>
1764
- 161: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_time</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1765
- 162: <span class="ruby-identifier">h</span>, <span class="ruby-identifier">m</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">':'</span>)
1766
- 163: <span class="ruby-identifier">h</span> = <span class="ruby-identifier">h</span>.<span class="ruby-identifier">to_i</span>
1767
- 164: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">24</span>
1768
- 165: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_bad_hour'</span>, <span class="ruby-node">&quot;Hour #{h} out of range (0 - 24)&quot;</span>)
1769
- 166: <span class="ruby-keyword kw">end</span>
1770
- 167: <span class="ruby-identifier">m</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">to_i</span>
1771
- 168: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">59</span>
1772
- 169: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_bad_minute'</span>, <span class="ruby-node">&quot;Minute #{m} out of range (0 - 59)&quot;</span>)
1773
- 170: <span class="ruby-keyword kw">end</span>
1774
- 171: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">==</span> <span class="ruby-value">24</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">m</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1775
- 172: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_bad_time'</span>, <span class="ruby-node">&quot;Time #{match} cannot be larger then 24:00&quot;</span>)
1776
- 173: <span class="ruby-keyword kw">end</span>
1777
- 174:
1778
- 175: [ <span class="ruby-identifier">type</span>, (<span class="ruby-identifier">h</span> * <span class="ruby-value">60</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>) * <span class="ruby-value">60</span> ]
1779
- 176: <span class="ruby-keyword kw">end</span></pre>
1769
+ <span class="ruby-comment cmt"># File lib/ProjectFileScanner.rb, line 162</span>
1770
+ 162: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_time</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>)
1771
+ 163: <span class="ruby-identifier">h</span>, <span class="ruby-identifier">m</span> = <span class="ruby-identifier">match</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">':'</span>)
1772
+ 164: <span class="ruby-identifier">h</span> = <span class="ruby-identifier">h</span>.<span class="ruby-identifier">to_i</span>
1773
+ 165: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">24</span>
1774
+ 166: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_bad_hour'</span>, <span class="ruby-node">&quot;Hour #{h} out of range (0 - 24)&quot;</span>)
1775
+ 167: <span class="ruby-keyword kw">end</span>
1776
+ 168: <span class="ruby-identifier">m</span> = <span class="ruby-identifier">m</span>.<span class="ruby-identifier">to_i</span>
1777
+ 169: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span> <span class="ruby-operator">&lt;</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">&gt;</span> <span class="ruby-value">59</span>
1778
+ 170: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_bad_minute'</span>, <span class="ruby-node">&quot;Minute #{m} out of range (0 - 59)&quot;</span>)
1779
+ 171: <span class="ruby-keyword kw">end</span>
1780
+ 172: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">h</span> <span class="ruby-operator">==</span> <span class="ruby-value">24</span> <span class="ruby-operator">&amp;&amp;</span> <span class="ruby-identifier">m</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
1781
+ 173: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'time_bad_time'</span>, <span class="ruby-node">&quot;Time #{match} cannot be larger then 24:00&quot;</span>)
1782
+ 174: <span class="ruby-keyword kw">end</span>
1783
+ 175:
1784
+ 176: [ <span class="ruby-identifier">type</span>, (<span class="ruby-identifier">h</span> * <span class="ruby-value">60</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">m</span>) * <span class="ruby-value">60</span> ]
1785
+ 177: <span class="ruby-keyword kw">end</span></pre>
1780
1786
  </div>
1781
1787
 
1782
1788
  </div>