taskjuggler 0.0.5 → 0.0.6
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.
- data/CHANGELOG +2086 -0
- data/benchmarks/666tasks.tjp +3183 -0
- data/benchmarks/booking.tjp +14 -10
- data/doc/AppConfig.html +95 -73
- data/doc/Arguments.html +22 -2
- data/doc/CHANGELOG.html +2587 -0
- data/doc/COPYING.html +21 -1
- data/doc/Object.html +161 -122
- data/doc/README.html +21 -1
- data/doc/RuntimeConfig.html +26 -6
- data/doc/String.html +38 -18
- data/doc/StringIO.html +579 -0
- data/doc/TaskJuggler.html +251 -143
- data/doc/TaskJuggler/Account.html +26 -6
- data/doc/TaskJuggler/AccountAttribute.html +28 -8
- data/doc/TaskJuggler/AccountScenario.html +24 -4
- data/doc/TaskJuggler/Allocation.html +30 -10
- data/doc/TaskJuggler/AllocationAttribute.html +28 -8
- data/doc/TaskJuggler/AttributeBase.html +46 -26
- data/doc/TaskJuggler/AttributeDefinition.html +22 -2
- data/doc/TaskJuggler/BatchProcessor.html +40 -20
- data/doc/TaskJuggler/Booking.html +26 -6
- data/doc/TaskJuggler/BookingListAttribute.html +28 -8
- data/doc/TaskJuggler/BooleanAttribute.html +28 -8
- data/doc/TaskJuggler/CSVFile.html +308 -146
- data/doc/TaskJuggler/CellSettingPattern.html +22 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
- data/doc/TaskJuggler/Charge.html +26 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
- data/doc/TaskJuggler/ChargeSet.html +33 -13
- data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
- data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
- data/doc/TaskJuggler/ColumnTable.html +24 -4
- data/doc/TaskJuggler/Daemon.html +26 -6
- data/doc/TaskJuggler/DateAttribute.html +26 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
- data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
- data/doc/TaskJuggler/DurationAttribute.html +28 -8
- data/doc/TaskJuggler/FixnumAttribute.html +24 -4
- data/doc/TaskJuggler/FlagListAttribute.html +28 -8
- data/doc/TaskJuggler/FloatAttribute.html +26 -6
- data/doc/TaskJuggler/FormatListAttribute.html +24 -4
- data/doc/TaskJuggler/GanttChart.html +147 -126
- data/doc/TaskJuggler/GanttContainer.html +34 -14
- data/doc/TaskJuggler/GanttHeader.html +28 -8
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
- data/doc/TaskJuggler/GanttLine.html +38 -18
- data/doc/TaskJuggler/GanttLoadStack.html +26 -6
- data/doc/TaskJuggler/GanttMilestone.html +34 -14
- data/doc/TaskJuggler/GanttRouter.html +50 -30
- data/doc/TaskJuggler/GanttTaskBar.html +34 -14
- data/doc/TaskJuggler/HTMLDocument.html +26 -6
- data/doc/TaskJuggler/HTMLGraphics.html +30 -10
- data/doc/TaskJuggler/Interval.html +40 -22
- data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
- data/doc/TaskJuggler/JobInfo.html +24 -4
- data/doc/TaskJuggler/Journal.html +226 -147
- data/doc/TaskJuggler/JournalEntry.html +22 -2
- data/doc/TaskJuggler/JournalEntryList.html +129 -112
- data/doc/TaskJuggler/KeywordArray.html +26 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
- data/doc/TaskJuggler/Limits.html +152 -123
- data/doc/TaskJuggler/Limits/Limit.html +149 -70
- data/doc/TaskJuggler/LimitsAttribute.html +36 -51
- data/doc/TaskJuggler/ListAttributeBase.html +24 -4
- data/doc/TaskJuggler/Log.html +50 -32
- data/doc/TaskJuggler/LogFile.html +37 -17
- data/doc/TaskJuggler/LogicalAttribute.html +53 -33
- data/doc/TaskJuggler/LogicalExpression.html +26 -6
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
- data/doc/TaskJuggler/LogicalFlag.html +42 -22
- data/doc/TaskJuggler/LogicalFunction.html +204 -140
- data/doc/TaskJuggler/LogicalOperation.html +135 -111
- data/doc/TaskJuggler/Macro.html +22 -2
- data/doc/TaskJuggler/MacroParser.html +32 -12
- data/doc/TaskJuggler/MacroTable.html +32 -12
- data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
- data/doc/TaskJuggler/Message.html +24 -4
- data/doc/TaskJuggler/MessageHandler.html +24 -4
- data/doc/TaskJuggler/Navigator.html +104 -71
- data/doc/TaskJuggler/NavigatorElement.html +32 -12
- data/doc/TaskJuggler/NikuProject.html +22 -2
- data/doc/TaskJuggler/NikuReport.html +310 -228
- data/doc/TaskJuggler/NikuResource.html +22 -2
- data/doc/TaskJuggler/NodeListAttribute.html +615 -0
- data/doc/TaskJuggler/OnShiftCache.html +32 -12
- data/doc/TaskJuggler/ProcessIntercom.html +205 -78
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
- data/doc/TaskJuggler/Project.html +708 -660
- data/doc/TaskJuggler/ProjectBroker.html +506 -304
- data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
- data/doc/TaskJuggler/ProjectFileParser.html +429 -373
- data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
- data/doc/TaskJuggler/ProjectRecord.html +80 -60
- data/doc/TaskJuggler/ProjectServer.html +312 -237
- data/doc/TaskJuggler/ProjectServerIface.html +101 -43
- data/doc/TaskJuggler/PropertyAttribute.html +32 -12
- data/doc/TaskJuggler/PropertyList.html +166 -145
- data/doc/TaskJuggler/PropertySet.html +254 -224
- data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
- data/doc/TaskJuggler/Query.html +169 -148
- data/doc/TaskJuggler/RTFHandlers.html +622 -0
- data/doc/TaskJuggler/RTFNavigator.html +28 -8
- data/doc/TaskJuggler/RTFQuery.html +40 -20
- data/doc/TaskJuggler/RTFReport.html +62 -25
- data/doc/TaskJuggler/RTFReportLink.html +765 -0
- data/doc/TaskJuggler/RealFormat.html +26 -6
- data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
- data/doc/TaskJuggler/Report.html +402 -251
- data/doc/TaskJuggler/ReportBase.html +162 -137
- data/doc/TaskJuggler/ReportContext.html +112 -29
- data/doc/TaskJuggler/ReportServer.html +89 -64
- data/doc/TaskJuggler/ReportServerIface.html +75 -55
- data/doc/TaskJuggler/ReportServerRecord.html +54 -31
- data/doc/TaskJuggler/ReportServlet.html +980 -0
- data/doc/TaskJuggler/ReportTable.html +41 -21
- data/doc/TaskJuggler/ReportTableCell.html +214 -170
- data/doc/TaskJuggler/ReportTableColumn.html +30 -10
- data/doc/TaskJuggler/ReportTableLegend.html +36 -16
- data/doc/TaskJuggler/ReportTableLine.html +32 -12
- data/doc/TaskJuggler/Resource.html +99 -87
- data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
- data/doc/TaskJuggler/ResourceListRE.html +47 -26
- data/doc/TaskJuggler/ResourceScenario.html +403 -437
- data/doc/TaskJuggler/RichText.html +26 -6
- data/doc/TaskJuggler/RichTextAttribute.html +50 -30
- data/doc/TaskJuggler/RichTextDocument.html +37 -17
- data/doc/TaskJuggler/RichTextElement.html +475 -413
- data/doc/TaskJuggler/RichTextException.html +22 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
- data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
- data/doc/TaskJuggler/RichTextImage.html +22 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
- data/doc/TaskJuggler/RichTextParser.html +56 -34
- data/doc/TaskJuggler/RichTextScanner.html +82 -61
- data/doc/TaskJuggler/RichTextSnip.html +34 -14
- data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
- data/doc/TaskJuggler/Scenario.html +22 -2
- data/doc/TaskJuggler/ScenarioData.html +30 -46
- data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
- data/doc/TaskJuggler/Scoreboard.html +42 -22
- data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
- data/doc/TaskJuggler/SheetReceiver.html +333 -295
- data/doc/TaskJuggler/SheetSender.html +253 -230
- data/doc/TaskJuggler/Shift.html +26 -6
- data/doc/TaskJuggler/ShiftAssignment.html +89 -73
- data/doc/TaskJuggler/ShiftAssignments.html +226 -234
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
- data/doc/TaskJuggler/ShiftScenario.html +28 -8
- data/doc/TaskJuggler/SortListAttribute.html +34 -14
- data/doc/TaskJuggler/SourceFileInfo.html +24 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
- data/doc/TaskJuggler/StatusSheetReport.html +168 -153
- data/doc/TaskJuggler/StatusSheetSender.html +24 -3
- data/doc/TaskJuggler/StringAttribute.html +38 -18
- data/doc/TaskJuggler/SymbolAttribute.html +32 -12
- data/doc/TaskJuggler/SyntaxReference.html +40 -20
- data/doc/TaskJuggler/TOCEntry.html +26 -6
- data/doc/TaskJuggler/TSResourceRecord.html +22 -2
- data/doc/TaskJuggler/TSTaskRecord.html +22 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
- data/doc/TaskJuggler/TableOfContents.html +26 -6
- data/doc/TaskJuggler/TableReport.html +937 -904
- data/doc/TaskJuggler/Task.html +55 -36
- data/doc/TaskJuggler/TaskDependency.html +24 -4
- data/doc/TaskJuggler/TaskListAttribute.html +50 -30
- data/doc/TaskJuggler/TaskListRE.html +27 -7
- data/doc/TaskJuggler/TaskScenario.html +1273 -1153
- data/doc/TaskJuggler/TextFormatter.html +28 -8
- data/doc/TaskJuggler/TextParser.html +585 -338
- data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
- data/doc/TaskJuggler/TextParser/Rule.html +95 -73
- data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
- data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
- data/doc/TaskJuggler/TextReport.html +28 -8
- data/doc/TaskJuggler/TextScanner.html +400 -1404
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
- data/doc/TaskJuggler/TimeSheet.html +48 -28
- data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
- data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
- data/doc/TaskJuggler/TimeSheetReport.html +154 -133
- data/doc/TaskJuggler/TimeSheetSender.html +24 -3
- data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
- data/doc/TaskJuggler/TimeSheets.html +26 -6
- data/doc/TaskJuggler/Tj3AppBase.html +85 -58
- data/doc/TaskJuggler/Tj3Client.html +292 -238
- data/doc/TaskJuggler/Tj3Daemon.html +159 -74
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
- data/doc/TaskJuggler/Tj3SsSender.html +53 -26
- data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
- data/doc/TaskJuggler/Tj3TsSender.html +26 -6
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
- data/doc/TaskJuggler/TjException.html +22 -2
- data/doc/TaskJuggler/TjTime.html +216 -160
- data/doc/TaskJuggler/TjpExample.html +34 -14
- data/doc/TaskJuggler/TjpExportRE.html +403 -407
- data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
- data/doc/TaskJuggler/URLParameter.html +649 -0
- data/doc/TaskJuggler/UserManual.html +42 -22
- data/doc/TaskJuggler/WebServer.html +702 -0
- data/doc/TaskJuggler/WorkingHours.html +38 -18
- data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
- data/doc/TaskJuggler/XMLBlob.html +24 -4
- data/doc/TaskJuggler/XMLComment.html +24 -4
- data/doc/TaskJuggler/XMLDocument.html +30 -10
- data/doc/TaskJuggler/XMLElement.html +34 -14
- data/doc/TaskJuggler/XMLNamedText.html +22 -2
- data/doc/TaskJuggler/XMLText.html +24 -4
- data/doc/index.html +1841 -1666
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +2 -2
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +2 -2
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +2 -2
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +2 -2
- data/doc/lib/LogFile_rb.html +2 -2
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +2 -2
- data/doc/lib/LogicalOperation_rb.html +2 -2
- data/doc/lib/MacroParser_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -1
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/Message_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +4 -8
- data/doc/lib/ProjectFileScanner_rb.html +67 -0
- data/doc/lib/Project_rb.html +2 -2
- data/doc/lib/PropertyList_rb.html +2 -2
- data/doc/lib/PropertySet_rb.html +2 -2
- data/doc/lib/PropertyTreeNode_rb.html +2 -2
- data/doc/lib/Query_rb.html +2 -2
- data/doc/lib/RTFHandlers_rb.html +73 -0
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +1 -1
- data/doc/lib/RTFReportLink_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +2 -2
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +2 -2
- data/doc/lib/Resource_rb.html +2 -2
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +2 -2
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +2 -2
- data/doc/lib/RichTextScanner_rb.html +2 -2
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +1 -1
- data/doc/lib/SheetReceiver_rb.html +2 -2
- data/doc/lib/SheetSender_rb.html +4 -2
- data/doc/lib/ShiftAssignments_rb.html +4 -2
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +2 -2
- data/doc/lib/StatusSheetSender_rb.html +2 -2
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +2 -2
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +2 -2
- data/doc/lib/TaskScenario_rb.html +2 -2
- data/doc/lib/Task_rb.html +2 -2
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +2 -2
- data/doc/lib/TextParser/StackElement_rb.html +2 -2
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +2 -2
- data/doc/lib/TextScanner_rb.html +6 -2
- data/doc/lib/TimeSheetReceiver_rb.html +2 -2
- data/doc/lib/TimeSheetSender_rb.html +2 -2
- data/doc/lib/TimeSheetSummary_rb.html +2 -2
- data/doc/lib/TimeSheets_rb.html +2 -2
- data/doc/lib/Tj3AppBase_rb.html +2 -2
- data/doc/lib/Tj3Config_rb.html +2 -2
- data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +2 -2
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +2 -2
- data/doc/lib/URLParameter_rb.html +67 -0
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +2 -2
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
- data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
- data/doc/lib/daemon/ProjectServer_rb.html +2 -2
- data/doc/lib/daemon/ReportServer_rb.html +2 -2
- data/doc/lib/daemon/WebServer_rb.html +75 -0
- data/doc/lib/deep_copy_rb.html +2 -2
- data/doc/lib/reports/CSVFile_rb.html +2 -2
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +2 -2
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +2 -2
- data/doc/lib/reports/NikuReport_rb.html +2 -2
- data/doc/lib/reports/ReportBase_rb.html +2 -2
- data/doc/lib/reports/ReportContext_rb.html +2 -2
- data/doc/lib/reports/ReportTableCell_rb.html +2 -2
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +2 -2
- data/doc/lib/reports/Report_rb.html +2 -2
- data/doc/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
- data/doc/lib/reports/TableReport_rb.html +2 -2
- data/doc/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
- data/doc/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/lib/ruby-signal-bug_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +2 -2
- data/doc/lib/tj3client_rb.html +2 -2
- data/doc/lib/tj3d_rb.html +2 -2
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +2 -2
- data/doc/lib/tj3ts_receiver_rb.html +2 -2
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/doc/rdoc.css +9 -4
- data/examples/tutorial.tjp +17 -15
- data/gem_spec.rb +3 -0
- data/lib/AppConfig.rb +3 -1
- data/lib/Attributes.rb +10 -8
- data/lib/Journal.rb +55 -20
- data/lib/Limits.rb +72 -46
- data/lib/LogFile.rb +3 -3
- data/lib/LogicalFunction.rb +19 -6
- data/lib/LogicalOperation.rb +5 -1
- data/lib/Project.rb +37 -9
- data/lib/ProjectFileParser.rb +25 -22
- data/lib/ProjectFileScanner.rb +365 -0
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +14 -4
- data/lib/PropertyTreeNode.rb +42 -29
- data/lib/Query.rb +3 -1
- data/lib/RTFHandlers.rb +35 -0
- data/lib/RTFReport.rb +23 -6
- data/lib/RTFReportLink.rb +72 -0
- data/lib/Resource.rb +8 -16
- data/lib/ResourceScenario.rb +1 -22
- data/lib/RichTextElement.rb +42 -0
- data/lib/RichTextParser.rb +6 -4
- data/lib/RichTextScanner.rb +5 -5
- data/lib/RichTextSyntaxRules.rb +48 -10
- data/lib/ScenarioData.rb +5 -3
- data/lib/SheetReceiver.rb +24 -6
- data/lib/SheetSender.rb +17 -13
- data/lib/ShiftAssignments.rb +56 -52
- data/lib/StatusSheetReceiver.rb +1 -0
- data/lib/StatusSheetSender.rb +1 -0
- data/lib/TableColumnDefinition.rb +4 -2
- data/lib/Task.rb +8 -9
- data/lib/TaskJuggler.rb +21 -11
- data/lib/TaskScenario.rb +61 -26
- data/lib/TextParser.rb +268 -106
- data/lib/TextParser/Rule.rb +4 -2
- data/lib/TextParser/StackElement.rb +6 -4
- data/lib/TextScanner.rb +283 -700
- data/lib/TimeSheetReceiver.rb +1 -0
- data/lib/TimeSheetSender.rb +1 -0
- data/lib/TimeSheetSummary.rb +51 -26
- data/lib/TimeSheets.rb +1 -1
- data/lib/Tj3AppBase.rb +8 -1
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +5 -0
- data/lib/TjpSyntaxRules.rb +360 -144
- data/lib/URLParameter.rb +30 -0
- data/lib/XMLDocument.rb +2 -2
- data/lib/daemon/ProcessIntercom.rb +50 -9
- data/lib/daemon/ProjectBroker.rb +63 -10
- data/lib/daemon/ProjectServer.rb +47 -16
- data/lib/daemon/ReportServer.rb +9 -4
- data/lib/daemon/WebServer.rb +204 -0
- data/lib/deep_copy.rb +4 -1
- data/lib/reports/CSVFile.rb +150 -66
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/Navigator.rb +18 -5
- data/lib/reports/NikuReport.rb +32 -2
- data/lib/reports/Report.rb +65 -37
- data/lib/reports/ReportBase.rb +14 -9
- data/lib/reports/ReportContext.rb +19 -4
- data/lib/reports/ReportTable.rb +2 -2
- data/lib/reports/ReportTableCell.rb +54 -30
- data/lib/reports/ResourceListRE.rb +4 -3
- data/lib/reports/StatusSheetReport.rb +8 -13
- data/lib/reports/TableReport.rb +47 -32
- data/lib/reports/TaskListRE.rb +3 -3
- data/lib/reports/TimeSheetReport.rb +14 -5
- data/lib/reports/TjpExportRE.rb +14 -19
- data/lib/taskjuggler3.rb +15 -0
- data/lib/tj3client.rb +9 -7
- data/lib/tj3d.rb +38 -10
- data/lib/tj3ss_sender.rb +7 -0
- data/lib/tj3ts_receiver.rb +1 -0
- data/manual/Day_To_Day_Juggling +1 -1
- data/manual/Rich_Text_Attributes +8 -0
- data/manual/TaskJuggler_2x_Migration +7 -0
- data/manual/The_TaskJuggler_Syntax +20 -6
- data/prj_cfg.rb +3 -2
- data/tasks/changelog.rake +36 -0
- data/tasks/csts.rake +2 -3
- data/tasks/gem.rake +10 -0
- data/tasks/missing.rake +0 -17
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
- data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
- data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
- data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
- data/test/TestSuite/StatusSheets/run +3 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +5 -5
- data/test/test_CSVFile.rb +75 -0
- data/test/test_Limits.rb +63 -5
- data/test/test_ProjectFileScanner.rb +163 -0
- data/test/test_ReportGenerator.rb +81 -0
- data/test/test_RichText.rb +21 -3
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +4 -4
- data/test/test_Syntax.rb +1 -1
- data/test/test_URLParameter.rb +30 -0
- metadata +126 -32
- data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
- data/test/TestSuite/TimeSheets/receiver.log +0 -102
- data/test/TestSuite/TimeSheets/sender.log +0 -794
- data/test/TestSuite/TimeSheets/summary.log +0 -884
- data/test/TestSuite/TimeSheets/timesheets.log +0 -45
- data/test/TestSuite/TimeSheets/tj3d.log +0 -292
- data/test/test_TextScanner.rb +0 -95
|
@@ -70,6 +70,8 @@
|
|
|
70
70
|
|
|
71
71
|
<li><span class="type">CLASS</span> <a href="TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
|
72
72
|
|
|
73
|
+
<li><span class="type">CLASS</span> <a href="TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
|
74
|
+
|
|
73
75
|
<li><span class="type">CLASS</span> <a href="TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
|
74
76
|
|
|
75
77
|
</ul>
|
|
@@ -82,67 +84,37 @@
|
|
|
82
84
|
<h3 class="section-header">Methods</h3>
|
|
83
85
|
<ul class="link-list">
|
|
84
86
|
|
|
85
|
-
<li><a href="#
|
|
86
|
-
|
|
87
|
-
<li><a href="#M001139">#addMacro</a></li>
|
|
88
|
-
|
|
89
|
-
<li><a href="#M001130">#close</a></li>
|
|
90
|
-
|
|
91
|
-
<li><a href="#M001142">#error</a></li>
|
|
92
|
-
|
|
93
|
-
<li><a href="#M001161">#errorEOF</a></li>
|
|
94
|
-
|
|
95
|
-
<li><a href="#M001141">#expandMacro</a></li>
|
|
96
|
-
|
|
97
|
-
<li><a href="#M001133">#fileName</a></li>
|
|
98
|
-
|
|
99
|
-
<li><a href="#M001150">#handleDash</a></li>
|
|
100
|
-
|
|
101
|
-
<li><a href="#M001131">#include</a></li>
|
|
102
|
-
|
|
103
|
-
<li><a href="#M001140">#macroDefined?</a></li>
|
|
104
|
-
|
|
105
|
-
<li><a href="#M001144">#message</a></li>
|
|
106
|
-
|
|
107
|
-
<li><a href="#M001145">#nextChar</a></li>
|
|
108
|
-
|
|
109
|
-
<li><a href="#M001146">#nextCharI</a></li>
|
|
110
|
-
|
|
111
|
-
<li><a href="#M001137">#nextToken</a></li>
|
|
112
|
-
|
|
113
|
-
<li><a href="#M001129">#open</a></li>
|
|
114
|
-
|
|
115
|
-
<li><a href="#M001151">#readBlanks</a></li>
|
|
87
|
+
<li><a href="#method-c-new">::new</a></li>
|
|
116
88
|
|
|
117
|
-
<li><a href="#
|
|
89
|
+
<li><a href="#method-i-addMacro">#addMacro</a></li>
|
|
118
90
|
|
|
119
|
-
<li><a href="#
|
|
91
|
+
<li><a href="#method-i-addPattern">#addPattern</a></li>
|
|
120
92
|
|
|
121
|
-
<li><a href="#
|
|
93
|
+
<li><a href="#method-i-close">#close</a></li>
|
|
122
94
|
|
|
123
|
-
<li><a href="#
|
|
95
|
+
<li><a href="#method-i-error">#error</a></li>
|
|
124
96
|
|
|
125
|
-
<li><a href="#
|
|
97
|
+
<li><a href="#method-i-expandMacro">#expandMacro</a></li>
|
|
126
98
|
|
|
127
|
-
<li><a href="#
|
|
99
|
+
<li><a href="#method-i-fileName">#fileName</a></li>
|
|
128
100
|
|
|
129
|
-
<li><a href="#
|
|
101
|
+
<li><a href="#method-i-include">#include</a></li>
|
|
130
102
|
|
|
131
|
-
<li><a href="#
|
|
103
|
+
<li><a href="#method-i-macroDefined%3F">#macroDefined?</a></li>
|
|
132
104
|
|
|
133
|
-
<li><a href="#
|
|
105
|
+
<li><a href="#method-i-message">#message</a></li>
|
|
134
106
|
|
|
135
|
-
<li><a href="#
|
|
107
|
+
<li><a href="#method-i-mode%3D">#mode=</a></li>
|
|
136
108
|
|
|
137
|
-
<li><a href="#
|
|
109
|
+
<li><a href="#method-i-nextToken">#nextToken</a></li>
|
|
138
110
|
|
|
139
|
-
<li><a href="#
|
|
111
|
+
<li><a href="#method-i-open">#open</a></li>
|
|
140
112
|
|
|
141
|
-
<li><a href="#
|
|
113
|
+
<li><a href="#method-i-returnToken">#returnToken</a></li>
|
|
142
114
|
|
|
143
|
-
<li><a href="#
|
|
115
|
+
<li><a href="#method-i-sourceFileInfo">#sourceFileInfo</a></li>
|
|
144
116
|
|
|
145
|
-
<li><a href="#
|
|
117
|
+
<li><a href="#method-i-warning">#warning</a></li>
|
|
146
118
|
|
|
147
119
|
</ul>
|
|
148
120
|
</div>
|
|
@@ -159,6 +131,8 @@
|
|
|
159
131
|
<h3 class="section-header">Files</h3>
|
|
160
132
|
<ul>
|
|
161
133
|
|
|
134
|
+
<li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
|
|
135
|
+
|
|
162
136
|
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
|
163
137
|
|
|
164
138
|
<li class="file"><a href="../README.html">README</a></li>
|
|
@@ -328,6 +302,8 @@
|
|
|
328
302
|
|
|
329
303
|
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
|
330
304
|
|
|
305
|
+
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
306
|
+
|
|
331
307
|
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
|
332
308
|
|
|
333
309
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
@@ -342,6 +318,8 @@
|
|
|
342
318
|
|
|
343
319
|
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
|
344
320
|
|
|
321
|
+
<li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
|
|
322
|
+
|
|
345
323
|
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
|
346
324
|
|
|
347
325
|
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
|
@@ -358,12 +336,16 @@
|
|
|
358
336
|
|
|
359
337
|
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
|
360
338
|
|
|
339
|
+
<li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
|
|
340
|
+
|
|
361
341
|
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
|
362
342
|
|
|
363
343
|
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
|
364
344
|
|
|
365
345
|
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
|
366
346
|
|
|
347
|
+
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
|
348
|
+
|
|
367
349
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
|
368
350
|
|
|
369
351
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
|
@@ -382,6 +364,8 @@
|
|
|
382
364
|
|
|
383
365
|
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
|
384
366
|
|
|
367
|
+
<li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
|
|
368
|
+
|
|
385
369
|
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
|
386
370
|
|
|
387
371
|
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
|
@@ -510,6 +494,8 @@
|
|
|
510
494
|
|
|
511
495
|
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
|
512
496
|
|
|
497
|
+
<li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
|
498
|
+
|
|
513
499
|
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
|
514
500
|
|
|
515
501
|
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
|
@@ -554,8 +540,12 @@
|
|
|
554
540
|
|
|
555
541
|
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
|
556
542
|
|
|
543
|
+
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
|
|
544
|
+
|
|
557
545
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
|
558
546
|
|
|
547
|
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
548
|
+
|
|
559
549
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
560
550
|
|
|
561
551
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -582,6 +572,8 @@
|
|
|
582
572
|
|
|
583
573
|
<li><a href="../String.html">String</a></li>
|
|
584
574
|
|
|
575
|
+
<li><a href="../StringIO.html">StringIO</a></li>
|
|
576
|
+
|
|
585
577
|
</ul>
|
|
586
578
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
587
579
|
</div>
|
|
@@ -595,9 +587,13 @@
|
|
|
595
587
|
|
|
596
588
|
<div id="description">
|
|
597
589
|
<p>
|
|
598
|
-
The <a href="TextScanner.html">TextScanner</a> class
|
|
599
|
-
|
|
600
|
-
|
|
590
|
+
The <a href="TextScanner.html">TextScanner</a> class is an abstract text
|
|
591
|
+
scanner with support for nested include files and text macros. The
|
|
592
|
+
tokenizer will operate on rules that must be provided by a derived class.
|
|
593
|
+
The scanner is modal. Each mode operates only with the subset of token
|
|
594
|
+
patterns that are assigned to the current mode. The current line is tracked
|
|
595
|
+
accurately and can be used for error reporting. The scanner can operate on
|
|
596
|
+
Strings or Files.
|
|
601
597
|
</p>
|
|
602
598
|
|
|
603
599
|
</div>
|
|
@@ -615,7 +611,7 @@ file can include an other file.
|
|
|
615
611
|
|
|
616
612
|
|
|
617
613
|
<div id="new-method" class="method-detail ">
|
|
618
|
-
<a name="
|
|
614
|
+
<a name="method-c-new"></a>
|
|
619
615
|
|
|
620
616
|
<div class="method-heading">
|
|
621
617
|
|
|
@@ -641,24 +637,37 @@ messages.
|
|
|
641
637
|
<div class="method-source-code"
|
|
642
638
|
id="new-source">
|
|
643
639
|
<pre>
|
|
644
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
640
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 187</span>
|
|
641
|
+
187: <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>)
|
|
642
|
+
188: <span class="ruby-ivar">@masterFile</span> = <span class="ruby-identifier">masterFile</span>
|
|
643
|
+
189: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
|
|
644
|
+
190: <span class="ruby-comment cmt"># This table contains all macros that may be expanded when found in the</span>
|
|
645
|
+
191: <span class="ruby-comment cmt"># text.</span>
|
|
646
|
+
192: <span class="ruby-ivar">@macroTable</span> = <span class="ruby-constant">MacroTable</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">messageHandler</span>)
|
|
647
|
+
193: <span class="ruby-comment cmt"># The currently processed IO object.</span>
|
|
648
|
+
194: <span class="ruby-ivar">@cf</span> = <span class="ruby-keyword kw">nil</span>
|
|
649
|
+
195: <span class="ruby-comment cmt"># This Array stores the currently processed nested files. It's an Array</span>
|
|
650
|
+
196: <span class="ruby-comment cmt"># of Arrays. The nested Array consists of 2 elements, the IO object and</span>
|
|
651
|
+
197: <span class="ruby-comment cmt"># the @tokenBuffer.</span>
|
|
652
|
+
198: <span class="ruby-ivar">@fileStack</span> = []
|
|
653
|
+
199: <span class="ruby-comment cmt"># This flag is set if we have reached the end of a file. Since we will</span>
|
|
654
|
+
200: <span class="ruby-comment cmt"># only know when the next new token is requested that the file is really</span>
|
|
655
|
+
201: <span class="ruby-comment cmt"># done now, we have to use this flag.</span>
|
|
656
|
+
202: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
|
|
657
|
+
203: <span class="ruby-comment cmt"># True if the scanner operates on a buffer.</span>
|
|
658
|
+
204: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>
|
|
659
|
+
205: <span class="ruby-comment cmt"># A SourceFileInfo of the start of the currently processed token.</span>
|
|
660
|
+
206: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-keyword kw">nil</span>
|
|
661
|
+
207: <span class="ruby-comment cmt"># Line number correction for error messages.</span>
|
|
662
|
+
208: <span class="ruby-ivar">@lineDelta</span> = <span class="ruby-value">0</span>
|
|
663
|
+
209: <span class="ruby-comment cmt"># Lists of regexps that describe the detectable tokens. The Arrays are</span>
|
|
664
|
+
210: <span class="ruby-comment cmt"># grouped by mode.</span>
|
|
665
|
+
211: <span class="ruby-ivar">@patternsByMode</span> = { }
|
|
666
|
+
212: <span class="ruby-comment cmt"># The currently active scanner mode.</span>
|
|
667
|
+
213: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-keyword kw">nil</span>
|
|
668
|
+
214: <span class="ruby-comment cmt"># Points to the currently active pattern set as defined by the mode.</span>
|
|
669
|
+
215: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-keyword kw">nil</span>
|
|
670
|
+
216: <span class="ruby-keyword kw">end</span></pre>
|
|
662
671
|
</div>
|
|
663
672
|
|
|
664
673
|
</div>
|
|
@@ -676,7 +685,7 @@ messages.
|
|
|
676
685
|
|
|
677
686
|
|
|
678
687
|
<div id="add-acro-method" class="method-detail ">
|
|
679
|
-
<a name="
|
|
688
|
+
<a name="method-i-addMacro"></a>
|
|
680
689
|
|
|
681
690
|
<div class="method-heading">
|
|
682
691
|
|
|
@@ -697,10 +706,64 @@ Add a <a href="Macro.html">Macro</a> to the macro translation table.
|
|
|
697
706
|
<div class="method-source-code"
|
|
698
707
|
id="add-acro-source">
|
|
699
708
|
<pre>
|
|
700
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
709
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 424</span>
|
|
710
|
+
424: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addMacro</span>(<span class="ruby-identifier">macro</span>)
|
|
711
|
+
425: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">macro</span>)
|
|
712
|
+
426: <span class="ruby-keyword kw">end</span></pre>
|
|
713
|
+
</div>
|
|
714
|
+
|
|
715
|
+
</div>
|
|
716
|
+
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
</div>
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
<div id="add-attern-method" class="method-detail ">
|
|
724
|
+
<a name="method-i-addPattern"></a>
|
|
725
|
+
|
|
726
|
+
<div class="method-heading">
|
|
727
|
+
|
|
728
|
+
<span class="method-name">addPattern</span><span
|
|
729
|
+
class="method-args">(type, regExp, mode, postProc = nil)</span>
|
|
730
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
731
|
+
|
|
732
|
+
</div>
|
|
733
|
+
|
|
734
|
+
<div class="method-description">
|
|
735
|
+
|
|
736
|
+
<p>
|
|
737
|
+
Add a new pattern to the scanner. <em>type</em> is either nil for tokens
|
|
738
|
+
that will be ignored, or some identifier that will be returned with each
|
|
739
|
+
token of this type. <em>regExp</em> is the RegExp that describes the token.
|
|
740
|
+
<em>mode</em> identifies the scanner mode where the pattern is active. If
|
|
741
|
+
it’s only a single mode, <em>mode</em> specifies the mode directly.
|
|
742
|
+
For multiple modes, it’s an Array of modes. <em>postProc</em> is a
|
|
743
|
+
method reference. This method is called after the token has been detected.
|
|
744
|
+
The method gets the type and the matching <a
|
|
745
|
+
href="../String.html">String</a> and returns them again in an Array.
|
|
746
|
+
</p>
|
|
747
|
+
|
|
748
|
+
|
|
749
|
+
|
|
750
|
+
<div class="method-source-code"
|
|
751
|
+
id="add-attern-source">
|
|
752
|
+
<pre>
|
|
753
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 226</span>
|
|
754
|
+
226: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addPattern</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">mode</span>, <span class="ruby-identifier">postProc</span> = <span class="ruby-keyword kw">nil</span>)
|
|
755
|
+
227: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
|
|
756
|
+
228: <span class="ruby-identifier">mode</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span>
|
|
757
|
+
229: <span class="ruby-comment cmt"># The pattern is active in multiple modes</span>
|
|
758
|
+
230: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">m</span>] = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@patternsByMode</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">m</span>)
|
|
759
|
+
231: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">m</span>] <span class="ruby-operator"><<</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">postProc</span> ]
|
|
760
|
+
232: <span class="ruby-keyword kw">end</span>
|
|
761
|
+
233: <span class="ruby-keyword kw">else</span>
|
|
762
|
+
234: <span class="ruby-comment cmt"># The pattern is only active in one specific mode.</span>
|
|
763
|
+
235: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">mode</span>] = [] <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@patternsByMode</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">mode</span>)
|
|
764
|
+
236: <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">mode</span>] <span class="ruby-operator"><<</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">regExp</span>, <span class="ruby-identifier">postProc</span> ]
|
|
765
|
+
237: <span class="ruby-keyword kw">end</span>
|
|
766
|
+
238: <span class="ruby-keyword kw">end</span></pre>
|
|
704
767
|
</div>
|
|
705
768
|
|
|
706
769
|
</div>
|
|
@@ -712,7 +775,7 @@ Add a <a href="Macro.html">Macro</a> to the macro translation table.
|
|
|
712
775
|
|
|
713
776
|
|
|
714
777
|
<div id="close-method" class="method-detail ">
|
|
715
|
-
<a name="
|
|
778
|
+
<a name="method-i-close"></a>
|
|
716
779
|
|
|
717
780
|
<div class="method-heading">
|
|
718
781
|
|
|
@@ -733,15 +796,15 @@ Finish processing and reset all data structures.
|
|
|
733
796
|
<div class="method-source-code"
|
|
734
797
|
id="close-source">
|
|
735
798
|
<pre>
|
|
736
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
799
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 268</span>
|
|
800
|
+
268: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
|
|
801
|
+
269: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileNameIsBuffer</span>
|
|
802
|
+
270: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">"Reading file #{@masterFile}"</span>)
|
|
803
|
+
271: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
|
|
804
|
+
272: <span class="ruby-keyword kw">end</span>
|
|
805
|
+
273: <span class="ruby-ivar">@fileStack</span> = []
|
|
806
|
+
274: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
807
|
+
275: <span class="ruby-keyword kw">end</span></pre>
|
|
745
808
|
</div>
|
|
746
809
|
|
|
747
810
|
</div>
|
|
@@ -753,12 +816,12 @@ Finish processing and reset all data structures.
|
|
|
753
816
|
|
|
754
817
|
|
|
755
818
|
<div id="error-method" class="method-detail ">
|
|
756
|
-
<a name="
|
|
819
|
+
<a name="method-i-error"></a>
|
|
757
820
|
|
|
758
821
|
<div class="method-heading">
|
|
759
822
|
|
|
760
823
|
<span class="method-name">error</span><span
|
|
761
|
-
class="method-args">(id, text, property = nil)</span>
|
|
824
|
+
class="method-args">(id, text, property = nil, sfi = nil)</span>
|
|
762
825
|
<span class="method-click-advice">click to toggle source</span>
|
|
763
826
|
|
|
764
827
|
</div>
|
|
@@ -774,10 +837,10 @@ Call this function to report any errors related to the parsed input.
|
|
|
774
837
|
<div class="method-source-code"
|
|
775
838
|
id="error-source">
|
|
776
839
|
<pre>
|
|
777
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
840
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 449</span>
|
|
841
|
+
449: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">property</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">sfi</span> = <span class="ruby-keyword kw">nil</span>)
|
|
842
|
+
450: <span class="ruby-identifier">message</span>(<span class="ruby-value str">'error'</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">property</span>, <span class="ruby-identifier">sfi</span>)
|
|
843
|
+
451: <span class="ruby-keyword kw">end</span></pre>
|
|
781
844
|
</div>
|
|
782
845
|
|
|
783
846
|
</div>
|
|
@@ -789,41 +852,41 @@ Call this function to report any errors related to the parsed input.
|
|
|
789
852
|
|
|
790
853
|
|
|
791
854
|
<div id="expand-acro-method" class="method-detail ">
|
|
792
|
-
<a name="
|
|
855
|
+
<a name="method-i-expandMacro"></a>
|
|
793
856
|
|
|
794
857
|
<div class="method-heading">
|
|
795
858
|
|
|
796
859
|
<span class="method-name">expandMacro</span><span
|
|
797
|
-
class="method-args">(args)</span>
|
|
860
|
+
class="method-args">(prefix, args)</span>
|
|
798
861
|
<span class="method-click-advice">click to toggle source</span>
|
|
799
862
|
|
|
800
863
|
</div>
|
|
801
864
|
|
|
802
865
|
<div class="method-description">
|
|
803
866
|
|
|
804
|
-
|
|
867
|
+
<p>
|
|
868
|
+
Expand a macro and inject it into the input stream. <em>prefix</em> is any
|
|
869
|
+
string that was found right before the macro call. We have to inject it
|
|
870
|
+
before the expanded macro. <em>args</em> is an Array of Strings. The first
|
|
871
|
+
is the macro name, the rest are the parameters.
|
|
872
|
+
</p>
|
|
805
873
|
|
|
806
874
|
|
|
807
875
|
|
|
808
876
|
<div class="method-source-code"
|
|
809
877
|
id="expand-acro-source">
|
|
810
878
|
<pre>
|
|
811
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
366: <span class="ruby-identifier">text</span>.<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">each_utf8_char</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
|
|
823
|
-
367: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
824
|
-
368: <span class="ruby-keyword kw">end</span>
|
|
825
|
-
369: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span> = <span class="ruby-value str">''</span>
|
|
826
|
-
370: <span class="ruby-keyword kw">end</span></pre>
|
|
879
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 437</span>
|
|
880
|
+
437: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">prefix</span>, <span class="ruby-identifier">args</span>)
|
|
881
|
+
438: <span class="ruby-comment cmt"># Get the expanded macro from the @macroTable.</span>
|
|
882
|
+
439: <span class="ruby-identifier">macro</span>, <span class="ruby-identifier">text</span> = <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">resolve</span>(<span class="ruby-identifier">args</span>, <span class="ruby-identifier">sourceFileInfo</span>)
|
|
883
|
+
440: <span class="ruby-comment cmt"># If the expanded macro is empty, we can ignore it.</span>
|
|
884
|
+
441: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">text</span> <span class="ruby-operator">==</span> <span class="ruby-value str">''</span>
|
|
885
|
+
442:
|
|
886
|
+
443: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">injectMacro</span>(<span class="ruby-identifier">macro</span>, <span class="ruby-identifier">args</span>, <span class="ruby-identifier">prefix</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">text</span>)
|
|
887
|
+
444: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'macro_stack_overflow'</span>, <span class="ruby-value str">"Too many nested macro calls."</span>)
|
|
888
|
+
445: <span class="ruby-keyword kw">end</span>
|
|
889
|
+
446: <span class="ruby-keyword kw">end</span></pre>
|
|
827
890
|
</div>
|
|
828
891
|
|
|
829
892
|
</div>
|
|
@@ -835,7 +898,7 @@ Call this function to report any errors related to the parsed input.
|
|
|
835
898
|
|
|
836
899
|
|
|
837
900
|
<div id="file-ame-method" class="method-detail ">
|
|
838
|
-
<a name="
|
|
901
|
+
<a name="method-i-fileName"></a>
|
|
839
902
|
|
|
840
903
|
<div class="method-heading">
|
|
841
904
|
|
|
@@ -857,10 +920,10 @@ text buffer, the text will be returned.
|
|
|
857
920
|
<div class="method-source-code"
|
|
858
921
|
id="file-ame-source">
|
|
859
922
|
<pre>
|
|
860
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
923
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 321</span>
|
|
924
|
+
321: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fileName</span>
|
|
925
|
+
322: <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">fileName</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@masterFile</span>
|
|
926
|
+
323: <span class="ruby-keyword kw">end</span></pre>
|
|
864
927
|
</div>
|
|
865
928
|
|
|
866
929
|
</div>
|
|
@@ -872,12 +935,12 @@ text buffer, the text will be returned.
|
|
|
872
935
|
|
|
873
936
|
|
|
874
937
|
<div id="include-method" class="method-detail ">
|
|
875
|
-
<a name="
|
|
938
|
+
<a name="method-i-include"></a>
|
|
876
939
|
|
|
877
940
|
<div class="method-heading">
|
|
878
941
|
|
|
879
942
|
<span class="method-name">include</span><span
|
|
880
|
-
class="method-args">(
|
|
943
|
+
class="method-args">(includeFileName, sfi)</span>
|
|
881
944
|
<span class="method-click-advice">click to toggle source</span>
|
|
882
945
|
|
|
883
946
|
</div>
|
|
@@ -885,9 +948,9 @@ text buffer, the text will be returned.
|
|
|
885
948
|
<div class="method-description">
|
|
886
949
|
|
|
887
950
|
<p>
|
|
888
|
-
Continue processing with a new file specified by <em>
|
|
889
|
-
this file is finished, we will continue in the old file after the
|
|
890
|
-
where we started with the new file.
|
|
951
|
+
Continue processing with a new file specified by <em>includeFileName</em>.
|
|
952
|
+
When this file is finished, we will continue in the old file after the
|
|
953
|
+
location where we started with the new file.
|
|
891
954
|
</p>
|
|
892
955
|
|
|
893
956
|
|
|
@@ -895,40 +958,39 @@ where we started with the new file.
|
|
|
895
958
|
<div class="method-source-code"
|
|
896
959
|
id="include-source">
|
|
897
960
|
<pre>
|
|
898
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
238: <span class="ruby-keyword kw">end</span></pre>
|
|
961
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 280</span>
|
|
962
|
+
280: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include</span>(<span class="ruby-identifier">includeFileName</span>, <span class="ruby-identifier">sfi</span>)
|
|
963
|
+
281: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">includeFileName</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'/'</span>
|
|
964
|
+
282: <span class="ruby-identifier">pathOfCallingFile</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">dirname</span>
|
|
965
|
+
283: <span class="ruby-identifier">path</span> = <span class="ruby-identifier">pathOfCallingFile</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">?</span> <span class="ruby-value str">''</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">pathOfCallingFile</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
|
|
966
|
+
284: <span class="ruby-comment cmt"># If the included file is not an absolute name, we interpret the file</span>
|
|
967
|
+
285: <span class="ruby-comment cmt"># name relative to the including file.</span>
|
|
968
|
+
286: <span class="ruby-identifier">includeFileName</span> = <span class="ruby-identifier">path</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">includeFileName</span>
|
|
969
|
+
287: <span class="ruby-keyword kw">end</span>
|
|
970
|
+
288:
|
|
971
|
+
289: <span class="ruby-comment cmt"># Try to dectect recursive inclusions. This will not work if files are</span>
|
|
972
|
+
290: <span class="ruby-comment cmt"># accessed via filesystem links.</span>
|
|
973
|
+
291: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
974
|
+
292: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">includeFileName</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fileName</span>
|
|
975
|
+
293: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'include_recursion'</span>,
|
|
976
|
+
294: <span class="ruby-node">"Recursive inclusion of #{includeFileName} detected"</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">sfi</span>)
|
|
977
|
+
295: <span class="ruby-keyword kw">end</span>
|
|
978
|
+
296: <span class="ruby-keyword kw">end</span>
|
|
979
|
+
297:
|
|
980
|
+
298: <span class="ruby-comment cmt"># Save @tokenBuffer in the record of the parent file.</span>
|
|
981
|
+
299: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">1</span>] = <span class="ruby-ivar">@tokenBuffer</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
|
|
982
|
+
300: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
983
|
+
301: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
|
|
984
|
+
302:
|
|
985
|
+
303: <span class="ruby-comment cmt"># Open the new file and push the handle on the @fileStack.</span>
|
|
986
|
+
304: <span class="ruby-keyword kw">begin</span>
|
|
987
|
+
305: <span class="ruby-ivar">@fileStack</span> <span class="ruby-operator"><<</span> [ (<span class="ruby-ivar">@cf</span> = <span class="ruby-constant">FileStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">includeFileName</span>)), <span class="ruby-keyword kw">nil</span>, ]
|
|
988
|
+
306: <span class="ruby-constant">Log</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Parsing file #{includeFileName}"</span>
|
|
989
|
+
307: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
|
|
990
|
+
308: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'bad_include'</span>, <span class="ruby-node">"Cannot open include file #{includeFileName}"</span>,
|
|
991
|
+
309: <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">sfi</span>)
|
|
992
|
+
310: <span class="ruby-keyword kw">end</span>
|
|
993
|
+
311: <span class="ruby-keyword kw">end</span></pre>
|
|
932
994
|
</div>
|
|
933
995
|
|
|
934
996
|
</div>
|
|
@@ -940,7 +1002,7 @@ where we started with the new file.
|
|
|
940
1002
|
|
|
941
1003
|
|
|
942
1004
|
<div id="macro-efined--method" class="method-detail ">
|
|
943
|
-
<a name="
|
|
1005
|
+
<a name="method-i-macroDefined%3F"></a>
|
|
944
1006
|
|
|
945
1007
|
<div class="method-heading">
|
|
946
1008
|
|
|
@@ -962,10 +1024,10 @@ added already.
|
|
|
962
1024
|
<div class="method-source-code"
|
|
963
1025
|
id="macro-efined--source">
|
|
964
1026
|
<pre>
|
|
965
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
1027
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 429</span>
|
|
1028
|
+
429: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">macroDefined?</span>(<span class="ruby-identifier">name</span>)
|
|
1029
|
+
430: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
|
|
1030
|
+
431: <span class="ruby-keyword kw">end</span></pre>
|
|
969
1031
|
</div>
|
|
970
1032
|
|
|
971
1033
|
</div>
|
|
@@ -977,12 +1039,12 @@ added already.
|
|
|
977
1039
|
|
|
978
1040
|
|
|
979
1041
|
<div id="message-method" class="method-detail ">
|
|
980
|
-
<a name="
|
|
1042
|
+
<a name="method-i-message"></a>
|
|
981
1043
|
|
|
982
1044
|
<div class="method-heading">
|
|
983
1045
|
|
|
984
1046
|
<span class="method-name">message</span><span
|
|
985
|
-
class="method-args">(type, id, text, property)</span>
|
|
1047
|
+
class="method-args">(type, id, text, property, sfi)</span>
|
|
986
1048
|
<span class="method-click-advice">click to toggle source</span>
|
|
987
1049
|
|
|
988
1050
|
</div>
|
|
@@ -996,26 +1058,32 @@ added already.
|
|
|
996
1058
|
<div class="method-source-code"
|
|
997
1059
|
id="message-source">
|
|
998
1060
|
<pre>
|
|
999
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1061
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 457</span>
|
|
1062
|
+
457: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">message</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">property</span>, <span class="ruby-identifier">sfi</span>)
|
|
1063
|
+
458: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
|
|
1064
|
+
459: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">type</span>, <span class="ruby-identifier">text</span> <span class="ruby-operator">+</span> <span class="ruby-value str">"\n"</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">line</span>.<span class="ruby-identifier">to_s</span>,
|
|
1065
|
+
460: <span class="ruby-identifier">property</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">sfi</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">sourceFileInfo</span>)
|
|
1066
|
+
461: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
|
|
1067
|
+
462:
|
|
1068
|
+
463: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">macroStack</span>.<span class="ruby-identifier">empty?</span>
|
|
1069
|
+
464: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'macro_stack'</span>, <span class="ruby-value str">'info'</span>, <span class="ruby-value str">'Macro call history:'</span>)
|
|
1070
|
+
465: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
|
|
1071
|
+
466:
|
|
1072
|
+
467: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">macroStack</span>.<span class="ruby-identifier">reverse_each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">entry</span><span class="ruby-operator">|</span>
|
|
1073
|
+
468: <span class="ruby-identifier">macro</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">macro</span>
|
|
1074
|
+
469: <span class="ruby-identifier">args</span> = <span class="ruby-identifier">entry</span>.<span class="ruby-identifier">args</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
|
|
1075
|
+
470: <span class="ruby-identifier">args</span>.<span class="ruby-identifier">collect!</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">a</span><span class="ruby-operator">|</span> <span class="ruby-value str">'"'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">a</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'"'</span> }
|
|
1076
|
+
471: <span class="ruby-identifier">message</span> = <span class="ruby-constant">Message</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'macro_stack'</span>, <span class="ruby-value str">'info'</span>,
|
|
1077
|
+
472: <span class="ruby-node">" ${#{macro.name} #{args.join(' ')}}"</span>,
|
|
1078
|
+
473: <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">macro</span>.<span class="ruby-identifier">sourceFileInfo</span>)
|
|
1079
|
+
474: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
|
|
1080
|
+
475: <span class="ruby-keyword kw">end</span>
|
|
1081
|
+
476: <span class="ruby-keyword kw">end</span>
|
|
1082
|
+
477: <span class="ruby-keyword kw">end</span>
|
|
1083
|
+
478:
|
|
1084
|
+
479: <span class="ruby-comment cmt"># An empty strings signals an already reported error</span>
|
|
1085
|
+
480: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">''</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'error'</span>
|
|
1086
|
+
481: <span class="ruby-keyword kw">end</span></pre>
|
|
1019
1087
|
</div>
|
|
1020
1088
|
|
|
1021
1089
|
</div>
|
|
@@ -1026,13 +1094,13 @@ added already.
|
|
|
1026
1094
|
</div>
|
|
1027
1095
|
|
|
1028
1096
|
|
|
1029
|
-
<div id="
|
|
1030
|
-
<a name="
|
|
1097
|
+
<div id="mode--method" class="method-detail ">
|
|
1098
|
+
<a name="method-i-mode%3D"></a>
|
|
1031
1099
|
|
|
1032
1100
|
<div class="method-heading">
|
|
1033
1101
|
|
|
1034
|
-
<span class="method-name">
|
|
1035
|
-
class="method-args">()</span>
|
|
1102
|
+
<span class="method-name">mode=</span><span
|
|
1103
|
+
class="method-args">(newMode)</span>
|
|
1036
1104
|
<span class="method-click-advice">click to toggle source</span>
|
|
1037
1105
|
|
|
1038
1106
|
</div>
|
|
@@ -1040,84 +1108,22 @@ added already.
|
|
|
1040
1108
|
<div class="method-description">
|
|
1041
1109
|
|
|
1042
1110
|
<p>
|
|
1043
|
-
|
|
1044
|
-
|
|
1111
|
+
Switch the parser to another mode. The scanner will then only detect with
|
|
1112
|
+
pattens of that <em>newMode</em>.
|
|
1045
1113
|
</p>
|
|
1046
1114
|
|
|
1047
1115
|
|
|
1048
1116
|
|
|
1049
1117
|
<div class="method-source-code"
|
|
1050
|
-
id="
|
|
1118
|
+
id="mode--source">
|
|
1051
1119
|
<pre>
|
|
1052
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
271: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span>
|
|
1060
|
-
272: <span class="ruby-keyword kw">end</span>
|
|
1061
|
-
273:
|
|
1062
|
-
274: <span class="ruby-comment cmt"># Start processing characters from the input.</span>
|
|
1063
|
-
275: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-identifier">lineNo</span>, <span class="ruby-identifier">columnNo</span>)
|
|
1064
|
-
276: <span class="ruby-identifier">token</span> = [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'<END>'</span> ]
|
|
1065
|
-
277: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>
|
|
1066
|
-
278: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">c</span>
|
|
1067
|
-
279: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">' '</span>, <span class="ruby-value str">"\n"</span>, <span class="ruby-value str">"\t"</span>
|
|
1068
|
-
280: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">tok</span> = <span class="ruby-identifier">readBlanks</span>(<span class="ruby-identifier">c</span>))
|
|
1069
|
-
281: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">tok</span>
|
|
1070
|
-
282: <span class="ruby-keyword kw">break</span>
|
|
1071
|
-
283: <span class="ruby-keyword kw">end</span>
|
|
1072
|
-
284: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-identifier">lineNo</span>, <span class="ruby-identifier">columnNo</span>)
|
|
1073
|
-
285: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'#'</span>
|
|
1074
|
-
286: <span class="ruby-identifier">skipComment</span>
|
|
1075
|
-
287: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-identifier">lineNo</span>, <span class="ruby-identifier">columnNo</span>)
|
|
1076
|
-
288: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'/'</span>
|
|
1077
|
-
289: <span class="ruby-identifier">skipCPlusPlusComments</span>
|
|
1078
|
-
290: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-identifier">lineNo</span>, <span class="ruby-identifier">columnNo</span>)
|
|
1079
|
-
291: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>
|
|
1080
|
-
292: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">readNumber</span>(<span class="ruby-identifier">c</span>)
|
|
1081
|
-
293: <span class="ruby-keyword kw">break</span>
|
|
1082
|
-
294: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">"'"</span>
|
|
1083
|
-
295: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">readString</span>(<span class="ruby-identifier">c</span>)
|
|
1084
|
-
296: <span class="ruby-keyword kw">break</span>
|
|
1085
|
-
297: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'"'</span>
|
|
1086
|
-
298: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">readString</span>(<span class="ruby-identifier">c</span>)
|
|
1087
|
-
299: <span class="ruby-keyword kw">break</span>
|
|
1088
|
-
300: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'-'</span>
|
|
1089
|
-
301: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">handleDash</span>
|
|
1090
|
-
302: <span class="ruby-keyword kw">break</span>
|
|
1091
|
-
303: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'!'</span>
|
|
1092
|
-
304: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span>
|
|
1093
|
-
305: <span class="ruby-identifier">token</span> = [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'!='</span> ]
|
|
1094
|
-
306: <span class="ruby-keyword kw">else</span>
|
|
1095
|
-
307: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1096
|
-
308: <span class="ruby-identifier">token</span> = [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'!'</span> ]
|
|
1097
|
-
309: <span class="ruby-keyword kw">end</span>
|
|
1098
|
-
310: <span class="ruby-keyword kw">break</span>
|
|
1099
|
-
311: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>, <span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>, <span class="ruby-value str">'_'</span>
|
|
1100
|
-
312: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">readId</span>(<span class="ruby-identifier">c</span>)
|
|
1101
|
-
313: <span class="ruby-keyword kw">break</span>
|
|
1102
|
-
314: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'<'</span>, <span class="ruby-value str">'>'</span>, <span class="ruby-value str">'='</span>
|
|
1103
|
-
315: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">readOperator</span>(<span class="ruby-identifier">c</span>)
|
|
1104
|
-
316: <span class="ruby-keyword kw">break</span>
|
|
1105
|
-
317: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'['</span>
|
|
1106
|
-
318: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">readMacro</span>
|
|
1107
|
-
319: <span class="ruby-keyword kw">break</span>
|
|
1108
|
-
320: <span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span>
|
|
1109
|
-
321: <span class="ruby-comment cmt"># We've reached an end of file or buffer</span>
|
|
1110
|
-
322: <span class="ruby-keyword kw">break</span>
|
|
1111
|
-
323: <span class="ruby-keyword kw">else</span>
|
|
1112
|
-
324: <span class="ruby-identifier">str</span> = <span class="ruby-value str">""</span>
|
|
1113
|
-
325: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1114
|
-
326: <span class="ruby-identifier">token</span> = [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-identifier">str</span> ]
|
|
1115
|
-
327: <span class="ruby-keyword kw">break</span>
|
|
1116
|
-
328: <span class="ruby-keyword kw">end</span>
|
|
1117
|
-
329: <span class="ruby-keyword kw">end</span>
|
|
1118
|
-
330: <span class="ruby-ivar">@pos</span> = <span class="ruby-ivar">@startOfToken</span>
|
|
1119
|
-
331: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">token</span>
|
|
1120
|
-
332: <span class="ruby-keyword kw">end</span></pre>
|
|
1120
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 242</span>
|
|
1121
|
+
242: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">mode=</span>(<span class="ruby-identifier">newMode</span>)
|
|
1122
|
+
243: <span class="ruby-comment cmt">#puts "**** New mode: #{newMode}"</span>
|
|
1123
|
+
244: <span class="ruby-ivar">@activePatterns</span> = <span class="ruby-ivar">@patternsByMode</span>[<span class="ruby-identifier">newMode</span>]
|
|
1124
|
+
245: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Undefined mode #{newMode}"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@activePatterns</span>
|
|
1125
|
+
246: <span class="ruby-ivar">@scannerMode</span> = <span class="ruby-identifier">newMode</span>
|
|
1126
|
+
247: <span class="ruby-keyword kw">end</span></pre>
|
|
1121
1127
|
</div>
|
|
1122
1128
|
|
|
1123
1129
|
</div>
|
|
@@ -1128,13 +1134,13 @@ be an Array of the form [ TokenType, TokenValue ].
|
|
|
1128
1134
|
</div>
|
|
1129
1135
|
|
|
1130
1136
|
|
|
1131
|
-
<div id="
|
|
1132
|
-
<a name="
|
|
1137
|
+
<div id="next-oken-method" class="method-detail ">
|
|
1138
|
+
<a name="method-i-nextToken"></a>
|
|
1133
1139
|
|
|
1134
1140
|
<div class="method-heading">
|
|
1135
1141
|
|
|
1136
|
-
<span class="method-name">
|
|
1137
|
-
class="method-args">(
|
|
1142
|
+
<span class="method-name">nextToken</span><span
|
|
1143
|
+
class="method-args">()</span>
|
|
1138
1144
|
<span class="method-click-advice">click to toggle source</span>
|
|
1139
1145
|
|
|
1140
1146
|
</div>
|
|
@@ -1142,30 +1148,89 @@ be an Array of the form [ TokenType, TokenValue ].
|
|
|
1142
1148
|
<div class="method-description">
|
|
1143
1149
|
|
|
1144
1150
|
<p>
|
|
1145
|
-
|
|
1146
|
-
<a href="../String.html">String</a
|
|
1151
|
+
Return the next token from the input stream. The result is an Array with 3
|
|
1152
|
+
entries: the token type, the token <a href="../String.html">String</a> and
|
|
1153
|
+
the <a href="SourceFileInfo.html">SourceFileInfo</a> where the token
|
|
1154
|
+
started.
|
|
1147
1155
|
</p>
|
|
1148
1156
|
|
|
1149
1157
|
|
|
1150
1158
|
|
|
1151
1159
|
<div class="method-source-code"
|
|
1152
|
-
id="
|
|
1160
|
+
id="next-oken-source">
|
|
1153
1161
|
<pre>
|
|
1154
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1162
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 340</span>
|
|
1163
|
+
340: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
|
|
1164
|
+
341: <span class="ruby-comment cmt"># If we have a pushed-back token, return that first.</span>
|
|
1165
|
+
342: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
|
|
1166
|
+
343: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@tokenBuffer</span>
|
|
1167
|
+
344: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
1168
|
+
345: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">res</span>
|
|
1169
|
+
346: <span class="ruby-keyword kw">end</span>
|
|
1170
|
+
347:
|
|
1171
|
+
348: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@finishLastFile</span>
|
|
1172
|
+
349: <span class="ruby-comment cmt"># The previously processed file has now really been processed to</span>
|
|
1173
|
+
350: <span class="ruby-comment cmt"># completion. Close it and remove the corresponding entry from the</span>
|
|
1174
|
+
351: <span class="ruby-comment cmt"># @fileStack.</span>
|
|
1175
|
+
352: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">false</span>
|
|
1176
|
+
353: <span class="ruby-comment cmt">#Log << "Completed file #{@cf.fileName}"</span>
|
|
1177
|
+
354: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">close</span>
|
|
1178
|
+
355: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">pop</span>
|
|
1179
|
+
356:
|
|
1180
|
+
357: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
|
|
1181
|
+
358: <span class="ruby-comment cmt"># We are done with the top-level file now.</span>
|
|
1182
|
+
359: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
1183
|
+
360: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
|
|
1184
|
+
361: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'<END>'</span>, <span class="ruby-ivar">@startOfToken</span> ]
|
|
1185
|
+
362: <span class="ruby-keyword kw">else</span>
|
|
1186
|
+
363: <span class="ruby-comment cmt"># Continue parsing the file that included the current file.</span>
|
|
1187
|
+
364: <span class="ruby-ivar">@cf</span>, <span class="ruby-identifier">tokenBuffer</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>
|
|
1188
|
+
365: <span class="ruby-constant">Log</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Parsing file #{@cf.fileName} ..."</span>
|
|
1189
|
+
366: <span class="ruby-comment cmt"># If we have a left over token from previously processing this file,</span>
|
|
1190
|
+
367: <span class="ruby-comment cmt"># return it now.</span>
|
|
1191
|
+
368: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tokenBuffer</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">tokenBuffer</span>
|
|
1192
|
+
369: <span class="ruby-keyword kw">end</span>
|
|
1193
|
+
370: <span class="ruby-keyword kw">end</span>
|
|
1194
|
+
371:
|
|
1195
|
+
372: <span class="ruby-comment cmt"># Start processing characters from the input.</span>
|
|
1196
|
+
373: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-identifier">sourceFileInfo</span>
|
|
1197
|
+
374: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
|
1198
|
+
375: <span class="ruby-identifier">match</span> = <span class="ruby-keyword kw">nil</span>
|
|
1199
|
+
376: <span class="ruby-keyword kw">begin</span>
|
|
1200
|
+
377: <span class="ruby-ivar">@activePatterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">re</span>, <span class="ruby-identifier">postProc</span><span class="ruby-operator">|</span>
|
|
1201
|
+
378: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">match</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">scan</span>(<span class="ruby-identifier">re</span>))
|
|
1202
|
+
379: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span> <span class="ruby-operator">==</span> <span class="ruby-value">:scannerEOF</span>
|
|
1203
|
+
380: <span class="ruby-comment cmt"># We've found the end of an input file. Return a special token</span>
|
|
1204
|
+
381: <span class="ruby-comment cmt"># that describes the end of a file.</span>
|
|
1205
|
+
382: <span class="ruby-ivar">@finishLastFile</span> = <span class="ruby-keyword kw">true</span>
|
|
1206
|
+
383: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'.'</span>, <span class="ruby-value str">'<END>'</span>, <span class="ruby-ivar">@startOfToken</span> ]
|
|
1207
|
+
384: <span class="ruby-keyword kw">end</span>
|
|
1208
|
+
385:
|
|
1209
|
+
386: <span class="ruby-identifier">raise</span> <span class="ruby-node">"#{re} matches empty string"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">empty?</span>
|
|
1210
|
+
387: <span class="ruby-comment cmt"># If we have a post processing method, call it now. It may modify</span>
|
|
1211
|
+
388: <span class="ruby-comment cmt"># the type or the found token String.</span>
|
|
1212
|
+
389: <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span> = <span class="ruby-identifier">postProc</span>.<span class="ruby-identifier">call</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">postProc</span>
|
|
1213
|
+
390:
|
|
1214
|
+
391: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-comment cmt"># Ignore certain tokens with nil type.</span>
|
|
1215
|
+
392:
|
|
1216
|
+
393: <span class="ruby-keyword kw">return</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">match</span>, <span class="ruby-ivar">@startOfToken</span> ]
|
|
1217
|
+
394: <span class="ruby-keyword kw">end</span>
|
|
1218
|
+
395: <span class="ruby-keyword kw">end</span>
|
|
1219
|
+
396: <span class="ruby-keyword kw">rescue</span>
|
|
1220
|
+
397: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'scan_encoding_error'</span>, <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>)
|
|
1221
|
+
398: <span class="ruby-keyword kw">end</span>
|
|
1222
|
+
399:
|
|
1223
|
+
400: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">match</span>.<span class="ruby-identifier">nil?</span>
|
|
1224
|
+
401: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">eof?</span>
|
|
1225
|
+
402: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unexpected_eof'</span>,
|
|
1226
|
+
403: <span class="ruby-value str">"Unexpected end of file found"</span>)
|
|
1227
|
+
404: <span class="ruby-keyword kw">else</span>
|
|
1228
|
+
405: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'no_token_match'</span>,
|
|
1229
|
+
406: <span class="ruby-node">"Unexpected characters found: '#{@cf.peek(10)}...'"</span>)
|
|
1230
|
+
407: <span class="ruby-keyword kw">end</span>
|
|
1231
|
+
408: <span class="ruby-keyword kw">end</span>
|
|
1232
|
+
409: <span class="ruby-keyword kw">end</span>
|
|
1233
|
+
410: <span class="ruby-keyword kw">end</span></pre>
|
|
1169
1234
|
</div>
|
|
1170
1235
|
|
|
1171
1236
|
</div>
|
|
@@ -1176,13 +1241,13 @@ Start the processing. if <em>fileNameIsBuffer</em> is true, we operate on a
|
|
|
1176
1241
|
</div>
|
|
1177
1242
|
|
|
1178
1243
|
|
|
1179
|
-
<div id="
|
|
1180
|
-
<a name="
|
|
1244
|
+
<div id="open-method" class="method-detail ">
|
|
1245
|
+
<a name="method-i-open"></a>
|
|
1181
1246
|
|
|
1182
1247
|
<div class="method-heading">
|
|
1183
1248
|
|
|
1184
|
-
<span class="method-name">
|
|
1185
|
-
class="method-args">(
|
|
1249
|
+
<span class="method-name">open</span><span
|
|
1250
|
+
class="method-args">(fileNameIsBuffer = false)</span>
|
|
1186
1251
|
<span class="method-click-advice">click to toggle source</span>
|
|
1187
1252
|
|
|
1188
1253
|
</div>
|
|
@@ -1190,25 +1255,30 @@ Start the processing. if <em>fileNameIsBuffer</em> is true, we operate on a
|
|
|
1190
1255
|
<div class="method-description">
|
|
1191
1256
|
|
|
1192
1257
|
<p>
|
|
1193
|
-
|
|
1194
|
-
|
|
1258
|
+
Start the processing. if <em>fileNameIsBuffer</em> is true, we operate on a
|
|
1259
|
+
<a href="../String.html">String</a>, else on a File.
|
|
1195
1260
|
</p>
|
|
1196
1261
|
|
|
1197
1262
|
|
|
1198
1263
|
|
|
1199
1264
|
<div class="method-source-code"
|
|
1200
|
-
id="
|
|
1265
|
+
id="open-source">
|
|
1201
1266
|
<pre>
|
|
1202
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1267
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 252</span>
|
|
1268
|
+
252: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>)
|
|
1269
|
+
253: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-identifier">fileNameIsBuffer</span>
|
|
1270
|
+
254: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fileNameIsBuffer</span>
|
|
1271
|
+
255: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">BufferStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span> ] ]
|
|
1272
|
+
256: <span class="ruby-keyword kw">else</span>
|
|
1273
|
+
257: <span class="ruby-keyword kw">begin</span>
|
|
1274
|
+
258: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">FileStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span> ] ]
|
|
1275
|
+
259: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
|
|
1276
|
+
260: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-node">"Cannot open file #{@masterFile}"</span>
|
|
1277
|
+
261: <span class="ruby-keyword kw">end</span>
|
|
1278
|
+
262: <span class="ruby-keyword kw">end</span>
|
|
1279
|
+
263: <span class="ruby-ivar">@masterPath</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">dirname</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
|
|
1280
|
+
264: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
1281
|
+
265: <span class="ruby-keyword kw">end</span></pre>
|
|
1212
1282
|
</div>
|
|
1213
1283
|
|
|
1214
1284
|
</div>
|
|
@@ -1219,13 +1289,13 @@ token can be returned before the next nextToken() call.
|
|
|
1219
1289
|
</div>
|
|
1220
1290
|
|
|
1221
1291
|
|
|
1222
|
-
<div id="
|
|
1223
|
-
<a name="
|
|
1292
|
+
<div id="return-oken-method" class="method-detail ">
|
|
1293
|
+
<a name="method-i-returnToken"></a>
|
|
1224
1294
|
|
|
1225
1295
|
<div class="method-heading">
|
|
1226
1296
|
|
|
1227
|
-
<span class="method-name">
|
|
1228
|
-
class="method-args">()</span>
|
|
1297
|
+
<span class="method-name">returnToken</span><span
|
|
1298
|
+
class="method-args">(token)</span>
|
|
1229
1299
|
<span class="method-click-advice">click to toggle source</span>
|
|
1230
1300
|
|
|
1231
1301
|
</div>
|
|
@@ -1233,145 +1303,24 @@ token can be returned before the next nextToken() call.
|
|
|
1233
1303
|
<div class="method-description">
|
|
1234
1304
|
|
|
1235
1305
|
<p>
|
|
1236
|
-
Return
|
|
1237
|
-
|
|
1306
|
+
Return a token to retrieve it with the next nextToken() call again. Only 1
|
|
1307
|
+
token can be returned before the next nextToken() call.
|
|
1238
1308
|
</p>
|
|
1239
1309
|
|
|
1240
1310
|
|
|
1241
1311
|
|
|
1242
1312
|
<div class="method-source-code"
|
|
1243
|
-
id="
|
|
1244
|
-
<pre>
|
|
1245
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 241</span>
|
|
1246
|
-
241: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sourceFileInfo</span>
|
|
1247
|
-
242: <span class="ruby-ivar">@pos</span> <span class="ruby-operator">?</span> <span class="ruby-ivar">@pos</span>.<span class="ruby-identifier">dup</span> <span class="ruby-operator">:</span> <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-identifier">lineNo</span>, <span class="ruby-identifier">columnNo</span>)
|
|
1248
|
-
243: <span class="ruby-keyword kw">end</span></pre>
|
|
1249
|
-
</div>
|
|
1250
|
-
|
|
1251
|
-
</div>
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
</div>
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
<div id="warning-method" class="method-detail ">
|
|
1260
|
-
<a name="M001143"></a>
|
|
1261
|
-
|
|
1262
|
-
<div class="method-heading">
|
|
1263
|
-
|
|
1264
|
-
<span class="method-name">warning</span><span
|
|
1265
|
-
class="method-args">(id, text, property = nil)</span>
|
|
1266
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1267
|
-
|
|
1268
|
-
</div>
|
|
1269
|
-
|
|
1270
|
-
<div class="method-description">
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
<div class="method-source-code"
|
|
1277
|
-
id="warning-source">
|
|
1278
|
-
<pre>
|
|
1279
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 377</span>
|
|
1280
|
-
377: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">property</span> = <span class="ruby-keyword kw">nil</span>)
|
|
1281
|
-
378: <span class="ruby-identifier">message</span>(<span class="ruby-value str">'warning'</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">property</span>)
|
|
1282
|
-
379: <span class="ruby-keyword kw">end</span></pre>
|
|
1283
|
-
</div>
|
|
1284
|
-
|
|
1285
|
-
</div>
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
</div>
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
</div>
|
|
1294
|
-
|
|
1295
|
-
<div id="private-instance-method-details" class="method-section section">
|
|
1296
|
-
<h3 class="section-header">Private Instance Methods</h3>
|
|
1297
|
-
|
|
1298
|
-
|
|
1299
|
-
<div id="error--method" class="method-detail ">
|
|
1300
|
-
<a name="M001161"></a>
|
|
1301
|
-
|
|
1302
|
-
<div class="method-heading">
|
|
1303
|
-
|
|
1304
|
-
<span class="method-name">errorEOF</span><span
|
|
1305
|
-
class="method-args">(no, token)</span>
|
|
1306
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1307
|
-
|
|
1308
|
-
</div>
|
|
1309
|
-
|
|
1310
|
-
<div class="method-description">
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
<div class="method-source-code"
|
|
1317
|
-
id="error--source">
|
|
1318
|
-
<pre>
|
|
1319
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 894</span>
|
|
1320
|
-
894: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">errorEOF</span>(<span class="ruby-identifier">no</span>, <span class="ruby-identifier">token</span>)
|
|
1321
|
-
895: <span class="ruby-identifier">error</span>(<span class="ruby-node">"eof_in_istring#{no}"</span>,
|
|
1322
|
-
896: <span class="ruby-node">"Unexpected end of file in string '#{token[0,20]}...'"</span> <span class="ruby-operator">+</span>
|
|
1323
|
-
897: <span class="ruby-node">"starting in line #{@startOfToken.lineNo}."</span>)
|
|
1324
|
-
898: <span class="ruby-keyword kw">end</span></pre>
|
|
1325
|
-
</div>
|
|
1326
|
-
|
|
1327
|
-
</div>
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1331
|
-
|
|
1332
|
-
</div>
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
<div id="handle-ash-method" class="method-detail ">
|
|
1336
|
-
<a name="M001150"></a>
|
|
1337
|
-
|
|
1338
|
-
<div class="method-heading">
|
|
1339
|
-
|
|
1340
|
-
<span class="method-name">handleDash</span><span
|
|
1341
|
-
class="method-args">()</span>
|
|
1342
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1343
|
-
|
|
1344
|
-
</div>
|
|
1345
|
-
|
|
1346
|
-
<div class="method-description">
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
<div class="method-source-code"
|
|
1353
|
-
id="handle-ash-source">
|
|
1313
|
+
id="return-oken-source">
|
|
1354
1314
|
<pre>
|
|
1355
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
532: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c1</span>)
|
|
1365
|
-
533: <span class="ruby-keyword kw">end</span>
|
|
1366
|
-
534: <span class="ruby-keyword kw">else</span>
|
|
1367
|
-
535: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c2</span>)
|
|
1368
|
-
536: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c1</span>)
|
|
1369
|
-
537: <span class="ruby-keyword kw">end</span>
|
|
1370
|
-
538: <span class="ruby-keyword kw">else</span>
|
|
1371
|
-
539: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c1</span>)
|
|
1372
|
-
540: <span class="ruby-keyword kw">end</span>
|
|
1373
|
-
541: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">' - '</span>]
|
|
1374
|
-
542: <span class="ruby-keyword kw">end</span></pre>
|
|
1315
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 414</span>
|
|
1316
|
+
414: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
|
|
1317
|
+
415: <span class="ruby-comment cmt">#Log << "-> Returning Token: [#{token[0]}][#{token[1]}]"</span>
|
|
1318
|
+
416: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
|
|
1319
|
+
417: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@tokenBuffer</span>
|
|
1320
|
+
418: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Fatal Error: Cannot return more than 1 token in a row"</span>
|
|
1321
|
+
419: <span class="ruby-keyword kw">end</span>
|
|
1322
|
+
420: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-identifier">token</span>
|
|
1323
|
+
421: <span class="ruby-keyword kw">end</span></pre>
|
|
1375
1324
|
</div>
|
|
1376
1325
|
|
|
1377
1326
|
</div>
|
|
@@ -1382,12 +1331,12 @@ processing prosition.
|
|
|
1382
1331
|
</div>
|
|
1383
1332
|
|
|
1384
1333
|
|
|
1385
|
-
<div id="
|
|
1386
|
-
<a name="
|
|
1334
|
+
<div id="source-ile-nfo-method" class="method-detail ">
|
|
1335
|
+
<a name="method-i-sourceFileInfo"></a>
|
|
1387
1336
|
|
|
1388
1337
|
<div class="method-heading">
|
|
1389
1338
|
|
|
1390
|
-
<span class="method-name">
|
|
1339
|
+
<span class="method-name">sourceFileInfo</span><span
|
|
1391
1340
|
class="method-args">()</span>
|
|
1392
1341
|
<span class="method-click-advice">click to toggle source</span>
|
|
1393
1342
|
|
|
@@ -1396,180 +1345,20 @@ processing prosition.
|
|
|
1396
1345
|
<div class="method-description">
|
|
1397
1346
|
|
|
1398
1347
|
<p>
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
When it has reached the end of the master file it returns nil.
|
|
1348
|
+
Return <a href="SourceFileInfo.html">SourceFileInfo</a> for the current
|
|
1349
|
+
processing prosition.
|
|
1402
1350
|
</p>
|
|
1403
1351
|
|
|
1404
1352
|
|
|
1405
1353
|
|
|
1406
1354
|
<div class="method-source-code"
|
|
1407
|
-
id="
|
|
1408
|
-
<pre>
|
|
1409
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 406</span>
|
|
1410
|
-
406: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextChar</span>
|
|
1411
|
-
407: <span class="ruby-comment cmt"># We've started to find the next token. @pos no longer marks the</span>
|
|
1412
|
-
408: <span class="ruby-comment cmt"># position of the current token. Since we also store the EOF position in</span>
|
|
1413
|
-
409: <span class="ruby-comment cmt"># @pos, don't reset it if we have processed all files completely.</span>
|
|
1414
|
-
410: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pos</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@cf</span>
|
|
1415
|
-
411: <span class="ruby-ivar">@lastPos</span> = <span class="ruby-ivar">@pos</span>
|
|
1416
|
-
412: <span class="ruby-ivar">@pos</span> = <span class="ruby-keyword kw">nil</span>
|
|
1417
|
-
413: <span class="ruby-keyword kw">end</span>
|
|
1418
|
-
414:
|
|
1419
|
-
415: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextCharI</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'$'</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@ignoreMacros</span>
|
|
1420
|
-
416: <span class="ruby-comment cmt"># Double $ are reduced to a single $.</span>
|
|
1421
|
-
417: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">c</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextCharI</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'$'</span>
|
|
1422
|
-
418:
|
|
1423
|
-
419: <span class="ruby-comment cmt"># Macros start with $( or ${. All other $. are ignored.</span>
|
|
1424
|
-
420: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">'('</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">'{'</span>
|
|
1425
|
-
421: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1426
|
-
422: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'$'</span>
|
|
1427
|
-
423: <span class="ruby-keyword kw">end</span>
|
|
1428
|
-
424:
|
|
1429
|
-
425: <span class="ruby-ivar">@ignoreMacros</span> = <span class="ruby-keyword kw">true</span>
|
|
1430
|
-
426: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1431
|
-
427: <span class="ruby-identifier">macroParser</span> = <span class="ruby-constant">MacroParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">self</span>, <span class="ruby-ivar">@messageHandler</span>)
|
|
1432
|
-
428: <span class="ruby-keyword kw">begin</span>
|
|
1433
|
-
429: <span class="ruby-identifier">macroParser</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-value str">'macroCall'</span>)
|
|
1434
|
-
430: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span>
|
|
1435
|
-
431: <span class="ruby-keyword kw">end</span>
|
|
1436
|
-
432: <span class="ruby-ivar">@ignoreMacros</span> = <span class="ruby-keyword kw">false</span>
|
|
1437
|
-
433: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">nextCharI</span>
|
|
1438
|
-
434: <span class="ruby-keyword kw">else</span>
|
|
1439
|
-
435: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">c</span>
|
|
1440
|
-
436: <span class="ruby-keyword kw">end</span>
|
|
1441
|
-
437: <span class="ruby-keyword kw">end</span></pre>
|
|
1442
|
-
</div>
|
|
1443
|
-
|
|
1444
|
-
</div>
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
</div>
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
<div id="next-har--method" class="method-detail ">
|
|
1453
|
-
<a name="M001146"></a>
|
|
1454
|
-
|
|
1455
|
-
<div class="method-heading">
|
|
1456
|
-
|
|
1457
|
-
<span class="method-name">nextCharI</span><span
|
|
1458
|
-
class="method-args">()</span>
|
|
1459
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1460
|
-
|
|
1461
|
-
</div>
|
|
1462
|
-
|
|
1463
|
-
<div class="method-description">
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
<div class="method-source-code"
|
|
1470
|
-
id="next-har--source">
|
|
1471
|
-
<pre>
|
|
1472
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 439</span>
|
|
1473
|
-
439: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextCharI</span>
|
|
1474
|
-
440: <span class="ruby-comment cmt"># This can only happen when a previous call already returned nil.</span>
|
|
1475
|
-
441: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">nil?</span>
|
|
1476
|
-
442:
|
|
1477
|
-
443: <span class="ruby-identifier">c</span> = <span class="ruby-keyword kw">nil</span>
|
|
1478
|
-
444: <span class="ruby-comment cmt"># If there are characters in the return buffer process them first.</span>
|
|
1479
|
-
445: <span class="ruby-comment cmt"># Otherwise get next character from input stream.</span>
|
|
1480
|
-
446: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span>.<span class="ruby-identifier">empty?</span>
|
|
1481
|
-
447: <span class="ruby-identifier">c</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span>.<span class="ruby-identifier">pop</span>
|
|
1482
|
-
448: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@macroStack</span>.<span class="ruby-identifier">empty?</span>
|
|
1483
|
-
449: <span class="ruby-keyword kw">while</span> <span class="ruby-operator">!</span><span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
1484
|
-
450: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span>.<span class="ruby-identifier">pop</span>
|
|
1485
|
-
451: <span class="ruby-ivar">@macroStack</span>.<span class="ruby-identifier">pop</span>
|
|
1486
|
-
452: <span class="ruby-keyword kw">end</span>
|
|
1487
|
-
453: <span class="ruby-keyword kw">else</span>
|
|
1488
|
-
454: <span class="ruby-comment cmt"># If EOF has been reached, try the parent file until even the master</span>
|
|
1489
|
-
455: <span class="ruby-comment cmt"># file has been processed completely.</span>
|
|
1490
|
-
456: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">getc</span>).<span class="ruby-identifier">nil?</span>
|
|
1491
|
-
457: <span class="ruby-comment cmt"># Safe current position so an EOF related error can be properly</span>
|
|
1492
|
-
458: <span class="ruby-comment cmt"># reported.</span>
|
|
1493
|
-
459: <span class="ruby-ivar">@pos</span> = <span class="ruby-identifier">sourceFileInfo</span>
|
|
1494
|
-
460:
|
|
1495
|
-
461: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">close</span>
|
|
1496
|
-
462: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">pop</span>
|
|
1497
|
-
463: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
|
|
1498
|
-
464: <span class="ruby-comment cmt"># We are done with the top-level file now.</span>
|
|
1499
|
-
465: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
1500
|
-
466: <span class="ruby-keyword kw">else</span>
|
|
1501
|
-
467: <span class="ruby-ivar">@cf</span>, <span class="ruby-ivar">@tokenBuffer</span>, <span class="ruby-ivar">@lastPos</span> = <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>
|
|
1502
|
-
468: <span class="ruby-constant">Log</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"Parsing file #{@cf.fileName} ..."</span>
|
|
1503
|
-
469: <span class="ruby-comment cmt"># We have been called by nextToken() already, so we can't just</span>
|
|
1504
|
-
470: <span class="ruby-comment cmt"># restore @tokenBuffer and be done. We need to feed the token text</span>
|
|
1505
|
-
471: <span class="ruby-comment cmt"># back into the charBuffer and return the first character.</span>
|
|
1506
|
-
472: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@tokenBuffer</span>
|
|
1507
|
-
473: <span class="ruby-ivar">@tokenBuffer</span>[<span class="ruby-value">1</span>].<span class="ruby-identifier">reverse</span>.<span class="ruby-identifier">each_utf8_char</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ch</span><span class="ruby-operator">|</span>
|
|
1508
|
-
474: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">ch</span>)
|
|
1509
|
-
475: <span class="ruby-keyword kw">end</span>
|
|
1510
|
-
476: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
|
1511
|
-
477: <span class="ruby-keyword kw">end</span>
|
|
1512
|
-
478: <span class="ruby-keyword kw">end</span>
|
|
1513
|
-
479: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
|
1514
|
-
480: <span class="ruby-keyword kw">end</span>
|
|
1515
|
-
481: <span class="ruby-keyword kw">end</span>
|
|
1516
|
-
482: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
|
|
1517
|
-
483: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
1518
|
-
484: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span> = <span class="ruby-value str">""</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
|
|
1519
|
-
485: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1520
|
-
486: <span class="ruby-keyword kw">end</span>
|
|
1521
|
-
487: <span class="ruby-identifier">c</span>
|
|
1522
|
-
488: <span class="ruby-keyword kw">end</span></pre>
|
|
1523
|
-
</div>
|
|
1524
|
-
|
|
1525
|
-
</div>
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
</div>
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
<div id="read-lanks-method" class="method-detail ">
|
|
1534
|
-
<a name="M001151"></a>
|
|
1535
|
-
|
|
1536
|
-
<div class="method-heading">
|
|
1537
|
-
|
|
1538
|
-
<span class="method-name">readBlanks</span><span
|
|
1539
|
-
class="method-args">(c)</span>
|
|
1540
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1541
|
-
|
|
1542
|
-
</div>
|
|
1543
|
-
|
|
1544
|
-
<div class="method-description">
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
<div class="method-source-code"
|
|
1551
|
-
id="read-lanks-source">
|
|
1355
|
+
id="source-ile-nfo-source">
|
|
1552
1356
|
<pre>
|
|
1553
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
548: <span class="ruby-comment cmt"># Special case for the dash between period dates. It must be</span>
|
|
1559
|
-
549: <span class="ruby-comment cmt"># surrounded by blanks.</span>
|
|
1560
|
-
550: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c3</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span>
|
|
1561
|
-
551: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">' - '</span>]
|
|
1562
|
-
552: <span class="ruby-keyword kw">end</span>
|
|
1563
|
-
553: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c3</span>)
|
|
1564
|
-
554: <span class="ruby-keyword kw">end</span>
|
|
1565
|
-
555: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c2</span>)
|
|
1566
|
-
556: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">"\n"</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">"\t"</span>
|
|
1567
|
-
557: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1568
|
-
558: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">nil</span>
|
|
1569
|
-
559: <span class="ruby-keyword kw">end</span>
|
|
1570
|
-
560: <span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>
|
|
1571
|
-
561: <span class="ruby-keyword kw">end</span>
|
|
1572
|
-
562: <span class="ruby-keyword kw">end</span></pre>
|
|
1357
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 314</span>
|
|
1358
|
+
314: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sourceFileInfo</span>
|
|
1359
|
+
315: <span class="ruby-ivar">@cf</span> <span class="ruby-operator">?</span> <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">-</span> <span class="ruby-ivar">@lineDelta</span>, <span class="ruby-value">0</span>) <span class="ruby-operator">:</span>
|
|
1360
|
+
316: <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>, <span class="ruby-value">0</span>, <span class="ruby-value">0</span>)
|
|
1361
|
+
317: <span class="ruby-keyword kw">end</span></pre>
|
|
1573
1362
|
</div>
|
|
1574
1363
|
|
|
1575
1364
|
</div>
|
|
@@ -1580,13 +1369,13 @@ When it has reached the end of the master file it returns nil.
|
|
|
1580
1369
|
</div>
|
|
1581
1370
|
|
|
1582
1371
|
|
|
1583
|
-
<div id="
|
|
1584
|
-
<a name="
|
|
1372
|
+
<div id="warning-method" class="method-detail ">
|
|
1373
|
+
<a name="method-i-warning"></a>
|
|
1585
1374
|
|
|
1586
1375
|
<div class="method-heading">
|
|
1587
1376
|
|
|
1588
|
-
<span class="method-name">
|
|
1589
|
-
class="method-args">(
|
|
1377
|
+
<span class="method-name">warning</span><span
|
|
1378
|
+
class="method-args">(id, text, property = nil, sfi = nil)</span>
|
|
1590
1379
|
<span class="method-click-advice">click to toggle source</span>
|
|
1591
1380
|
|
|
1592
1381
|
</div>
|
|
@@ -1598,805 +1387,12 @@ When it has reached the end of the master file it returns nil.
|
|
|
1598
1387
|
|
|
1599
1388
|
|
|
1600
1389
|
<div class="method-source-code"
|
|
1601
|
-
id="
|
|
1602
|
-
<pre>
|
|
1603
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 598</span>
|
|
1604
|
-
598: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readDate</span>(<span class="ruby-identifier">token</span>)
|
|
1605
|
-
599: <span class="ruby-identifier">year</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">to_i</span>
|
|
1606
|
-
600: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">year</span> <span class="ruby-operator"><</span> <span class="ruby-value">1970</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">year</span> <span class="ruby-operator">></span> <span class="ruby-value">2030</span>
|
|
1607
|
-
601: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Year must be between 1970 and 2030"</span>
|
|
1608
|
-
602: <span class="ruby-keyword kw">end</span>
|
|
1609
|
-
603:
|
|
1610
|
-
604: <span class="ruby-identifier">month</span> = <span class="ruby-identifier">readDigits</span>.<span class="ruby-identifier">to_i</span>
|
|
1611
|
-
605: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">month</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">month</span> <span class="ruby-operator">></span> <span class="ruby-value">12</span>
|
|
1612
|
-
606: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Month must be between 1 and 12"</span>
|
|
1613
|
-
607: <span class="ruby-keyword kw">end</span>
|
|
1614
|
-
608: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">'-'</span>
|
|
1615
|
-
609: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Corrupted date"</span>
|
|
1616
|
-
610: <span class="ruby-keyword kw">end</span>
|
|
1617
|
-
611:
|
|
1618
|
-
612: <span class="ruby-identifier">day</span> = <span class="ruby-identifier">readDigits</span>.<span class="ruby-identifier">to_i</span>
|
|
1619
|
-
613: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">day</span> <span class="ruby-operator"><</span> <span class="ruby-value">1</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">day</span> <span class="ruby-operator">></span> <span class="ruby-value">31</span>
|
|
1620
|
-
614: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Day must be between 1 and 31"</span>
|
|
1621
|
-
615: <span class="ruby-keyword kw">end</span>
|
|
1622
|
-
616:
|
|
1623
|
-
617: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">!=</span> <span class="ruby-value str">'-'</span>
|
|
1624
|
-
618: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1625
|
-
619: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'DATE'</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>) ]
|
|
1626
|
-
620: <span class="ruby-keyword kw">end</span>
|
|
1627
|
-
621:
|
|
1628
|
-
622: <span class="ruby-identifier">hour</span> = <span class="ruby-identifier">readDigits</span>.<span class="ruby-identifier">to_i</span>
|
|
1629
|
-
623: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hour</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">hour</span> <span class="ruby-operator">></span> <span class="ruby-value">23</span>
|
|
1630
|
-
624: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Hour must be between 0 and 23"</span>
|
|
1631
|
-
625: <span class="ruby-keyword kw">end</span>
|
|
1632
|
-
626:
|
|
1633
|
-
627: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">nextChar</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">':'</span>
|
|
1634
|
-
628: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Corrupted time. ':' expected."</span>
|
|
1635
|
-
629: <span class="ruby-keyword kw">end</span>
|
|
1636
|
-
630:
|
|
1637
|
-
631: <span class="ruby-identifier">minutes</span> = <span class="ruby-identifier">readDigits</span>.<span class="ruby-identifier">to_i</span>
|
|
1638
|
-
632: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">minutes</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">minutes</span> <span class="ruby-operator">></span> <span class="ruby-value">59</span>
|
|
1639
|
-
633: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Minutes must be between 0 and 59"</span>
|
|
1640
|
-
634: <span class="ruby-keyword kw">end</span>
|
|
1641
|
-
635:
|
|
1642
|
-
636: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">':'</span>
|
|
1643
|
-
637: <span class="ruby-identifier">seconds</span> = <span class="ruby-identifier">readDigits</span>.<span class="ruby-identifier">to_i</span>
|
|
1644
|
-
638: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">seconds</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">seconds</span> <span class="ruby-operator">></span> <span class="ruby-value">59</span>
|
|
1645
|
-
639: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Seconds must be between 0 and 59"</span>
|
|
1646
|
-
640: <span class="ruby-keyword kw">end</span>
|
|
1647
|
-
641: <span class="ruby-keyword kw">else</span>
|
|
1648
|
-
642: <span class="ruby-identifier">seconds</span> = <span class="ruby-value">0</span>
|
|
1649
|
-
643: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1650
|
-
644: <span class="ruby-keyword kw">end</span>
|
|
1651
|
-
645:
|
|
1652
|
-
646: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">!=</span> <span class="ruby-value str">'-'</span>
|
|
1653
|
-
647: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1654
|
-
648: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'DATE'</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">minutes</span>, <span class="ruby-identifier">seconds</span>) ]
|
|
1655
|
-
649: <span class="ruby-keyword kw">end</span>
|
|
1656
|
-
650:
|
|
1657
|
-
651: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span>
|
|
1658
|
-
652: <span class="ruby-identifier">delta</span> = <span class="ruby-value">1</span>
|
|
1659
|
-
653: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'+'</span>
|
|
1660
|
-
654: <span class="ruby-identifier">delta</span> = <span class="ruby-value">1</span>
|
|
1661
|
-
655: <span class="ruby-keyword kw">else</span>
|
|
1662
|
-
656: <span class="ruby-comment cmt"># An actual time zone name</span>
|
|
1663
|
-
657: <span class="ruby-identifier">tz</span> = <span class="ruby-identifier">readId</span>(<span class="ruby-identifier">c</span>)[<span class="ruby-value">1</span>]
|
|
1664
|
-
658: <span class="ruby-identifier">oldTz</span> = <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'TZ'</span>]
|
|
1665
|
-
659: <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'TZ'</span>] = <span class="ruby-identifier">tz</span>
|
|
1666
|
-
660: <span class="ruby-identifier">timeVal</span> = <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">local</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">minutes</span>, <span class="ruby-identifier">seconds</span>)
|
|
1667
|
-
661: <span class="ruby-constant">ENV</span>[<span class="ruby-value str">'TZ'</span>] = <span class="ruby-identifier">oldTz</span>
|
|
1668
|
-
662: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">timeVal</span>.<span class="ruby-identifier">to_a</span>[<span class="ruby-value">9</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">tz</span>
|
|
1669
|
-
663: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-node">"Unknown time zone #{tz}"</span>
|
|
1670
|
-
664: <span class="ruby-keyword kw">end</span>
|
|
1671
|
-
665: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'DATE'</span>, <span class="ruby-identifier">timeVal</span> ]
|
|
1672
|
-
666: <span class="ruby-keyword kw">end</span>
|
|
1673
|
-
667:
|
|
1674
|
-
668: <span class="ruby-identifier">utcDiff</span> = <span class="ruby-identifier">readDigits</span>
|
|
1675
|
-
669: <span class="ruby-identifier">utcHour</span> = <span class="ruby-identifier">utcDiff</span>[<span class="ruby-value">0</span>, <span class="ruby-value">2</span>].<span class="ruby-identifier">to_i</span>
|
|
1676
|
-
670: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">utcHour</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">utcHour</span> <span class="ruby-operator">></span> <span class="ruby-value">23</span>
|
|
1677
|
-
671: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Hour must be between 0 and 23"</span>
|
|
1678
|
-
672: <span class="ruby-keyword kw">end</span>
|
|
1679
|
-
673: <span class="ruby-identifier">utcMin</span> = <span class="ruby-identifier">utcDiff</span>[<span class="ruby-value">2</span>, <span class="ruby-value">2</span>].<span class="ruby-identifier">to_i</span>
|
|
1680
|
-
674: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">utcMin</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">utcMin</span> <span class="ruby-operator">></span> <span class="ruby-value">59</span>
|
|
1681
|
-
675: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Minutes must be between 0 and 59"</span>
|
|
1682
|
-
676: <span class="ruby-keyword kw">end</span>
|
|
1683
|
-
677:
|
|
1684
|
-
678: [ <span class="ruby-value str">'DATE'</span>, <span class="ruby-constant">TjTime</span>.<span class="ruby-identifier">gm</span>(<span class="ruby-identifier">year</span>, <span class="ruby-identifier">month</span>, <span class="ruby-identifier">day</span>, <span class="ruby-identifier">hour</span>, <span class="ruby-identifier">minutes</span>, <span class="ruby-identifier">seconds</span>) <span class="ruby-operator">+</span>
|
|
1685
|
-
679: <span class="ruby-identifier">delta</span> * ((<span class="ruby-identifier">utcHour</span> * <span class="ruby-value">3600</span>) <span class="ruby-operator">+</span> <span class="ruby-identifier">utcMin</span> * <span class="ruby-value">60</span>) ]
|
|
1686
|
-
680: <span class="ruby-keyword kw">end</span></pre>
|
|
1687
|
-
</div>
|
|
1688
|
-
|
|
1689
|
-
</div>
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
</div>
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
<div id="read-igits-method" class="method-detail ">
|
|
1698
|
-
<a name="M001159"></a>
|
|
1699
|
-
|
|
1700
|
-
<div class="method-heading">
|
|
1701
|
-
|
|
1702
|
-
<span class="method-name">readDigits</span><span
|
|
1703
|
-
class="method-args">()</span>
|
|
1704
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1705
|
-
|
|
1706
|
-
</div>
|
|
1707
|
-
|
|
1708
|
-
<div class="method-description">
|
|
1709
|
-
|
|
1710
|
-
<p>
|
|
1711
|
-
Read only decimal digits and return the result als Fixnum.
|
|
1712
|
-
</p>
|
|
1713
|
-
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
<div class="method-source-code"
|
|
1717
|
-
id="read-igits-source">
|
|
1718
|
-
<pre>
|
|
1719
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 865</span>
|
|
1720
|
-
865: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readDigits</span>
|
|
1721
|
-
866: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
1722
|
-
867: <span class="ruby-keyword kw">while</span> (<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
|
|
1723
|
-
868: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1724
|
-
869: <span class="ruby-keyword kw">end</span>
|
|
1725
|
-
870: <span class="ruby-comment cmt"># Make sure that we have read at least one digit.</span>
|
|
1726
|
-
871: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">""</span>
|
|
1727
|
-
872: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Digit (0 - 9) expected"</span>
|
|
1728
|
-
873: <span class="ruby-keyword kw">end</span>
|
|
1729
|
-
874: <span class="ruby-comment cmt"># Push back the non-digit that terminated the digits.</span>
|
|
1730
|
-
875: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1731
|
-
876: <span class="ruby-identifier">token</span>
|
|
1732
|
-
877: <span class="ruby-keyword kw">end</span></pre>
|
|
1733
|
-
</div>
|
|
1734
|
-
|
|
1735
|
-
</div>
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
</div>
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
<div id="read-d-method" class="method-detail ">
|
|
1744
|
-
<a name="M001156"></a>
|
|
1745
|
-
|
|
1746
|
-
<div class="method-heading">
|
|
1747
|
-
|
|
1748
|
-
<span class="method-name">readId</span><span
|
|
1749
|
-
class="method-args">(c)</span>
|
|
1750
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1751
|
-
|
|
1752
|
-
</div>
|
|
1753
|
-
|
|
1754
|
-
<div class="method-description">
|
|
1755
|
-
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
|
|
1759
|
-
|
|
1760
|
-
<div class="method-source-code"
|
|
1761
|
-
id="read-d-source">
|
|
1762
|
-
<pre>
|
|
1763
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 801</span>
|
|
1764
|
-
801: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readId</span>(<span class="ruby-identifier">c</span>)
|
|
1765
|
-
802: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
1766
|
-
803: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1767
|
-
804: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&&</span>
|
|
1768
|
-
805: ((<span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span>
|
|
1769
|
-
806: <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'_'</span>)
|
|
1770
|
-
807: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1771
|
-
808: <span class="ruby-keyword kw">end</span>
|
|
1772
|
-
809: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">':'</span>
|
|
1773
|
-
810: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'ID_WITH_COLON'</span>, <span class="ruby-identifier">token</span> ]
|
|
1774
|
-
811: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
1775
|
-
812: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1776
|
-
813: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
|
1777
|
-
814: <span class="ruby-identifier">token</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">readIdentifier</span>
|
|
1778
|
-
815: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">!=</span> <span class="ruby-value str">'.'</span>
|
|
1779
|
-
816: <span class="ruby-identifier">token</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">'.'</span>
|
|
1780
|
-
817: <span class="ruby-keyword kw">end</span>
|
|
1781
|
-
818: <span class="ruby-identifier">returnChar</span> <span class="ruby-identifier">c</span>
|
|
1782
|
-
819:
|
|
1783
|
-
820: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'ABSOLUTE_ID'</span>, <span class="ruby-identifier">token</span> ]
|
|
1784
|
-
821: <span class="ruby-keyword kw">else</span>
|
|
1785
|
-
822: <span class="ruby-identifier">returnChar</span> <span class="ruby-identifier">c</span>
|
|
1786
|
-
823: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'ID'</span>, <span class="ruby-identifier">token</span> ]
|
|
1787
|
-
824: <span class="ruby-keyword kw">end</span>
|
|
1788
|
-
825: <span class="ruby-keyword kw">end</span></pre>
|
|
1789
|
-
</div>
|
|
1790
|
-
|
|
1791
|
-
</div>
|
|
1792
|
-
|
|
1793
|
-
|
|
1794
|
-
|
|
1795
|
-
|
|
1796
|
-
</div>
|
|
1797
|
-
|
|
1798
|
-
|
|
1799
|
-
<div id="read-dentifier-method" class="method-detail ">
|
|
1800
|
-
<a name="M001160"></a>
|
|
1801
|
-
|
|
1802
|
-
<div class="method-heading">
|
|
1803
|
-
|
|
1804
|
-
<span class="method-name">readIdentifier</span><span
|
|
1805
|
-
class="method-args">(noDigit = true)</span>
|
|
1806
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1807
|
-
|
|
1808
|
-
</div>
|
|
1809
|
-
|
|
1810
|
-
<div class="method-description">
|
|
1811
|
-
|
|
1812
|
-
|
|
1813
|
-
|
|
1814
|
-
|
|
1815
|
-
|
|
1816
|
-
<div class="method-source-code"
|
|
1817
|
-
id="read-dentifier-source">
|
|
1818
|
-
<pre>
|
|
1819
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 879</span>
|
|
1820
|
-
879: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readIdentifier</span>(<span class="ruby-identifier">noDigit</span> = <span class="ruby-keyword kw">true</span>)
|
|
1821
|
-
880: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
1822
|
-
881: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&&</span>
|
|
1823
|
-
882: ((<span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span>
|
|
1824
|
-
883: (<span class="ruby-operator">!</span><span class="ruby-identifier">noDigit</span> <span class="ruby-operator">&&</span> ((<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'_'</span>)
|
|
1825
|
-
884: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1826
|
-
885: <span class="ruby-identifier">noDigit</span> = <span class="ruby-keyword kw">false</span>
|
|
1827
|
-
886: <span class="ruby-keyword kw">end</span>
|
|
1828
|
-
887: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1829
|
-
888: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">""</span>
|
|
1830
|
-
889: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Identifier expected"</span>
|
|
1831
|
-
890: <span class="ruby-keyword kw">end</span>
|
|
1832
|
-
891: <span class="ruby-identifier">token</span>
|
|
1833
|
-
892: <span class="ruby-keyword kw">end</span></pre>
|
|
1834
|
-
</div>
|
|
1835
|
-
|
|
1836
|
-
</div>
|
|
1837
|
-
|
|
1838
|
-
|
|
1839
|
-
|
|
1840
|
-
|
|
1841
|
-
</div>
|
|
1842
|
-
|
|
1843
|
-
|
|
1844
|
-
<div id="read-ndented-tring-method" class="method-detail ">
|
|
1845
|
-
<a name="M001155"></a>
|
|
1846
|
-
|
|
1847
|
-
<div class="method-heading">
|
|
1848
|
-
|
|
1849
|
-
<span class="method-name">readIndentedString</span><span
|
|
1850
|
-
class="method-args">()</span>
|
|
1851
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
1852
|
-
|
|
1853
|
-
</div>
|
|
1854
|
-
|
|
1855
|
-
<div class="method-description">
|
|
1856
|
-
|
|
1857
|
-
|
|
1858
|
-
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
<div class="method-source-code"
|
|
1862
|
-
id="read-ndented-tring-source">
|
|
1863
|
-
<pre>
|
|
1864
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 698</span>
|
|
1865
|
-
698: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readIndentedString</span>
|
|
1866
|
-
699: <span class="ruby-identifier">state</span> = <span class="ruby-value">0</span>
|
|
1867
|
-
700: <span class="ruby-identifier">indent</span> = <span class="ruby-value str">''</span>
|
|
1868
|
-
701: <span class="ruby-identifier">token</span> = <span class="ruby-value str">''</span>
|
|
1869
|
-
702: <span class="ruby-keyword kw">while</span> <span class="ruby-keyword kw">true</span>
|
|
1870
|
-
703: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">state</span>
|
|
1871
|
-
704: <span class="ruby-keyword kw">when</span> <span class="ruby-value">0</span> <span class="ruby-comment cmt"># Determining indent</span>
|
|
1872
|
-
705: <span class="ruby-comment cmt"># Skip trailing spaces and tabs.</span>
|
|
1873
|
-
706: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\t"</span> <span class="ruby-keyword kw">do</span>
|
|
1874
|
-
707: <span class="ruby-comment cmt"># empty on purpose</span>
|
|
1875
|
-
708: <span class="ruby-keyword kw">end</span>
|
|
1876
|
-
709: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">"\n"</span>
|
|
1877
|
-
710: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'junk_after_cut'</span>,
|
|
1878
|
-
711: <span class="ruby-value str">'The cut mark -8<- must be immediately followed by a '</span> <span class="ruby-operator">+</span>
|
|
1879
|
-
712: <span class="ruby-value str">'line break.'</span>)
|
|
1880
|
-
713: <span class="ruby-keyword kw">end</span>
|
|
1881
|
-
714: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\t"</span>
|
|
1882
|
-
715: <span class="ruby-identifier">indent</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1883
|
-
716: <span class="ruby-keyword kw">end</span>
|
|
1884
|
-
717: <span class="ruby-ivar">@startOfToken</span> = <span class="ruby-constant">SourceFileInfo</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-identifier">lineNo</span>, <span class="ruby-identifier">columnNo</span>)
|
|
1885
|
-
718: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1886
|
-
719: <span class="ruby-identifier">state</span> = <span class="ruby-value">1</span>
|
|
1887
|
-
720: <span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># reading '-' or first content line character</span>
|
|
1888
|
-
721: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span>
|
|
1889
|
-
722: <span class="ruby-identifier">state</span> = <span class="ruby-value">3</span>
|
|
1890
|
-
723: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
|
|
1891
|
-
724: <span class="ruby-identifier">errorEOF</span>(<span class="ruby-value">1</span>, <span class="ruby-identifier">token</span>)
|
|
1892
|
-
725: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
1893
|
-
726: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1894
|
-
727: <span class="ruby-identifier">state</span> = <span class="ruby-value">6</span>
|
|
1895
|
-
728: <span class="ruby-keyword kw">else</span>
|
|
1896
|
-
729: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1897
|
-
730: <span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
1898
|
-
731: <span class="ruby-keyword kw">end</span>
|
|
1899
|
-
732: <span class="ruby-keyword kw">when</span> <span class="ruby-value">2</span> <span class="ruby-comment cmt"># reading content line</span>
|
|
1900
|
-
733: <span class="ruby-comment cmt"># The '->8-' is only valid if no other content preceded it on this</span>
|
|
1901
|
-
734: <span class="ruby-comment cmt"># line.</span>
|
|
1902
|
-
735: <span class="ruby-identifier">onlyBlanks</span> = <span class="ruby-keyword kw">true</span>
|
|
1903
|
-
736: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">!=</span> <span class="ruby-value str">"\n"</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span>(<span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">onlyBlanks</span>)
|
|
1904
|
-
737: <span class="ruby-identifier">onlyBlanks</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">' '</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">"\t"</span>
|
|
1905
|
-
738: <span class="ruby-identifier">errorEOF</span>(<span class="ruby-value">2</span>, <span class="ruby-identifier">token</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
|
|
1906
|
-
739: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1907
|
-
740: <span class="ruby-keyword kw">end</span>
|
|
1908
|
-
741: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span>
|
|
1909
|
-
742: <span class="ruby-comment cmt"># we may have found the start of '->8-'</span>
|
|
1910
|
-
743: <span class="ruby-identifier">state</span> = <span class="ruby-value">3</span>
|
|
1911
|
-
744: <span class="ruby-keyword kw">else</span>
|
|
1912
|
-
745: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1913
|
-
746: <span class="ruby-identifier">state</span> = <span class="ruby-value">6</span>
|
|
1914
|
-
747: <span class="ruby-keyword kw">end</span>
|
|
1915
|
-
748: <span class="ruby-keyword kw">when</span> <span class="ruby-value">3</span> <span class="ruby-comment cmt"># reading '>' of '->8-'</span>
|
|
1916
|
-
749: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'>'</span>
|
|
1917
|
-
750: <span class="ruby-identifier">state</span> = <span class="ruby-value">4</span>
|
|
1918
|
-
751: <span class="ruby-keyword kw">else</span>
|
|
1919
|
-
752: <span class="ruby-identifier">errorEOF</span>(<span class="ruby-value">3</span>, <span class="ruby-identifier">token</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
|
|
1920
|
-
753: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'-'</span>
|
|
1921
|
-
754: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1922
|
-
755: <span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
1923
|
-
756: <span class="ruby-keyword kw">end</span>
|
|
1924
|
-
757: <span class="ruby-keyword kw">when</span> <span class="ruby-value">4</span> <span class="ruby-comment cmt"># reading '8' of '->8-'</span>
|
|
1925
|
-
758: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'8'</span>
|
|
1926
|
-
759: <span class="ruby-identifier">state</span> = <span class="ruby-value">5</span>
|
|
1927
|
-
760: <span class="ruby-keyword kw">else</span>
|
|
1928
|
-
761: <span class="ruby-identifier">errorEOF</span>(<span class="ruby-value">4</span>, <span class="ruby-identifier">token</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
|
|
1929
|
-
762: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1930
|
-
763: <span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
1931
|
-
764: <span class="ruby-keyword kw">end</span>
|
|
1932
|
-
765: <span class="ruby-keyword kw">when</span> <span class="ruby-value">5</span> <span class="ruby-comment cmt"># reading '-' of '->8-'</span>
|
|
1933
|
-
766: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span>
|
|
1934
|
-
767: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'STRING'</span>, <span class="ruby-identifier">token</span> ]
|
|
1935
|
-
768: <span class="ruby-keyword kw">else</span>
|
|
1936
|
-
769: <span class="ruby-identifier">errorEOF</span>(<span class="ruby-value">5</span>, <span class="ruby-identifier">token</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>.<span class="ruby-identifier">nil?</span>
|
|
1937
|
-
770: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1938
|
-
771: <span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
1939
|
-
772: <span class="ruby-keyword kw">end</span>
|
|
1940
|
-
773: <span class="ruby-keyword kw">when</span> <span class="ruby-value">6</span> <span class="ruby-comment cmt"># reading indentation</span>
|
|
1941
|
-
774: <span class="ruby-identifier">state</span> = <span class="ruby-value">1</span>
|
|
1942
|
-
775: <span class="ruby-identifier">indent</span>.<span class="ruby-identifier">each_utf8_char</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ci</span><span class="ruby-operator">|</span>
|
|
1943
|
-
776: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ci</span> <span class="ruby-operator">!=</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
|
|
1944
|
-
777: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span>
|
|
1945
|
-
778: <span class="ruby-identifier">state</span> = <span class="ruby-value">3</span>
|
|
1946
|
-
779: <span class="ruby-keyword kw">break</span>
|
|
1947
|
-
780: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
1948
|
-
781: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
1949
|
-
782: <span class="ruby-keyword kw">break</span>
|
|
1950
|
-
783: <span class="ruby-keyword kw">else</span>
|
|
1951
|
-
784: <span class="ruby-identifier">warning</span>(<span class="ruby-value str">'bad_indent'</span>,
|
|
1952
|
-
785: <span class="ruby-value str">"Not all lines of string have same indentation. "</span> <span class="ruby-operator">+</span>
|
|
1953
|
-
786: <span class="ruby-value str">"The first line of the string determines the "</span> <span class="ruby-operator">+</span>
|
|
1954
|
-
787: <span class="ruby-value str">"indentation for all subsequent lines of the same "</span> <span class="ruby-operator">+</span>
|
|
1955
|
-
788: <span class="ruby-value str">"string."</span>)
|
|
1956
|
-
789: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1957
|
-
790: <span class="ruby-identifier">state</span> = <span class="ruby-value">2</span>
|
|
1958
|
-
791: <span class="ruby-keyword kw">break</span>
|
|
1959
|
-
792: <span class="ruby-keyword kw">end</span>
|
|
1960
|
-
793: <span class="ruby-keyword kw">end</span>
|
|
1961
|
-
794: <span class="ruby-keyword kw">end</span>
|
|
1962
|
-
795: <span class="ruby-keyword kw">else</span>
|
|
1963
|
-
796: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"State machine error"</span>
|
|
1964
|
-
797: <span class="ruby-keyword kw">end</span>
|
|
1965
|
-
798: <span class="ruby-keyword kw">end</span>
|
|
1966
|
-
799: <span class="ruby-keyword kw">end</span>
|
|
1967
|
-
800:
|
|
1968
|
-
801: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readId</span>(<span class="ruby-identifier">c</span>)
|
|
1969
|
-
802: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
1970
|
-
803: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1971
|
-
804: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&&</span>
|
|
1972
|
-
805: ((<span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span>
|
|
1973
|
-
806: <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'_'</span>)
|
|
1974
|
-
807: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1975
|
-
808: <span class="ruby-keyword kw">end</span>
|
|
1976
|
-
809: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">':'</span>
|
|
1977
|
-
810: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'ID_WITH_COLON'</span>, <span class="ruby-identifier">token</span> ]
|
|
1978
|
-
811: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
1979
|
-
812: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
1980
|
-
813: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
|
1981
|
-
814: <span class="ruby-identifier">token</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">readIdentifier</span>
|
|
1982
|
-
815: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">!=</span> <span class="ruby-value str">'.'</span>
|
|
1983
|
-
816: <span class="ruby-identifier">token</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">'.'</span>
|
|
1984
|
-
817: <span class="ruby-keyword kw">end</span>
|
|
1985
|
-
818: <span class="ruby-identifier">returnChar</span> <span class="ruby-identifier">c</span>
|
|
1986
|
-
819:
|
|
1987
|
-
820: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'ABSOLUTE_ID'</span>, <span class="ruby-identifier">token</span> ]
|
|
1988
|
-
821: <span class="ruby-keyword kw">else</span>
|
|
1989
|
-
822: <span class="ruby-identifier">returnChar</span> <span class="ruby-identifier">c</span>
|
|
1990
|
-
823: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'ID'</span>, <span class="ruby-identifier">token</span> ]
|
|
1991
|
-
824: <span class="ruby-keyword kw">end</span>
|
|
1992
|
-
825: <span class="ruby-keyword kw">end</span>
|
|
1993
|
-
826:
|
|
1994
|
-
827: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readMacro</span>
|
|
1995
|
-
828: <span class="ruby-comment cmt"># We can deal with ']' inside of the macro as long as each ']' is</span>
|
|
1996
|
-
829: <span class="ruby-comment cmt"># preceeded by a corresponding '['.</span>
|
|
1997
|
-
830: <span class="ruby-identifier">token</span> = <span class="ruby-value str">''</span>
|
|
1998
|
-
831: <span class="ruby-identifier">bracketLevel</span> = <span class="ruby-value">1</span>
|
|
1999
|
-
832: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
2000
|
-
833: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextCharI</span>)
|
|
2001
|
-
834: <span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span>
|
|
2002
|
-
835: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unterminated_macro'</span>, <span class="ruby-node">"Unterminated macro #{token}"</span>)
|
|
2003
|
-
836: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'['</span>
|
|
2004
|
-
837: <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
2005
|
-
838: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">']'</span>
|
|
2006
|
-
839: <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
|
2007
|
-
840: <span class="ruby-keyword kw">end</span>
|
|
2008
|
-
841: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
2009
|
-
842: <span class="ruby-keyword kw">end</span>
|
|
2010
|
-
843: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'MACRO'</span>, <span class="ruby-identifier">token</span> ]
|
|
2011
|
-
844: <span class="ruby-keyword kw">end</span>
|
|
2012
|
-
845:
|
|
2013
|
-
846: <span class="ruby-comment cmt"># Read operators of logical expressions.</span>
|
|
2014
|
-
847: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readOperator</span>(<span class="ruby-identifier">c</span>)
|
|
2015
|
-
848: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">c</span>
|
|
2016
|
-
849: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'='</span>
|
|
2017
|
-
850: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'='</span> ]
|
|
2018
|
-
851: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'>'</span>
|
|
2019
|
-
852: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'>='</span> ] <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span>
|
|
2020
|
-
853: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2021
|
-
854: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'>'</span> ]
|
|
2022
|
-
855: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'<'</span>
|
|
2023
|
-
856: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'<='</span> ] <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span>
|
|
2024
|
-
857: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2025
|
-
858: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'<'</span> ]
|
|
2026
|
-
859: <span class="ruby-keyword kw">else</span>
|
|
2027
|
-
860: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unsupported operator #{c}"</span>
|
|
2028
|
-
861: <span class="ruby-keyword kw">end</span>
|
|
2029
|
-
862: <span class="ruby-keyword kw">end</span>
|
|
2030
|
-
863:
|
|
2031
|
-
864: <span class="ruby-comment cmt"># Read only decimal digits and return the result als Fixnum.</span>
|
|
2032
|
-
865: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readDigits</span>
|
|
2033
|
-
866: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
2034
|
-
867: <span class="ruby-keyword kw">while</span> (<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
|
|
2035
|
-
868: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
2036
|
-
869: <span class="ruby-keyword kw">end</span>
|
|
2037
|
-
870: <span class="ruby-comment cmt"># Make sure that we have read at least one digit.</span>
|
|
2038
|
-
871: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">""</span>
|
|
2039
|
-
872: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Digit (0 - 9) expected"</span>
|
|
2040
|
-
873: <span class="ruby-keyword kw">end</span>
|
|
2041
|
-
874: <span class="ruby-comment cmt"># Push back the non-digit that terminated the digits.</span>
|
|
2042
|
-
875: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2043
|
-
876: <span class="ruby-identifier">token</span>
|
|
2044
|
-
877: <span class="ruby-keyword kw">end</span>
|
|
2045
|
-
878:
|
|
2046
|
-
879: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readIdentifier</span>(<span class="ruby-identifier">noDigit</span> = <span class="ruby-keyword kw">true</span>)
|
|
2047
|
-
880: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
2048
|
-
881: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&&</span>
|
|
2049
|
-
882: ((<span class="ruby-value str">'a'</span><span class="ruby-operator">..</span><span class="ruby-value str">'z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span> (<span class="ruby-value str">'A'</span><span class="ruby-operator">..</span><span class="ruby-value str">'Z'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">||</span>
|
|
2050
|
-
883: (<span class="ruby-operator">!</span><span class="ruby-identifier">noDigit</span> <span class="ruby-operator">&&</span> ((<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> <span class="ruby-identifier">c</span>)) <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'_'</span>)
|
|
2051
|
-
884: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
2052
|
-
885: <span class="ruby-identifier">noDigit</span> = <span class="ruby-keyword kw">false</span>
|
|
2053
|
-
886: <span class="ruby-keyword kw">end</span>
|
|
2054
|
-
887: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2055
|
-
888: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span> <span class="ruby-operator">==</span> <span class="ruby-value str">""</span>
|
|
2056
|
-
889: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Identifier expected"</span>
|
|
2057
|
-
890: <span class="ruby-keyword kw">end</span>
|
|
2058
|
-
891: <span class="ruby-identifier">token</span>
|
|
2059
|
-
892: <span class="ruby-keyword kw">end</span>
|
|
2060
|
-
893:
|
|
2061
|
-
894: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">errorEOF</span>(<span class="ruby-identifier">no</span>, <span class="ruby-identifier">token</span>)
|
|
2062
|
-
895: <span class="ruby-identifier">error</span>(<span class="ruby-node">"eof_in_istring#{no}"</span>,
|
|
2063
|
-
896: <span class="ruby-node">"Unexpected end of file in string '#{token[0,20]}...'"</span> <span class="ruby-operator">+</span>
|
|
2064
|
-
897: <span class="ruby-node">"starting in line #{@startOfToken.lineNo}."</span>)
|
|
2065
|
-
898: <span class="ruby-keyword kw">end</span>
|
|
2066
|
-
899:
|
|
2067
|
-
900: <span class="ruby-keyword kw">end</span></pre>
|
|
2068
|
-
</div>
|
|
2069
|
-
|
|
2070
|
-
</div>
|
|
2071
|
-
|
|
2072
|
-
|
|
2073
|
-
|
|
2074
|
-
|
|
2075
|
-
</div>
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
<div id="read-acro-method" class="method-detail ">
|
|
2079
|
-
<a name="M001157"></a>
|
|
2080
|
-
|
|
2081
|
-
<div class="method-heading">
|
|
2082
|
-
|
|
2083
|
-
<span class="method-name">readMacro</span><span
|
|
2084
|
-
class="method-args">()</span>
|
|
2085
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
2086
|
-
|
|
2087
|
-
</div>
|
|
2088
|
-
|
|
2089
|
-
<div class="method-description">
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
<div class="method-source-code"
|
|
2096
|
-
id="read-acro-source">
|
|
2097
|
-
<pre>
|
|
2098
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 827</span>
|
|
2099
|
-
827: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readMacro</span>
|
|
2100
|
-
828: <span class="ruby-comment cmt"># We can deal with ']' inside of the macro as long as each ']' is</span>
|
|
2101
|
-
829: <span class="ruby-comment cmt"># preceeded by a corresponding '['.</span>
|
|
2102
|
-
830: <span class="ruby-identifier">token</span> = <span class="ruby-value str">''</span>
|
|
2103
|
-
831: <span class="ruby-identifier">bracketLevel</span> = <span class="ruby-value">1</span>
|
|
2104
|
-
832: <span class="ruby-keyword kw">while</span> <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
2105
|
-
833: <span class="ruby-keyword kw">case</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextCharI</span>)
|
|
2106
|
-
834: <span class="ruby-keyword kw">when</span> <span class="ruby-keyword kw">nil</span>
|
|
2107
|
-
835: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unterminated_macro'</span>, <span class="ruby-node">"Unterminated macro #{token}"</span>)
|
|
2108
|
-
836: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'['</span>
|
|
2109
|
-
837: <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
2110
|
-
838: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">']'</span>
|
|
2111
|
-
839: <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span>
|
|
2112
|
-
840: <span class="ruby-keyword kw">end</span>
|
|
2113
|
-
841: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">bracketLevel</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
2114
|
-
842: <span class="ruby-keyword kw">end</span>
|
|
2115
|
-
843: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'MACRO'</span>, <span class="ruby-identifier">token</span> ]
|
|
2116
|
-
844: <span class="ruby-keyword kw">end</span></pre>
|
|
2117
|
-
</div>
|
|
2118
|
-
|
|
2119
|
-
</div>
|
|
2120
|
-
|
|
2121
|
-
|
|
2122
|
-
|
|
2123
|
-
|
|
2124
|
-
</div>
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
<div id="read-umber-method" class="method-detail ">
|
|
2128
|
-
<a name="M001152"></a>
|
|
2129
|
-
|
|
2130
|
-
<div class="method-heading">
|
|
2131
|
-
|
|
2132
|
-
<span class="method-name">readNumber</span><span
|
|
2133
|
-
class="method-args">(c)</span>
|
|
2134
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
2135
|
-
|
|
2136
|
-
</div>
|
|
2137
|
-
|
|
2138
|
-
<div class="method-description">
|
|
2139
|
-
|
|
2140
|
-
|
|
2141
|
-
|
|
2142
|
-
|
|
2143
|
-
|
|
2144
|
-
<div class="method-source-code"
|
|
2145
|
-
id="read-umber-source">
|
|
2146
|
-
<pre>
|
|
2147
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 564</span>
|
|
2148
|
-
564: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readNumber</span>(<span class="ruby-identifier">c</span>)
|
|
2149
|
-
565: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
2150
|
-
566: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
2151
|
-
567: <span class="ruby-keyword kw">while</span> (<span class="ruby-value str">'0'</span><span class="ruby-operator">..</span><span class="ruby-value str">'9'</span>) <span class="ruby-operator">===</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>)
|
|
2152
|
-
568: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
2153
|
-
569: <span class="ruby-keyword kw">end</span>
|
|
2154
|
-
570: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span>
|
|
2155
|
-
571: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">readDate</span>(<span class="ruby-identifier">token</span>)
|
|
2156
|
-
572: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
2157
|
-
573: <span class="ruby-identifier">frac</span> = <span class="ruby-identifier">readDigits</span>
|
|
2158
|
-
574:
|
|
2159
|
-
575: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'FLOAT'</span>, <span class="ruby-identifier">token</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">frac</span>.<span class="ruby-identifier">to_f</span> <span class="ruby-operator">/</span> (<span class="ruby-value">10.0</span> <span class="ruby-operator">**</span> <span class="ruby-identifier">frac</span>.<span class="ruby-identifier">length</span>) ]
|
|
2160
|
-
576: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">':'</span>
|
|
2161
|
-
577: <span class="ruby-identifier">hours</span> = <span class="ruby-identifier">token</span>.<span class="ruby-identifier">to_i</span>
|
|
2162
|
-
578: <span class="ruby-identifier">mins</span> = <span class="ruby-identifier">readDigits</span>.<span class="ruby-identifier">to_i</span>
|
|
2163
|
-
579: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hours</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">hours</span> <span class="ruby-operator">></span> <span class="ruby-value">24</span>
|
|
2164
|
-
580: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Hour must be between 0 and 23"</span>
|
|
2165
|
-
581: <span class="ruby-keyword kw">end</span>
|
|
2166
|
-
582: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">mins</span> <span class="ruby-operator"><</span> <span class="ruby-value">0</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">mins</span> <span class="ruby-operator">></span> <span class="ruby-value">59</span>
|
|
2167
|
-
583: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Minutes must be between 0 and 59"</span>
|
|
2168
|
-
584: <span class="ruby-keyword kw">end</span>
|
|
2169
|
-
585: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">hours</span> <span class="ruby-operator">==</span> <span class="ruby-value">24</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">mins</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
|
|
2170
|
-
586: <span class="ruby-identifier">raise</span> <span class="ruby-constant">TjException</span>.<span class="ruby-identifier">new</span>, <span class="ruby-value str">"Time may not be larger than 24:00"</span>
|
|
2171
|
-
587: <span class="ruby-keyword kw">end</span>
|
|
2172
|
-
588:
|
|
2173
|
-
589: <span class="ruby-comment cmt"># Return time as seconds of day since midnight.</span>
|
|
2174
|
-
590: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'TIME'</span>, <span class="ruby-identifier">hours</span> * <span class="ruby-value">60</span> * <span class="ruby-value">60</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">mins</span> * <span class="ruby-value">60</span> ]
|
|
2175
|
-
591: <span class="ruby-keyword kw">else</span>
|
|
2176
|
-
592: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2177
|
-
593: <span class="ruby-keyword kw">end</span>
|
|
2178
|
-
594:
|
|
2179
|
-
595: [ <span class="ruby-value str">'INTEGER'</span>, <span class="ruby-identifier">token</span>.<span class="ruby-identifier">to_i</span> ]
|
|
2180
|
-
596: <span class="ruby-keyword kw">end</span></pre>
|
|
2181
|
-
</div>
|
|
2182
|
-
|
|
2183
|
-
</div>
|
|
2184
|
-
|
|
2185
|
-
|
|
2186
|
-
|
|
2187
|
-
|
|
2188
|
-
</div>
|
|
2189
|
-
|
|
2190
|
-
|
|
2191
|
-
<div id="read-perator-method" class="method-detail ">
|
|
2192
|
-
<a name="M001158"></a>
|
|
2193
|
-
|
|
2194
|
-
<div class="method-heading">
|
|
2195
|
-
|
|
2196
|
-
<span class="method-name">readOperator</span><span
|
|
2197
|
-
class="method-args">(c)</span>
|
|
2198
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
2199
|
-
|
|
2200
|
-
</div>
|
|
2201
|
-
|
|
2202
|
-
<div class="method-description">
|
|
2203
|
-
|
|
2204
|
-
<p>
|
|
2205
|
-
Read operators of logical expressions.
|
|
2206
|
-
</p>
|
|
2207
|
-
|
|
2208
|
-
|
|
2209
|
-
|
|
2210
|
-
<div class="method-source-code"
|
|
2211
|
-
id="read-perator-source">
|
|
2212
|
-
<pre>
|
|
2213
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 847</span>
|
|
2214
|
-
847: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readOperator</span>(<span class="ruby-identifier">c</span>)
|
|
2215
|
-
848: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">c</span>
|
|
2216
|
-
849: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'='</span>
|
|
2217
|
-
850: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'='</span> ]
|
|
2218
|
-
851: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'>'</span>
|
|
2219
|
-
852: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'>='</span> ] <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span>
|
|
2220
|
-
853: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2221
|
-
854: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'>'</span> ]
|
|
2222
|
-
855: <span class="ruby-keyword kw">when</span> <span class="ruby-value str">'<'</span>
|
|
2223
|
-
856: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'<='</span> ] <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'='</span>
|
|
2224
|
-
857: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2225
|
-
858: <span class="ruby-keyword kw">return</span> [ <span class="ruby-value str">'LITERAL'</span>, <span class="ruby-value str">'<'</span> ]
|
|
2226
|
-
859: <span class="ruby-keyword kw">else</span>
|
|
2227
|
-
860: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unsupported operator #{c}"</span>
|
|
2228
|
-
861: <span class="ruby-keyword kw">end</span>
|
|
2229
|
-
862: <span class="ruby-keyword kw">end</span></pre>
|
|
2230
|
-
</div>
|
|
2231
|
-
|
|
2232
|
-
</div>
|
|
2233
|
-
|
|
2234
|
-
|
|
2235
|
-
|
|
2236
|
-
|
|
2237
|
-
</div>
|
|
2238
|
-
|
|
2239
|
-
|
|
2240
|
-
<div id="read-tring-method" class="method-detail ">
|
|
2241
|
-
<a name="M001154"></a>
|
|
2242
|
-
|
|
2243
|
-
<div class="method-heading">
|
|
2244
|
-
|
|
2245
|
-
<span class="method-name">readString</span><span
|
|
2246
|
-
class="method-args">(terminator)</span>
|
|
2247
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
2248
|
-
|
|
2249
|
-
</div>
|
|
2250
|
-
|
|
2251
|
-
<div class="method-description">
|
|
2252
|
-
|
|
2253
|
-
|
|
2254
|
-
|
|
2255
|
-
|
|
2256
|
-
|
|
2257
|
-
<div class="method-source-code"
|
|
2258
|
-
id="read-tring-source">
|
|
2259
|
-
<pre>
|
|
2260
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 682</span>
|
|
2261
|
-
682: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readString</span>(<span class="ruby-identifier">terminator</span>)
|
|
2262
|
-
683: <span class="ruby-identifier">token</span> = <span class="ruby-value str">""</span>
|
|
2263
|
-
684: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">terminator</span>
|
|
2264
|
-
685: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\\"</span>
|
|
2265
|
-
686: <span class="ruby-comment cmt"># Terminators can be used as regular characters when prefixed by a \.</span>
|
|
2266
|
-
687: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-identifier">terminator</span>
|
|
2267
|
-
688: <span class="ruby-comment cmt"># \ followed by non-terminator. Just add both.</span>
|
|
2268
|
-
689: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"\\"</span>
|
|
2269
|
-
690: <span class="ruby-keyword kw">end</span>
|
|
2270
|
-
691: <span class="ruby-keyword kw">end</span>
|
|
2271
|
-
692: <span class="ruby-identifier">token</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
2272
|
-
693: <span class="ruby-keyword kw">end</span>
|
|
2273
|
-
694:
|
|
2274
|
-
695: [ <span class="ruby-value str">'STRING'</span>, <span class="ruby-identifier">token</span> ]
|
|
2275
|
-
696: <span class="ruby-keyword kw">end</span></pre>
|
|
2276
|
-
</div>
|
|
2277
|
-
|
|
2278
|
-
</div>
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2283
|
-
</div>
|
|
2284
|
-
|
|
2285
|
-
|
|
2286
|
-
<div id="return-har-method" class="method-detail ">
|
|
2287
|
-
<a name="M001147"></a>
|
|
2288
|
-
|
|
2289
|
-
<div class="method-heading">
|
|
2290
|
-
|
|
2291
|
-
<span class="method-name">returnChar</span><span
|
|
2292
|
-
class="method-args">(c)</span>
|
|
2293
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
2294
|
-
|
|
2295
|
-
</div>
|
|
2296
|
-
|
|
2297
|
-
<div class="method-description">
|
|
2298
|
-
|
|
2299
|
-
|
|
2300
|
-
|
|
2301
|
-
|
|
2302
|
-
|
|
2303
|
-
<div class="method-source-code"
|
|
2304
|
-
id="return-har-source">
|
|
2305
|
-
<pre>
|
|
2306
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 490</span>
|
|
2307
|
-
490: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2308
|
-
491: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">nil?</span>
|
|
2309
|
-
492:
|
|
2310
|
-
493: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">line</span>.<span class="ruby-identifier">chop!</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span>
|
|
2311
|
-
494: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
2312
|
-
495: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">lineNo</span> <span class="ruby-operator">-=</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span> <span class="ruby-operator">&&</span> <span class="ruby-ivar">@macroStack</span>.<span class="ruby-identifier">empty?</span>
|
|
2313
|
-
496: <span class="ruby-keyword kw">end</span></pre>
|
|
2314
|
-
</div>
|
|
2315
|
-
|
|
2316
|
-
</div>
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
</div>
|
|
2322
|
-
|
|
2323
|
-
|
|
2324
|
-
<div id="skip-lus-lus-omments-method" class="method-detail ">
|
|
2325
|
-
<a name="M001149"></a>
|
|
2326
|
-
|
|
2327
|
-
<div class="method-heading">
|
|
2328
|
-
|
|
2329
|
-
<span class="method-name">skipCPlusPlusComments</span><span
|
|
2330
|
-
class="method-args">()</span>
|
|
2331
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
2332
|
-
|
|
2333
|
-
</div>
|
|
2334
|
-
|
|
2335
|
-
<div class="method-description">
|
|
2336
|
-
|
|
2337
|
-
|
|
2338
|
-
|
|
2339
|
-
|
|
2340
|
-
|
|
2341
|
-
<div class="method-source-code"
|
|
2342
|
-
id="skip-lus-lus-omments-source">
|
|
2343
|
-
<pre>
|
|
2344
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 507</span>
|
|
2345
|
-
507: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">skipCPlusPlusComments</span>
|
|
2346
|
-
508: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'*'</span>
|
|
2347
|
-
509: <span class="ruby-comment cmt"># /* */ style multi-line comment</span>
|
|
2348
|
-
510: <span class="ruby-ivar">@ignoreMacros</span> = <span class="ruby-keyword kw">true</span>
|
|
2349
|
-
511: <span class="ruby-keyword kw">begin</span>
|
|
2350
|
-
512: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">!=</span> <span class="ruby-value str">'*'</span>
|
|
2351
|
-
513: <span class="ruby-keyword kw">end</span>
|
|
2352
|
-
514: <span class="ruby-keyword kw">end</span> <span class="ruby-keyword kw">until</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'/'</span>
|
|
2353
|
-
515: <span class="ruby-ivar">@ignoreMacros</span> = <span class="ruby-keyword kw">false</span>
|
|
2354
|
-
516: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'/'</span>
|
|
2355
|
-
517: <span class="ruby-comment cmt"># // style single line comment</span>
|
|
2356
|
-
518: <span class="ruby-identifier">skipComment</span>
|
|
2357
|
-
519: <span class="ruby-keyword kw">else</span>
|
|
2358
|
-
520: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'bad_comment'</span>, <span class="ruby-value str">"'/' or '*' expected after start of comment"</span>)
|
|
2359
|
-
521: <span class="ruby-keyword kw">end</span>
|
|
2360
|
-
522: <span class="ruby-keyword kw">end</span></pre>
|
|
2361
|
-
</div>
|
|
2362
|
-
|
|
2363
|
-
</div>
|
|
2364
|
-
|
|
2365
|
-
|
|
2366
|
-
|
|
2367
|
-
|
|
2368
|
-
</div>
|
|
2369
|
-
|
|
2370
|
-
|
|
2371
|
-
<div id="skip-omment-method" class="method-detail ">
|
|
2372
|
-
<a name="M001148"></a>
|
|
2373
|
-
|
|
2374
|
-
<div class="method-heading">
|
|
2375
|
-
|
|
2376
|
-
<span class="method-name">skipComment</span><span
|
|
2377
|
-
class="method-args">()</span>
|
|
2378
|
-
<span class="method-click-advice">click to toggle source</span>
|
|
2379
|
-
|
|
2380
|
-
</div>
|
|
2381
|
-
|
|
2382
|
-
<div class="method-description">
|
|
2383
|
-
|
|
2384
|
-
|
|
2385
|
-
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
<div class="method-source-code"
|
|
2389
|
-
id="skip-omment-source">
|
|
1390
|
+
id="warning-source">
|
|
2390
1391
|
<pre>
|
|
2391
|
-
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
501: <span class="ruby-keyword kw">while</span> (<span class="ruby-identifier">c</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">&&</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">!=</span> <span class="ruby-value str">"\n"</span>
|
|
2396
|
-
502: <span class="ruby-keyword kw">end</span>
|
|
2397
|
-
503: <span class="ruby-ivar">@ignoreMacros</span> = <span class="ruby-keyword kw">false</span>
|
|
2398
|
-
504: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c</span>)
|
|
2399
|
-
505: <span class="ruby-keyword kw">end</span></pre>
|
|
1392
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 453</span>
|
|
1393
|
+
453: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">property</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">sfi</span> = <span class="ruby-keyword kw">nil</span>)
|
|
1394
|
+
454: <span class="ruby-identifier">message</span>(<span class="ruby-value str">'warning'</span>, <span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">property</span>, <span class="ruby-identifier">sfi</span>)
|
|
1395
|
+
455: <span class="ruby-keyword kw">end</span></pre>
|
|
2400
1396
|
</div>
|
|
2401
1397
|
|
|
2402
1398
|
</div>
|