taskjuggler 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +1144 -2047
- data/README +1 -1
- data/Rakefile +6 -6
- data/data/css/tjmanual.css +20 -0
- data/data/css/tjreport.css +7 -6
- data/doc/AppConfig.html +136 -130
- data/doc/Arguments.html +46 -40
- data/doc/CHANGELOG.html +1162 -2057
- data/doc/COPYING.html +8 -2
- data/doc/Object.html +205 -199
- data/doc/README.html +9 -3
- data/doc/RuntimeConfig.html +75 -69
- data/doc/String.html +69 -63
- data/doc/TaskJuggler.html +350 -291
- data/doc/TaskJuggler/Account.html +26 -20
- data/doc/TaskJuggler/AccountAttribute.html +24 -18
- data/doc/TaskJuggler/AccountScenario.html +24 -18
- data/doc/TaskJuggler/Allocation.html +74 -68
- data/doc/TaskJuggler/AllocationAttribute.html +54 -48
- data/doc/TaskJuggler/AttributeBase.html +172 -93
- data/doc/TaskJuggler/AttributeDefinition.html +22 -16
- data/doc/TaskJuggler/AttributeOverwrite.html +586 -0
- data/doc/TaskJuggler/BatchProcessor.html +263 -257
- data/doc/TaskJuggler/Booking.html +44 -38
- data/doc/TaskJuggler/BookingListAttribute.html +25 -21
- data/doc/TaskJuggler/BooleanAttribute.html +24 -18
- data/doc/TaskJuggler/CSVFile.html +193 -187
- data/doc/TaskJuggler/CellSettingPattern.html +13 -7
- data/doc/TaskJuggler/CellSettingPatternList.html +25 -19
- data/doc/TaskJuggler/Charge.html +49 -43
- data/doc/TaskJuggler/ChargeListAttribute.html +21 -15
- data/doc/TaskJuggler/ChargeSet.html +94 -88
- data/doc/TaskJuggler/ChargeSetListAttribute.html +29 -25
- data/doc/TaskJuggler/CollisionDetector.html +142 -136
- data/doc/TaskJuggler/ColumnListAttribute.html +21 -17
- data/doc/TaskJuggler/ColumnTable.html +50 -44
- data/doc/TaskJuggler/Daemon.html +71 -50
- data/doc/TaskJuggler/DataCache.html +110 -58
- data/doc/TaskJuggler/DataCacheEntry.html +22 -16
- data/doc/TaskJuggler/DateAttribute.html +24 -18
- data/doc/TaskJuggler/DefinitionListAttribute.html +12 -6
- data/doc/TaskJuggler/DependencyListAttribute.html +29 -25
- data/doc/TaskJuggler/DurationAttribute.html +25 -19
- data/doc/TaskJuggler/FileList.html +25 -19
- data/doc/TaskJuggler/FileRecord.html +17 -11
- data/doc/TaskJuggler/FixnumAttribute.html +16 -10
- data/doc/TaskJuggler/FlagListAttribute.html +25 -21
- data/doc/TaskJuggler/FloatAttribute.html +20 -14
- data/doc/TaskJuggler/FormatListAttribute.html +17 -11
- data/doc/TaskJuggler/GanttChart.html +242 -236
- data/doc/TaskJuggler/GanttContainer.html +71 -67
- data/doc/TaskJuggler/GanttHeader.html +113 -107
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -20
- data/doc/TaskJuggler/GanttLine.html +217 -210
- data/doc/TaskJuggler/GanttLoadStack.html +89 -83
- data/doc/TaskJuggler/GanttMilestone.html +11 -6
- data/doc/TaskJuggler/GanttRouter.html +194 -186
- data/doc/TaskJuggler/GanttTaskBar.html +41 -34
- data/doc/TaskJuggler/HTMLDocument.html +52 -46
- data/doc/TaskJuggler/HTMLGraphics.html +58 -52
- data/doc/TaskJuggler/Interval.html +90 -84
- data/doc/TaskJuggler/IntervalList.html +777 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +29 -25
- data/doc/TaskJuggler/JobInfo.html +36 -30
- data/doc/TaskJuggler/Journal.html +188 -177
- data/doc/TaskJuggler/JournalEntry.html +36 -30
- data/doc/TaskJuggler/JournalEntryList.html +88 -82
- data/doc/TaskJuggler/KeywordArray.html +12 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +512 -503
- data/doc/TaskJuggler/Limits.html +111 -105
- data/doc/TaskJuggler/Limits/Limit.html +71 -65
- data/doc/TaskJuggler/LimitsAttribute.html +21 -15
- data/doc/TaskJuggler/ListAttributeBase.html +16 -10
- data/doc/TaskJuggler/Log.html +111 -105
- data/doc/TaskJuggler/LogFile.html +54 -48
- data/doc/TaskJuggler/LogicalAttribute.html +35 -29
- data/doc/TaskJuggler/LogicalExpression.html +32 -26
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +16 -10
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +671 -0
- data/doc/TaskJuggler/LogicalFlag.html +24 -18
- data/doc/TaskJuggler/LogicalFunction.html +164 -158
- data/doc/TaskJuggler/LogicalOperation.html +138 -132
- data/doc/TaskJuggler/Macro.html +14 -8
- data/doc/TaskJuggler/MacroTable.html +42 -36
- data/doc/TaskJuggler/ManagerResponsibilities.html +19 -13
- data/doc/TaskJuggler/ManagerStatusRecord.html +23 -17
- data/doc/TaskJuggler/Message.html +56 -50
- data/doc/TaskJuggler/MessageHandler.html +73 -67
- data/doc/TaskJuggler/Navigator.html +92 -86
- data/doc/TaskJuggler/NavigatorElement.html +88 -82
- data/doc/TaskJuggler/NikuProject.html +15 -9
- data/doc/TaskJuggler/NikuReport.html +405 -370
- data/doc/TaskJuggler/NikuResource.html +13 -7
- data/doc/TaskJuggler/NodeListAttribute.html +13 -9
- data/doc/TaskJuggler/PlaceHolderCell.html +22 -16
- data/doc/TaskJuggler/ProcessIntercom.html +116 -110
- data/doc/TaskJuggler/ProcessIntercomIface.html +39 -33
- data/doc/TaskJuggler/Project.html +1064 -895
- data/doc/TaskJuggler/ProjectBroker.html +439 -366
- data/doc/TaskJuggler/ProjectBrokerIface.html +63 -53
- data/doc/TaskJuggler/ProjectFileParser.html +329 -319
- data/doc/TaskJuggler/ProjectFileScanner.html +351 -345
- data/doc/TaskJuggler/ProjectRecord.html +66 -60
- data/doc/TaskJuggler/ProjectServer.html +287 -280
- data/doc/TaskJuggler/ProjectServerIface.html +43 -37
- data/doc/TaskJuggler/PropertyAttribute.html +16 -10
- data/doc/TaskJuggler/PropertyList.html +205 -199
- data/doc/TaskJuggler/PropertySet.html +264 -296
- data/doc/TaskJuggler/PropertyTreeNode.html +455 -505
- data/doc/TaskJuggler/Query.html +309 -524
- data/doc/TaskJuggler/RTFHandlers.html +17 -11
- data/doc/TaskJuggler/RTFNavigator.html +33 -27
- data/doc/TaskJuggler/RTFQuery.html +135 -129
- data/doc/TaskJuggler/RTFReport.html +63 -57
- data/doc/TaskJuggler/RTFReportLink.html +55 -49
- data/doc/TaskJuggler/RTFWithQuerySupport.html +17 -11
- data/doc/TaskJuggler/RealFormat.html +64 -58
- data/doc/TaskJuggler/RealFormatAttribute.html +12 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +35 -29
- data/doc/TaskJuggler/Report.html +294 -249
- data/doc/TaskJuggler/ReportBase.html +229 -223
- data/doc/TaskJuggler/ReportContext.html +52 -46
- data/doc/TaskJuggler/ReportServer.html +143 -137
- data/doc/TaskJuggler/ReportServerIface.html +51 -43
- data/doc/TaskJuggler/ReportServerRecord.html +36 -30
- data/doc/TaskJuggler/ReportServlet.html +167 -140
- data/doc/TaskJuggler/ReportTable.html +137 -131
- data/doc/TaskJuggler/ReportTableCell.html +332 -292
- data/doc/TaskJuggler/ReportTableColumn.html +46 -40
- data/doc/TaskJuggler/ReportTableLegend.html +43 -38
- data/doc/TaskJuggler/ReportTableLine.html +66 -60
- data/doc/TaskJuggler/Resource.html +166 -160
- data/doc/TaskJuggler/ResourceListAttribute.html +54 -32
- data/doc/TaskJuggler/ResourceListRE.html +47 -41
- data/doc/TaskJuggler/ResourceScenario.html +671 -644
- data/doc/TaskJuggler/RichText.html +51 -45
- data/doc/TaskJuggler/RichTextAttribute.html +28 -22
- data/doc/TaskJuggler/RichTextDocument.html +96 -90
- data/doc/TaskJuggler/RichTextElement.html +503 -497
- data/doc/TaskJuggler/RichTextFunctionExample.html +41 -35
- data/doc/TaskJuggler/RichTextFunctionHandler.html +19 -13
- data/doc/TaskJuggler/RichTextImage.html +14 -8
- data/doc/TaskJuggler/RichTextIntermediate.html +86 -80
- data/doc/TaskJuggler/RichTextParser.html +59 -53
- data/doc/TaskJuggler/RichTextScanner.html +184 -178
- data/doc/TaskJuggler/RichTextSnip.html +69 -63
- data/doc/TaskJuggler/RichTextSyntaxRules.html +416 -410
- data/doc/TaskJuggler/Scenario.html +13 -7
- data/doc/TaskJuggler/ScenarioData.html +40 -34
- data/doc/TaskJuggler/ScenarioListAttribute.html +21 -15
- data/doc/TaskJuggler/Scoreboard.html +129 -107
- data/doc/TaskJuggler/SheetHandlerBase.html +245 -239
- data/doc/TaskJuggler/SheetReceiver.html +333 -327
- data/doc/TaskJuggler/SheetSender.html +227 -221
- data/doc/TaskJuggler/Shift.html +26 -20
- data/doc/TaskJuggler/ShiftAssignment.html +45 -39
- data/doc/TaskJuggler/ShiftAssignments.html +178 -172
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +21 -15
- data/doc/TaskJuggler/ShiftScenario.html +29 -23
- data/doc/TaskJuggler/SimpleQueryExpander.html +36 -30
- data/doc/TaskJuggler/SortListAttribute.html +17 -13
- data/doc/TaskJuggler/SourceFileInfo.html +19 -13
- data/doc/TaskJuggler/StatusSheetReceiver.html +31 -25
- data/doc/TaskJuggler/StatusSheetReport.html +166 -159
- data/doc/TaskJuggler/StatusSheetSender.html +80 -74
- data/doc/TaskJuggler/StringAttribute.html +20 -14
- data/doc/TaskJuggler/SymbolAttribute.html +16 -10
- data/doc/TaskJuggler/SyntaxReference.html +231 -225
- data/doc/TaskJuggler/TOCEntry.html +46 -40
- data/doc/TaskJuggler/TSResourceRecord.html +15 -9
- data/doc/TaskJuggler/TSTaskRecord.html +16 -10
- data/doc/TaskJuggler/TableColumnDefinition.html +84 -39
- data/doc/TaskJuggler/TableOfContents.html +28 -22
- data/doc/TaskJuggler/TableReport.html +906 -866
- data/doc/TaskJuggler/Task.html +99 -93
- data/doc/TaskJuggler/TaskDependency.html +24 -18
- data/doc/TaskJuggler/TaskListAttribute.html +29 -25
- data/doc/TaskJuggler/TaskListRE.html +46 -39
- data/doc/TaskJuggler/TaskScenario.html +2218 -1965
- data/doc/TaskJuggler/TextFormatter.html +154 -148
- data/doc/TaskJuggler/TextParser.html +362 -348
- data/doc/TaskJuggler/TextParser/Pattern.html +313 -307
- data/doc/TaskJuggler/TextParser/Rule.html +147 -141
- data/doc/TaskJuggler/TextParser/StackElement.html +58 -52
- data/doc/TaskJuggler/TextParser/State.html +88 -82
- data/doc/TaskJuggler/TextParser/StateTransition.html +42 -36
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +20 -14
- data/doc/TaskJuggler/TextParser/TokenDoc.html +19 -13
- data/doc/TaskJuggler/TextReport.html +80 -74
- data/doc/TaskJuggler/TextScanner.html +284 -272
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +14 -8
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +21 -15
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +15 -9
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +102 -96
- data/doc/TaskJuggler/TimeSheet.html +123 -117
- data/doc/TaskJuggler/TimeSheetReceiver.html +28 -22
- data/doc/TaskJuggler/TimeSheetRecord.html +212 -206
- data/doc/TaskJuggler/TimeSheetReport.html +206 -199
- data/doc/TaskJuggler/TimeSheetSender.html +27 -21
- data/doc/TaskJuggler/TimeSheetSummary.html +140 -134
- data/doc/TaskJuggler/TimeSheets.html +20 -14
- data/doc/TaskJuggler/Tj3AppBase.html +100 -94
- data/doc/TaskJuggler/Tj3Client.html +407 -483
- data/doc/TaskJuggler/Tj3Daemon.html +116 -107
- data/doc/TaskJuggler/Tj3SheetAppBase.html +45 -39
- data/doc/TaskJuggler/Tj3SsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3SsSender.html +64 -58
- data/doc/TaskJuggler/Tj3TsReceiver.html +31 -25
- data/doc/TaskJuggler/Tj3TsSender.html +51 -45
- data/doc/TaskJuggler/Tj3TsSummary.html +59 -53
- data/doc/TaskJuggler/TjException.html +13 -7
- data/doc/TaskJuggler/TjTime.html +444 -438
- data/doc/TaskJuggler/TjpExample.html +84 -78
- data/doc/TaskJuggler/TjpExportRE.html +356 -349
- data/doc/TaskJuggler/TjpSyntaxRules.html +4279 -4151
- data/doc/TaskJuggler/URLParameter.html +16 -10
- data/doc/TaskJuggler/UserManual.html +185 -179
- data/doc/TaskJuggler/VimSyntax.html +144 -138
- data/doc/TaskJuggler/WebServer.html +46 -39
- data/doc/TaskJuggler/WelcomePage.html +769 -0
- data/doc/TaskJuggler/WorkingHours.html +185 -179
- data/doc/TaskJuggler/WorkingHoursAttribute.html +42 -36
- data/doc/TaskJuggler/XMLBlob.html +21 -15
- data/doc/TaskJuggler/XMLComment.html +17 -11
- data/doc/TaskJuggler/XMLDocument.html +33 -27
- data/doc/TaskJuggler/XMLElement.html +97 -91
- data/doc/TaskJuggler/XMLNamedText.html +13 -7
- data/doc/TaskJuggler/XMLText.html +32 -26
- data/doc/index.html +601 -563
- data/doc/lib/AccountScenario_rb.html +5 -3
- data/doc/lib/Account_rb.html +5 -3
- data/doc/lib/Allocation_rb.html +5 -3
- data/doc/lib/AppConfig_rb.html +5 -3
- data/doc/lib/AttributeBase_rb.html +5 -3
- data/doc/lib/AttributeDefinition_rb.html +5 -3
- data/doc/lib/Attributes_rb.html +5 -3
- data/doc/lib/BatchProcessor_rb.html +5 -3
- data/doc/lib/Booking_rb.html +5 -3
- data/doc/lib/ChargeSet_rb.html +5 -3
- data/doc/lib/Charge_rb.html +5 -3
- data/doc/lib/DataCache_rb.html +5 -3
- data/doc/lib/FileList_rb.html +5 -3
- data/doc/lib/HTMLDocument_rb.html +5 -3
- data/doc/lib/IntervalList_rb.html +69 -0
- data/doc/lib/Interval_rb.html +5 -3
- data/doc/lib/Journal_rb.html +5 -3
- data/doc/lib/KeywordArray_rb.html +5 -3
- data/doc/lib/KeywordDocumentation_rb.html +5 -3
- data/doc/lib/Limits_rb.html +5 -3
- data/doc/lib/LogFile_rb.html +5 -3
- data/doc/lib/Log_rb.html +5 -3
- data/doc/lib/LogicalExpression_rb.html +5 -3
- data/doc/lib/LogicalFunction_rb.html +5 -3
- data/doc/lib/LogicalOperation_rb.html +5 -3
- data/doc/lib/MacroTable_rb.html +5 -3
- data/doc/lib/MessageHandler_rb.html +5 -3
- data/doc/lib/ProjectFileParser_rb.html +5 -3
- data/doc/lib/ProjectFileScanner_rb.html +5 -3
- data/doc/lib/Project_rb.html +5 -3
- data/doc/lib/PropertyList_rb.html +5 -3
- data/doc/lib/PropertySet_rb.html +5 -3
- data/doc/lib/PropertyTreeNode_rb.html +5 -3
- data/doc/lib/Query_rb.html +5 -3
- data/doc/lib/RTFHandlers_rb.html +5 -3
- data/doc/lib/RTFNavigator_rb.html +5 -3
- data/doc/lib/RTFQuery_rb.html +5 -3
- data/doc/lib/RTFReportLink_rb.html +5 -3
- data/doc/lib/RTFReport_rb.html +5 -3
- data/doc/lib/RTFWithQuerySupport_rb.html +5 -3
- data/doc/lib/RealFormat_rb.html +5 -3
- data/doc/lib/ResourceScenario_rb.html +5 -3
- data/doc/lib/Resource_rb.html +5 -3
- data/doc/lib/RichTextDocument_rb.html +5 -3
- data/doc/lib/RichTextElement_rb.html +5 -3
- data/doc/lib/RichTextFunctionExample_rb.html +5 -3
- data/doc/lib/RichTextFunctionHandler_rb.html +5 -3
- data/doc/lib/RichTextParser_rb.html +5 -3
- data/doc/lib/RichTextScanner_rb.html +5 -3
- data/doc/lib/RichTextSnip_rb.html +5 -3
- data/doc/lib/RichTextSyntaxRules_rb.html +5 -3
- data/doc/lib/RichText_rb.html +5 -3
- data/doc/lib/RuntimeConfig_rb.html +5 -3
- data/doc/lib/ScenarioData_rb.html +5 -3
- data/doc/lib/Scenario_rb.html +5 -3
- data/doc/lib/Scoreboard_rb.html +7 -3
- data/doc/lib/SheetHandlerBase_rb.html +5 -3
- data/doc/lib/SheetReceiver_rb.html +5 -3
- data/doc/lib/SheetSender_rb.html +5 -3
- data/doc/lib/ShiftAssignments_rb.html +5 -3
- data/doc/lib/ShiftScenario_rb.html +5 -3
- data/doc/lib/Shift_rb.html +5 -3
- data/doc/lib/SimpleQueryExpander_rb.html +5 -3
- data/doc/lib/SourceFileInfo_rb.html +5 -3
- data/doc/lib/StatusSheetReceiver_rb.html +5 -3
- data/doc/lib/StatusSheetSender_rb.html +5 -3
- data/doc/lib/SyntaxReference_rb.html +5 -3
- data/doc/lib/TOCEntry_rb.html +5 -3
- data/doc/lib/TableColumnDefinition_rb.html +5 -3
- data/doc/lib/TableOfContents_rb.html +5 -3
- data/doc/lib/TaskDependency_rb.html +5 -3
- data/doc/lib/TaskJuggler_rb.html +5 -3
- data/doc/lib/TaskScenario_rb.html +5 -3
- data/doc/lib/Task_rb.html +5 -3
- data/doc/lib/TextFormatter_rb.html +6 -4
- data/doc/lib/TextParser/Pattern_rb.html +5 -3
- data/doc/lib/TextParser/Rule_rb.html +5 -3
- data/doc/lib/TextParser/StackElement_rb.html +5 -3
- data/doc/lib/TextParser/State_rb.html +6 -4
- data/doc/lib/TextParser/TokenDoc_rb.html +5 -3
- data/doc/lib/TextParser_rb.html +5 -3
- data/doc/lib/TextScanner_rb.html +5 -3
- data/doc/lib/TimeSheetReceiver_rb.html +5 -3
- data/doc/lib/TimeSheetSender_rb.html +5 -3
- data/doc/lib/TimeSheetSummary_rb.html +6 -4
- data/doc/lib/TimeSheets_rb.html +5 -3
- data/doc/lib/Tj3AppBase_rb.html +5 -3
- data/doc/lib/Tj3Config_rb.html +5 -3
- data/doc/lib/Tj3SheetAppBase_rb.html +5 -3
- data/doc/lib/TjException_rb.html +5 -3
- data/doc/lib/TjTime_rb.html +5 -3
- data/doc/lib/TjpExample_rb.html +5 -3
- data/doc/lib/TjpSyntaxRules_rb.html +5 -3
- data/doc/lib/URLParameter_rb.html +5 -3
- data/doc/lib/UTF8String_rb.html +5 -3
- data/doc/lib/UserManual_rb.html +5 -3
- data/doc/lib/VimSyntax_rb.html +6 -4
- data/doc/lib/WorkingHours_rb.html +5 -3
- data/doc/lib/XMLDocument_rb.html +5 -3
- data/doc/lib/XMLElement_rb.html +5 -3
- data/doc/lib/daemon/Daemon_rb.html +5 -3
- data/doc/lib/daemon/ProcessIntercom_rb.html +7 -3
- data/doc/lib/daemon/ProjectBroker_rb.html +5 -3
- data/doc/lib/daemon/ProjectServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServer_rb.html +5 -3
- data/doc/lib/daemon/ReportServlet_rb.html +69 -0
- data/doc/lib/daemon/WebServer_rb.html +9 -3
- data/doc/lib/daemon/WelcomePage_rb.html +71 -0
- data/doc/lib/deep_copy_rb.html +5 -3
- data/doc/lib/reports/CSVFile_rb.html +5 -3
- data/doc/lib/reports/CollisionDetector_rb.html +5 -3
- data/doc/lib/reports/ColumnTable_rb.html +5 -3
- data/doc/lib/reports/GanttChart_rb.html +5 -3
- data/doc/lib/reports/GanttContainer_rb.html +5 -3
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +5 -3
- data/doc/lib/reports/GanttHeader_rb.html +5 -3
- data/doc/lib/reports/GanttLine_rb.html +5 -3
- data/doc/lib/reports/GanttLoadStack_rb.html +5 -3
- data/doc/lib/reports/GanttMilestone_rb.html +5 -3
- data/doc/lib/reports/GanttRouter_rb.html +5 -3
- data/doc/lib/reports/GanttTaskBar_rb.html +5 -3
- data/doc/lib/reports/HTMLGraphics_rb.html +5 -3
- data/doc/lib/reports/Navigator_rb.html +5 -3
- data/doc/lib/reports/NikuReport_rb.html +5 -3
- data/doc/lib/reports/ReportBase_rb.html +5 -3
- data/doc/lib/reports/ReportContext_rb.html +5 -3
- data/doc/lib/reports/ReportTableCell_rb.html +5 -3
- data/doc/lib/reports/ReportTableColumn_rb.html +5 -3
- data/doc/lib/reports/ReportTableLegend_rb.html +5 -3
- data/doc/lib/reports/ReportTableLine_rb.html +5 -3
- data/doc/lib/reports/ReportTable_rb.html +5 -3
- data/doc/lib/reports/Report_rb.html +5 -3
- data/doc/lib/reports/ResourceListRE_rb.html +5 -3
- data/doc/lib/reports/StatusSheetReport_rb.html +5 -3
- data/doc/lib/reports/TableReport_rb.html +5 -3
- data/doc/lib/reports/TaskListRE_rb.html +5 -3
- data/doc/lib/reports/TextReport_rb.html +5 -3
- data/doc/lib/reports/TimeSheetReport_rb.html +5 -3
- data/doc/lib/reports/TjpExportRE_rb.html +5 -3
- data/doc/lib/{taskjuggler3_rb.html → tj3_rb.html} +7 -5
- data/doc/lib/tj3client_rb.html +5 -3
- data/doc/lib/tj3d_rb.html +6 -4
- data/doc/lib/tj3man_rb.html +5 -3
- data/doc/lib/tj3ss_receiver_rb.html +5 -3
- data/doc/lib/tj3ss_sender_rb.html +5 -3
- data/doc/lib/tj3ts_receiver_rb.html +5 -3
- data/doc/lib/tj3ts_sender_rb.html +5 -3
- data/doc/lib/tj3ts_summary_rb.html +5 -3
- data/examples/tutorial.tjp +13 -5
- data/gem_spec.rb +3 -0
- data/lib/Account.rb +2 -1
- data/lib/AccountScenario.rb +2 -1
- data/lib/Allocation.rb +2 -1
- data/lib/AppConfig.rb +2 -1
- data/lib/AttributeBase.rb +19 -5
- data/lib/AttributeDefinition.rb +2 -1
- data/lib/Attributes.rb +49 -38
- data/lib/BatchProcessor.rb +2 -1
- data/lib/Booking.rb +2 -1
- data/lib/Charge.rb +2 -1
- data/lib/ChargeSet.rb +2 -1
- data/lib/DataCache.rb +15 -1
- data/lib/FileList.rb +2 -1
- data/lib/HTMLDocument.rb +2 -1
- data/lib/Interval.rb +2 -1
- data/lib/IntervalList.rb +100 -0
- data/lib/Journal.rb +8 -2
- data/lib/KeywordArray.rb +2 -1
- data/lib/KeywordDocumentation.rb +10 -6
- data/lib/Limits.rb +2 -1
- data/lib/Log.rb +3 -2
- data/lib/LogFile.rb +2 -1
- data/lib/LogicalExpression.rb +2 -1
- data/lib/LogicalFunction.rb +2 -1
- data/lib/LogicalOperation.rb +2 -1
- data/lib/MacroTable.rb +2 -1
- data/lib/MessageHandler.rb +2 -1
- data/lib/Project.rb +92 -25
- data/lib/ProjectFileParser.rb +7 -2
- data/lib/ProjectFileScanner.rb +2 -1
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +2 -6
- data/lib/PropertyTreeNode.rb +22 -44
- data/lib/Query.rb +32 -13
- data/lib/RTFHandlers.rb +2 -1
- data/lib/RTFNavigator.rb +2 -1
- data/lib/RTFQuery.rb +3 -2
- data/lib/RTFReport.rb +2 -1
- data/lib/RTFReportLink.rb +2 -1
- data/lib/RTFWithQuerySupport.rb +2 -1
- data/lib/RealFormat.rb +2 -1
- data/lib/Resource.rb +2 -1
- data/lib/ResourceScenario.rb +35 -14
- data/lib/RichText.rb +2 -1
- data/lib/RichTextDocument.rb +2 -1
- data/lib/RichTextElement.rb +2 -1
- data/lib/RichTextFunctionExample.rb +2 -1
- data/lib/RichTextFunctionHandler.rb +2 -1
- data/lib/RichTextParser.rb +2 -1
- data/lib/RichTextScanner.rb +2 -1
- data/lib/RichTextSnip.rb +2 -1
- data/lib/RichTextSyntaxRules.rb +2 -1
- data/lib/RuntimeConfig.rb +2 -1
- data/lib/Scenario.rb +2 -1
- data/lib/ScenarioData.rb +2 -1
- data/lib/Scoreboard.rb +27 -8
- data/lib/SheetHandlerBase.rb +2 -1
- data/lib/SheetReceiver.rb +2 -1
- data/lib/SheetSender.rb +2 -1
- data/lib/Shift.rb +2 -1
- data/lib/ShiftAssignments.rb +2 -1
- data/lib/ShiftScenario.rb +2 -1
- data/lib/SimpleQueryExpander.rb +2 -1
- data/lib/SourceFileInfo.rb +2 -1
- data/lib/StatusSheetReceiver.rb +2 -1
- data/lib/StatusSheetSender.rb +2 -1
- data/lib/SyntaxReference.rb +2 -1
- data/lib/TOCEntry.rb +2 -1
- data/lib/TableColumnDefinition.rb +9 -2
- data/lib/TableOfContents.rb +2 -1
- data/lib/Task.rb +2 -1
- data/lib/TaskDependency.rb +2 -1
- data/lib/TaskJuggler.rb +8 -6
- data/lib/TaskScenario.rb +337 -153
- data/lib/TextFormatter.rb +3 -2
- data/lib/TextParser.rb +7 -2
- data/lib/TextParser/Pattern.rb +2 -1
- data/lib/TextParser/Rule.rb +2 -1
- data/lib/TextParser/StackElement.rb +2 -1
- data/lib/TextParser/State.rb +3 -2
- data/lib/TextParser/TokenDoc.rb +2 -1
- data/lib/TextScanner.rb +12 -5
- data/lib/TimeSheetReceiver.rb +2 -1
- data/lib/TimeSheetSender.rb +2 -1
- data/lib/TimeSheetSummary.rb +3 -2
- data/lib/TimeSheets.rb +2 -1
- data/lib/Tj3AppBase.rb +6 -5
- data/lib/Tj3Config.rb +5 -4
- data/lib/Tj3SheetAppBase.rb +2 -1
- data/lib/TjException.rb +2 -1
- data/lib/TjTime.rb +2 -1
- data/lib/TjpExample.rb +2 -1
- data/lib/TjpSyntaxRules.rb +264 -65
- data/lib/URLParameter.rb +2 -1
- data/lib/UTF8String.rb +2 -1
- data/lib/UserManual.rb +2 -1
- data/lib/VimSyntax.rb +3 -2
- data/lib/WorkingHours.rb +2 -1
- data/lib/XMLDocument.rb +2 -1
- data/lib/XMLElement.rb +2 -1
- data/lib/daemon/Daemon.rb +3 -1
- data/lib/daemon/ProcessIntercom.rb +3 -1
- data/lib/daemon/ProjectBroker.rb +84 -32
- data/lib/daemon/ProjectServer.rb +5 -3
- data/lib/daemon/ReportServer.rb +8 -5
- data/lib/daemon/ReportServlet.rb +166 -0
- data/lib/daemon/WebServer.rb +6 -150
- data/lib/daemon/WelcomePage.rb +80 -0
- data/lib/deep_copy.rb +2 -1
- data/lib/reports/CSVFile.rb +2 -1
- data/lib/reports/CollisionDetector.rb +2 -1
- data/lib/reports/ColumnTable.rb +2 -1
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/GanttContainer.rb +3 -4
- data/lib/reports/GanttHeader.rb +2 -1
- data/lib/reports/GanttHeaderScaleItem.rb +2 -1
- data/lib/reports/GanttLine.rb +12 -10
- data/lib/reports/GanttLoadStack.rb +2 -1
- data/lib/reports/GanttMilestone.rb +3 -3
- data/lib/reports/GanttRouter.rb +4 -1
- data/lib/reports/GanttTaskBar.rb +9 -7
- data/lib/reports/HTMLGraphics.rb +2 -1
- data/lib/reports/Navigator.rb +2 -1
- data/lib/reports/NikuReport.rb +79 -49
- data/lib/reports/Report.rb +42 -10
- data/lib/reports/ReportBase.rb +2 -1
- data/lib/reports/ReportContext.rb +2 -1
- data/lib/reports/ReportTable.rb +2 -1
- data/lib/reports/ReportTableCell.rb +63 -28
- data/lib/reports/ReportTableColumn.rb +2 -1
- data/lib/reports/ReportTableLegend.rb +5 -5
- data/lib/reports/ReportTableLine.rb +2 -1
- data/lib/reports/ResourceListRE.rb +2 -1
- data/lib/reports/StatusSheetReport.rb +4 -2
- data/lib/reports/TableReport.rb +42 -38
- data/lib/reports/TaskListRE.rb +4 -2
- data/lib/reports/TextReport.rb +2 -1
- data/lib/reports/TimeSheetReport.rb +4 -2
- data/lib/reports/TjpExportRE.rb +4 -2
- data/lib/{taskjuggler3.rb → tj3.rb} +6 -5
- data/lib/tj3client.rb +19 -36
- data/lib/tj3d.rb +6 -2
- data/lib/tj3man.rb +4 -3
- data/lib/tj3ss_receiver.rb +2 -1
- data/lib/tj3ss_sender.rb +2 -1
- data/lib/tj3ts_receiver.rb +2 -1
- data/lib/tj3ts_sender.rb +2 -1
- data/lib/tj3ts_summary.rb +2 -1
- data/manual/Day_To_Day_Juggling +36 -0
- data/manual/How_To_Contribute +9 -4
- data/manual/Installation +10 -3
- data/manual/TaskJuggler_Internals +0 -2
- data/manual/Tutorial +25 -3
- data/prj_cfg.rb +4 -2
- data/spec/IntervalList_spec.rb +138 -0
- data/spec/ProjectBroker_spec.rb +133 -0
- data/tasks/changelog.rake +41 -24
- data/tasks/csts.rake +1 -0
- data/tasks/gem.rake +1 -0
- data/tasks/rcov.rake +1 -1
- data/tasks/spec.rake +7 -0
- data/tasks/test.rake +1 -0
- data/test/MessageChecker.rb +2 -1
- data/test/TestSuite/CSV-Reports/niku.tjp +70 -0
- data/test/TestSuite/CSV-Reports/{celltext-Reference.csv → refs/celltext.csv} +0 -0
- data/test/TestSuite/CSV-Reports/refs/niku.csv +5 -0
- data/test/TestSuite/CSV-Reports/{resourcereport-Reference.csv → refs/resourcereport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{resourcereport_with_tasks-Reference.csv → refs/resourcereport_with_tasks.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortByTree-Reference.csv → refs/sortByTree.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_duration.down-Reference.csv → refs/sortBy_duration.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_effort.up-Reference.csv → refs/sortBy_effort.up.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{sortBy_plan.start.down-Reference.csv → refs/sortBy_plan.start.down.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport-Reference.csv → refs/taskreport.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{taskreport_with_resources-Reference.csv → refs/taskreport_with_resources.csv} +0 -0
- data/test/TestSuite/CSV-Reports/{weekly-Reference.csv → refs/weekly.csv} +0 -0
- data/test/TestSuite/HTML-Reports/Alerts.tjp +12 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Container-2.tjp +1 -2
- data/test/TestSuite/Scheduler/Correct/InheritedAttributes.tjp +77 -0
- data/test/TestSuite/Scheduler/Correct/WeakDeps.tjp +40 -0
- data/test/TestSuite/Scheduler/Errors/loop_detected_12.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_13.tjp +3 -4
- data/test/TestSuite/Scheduler/Errors/loop_detected_3.tjp +2 -2
- data/test/TestSuite/Scheduler/Errors/loop_detected_6.tjp +8 -7
- data/test/TestSuite/Scheduler/Errors/onend_wrong_direction.tjp +19 -0
- data/test/TestSuite/Scheduler/Errors/onstart_wrong_direction.tjp +18 -0
- data/test/TestSuite/Scheduler/Errors/task_depend_multi.tjp +1 -2
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/boss_2002-03-02.tji +46 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/dev2_2002-03-02.tji +22 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/2002-03-02/resources.yml +11 -0
- data/test/TestSuite/StatusSheets/StatusSheetTemplates/acceptable_intervals +1 -0
- data/test/TestSuite/StatusSheets/sender.log +256 -0
- data/test/TestSuite/StatusSheets/statussheets.log +9 -0
- data/test/TestSuite/StatusSheets/tj3d.log +395 -0
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +2 -0
- data/test/TestSuite/Syntax/Correct/Niku.tjp +6 -1
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +4 -1
- data/test/TestSuite/Syntax/Correct/Supplement.tjp +12 -5
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tji +3 -0
- data/test/TestSuite/Syntax/Correct/TaskPrefix.tjp +24 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -2
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +15 -5
- data/test/all.rb +2 -4
- data/test/test_BatchProcessor.rb +2 -1
- data/test/test_CSV-Reports.rb +34 -23
- data/test/test_CSVFile.rb +2 -1
- data/test/test_CollisionDetector.rb +3 -2
- data/test/test_Journal.rb +2 -1
- data/test/test_Limits.rb +2 -1
- data/test/test_LogicalExpression.rb +2 -1
- data/test/test_MacroTable.rb +2 -1
- data/test/test_Project.rb +3 -2
- data/test/test_ProjectFileScanner.rb +2 -1
- data/test/test_PropertySet.rb +2 -1
- data/test/test_Query.rb +2 -1
- data/test/test_RealFormat.rb +2 -1
- data/test/test_ReportGenerator.rb +2 -1
- data/test/test_RichText.rb +2 -1
- data/test/test_Scheduler.rb +2 -1
- data/test/test_ShiftAssignments.rb +2 -1
- data/test/test_SimpleQueryExpander.rb +2 -1
- data/test/test_Syntax.rb +2 -1
- data/test/test_TextFormatter.rb +3 -2
- data/test/test_TjTime.rb +2 -1
- data/test/test_TjpExample.rb +2 -1
- data/test/test_URLParameter.rb +2 -1
- data/test/test_UTF8String.rb +2 -1
- data/test/test_WorkingHours.rb +2 -1
- data/test/test_deep_copy.rb +2 -1
- metadata +74 -20
- data/doc/StringIO.html +0 -595
- data/test/TestSuite/Scheduler/Errors/loop_detected_7.tjp +0 -46
- data/test/TestSuite/Scheduler/Errors/loop_detected_8.tjp +0 -51
- data/test/TestSuite/Scheduler/Errors/multiple_durations.tjp +0 -11
|
@@ -133,6 +133,8 @@
|
|
|
133
133
|
|
|
134
134
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
|
135
135
|
|
|
136
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
|
137
|
+
|
|
136
138
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
|
137
139
|
|
|
138
140
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
|
@@ -211,6 +213,8 @@
|
|
|
211
213
|
|
|
212
214
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
|
213
215
|
|
|
216
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
|
217
|
+
|
|
214
218
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
|
215
219
|
|
|
216
220
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
|
@@ -243,6 +247,8 @@
|
|
|
243
247
|
|
|
244
248
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
|
245
249
|
|
|
250
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
|
251
|
+
|
|
246
252
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
|
247
253
|
|
|
248
254
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
|
@@ -523,6 +529,8 @@
|
|
|
523
529
|
|
|
524
530
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
525
531
|
|
|
532
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
|
533
|
+
|
|
526
534
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
527
535
|
|
|
528
536
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -549,8 +557,6 @@
|
|
|
549
557
|
|
|
550
558
|
<li><a href="../String.html">String</a></li>
|
|
551
559
|
|
|
552
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
|
553
|
-
|
|
554
560
|
</ul>
|
|
555
561
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
556
562
|
</div>
|
|
@@ -659,15 +665,15 @@ be indented and limited to a given text width.
|
|
|
659
665
|
<div class="method-source-code"
|
|
660
666
|
id="new-source">
|
|
661
667
|
<pre>
|
|
662
|
-
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
668
|
+
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line 24</span>
|
|
669
|
+
24: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">width</span> = <span class="ruby-value">80</span>, <span class="ruby-identifier">indentation</span> = <span class="ruby-value">0</span>, <span class="ruby-identifier">firstLineIndent</span> = <span class="ruby-keyword kw">nil</span>)
|
|
670
|
+
25: <span class="ruby-comment cmt"># The width of the text including the indent.</span>
|
|
671
|
+
26: <span class="ruby-ivar">@width</span> = <span class="ruby-identifier">width</span>
|
|
672
|
+
27: <span class="ruby-comment cmt"># The indent for the first line of a paragraph</span>
|
|
673
|
+
28: <span class="ruby-ivar">@firstLineIndent</span> = <span class="ruby-identifier">firstLineIndent</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">indentation</span>
|
|
674
|
+
29: <span class="ruby-comment cmt"># The indent for other lines.</span>
|
|
675
|
+
30: <span class="ruby-ivar">@indentation</span> = <span class="ruby-identifier">indentation</span>
|
|
676
|
+
31: <span class="ruby-keyword kw">end</span></pre>
|
|
671
677
|
</div>
|
|
672
678
|
|
|
673
679
|
</div>
|
|
@@ -707,78 +713,78 @@ the class settings.
|
|
|
707
713
|
<div class="method-source-code"
|
|
708
714
|
id="format-source">
|
|
709
715
|
<pre>
|
|
710
|
-
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
716
|
+
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line 74</span>
|
|
717
|
+
74: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">format</span>(<span class="ruby-identifier">str</span>)
|
|
718
|
+
75: <span class="ruby-comment cmt"># The resulting String.</span>
|
|
719
|
+
76: <span class="ruby-ivar">@out</span> = <span class="ruby-value str">''</span>
|
|
720
|
+
77: <span class="ruby-comment cmt"># The column of the last character of the current line.</span>
|
|
721
|
+
78: <span class="ruby-ivar">@linePos</span> = <span class="ruby-value">0</span>
|
|
722
|
+
79: <span class="ruby-comment cmt"># A buffer for the currently processed word.</span>
|
|
723
|
+
80: <span class="ruby-ivar">@wordBuf</span> = <span class="ruby-value str">''</span>
|
|
724
|
+
81: <span class="ruby-comment cmt"># True of we are at the beginning of a line.</span>
|
|
725
|
+
82: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">true</span>
|
|
726
|
+
83: <span class="ruby-comment cmt"># A buffer for the indentation to be used for the next line.</span>
|
|
727
|
+
84: <span class="ruby-ivar">@indentBuf</span> = <span class="ruby-value str">' '</span> * <span class="ruby-ivar">@firstLineIndent</span>
|
|
728
|
+
85: <span class="ruby-comment cmt"># The status of the state machine.</span>
|
|
729
|
+
86: <span class="ruby-identifier">state</span> = <span class="ruby-value">:beginOfParagraph</span>
|
|
730
|
+
87:
|
|
731
|
+
88: <span class="ruby-comment cmt"># Process the input String from start to finish.</span>
|
|
732
|
+
89: <span class="ruby-identifier">str</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>
|
|
733
|
+
90: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">state</span>
|
|
734
|
+
91: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:beginOfParagraph</span>
|
|
735
|
+
92: <span class="ruby-comment cmt"># We are currently a the beginning of a new paragraph.</span>
|
|
736
|
+
93: <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">"\n"</span>
|
|
737
|
+
94: <span class="ruby-comment cmt"># ignore it</span>
|
|
738
|
+
95: <span class="ruby-keyword kw">else</span>
|
|
739
|
+
96: <span class="ruby-comment cmt"># A new word started.</span>
|
|
740
|
+
97: <span class="ruby-ivar">@wordBuf</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
741
|
+
98: <span class="ruby-identifier">state</span> = <span class="ruby-value">:inWord</span>
|
|
742
|
+
99: <span class="ruby-keyword kw">end</span>
|
|
743
|
+
100: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:inWord</span>
|
|
744
|
+
101: <span class="ruby-comment cmt"># We are in the middle of processing a word.</span>
|
|
745
|
+
102: <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">"\n"</span>
|
|
746
|
+
103: <span class="ruby-comment cmt"># The word has ended.</span>
|
|
747
|
+
104: <span class="ruby-identifier">appendWord</span>
|
|
748
|
+
105: <span class="ruby-identifier">state</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-value">:betweenWords</span> <span class="ruby-operator">:</span> <span class="ruby-value">:betweenWordsOrLines</span>
|
|
749
|
+
106: <span class="ruby-keyword kw">else</span>
|
|
750
|
+
107: <span class="ruby-comment cmt"># Add the character to the word buffer.</span>
|
|
751
|
+
108: <span class="ruby-ivar">@wordBuf</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
752
|
+
109: <span class="ruby-keyword kw">end</span>
|
|
753
|
+
110: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:betweenWords</span>
|
|
754
|
+
111: <span class="ruby-comment cmt"># We are in between words.</span>
|
|
755
|
+
112: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span>
|
|
756
|
+
113: <span class="ruby-comment cmt"># ignore it</span>
|
|
757
|
+
114: <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>
|
|
758
|
+
115: <span class="ruby-identifier">state</span> = <span class="ruby-value">:betweenWordsOrLines</span>
|
|
759
|
+
116: <span class="ruby-keyword kw">else</span>
|
|
760
|
+
117: <span class="ruby-comment cmt"># A new word started.</span>
|
|
761
|
+
118: <span class="ruby-ivar">@wordBuf</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
762
|
+
119: <span class="ruby-identifier">state</span> = <span class="ruby-value">:inWord</span>
|
|
763
|
+
120: <span class="ruby-keyword kw">end</span>
|
|
764
|
+
121: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:betweenWordsOrLines</span>
|
|
765
|
+
122: <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>
|
|
766
|
+
123: <span class="ruby-comment cmt"># The word break is really a paragraph break.</span>
|
|
767
|
+
124: <span class="ruby-ivar">@indentBuf</span> = <span class="ruby-value str">"\n\n"</span> <span class="ruby-operator">+</span> <span class="ruby-value str">' '</span> * <span class="ruby-ivar">@firstLineIndent</span>
|
|
768
|
+
125: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">true</span>
|
|
769
|
+
126: <span class="ruby-identifier">state</span> = <span class="ruby-value">:beginOfParagraph</span>
|
|
770
|
+
127: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">' '</span>
|
|
771
|
+
128: <span class="ruby-identifier">state</span> = <span class="ruby-value">:betweenWords</span>
|
|
772
|
+
129: <span class="ruby-keyword kw">else</span>
|
|
773
|
+
130: <span class="ruby-ivar">@wordBuf</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
774
|
+
131: <span class="ruby-identifier">state</span> = <span class="ruby-value">:inWord</span>
|
|
775
|
+
132: <span class="ruby-keyword kw">end</span>
|
|
776
|
+
133: <span class="ruby-keyword kw">else</span>
|
|
777
|
+
134: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown state in state machine: #{state}"</span>
|
|
778
|
+
135: <span class="ruby-keyword kw">end</span>
|
|
779
|
+
136: <span class="ruby-keyword kw">end</span>
|
|
780
|
+
137: <span class="ruby-comment cmt"># Add any still pending word.</span>
|
|
781
|
+
138: <span class="ruby-identifier">appendWord</span>
|
|
782
|
+
139:
|
|
783
|
+
140: <span class="ruby-comment cmt"># Always end with a line break</span>
|
|
784
|
+
141: <span class="ruby-ivar">@out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@out</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
785
|
+
142:
|
|
786
|
+
143: <span class="ruby-ivar">@out</span>
|
|
787
|
+
144: <span class="ruby-keyword kw">end</span></pre>
|
|
782
788
|
</div>
|
|
783
789
|
|
|
784
790
|
</div>
|
|
@@ -813,43 +819,43 @@ line will be indented by @firstLineIndent. Lines that are longer than
|
|
|
813
819
|
<div class="method-source-code"
|
|
814
820
|
id="indent-source">
|
|
815
821
|
<pre>
|
|
816
|
-
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
825
|
-
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
822
|
+
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line 36</span>
|
|
823
|
+
36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">indent</span>(<span class="ruby-identifier">str</span>)
|
|
824
|
+
37: <span class="ruby-identifier">out</span> = <span class="ruby-value str">''</span>
|
|
825
|
+
38: <span class="ruby-comment cmt"># Indentation to be used for the currently processed line. It will be</span>
|
|
826
|
+
39: <span class="ruby-comment cmt"># set to nil if it was inserted already.</span>
|
|
827
|
+
40: <span class="ruby-identifier">indentBuf</span> = <span class="ruby-value str">' '</span> * <span class="ruby-ivar">@firstLineIndent</span>
|
|
828
|
+
41: <span class="ruby-identifier">linePos</span> = <span class="ruby-value">0</span>
|
|
829
|
+
42: <span class="ruby-comment cmt"># Process the input String from start to finish.</span>
|
|
830
|
+
43: <span class="ruby-identifier">str</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>
|
|
831
|
+
44: <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>
|
|
832
|
+
45: <span class="ruby-comment cmt"># To prevent trailing white spaces we only insert a line break</span>
|
|
833
|
+
46: <span class="ruby-comment cmt"># instead of the indent buffer.</span>
|
|
834
|
+
47: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">indentBuf</span>
|
|
835
|
+
48: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span>
|
|
836
|
+
49: <span class="ruby-keyword kw">end</span>
|
|
837
|
+
50: <span class="ruby-comment cmt"># The indent buffer for the next line.</span>
|
|
838
|
+
51: <span class="ruby-identifier">indentBuf</span> = <span class="ruby-value str">"\n"</span> <span class="ruby-operator">+</span> <span class="ruby-value str">' '</span> * <span class="ruby-ivar">@indentation</span>
|
|
839
|
+
52: <span class="ruby-keyword kw">else</span>
|
|
840
|
+
53: <span class="ruby-comment cmt"># If we still have a indent buffer, we need to insert it first.</span>
|
|
841
|
+
54: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">indentBuf</span>
|
|
842
|
+
55: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">indentBuf</span>
|
|
843
|
+
56: <span class="ruby-identifier">linePos</span> = <span class="ruby-identifier">indentBuf</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value str">"\n"</span>).<span class="ruby-identifier">length</span>
|
|
844
|
+
57: <span class="ruby-identifier">indentBuf</span> = <span class="ruby-keyword kw">nil</span>
|
|
845
|
+
58: <span class="ruby-keyword kw">end</span>
|
|
846
|
+
59: <span class="ruby-comment cmt"># Discard all characters that extend of the requested line width.</span>
|
|
847
|
+
60: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">linePos</span> <span class="ruby-operator"><</span> <span class="ruby-ivar">@width</span>
|
|
848
|
+
61: <span class="ruby-identifier">out</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
849
|
+
62: <span class="ruby-identifier">linePos</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
850
|
+
63: <span class="ruby-keyword kw">end</span>
|
|
851
|
+
64: <span class="ruby-keyword kw">end</span>
|
|
852
|
+
65: <span class="ruby-keyword kw">end</span>
|
|
853
|
+
66:
|
|
854
|
+
67: <span class="ruby-comment cmt"># Always end with a line break</span>
|
|
855
|
+
68: <span class="ruby-identifier">out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">out</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
856
|
+
69:
|
|
857
|
+
70: <span class="ruby-identifier">out</span>
|
|
858
|
+
71: <span class="ruby-keyword kw">end</span></pre>
|
|
853
859
|
</div>
|
|
854
860
|
|
|
855
861
|
</div>
|
|
@@ -886,34 +892,34 @@ line will be indented by @firstLineIndent. Lines that are longer than
|
|
|
886
892
|
<div class="method-source-code"
|
|
887
893
|
id="append-ord-source">
|
|
888
894
|
<pre>
|
|
889
|
-
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
895
|
+
<span class="ruby-comment cmt"># File lib/TextFormatter.rb, line 148</span>
|
|
896
|
+
148: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">appendWord</span>
|
|
897
|
+
149: <span class="ruby-comment cmt"># Ignore empty words.</span>
|
|
898
|
+
150: <span class="ruby-identifier">wordLength</span> = <span class="ruby-ivar">@wordBuf</span>.<span class="ruby-identifier">length</span>
|
|
899
|
+
151: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">wordLength</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
900
|
+
152:
|
|
901
|
+
153: <span class="ruby-comment cmt"># If the word does not fit into the current line anymore, we have to</span>
|
|
902
|
+
154: <span class="ruby-comment cmt"># start a new line.</span>
|
|
903
|
+
155: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">true</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@linePos</span> <span class="ruby-operator">+</span> <span class="ruby-value">1</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">wordLength</span> <span class="ruby-operator">></span> <span class="ruby-ivar">@width</span>
|
|
904
|
+
156:
|
|
905
|
+
157: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@beginOfLine</span>
|
|
906
|
+
158: <span class="ruby-comment cmt"># Insert the content of the @indentBuf and reset @linePos and</span>
|
|
907
|
+
159: <span class="ruby-comment cmt"># @indentBuf.</span>
|
|
908
|
+
160: <span class="ruby-ivar">@out</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@indentBuf</span>
|
|
909
|
+
161: <span class="ruby-ivar">@linePos</span> = <span class="ruby-ivar">@indentBuf</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-value str">"\n"</span>).<span class="ruby-identifier">length</span>
|
|
910
|
+
162: <span class="ruby-ivar">@indentBuf</span> = <span class="ruby-value str">"\n"</span> <span class="ruby-operator">+</span> <span class="ruby-value str">' '</span> * <span class="ruby-ivar">@indentation</span>
|
|
911
|
+
163: <span class="ruby-keyword kw">else</span>
|
|
912
|
+
164: <span class="ruby-comment cmt"># Insert a space to separate the words.</span>
|
|
913
|
+
165: <span class="ruby-ivar">@out</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">' '</span>
|
|
914
|
+
166: <span class="ruby-ivar">@linePos</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
915
|
+
167: <span class="ruby-keyword kw">end</span>
|
|
916
|
+
168:
|
|
917
|
+
169: <span class="ruby-comment cmt"># Append the word and reset the @wordBuf.</span>
|
|
918
|
+
170: <span class="ruby-ivar">@out</span> <span class="ruby-operator">+=</span> <span class="ruby-ivar">@wordBuf</span>
|
|
919
|
+
171: <span class="ruby-ivar">@wordBuf</span> = <span class="ruby-value str">''</span>
|
|
920
|
+
172: <span class="ruby-ivar">@linePos</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">wordLength</span>
|
|
921
|
+
173: <span class="ruby-ivar">@beginOfLine</span> = <span class="ruby-keyword kw">false</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@beginOfLine</span>
|
|
922
|
+
174: <span class="ruby-keyword kw">end</span></pre>
|
|
917
923
|
</div>
|
|
918
924
|
|
|
919
925
|
</div>
|
|
@@ -199,6 +199,8 @@
|
|
|
199
199
|
|
|
200
200
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
|
201
201
|
|
|
202
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
|
203
|
+
|
|
202
204
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
|
203
205
|
|
|
204
206
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
|
@@ -277,6 +279,8 @@
|
|
|
277
279
|
|
|
278
280
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
|
279
281
|
|
|
282
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
|
283
|
+
|
|
280
284
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
|
281
285
|
|
|
282
286
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
|
@@ -309,6 +313,8 @@
|
|
|
309
313
|
|
|
310
314
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
|
311
315
|
|
|
316
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
|
317
|
+
|
|
312
318
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
|
313
319
|
|
|
314
320
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
|
@@ -589,6 +595,8 @@
|
|
|
589
595
|
|
|
590
596
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
591
597
|
|
|
598
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
|
599
|
+
|
|
592
600
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
593
601
|
|
|
594
602
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -615,8 +623,6 @@
|
|
|
615
623
|
|
|
616
624
|
<li><a href="../String.html">String</a></li>
|
|
617
625
|
|
|
618
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
|
619
|
-
|
|
620
626
|
</ul>
|
|
621
627
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
622
628
|
</div>
|
|
@@ -672,11 +678,13 @@ called with the name of the start rule.
|
|
|
672
678
|
<hr style="height: 1px"></hr><p>
|
|
673
679
|
encoding: UTF-8
|
|
674
680
|
</p>
|
|
675
|
-
<h1>
|
|
681
|
+
<h1>State.rb — The <a href="../TaskJuggler.html">TaskJuggler</a> III <a href="Project.html">Project</a> Management Software</h1>
|
|
676
682
|
<p>
|
|
677
|
-
Copyright © 2006, 2007, 2008, 2009, 2010
|
|
678
|
-
<cs@kde.org>
|
|
683
|
+
Copyright © 2006, 2007, 2008, 2009, 2010, 2011
|
|
679
684
|
</p>
|
|
685
|
+
<pre>
|
|
686
|
+
by Chris Schlaeger <chris@linux.com>
|
|
687
|
+
</pre>
|
|
680
688
|
<p>
|
|
681
689
|
This program is free software; you can redistribute it and/or modify it
|
|
682
690
|
under the terms of version 2 of the GNU General Public License as published
|
|
@@ -687,9 +695,11 @@ encoding: UTF-8
|
|
|
687
695
|
</p>
|
|
688
696
|
<h1>TokenDoc.rb — The <a href="../TaskJuggler.html">TaskJuggler</a> III <a href="Project.html">Project</a> Management Software</h1>
|
|
689
697
|
<p>
|
|
690
|
-
Copyright © 2006, 2007, 2008, 2009, 2010
|
|
691
|
-
<cs@kde.org>
|
|
698
|
+
Copyright © 2006, 2007, 2008, 2009, 2010, 2011
|
|
692
699
|
</p>
|
|
700
|
+
<pre>
|
|
701
|
+
by Chris Schlaeger <chris@linux.com>
|
|
702
|
+
</pre>
|
|
693
703
|
<p>
|
|
694
704
|
This program is free software; you can redistribute it and/or modify it
|
|
695
705
|
under the terms of version 2 of the GNU General Public License as published
|
|
@@ -768,25 +778,25 @@ Create a new <a href="TextParser.html">TextParser</a> object.
|
|
|
768
778
|
<div class="method-source-code"
|
|
769
779
|
id="new-source">
|
|
770
780
|
<pre>
|
|
771
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
781
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 78</span>
|
|
782
|
+
78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">messageHandler</span>)
|
|
783
|
+
79: <span class="ruby-comment cmt"># The message handler will collect all error messages.</span>
|
|
784
|
+
80: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-identifier">messageHandler</span>
|
|
785
|
+
81: <span class="ruby-comment cmt"># This Hash will store the ruleset that the parser is operating on.</span>
|
|
786
|
+
82: <span class="ruby-ivar">@rules</span> = { }
|
|
787
|
+
83: <span class="ruby-comment cmt"># Array to hold the token types that the scanner can return.</span>
|
|
788
|
+
84: <span class="ruby-ivar">@variables</span> = []
|
|
789
|
+
85: <span class="ruby-comment cmt"># An list of token types that are not allowed in the current context.</span>
|
|
790
|
+
86: <span class="ruby-comment cmt"># For performance reasons we use a hash with the token as key. The value</span>
|
|
791
|
+
87: <span class="ruby-comment cmt"># is irrelevant.</span>
|
|
792
|
+
88: <span class="ruby-ivar">@blockedVariables</span> = {}
|
|
793
|
+
89: <span class="ruby-comment cmt"># The currently processed rule.</span>
|
|
794
|
+
90: <span class="ruby-ivar">@cr</span> = <span class="ruby-keyword kw">nil</span>
|
|
795
|
+
91:
|
|
796
|
+
92: <span class="ruby-ivar">@states</span> = {}
|
|
797
|
+
93: <span class="ruby-comment cmt"># The stack used by the FSM.</span>
|
|
798
|
+
94: <span class="ruby-ivar">@stack</span> = <span class="ruby-keyword kw">nil</span>
|
|
799
|
+
95: <span class="ruby-keyword kw">end</span></pre>
|
|
790
800
|
</div>
|
|
791
801
|
|
|
792
802
|
</div>
|
|
@@ -823,17 +833,17 @@ Create a new <a href="TextParser.html">TextParser</a> object.
|
|
|
823
833
|
<div class="method-source-code"
|
|
824
834
|
id="error-source">
|
|
825
835
|
<pre>
|
|
826
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
836
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 220</span>
|
|
837
|
+
220: <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">sfi</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">data</span> = <span class="ruby-keyword kw">nil</span>)
|
|
838
|
+
221: <span class="ruby-identifier">sfi</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">sourceFileInfo</span>
|
|
839
|
+
222: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scanner</span>
|
|
840
|
+
223: <span class="ruby-comment cmt"># The scanner has some more context information, so we pass the error</span>
|
|
841
|
+
224: <span class="ruby-comment cmt"># on to the TextScanner.</span>
|
|
842
|
+
225: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
|
|
843
|
+
226: <span class="ruby-keyword kw">else</span>
|
|
844
|
+
227: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">error</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
|
|
845
|
+
228: <span class="ruby-keyword kw">end</span>
|
|
846
|
+
229: <span class="ruby-keyword kw">end</span></pre>
|
|
837
847
|
</div>
|
|
838
848
|
|
|
839
849
|
</div>
|
|
@@ -867,17 +877,17 @@ rules.
|
|
|
867
877
|
<div class="method-source-code"
|
|
868
878
|
id="init-ules-source">
|
|
869
879
|
<pre>
|
|
870
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
880
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 112</span>
|
|
881
|
+
112: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initRules</span>
|
|
882
|
+
113: <span class="ruby-identifier">methods</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">m</span><span class="ruby-operator">|</span>
|
|
883
|
+
114: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">m</span>[<span class="ruby-value">0</span>, <span class="ruby-value">5</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'rule_'</span>
|
|
884
|
+
115: <span class="ruby-comment cmt"># Create a new rule with the suffix of the function name as name.</span>
|
|
885
|
+
116: <span class="ruby-identifier">newRule</span>(<span class="ruby-identifier">m</span>[<span class="ruby-value">5</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>])
|
|
886
|
+
117: <span class="ruby-comment cmt"># Call the function.</span>
|
|
887
|
+
118: <span class="ruby-identifier">send</span>(<span class="ruby-identifier">m</span>)
|
|
888
|
+
119: <span class="ruby-keyword kw">end</span>
|
|
889
|
+
120: <span class="ruby-keyword kw">end</span>
|
|
890
|
+
121: <span class="ruby-keyword kw">end</span></pre>
|
|
881
891
|
</div>
|
|
882
892
|
|
|
883
893
|
</div>
|
|
@@ -911,18 +921,18 @@ Limit the allowed tokens of the scanner to the subset passed by the
|
|
|
911
921
|
<div class="method-source-code"
|
|
912
922
|
id="limit-oken-et-source">
|
|
913
923
|
<pre>
|
|
914
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
924
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 99</span>
|
|
925
|
+
99: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">limitTokenSet</span>(<span class="ruby-identifier">tokenSet</span>)
|
|
926
|
+
100: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tokenSet</span>
|
|
927
|
+
101:
|
|
928
|
+
102: <span class="ruby-comment cmt"># Create a copy of all supported variables.</span>
|
|
929
|
+
103: <span class="ruby-identifier">blockedVariables</span> = <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">dup</span>
|
|
930
|
+
104: <span class="ruby-comment cmt"># Then delete all that are in the limited set.</span>
|
|
931
|
+
105: <span class="ruby-identifier">blockedVariables</span>.<span class="ruby-identifier">delete_if</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-identifier">tokenSet</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">v</span>) }
|
|
932
|
+
106: <span class="ruby-comment cmt"># And convert the list into a Hash for faster lookups.</span>
|
|
933
|
+
107: <span class="ruby-ivar">@blockedVariables</span> = {}
|
|
934
|
+
108: <span class="ruby-identifier">blockedVariables</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span> <span class="ruby-ivar">@blockedVariables</span>[<span class="ruby-identifier">v</span>] = <span class="ruby-keyword kw">true</span> }
|
|
935
|
+
109: <span class="ruby-keyword kw">end</span></pre>
|
|
926
936
|
</div>
|
|
927
937
|
|
|
928
938
|
</div>
|
|
@@ -960,21 +970,21 @@ then implicitely operate on the most recently added rule.
|
|
|
960
970
|
<div class="method-source-code"
|
|
961
971
|
id="new-ule-source">
|
|
962
972
|
<pre>
|
|
963
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
973
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 128</span>
|
|
974
|
+
128: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">newRule</span>(<span class="ruby-identifier">name</span>)
|
|
975
|
+
129: <span class="ruby-comment cmt"># Use a symbol instead of a String.</span>
|
|
976
|
+
130: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>.<span class="ruby-identifier">intern</span>
|
|
977
|
+
131: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Fatal Error: Rule #{name} already exists"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@rules</span>.<span class="ruby-identifier">has_key?</span>(<span class="ruby-identifier">name</span>)
|
|
978
|
+
132:
|
|
979
|
+
133: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">block_given?</span>
|
|
980
|
+
134: <span class="ruby-identifier">saveCr</span> = <span class="ruby-ivar">@cr</span>
|
|
981
|
+
135: <span class="ruby-ivar">@rules</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-ivar">@cr</span> = <span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">Rule</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>)
|
|
982
|
+
136: <span class="ruby-keyword kw">yield</span>
|
|
983
|
+
137: <span class="ruby-ivar">@cr</span> = <span class="ruby-identifier">saveCr</span>
|
|
984
|
+
138: <span class="ruby-keyword kw">else</span>
|
|
985
|
+
139: <span class="ruby-ivar">@rules</span>[<span class="ruby-identifier">name</span>] = <span class="ruby-ivar">@cr</span> = <span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">Rule</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">name</span>)
|
|
986
|
+
140: <span class="ruby-keyword kw">end</span>
|
|
987
|
+
141: <span class="ruby-keyword kw">end</span></pre>
|
|
978
988
|
</div>
|
|
979
989
|
|
|
980
990
|
</div>
|
|
@@ -1008,10 +1018,10 @@ elements.
|
|
|
1008
1018
|
<div class="method-source-code"
|
|
1009
1019
|
id="optional-source">
|
|
1010
1020
|
<pre>
|
|
1011
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1012
|
-
|
|
1013
|
-
|
|
1014
|
-
|
|
1021
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 160</span>
|
|
1022
|
+
160: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optional</span>
|
|
1023
|
+
161: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">setOptional</span>
|
|
1024
|
+
162: <span class="ruby-keyword kw">end</span></pre>
|
|
1015
1025
|
</div>
|
|
1016
1026
|
|
|
1017
1027
|
</div>
|
|
@@ -1047,21 +1057,21 @@ an error, the result is false.
|
|
|
1047
1057
|
<div class="method-source-code"
|
|
1048
1058
|
id="parse-source">
|
|
1049
1059
|
<pre>
|
|
1050
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1060
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 197</span>
|
|
1061
|
+
197: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse</span>(<span class="ruby-identifier">ruleName</span>)
|
|
1062
|
+
198: <span class="ruby-ivar">@stack</span> = []
|
|
1063
|
+
199: <span class="ruby-identifier">@@expectedTokens</span> = []
|
|
1064
|
+
200: <span class="ruby-keyword kw">begin</span>
|
|
1065
|
+
201: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">parseFSM</span>(<span class="ruby-ivar">@rules</span>[<span class="ruby-identifier">ruleName</span>])
|
|
1066
|
+
202: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">TjException</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">msg</span>
|
|
1067
|
+
203: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">message</span> <span class="ruby-operator">&&</span> <span class="ruby-operator">!</span><span class="ruby-identifier">msg</span>.<span class="ruby-identifier">message</span>.<span class="ruby-identifier">empty?</span>
|
|
1068
|
+
204: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">critical</span>(<span class="ruby-value str">'parse'</span>, <span class="ruby-identifier">msg</span>.<span class="ruby-identifier">message</span>)
|
|
1069
|
+
205: <span class="ruby-keyword kw">end</span>
|
|
1070
|
+
206: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
1071
|
+
207: <span class="ruby-keyword kw">end</span>
|
|
1072
|
+
208:
|
|
1073
|
+
209: <span class="ruby-identifier">result</span>
|
|
1074
|
+
210: <span class="ruby-keyword kw">end</span></pre>
|
|
1065
1075
|
</div>
|
|
1066
1076
|
|
|
1067
1077
|
</div>
|
|
@@ -1115,10 +1125,10 @@ completed the processing of this rule.
|
|
|
1115
1125
|
<div class="method-source-code"
|
|
1116
1126
|
id="pattern-source">
|
|
1117
1127
|
<pre>
|
|
1118
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1128
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 154</span>
|
|
1129
|
+
154: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">pattern</span>(<span class="ruby-identifier">tokens</span>, <span class="ruby-identifier">func</span> = <span class="ruby-keyword kw">nil</span>)
|
|
1130
|
+
155: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">addPattern</span>(<span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">Pattern</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">tokens</span>, <span class="ruby-identifier">func</span>))
|
|
1131
|
+
156: <span class="ruby-keyword kw">end</span></pre>
|
|
1122
1132
|
</div>
|
|
1123
1133
|
|
|
1124
1134
|
</div>
|
|
@@ -1152,10 +1162,10 @@ elements.
|
|
|
1152
1162
|
<div class="method-source-code"
|
|
1153
1163
|
id="repeatable-source">
|
|
1154
1164
|
<pre>
|
|
1155
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1165
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 166</span>
|
|
1166
|
+
166: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">repeatable</span>
|
|
1167
|
+
167: <span class="ruby-ivar">@cr</span>.<span class="ruby-identifier">setRepeatable</span>
|
|
1168
|
+
168: <span class="ruby-keyword kw">end</span></pre>
|
|
1159
1169
|
</div>
|
|
1160
1170
|
|
|
1161
1171
|
</div>
|
|
@@ -1191,11 +1201,11 @@ nil if we don’t have a current position.
|
|
|
1191
1201
|
<div class="method-source-code"
|
|
1192
1202
|
id="source-ile-nfo-source">
|
|
1193
1203
|
<pre>
|
|
1194
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1204
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 215</span>
|
|
1205
|
+
215: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">sourceFileInfo</span>
|
|
1206
|
+
216: <span class="ruby-keyword kw">return</span> <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">sourceFileInfo</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator"><=</span> <span class="ruby-value">1</span>
|
|
1207
|
+
217: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">firstSourceFileInfo</span>
|
|
1208
|
+
218: <span class="ruby-keyword kw">end</span></pre>
|
|
1199
1209
|
</div>
|
|
1200
1210
|
|
|
1201
1211
|
</div>
|
|
@@ -1232,25 +1242,25 @@ the states that are currently on the stack have not been modified.
|
|
|
1232
1242
|
<div class="method-source-code"
|
|
1233
1243
|
id="update-arser-ables-source">
|
|
1234
1244
|
<pre>
|
|
1235
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1245
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 174</span>
|
|
1246
|
+
174: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">updateParserTables</span>
|
|
1247
|
+
175: <span class="ruby-identifier">saveFsmStack</span>
|
|
1248
|
+
176: <span class="ruby-comment cmt"># Invalidate some cached data.</span>
|
|
1249
|
+
177: <span class="ruby-ivar">@rules</span>.<span class="ruby-identifier">each_value</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span> <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">flushCache</span> }
|
|
1250
|
+
178: <span class="ruby-ivar">@states</span> = {}
|
|
1251
|
+
179: <span class="ruby-comment cmt"># Generate the parser states for all patterns of all rules.</span>
|
|
1252
|
+
180: <span class="ruby-ivar">@rules</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>
|
|
1253
|
+
181: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">generateStates</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
|
|
1254
|
+
182: <span class="ruby-ivar">@states</span>[[ <span class="ruby-identifier">s</span>.<span class="ruby-identifier">rule</span>, <span class="ruby-identifier">s</span>.<span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">s</span>.<span class="ruby-identifier">index</span> ]] = <span class="ruby-identifier">s</span>
|
|
1255
|
+
183: <span class="ruby-keyword kw">end</span>
|
|
1256
|
+
184: <span class="ruby-identifier">checkRule</span>(<span class="ruby-identifier">rule</span>)
|
|
1257
|
+
185: <span class="ruby-keyword kw">end</span>
|
|
1258
|
+
186: <span class="ruby-comment cmt"># Compute the transitions between the generated states.</span>
|
|
1259
|
+
187: <span class="ruby-ivar">@states</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">state</span><span class="ruby-operator">|</span>
|
|
1260
|
+
188: <span class="ruby-identifier">state</span>.<span class="ruby-identifier">addTransitions</span>(<span class="ruby-ivar">@states</span>, <span class="ruby-ivar">@rules</span>)
|
|
1261
|
+
189: <span class="ruby-keyword kw">end</span>
|
|
1262
|
+
190: <span class="ruby-identifier">restoreFsmStack</span>
|
|
1263
|
+
191: <span class="ruby-keyword kw">end</span></pre>
|
|
1254
1264
|
</div>
|
|
1255
1265
|
|
|
1256
1266
|
</div>
|
|
@@ -1281,17 +1291,17 @@ the states that are currently on the stack have not been modified.
|
|
|
1281
1291
|
<div class="method-source-code"
|
|
1282
1292
|
id="warning-source">
|
|
1283
1293
|
<pre>
|
|
1284
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
|
|
1289
|
-
|
|
1290
|
-
|
|
1291
|
-
|
|
1292
|
-
|
|
1293
|
-
|
|
1294
|
-
|
|
1294
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 231</span>
|
|
1295
|
+
231: <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">sfi</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">data</span> = <span class="ruby-keyword kw">nil</span>)
|
|
1296
|
+
232: <span class="ruby-identifier">sfi</span> <span class="ruby-operator">||=</span> <span class="ruby-identifier">sourceFileInfo</span>
|
|
1297
|
+
233: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@scanner</span>
|
|
1298
|
+
234: <span class="ruby-comment cmt"># The scanner has some more context information, so we pass the</span>
|
|
1299
|
+
235: <span class="ruby-comment cmt"># warning on to the TextScanner.</span>
|
|
1300
|
+
236: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
|
|
1301
|
+
237: <span class="ruby-keyword kw">else</span>
|
|
1302
|
+
238: <span class="ruby-ivar">@messageHandler</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-identifier">id</span>, <span class="ruby-identifier">text</span>, <span class="ruby-identifier">sfi</span>, <span class="ruby-identifier">data</span>)
|
|
1303
|
+
239: <span class="ruby-keyword kw">end</span>
|
|
1304
|
+
240: <span class="ruby-keyword kw">end</span></pre>
|
|
1295
1305
|
</div>
|
|
1296
1306
|
|
|
1297
1307
|
</div>
|
|
@@ -1328,28 +1338,28 @@ the states that are currently on the stack have not been modified.
|
|
|
1328
1338
|
<div class="method-source-code"
|
|
1329
1339
|
id="check-ule-source">
|
|
1330
1340
|
<pre>
|
|
1331
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1341
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 244</span>
|
|
1342
|
+
244: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkRule</span>(<span class="ruby-identifier">rule</span>)
|
|
1343
|
+
245: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">empty?</span>
|
|
1344
|
+
246: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Rule #{rule.name} must have at least one pattern"</span>
|
|
1345
|
+
247: <span class="ruby-keyword kw">end</span>
|
|
1346
|
+
248:
|
|
1347
|
+
249: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">pat</span><span class="ruby-operator">|</span>
|
|
1348
|
+
250: <span class="ruby-identifier">pat</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span>
|
|
1349
|
+
251: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span>
|
|
1350
|
+
252: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@variables</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">name</span>).<span class="ruby-identifier">nil?</span>
|
|
1351
|
+
253: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unsupported_token'</span>,
|
|
1352
|
+
254: <span class="ruby-node">"The token #{name} is not supported here."</span>)
|
|
1353
|
+
255: <span class="ruby-keyword kw">end</span>
|
|
1354
|
+
256: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
|
|
1355
|
+
257: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">nil?</span>
|
|
1356
|
+
258: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Fatal Error: Reference to unknown rule #{name} in "</span> <span class="ruby-operator">+</span>
|
|
1357
|
+
259: <span class="ruby-node">"pattern '#{pat}' of rule #{rule.name}"</span>
|
|
1358
|
+
260: <span class="ruby-keyword kw">end</span>
|
|
1359
|
+
261: <span class="ruby-keyword kw">end</span>
|
|
1360
|
+
262: <span class="ruby-keyword kw">end</span>
|
|
1361
|
+
263: <span class="ruby-keyword kw">end</span>
|
|
1362
|
+
264: <span class="ruby-keyword kw">end</span></pre>
|
|
1353
1363
|
</div>
|
|
1354
1364
|
|
|
1355
1365
|
</div>
|
|
@@ -1380,30 +1390,30 @@ the states that are currently on the stack have not been modified.
|
|
|
1380
1390
|
<div class="method-source-code"
|
|
1381
1391
|
id="dump-tack-source">
|
|
1382
1392
|
<pre>
|
|
1383
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1393
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 405</span>
|
|
1394
|
+
405: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">dumpStack</span>
|
|
1395
|
+
406: <span class="ruby-comment cmt">#puts "Stack level #{@stack.length}"</span>
|
|
1396
|
+
407: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">sl</span><span class="ruby-operator">|</span>
|
|
1397
|
+
408: <span class="ruby-identifier">print</span> <span class="ruby-node">"#{@stack.index(sl)}: "</span>
|
|
1398
|
+
409: <span class="ruby-identifier">sl</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">v</span><span class="ruby-operator">|</span>
|
|
1399
|
+
410: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Array</span>)
|
|
1400
|
+
411: <span class="ruby-keyword kw">begin</span>
|
|
1401
|
+
412: <span class="ruby-identifier">print</span> <span class="ruby-node">"[#{v.join('|')}]|"</span>
|
|
1402
|
+
413: <span class="ruby-keyword kw">rescue</span>
|
|
1403
|
+
414: <span class="ruby-identifier">print</span> <span class="ruby-node">"[#{v[0].class}...]|"</span>
|
|
1404
|
+
415: <span class="ruby-keyword kw">end</span>
|
|
1405
|
+
416: <span class="ruby-keyword kw">else</span>
|
|
1406
|
+
417: <span class="ruby-keyword kw">begin</span>
|
|
1407
|
+
418: <span class="ruby-identifier">print</span> <span class="ruby-node">"#{v}|"</span>
|
|
1408
|
+
419: <span class="ruby-keyword kw">rescue</span>
|
|
1409
|
+
420: <span class="ruby-identifier">print</span> <span class="ruby-identifier">v</span>.<span class="ruby-identifier">class</span>
|
|
1410
|
+
421: <span class="ruby-keyword kw">end</span>
|
|
1411
|
+
422: <span class="ruby-keyword kw">end</span>
|
|
1412
|
+
423: <span class="ruby-keyword kw">end</span>
|
|
1413
|
+
424: <span class="ruby-identifier">print</span> <span class="ruby-node">" -> #{sl.state ? sl.state.to_s(true) : 'nil'} #{sl.function.nil? ? '' : '(Called)'}"</span>
|
|
1414
|
+
425: <span class="ruby-identifier">puts</span> <span class="ruby-value str">""</span>
|
|
1415
|
+
426: <span class="ruby-keyword kw">end</span>
|
|
1416
|
+
427: <span class="ruby-keyword kw">end</span></pre>
|
|
1407
1417
|
</div>
|
|
1408
1418
|
|
|
1409
1419
|
</div>
|
|
@@ -1434,52 +1444,56 @@ the states that are currently on the stack have not been modified.
|
|
|
1434
1444
|
<div class="method-source-code"
|
|
1435
1445
|
id="finish-attern-source">
|
|
1436
1446
|
<pre>
|
|
1437
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1447
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 355</span>
|
|
1448
|
+
355: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">finishPattern</span>(<span class="ruby-identifier">token</span>)
|
|
1449
|
+
356: <span class="ruby-comment cmt">#dumpStack</span>
|
|
1450
|
+
357: <span class="ruby-comment cmt"># To finish a pattern we need to pop the StackElement with the token</span>
|
|
1451
|
+
358: <span class="ruby-comment cmt"># values from the stack.</span>
|
|
1452
|
+
359: <span class="ruby-identifier">stackEntry</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">pop</span>
|
|
1453
|
+
360: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">empty?</span>
|
|
1454
|
+
361: <span class="ruby-comment cmt"># Check if we have reached the bottom of the stack.</span>
|
|
1455
|
+
362: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">getNextToken</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">token</span>
|
|
1456
|
+
363: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:endOfText</span>
|
|
1457
|
+
364: <span class="ruby-comment cmt"># If the token is the end of the top-level file, we're done. We push</span>
|
|
1458
|
+
365: <span class="ruby-comment cmt"># back the StackEntry since it holds the overall result of the</span>
|
|
1459
|
+
366: <span class="ruby-comment cmt"># parsing.</span>
|
|
1460
|
+
367: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">stackEntry</span>)
|
|
1461
|
+
368: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">true</span>
|
|
1462
|
+
369: <span class="ruby-keyword kw">end</span>
|
|
1463
|
+
370: <span class="ruby-comment cmt"># If it's not the EOF token, we found a token that violates the syntax</span>
|
|
1464
|
+
371: <span class="ruby-comment cmt"># rules.</span>
|
|
1465
|
+
372: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unexpctd_token'</span>, <span class="ruby-node">"Unexpected token '#{token[1]}' found. "</span> <span class="ruby-operator">+</span>
|
|
1466
|
+
373: <span class="ruby-value str">"Expecting one of "</span> <span class="ruby-operator">+</span>
|
|
1467
|
+
374: <span class="ruby-node">"#{stackEntry.state.expectedTokens.join(', ')}"</span>)
|
|
1468
|
+
375: <span class="ruby-keyword kw">end</span>
|
|
1469
|
+
376: <span class="ruby-comment cmt"># Memorize if the rule for this pattern was repeatable. Then we will</span>
|
|
1470
|
+
377: <span class="ruby-comment cmt"># store the result of the pattern in an Array.</span>
|
|
1471
|
+
378: <span class="ruby-identifier">ruleIsRepeatable</span> = <span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">state</span>.<span class="ruby-identifier">rule</span>.<span class="ruby-identifier">repeatable</span>
|
|
1472
|
+
379:
|
|
1473
|
+
380: <span class="ruby-identifier">state</span> = <span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">state</span>
|
|
1474
|
+
381: <span class="ruby-identifier">result</span> = <span class="ruby-keyword kw">nil</span>
|
|
1475
|
+
382: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">function</span>
|
|
1476
|
+
383: <span class="ruby-comment cmt"># Make the token values and their SourceFileInfo available.</span>
|
|
1477
|
+
384: <span class="ruby-ivar">@val</span> = <span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">val</span>
|
|
1478
|
+
385: <span class="ruby-ivar">@sourceFileInfo</span> = <span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">sourceFileInfo</span>
|
|
1479
|
+
386: <span class="ruby-comment cmt"># Now call the pattern action to compute the value of the pattern.</span>
|
|
1480
|
+
387: <span class="ruby-keyword kw">begin</span>
|
|
1481
|
+
388: <span class="ruby-identifier">result</span> = <span class="ruby-identifier">state</span>.<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">function</span>.<span class="ruby-identifier">call</span>
|
|
1482
|
+
389: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">AttributeOverwrite</span>
|
|
1483
|
+
390: <span class="ruby-ivar">@scanner</span>.<span class="ruby-identifier">warning</span>(<span class="ruby-value str">'attr_overwrite'</span>, <span class="ruby-identifier">$!</span>.<span class="ruby-identifier">to_s</span>)
|
|
1484
|
+
391: <span class="ruby-keyword kw">end</span>
|
|
1485
|
+
392: <span class="ruby-keyword kw">end</span>
|
|
1486
|
+
393:
|
|
1487
|
+
394: <span class="ruby-comment cmt"># We use the SourceFileInfo of the first token of the pattern to store</span>
|
|
1488
|
+
395: <span class="ruby-comment cmt"># it with the result of the pattern.</span>
|
|
1489
|
+
396: <span class="ruby-identifier">firstSourceFileInfo</span> = <span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">firstSourceFileInfo</span>
|
|
1490
|
+
397: <span class="ruby-comment cmt"># Store the result at the correct position into the next lower level of</span>
|
|
1491
|
+
398: <span class="ruby-comment cmt"># the stack.</span>
|
|
1492
|
+
399: <span class="ruby-identifier">stackEntry</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>
|
|
1493
|
+
400: <span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">stackEntry</span>.<span class="ruby-identifier">state</span>.<span class="ruby-identifier">index</span>, <span class="ruby-identifier">result</span>,
|
|
1494
|
+
401: <span class="ruby-identifier">firstSourceFileInfo</span>, <span class="ruby-identifier">ruleIsRepeatable</span>)
|
|
1495
|
+
402: <span class="ruby-keyword kw">false</span>
|
|
1496
|
+
403: <span class="ruby-keyword kw">end</span></pre>
|
|
1483
1497
|
</div>
|
|
1484
1498
|
|
|
1485
1499
|
</div>
|
|
@@ -1510,17 +1524,17 @@ the states that are currently on the stack have not been modified.
|
|
|
1510
1524
|
<div class="method-source-code"
|
|
1511
1525
|
id="get-ext-oken-source">
|
|
1512
1526
|
<pre>
|
|
1513
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1527
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 452</span>
|
|
1528
|
+
452: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">getNextToken</span>
|
|
1529
|
+
453: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">nextToken</span>
|
|
1530
|
+
454: <span class="ruby-comment cmt">#Log << "Token: [#{token[0]}][#{token[1]}]"</span>
|
|
1531
|
+
455: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@blockedVariables</span>[<span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>]]
|
|
1532
|
+
456: <span class="ruby-identifier">error</span>(<span class="ruby-value str">'unsupported_token'</span>,
|
|
1533
|
+
457: <span class="ruby-node">"The token #{token[1]} is not supported in this context."</span>,
|
|
1534
|
+
458: <span class="ruby-identifier">token</span>[<span class="ruby-value">2</span>])
|
|
1535
|
+
459: <span class="ruby-keyword kw">end</span>
|
|
1536
|
+
460: <span class="ruby-identifier">token</span>
|
|
1537
|
+
461: <span class="ruby-keyword kw">end</span></pre>
|
|
1524
1538
|
</div>
|
|
1525
1539
|
|
|
1526
1540
|
</div>
|
|
@@ -1551,95 +1565,95 @@ the states that are currently on the stack have not been modified.
|
|
|
1551
1565
|
<div class="method-source-code"
|
|
1552
1566
|
id="parse--source">
|
|
1553
1567
|
<pre>
|
|
1554
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
|
|
1585
|
-
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
|
|
1593
|
-
|
|
1594
|
-
|
|
1595
|
-
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
|
|
1605
|
-
|
|
1606
|
-
|
|
1607
|
-
|
|
1608
|
-
|
|
1609
|
-
|
|
1610
|
-
|
|
1611
|
-
|
|
1612
|
-
|
|
1613
|
-
|
|
1614
|
-
|
|
1615
|
-
|
|
1616
|
-
|
|
1617
|
-
|
|
1618
|
-
|
|
1619
|
-
|
|
1620
|
-
|
|
1621
|
-
|
|
1622
|
-
|
|
1623
|
-
|
|
1624
|
-
|
|
1625
|
-
|
|
1626
|
-
|
|
1627
|
-
|
|
1628
|
-
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1641
|
-
|
|
1642
|
-
|
|
1568
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 266</span>
|
|
1569
|
+
266: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parseFSM</span>(<span class="ruby-identifier">rule</span>)
|
|
1570
|
+
267: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">state</span> = <span class="ruby-ivar">@states</span>[[ <span class="ruby-identifier">rule</span>, <span class="ruby-keyword kw">nil</span>, <span class="ruby-value">0</span> ]])
|
|
1571
|
+
268: <span class="ruby-identifier">error</span>(<span class="ruby-value str">"no_start_state"</span>, <span class="ruby-node">"No start state for rule #{rule.name} found"</span>)
|
|
1572
|
+
269: <span class="ruby-keyword kw">end</span>
|
|
1573
|
+
270: <span class="ruby-ivar">@stack</span> = [ <span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">StackElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">state</span>) ]
|
|
1574
|
+
271:
|
|
1575
|
+
272: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
|
1576
|
+
273: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">transitions</span>.<span class="ruby-identifier">empty?</span>
|
|
1577
|
+
274: <span class="ruby-comment cmt"># The final states of each pattern have no pre-compiled transitions.</span>
|
|
1578
|
+
275: <span class="ruby-comment cmt"># For such a state, we don't need to get a new token.</span>
|
|
1579
|
+
276: <span class="ruby-identifier">transition</span> = <span class="ruby-identifier">token</span> = <span class="ruby-keyword kw">nil</span>
|
|
1580
|
+
277: <span class="ruby-keyword kw">else</span>
|
|
1581
|
+
278: <span class="ruby-identifier">transition</span> = <span class="ruby-identifier">state</span>.<span class="ruby-identifier">transition</span>(<span class="ruby-identifier">token</span> = <span class="ruby-identifier">getNextToken</span>)
|
|
1582
|
+
279: <span class="ruby-keyword kw">end</span>
|
|
1583
|
+
280:
|
|
1584
|
+
281: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">transition</span>
|
|
1585
|
+
282: <span class="ruby-comment cmt"># Shift: This for normal state transitions. This may be from one</span>
|
|
1586
|
+
283: <span class="ruby-comment cmt"># token of a pattern to the next token of the same pattern, to the</span>
|
|
1587
|
+
284: <span class="ruby-comment cmt"># start of a new pattern or a loop-back to the start of a pattern of</span>
|
|
1588
|
+
285: <span class="ruby-comment cmt"># the same rule. The transition tells us what state we have to</span>
|
|
1589
|
+
286: <span class="ruby-comment cmt"># process next.</span>
|
|
1590
|
+
287: <span class="ruby-identifier">state</span> = <span class="ruby-identifier">transition</span>.<span class="ruby-identifier">state</span>
|
|
1591
|
+
288:
|
|
1592
|
+
289: <span class="ruby-comment cmt"># If we have looped-back we need to finish the pattern first. Final</span>
|
|
1593
|
+
290: <span class="ruby-comment cmt"># tokens of repeatable rules do have transitions!</span>
|
|
1594
|
+
291: <span class="ruby-identifier">finishPattern</span>(<span class="ruby-identifier">token</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">transition</span>.<span class="ruby-identifier">loopBack</span>
|
|
1595
|
+
292:
|
|
1596
|
+
293: <span class="ruby-comment cmt"># Transitions that enter rules generate states which we need to</span>
|
|
1597
|
+
294: <span class="ruby-comment cmt"># resume at when a rule has been completely processed. We push this</span>
|
|
1598
|
+
295: <span class="ruby-comment cmt"># list of states on the @stack.</span>
|
|
1599
|
+
296: <span class="ruby-identifier">stackElement</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>
|
|
1600
|
+
297: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
|
|
1601
|
+
298: <span class="ruby-identifier">transition</span>.<span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
|
|
1602
|
+
299: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">s</span>.<span class="ruby-identifier">pattern</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">stackElement</span>.<span class="ruby-identifier">state</span>.<span class="ruby-identifier">pattern</span>
|
|
1603
|
+
300: <span class="ruby-comment cmt"># The first state in the list may just be another state of the</span>
|
|
1604
|
+
301: <span class="ruby-comment cmt"># current pattern. In this case, we already have the</span>
|
|
1605
|
+
302: <span class="ruby-comment cmt"># StackElement on the @stack. We only need to update the State</span>
|
|
1606
|
+
303: <span class="ruby-comment cmt"># for the current StackElement.</span>
|
|
1607
|
+
304: <span class="ruby-identifier">stackElement</span>.<span class="ruby-identifier">state</span> = <span class="ruby-identifier">s</span>
|
|
1608
|
+
305: <span class="ruby-keyword kw">else</span>
|
|
1609
|
+
306: <span class="ruby-comment cmt"># For other patterns, we just push a new StackElement onto the</span>
|
|
1610
|
+
307: <span class="ruby-comment cmt"># @stack.</span>
|
|
1611
|
+
308: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">StackElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">s</span>))
|
|
1612
|
+
309: <span class="ruby-keyword kw">end</span>
|
|
1613
|
+
310: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
|
|
1614
|
+
311: <span class="ruby-keyword kw">end</span>
|
|
1615
|
+
312:
|
|
1616
|
+
313: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">index</span> <span class="ruby-operator">==</span> <span class="ruby-value">0</span>
|
|
1617
|
+
314: <span class="ruby-comment cmt"># If we have just started with a new pattern (or loop-ed back) we</span>
|
|
1618
|
+
315: <span class="ruby-comment cmt"># need to push a new StackEntry onto the @stack. The StackEntry</span>
|
|
1619
|
+
316: <span class="ruby-comment cmt"># stores the result of the pattern and keeps the State that we</span>
|
|
1620
|
+
317: <span class="ruby-comment cmt"># need to return to in case we jump to other patterns from this</span>
|
|
1621
|
+
318: <span class="ruby-comment cmt"># pattern.</span>
|
|
1622
|
+
319: <span class="ruby-identifier">function</span> = <span class="ruby-identifier">state</span>.<span class="ruby-identifier">index</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span> <span class="ruby-operator">?</span>
|
|
1623
|
+
320: <span class="ruby-identifier">state</span>.<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">function</span> <span class="ruby-operator">:</span> <span class="ruby-keyword kw">nil</span>
|
|
1624
|
+
321: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">push</span>(<span class="ruby-constant">TextParser</span><span class="ruby-operator">::</span><span class="ruby-constant">StackElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">state</span>.<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">function</span>,
|
|
1625
|
+
322: <span class="ruby-identifier">state</span>))
|
|
1626
|
+
323: <span class="ruby-keyword kw">end</span>
|
|
1627
|
+
324:
|
|
1628
|
+
325: <span class="ruby-comment cmt"># Store the token value in the result Array.</span>
|
|
1629
|
+
326: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">insert</span>(<span class="ruby-identifier">state</span>.<span class="ruby-identifier">index</span>, <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span>], <span class="ruby-identifier">token</span>[<span class="ruby-value">2</span>], <span class="ruby-keyword kw">false</span>)
|
|
1630
|
+
327: <span class="ruby-keyword kw">else</span>
|
|
1631
|
+
328: <span class="ruby-comment cmt"># Reduce: We've reached the end of a rule. There is no pre-compiled</span>
|
|
1632
|
+
329: <span class="ruby-comment cmt"># transition available. The current token, if we have one, is of no</span>
|
|
1633
|
+
330: <span class="ruby-comment cmt"># use to us during this state. We just return it to the scanner. The</span>
|
|
1634
|
+
331: <span class="ruby-comment cmt"># next state is determined by the first matching state from the</span>
|
|
1635
|
+
332: <span class="ruby-comment cmt"># @stack.</span>
|
|
1636
|
+
333: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">state</span>.<span class="ruby-identifier">noReduce</span>
|
|
1637
|
+
334: <span class="ruby-comment cmt"># Only states that finish a rule may trigger a reduce operation.</span>
|
|
1638
|
+
335: <span class="ruby-comment cmt"># Other states have the noReduce flag set. If a reduce for such a</span>
|
|
1639
|
+
336: <span class="ruby-comment cmt"># state is triggered, we found a token that is not supported by</span>
|
|
1640
|
+
337: <span class="ruby-comment cmt"># the syntax rules.</span>
|
|
1641
|
+
338: <span class="ruby-identifier">error</span>(<span class="ruby-value str">"no_reduce"</span>,
|
|
1642
|
+
339: <span class="ruby-node">"Unexpected token '#{token[1]}' found. "</span> <span class="ruby-operator">+</span>
|
|
1643
|
+
340: <span class="ruby-value str">"Expecting one of "</span> <span class="ruby-operator">+</span>
|
|
1644
|
+
341: <span class="ruby-node">"#{@stack.last.state.expectedTokens.join(', ')}"</span>)
|
|
1645
|
+
342: <span class="ruby-keyword kw">end</span>
|
|
1646
|
+
343: <span class="ruby-identifier">returnToken</span>(<span class="ruby-identifier">token</span>) <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">token</span>
|
|
1647
|
+
344: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">finishPattern</span>(<span class="ruby-identifier">token</span>)
|
|
1648
|
+
345: <span class="ruby-comment cmt"># Accept: We're done with parsing.</span>
|
|
1649
|
+
346: <span class="ruby-keyword kw">break</span>
|
|
1650
|
+
347: <span class="ruby-keyword kw">end</span>
|
|
1651
|
+
348: <span class="ruby-identifier">state</span> = <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">last</span>.<span class="ruby-identifier">state</span>
|
|
1652
|
+
349: <span class="ruby-keyword kw">end</span>
|
|
1653
|
+
350: <span class="ruby-keyword kw">end</span>
|
|
1654
|
+
351:
|
|
1655
|
+
352: <span class="ruby-ivar">@stack</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">val</span>[<span class="ruby-value">0</span>]
|
|
1656
|
+
353: <span class="ruby-keyword kw">end</span></pre>
|
|
1643
1657
|
</div>
|
|
1644
1658
|
|
|
1645
1659
|
</div>
|
|
@@ -1673,16 +1687,16 @@ respective <a href="TextParser/State.html">State</a> objects again.
|
|
|
1673
1687
|
<div class="method-source-code"
|
|
1674
1688
|
id="restore-sm-tack-source">
|
|
1675
1689
|
<pre>
|
|
1676
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1690
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 442</span>
|
|
1691
|
+
442: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">restoreFsmStack</span>
|
|
1692
|
+
443: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@stack</span>
|
|
1693
|
+
444:
|
|
1694
|
+
445: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
|
|
1695
|
+
446: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">state</span> = <span class="ruby-ivar">@states</span>[<span class="ruby-identifier">s</span>.<span class="ruby-identifier">state</span>])
|
|
1696
|
+
447: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Stack restore failed. Cannot find state"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">state</span>
|
|
1697
|
+
448: <span class="ruby-identifier">s</span>.<span class="ruby-identifier">state</span> = <span class="ruby-identifier">state</span>
|
|
1698
|
+
449: <span class="ruby-keyword kw">end</span>
|
|
1699
|
+
450: <span class="ruby-keyword kw">end</span></pre>
|
|
1686
1700
|
</div>
|
|
1687
1701
|
|
|
1688
1702
|
</div>
|
|
@@ -1717,15 +1731,15 @@ href="TextParser/State.html">State</a> objects into [ rule, pattern, index
|
|
|
1717
1731
|
<div class="method-source-code"
|
|
1718
1732
|
id="save-sm-tack-source">
|
|
1719
1733
|
<pre>
|
|
1720
|
-
<span class="ruby-comment cmt"># File lib/TextParser.rb, line
|
|
1721
|
-
|
|
1722
|
-
|
|
1723
|
-
|
|
1724
|
-
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1734
|
+
<span class="ruby-comment cmt"># File lib/TextParser.rb, line 431</span>
|
|
1735
|
+
431: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">saveFsmStack</span>
|
|
1736
|
+
432: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@stack</span>
|
|
1737
|
+
433:
|
|
1738
|
+
434: <span class="ruby-ivar">@stack</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">s</span><span class="ruby-operator">|</span>
|
|
1739
|
+
435: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">st</span> = <span class="ruby-identifier">s</span>.<span class="ruby-identifier">state</span>)
|
|
1740
|
+
436: <span class="ruby-identifier">s</span>.<span class="ruby-identifier">state</span> = [ <span class="ruby-identifier">st</span>.<span class="ruby-identifier">rule</span>, <span class="ruby-identifier">st</span>.<span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">st</span>.<span class="ruby-identifier">index</span> ]
|
|
1741
|
+
437: <span class="ruby-keyword kw">end</span>
|
|
1742
|
+
438: <span class="ruby-keyword kw">end</span></pre>
|
|
1729
1743
|
</div>
|
|
1730
1744
|
|
|
1731
1745
|
</div>
|