taskjuggler 0.0.4 → 0.0.5
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/README +1 -1
- data/bin/tj3client +3 -0
- data/bin/tj3d +3 -0
- data/bin/tj3ts_receiver +3 -0
- data/bin/tj3ts_sender +3 -0
- data/bin/tj3ts_summary +3 -0
- data/data/css/tjmanual.css +14 -0
- data/data/css/tjreport.css +233 -21
- data/data/scripts/wz_tooltip.js +20 -20
- data/doc/AppConfig.html +1389 -0
- data/doc/Arguments.html +678 -0
- data/doc/COPYING.html +837 -0
- data/doc/Object.html +996 -0
- data/doc/README.html +523 -0
- data/doc/RuntimeConfig.html +762 -0
- data/doc/String.html +872 -0
- data/doc/TaskJuggler/Account.html +691 -0
- data/doc/TaskJuggler/AccountAttribute.html +707 -0
- data/doc/TaskJuggler/AccountScenario.html +650 -0
- data/doc/TaskJuggler/Allocation.html +898 -0
- data/doc/TaskJuggler/AllocationAttribute.html +737 -0
- data/doc/TaskJuggler/AttributeBase.html +1193 -0
- data/doc/TaskJuggler/AttributeDefinition.html +753 -0
- data/doc/TaskJuggler/BatchProcessor.html +1112 -0
- data/doc/TaskJuggler/Booking.html +797 -0
- data/doc/TaskJuggler/BookingListAttribute.html +709 -0
- data/doc/TaskJuggler/BooleanAttribute.html +707 -0
- data/doc/TaskJuggler/CSVFile.html +924 -0
- data/doc/TaskJuggler/CellSettingPattern.html +638 -0
- data/doc/TaskJuggler/CellSettingPatternList.html +687 -0
- data/doc/TaskJuggler/Charge.html +715 -0
- data/doc/TaskJuggler/ChargeListAttribute.html +671 -0
- data/doc/TaskJuggler/ChargeSet.html +887 -0
- data/doc/TaskJuggler/ChargeSetListAttribute.html +718 -0
- data/doc/TaskJuggler/ColumnListAttribute.html +673 -0
- data/doc/TaskJuggler/ColumnTable.html +701 -0
- data/doc/TaskJuggler/Daemon.html +728 -0
- data/doc/TaskJuggler/DateAttribute.html +675 -0
- data/doc/TaskJuggler/DefinitionListAttribute.html +593 -0
- data/doc/TaskJuggler/DependencyListAttribute.html +713 -0
- data/doc/TaskJuggler/DurationAttribute.html +707 -0
- data/doc/TaskJuggler/FixnumAttribute.html +629 -0
- data/doc/TaskJuggler/FlagListAttribute.html +709 -0
- data/doc/TaskJuggler/FloatAttribute.html +671 -0
- data/doc/TaskJuggler/FormatListAttribute.html +635 -0
- data/doc/TaskJuggler/GanttChart.html +1473 -0
- data/doc/TaskJuggler/GanttContainer.html +885 -0
- data/doc/TaskJuggler/GanttHeader.html +886 -0
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +700 -0
- data/doc/TaskJuggler/GanttLine.html +1263 -0
- data/doc/TaskJuggler/GanttLoadStack.html +766 -0
- data/doc/TaskJuggler/GanttMilestone.html +865 -0
- data/doc/TaskJuggler/GanttRouter.html +1433 -0
- data/doc/TaskJuggler/GanttTaskBar.html +880 -0
- data/doc/TaskJuggler/HTMLDocument.html +719 -0
- data/doc/TaskJuggler/HTMLGraphics.html +775 -0
- data/doc/TaskJuggler/Interval.html +1016 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +713 -0
- data/doc/TaskJuggler/JobInfo.html +881 -0
- data/doc/TaskJuggler/Journal.html +991 -0
- data/doc/TaskJuggler/JournalEntry.html +779 -0
- data/doc/TaskJuggler/JournalEntryList.html +952 -0
- data/doc/TaskJuggler/KeywordArray.html +628 -0
- data/doc/TaskJuggler/KeywordDocumentation.html +1662 -0
- data/doc/TaskJuggler/Limits/Limit.html +826 -0
- data/doc/TaskJuggler/Limits.html +966 -0
- data/doc/TaskJuggler/LimitsAttribute.html +707 -0
- data/doc/TaskJuggler/ListAttributeBase.html +641 -0
- data/doc/TaskJuggler/Log.html +1103 -0
- data/doc/TaskJuggler/LogFile.html +918 -0
- data/doc/TaskJuggler/LogicalAttribute.html +698 -0
- data/doc/TaskJuggler/LogicalExpression.html +739 -0
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +629 -0
- data/doc/TaskJuggler/LogicalFlag.html +681 -0
- data/doc/TaskJuggler/LogicalFunction.html +1218 -0
- data/doc/TaskJuggler/LogicalOperation.html +1078 -0
- data/doc/TaskJuggler/Macro.html +646 -0
- data/doc/TaskJuggler/MacroParser.html +810 -0
- data/doc/TaskJuggler/MacroTable.html +810 -0
- data/doc/TaskJuggler/ManagerResponsibilities.html +674 -0
- data/doc/TaskJuggler/ManagerStatusRecord.html +678 -0
- data/doc/TaskJuggler/Message.html +757 -0
- data/doc/TaskJuggler/MessageHandler.html +679 -0
- data/doc/TaskJuggler/Navigator.html +867 -0
- data/doc/TaskJuggler/NavigatorElement.html +932 -0
- data/doc/TaskJuggler/NikuProject.html +662 -0
- data/doc/TaskJuggler/NikuReport.html +1316 -0
- data/doc/TaskJuggler/NikuResource.html +632 -0
- data/doc/TaskJuggler/OnShiftCache.html +864 -0
- data/doc/TaskJuggler/ProcessIntercom.html +847 -0
- data/doc/TaskJuggler/ProcessIntercomIface.html +664 -0
- data/doc/TaskJuggler/Project.html +3056 -0
- data/doc/TaskJuggler/ProjectBroker.html +1260 -0
- data/doc/TaskJuggler/ProjectBrokerIface.html +734 -0
- data/doc/TaskJuggler/ProjectFileParser.html +1951 -0
- data/doc/TaskJuggler/ProjectRecord.html +859 -0
- data/doc/TaskJuggler/ProjectServer.html +1092 -0
- data/doc/TaskJuggler/ProjectServerIface.html +768 -0
- data/doc/TaskJuggler/PropertyAttribute.html +629 -0
- data/doc/TaskJuggler/PropertyList.html +1336 -0
- data/doc/TaskJuggler/PropertySet.html +1785 -0
- data/doc/TaskJuggler/PropertyTreeNode.html +2482 -0
- data/doc/TaskJuggler/Query.html +1831 -0
- data/doc/TaskJuggler/RTFNavigator.html +729 -0
- data/doc/TaskJuggler/RTFQuery.html +1038 -0
- data/doc/TaskJuggler/RTFReport.html +740 -0
- data/doc/TaskJuggler/RealFormat.html +743 -0
- data/doc/TaskJuggler/RealFormatAttribute.html +593 -0
- data/doc/TaskJuggler/ReferenceAttribute.html +782 -0
- data/doc/TaskJuggler/Report.html +1255 -0
- data/doc/TaskJuggler/ReportBase.html +1198 -0
- data/doc/TaskJuggler/ReportContext.html +711 -0
- data/doc/TaskJuggler/ReportServer.html +988 -0
- data/doc/TaskJuggler/ReportServerIface.html +838 -0
- data/doc/TaskJuggler/ReportServerRecord.html +716 -0
- data/doc/TaskJuggler/ReportTable.html +1106 -0
- data/doc/TaskJuggler/ReportTableCell.html +1536 -0
- data/doc/TaskJuggler/ReportTableColumn.html +828 -0
- data/doc/TaskJuggler/ReportTableLegend.html +999 -0
- data/doc/TaskJuggler/ReportTableLine.html +1003 -0
- data/doc/TaskJuggler/Resource.html +938 -0
- data/doc/TaskJuggler/ResourceListAttribute.html +752 -0
- data/doc/TaskJuggler/ResourceListRE.html +674 -0
- data/doc/TaskJuggler/ResourceScenario.html +2457 -0
- data/doc/TaskJuggler/RichText.html +791 -0
- data/doc/TaskJuggler/RichTextAttribute.html +743 -0
- data/doc/TaskJuggler/RichTextDocument.html +972 -0
- data/doc/TaskJuggler/RichTextElement.html +1615 -0
- data/doc/TaskJuggler/RichTextException.html +667 -0
- data/doc/TaskJuggler/RichTextFunctionExample.html +737 -0
- data/doc/TaskJuggler/RichTextFunctionHandler.html +689 -0
- data/doc/TaskJuggler/RichTextImage.html +650 -0
- data/doc/TaskJuggler/RichTextIntermediate.html +1161 -0
- data/doc/TaskJuggler/RichTextParser.html +756 -0
- data/doc/TaskJuggler/RichTextScanner.html +2010 -0
- data/doc/TaskJuggler/RichTextSnip.html +942 -0
- data/doc/TaskJuggler/RichTextSyntaxRules.html +1722 -0
- data/doc/TaskJuggler/Scenario.html +594 -0
- data/doc/TaskJuggler/ScenarioData.html +815 -0
- data/doc/TaskJuggler/ScenarioListAttribute.html +671 -0
- data/doc/TaskJuggler/Scoreboard.html +1114 -0
- data/doc/TaskJuggler/SheetHandlerBase.html +1115 -0
- data/doc/TaskJuggler/SheetReceiver.html +1293 -0
- data/doc/TaskJuggler/SheetSender.html +1089 -0
- data/doc/TaskJuggler/Shift.html +689 -0
- data/doc/TaskJuggler/ShiftAssignment.html +950 -0
- data/doc/TaskJuggler/ShiftAssignments.html +1379 -0
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +707 -0
- data/doc/TaskJuggler/ShiftScenario.html +720 -0
- data/doc/TaskJuggler/SortListAttribute.html +631 -0
- data/doc/TaskJuggler/SourceFileInfo.html +698 -0
- data/doc/TaskJuggler/StatusSheetReceiver.html +615 -0
- data/doc/TaskJuggler/StatusSheetReport.html +872 -0
- data/doc/TaskJuggler/StatusSheetSender.html +654 -0
- data/doc/TaskJuggler/StringAttribute.html +671 -0
- data/doc/TaskJuggler/SymbolAttribute.html +629 -0
- data/doc/TaskJuggler/SyntaxReference.html +1155 -0
- data/doc/TaskJuggler/TOCEntry.html +723 -0
- data/doc/TaskJuggler/TSResourceRecord.html +670 -0
- data/doc/TaskJuggler/TSTaskRecord.html +682 -0
- data/doc/TaskJuggler/TableColumnDefinition.html +830 -0
- data/doc/TaskJuggler/TableOfContents.html +692 -0
- data/doc/TaskJuggler/TableReport.html +2444 -0
- data/doc/TaskJuggler/Task.html +781 -0
- data/doc/TaskJuggler/TaskDependency.html +730 -0
- data/doc/TaskJuggler/TaskListAttribute.html +713 -0
- data/doc/TaskJuggler/TaskListRE.html +673 -0
- data/doc/TaskJuggler/TaskScenario.html +4380 -0
- data/doc/TaskJuggler/TextFormatter.html +911 -0
- data/doc/TaskJuggler/TextParser/Pattern.html +1482 -0
- data/doc/TaskJuggler/TextParser/Rule.html +1288 -0
- data/doc/TaskJuggler/TextParser/StackElement.html +726 -0
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +648 -0
- data/doc/TaskJuggler/TextParser/TokenDoc.html +680 -0
- data/doc/TaskJuggler/TextParser.html +1670 -0
- data/doc/TaskJuggler/TextReport.html +856 -0
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +831 -0
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +832 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +737 -0
- data/doc/TaskJuggler/TextScanner.html +2430 -0
- data/doc/TaskJuggler/TimeSheet.html +1233 -0
- data/doc/TaskJuggler/TimeSheetReceiver.html +612 -0
- data/doc/TaskJuggler/TimeSheetRecord.html +1352 -0
- data/doc/TaskJuggler/TimeSheetReport.html +948 -0
- data/doc/TaskJuggler/TimeSheetSender.html +637 -0
- data/doc/TaskJuggler/TimeSheetSummary.html +865 -0
- data/doc/TaskJuggler/TimeSheets.html +674 -0
- data/doc/TaskJuggler/Tj3AppBase.html +782 -0
- data/doc/TaskJuggler/Tj3Client.html +1455 -0
- data/doc/TaskJuggler/Tj3Daemon.html +767 -0
- data/doc/TaskJuggler/Tj3SheetAppBase.html +696 -0
- data/doc/TaskJuggler/Tj3SsReceiver.html +682 -0
- data/doc/TaskJuggler/Tj3SsSender.html +708 -0
- data/doc/TaskJuggler/Tj3TsReceiver.html +681 -0
- data/doc/TaskJuggler/Tj3TsSender.html +702 -0
- data/doc/TaskJuggler/Tj3TsSummary.html +710 -0
- data/doc/TaskJuggler/TjException.html +630 -0
- data/doc/TaskJuggler/TjTime.html +2590 -0
- data/doc/TaskJuggler/TjpExample.html +835 -0
- data/doc/TaskJuggler/TjpExportRE.html +1581 -0
- data/doc/TaskJuggler/TjpSyntaxRules.html +13004 -0
- data/doc/TaskJuggler/UserManual.html +1145 -0
- data/doc/TaskJuggler/WorkingHours.html +1101 -0
- data/doc/TaskJuggler/WorkingHoursAttribute.html +694 -0
- data/doc/TaskJuggler/XMLBlob.html +645 -0
- data/doc/TaskJuggler/XMLComment.html +640 -0
- data/doc/TaskJuggler/XMLDocument.html +732 -0
- data/doc/TaskJuggler/XMLElement.html +900 -0
- data/doc/TaskJuggler/XMLNamedText.html +601 -0
- data/doc/TaskJuggler/XMLText.html +655 -0
- data/doc/TaskJuggler.html +2243 -0
- data/doc/index.html +3778 -17
- data/doc/lib/AccountScenario_rb.html +67 -0
- data/doc/lib/Account_rb.html +69 -0
- data/doc/lib/Allocation_rb.html +69 -0
- data/doc/lib/AppConfig_rb.html +69 -0
- data/doc/lib/AttributeBase_rb.html +67 -0
- data/doc/lib/AttributeDefinition_rb.html +65 -0
- data/doc/lib/Attributes_rb.html +81 -0
- data/doc/lib/BatchProcessor_rb.html +69 -0
- data/doc/lib/Booking_rb.html +65 -0
- data/doc/lib/ChargeSet_rb.html +67 -0
- data/doc/lib/Charge_rb.html +67 -0
- data/doc/lib/HTMLDocument_rb.html +67 -0
- data/doc/lib/Interval_rb.html +67 -0
- data/doc/lib/Journal_rb.html +65 -0
- data/doc/lib/KeywordArray_rb.html +65 -0
- data/doc/lib/KeywordDocumentation_rb.html +75 -0
- data/doc/lib/Limits_rb.html +67 -0
- data/doc/lib/LogFile_rb.html +67 -0
- data/doc/lib/Log_rb.html +69 -0
- data/doc/lib/LogicalExpression_rb.html +71 -0
- data/doc/lib/LogicalFunction_rb.html +67 -0
- data/doc/lib/LogicalOperation_rb.html +67 -0
- data/doc/lib/MacroParser_rb.html +69 -0
- data/doc/lib/MacroTable_rb.html +73 -0
- data/doc/lib/MessageHandler_rb.html +65 -0
- data/doc/lib/Message_rb.html +67 -0
- data/doc/lib/ProjectFileParser_rb.html +79 -0
- data/doc/lib/Project_rb.html +109 -0
- data/doc/lib/PropertyList_rb.html +65 -0
- data/doc/lib/PropertySet_rb.html +69 -0
- data/doc/lib/PropertyTreeNode_rb.html +65 -0
- data/doc/lib/Query_rb.html +67 -0
- data/doc/lib/RTFNavigator_rb.html +71 -0
- data/doc/lib/RTFQuery_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +69 -0
- data/doc/lib/RealFormat_rb.html +65 -0
- data/doc/lib/ResourceScenario_rb.html +67 -0
- data/doc/lib/Resource_rb.html +69 -0
- data/doc/lib/RichTextDocument_rb.html +71 -0
- data/doc/lib/RichTextElement_rb.html +73 -0
- data/doc/lib/RichTextFunctionExample_rb.html +71 -0
- data/doc/lib/RichTextFunctionHandler_rb.html +65 -0
- data/doc/lib/RichTextParser_rb.html +71 -0
- data/doc/lib/RichTextScanner_rb.html +67 -0
- data/doc/lib/RichTextSnip_rb.html +69 -0
- data/doc/lib/RichTextSyntaxRules_rb.html +65 -0
- data/doc/lib/RichText_rb.html +69 -0
- data/doc/lib/RuntimeConfig_rb.html +67 -0
- data/doc/lib/ScenarioData_rb.html +69 -0
- data/doc/lib/Scenario_rb.html +67 -0
- data/doc/lib/Scoreboard_rb.html +65 -0
- data/doc/lib/SheetHandlerBase_rb.html +69 -0
- data/doc/lib/SheetReceiver_rb.html +75 -0
- data/doc/lib/SheetSender_rb.html +73 -0
- data/doc/lib/ShiftAssignments_rb.html +67 -0
- data/doc/lib/ShiftScenario_rb.html +67 -0
- data/doc/lib/Shift_rb.html +69 -0
- data/doc/lib/SourceFileInfo_rb.html +65 -0
- data/doc/lib/StatusSheetReceiver_rb.html +67 -0
- data/doc/lib/StatusSheetSender_rb.html +67 -0
- data/doc/lib/SyntaxReference_rb.html +73 -0
- data/doc/lib/TOCEntry_rb.html +69 -0
- data/doc/lib/TableColumnDefinition_rb.html +65 -0
- data/doc/lib/TableOfContents_rb.html +69 -0
- data/doc/lib/TaskDependency_rb.html +65 -0
- data/doc/lib/TaskJuggler_rb.html +73 -0
- data/doc/lib/TaskScenario_rb.html +67 -0
- data/doc/lib/Task_rb.html +69 -0
- data/doc/lib/TextFormatter_rb.html +67 -0
- data/doc/lib/TextParser/Pattern_rb.html +67 -0
- data/doc/lib/TextParser/Rule_rb.html +65 -0
- data/doc/lib/TextParser/StackElement_rb.html +65 -0
- data/doc/lib/TextParser/TokenDoc_rb.html +65 -0
- data/doc/lib/TextParser_rb.html +75 -0
- data/doc/lib/TextScanner_rb.html +79 -0
- data/doc/lib/TimeSheetReceiver_rb.html +67 -0
- data/doc/lib/TimeSheetSender_rb.html +67 -0
- data/doc/lib/TimeSheetSummary_rb.html +67 -0
- data/doc/lib/TimeSheets_rb.html +65 -0
- data/doc/lib/Tj3AppBase_rb.html +77 -0
- data/doc/lib/Tj3Config_rb.html +69 -0
- data/doc/lib/Tj3SheetAppBase_rb.html +67 -0
- data/doc/lib/TjException_rb.html +65 -0
- data/doc/lib/TjTime_rb.html +69 -0
- data/doc/lib/TjpExample_rb.html +67 -0
- data/doc/lib/TjpSyntaxRules_rb.html +65 -0
- data/doc/lib/UTF8String_rb.html +65 -0
- data/doc/lib/UserManual_rb.html +77 -0
- data/doc/lib/WorkingHours_rb.html +67 -0
- data/doc/lib/XMLDocument_rb.html +67 -0
- data/doc/lib/XMLElement_rb.html +67 -0
- data/doc/lib/daemon/Daemon_rb.html +67 -0
- data/doc/lib/daemon/ProcessIntercom_rb.html +67 -0
- data/doc/lib/daemon/ProjectBroker_rb.html +79 -0
- data/doc/lib/daemon/ProjectServer_rb.html +83 -0
- data/doc/lib/daemon/ReportServer_rb.html +73 -0
- data/doc/lib/deep_copy_rb.html +65 -0
- data/doc/lib/reports/CSVFile_rb.html +67 -0
- data/doc/lib/reports/ColumnTable_rb.html +67 -0
- data/doc/lib/reports/GanttChart_rb.html +73 -0
- data/doc/lib/reports/GanttContainer_rb.html +67 -0
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +65 -0
- data/doc/lib/reports/GanttHeader_rb.html +67 -0
- data/doc/lib/reports/GanttLine_rb.html +77 -0
- data/doc/lib/reports/GanttLoadStack_rb.html +67 -0
- data/doc/lib/reports/GanttMilestone_rb.html +67 -0
- data/doc/lib/reports/GanttRouter_rb.html +65 -0
- data/doc/lib/reports/GanttTaskBar_rb.html +67 -0
- data/doc/lib/reports/HTMLGraphics_rb.html +65 -0
- data/doc/lib/reports/Navigator_rb.html +67 -0
- data/doc/lib/reports/NikuReport_rb.html +69 -0
- data/doc/lib/reports/ReportBase_rb.html +65 -0
- data/doc/lib/reports/ReportContext_rb.html +65 -0
- data/doc/lib/reports/ReportTableCell_rb.html +65 -0
- data/doc/lib/reports/ReportTableColumn_rb.html +65 -0
- data/doc/lib/reports/ReportTableLegend_rb.html +65 -0
- data/doc/lib/reports/ReportTableLine_rb.html +67 -0
- data/doc/lib/reports/ReportTable_rb.html +69 -0
- data/doc/lib/reports/Report_rb.html +91 -0
- data/doc/lib/reports/ResourceListRE_rb.html +73 -0
- data/doc/lib/reports/StatusSheetReport_rb.html +67 -0
- data/doc/lib/reports/TableReport_rb.html +75 -0
- data/doc/lib/reports/TaskListRE_rb.html +73 -0
- data/doc/lib/reports/TextReport_rb.html +67 -0
- data/doc/lib/reports/TimeSheetReport_rb.html +67 -0
- data/doc/lib/reports/TjpExportRE_rb.html +67 -0
- data/doc/lib/ruby-signal-bug_rb.html +54 -0
- data/doc/lib/taskjuggler3_rb.html +73 -0
- data/doc/lib/tj3client_rb.html +73 -0
- data/doc/lib/tj3d_rb.html +73 -0
- data/doc/lib/tj3man_rb.html +73 -0
- data/doc/lib/tj3ss_receiver_rb.html +69 -0
- data/doc/lib/tj3ss_sender_rb.html +69 -0
- data/doc/lib/tj3ts_receiver_rb.html +69 -0
- data/doc/lib/tj3ts_sender_rb.html +69 -0
- data/doc/lib/tj3ts_summary_rb.html +69 -0
- data/doc/rdoc.css +701 -0
- data/examples/tutorial.tjp +25 -6
- data/lib/Attributes.rb +6 -2
- data/lib/HTMLDocument.rb +18 -2
- data/lib/Journal.rb +47 -4
- data/lib/KeywordArray.rb +1 -1
- data/lib/KeywordDocumentation.rb +17 -77
- data/lib/Log.rb +3 -1
- data/lib/LogFile.rb +72 -0
- data/lib/LogicalExpression.rb +5 -10
- data/lib/LogicalFunction.rb +34 -18
- data/lib/LogicalOperation.rb +32 -18
- data/lib/Project.rb +85 -13
- data/lib/ProjectFileParser.rb +19 -6
- data/lib/PropertyList.rb +12 -2
- data/lib/PropertyTreeNode.rb +23 -9
- data/lib/Query.rb +51 -13
- data/lib/RTFReport.rb +2 -2
- data/lib/Resource.rb +157 -0
- data/lib/ResourceScenario.rb +215 -68
- data/lib/RichText.rb +15 -3
- data/lib/RichTextDocument.rb +2 -4
- data/lib/RichTextElement.rb +87 -25
- data/lib/RichTextScanner.rb +32 -5
- data/lib/RichTextSnip.rb +6 -4
- data/lib/RichTextSyntaxRules.rb +44 -8
- data/lib/RuntimeConfig.rb +93 -0
- data/lib/Scoreboard.rb +6 -6
- data/lib/SheetHandlerBase.rb +215 -0
- data/lib/SheetReceiver.rb +355 -0
- data/lib/SheetSender.rb +264 -0
- data/lib/ShiftAssignments.rb +35 -27
- data/lib/StatusSheetReceiver.rb +45 -0
- data/lib/StatusSheetSender.rb +54 -0
- data/lib/SyntaxReference.rb +2 -7
- data/lib/Task.rb +70 -0
- data/lib/TaskJuggler.rb +114 -12
- data/lib/TaskScenario.rb +131 -22
- data/lib/TextFormatter.rb +177 -0
- data/lib/TextParser.rb +10 -1
- data/lib/TextScanner.rb +63 -33
- data/lib/TimeSheetReceiver.rb +42 -0
- data/lib/TimeSheetSender.rb +55 -0
- data/lib/TimeSheetSummary.rb +149 -0
- data/lib/TimeSheets.rb +406 -0
- data/lib/Tj3AppBase.rb +114 -0
- data/lib/Tj3Config.rb +1 -1
- data/lib/Tj3SheetAppBase.rb +59 -0
- data/lib/TjTime.rb +14 -1
- data/lib/TjpSyntaxRules.rb +573 -211
- data/lib/UTF8String.rb +4 -0
- data/lib/UserManual.rb +8 -7
- data/lib/XMLElement.rb +27 -19
- data/lib/daemon/Daemon.rb +70 -0
- data/lib/daemon/ProcessIntercom.rb +117 -0
- data/lib/daemon/ProjectBroker.rb +450 -0
- data/lib/daemon/ProjectServer.rb +348 -0
- data/lib/daemon/ReportServer.rb +194 -0
- data/lib/reports/ColumnTable.rb +2 -0
- data/lib/reports/GanttChart.rb +5 -7
- data/lib/reports/GanttContainer.rb +5 -8
- data/lib/reports/GanttHeader.rb +1 -1
- data/lib/reports/GanttLine.rb +89 -53
- data/lib/reports/GanttMilestone.rb +7 -4
- data/lib/reports/GanttTaskBar.rb +7 -3
- data/lib/reports/HTMLGraphics.rb +24 -9
- data/lib/reports/NikuReport.rb +414 -0
- data/lib/reports/Report.rb +54 -20
- data/lib/reports/ReportBase.rb +21 -0
- data/lib/reports/ReportTable.rb +29 -11
- data/lib/reports/ReportTableCell.rb +154 -86
- data/lib/reports/ReportTableLegend.rb +77 -80
- data/lib/reports/ResourceListRE.rb +2 -3
- data/lib/reports/StatusSheetReport.rb +231 -0
- data/lib/reports/TableReport.rb +74 -65
- data/lib/reports/TaskListRE.rb +2 -4
- data/lib/reports/TextReport.rb +18 -12
- data/lib/reports/TimeSheetReport.rb +145 -80
- data/lib/reports/TjpExportRE.rb +4 -4
- data/lib/ruby-signal-bug.rb +43 -0
- data/lib/taskjuggler3.rb +27 -10
- data/lib/tj3client.rb +411 -77
- data/lib/tj3d.rb +110 -0
- data/lib/tj3ss_receiver.rb +56 -0
- data/lib/tj3ss_sender.rb +84 -0
- data/lib/tj3ts_receiver.rb +59 -0
- data/lib/tj3ts_sender.rb +78 -0
- data/lib/tj3ts_summary.rb +87 -0
- data/manual/Day_To_Day_Juggling +761 -32
- data/manual/Getting_Started +12 -12
- data/manual/Rich_Text_Attributes +13 -1
- data/manual/TaskJuggler_2x_Migration +41 -3
- data/manual/TaskJuggler_Internals +87 -0
- data/manual/The_TaskJuggler_Syntax +1 -2
- data/manual/Tutorial +10 -10
- data/test/TestSuite/CSV-Reports/celltext.tjp +1 -1
- data/test/TestSuite/HTML-Reports/TimeSheet.html +79 -0
- data/test/TestSuite/HTML-Reports/icons/trend-down.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/trend-flat.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/trend-up.png +0 -0
- data/test/TestSuite/HTML-Reports/reference.html +51 -0
- data/test/TestSuite/Scheduler/Correct/Booking2.html +603 -0
- data/test/TestSuite/Scheduler/Correct/Booking2.tjp +57 -0
- data/test/TestSuite/Scheduler/Correct/Duration.tjp +32 -18
- data/test/TestSuite/Scheduler/Correct/Manager.tjp +9 -0
- data/test/TestSuite/Scheduler/Correct/Shift.html +429 -0
- data/test/TestSuite/Scheduler/Correct/Shift2.html +162 -0
- data/test/TestSuite/Scheduler/Correct/Shift2.tjp +67 -0
- data/test/TestSuite/{Syntax/Correct/TimeSheet.tjp → Scheduler/Correct/TimeSheet2.tjp} +21 -8
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +52 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +195 -0
- data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/resource.png +0 -0
- data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/task.png +0 -0
- data/test/TestSuite/{Syntax → Scheduler}/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/{HTML-Reports/scripts → Scheduler/Correct}/scripts/wz_tooltip.js +0 -0
- data/test/TestSuite/Scheduler/Errors/manager_is_group.tjp +15 -0
- data/test/TestSuite/Scheduler/Errors/manager_is_self.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/resource_fail_check.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/resource_warn_check.tjp +12 -0
- data/test/TestSuite/Scheduler/Errors/task_fail_check.tjp +8 -0
- data/test/TestSuite/Scheduler/Errors/task_warn_check.tjp +8 -0
- data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +20 -0
- data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +21 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +27 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +18 -0
- data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +26 -0
- data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +20 -0
- data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +27 -0
- data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +27 -0
- data/test/TestSuite/StatusSheets/boss.tji +45 -0
- data/test/TestSuite/StatusSheets/boss_mail +51 -0
- data/test/TestSuite/StatusSheets/dev2_mail +37 -0
- data/test/TestSuite/StatusSheets/project.tjp +275 -0
- data/test/TestSuite/StatusSheets/run +50 -0
- data/test/TestSuite/Syntax/Correct/Include.tjp +4 -0
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +10 -1
- data/test/TestSuite/Syntax/Correct/Manager.tjp +30 -0
- data/test/TestSuite/Syntax/Correct/Niku.tjp +66 -0
- data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +83 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/include/dir2/file3.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/file1.tji +3 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +29 -8
- data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +19 -0
- data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +22 -0
- data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +22 -0
- data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +23 -0
- data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +18 -0
- data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +19 -0
- data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +27 -0
- data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +29 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +36 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +48 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +67 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +67 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +48 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +31 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +36 -0
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +1 -0
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +1 -0
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +54 -0
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +2 -0
- data/test/TestSuite/TimeSheets/dev2_mail1 +84 -0
- data/test/TestSuite/TimeSheets/dev2_mail2 +87 -0
- data/test/TestSuite/TimeSheets/project.tjp +271 -0
- data/test/TestSuite/TimeSheets/receiver.log +102 -0
- data/test/TestSuite/TimeSheets/run +75 -0
- data/test/TestSuite/TimeSheets/sender.log +794 -0
- data/test/TestSuite/TimeSheets/summary.log +884 -0
- data/test/TestSuite/TimeSheets/timesheets.log +45 -0
- data/test/TestSuite/TimeSheets/tj3d.log +292 -0
- data/test/test_CSV-Reports.rb +5 -3
- data/test/test_RichText.rb +264 -56
- data/test/test_Scheduler.rb +1 -0
- data/test/test_TextFormatter.rb +142 -0
- data/test/test_TjTime.rb +15 -0
- metadata +816 -644
- data/benchmarks/UTF-8-Strings.rb +0 -58
- data/doc/classes/AppConfig.html +0 -880
- data/doc/classes/Arguments.html +0 -230
- data/doc/classes/Object.html +0 -229
- data/doc/classes/String.html +0 -399
- data/doc/classes/TaskJuggler/Account.html +0 -257
- data/doc/classes/TaskJuggler/AccountAttribute.html +0 -261
- data/doc/classes/TaskJuggler/AccountScenario.html +0 -218
- data/doc/classes/TaskJuggler/Allocation.html +0 -423
- data/doc/classes/TaskJuggler/AllocationAttribute.html +0 -291
- data/doc/classes/TaskJuggler/AttributeBase.html +0 -704
- data/doc/classes/TaskJuggler/AttributeDefinition.html +0 -276
- data/doc/classes/TaskJuggler/BatchProcessor.html +0 -347
- data/doc/classes/TaskJuggler/Booking.html +0 -311
- data/doc/classes/TaskJuggler/BookingListAttribute.html +0 -263
- data/doc/classes/TaskJuggler/BooleanAttribute.html +0 -261
- data/doc/classes/TaskJuggler/CSVFile.html +0 -329
- data/doc/classes/TaskJuggler/CellSettingPattern.html +0 -201
- data/doc/classes/TaskJuggler/CellSettingPatternList.html +0 -253
- data/doc/classes/TaskJuggler/Charge.html +0 -283
- data/doc/classes/TaskJuggler/ChargeListAttribute.html +0 -229
- data/doc/classes/TaskJuggler/ChargeSet.html +0 -444
- data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +0 -276
- data/doc/classes/TaskJuggler/ColumnListAttribute.html +0 -231
- data/doc/classes/TaskJuggler/ColumnTable.html +0 -262
- data/doc/classes/TaskJuggler/DateAttribute.html +0 -233
- data/doc/classes/TaskJuggler/DefinitionListAttribute.html +0 -162
- data/doc/classes/TaskJuggler/DependencyListAttribute.html +0 -267
- data/doc/classes/TaskJuggler/DurationAttribute.html +0 -229
- data/doc/classes/TaskJuggler/FixnumAttribute.html +0 -194
- data/doc/classes/TaskJuggler/FlagListAttribute.html +0 -263
- data/doc/classes/TaskJuggler/FloatAttribute.html +0 -229
- data/doc/classes/TaskJuggler/FormatListAttribute.html +0 -197
- data/doc/classes/TaskJuggler/GanttChart.html +0 -696
- data/doc/classes/TaskJuggler/GanttContainer.html +0 -445
- data/doc/classes/TaskJuggler/GanttHeader.html +0 -284
- data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +0 -249
- data/doc/classes/TaskJuggler/GanttLine.html +0 -402
- data/doc/classes/TaskJuggler/GanttLoadStack.html +0 -331
- data/doc/classes/TaskJuggler/GanttMilestone.html +0 -419
- data/doc/classes/TaskJuggler/GanttRouter.html +0 -431
- data/doc/classes/TaskJuggler/GanttTaskBar.html +0 -433
- data/doc/classes/TaskJuggler/HTMLDocument.html +0 -240
- data/doc/classes/TaskJuggler/HTMLGraphics.html +0 -231
- data/doc/classes/TaskJuggler/Interval.html +0 -558
- data/doc/classes/TaskJuggler/IntervalListAttribute.html +0 -267
- data/doc/classes/TaskJuggler/JobInfo.html +0 -340
- data/doc/classes/TaskJuggler/Journal.html +0 -443
- data/doc/classes/TaskJuggler/JournalEntry.html +0 -274
- data/doc/classes/TaskJuggler/JournalEntryList.html +0 -454
- data/doc/classes/TaskJuggler/KeywordArray.html +0 -179
- data/doc/classes/TaskJuggler/KeywordDocumentation.html +0 -846
- data/doc/classes/TaskJuggler/Limits/Limit.html +0 -385
- data/doc/classes/TaskJuggler/Limits.html +0 -422
- data/doc/classes/TaskJuggler/LimitsAttribute.html +0 -261
- data/doc/classes/TaskJuggler/ListAttributeBase.html +0 -207
- data/doc/classes/TaskJuggler/Log.html +0 -655
- data/doc/classes/TaskJuggler/LogicalAttribute.html +0 -259
- data/doc/classes/TaskJuggler/LogicalExpression.html +0 -292
- data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +0 -194
- data/doc/classes/TaskJuggler/LogicalFlag.html +0 -209
- data/doc/classes/TaskJuggler/LogicalFunction.html +0 -339
- data/doc/classes/TaskJuggler/LogicalOperation.html +0 -351
- data/doc/classes/TaskJuggler/Macro.html +0 -198
- data/doc/classes/TaskJuggler/MacroParser.html +0 -360
- data/doc/classes/TaskJuggler/MacroTable.html +0 -370
- data/doc/classes/TaskJuggler/Message.html +0 -285
- data/doc/classes/TaskJuggler/MessageHandler.html +0 -231
- data/doc/classes/TaskJuggler/Navigator.html +0 -313
- data/doc/classes/TaskJuggler/NavigatorElement.html +0 -449
- data/doc/classes/TaskJuggler/OnShiftCache.html +0 -316
- data/doc/classes/TaskJuggler/Project.html +0 -2257
- data/doc/classes/TaskJuggler/ProjectFileParser.html +0 -420
- data/doc/classes/TaskJuggler/PropertyAttribute.html +0 -194
- data/doc/classes/TaskJuggler/PropertyList.html +0 -668
- data/doc/classes/TaskJuggler/PropertySet.html +0 -1286
- data/doc/classes/TaskJuggler/PropertyTreeNode.html +0 -1742
- data/doc/classes/TaskJuggler/Query.html +0 -870
- data/doc/classes/TaskJuggler/RTFNavigator.html +0 -293
- data/doc/classes/TaskJuggler/RTFQuery.html +0 -343
- data/doc/classes/TaskJuggler/RTFReport.html +0 -304
- data/doc/classes/TaskJuggler/RealFormat.html +0 -309
- data/doc/classes/TaskJuggler/RealFormatAttribute.html +0 -162
- data/doc/classes/TaskJuggler/ReferenceAttribute.html +0 -328
- data/doc/classes/TaskJuggler/RemoteServiceManager.html +0 -335
- data/doc/classes/TaskJuggler/Report.html +0 -321
- data/doc/classes/TaskJuggler/ReportBase.html +0 -437
- data/doc/classes/TaskJuggler/ReportContext.html +0 -248
- data/doc/classes/TaskJuggler/ReportServer.html +0 -320
- data/doc/classes/TaskJuggler/ReportTable.html +0 -526
- data/doc/classes/TaskJuggler/ReportTableCell.html +0 -614
- data/doc/classes/TaskJuggler/ReportTableColumn.html +0 -368
- data/doc/classes/TaskJuggler/ReportTableLegend.html +0 -347
- data/doc/classes/TaskJuggler/ReportTableLine.html +0 -481
- data/doc/classes/TaskJuggler/Resource.html +0 -211
- data/doc/classes/TaskJuggler/ResourceListAttribute.html +0 -302
- data/doc/classes/TaskJuggler/ResourceListRE.html +0 -245
- data/doc/classes/TaskJuggler/ResourceScenario.html +0 -1229
- data/doc/classes/TaskJuggler/RichText.html +0 -357
- data/doc/classes/TaskJuggler/RichTextAttribute.html +0 -293
- data/doc/classes/TaskJuggler/RichTextDocument.html +0 -424
- data/doc/classes/TaskJuggler/RichTextElement.html +0 -932
- data/doc/classes/TaskJuggler/RichTextException.html +0 -212
- data/doc/classes/TaskJuggler/RichTextFunctionExample.html +0 -301
- data/doc/classes/TaskJuggler/RichTextFunctionHandler.html +0 -245
- data/doc/classes/TaskJuggler/RichTextIntermediate.html +0 -563
- data/doc/classes/TaskJuggler/RichTextParser.html +0 -321
- data/doc/classes/TaskJuggler/RichTextScanner.html +0 -424
- data/doc/classes/TaskJuggler/RichTextSnip.html +0 -404
- data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +0 -1105
- data/doc/classes/TaskJuggler/Scenario.html +0 -163
- data/doc/classes/TaskJuggler/ScenarioData.html +0 -358
- data/doc/classes/TaskJuggler/ScenarioListAttribute.html +0 -229
- data/doc/classes/TaskJuggler/Scoreboard.html +0 -642
- data/doc/classes/TaskJuggler/Shift.html +0 -255
- data/doc/classes/TaskJuggler/ShiftAssignment.html +0 -492
- data/doc/classes/TaskJuggler/ShiftAssignments.html +0 -719
- data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +0 -261
- data/doc/classes/TaskJuggler/ShiftScenario.html +0 -282
- data/doc/classes/TaskJuggler/SortListAttribute.html +0 -196
- data/doc/classes/TaskJuggler/SourceFileInfo.html +0 -251
- data/doc/classes/TaskJuggler/StringAttribute.html +0 -229
- data/doc/classes/TaskJuggler/SymbolAttribute.html +0 -194
- data/doc/classes/TaskJuggler/SyntaxReference.html +0 -520
- data/doc/classes/TaskJuggler/TOCEntry.html +0 -246
- data/doc/classes/TaskJuggler/TSResourceRecord.html +0 -197
- data/doc/classes/TaskJuggler/TSTaskRecord.html +0 -215
- data/doc/classes/TaskJuggler/TableColumnDefinition.html +0 -309
- data/doc/classes/TaskJuggler/TableOfContents.html +0 -260
- data/doc/classes/TaskJuggler/TableReport.html +0 -1015
- data/doc/classes/TaskJuggler/Task.html +0 -203
- data/doc/classes/TaskJuggler/TaskDependency.html +0 -255
- data/doc/classes/TaskJuggler/TaskListAttribute.html +0 -267
- data/doc/classes/TaskJuggler/TaskListRE.html +0 -245
- data/doc/classes/TaskJuggler/TaskScenario.html +0 -2543
- data/doc/classes/TaskJuggler/TextParser/Pattern.html +0 -927
- data/doc/classes/TaskJuggler/TextParser/Rule.html +0 -783
- data/doc/classes/TaskJuggler/TextParser/StackElement.html +0 -272
- data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +0 -212
- data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +0 -225
- data/doc/classes/TaskJuggler/TextParser.html +0 -754
- data/doc/classes/TaskJuggler/TextReport.html +0 -367
- data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +0 -355
- data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +0 -348
- data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +0 -264
- data/doc/classes/TaskJuggler/TextScanner.html +0 -815
- data/doc/classes/TaskJuggler/TimeSheetReport.html +0 -406
- data/doc/classes/TaskJuggler/TjException.html +0 -185
- data/doc/classes/TaskJuggler/TjTime.html +0 -1904
- data/doc/classes/TaskJuggler/TjpExample.html +0 -314
- data/doc/classes/TaskJuggler/TjpExportRE.html +0 -306
- data/doc/classes/TaskJuggler/TjpSyntaxRules.html +0 -10812
- data/doc/classes/TaskJuggler/UserManual.html +0 -605
- data/doc/classes/TaskJuggler/WorkingHours.html +0 -586
- data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +0 -252
- data/doc/classes/TaskJuggler/XMLBlob.html +0 -207
- data/doc/classes/TaskJuggler/XMLComment.html +0 -206
- data/doc/classes/TaskJuggler/XMLDocument.html +0 -298
- data/doc/classes/TaskJuggler/XMLElement.html +0 -389
- data/doc/classes/TaskJuggler/XMLNamedText.html +0 -174
- data/doc/classes/TaskJuggler/XMLText.html +0 -221
- data/doc/classes/TaskJuggler.html +0 -1573
- data/doc/files/COPYING.html +0 -448
- data/doc/files/README.html +0 -134
- data/doc/files/lib/AccountScenario_rb.html +0 -117
- data/doc/files/lib/Account_rb.html +0 -119
- data/doc/files/lib/Allocation_rb.html +0 -119
- data/doc/files/lib/AppConfig_rb.html +0 -119
- data/doc/files/lib/AttributeBase_rb.html +0 -117
- data/doc/files/lib/AttributeDefinition_rb.html +0 -107
- data/doc/files/lib/Attributes_rb.html +0 -131
- data/doc/files/lib/BatchProcessor_rb.html +0 -119
- data/doc/files/lib/Booking_rb.html +0 -107
- data/doc/files/lib/ChargeSet_rb.html +0 -117
- data/doc/files/lib/Charge_rb.html +0 -117
- data/doc/files/lib/HTMLDocument_rb.html +0 -117
- data/doc/files/lib/Interval_rb.html +0 -117
- data/doc/files/lib/Journal_rb.html +0 -107
- data/doc/files/lib/KeywordArray_rb.html +0 -107
- data/doc/files/lib/KeywordDocumentation_rb.html +0 -123
- data/doc/files/lib/Limits_rb.html +0 -117
- data/doc/files/lib/Log_rb.html +0 -117
- data/doc/files/lib/LogicalExpression_rb.html +0 -121
- data/doc/files/lib/LogicalFunction_rb.html +0 -117
- data/doc/files/lib/LogicalOperation_rb.html +0 -117
- data/doc/files/lib/MacroParser_rb.html +0 -119
- data/doc/files/lib/MacroTable_rb.html +0 -123
- data/doc/files/lib/MessageHandler_rb.html +0 -107
- data/doc/files/lib/Message_rb.html +0 -117
- data/doc/files/lib/ProjectFileParser_rb.html +0 -129
- data/doc/files/lib/Project_rb.html +0 -153
- data/doc/files/lib/PropertyList_rb.html +0 -107
- data/doc/files/lib/PropertySet_rb.html +0 -119
- data/doc/files/lib/PropertyTreeNode_rb.html +0 -107
- data/doc/files/lib/Query_rb.html +0 -117
- data/doc/files/lib/RTFNavigator_rb.html +0 -121
- data/doc/files/lib/RTFQuery_rb.html +0 -121
- data/doc/files/lib/RTFReport_rb.html +0 -119
- data/doc/files/lib/RealFormat_rb.html +0 -107
- data/doc/files/lib/RemoteServiceManager_rb.html +0 -117
- data/doc/files/lib/ReportServer_rb.html +0 -107
- data/doc/files/lib/ResourceScenario_rb.html +0 -117
- data/doc/files/lib/Resource_rb.html +0 -119
- data/doc/files/lib/RichTextDocument_rb.html +0 -121
- data/doc/files/lib/RichTextElement_rb.html +0 -121
- data/doc/files/lib/RichTextFunctionExample_rb.html +0 -121
- data/doc/files/lib/RichTextFunctionHandler_rb.html +0 -107
- data/doc/files/lib/RichTextParser_rb.html +0 -121
- data/doc/files/lib/RichTextScanner_rb.html +0 -117
- data/doc/files/lib/RichTextSnip_rb.html +0 -119
- data/doc/files/lib/RichTextSyntaxRules_rb.html +0 -107
- data/doc/files/lib/RichText_rb.html +0 -119
- data/doc/files/lib/ScenarioData_rb.html +0 -119
- data/doc/files/lib/Scenario_rb.html +0 -117
- data/doc/files/lib/Scoreboard_rb.html +0 -107
- data/doc/files/lib/ShiftAssignments_rb.html +0 -117
- data/doc/files/lib/ShiftScenario_rb.html +0 -117
- data/doc/files/lib/Shift_rb.html +0 -119
- data/doc/files/lib/SourceFileInfo_rb.html +0 -107
- data/doc/files/lib/SyntaxReference_rb.html +0 -123
- data/doc/files/lib/TOCEntry_rb.html +0 -119
- data/doc/files/lib/TableColumnDefinition_rb.html +0 -107
- data/doc/files/lib/TableOfContents_rb.html +0 -119
- data/doc/files/lib/TaskDependency_rb.html +0 -107
- data/doc/files/lib/TaskJuggler_rb.html +0 -125
- data/doc/files/lib/TaskScenario_rb.html +0 -117
- data/doc/files/lib/Task_rb.html +0 -119
- data/doc/files/lib/TextParser/Pattern_rb.html +0 -117
- data/doc/files/lib/TextParser/Rule_rb.html +0 -107
- data/doc/files/lib/TextParser/StackElement_rb.html +0 -107
- data/doc/files/lib/TextParser/TokenDoc_rb.html +0 -107
- data/doc/files/lib/TextParser_rb.html +0 -125
- data/doc/files/lib/TextScanner_rb.html +0 -129
- data/doc/files/lib/Tj3Config_rb.html +0 -119
- data/doc/files/lib/TjException_rb.html +0 -107
- data/doc/files/lib/TjTime_rb.html +0 -119
- data/doc/files/lib/TjpExample_rb.html +0 -117
- data/doc/files/lib/TjpSyntaxRules_rb.html +0 -107
- data/doc/files/lib/UTF8String_rb.html +0 -140
- data/doc/files/lib/UserManual_rb.html +0 -127
- data/doc/files/lib/WorkingHours_rb.html +0 -117
- data/doc/files/lib/XMLDocument_rb.html +0 -117
- data/doc/files/lib/XMLElement_rb.html +0 -117
- data/doc/files/lib/deep_copy_rb.html +0 -107
- data/doc/files/lib/reports/CSVFile_rb.html +0 -117
- data/doc/files/lib/reports/ColumnTable_rb.html +0 -117
- data/doc/files/lib/reports/GanttChart_rb.html +0 -123
- data/doc/files/lib/reports/GanttContainer_rb.html +0 -117
- data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +0 -107
- data/doc/files/lib/reports/GanttHeader_rb.html +0 -117
- data/doc/files/lib/reports/GanttLine_rb.html +0 -127
- data/doc/files/lib/reports/GanttLoadStack_rb.html +0 -117
- data/doc/files/lib/reports/GanttMilestone_rb.html +0 -117
- data/doc/files/lib/reports/GanttRouter_rb.html +0 -107
- data/doc/files/lib/reports/GanttTaskBar_rb.html +0 -117
- data/doc/files/lib/reports/HTMLGraphics_rb.html +0 -107
- data/doc/files/lib/reports/Navigator_rb.html +0 -117
- data/doc/files/lib/reports/ReportBase_rb.html +0 -107
- data/doc/files/lib/reports/ReportContext_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableCell_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableColumn_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableLegend_rb.html +0 -107
- data/doc/files/lib/reports/ReportTableLine_rb.html +0 -117
- data/doc/files/lib/reports/ReportTable_rb.html +0 -119
- data/doc/files/lib/reports/Report_rb.html +0 -137
- data/doc/files/lib/reports/ResourceListRE_rb.html +0 -123
- data/doc/files/lib/reports/TableReport_rb.html +0 -125
- data/doc/files/lib/reports/TaskListRE_rb.html +0 -123
- data/doc/files/lib/reports/TextReport_rb.html +0 -117
- data/doc/files/lib/reports/TimeSheetReport_rb.html +0 -117
- data/doc/files/lib/reports/TjpExportRE_rb.html +0 -117
- data/doc/files/lib/taskjuggler3_rb.html +0 -298
- data/doc/files/lib/tj3client_rb.html +0 -280
- data/doc/files/lib/tj3man_rb.html +0 -190
- data/doc/fr_class_index.html +0 -345
- data/doc/fr_file_index.html +0 -247
- data/doc/fr_method_index.html +0 -2355
- data/doc/rdoc-style.css +0 -299
- data/lib/RemoteServiceManager.rb +0 -80
- data/lib/ReportServer.rb +0 -66
- data/test/TestSuite/HTML-Reports/Alerts.html +0 -172
- data/test/TestSuite/HTML-Reports/CellText.html +0 -758
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +0 -156
- data/test/TestSuite/HTML-Reports/IsOngoing.html +0 -172
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +0 -80
- data/test/TestSuite/HTML-Reports/Query.html +0 -31
- data/test/TestSuite/HTML-Reports/depArrows.html +0 -842
- data/test/TestSuite/Syntax/Correct/RawHTML.tjp +0 -31
- 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/scripts/wz_tooltip.js +0 -1301
- data/test/TestSuite/Syntax/Errors/export_bad_extn.tjp +0 -9
@@ -0,0 +1,2430 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
3
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
4
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
5
|
+
<head>
|
6
|
+
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
|
7
|
+
|
8
|
+
<title>Class: TaskJuggler::TextScanner</title>
|
9
|
+
|
10
|
+
<link rel="stylesheet" href="../rdoc.css" type="text/css" media="screen" />
|
11
|
+
|
12
|
+
<script src="../js/jquery.js" type="text/javascript"
|
13
|
+
charset="utf-8"></script>
|
14
|
+
<script src="../js/thickbox-compressed.js" type="text/javascript"
|
15
|
+
charset="utf-8"></script>
|
16
|
+
<script src="../js/quicksearch.js" type="text/javascript"
|
17
|
+
charset="utf-8"></script>
|
18
|
+
<script src="../js/darkfish.js" type="text/javascript"
|
19
|
+
charset="utf-8"></script>
|
20
|
+
|
21
|
+
</head>
|
22
|
+
<body class="class">
|
23
|
+
|
24
|
+
<div id="metadata">
|
25
|
+
<div id="home-metadata">
|
26
|
+
<div id="home-section" class="section">
|
27
|
+
<h3 class="section-header">
|
28
|
+
<a href="../index.html">Home</a>
|
29
|
+
<a href="../index.html#classes">Classes</a>
|
30
|
+
<a href="../index.html#methods">Methods</a>
|
31
|
+
</h3>
|
32
|
+
</div>
|
33
|
+
</div>
|
34
|
+
|
35
|
+
<div id="file-metadata">
|
36
|
+
<div id="file-list-section" class="section">
|
37
|
+
<h3 class="section-header">In Files</h3>
|
38
|
+
<div class="section-body">
|
39
|
+
<ul>
|
40
|
+
|
41
|
+
<li><a href="../lib/TextScanner_rb.html?TB_iframe=true&height=550&width=785"
|
42
|
+
class="thickbox" title="lib/TextScanner.rb">lib/TextScanner.rb</a></li>
|
43
|
+
|
44
|
+
</ul>
|
45
|
+
</div>
|
46
|
+
</div>
|
47
|
+
|
48
|
+
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div id="class-metadata">
|
52
|
+
|
53
|
+
<!-- Parent Class -->
|
54
|
+
|
55
|
+
<div id="parent-class-section" class="section">
|
56
|
+
<h3 class="section-header">Parent</h3>
|
57
|
+
|
58
|
+
<p class="link"><a href="../Object.html">Object</a></p>
|
59
|
+
|
60
|
+
</div>
|
61
|
+
|
62
|
+
|
63
|
+
<!-- Namespace Contents -->
|
64
|
+
|
65
|
+
<div id="namespace-list-section" class="section">
|
66
|
+
<h3 class="section-header">Namespace</h3>
|
67
|
+
<ul class="link-list">
|
68
|
+
|
69
|
+
<li><span class="type">CLASS</span> <a href="TextScanner/BufferStreamHandle.html">TaskJuggler::TextScanner::BufferStreamHandle</a></li>
|
70
|
+
|
71
|
+
<li><span class="type">CLASS</span> <a href="TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
72
|
+
|
73
|
+
<li><span class="type">CLASS</span> <a href="TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
74
|
+
|
75
|
+
</ul>
|
76
|
+
</div>
|
77
|
+
|
78
|
+
|
79
|
+
<!-- Method Quickref -->
|
80
|
+
|
81
|
+
<div id="method-list-section" class="section">
|
82
|
+
<h3 class="section-header">Methods</h3>
|
83
|
+
<ul class="link-list">
|
84
|
+
|
85
|
+
<li><a href="#M001128">::new</a></li>
|
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>
|
116
|
+
|
117
|
+
<li><a href="#M001153">#readDate</a></li>
|
118
|
+
|
119
|
+
<li><a href="#M001159">#readDigits</a></li>
|
120
|
+
|
121
|
+
<li><a href="#M001156">#readId</a></li>
|
122
|
+
|
123
|
+
<li><a href="#M001160">#readIdentifier</a></li>
|
124
|
+
|
125
|
+
<li><a href="#M001155">#readIndentedString</a></li>
|
126
|
+
|
127
|
+
<li><a href="#M001157">#readMacro</a></li>
|
128
|
+
|
129
|
+
<li><a href="#M001152">#readNumber</a></li>
|
130
|
+
|
131
|
+
<li><a href="#M001158">#readOperator</a></li>
|
132
|
+
|
133
|
+
<li><a href="#M001154">#readString</a></li>
|
134
|
+
|
135
|
+
<li><a href="#M001147">#returnChar</a></li>
|
136
|
+
|
137
|
+
<li><a href="#M001138">#returnToken</a></li>
|
138
|
+
|
139
|
+
<li><a href="#M001149">#skipCPlusPlusComments</a></li>
|
140
|
+
|
141
|
+
<li><a href="#M001148">#skipComment</a></li>
|
142
|
+
|
143
|
+
<li><a href="#M001132">#sourceFileInfo</a></li>
|
144
|
+
|
145
|
+
<li><a href="#M001143">#warning</a></li>
|
146
|
+
|
147
|
+
</ul>
|
148
|
+
</div>
|
149
|
+
|
150
|
+
|
151
|
+
<!-- Included Modules -->
|
152
|
+
|
153
|
+
</div>
|
154
|
+
|
155
|
+
<div id="project-metadata">
|
156
|
+
|
157
|
+
|
158
|
+
<div id="fileindex-section" class="section project-section">
|
159
|
+
<h3 class="section-header">Files</h3>
|
160
|
+
<ul>
|
161
|
+
|
162
|
+
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
163
|
+
|
164
|
+
<li class="file"><a href="../README.html">README</a></li>
|
165
|
+
|
166
|
+
</ul>
|
167
|
+
</div>
|
168
|
+
|
169
|
+
|
170
|
+
<div id="classindex-section" class="section project-section">
|
171
|
+
<h3 class="section-header">Class Index
|
172
|
+
<span class="search-toggle"><img src="../images/find.png"
|
173
|
+
height="16" width="16" alt="[+]"
|
174
|
+
title="show/hide quicksearch" /></span></h3>
|
175
|
+
<form action="#" method="get" accept-charset="utf-8" class="initially-hidden">
|
176
|
+
<fieldset>
|
177
|
+
<legend>Quicksearch</legend>
|
178
|
+
<input type="text" name="quicksearch" value=""
|
179
|
+
class="quicksearch-field" />
|
180
|
+
</fieldset>
|
181
|
+
</form>
|
182
|
+
|
183
|
+
<ul class="link-list">
|
184
|
+
|
185
|
+
<li><a href="../TaskJuggler.html">TaskJuggler</a></li>
|
186
|
+
|
187
|
+
<li><a href="../TaskJuggler/Account.html">TaskJuggler::Account</a></li>
|
188
|
+
|
189
|
+
<li><a href="../TaskJuggler/AccountAttribute.html">TaskJuggler::AccountAttribute</a></li>
|
190
|
+
|
191
|
+
<li><a href="../TaskJuggler/AccountScenario.html">TaskJuggler::AccountScenario</a></li>
|
192
|
+
|
193
|
+
<li><a href="../TaskJuggler/Allocation.html">TaskJuggler::Allocation</a></li>
|
194
|
+
|
195
|
+
<li><a href="../TaskJuggler/AllocationAttribute.html">TaskJuggler::AllocationAttribute</a></li>
|
196
|
+
|
197
|
+
<li><a href="../TaskJuggler/AttributeBase.html">TaskJuggler::AttributeBase</a></li>
|
198
|
+
|
199
|
+
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
200
|
+
|
201
|
+
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
202
|
+
|
203
|
+
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
204
|
+
|
205
|
+
<li><a href="../TaskJuggler/BookingListAttribute.html">TaskJuggler::BookingListAttribute</a></li>
|
206
|
+
|
207
|
+
<li><a href="../TaskJuggler/BooleanAttribute.html">TaskJuggler::BooleanAttribute</a></li>
|
208
|
+
|
209
|
+
<li><a href="../TaskJuggler/CSVFile.html">TaskJuggler::CSVFile</a></li>
|
210
|
+
|
211
|
+
<li><a href="../TaskJuggler/CellSettingPattern.html">TaskJuggler::CellSettingPattern</a></li>
|
212
|
+
|
213
|
+
<li><a href="../TaskJuggler/CellSettingPatternList.html">TaskJuggler::CellSettingPatternList</a></li>
|
214
|
+
|
215
|
+
<li><a href="../TaskJuggler/Charge.html">TaskJuggler::Charge</a></li>
|
216
|
+
|
217
|
+
<li><a href="../TaskJuggler/ChargeListAttribute.html">TaskJuggler::ChargeListAttribute</a></li>
|
218
|
+
|
219
|
+
<li><a href="../TaskJuggler/ChargeSet.html">TaskJuggler::ChargeSet</a></li>
|
220
|
+
|
221
|
+
<li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
|
222
|
+
|
223
|
+
<li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
|
224
|
+
|
225
|
+
<li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
|
226
|
+
|
227
|
+
<li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
|
228
|
+
|
229
|
+
<li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
|
230
|
+
|
231
|
+
<li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
|
232
|
+
|
233
|
+
<li><a href="../TaskJuggler/DependencyListAttribute.html">TaskJuggler::DependencyListAttribute</a></li>
|
234
|
+
|
235
|
+
<li><a href="../TaskJuggler/DurationAttribute.html">TaskJuggler::DurationAttribute</a></li>
|
236
|
+
|
237
|
+
<li><a href="../TaskJuggler/FixnumAttribute.html">TaskJuggler::FixnumAttribute</a></li>
|
238
|
+
|
239
|
+
<li><a href="../TaskJuggler/FlagListAttribute.html">TaskJuggler::FlagListAttribute</a></li>
|
240
|
+
|
241
|
+
<li><a href="../TaskJuggler/FloatAttribute.html">TaskJuggler::FloatAttribute</a></li>
|
242
|
+
|
243
|
+
<li><a href="../TaskJuggler/FormatListAttribute.html">TaskJuggler::FormatListAttribute</a></li>
|
244
|
+
|
245
|
+
<li><a href="../TaskJuggler/GanttChart.html">TaskJuggler::GanttChart</a></li>
|
246
|
+
|
247
|
+
<li><a href="../TaskJuggler/GanttContainer.html">TaskJuggler::GanttContainer</a></li>
|
248
|
+
|
249
|
+
<li><a href="../TaskJuggler/GanttHeader.html">TaskJuggler::GanttHeader</a></li>
|
250
|
+
|
251
|
+
<li><a href="../TaskJuggler/GanttHeaderScaleItem.html">TaskJuggler::GanttHeaderScaleItem</a></li>
|
252
|
+
|
253
|
+
<li><a href="../TaskJuggler/GanttLine.html">TaskJuggler::GanttLine</a></li>
|
254
|
+
|
255
|
+
<li><a href="../TaskJuggler/GanttLoadStack.html">TaskJuggler::GanttLoadStack</a></li>
|
256
|
+
|
257
|
+
<li><a href="../TaskJuggler/GanttMilestone.html">TaskJuggler::GanttMilestone</a></li>
|
258
|
+
|
259
|
+
<li><a href="../TaskJuggler/GanttRouter.html">TaskJuggler::GanttRouter</a></li>
|
260
|
+
|
261
|
+
<li><a href="../TaskJuggler/GanttTaskBar.html">TaskJuggler::GanttTaskBar</a></li>
|
262
|
+
|
263
|
+
<li><a href="../TaskJuggler/HTMLDocument.html">TaskJuggler::HTMLDocument</a></li>
|
264
|
+
|
265
|
+
<li><a href="../TaskJuggler/HTMLGraphics.html">TaskJuggler::HTMLGraphics</a></li>
|
266
|
+
|
267
|
+
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
268
|
+
|
269
|
+
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
270
|
+
|
271
|
+
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
272
|
+
|
273
|
+
<li><a href="../TaskJuggler/Journal.html">TaskJuggler::Journal</a></li>
|
274
|
+
|
275
|
+
<li><a href="../TaskJuggler/JournalEntry.html">TaskJuggler::JournalEntry</a></li>
|
276
|
+
|
277
|
+
<li><a href="../TaskJuggler/JournalEntryList.html">TaskJuggler::JournalEntryList</a></li>
|
278
|
+
|
279
|
+
<li><a href="../TaskJuggler/KeywordArray.html">TaskJuggler::KeywordArray</a></li>
|
280
|
+
|
281
|
+
<li><a href="../TaskJuggler/KeywordDocumentation.html">TaskJuggler::KeywordDocumentation</a></li>
|
282
|
+
|
283
|
+
<li><a href="../TaskJuggler/Limits.html">TaskJuggler::Limits</a></li>
|
284
|
+
|
285
|
+
<li><a href="../TaskJuggler/Limits/Limit.html">TaskJuggler::Limits::Limit</a></li>
|
286
|
+
|
287
|
+
<li><a href="../TaskJuggler/LimitsAttribute.html">TaskJuggler::LimitsAttribute</a></li>
|
288
|
+
|
289
|
+
<li><a href="../TaskJuggler/ListAttributeBase.html">TaskJuggler::ListAttributeBase</a></li>
|
290
|
+
|
291
|
+
<li><a href="../TaskJuggler/Log.html">TaskJuggler::Log</a></li>
|
292
|
+
|
293
|
+
<li><a href="../TaskJuggler/LogFile.html">TaskJuggler::LogFile</a></li>
|
294
|
+
|
295
|
+
<li><a href="../TaskJuggler/LogicalAttribute.html">TaskJuggler::LogicalAttribute</a></li>
|
296
|
+
|
297
|
+
<li><a href="../TaskJuggler/LogicalExpression.html">TaskJuggler::LogicalExpression</a></li>
|
298
|
+
|
299
|
+
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
300
|
+
|
301
|
+
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
302
|
+
|
303
|
+
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
304
|
+
|
305
|
+
<li><a href="../TaskJuggler/LogicalOperation.html">TaskJuggler::LogicalOperation</a></li>
|
306
|
+
|
307
|
+
<li><a href="../TaskJuggler/Macro.html">TaskJuggler::Macro</a></li>
|
308
|
+
|
309
|
+
<li><a href="../TaskJuggler/MacroParser.html">TaskJuggler::MacroParser</a></li>
|
310
|
+
|
311
|
+
<li><a href="../TaskJuggler/MacroTable.html">TaskJuggler::MacroTable</a></li>
|
312
|
+
|
313
|
+
<li><a href="../TaskJuggler/ManagerResponsibilities.html">TaskJuggler::ManagerResponsibilities</a></li>
|
314
|
+
|
315
|
+
<li><a href="../TaskJuggler/ManagerStatusRecord.html">TaskJuggler::ManagerStatusRecord</a></li>
|
316
|
+
|
317
|
+
<li><a href="../TaskJuggler/Message.html">TaskJuggler::Message</a></li>
|
318
|
+
|
319
|
+
<li><a href="../TaskJuggler/MessageHandler.html">TaskJuggler::MessageHandler</a></li>
|
320
|
+
|
321
|
+
<li><a href="../TaskJuggler/Navigator.html">TaskJuggler::Navigator</a></li>
|
322
|
+
|
323
|
+
<li><a href="../TaskJuggler/NavigatorElement.html">TaskJuggler::NavigatorElement</a></li>
|
324
|
+
|
325
|
+
<li><a href="../TaskJuggler/NikuProject.html">TaskJuggler::NikuProject</a></li>
|
326
|
+
|
327
|
+
<li><a href="../TaskJuggler/NikuReport.html">TaskJuggler::NikuReport</a></li>
|
328
|
+
|
329
|
+
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
330
|
+
|
331
|
+
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
332
|
+
|
333
|
+
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
334
|
+
|
335
|
+
<li><a href="../TaskJuggler/ProcessIntercomIface.html">TaskJuggler::ProcessIntercomIface</a></li>
|
336
|
+
|
337
|
+
<li><a href="../TaskJuggler/Project.html">TaskJuggler::Project</a></li>
|
338
|
+
|
339
|
+
<li><a href="../TaskJuggler/ProjectBroker.html">TaskJuggler::ProjectBroker</a></li>
|
340
|
+
|
341
|
+
<li><a href="../TaskJuggler/ProjectBrokerIface.html">TaskJuggler::ProjectBrokerIface</a></li>
|
342
|
+
|
343
|
+
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
344
|
+
|
345
|
+
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
346
|
+
|
347
|
+
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
348
|
+
|
349
|
+
<li><a href="../TaskJuggler/ProjectServerIface.html">TaskJuggler::ProjectServerIface</a></li>
|
350
|
+
|
351
|
+
<li><a href="../TaskJuggler/PropertyAttribute.html">TaskJuggler::PropertyAttribute</a></li>
|
352
|
+
|
353
|
+
<li><a href="../TaskJuggler/PropertyList.html">TaskJuggler::PropertyList</a></li>
|
354
|
+
|
355
|
+
<li><a href="../TaskJuggler/PropertySet.html">TaskJuggler::PropertySet</a></li>
|
356
|
+
|
357
|
+
<li><a href="../TaskJuggler/PropertyTreeNode.html">TaskJuggler::PropertyTreeNode</a></li>
|
358
|
+
|
359
|
+
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
360
|
+
|
361
|
+
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
362
|
+
|
363
|
+
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
364
|
+
|
365
|
+
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
366
|
+
|
367
|
+
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
368
|
+
|
369
|
+
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
370
|
+
|
371
|
+
<li><a href="../TaskJuggler/ReferenceAttribute.html">TaskJuggler::ReferenceAttribute</a></li>
|
372
|
+
|
373
|
+
<li><a href="../TaskJuggler/Report.html">TaskJuggler::Report</a></li>
|
374
|
+
|
375
|
+
<li><a href="../TaskJuggler/ReportBase.html">TaskJuggler::ReportBase</a></li>
|
376
|
+
|
377
|
+
<li><a href="../TaskJuggler/ReportContext.html">TaskJuggler::ReportContext</a></li>
|
378
|
+
|
379
|
+
<li><a href="../TaskJuggler/ReportServer.html">TaskJuggler::ReportServer</a></li>
|
380
|
+
|
381
|
+
<li><a href="../TaskJuggler/ReportServerIface.html">TaskJuggler::ReportServerIface</a></li>
|
382
|
+
|
383
|
+
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
384
|
+
|
385
|
+
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
386
|
+
|
387
|
+
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
388
|
+
|
389
|
+
<li><a href="../TaskJuggler/ReportTableColumn.html">TaskJuggler::ReportTableColumn</a></li>
|
390
|
+
|
391
|
+
<li><a href="../TaskJuggler/ReportTableLegend.html">TaskJuggler::ReportTableLegend</a></li>
|
392
|
+
|
393
|
+
<li><a href="../TaskJuggler/ReportTableLine.html">TaskJuggler::ReportTableLine</a></li>
|
394
|
+
|
395
|
+
<li><a href="../TaskJuggler/Resource.html">TaskJuggler::Resource</a></li>
|
396
|
+
|
397
|
+
<li><a href="../TaskJuggler/ResourceListAttribute.html">TaskJuggler::ResourceListAttribute</a></li>
|
398
|
+
|
399
|
+
<li><a href="../TaskJuggler/ResourceListRE.html">TaskJuggler::ResourceListRE</a></li>
|
400
|
+
|
401
|
+
<li><a href="../TaskJuggler/ResourceScenario.html">TaskJuggler::ResourceScenario</a></li>
|
402
|
+
|
403
|
+
<li><a href="../TaskJuggler/RichText.html">TaskJuggler::RichText</a></li>
|
404
|
+
|
405
|
+
<li><a href="../TaskJuggler/RichTextAttribute.html">TaskJuggler::RichTextAttribute</a></li>
|
406
|
+
|
407
|
+
<li><a href="../TaskJuggler/RichTextDocument.html">TaskJuggler::RichTextDocument</a></li>
|
408
|
+
|
409
|
+
<li><a href="../TaskJuggler/RichTextElement.html">TaskJuggler::RichTextElement</a></li>
|
410
|
+
|
411
|
+
<li><a href="../TaskJuggler/RichTextException.html">TaskJuggler::RichTextException</a></li>
|
412
|
+
|
413
|
+
<li><a href="../TaskJuggler/RichTextFunctionExample.html">TaskJuggler::RichTextFunctionExample</a></li>
|
414
|
+
|
415
|
+
<li><a href="../TaskJuggler/RichTextFunctionHandler.html">TaskJuggler::RichTextFunctionHandler</a></li>
|
416
|
+
|
417
|
+
<li><a href="../TaskJuggler/RichTextImage.html">TaskJuggler::RichTextImage</a></li>
|
418
|
+
|
419
|
+
<li><a href="../TaskJuggler/RichTextIntermediate.html">TaskJuggler::RichTextIntermediate</a></li>
|
420
|
+
|
421
|
+
<li><a href="../TaskJuggler/RichTextParser.html">TaskJuggler::RichTextParser</a></li>
|
422
|
+
|
423
|
+
<li><a href="../TaskJuggler/RichTextScanner.html">TaskJuggler::RichTextScanner</a></li>
|
424
|
+
|
425
|
+
<li><a href="../TaskJuggler/RichTextSnip.html">TaskJuggler::RichTextSnip</a></li>
|
426
|
+
|
427
|
+
<li><a href="../TaskJuggler/RichTextSyntaxRules.html">TaskJuggler::RichTextSyntaxRules</a></li>
|
428
|
+
|
429
|
+
<li><a href="../TaskJuggler/Scenario.html">TaskJuggler::Scenario</a></li>
|
430
|
+
|
431
|
+
<li><a href="../TaskJuggler/ScenarioData.html">TaskJuggler::ScenarioData</a></li>
|
432
|
+
|
433
|
+
<li><a href="../TaskJuggler/ScenarioListAttribute.html">TaskJuggler::ScenarioListAttribute</a></li>
|
434
|
+
|
435
|
+
<li><a href="../TaskJuggler/Scoreboard.html">TaskJuggler::Scoreboard</a></li>
|
436
|
+
|
437
|
+
<li><a href="../TaskJuggler/SheetHandlerBase.html">TaskJuggler::SheetHandlerBase</a></li>
|
438
|
+
|
439
|
+
<li><a href="../TaskJuggler/SheetReceiver.html">TaskJuggler::SheetReceiver</a></li>
|
440
|
+
|
441
|
+
<li><a href="../TaskJuggler/SheetSender.html">TaskJuggler::SheetSender</a></li>
|
442
|
+
|
443
|
+
<li><a href="../TaskJuggler/Shift.html">TaskJuggler::Shift</a></li>
|
444
|
+
|
445
|
+
<li><a href="../TaskJuggler/ShiftAssignment.html">TaskJuggler::ShiftAssignment</a></li>
|
446
|
+
|
447
|
+
<li><a href="../TaskJuggler/ShiftAssignments.html">TaskJuggler::ShiftAssignments</a></li>
|
448
|
+
|
449
|
+
<li><a href="../TaskJuggler/ShiftAssignmentsAttribute.html">TaskJuggler::ShiftAssignmentsAttribute</a></li>
|
450
|
+
|
451
|
+
<li><a href="../TaskJuggler/ShiftScenario.html">TaskJuggler::ShiftScenario</a></li>
|
452
|
+
|
453
|
+
<li><a href="../TaskJuggler/SortListAttribute.html">TaskJuggler::SortListAttribute</a></li>
|
454
|
+
|
455
|
+
<li><a href="../TaskJuggler/SourceFileInfo.html">TaskJuggler::SourceFileInfo</a></li>
|
456
|
+
|
457
|
+
<li><a href="../TaskJuggler/StatusSheetReceiver.html">TaskJuggler::StatusSheetReceiver</a></li>
|
458
|
+
|
459
|
+
<li><a href="../TaskJuggler/StatusSheetReport.html">TaskJuggler::StatusSheetReport</a></li>
|
460
|
+
|
461
|
+
<li><a href="../TaskJuggler/StatusSheetSender.html">TaskJuggler::StatusSheetSender</a></li>
|
462
|
+
|
463
|
+
<li><a href="../TaskJuggler/StringAttribute.html">TaskJuggler::StringAttribute</a></li>
|
464
|
+
|
465
|
+
<li><a href="../TaskJuggler/SymbolAttribute.html">TaskJuggler::SymbolAttribute</a></li>
|
466
|
+
|
467
|
+
<li><a href="../TaskJuggler/SyntaxReference.html">TaskJuggler::SyntaxReference</a></li>
|
468
|
+
|
469
|
+
<li><a href="../TaskJuggler/TOCEntry.html">TaskJuggler::TOCEntry</a></li>
|
470
|
+
|
471
|
+
<li><a href="../TaskJuggler/TSResourceRecord.html">TaskJuggler::TSResourceRecord</a></li>
|
472
|
+
|
473
|
+
<li><a href="../TaskJuggler/TSTaskRecord.html">TaskJuggler::TSTaskRecord</a></li>
|
474
|
+
|
475
|
+
<li><a href="../TaskJuggler/TableColumnDefinition.html">TaskJuggler::TableColumnDefinition</a></li>
|
476
|
+
|
477
|
+
<li><a href="../TaskJuggler/TableOfContents.html">TaskJuggler::TableOfContents</a></li>
|
478
|
+
|
479
|
+
<li><a href="../TaskJuggler/TableReport.html">TaskJuggler::TableReport</a></li>
|
480
|
+
|
481
|
+
<li><a href="../TaskJuggler/Task.html">TaskJuggler::Task</a></li>
|
482
|
+
|
483
|
+
<li><a href="../TaskJuggler/TaskDependency.html">TaskJuggler::TaskDependency</a></li>
|
484
|
+
|
485
|
+
<li><a href="../TaskJuggler/TaskListAttribute.html">TaskJuggler::TaskListAttribute</a></li>
|
486
|
+
|
487
|
+
<li><a href="../TaskJuggler/TaskListRE.html">TaskJuggler::TaskListRE</a></li>
|
488
|
+
|
489
|
+
<li><a href="../TaskJuggler/TaskScenario.html">TaskJuggler::TaskScenario</a></li>
|
490
|
+
|
491
|
+
<li><a href="../TaskJuggler/TextFormatter.html">TaskJuggler::TextFormatter</a></li>
|
492
|
+
|
493
|
+
<li><a href="../TaskJuggler/TextParser.html">TaskJuggler::TextParser</a></li>
|
494
|
+
|
495
|
+
<li><a href="../TaskJuggler/TextParser/Pattern.html">TaskJuggler::TextParser::Pattern</a></li>
|
496
|
+
|
497
|
+
<li><a href="../TaskJuggler/TextParser/Rule.html">TaskJuggler::TextParser::Rule</a></li>
|
498
|
+
|
499
|
+
<li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
|
500
|
+
|
501
|
+
<li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
|
502
|
+
|
503
|
+
<li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
|
504
|
+
|
505
|
+
<li><a href="../TaskJuggler/TextReport.html">TaskJuggler::TextReport</a></li>
|
506
|
+
|
507
|
+
<li><a href="../TaskJuggler/TextScanner.html">TaskJuggler::TextScanner</a></li>
|
508
|
+
|
509
|
+
<li><a href="../TaskJuggler/TextScanner/BufferStreamHandle.html">TaskJuggler::TextScanner::BufferStreamHandle</a></li>
|
510
|
+
|
511
|
+
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
512
|
+
|
513
|
+
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
514
|
+
|
515
|
+
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
516
|
+
|
517
|
+
<li><a href="../TaskJuggler/TimeSheetReceiver.html">TaskJuggler::TimeSheetReceiver</a></li>
|
518
|
+
|
519
|
+
<li><a href="../TaskJuggler/TimeSheetRecord.html">TaskJuggler::TimeSheetRecord</a></li>
|
520
|
+
|
521
|
+
<li><a href="../TaskJuggler/TimeSheetReport.html">TaskJuggler::TimeSheetReport</a></li>
|
522
|
+
|
523
|
+
<li><a href="../TaskJuggler/TimeSheetSender.html">TaskJuggler::TimeSheetSender</a></li>
|
524
|
+
|
525
|
+
<li><a href="../TaskJuggler/TimeSheetSummary.html">TaskJuggler::TimeSheetSummary</a></li>
|
526
|
+
|
527
|
+
<li><a href="../TaskJuggler/TimeSheets.html">TaskJuggler::TimeSheets</a></li>
|
528
|
+
|
529
|
+
<li><a href="../TaskJuggler/Tj3AppBase.html">TaskJuggler::Tj3AppBase</a></li>
|
530
|
+
|
531
|
+
<li><a href="../TaskJuggler/Tj3Client.html">TaskJuggler::Tj3Client</a></li>
|
532
|
+
|
533
|
+
<li><a href="../TaskJuggler/Tj3Daemon.html">TaskJuggler::Tj3Daemon</a></li>
|
534
|
+
|
535
|
+
<li><a href="../TaskJuggler/Tj3SheetAppBase.html">TaskJuggler::Tj3SheetAppBase</a></li>
|
536
|
+
|
537
|
+
<li><a href="../TaskJuggler/Tj3SsReceiver.html">TaskJuggler::Tj3SsReceiver</a></li>
|
538
|
+
|
539
|
+
<li><a href="../TaskJuggler/Tj3SsSender.html">TaskJuggler::Tj3SsSender</a></li>
|
540
|
+
|
541
|
+
<li><a href="../TaskJuggler/Tj3TsReceiver.html">TaskJuggler::Tj3TsReceiver</a></li>
|
542
|
+
|
543
|
+
<li><a href="../TaskJuggler/Tj3TsSender.html">TaskJuggler::Tj3TsSender</a></li>
|
544
|
+
|
545
|
+
<li><a href="../TaskJuggler/Tj3TsSummary.html">TaskJuggler::Tj3TsSummary</a></li>
|
546
|
+
|
547
|
+
<li><a href="../TaskJuggler/TjException.html">TaskJuggler::TjException</a></li>
|
548
|
+
|
549
|
+
<li><a href="../TaskJuggler/TjTime.html">TaskJuggler::TjTime</a></li>
|
550
|
+
|
551
|
+
<li><a href="../TaskJuggler/TjpExample.html">TaskJuggler::TjpExample</a></li>
|
552
|
+
|
553
|
+
<li><a href="../TaskJuggler/TjpExportRE.html">TaskJuggler::TjpExportRE</a></li>
|
554
|
+
|
555
|
+
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
556
|
+
|
557
|
+
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
558
|
+
|
559
|
+
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
560
|
+
|
561
|
+
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
562
|
+
|
563
|
+
<li><a href="../TaskJuggler/XMLBlob.html">TaskJuggler::XMLBlob</a></li>
|
564
|
+
|
565
|
+
<li><a href="../TaskJuggler/XMLComment.html">TaskJuggler::XMLComment</a></li>
|
566
|
+
|
567
|
+
<li><a href="../TaskJuggler/XMLDocument.html">TaskJuggler::XMLDocument</a></li>
|
568
|
+
|
569
|
+
<li><a href="../TaskJuggler/XMLElement.html">TaskJuggler::XMLElement</a></li>
|
570
|
+
|
571
|
+
<li><a href="../TaskJuggler/XMLNamedText.html">TaskJuggler::XMLNamedText</a></li>
|
572
|
+
|
573
|
+
<li><a href="../TaskJuggler/XMLText.html">TaskJuggler::XMLText</a></li>
|
574
|
+
|
575
|
+
<li><a href="../AppConfig.html">AppConfig</a></li>
|
576
|
+
|
577
|
+
<li><a href="../Arguments.html">Arguments</a></li>
|
578
|
+
|
579
|
+
<li><a href="../Object.html">Object</a></li>
|
580
|
+
|
581
|
+
<li><a href="../RuntimeConfig.html">RuntimeConfig</a></li>
|
582
|
+
|
583
|
+
<li><a href="../String.html">String</a></li>
|
584
|
+
|
585
|
+
</ul>
|
586
|
+
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
587
|
+
</div>
|
588
|
+
|
589
|
+
|
590
|
+
</div>
|
591
|
+
</div>
|
592
|
+
|
593
|
+
<div id="documentation">
|
594
|
+
<h1 class="class">TaskJuggler::TextScanner</h1>
|
595
|
+
|
596
|
+
<div id="description">
|
597
|
+
<p>
|
598
|
+
The <a href="TextScanner.html">TextScanner</a> class can scan text files
|
599
|
+
and chop then into tokens to be used by a parser. Files can be nested. A
|
600
|
+
file can include an other file.
|
601
|
+
</p>
|
602
|
+
|
603
|
+
</div>
|
604
|
+
|
605
|
+
<!-- Constants -->
|
606
|
+
|
607
|
+
|
608
|
+
<!-- Attributes -->
|
609
|
+
|
610
|
+
|
611
|
+
<!-- Methods -->
|
612
|
+
|
613
|
+
<div id="public-class-method-details" class="method-section section">
|
614
|
+
<h3 class="section-header">Public Class Methods</h3>
|
615
|
+
|
616
|
+
|
617
|
+
<div id="new-method" class="method-detail ">
|
618
|
+
<a name="M001128"></a>
|
619
|
+
|
620
|
+
<div class="method-heading">
|
621
|
+
|
622
|
+
<span class="method-name">new</span><span
|
623
|
+
class="method-args">(masterFile, messageHandler)</span>
|
624
|
+
<span class="method-click-advice">click to toggle source</span>
|
625
|
+
|
626
|
+
</div>
|
627
|
+
|
628
|
+
<div class="method-description">
|
629
|
+
|
630
|
+
<p>
|
631
|
+
Create a new instance of <a href="TextScanner.html">TextScanner</a>.
|
632
|
+
<em>masterFile</em> must be a <a href="../String.html">String</a> that
|
633
|
+
either contains the name of the file to start with or the text itself.
|
634
|
+
<em>messageHandler</em> is a <a
|
635
|
+
href="MessageHandler.html">MessageHandler</a> that is used for error
|
636
|
+
messages.
|
637
|
+
</p>
|
638
|
+
|
639
|
+
|
640
|
+
|
641
|
+
<div class="method-source-code"
|
642
|
+
id="new-source">
|
643
|
+
<pre>
|
644
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 158</span>
|
645
|
+
158: <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>)
|
646
|
+
159: <span class="ruby-ivar">@masterFile</span> = <span class="ruby-identifier">masterFile</span>
|
647
|
+
160: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
|
648
|
+
161: <span class="ruby-comment cmt"># This table contains all macros that may be expanded when found in the</span>
|
649
|
+
162: <span class="ruby-comment cmt"># text.</span>
|
650
|
+
163: <span class="ruby-ivar">@macroTable</span> = <span class="ruby-constant">MacroTable</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">messageHandler</span>)
|
651
|
+
164: <span class="ruby-comment cmt"># This Array stores the currently processed nested files. It's an Array</span>
|
652
|
+
165: <span class="ruby-comment cmt"># of Arrays. The nested Array consists of 3 elements, the @cf,</span>
|
653
|
+
166: <span class="ruby-comment cmt"># @tokenBuffer and the @pos of the file.</span>
|
654
|
+
167: <span class="ruby-ivar">@fileStack</span> = []
|
655
|
+
168: <span class="ruby-comment cmt"># This Array stores the currently processed nested macros.</span>
|
656
|
+
169: <span class="ruby-ivar">@macroStack</span> = []
|
657
|
+
170: <span class="ruby-comment cmt"># In certain situation we want to ignore Macro replacement and this flag</span>
|
658
|
+
171: <span class="ruby-comment cmt"># is set to true.</span>
|
659
|
+
172: <span class="ruby-ivar">@ignoreMacros</span> = <span class="ruby-keyword kw">false</span>
|
660
|
+
173: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-keyword kw">false</span>
|
661
|
+
174: <span class="ruby-keyword kw">end</span></pre>
|
662
|
+
</div>
|
663
|
+
|
664
|
+
</div>
|
665
|
+
|
666
|
+
|
667
|
+
|
668
|
+
|
669
|
+
</div>
|
670
|
+
|
671
|
+
|
672
|
+
</div>
|
673
|
+
|
674
|
+
<div id="public-instance-method-details" class="method-section section">
|
675
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
676
|
+
|
677
|
+
|
678
|
+
<div id="add-acro-method" class="method-detail ">
|
679
|
+
<a name="M001139"></a>
|
680
|
+
|
681
|
+
<div class="method-heading">
|
682
|
+
|
683
|
+
<span class="method-name">addMacro</span><span
|
684
|
+
class="method-args">(macro)</span>
|
685
|
+
<span class="method-click-advice">click to toggle source</span>
|
686
|
+
|
687
|
+
</div>
|
688
|
+
|
689
|
+
<div class="method-description">
|
690
|
+
|
691
|
+
<p>
|
692
|
+
Add a <a href="Macro.html">Macro</a> to the macro translation table.
|
693
|
+
</p>
|
694
|
+
|
695
|
+
|
696
|
+
|
697
|
+
<div class="method-source-code"
|
698
|
+
id="add-acro-source">
|
699
|
+
<pre>
|
700
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 347</span>
|
701
|
+
347: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addMacro</span>(<span class="ruby-identifier">macro</span>)
|
702
|
+
348: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">add</span>(<span class="ruby-identifier">macro</span>)
|
703
|
+
349: <span class="ruby-keyword kw">end</span></pre>
|
704
|
+
</div>
|
705
|
+
|
706
|
+
</div>
|
707
|
+
|
708
|
+
|
709
|
+
|
710
|
+
|
711
|
+
</div>
|
712
|
+
|
713
|
+
|
714
|
+
<div id="close-method" class="method-detail ">
|
715
|
+
<a name="M001130"></a>
|
716
|
+
|
717
|
+
<div class="method-heading">
|
718
|
+
|
719
|
+
<span class="method-name">close</span><span
|
720
|
+
class="method-args">()</span>
|
721
|
+
<span class="method-click-advice">click to toggle source</span>
|
722
|
+
|
723
|
+
</div>
|
724
|
+
|
725
|
+
<div class="method-description">
|
726
|
+
|
727
|
+
<p>
|
728
|
+
Finish processing and reset all data structures.
|
729
|
+
</p>
|
730
|
+
|
731
|
+
|
732
|
+
|
733
|
+
<div class="method-source-code"
|
734
|
+
id="close-source">
|
735
|
+
<pre>
|
736
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 194</span>
|
737
|
+
194: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">close</span>
|
738
|
+
195: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@fileNameIsBuffer</span>
|
739
|
+
196: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">startProgressMeter</span>(<span class="ruby-node">"Reading file #{@masterFile}"</span>)
|
740
|
+
197: <span class="ruby-constant">Log</span>.<span class="ruby-identifier">stopProgressMeter</span>
|
741
|
+
198: <span class="ruby-keyword kw">end</span>
|
742
|
+
199: <span class="ruby-ivar">@fileStack</span> = []
|
743
|
+
200: <span class="ruby-ivar">@cf</span> = <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
744
|
+
201: <span class="ruby-keyword kw">end</span></pre>
|
745
|
+
</div>
|
746
|
+
|
747
|
+
</div>
|
748
|
+
|
749
|
+
|
750
|
+
|
751
|
+
|
752
|
+
</div>
|
753
|
+
|
754
|
+
|
755
|
+
<div id="error-method" class="method-detail ">
|
756
|
+
<a name="M001142"></a>
|
757
|
+
|
758
|
+
<div class="method-heading">
|
759
|
+
|
760
|
+
<span class="method-name">error</span><span
|
761
|
+
class="method-args">(id, text, property = nil)</span>
|
762
|
+
<span class="method-click-advice">click to toggle source</span>
|
763
|
+
|
764
|
+
</div>
|
765
|
+
|
766
|
+
<div class="method-description">
|
767
|
+
|
768
|
+
<p>
|
769
|
+
Call this function to report any errors related to the parsed input.
|
770
|
+
</p>
|
771
|
+
|
772
|
+
|
773
|
+
|
774
|
+
<div class="method-source-code"
|
775
|
+
id="error-source">
|
776
|
+
<pre>
|
777
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 373</span>
|
778
|
+
373: <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>)
|
779
|
+
374: <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>)
|
780
|
+
375: <span class="ruby-keyword kw">end</span></pre>
|
781
|
+
</div>
|
782
|
+
|
783
|
+
</div>
|
784
|
+
|
785
|
+
|
786
|
+
|
787
|
+
|
788
|
+
</div>
|
789
|
+
|
790
|
+
|
791
|
+
<div id="expand-acro-method" class="method-detail ">
|
792
|
+
<a name="M001141"></a>
|
793
|
+
|
794
|
+
<div class="method-heading">
|
795
|
+
|
796
|
+
<span class="method-name">expandMacro</span><span
|
797
|
+
class="method-args">(args)</span>
|
798
|
+
<span class="method-click-advice">click to toggle source</span>
|
799
|
+
|
800
|
+
</div>
|
801
|
+
|
802
|
+
<div class="method-description">
|
803
|
+
|
804
|
+
|
805
|
+
|
806
|
+
|
807
|
+
|
808
|
+
<div class="method-source-code"
|
809
|
+
id="expand-acro-source">
|
810
|
+
<pre>
|
811
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 356</span>
|
812
|
+
356: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">expandMacro</span>(<span class="ruby-identifier">args</span>)
|
813
|
+
357: <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>)
|
814
|
+
358: <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>
|
815
|
+
359:
|
816
|
+
360: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@macroStack</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">20</span>
|
817
|
+
361: <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>)
|
818
|
+
362: <span class="ruby-keyword kw">end</span>
|
819
|
+
363: <span class="ruby-ivar">@macroStack</span> <span class="ruby-operator"><<</span> [ <span class="ruby-identifier">macro</span>, <span class="ruby-identifier">args</span> ]
|
820
|
+
364: <span class="ruby-comment cmt"># Mark end of macro with a 0 element</span>
|
821
|
+
365: <span class="ruby-ivar">@cf</span>.<span class="ruby-identifier">charBuffer</span> <span class="ruby-operator"><<</span> <span class="ruby-value">0</span>
|
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>
|
827
|
+
</div>
|
828
|
+
|
829
|
+
</div>
|
830
|
+
|
831
|
+
|
832
|
+
|
833
|
+
|
834
|
+
</div>
|
835
|
+
|
836
|
+
|
837
|
+
<div id="file-ame-method" class="method-detail ">
|
838
|
+
<a name="M001133"></a>
|
839
|
+
|
840
|
+
<div class="method-heading">
|
841
|
+
|
842
|
+
<span class="method-name">fileName</span><span
|
843
|
+
class="method-args">()</span>
|
844
|
+
<span class="method-click-advice">click to toggle source</span>
|
845
|
+
|
846
|
+
</div>
|
847
|
+
|
848
|
+
<div class="method-description">
|
849
|
+
|
850
|
+
<p>
|
851
|
+
Return the name of the currently processed file. If we are working on a
|
852
|
+
text buffer, the text will be returned.
|
853
|
+
</p>
|
854
|
+
|
855
|
+
|
856
|
+
|
857
|
+
<div class="method-source-code"
|
858
|
+
id="file-ame-source">
|
859
|
+
<pre>
|
860
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 247</span>
|
861
|
+
247: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">fileName</span>
|
862
|
+
248: <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>
|
863
|
+
249: <span class="ruby-keyword kw">end</span></pre>
|
864
|
+
</div>
|
865
|
+
|
866
|
+
</div>
|
867
|
+
|
868
|
+
|
869
|
+
|
870
|
+
|
871
|
+
</div>
|
872
|
+
|
873
|
+
|
874
|
+
<div id="include-method" class="method-detail ">
|
875
|
+
<a name="M001131"></a>
|
876
|
+
|
877
|
+
<div class="method-heading">
|
878
|
+
|
879
|
+
<span class="method-name">include</span><span
|
880
|
+
class="method-args">(fileName)</span>
|
881
|
+
<span class="method-click-advice">click to toggle source</span>
|
882
|
+
|
883
|
+
</div>
|
884
|
+
|
885
|
+
<div class="method-description">
|
886
|
+
|
887
|
+
<p>
|
888
|
+
Continue processing with a new file specified by <em>fileName</em>. When
|
889
|
+
this file is finished, we will continue in the old file after the location
|
890
|
+
where we started with the new file.
|
891
|
+
</p>
|
892
|
+
|
893
|
+
|
894
|
+
|
895
|
+
<div class="method-source-code"
|
896
|
+
id="include-source">
|
897
|
+
<pre>
|
898
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 206</span>
|
899
|
+
206: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">include</span>(<span class="ruby-identifier">fileName</span>)
|
900
|
+
207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fileName</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">!=</span> <span class="ruby-value str">'/'</span>
|
901
|
+
208: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">empty?</span>
|
902
|
+
209: <span class="ruby-identifier">path</span> = <span class="ruby-ivar">@masterPath</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'./'</span> <span class="ruby-operator">?</span> <span class="ruby-value str">''</span> <span class="ruby-operator">:</span> <span class="ruby-ivar">@masterPath</span>
|
903
|
+
210: <span class="ruby-keyword kw">else</span>
|
904
|
+
211: <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>
|
905
|
+
212: <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>
|
906
|
+
213: <span class="ruby-ivar">@fileStack</span>.<span class="ruby-identifier">last</span>[<span class="ruby-value">1</span>, <span class="ruby-value">2</span>] = [ <span class="ruby-ivar">@tokenBuffer</span>, <span class="ruby-ivar">@pos</span> ]
|
907
|
+
214: <span class="ruby-keyword kw">end</span>
|
908
|
+
215: <span class="ruby-comment cmt"># If the included file is not an absolute name, we interpret the file</span>
|
909
|
+
216: <span class="ruby-comment cmt"># name relative to the including file.</span>
|
910
|
+
217: <span class="ruby-identifier">fileName</span> = <span class="ruby-identifier">path</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">fileName</span>
|
911
|
+
218: <span class="ruby-keyword kw">end</span>
|
912
|
+
219:
|
913
|
+
220: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
914
|
+
221:
|
915
|
+
222: <span class="ruby-comment cmt"># Check the current file stack to find recusions.</span>
|
916
|
+
223: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@pos</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@pos</span>.<span class="ruby-identifier">fileName</span>
|
917
|
+
224: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'include_recursion'</span>, <span class="ruby-node">"Recursive inclusion of #{fileName} detected"</span>)
|
918
|
+
225: <span class="ruby-keyword kw">else</span>
|
919
|
+
226: <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>
|
920
|
+
227: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">entry</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">fileName</span>
|
921
|
+
228: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'include_recursion'</span>, <span class="ruby-node">"Recursive inclusion of #{fileName} "</span> <span class="ruby-operator">+</span>
|
922
|
+
229: <span class="ruby-value str">"detected"</span>)
|
923
|
+
230: <span class="ruby-keyword kw">end</span>
|
924
|
+
231: <span class="ruby-keyword kw">end</span>
|
925
|
+
232: <span class="ruby-keyword kw">end</span>
|
926
|
+
233: <span class="ruby-keyword kw">begin</span>
|
927
|
+
234: <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">fileName</span>)), <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span> ]
|
928
|
+
235: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
|
929
|
+
236: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'bad_include'</span>, <span class="ruby-node">"Cannot open include file #{fileName}"</span>)
|
930
|
+
237: <span class="ruby-keyword kw">end</span>
|
931
|
+
238: <span class="ruby-keyword kw">end</span></pre>
|
932
|
+
</div>
|
933
|
+
|
934
|
+
</div>
|
935
|
+
|
936
|
+
|
937
|
+
|
938
|
+
|
939
|
+
</div>
|
940
|
+
|
941
|
+
|
942
|
+
<div id="macro-efined--method" class="method-detail ">
|
943
|
+
<a name="M001140"></a>
|
944
|
+
|
945
|
+
<div class="method-heading">
|
946
|
+
|
947
|
+
<span class="method-name">macroDefined?</span><span
|
948
|
+
class="method-args">(name)</span>
|
949
|
+
<span class="method-click-advice">click to toggle source</span>
|
950
|
+
|
951
|
+
</div>
|
952
|
+
|
953
|
+
<div class="method-description">
|
954
|
+
|
955
|
+
<p>
|
956
|
+
Return true if the <a href="Macro.html">Macro</a> <em>name</em> has been
|
957
|
+
added already.
|
958
|
+
</p>
|
959
|
+
|
960
|
+
|
961
|
+
|
962
|
+
<div class="method-source-code"
|
963
|
+
id="macro-efined--source">
|
964
|
+
<pre>
|
965
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 352</span>
|
966
|
+
352: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">macroDefined?</span>(<span class="ruby-identifier">name</span>)
|
967
|
+
353: <span class="ruby-ivar">@macroTable</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">name</span>)
|
968
|
+
354: <span class="ruby-keyword kw">end</span></pre>
|
969
|
+
</div>
|
970
|
+
|
971
|
+
</div>
|
972
|
+
|
973
|
+
|
974
|
+
|
975
|
+
|
976
|
+
</div>
|
977
|
+
|
978
|
+
|
979
|
+
<div id="message-method" class="method-detail ">
|
980
|
+
<a name="M001144"></a>
|
981
|
+
|
982
|
+
<div class="method-heading">
|
983
|
+
|
984
|
+
<span class="method-name">message</span><span
|
985
|
+
class="method-args">(type, id, text, property)</span>
|
986
|
+
<span class="method-click-advice">click to toggle source</span>
|
987
|
+
|
988
|
+
</div>
|
989
|
+
|
990
|
+
<div class="method-description">
|
991
|
+
|
992
|
+
|
993
|
+
|
994
|
+
|
995
|
+
|
996
|
+
<div class="method-source-code"
|
997
|
+
id="message-source">
|
998
|
+
<pre>
|
999
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 381</span>
|
1000
|
+
381: <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>)
|
1001
|
+
382: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">text</span>.<span class="ruby-identifier">empty?</span>
|
1002
|
+
383: <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>,
|
1003
|
+
384: <span class="ruby-identifier">property</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">sourceFileInfo</span>)
|
1004
|
+
385: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
|
1005
|
+
386:
|
1006
|
+
387: <span class="ruby-keyword kw">until</span> <span class="ruby-ivar">@macroStack</span>.<span class="ruby-identifier">empty?</span>
|
1007
|
+
388: <span class="ruby-identifier">macro</span>, <span class="ruby-identifier">args</span> = <span class="ruby-ivar">@macroStack</span>.<span class="ruby-identifier">pop</span>
|
1008
|
+
389: <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> }
|
1009
|
+
390: <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>,
|
1010
|
+
391: <span class="ruby-node">" #{macro.name} #{args.join(' ')}"</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span>,
|
1011
|
+
392: <span class="ruby-identifier">macro</span>.<span class="ruby-identifier">sourceFileInfo</span>)
|
1012
|
+
393: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">send</span>(<span class="ruby-identifier">message</span>)
|
1013
|
+
394: <span class="ruby-keyword kw">end</span>
|
1014
|
+
395: <span class="ruby-keyword kw">end</span>
|
1015
|
+
396:
|
1016
|
+
397: <span class="ruby-comment cmt"># An empty strings signals an already reported error</span>
|
1017
|
+
398: <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>
|
1018
|
+
399: <span class="ruby-keyword kw">end</span></pre>
|
1019
|
+
</div>
|
1020
|
+
|
1021
|
+
</div>
|
1022
|
+
|
1023
|
+
|
1024
|
+
|
1025
|
+
|
1026
|
+
</div>
|
1027
|
+
|
1028
|
+
|
1029
|
+
<div id="next-oken-method" class="method-detail ">
|
1030
|
+
<a name="M001137"></a>
|
1031
|
+
|
1032
|
+
<div class="method-heading">
|
1033
|
+
|
1034
|
+
<span class="method-name">nextToken</span><span
|
1035
|
+
class="method-args">()</span>
|
1036
|
+
<span class="method-click-advice">click to toggle source</span>
|
1037
|
+
|
1038
|
+
</div>
|
1039
|
+
|
1040
|
+
<div class="method-description">
|
1041
|
+
|
1042
|
+
<p>
|
1043
|
+
Scan for the next token in the input stream and return it. The result will
|
1044
|
+
be an Array of the form [ TokenType, TokenValue ].
|
1045
|
+
</p>
|
1046
|
+
|
1047
|
+
|
1048
|
+
|
1049
|
+
<div class="method-source-code"
|
1050
|
+
id="next-oken-source">
|
1051
|
+
<pre>
|
1052
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 265</span>
|
1053
|
+
265: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">nextToken</span>
|
1054
|
+
266: <span class="ruby-comment cmt"># If we have a pushed-back token, return that first.</span>
|
1055
|
+
267: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
|
1056
|
+
268: <span class="ruby-identifier">res</span> = <span class="ruby-ivar">@tokenBuffer</span>
|
1057
|
+
269: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-keyword kw">nil</span>
|
1058
|
+
270: <span class="ruby-ivar">@pos</span> = <span class="ruby-ivar">@tokenBufferPos</span>
|
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>
|
1121
|
+
</div>
|
1122
|
+
|
1123
|
+
</div>
|
1124
|
+
|
1125
|
+
|
1126
|
+
|
1127
|
+
|
1128
|
+
</div>
|
1129
|
+
|
1130
|
+
|
1131
|
+
<div id="open-method" class="method-detail ">
|
1132
|
+
<a name="M001129"></a>
|
1133
|
+
|
1134
|
+
<div class="method-heading">
|
1135
|
+
|
1136
|
+
<span class="method-name">open</span><span
|
1137
|
+
class="method-args">(fileNameIsBuffer = false)</span>
|
1138
|
+
<span class="method-click-advice">click to toggle source</span>
|
1139
|
+
|
1140
|
+
</div>
|
1141
|
+
|
1142
|
+
<div class="method-description">
|
1143
|
+
|
1144
|
+
<p>
|
1145
|
+
Start the processing. if <em>fileNameIsBuffer</em> is true, we operate on a
|
1146
|
+
<a href="../String.html">String</a>, else on a File.
|
1147
|
+
</p>
|
1148
|
+
|
1149
|
+
|
1150
|
+
|
1151
|
+
<div class="method-source-code"
|
1152
|
+
id="open-source">
|
1153
|
+
<pre>
|
1154
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 178</span>
|
1155
|
+
178: <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>)
|
1156
|
+
179: <span class="ruby-ivar">@fileNameIsBuffer</span> = <span class="ruby-identifier">fileNameIsBuffer</span>
|
1157
|
+
180: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">fileNameIsBuffer</span>
|
1158
|
+
181: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">BufferStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span> ] ]
|
1159
|
+
182: <span class="ruby-keyword kw">else</span>
|
1160
|
+
183: <span class="ruby-keyword kw">begin</span>
|
1161
|
+
184: <span class="ruby-ivar">@fileStack</span> = [ [ <span class="ruby-ivar">@cf</span> = <span class="ruby-constant">FileStreamHandle</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@masterFile</span>), <span class="ruby-keyword kw">nil</span>, <span class="ruby-keyword kw">nil</span> ] ]
|
1162
|
+
185: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">StandardError</span>
|
1163
|
+
186: <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>
|
1164
|
+
187: <span class="ruby-keyword kw">end</span>
|
1165
|
+
188: <span class="ruby-keyword kw">end</span>
|
1166
|
+
189: <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>
|
1167
|
+
190: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-ivar">@pos</span> = <span class="ruby-ivar">@lastPos</span> = <span class="ruby-keyword kw">nil</span>
|
1168
|
+
191: <span class="ruby-keyword kw">end</span></pre>
|
1169
|
+
</div>
|
1170
|
+
|
1171
|
+
</div>
|
1172
|
+
|
1173
|
+
|
1174
|
+
|
1175
|
+
|
1176
|
+
</div>
|
1177
|
+
|
1178
|
+
|
1179
|
+
<div id="return-oken-method" class="method-detail ">
|
1180
|
+
<a name="M001138"></a>
|
1181
|
+
|
1182
|
+
<div class="method-heading">
|
1183
|
+
|
1184
|
+
<span class="method-name">returnToken</span><span
|
1185
|
+
class="method-args">(token)</span>
|
1186
|
+
<span class="method-click-advice">click to toggle source</span>
|
1187
|
+
|
1188
|
+
</div>
|
1189
|
+
|
1190
|
+
<div class="method-description">
|
1191
|
+
|
1192
|
+
<p>
|
1193
|
+
Return a token to retrieve it with the next nextToken() call again. Only 1
|
1194
|
+
token can be returned before the next nextToken() call.
|
1195
|
+
</p>
|
1196
|
+
|
1197
|
+
|
1198
|
+
|
1199
|
+
<div class="method-source-code"
|
1200
|
+
id="return-oken-source">
|
1201
|
+
<pre>
|
1202
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 336</span>
|
1203
|
+
336: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>)
|
1204
|
+
337: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@tokenBuffer</span>.<span class="ruby-identifier">nil?</span>
|
1205
|
+
338: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-ivar">@tokenBuffer</span>
|
1206
|
+
339: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Fatal Error: Cannot return more than 1 token in a row"</span>
|
1207
|
+
340: <span class="ruby-keyword kw">end</span>
|
1208
|
+
341: <span class="ruby-ivar">@tokenBuffer</span> = <span class="ruby-identifier">token</span>
|
1209
|
+
342: <span class="ruby-ivar">@tokenBufferPos</span> = <span class="ruby-ivar">@pos</span>
|
1210
|
+
343: <span class="ruby-ivar">@pos</span> = <span class="ruby-ivar">@lastPos</span>
|
1211
|
+
344: <span class="ruby-keyword kw">end</span></pre>
|
1212
|
+
</div>
|
1213
|
+
|
1214
|
+
</div>
|
1215
|
+
|
1216
|
+
|
1217
|
+
|
1218
|
+
|
1219
|
+
</div>
|
1220
|
+
|
1221
|
+
|
1222
|
+
<div id="source-ile-nfo-method" class="method-detail ">
|
1223
|
+
<a name="M001132"></a>
|
1224
|
+
|
1225
|
+
<div class="method-heading">
|
1226
|
+
|
1227
|
+
<span class="method-name">sourceFileInfo</span><span
|
1228
|
+
class="method-args">()</span>
|
1229
|
+
<span class="method-click-advice">click to toggle source</span>
|
1230
|
+
|
1231
|
+
</div>
|
1232
|
+
|
1233
|
+
<div class="method-description">
|
1234
|
+
|
1235
|
+
<p>
|
1236
|
+
Return <a href="SourceFileInfo.html">SourceFileInfo</a> for the current
|
1237
|
+
processing prosition.
|
1238
|
+
</p>
|
1239
|
+
|
1240
|
+
|
1241
|
+
|
1242
|
+
<div class="method-source-code"
|
1243
|
+
id="source-ile-nfo-source">
|
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">
|
1354
|
+
<pre>
|
1355
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 524</span>
|
1356
|
+
524: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">handleDash</span>
|
1357
|
+
525: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c1</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'8'</span>
|
1358
|
+
526: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c2</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'<'</span>
|
1359
|
+
527: <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>
|
1360
|
+
528: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">readIndentedString</span>
|
1361
|
+
529: <span class="ruby-keyword kw">else</span>
|
1362
|
+
530: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c3</span>)
|
1363
|
+
531: <span class="ruby-identifier">returnChar</span>(<span class="ruby-identifier">c2</span>)
|
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>
|
1375
|
+
</div>
|
1376
|
+
|
1377
|
+
</div>
|
1378
|
+
|
1379
|
+
|
1380
|
+
|
1381
|
+
|
1382
|
+
</div>
|
1383
|
+
|
1384
|
+
|
1385
|
+
<div id="next-har-method" class="method-detail ">
|
1386
|
+
<a name="M001145"></a>
|
1387
|
+
|
1388
|
+
<div class="method-heading">
|
1389
|
+
|
1390
|
+
<span class="method-name">nextChar</span><span
|
1391
|
+
class="method-args">()</span>
|
1392
|
+
<span class="method-click-advice">click to toggle source</span>
|
1393
|
+
|
1394
|
+
</div>
|
1395
|
+
|
1396
|
+
<div class="method-description">
|
1397
|
+
|
1398
|
+
<p>
|
1399
|
+
This function is called by the scanner to get the next character. It
|
1400
|
+
features a FIFO buffer that can hold any amount of returned characters.
|
1401
|
+
When it has reached the end of the master file it returns nil.
|
1402
|
+
</p>
|
1403
|
+
|
1404
|
+
|
1405
|
+
|
1406
|
+
<div class="method-source-code"
|
1407
|
+
id="next-har-source">
|
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">
|
1552
|
+
<pre>
|
1553
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 544</span>
|
1554
|
+
544: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">readBlanks</span>(<span class="ruby-identifier">c</span>)
|
1555
|
+
545: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
1556
|
+
546: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span>
|
1557
|
+
547: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">c2</span> = <span class="ruby-identifier">nextChar</span>) <span class="ruby-operator">==</span> <span class="ruby-value str">'-'</span>
|
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>
|
1573
|
+
</div>
|
1574
|
+
|
1575
|
+
</div>
|
1576
|
+
|
1577
|
+
|
1578
|
+
|
1579
|
+
|
1580
|
+
</div>
|
1581
|
+
|
1582
|
+
|
1583
|
+
<div id="read-ate-method" class="method-detail ">
|
1584
|
+
<a name="M001153"></a>
|
1585
|
+
|
1586
|
+
<div class="method-heading">
|
1587
|
+
|
1588
|
+
<span class="method-name">readDate</span><span
|
1589
|
+
class="method-args">(token)</span>
|
1590
|
+
<span class="method-click-advice">click to toggle source</span>
|
1591
|
+
|
1592
|
+
</div>
|
1593
|
+
|
1594
|
+
<div class="method-description">
|
1595
|
+
|
1596
|
+
|
1597
|
+
|
1598
|
+
|
1599
|
+
|
1600
|
+
<div class="method-source-code"
|
1601
|
+
id="read-ate-source">
|
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">
|
2390
|
+
<pre>
|
2391
|
+
<span class="ruby-comment cmt"># File lib/TextScanner.rb, line 498</span>
|
2392
|
+
498: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">skipComment</span>
|
2393
|
+
499: <span class="ruby-comment cmt"># Read all characters until line or file end is found</span>
|
2394
|
+
500: <span class="ruby-ivar">@ignoreMacros</span> = <span class="ruby-keyword kw">true</span>
|
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>
|
2400
|
+
</div>
|
2401
|
+
|
2402
|
+
</div>
|
2403
|
+
|
2404
|
+
|
2405
|
+
|
2406
|
+
|
2407
|
+
</div>
|
2408
|
+
|
2409
|
+
|
2410
|
+
</div>
|
2411
|
+
|
2412
|
+
|
2413
|
+
</div>
|
2414
|
+
|
2415
|
+
|
2416
|
+
<div id="rdoc-debugging-section-dump" class="debugging-section">
|
2417
|
+
|
2418
|
+
<p>Disabled; run with --debug to generate this.</p>
|
2419
|
+
|
2420
|
+
</div>
|
2421
|
+
|
2422
|
+
<div id="validator-badges">
|
2423
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
2424
|
+
<p><small>Generated with the <a href="http://deveiate.org/projects/Darkfish-Rdoc/">Darkfish
|
2425
|
+
Rdoc Generator</a> 1.1.6</small>.</p>
|
2426
|
+
</div>
|
2427
|
+
|
2428
|
+
</body>
|
2429
|
+
</html>
|
2430
|
+
|