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
|
@@ -163,6 +163,8 @@
|
|
|
163
163
|
|
|
164
164
|
<li><a href="../../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
|
165
165
|
|
|
166
|
+
<li><a href="../../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
|
167
|
+
|
|
166
168
|
<li><a href="../../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
|
167
169
|
|
|
168
170
|
<li><a href="../../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
|
@@ -241,6 +243,8 @@
|
|
|
241
243
|
|
|
242
244
|
<li><a href="../../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
|
243
245
|
|
|
246
|
+
<li><a href="../../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
|
247
|
+
|
|
244
248
|
<li><a href="../../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
|
245
249
|
|
|
246
250
|
<li><a href="../../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
|
@@ -273,6 +277,8 @@
|
|
|
273
277
|
|
|
274
278
|
<li><a href="../../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
|
275
279
|
|
|
280
|
+
<li><a href="../../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
|
281
|
+
|
|
276
282
|
<li><a href="../../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
|
277
283
|
|
|
278
284
|
<li><a href="../../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
|
@@ -553,6 +559,8 @@
|
|
|
553
559
|
|
|
554
560
|
<li><a href="../../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
555
561
|
|
|
562
|
+
<li><a href="../../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
|
563
|
+
|
|
556
564
|
<li><a href="../../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
557
565
|
|
|
558
566
|
<li><a href="../../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -579,8 +587,6 @@
|
|
|
579
587
|
|
|
580
588
|
<li><a href="../../String.html">String</a></li>
|
|
581
589
|
|
|
582
|
-
<li><a href="../../StringIO.html">StringIO</a></li>
|
|
583
|
-
|
|
584
590
|
</ul>
|
|
585
591
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
586
592
|
</div>
|
|
@@ -769,55 +775,55 @@ documentary information about the pattern.
|
|
|
769
775
|
<div class="method-source-code"
|
|
770
776
|
id="new-source">
|
|
771
777
|
<pre>
|
|
772
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
778
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 46</span>
|
|
779
|
+
46: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">tokens</span>, <span class="ruby-identifier">function</span> = <span class="ruby-keyword kw">nil</span>)
|
|
780
|
+
47: <span class="ruby-comment cmt"># A unique name for the pattern that is used in the documentation.</span>
|
|
781
|
+
48: <span class="ruby-ivar">@keyword</span> = <span class="ruby-keyword kw">nil</span>
|
|
782
|
+
49: <span class="ruby-comment cmt"># Initialize pattern doc as empty.</span>
|
|
783
|
+
50: <span class="ruby-ivar">@doc</span> = <span class="ruby-keyword kw">nil</span>
|
|
784
|
+
51: <span class="ruby-comment cmt"># A list of TokenDoc elements that describe the meaning of variable</span>
|
|
785
|
+
52: <span class="ruby-comment cmt"># tokens. The order of the tokens and entries in the Array must correlate.</span>
|
|
786
|
+
53: <span class="ruby-ivar">@args</span> = []
|
|
787
|
+
54: <span class="ruby-comment cmt"># A list of references to other patterns that are related to this pattern.</span>
|
|
788
|
+
55: <span class="ruby-ivar">@seeAlso</span> = []
|
|
789
|
+
56: <span class="ruby-comment cmt"># A reference to a file under test/TestSuite/Syntax/Correct and a tag</span>
|
|
790
|
+
57: <span class="ruby-comment cmt"># within that file. This identifies example TJP code to be included with</span>
|
|
791
|
+
58: <span class="ruby-comment cmt"># the reference manual.</span>
|
|
792
|
+
59: <span class="ruby-ivar">@exampleFile</span> = <span class="ruby-keyword kw">nil</span>
|
|
793
|
+
60: <span class="ruby-ivar">@exampleTag</span> = <span class="ruby-keyword kw">nil</span>
|
|
794
|
+
61:
|
|
795
|
+
62: <span class="ruby-ivar">@tokens</span> = []
|
|
796
|
+
63: <span class="ruby-identifier">tokens</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">token</span><span class="ruby-operator">|</span>
|
|
797
|
+
64: <span class="ruby-keyword kw">unless</span> <span class="ruby-value str">'!$_.'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>])
|
|
798
|
+
65: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Fatal Error: All pattern tokens must start with a type "</span> <span class="ruby-operator">+</span>
|
|
799
|
+
66: <span class="ruby-node">"identifier [!$_.]: #{tokens.join(', ')}"</span>
|
|
800
|
+
67: <span class="ruby-keyword kw">end</span>
|
|
801
|
+
68: <span class="ruby-comment cmt"># For the syntax specification using a prefix character is more</span>
|
|
802
|
+
69: <span class="ruby-comment cmt"># convenient. But for further processing, we need to split the string</span>
|
|
803
|
+
70: <span class="ruby-comment cmt"># into two symbols. The prefix determines the token type, the rest is</span>
|
|
804
|
+
71: <span class="ruby-comment cmt"># the token name. There are 4 types of tokens:</span>
|
|
805
|
+
72: <span class="ruby-comment cmt"># :reference : a reference to another rule</span>
|
|
806
|
+
73: <span class="ruby-comment cmt"># :variable : a terminal symbol</span>
|
|
807
|
+
74: <span class="ruby-comment cmt"># :literal : a user defined string</span>
|
|
808
|
+
75: <span class="ruby-comment cmt"># :eof : marks the end of an input stream</span>
|
|
809
|
+
76: <span class="ruby-identifier">type</span> = [ <span class="ruby-value">:reference</span>, <span class="ruby-value">:variable</span>, <span class="ruby-value">:literal</span>, <span class="ruby-value">:eof</span> ][<span class="ruby-value str">'!$_.'</span>.<span class="ruby-identifier">index</span>(<span class="ruby-identifier">token</span>[<span class="ruby-value">0</span>])]
|
|
810
|
+
77: <span class="ruby-comment cmt"># For literals we use a String to store the token content. For others,</span>
|
|
811
|
+
78: <span class="ruby-comment cmt"># a symbol is better suited.</span>
|
|
812
|
+
79: <span class="ruby-identifier">name</span> = <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span> <span class="ruby-operator">?</span>
|
|
813
|
+
80: <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>] <span class="ruby-operator">:</span> (<span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:eof</span> <span class="ruby-operator">?</span> <span class="ruby-value str">'<END>'</span> <span class="ruby-operator">:</span> <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">intern</span>)
|
|
814
|
+
81: <span class="ruby-comment cmt"># We favor an Array to store the 2 elements over a Hash for</span>
|
|
815
|
+
82: <span class="ruby-comment cmt"># performance reasons.</span>
|
|
816
|
+
83: <span class="ruby-ivar">@tokens</span> <span class="ruby-operator"><<</span> [ <span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span> ]
|
|
817
|
+
84: <span class="ruby-comment cmt"># Initialize pattern argument descriptions as empty.</span>
|
|
818
|
+
85: <span class="ruby-ivar">@args</span> <span class="ruby-operator"><<</span> <span class="ruby-keyword kw">nil</span>
|
|
819
|
+
86: <span class="ruby-keyword kw">end</span>
|
|
820
|
+
87: <span class="ruby-ivar">@function</span> = <span class="ruby-identifier">function</span>
|
|
821
|
+
88: <span class="ruby-comment cmt"># In some cases we don't want to show all tokens in the syntax</span>
|
|
822
|
+
89: <span class="ruby-comment cmt"># documentation. This value specifies the index of the last shown token.</span>
|
|
823
|
+
90: <span class="ruby-ivar">@lastSyntaxToken</span> = <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">-</span> <span class="ruby-value">1</span>
|
|
824
|
+
91:
|
|
825
|
+
92: <span class="ruby-ivar">@transitions</span> = []
|
|
826
|
+
93: <span class="ruby-keyword kw">end</span></pre>
|
|
821
827
|
</div>
|
|
822
828
|
|
|
823
829
|
</div>
|
|
@@ -856,10 +862,10 @@ Conveniance function to access individual tokens by index.
|
|
|
856
862
|
<div class="method-source-code"
|
|
857
863
|
id="--source">
|
|
858
864
|
<pre>
|
|
859
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
865
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 211</span>
|
|
866
|
+
211: <span class="ruby-keyword kw">def</span> <span class="ruby-operator">[]</span>(<span class="ruby-identifier">i</span>)
|
|
867
|
+
212: <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>]
|
|
868
|
+
213: <span class="ruby-keyword kw">end</span></pre>
|
|
863
869
|
</div>
|
|
864
870
|
|
|
865
871
|
</div>
|
|
@@ -902,77 +908,77 @@ the start of the <a href="Rule.html">Rule</a>.
|
|
|
902
908
|
<div class="method-source-code"
|
|
903
909
|
id="add-ransitions-o-tate-source">
|
|
904
910
|
<pre>
|
|
905
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
911
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 112</span>
|
|
912
|
+
112: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">stateStack</span>, <span class="ruby-identifier">sourceState</span>,
|
|
913
|
+
113: <span class="ruby-identifier">destRule</span>, <span class="ruby-identifier">destIndex</span>, <span class="ruby-identifier">loopBack</span>)
|
|
914
|
+
114: <span class="ruby-comment cmt"># If we hit a token in the pattern that is optional, we need to consider</span>
|
|
915
|
+
115: <span class="ruby-comment cmt"># the next token of the pattern as well.</span>
|
|
916
|
+
116: <span class="ruby-identifier">loop</span> <span class="ruby-keyword kw">do</span>
|
|
917
|
+
117: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">destIndex</span> <span class="ruby-operator">>=</span> <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span>
|
|
918
|
+
118: <span class="ruby-comment cmt"># Have we reached the end of the pattern? Such state always trigger</span>
|
|
919
|
+
119: <span class="ruby-comment cmt"># a reduce operation.</span>
|
|
920
|
+
120: <span class="ruby-identifier">sourceState</span>.<span class="ruby-identifier">noReduce</span> = <span class="ruby-keyword kw">false</span>
|
|
921
|
+
121: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">sourceState</span>.<span class="ruby-identifier">rule</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">destRule</span>
|
|
922
|
+
122: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">destRule</span>.<span class="ruby-identifier">repeatable</span>
|
|
923
|
+
123: <span class="ruby-comment cmt"># The transition leads us back to the start of the Rule. This</span>
|
|
924
|
+
124: <span class="ruby-comment cmt"># will generate transitions to the first token of all patterns</span>
|
|
925
|
+
125: <span class="ruby-comment cmt"># of this Rule.</span>
|
|
926
|
+
126: <span class="ruby-identifier">destRule</span>.<span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, [], <span class="ruby-identifier">sourceState</span>,
|
|
927
|
+
127: <span class="ruby-keyword kw">true</span>)
|
|
928
|
+
128: <span class="ruby-keyword kw">end</span>
|
|
929
|
+
129: <span class="ruby-keyword kw">end</span>
|
|
930
|
+
130: <span class="ruby-comment cmt"># We've reached the end of the pattern. No more transitions to</span>
|
|
931
|
+
131: <span class="ruby-comment cmt"># consider.</span>
|
|
932
|
+
132: <span class="ruby-keyword kw">return</span>
|
|
933
|
+
133: <span class="ruby-keyword kw">end</span>
|
|
934
|
+
134:
|
|
935
|
+
135: <span class="ruby-comment cmt"># The token descriptor tells us where the transition(s) need to go to.</span>
|
|
936
|
+
136: <span class="ruby-identifier">tokenType</span>, <span class="ruby-identifier">tokenName</span> = <span class="ruby-identifier">token</span> = <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">destIndex</span>]
|
|
937
|
+
137:
|
|
938
|
+
138: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">tokenType</span>
|
|
939
|
+
139: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:reference</span>
|
|
940
|
+
140: <span class="ruby-comment cmt"># The descriptor references another rule.</span>
|
|
941
|
+
141: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">refRule</span> = <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">tokenName</span>])
|
|
942
|
+
142: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown rule #{tokenName} referenced in rule #{refRule.name}"</span>
|
|
943
|
+
143: <span class="ruby-keyword kw">end</span>
|
|
944
|
+
144: <span class="ruby-comment cmt"># If we reference another rule from a pattern, we need to come back</span>
|
|
945
|
+
145: <span class="ruby-comment cmt"># to the pattern once we are done with the referenced rule. To be</span>
|
|
946
|
+
146: <span class="ruby-comment cmt"># able to come back, we collect a list of all the States that we</span>
|
|
947
|
+
147: <span class="ruby-comment cmt"># have passed during a reference resolution. This list forms a stack</span>
|
|
948
|
+
148: <span class="ruby-comment cmt"># that is popped during recude operations of the parser FSM.</span>
|
|
949
|
+
149: <span class="ruby-identifier">skippedState</span> = <span class="ruby-identifier">states</span>[[ <span class="ruby-identifier">destRule</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">destIndex</span> ]]
|
|
950
|
+
150: <span class="ruby-comment cmt"># Rules may reference themselves directly or indirectly. To avoid</span>
|
|
951
|
+
151: <span class="ruby-comment cmt"># endless recursions of this algorithm, we stop once we have</span>
|
|
952
|
+
152: <span class="ruby-comment cmt"># detected a recursion. We have already all necessary transitions</span>
|
|
953
|
+
153: <span class="ruby-comment cmt"># collected. The recursion will be unrolled in the parser FSM.</span>
|
|
954
|
+
154: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">skippedState</span>)
|
|
955
|
+
155: <span class="ruby-comment cmt"># Push the skipped state on the stateStack before recursing.</span>
|
|
956
|
+
156: <span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">push</span>(<span class="ruby-identifier">skippedState</span>)
|
|
957
|
+
157: <span class="ruby-identifier">refRule</span>.<span class="ruby-identifier">addTransitionsToState</span>(<span class="ruby-identifier">states</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">stateStack</span>,
|
|
958
|
+
158: <span class="ruby-identifier">sourceState</span>, <span class="ruby-identifier">loopBack</span>)
|
|
959
|
+
159: <span class="ruby-comment cmt"># Once we're done, remove the State from the stateStack again.</span>
|
|
960
|
+
160: <span class="ruby-identifier">stateStack</span>.<span class="ruby-identifier">pop</span>
|
|
961
|
+
161: <span class="ruby-keyword kw">end</span>
|
|
962
|
+
162:
|
|
963
|
+
163: <span class="ruby-comment cmt"># If the referenced rule is not optional, we have no further</span>
|
|
964
|
+
164: <span class="ruby-comment cmt"># transitions for this pattern at this destIndex.</span>
|
|
965
|
+
165: <span class="ruby-keyword kw">break</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">refRule</span>.<span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
|
|
966
|
+
166: <span class="ruby-keyword kw">else</span>
|
|
967
|
+
167: <span class="ruby-keyword kw">unless</span> (<span class="ruby-identifier">destState</span> = <span class="ruby-identifier">states</span>[[ <span class="ruby-identifier">destRule</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">destIndex</span> ]])
|
|
968
|
+
168: <span class="ruby-identifier">raise</span> <span class="ruby-value str">"Destination state not found"</span>
|
|
969
|
+
169: <span class="ruby-keyword kw">end</span>
|
|
970
|
+
170: <span class="ruby-comment cmt"># We've found a transition to a terminal token. Add the transition</span>
|
|
971
|
+
171: <span class="ruby-comment cmt"># to the source State.</span>
|
|
972
|
+
172: <span class="ruby-identifier">sourceState</span>.<span class="ruby-identifier">addTransition</span>(<span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">destIndex</span>], <span class="ruby-identifier">destState</span>, <span class="ruby-identifier">stateStack</span>,
|
|
973
|
+
173: <span class="ruby-identifier">loopBack</span>)
|
|
974
|
+
174: <span class="ruby-comment cmt"># Fixed tokens are never optional. There are no more transitions for</span>
|
|
975
|
+
175: <span class="ruby-comment cmt"># this pattern at this index.</span>
|
|
976
|
+
176: <span class="ruby-keyword kw">break</span>
|
|
977
|
+
177: <span class="ruby-keyword kw">end</span>
|
|
978
|
+
178:
|
|
979
|
+
179: <span class="ruby-identifier">destIndex</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
|
980
|
+
180: <span class="ruby-keyword kw">end</span>
|
|
981
|
+
181: <span class="ruby-keyword kw">end</span></pre>
|
|
976
982
|
</div>
|
|
977
983
|
|
|
978
984
|
</div>
|
|
@@ -1005,10 +1011,10 @@ Iterator for tokens.
|
|
|
1005
1011
|
<div class="method-source-code"
|
|
1006
1012
|
id="each-source">
|
|
1007
1013
|
<pre>
|
|
1008
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1014
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 216</span>
|
|
1015
|
+
216: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">each</span>
|
|
1016
|
+
217: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span><span class="ruby-operator">|</span> <span class="ruby-keyword kw">yield</span>(<span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span>) }
|
|
1017
|
+
218: <span class="ruby-keyword kw">end</span></pre>
|
|
1012
1018
|
</div>
|
|
1013
1019
|
|
|
1014
1020
|
</div>
|
|
@@ -1041,10 +1047,10 @@ Returns true of the pattern is empty.
|
|
|
1041
1047
|
<div class="method-source-code"
|
|
1042
1048
|
id="empty--source">
|
|
1043
1049
|
<pre>
|
|
1044
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1050
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 221</span>
|
|
1051
|
+
221: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">empty?</span>
|
|
1052
|
+
222: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">empty?</span>
|
|
1053
|
+
223: <span class="ruby-keyword kw">end</span></pre>
|
|
1048
1054
|
</div>
|
|
1049
1055
|
|
|
1050
1056
|
</div>
|
|
@@ -1079,12 +1085,12 @@ href="Rule.html">Rule</a> that the pattern belongs to. A list of generated
|
|
|
1079
1085
|
<div class="method-source-code"
|
|
1080
1086
|
id="generate-tates-source">
|
|
1081
1087
|
<pre>
|
|
1082
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 98</span>
|
|
1089
|
+
98: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateStates</span>(<span class="ruby-identifier">rule</span>)
|
|
1090
|
+
99: <span class="ruby-identifier">states</span> = []
|
|
1091
|
+
100: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span>.<span class="ruby-identifier">times</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span> <span class="ruby-identifier">states</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">State</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-keyword kw">self</span>, <span class="ruby-identifier">i</span>) }
|
|
1092
|
+
101: <span class="ruby-identifier">states</span>
|
|
1093
|
+
102: <span class="ruby-keyword kw">end</span></pre>
|
|
1088
1094
|
</div>
|
|
1089
1095
|
|
|
1090
1096
|
</div>
|
|
@@ -1117,10 +1123,10 @@ Returns the number of tokens in the pattern.
|
|
|
1117
1123
|
<div class="method-source-code"
|
|
1118
1124
|
id="length-source">
|
|
1119
1125
|
<pre>
|
|
1120
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1126
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 226</span>
|
|
1127
|
+
226: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">length</span>
|
|
1128
|
+
227: <span class="ruby-ivar">@tokens</span>.<span class="ruby-identifier">length</span>
|
|
1129
|
+
228: <span class="ruby-keyword kw">end</span></pre>
|
|
1124
1130
|
</div>
|
|
1125
1131
|
|
|
1126
1132
|
</div>
|
|
@@ -1154,19 +1160,19 @@ references a rule, this rule is followed for the check.
|
|
|
1154
1160
|
<div class="method-source-code"
|
|
1155
1161
|
id="optional--source">
|
|
1156
1162
|
<pre>
|
|
1157
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1163
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 232</span>
|
|
1164
|
+
232: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
|
|
1165
|
+
233: <span class="ruby-ivar">@tokens</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>
|
|
1166
|
+
234: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span>
|
|
1167
|
+
235: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
1168
|
+
236: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
|
|
1169
|
+
237: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">optional?</span>(<span class="ruby-identifier">rules</span>)
|
|
1170
|
+
238: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
1171
|
+
239: <span class="ruby-keyword kw">end</span>
|
|
1172
|
+
240: <span class="ruby-keyword kw">end</span>
|
|
1173
|
+
241: <span class="ruby-keyword kw">end</span>
|
|
1174
|
+
242: <span class="ruby-keyword kw">true</span>
|
|
1175
|
+
243: <span class="ruby-keyword kw">end</span></pre>
|
|
1170
1176
|
</div>
|
|
1171
1177
|
|
|
1172
1178
|
</div>
|
|
@@ -1199,10 +1205,10 @@ Set the documentation text and for the idx-th variable.
|
|
|
1199
1205
|
<div class="method-source-code"
|
|
1200
1206
|
id="set-rg-source">
|
|
1201
1207
|
<pre>
|
|
1202
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1208
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 190</span>
|
|
1209
|
+
190: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setArg</span>(<span class="ruby-identifier">idx</span>, <span class="ruby-identifier">doc</span>)
|
|
1210
|
+
191: <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">idx</span>] = <span class="ruby-identifier">doc</span>
|
|
1211
|
+
192: <span class="ruby-keyword kw">end</span></pre>
|
|
1206
1212
|
</div>
|
|
1207
1213
|
|
|
1208
1214
|
</div>
|
|
@@ -1235,11 +1241,11 @@ Set the keyword and documentation text for the pattern.
|
|
|
1235
1241
|
<div class="method-source-code"
|
|
1236
1242
|
id="set-oc-source">
|
|
1237
1243
|
<pre>
|
|
1238
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1239
|
-
|
|
1240
|
-
|
|
1241
|
-
|
|
1242
|
-
|
|
1244
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 184</span>
|
|
1245
|
+
184: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setDoc</span>(<span class="ruby-identifier">keyword</span>, <span class="ruby-identifier">doc</span>)
|
|
1246
|
+
185: <span class="ruby-ivar">@keyword</span> = <span class="ruby-identifier">keyword</span>
|
|
1247
|
+
186: <span class="ruby-ivar">@doc</span> = <span class="ruby-identifier">doc</span>
|
|
1248
|
+
187: <span class="ruby-keyword kw">end</span></pre>
|
|
1243
1249
|
</div>
|
|
1244
1250
|
|
|
1245
1251
|
</div>
|
|
@@ -1272,11 +1278,11 @@ Set the file and tag for the TJP code example.
|
|
|
1272
1278
|
<div class="method-source-code"
|
|
1273
1279
|
id="set-xample-source">
|
|
1274
1280
|
<pre>
|
|
1275
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1281
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 205</span>
|
|
1282
|
+
205: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setExample</span>(<span class="ruby-identifier">file</span>, <span class="ruby-identifier">tag</span>)
|
|
1283
|
+
206: <span class="ruby-ivar">@exampleFile</span> = <span class="ruby-identifier">file</span>
|
|
1284
|
+
207: <span class="ruby-ivar">@exampleTag</span> = <span class="ruby-identifier">tag</span>
|
|
1285
|
+
208: <span class="ruby-keyword kw">end</span></pre>
|
|
1280
1286
|
</div>
|
|
1281
1287
|
|
|
1282
1288
|
</div>
|
|
@@ -1309,10 +1315,10 @@ Restrict the syntax documentation to the first <tt>idx</tt> tokens.
|
|
|
1309
1315
|
<div class="method-source-code"
|
|
1310
1316
|
id="set-ast-yntax-oken-source">
|
|
1311
1317
|
<pre>
|
|
1312
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1318
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 195</span>
|
|
1319
|
+
195: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setLastSyntaxToken</span>(<span class="ruby-identifier">idx</span>)
|
|
1320
|
+
196: <span class="ruby-ivar">@lastSyntaxToken</span> = <span class="ruby-identifier">idx</span>
|
|
1321
|
+
197: <span class="ruby-keyword kw">end</span></pre>
|
|
1316
1322
|
</div>
|
|
1317
1323
|
|
|
1318
1324
|
</div>
|
|
@@ -1345,10 +1351,10 @@ Set the references to related patterns.
|
|
|
1345
1351
|
<div class="method-source-code"
|
|
1346
1352
|
id="set-ee-lso-source">
|
|
1347
1353
|
<pre>
|
|
1348
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1354
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 200</span>
|
|
1355
|
+
200: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">setSeeAlso</span>(<span class="ruby-identifier">also</span>)
|
|
1356
|
+
201: <span class="ruby-ivar">@seeAlso</span> = <span class="ruby-identifier">also</span>
|
|
1357
|
+
202: <span class="ruby-keyword kw">end</span></pre>
|
|
1352
1358
|
</div>
|
|
1353
1359
|
|
|
1354
1360
|
</div>
|
|
@@ -1381,10 +1387,10 @@ Returns true if the i-th token is a terminal symbol.
|
|
|
1381
1387
|
<div class="method-source-code"
|
|
1382
1388
|
id="terminal-ymbol--source">
|
|
1383
1389
|
<pre>
|
|
1384
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1390
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 246</span>
|
|
1391
|
+
246: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminalSymbol?</span>(<span class="ruby-identifier">i</span>)
|
|
1392
|
+
247: <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span>
|
|
1393
|
+
248: <span class="ruby-keyword kw">end</span></pre>
|
|
1388
1394
|
</div>
|
|
1389
1395
|
|
|
1390
1396
|
</div>
|
|
@@ -1419,26 +1425,26 @@ The return value is an Array of [ token, pattern ] tuple.
|
|
|
1419
1425
|
<div class="method-source-code"
|
|
1420
1426
|
id="terminal-okens-source">
|
|
1421
1427
|
<pre>
|
|
1422
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1428
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 253</span>
|
|
1429
|
+
253: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">terminalTokens</span>(<span class="ruby-identifier">rules</span>, <span class="ruby-identifier">index</span> = <span class="ruby-value">0</span>)
|
|
1430
|
+
254: <span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">index</span>]
|
|
1431
|
+
255: <span class="ruby-comment cmt"># Terminal token start with an underscore or dollar character.</span>
|
|
1432
|
+
256: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span>
|
|
1433
|
+
257: <span class="ruby-keyword kw">return</span> [ [ <span class="ruby-identifier">name</span>, <span class="ruby-keyword kw">self</span> ] ]
|
|
1434
|
+
258: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span>
|
|
1435
|
+
259: <span class="ruby-keyword kw">return</span> []
|
|
1436
|
+
260: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
|
|
1437
|
+
261: <span class="ruby-comment cmt"># We have to continue the search at this rule.</span>
|
|
1438
|
+
262: <span class="ruby-identifier">rule</span> = <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>]
|
|
1439
|
+
263: <span class="ruby-comment cmt"># The rule may only have a single pattern. If not, then this pattern</span>
|
|
1440
|
+
264: <span class="ruby-comment cmt"># has no terminal token.</span>
|
|
1441
|
+
265: <span class="ruby-identifier">tts</span> = []
|
|
1442
|
+
266: <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">each</span> { <span class="ruby-operator">|</span><span class="ruby-identifier">p</span><span class="ruby-operator">|</span> <span class="ruby-identifier">tts</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">p</span>.<span class="ruby-identifier">terminalTokens</span>(<span class="ruby-identifier">rules</span>, <span class="ruby-value">0</span>) }
|
|
1443
|
+
267: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">tts</span>
|
|
1444
|
+
268: <span class="ruby-keyword kw">else</span>
|
|
1445
|
+
269: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unexpected token #{type} #{name}"</span>
|
|
1446
|
+
270: <span class="ruby-keyword kw">end</span>
|
|
1447
|
+
271: <span class="ruby-keyword kw">end</span></pre>
|
|
1442
1448
|
</div>
|
|
1443
1449
|
|
|
1444
1450
|
</div>
|
|
@@ -1472,26 +1478,26 @@ original syntax description.
|
|
|
1472
1478
|
<div class="method-source-code"
|
|
1473
1479
|
id="to-s-source">
|
|
1474
1480
|
<pre>
|
|
1475
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1487
|
-
|
|
1488
|
-
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1481
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 355</span>
|
|
1482
|
+
355: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
|
|
1483
|
+
356: <span class="ruby-identifier">str</span> = <span class="ruby-value str">""</span>
|
|
1484
|
+
357: <span class="ruby-ivar">@tokens</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>
|
|
1485
|
+
358: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
|
|
1486
|
+
359: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:reference</span>
|
|
1487
|
+
360: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"!#{name} "</span>
|
|
1488
|
+
361: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:variable</span>
|
|
1489
|
+
362: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"$#{name } "</span>
|
|
1490
|
+
363: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:literal</span>
|
|
1491
|
+
364: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-node">"#{name} "</span>
|
|
1492
|
+
365: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:eof</span>
|
|
1493
|
+
366: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">". "</span>
|
|
1494
|
+
367: <span class="ruby-keyword kw">else</span>
|
|
1495
|
+
368: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown type #{type}"</span>
|
|
1496
|
+
369: <span class="ruby-keyword kw">end</span>
|
|
1497
|
+
370: <span class="ruby-keyword kw">end</span>
|
|
1498
|
+
371:
|
|
1499
|
+
372: <span class="ruby-identifier">str</span>
|
|
1500
|
+
373: <span class="ruby-keyword kw">end</span></pre>
|
|
1495
1501
|
</div>
|
|
1496
1502
|
|
|
1497
1503
|
</div>
|
|
@@ -1526,10 +1532,10 @@ the wrapper function that sets up the stack.
|
|
|
1526
1532
|
<div class="method-source-code"
|
|
1527
1533
|
id="to-syntax-source">
|
|
1528
1534
|
<pre>
|
|
1529
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1535
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 276</span>
|
|
1536
|
+
276: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span> = <span class="ruby-value">0</span>)
|
|
1537
|
+
277: <span class="ruby-identifier">to_syntax_r</span>({}, <span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
|
|
1538
|
+
278: <span class="ruby-keyword kw">end</span></pre>
|
|
1533
1539
|
</div>
|
|
1534
1540
|
|
|
1535
1541
|
</div>
|
|
@@ -1562,78 +1568,78 @@ Generate a syntax description for this pattern.
|
|
|
1562
1568
|
<div class="method-source-code"
|
|
1563
1569
|
id="to-syntax-r-source">
|
|
1564
1570
|
<pre>
|
|
1565
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
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
|
-
|
|
1571
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 281</span>
|
|
1572
|
+
281: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_syntax_r</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-identifier">skip</span>)
|
|
1573
|
+
282: <span class="ruby-comment cmt"># If we find ourself on the stack we hit a recursive pattern. This is used</span>
|
|
1574
|
+
283: <span class="ruby-comment cmt"># in repetitions.</span>
|
|
1575
|
+
284: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stack</span>[<span class="ruby-keyword kw">self</span>]
|
|
1576
|
+
285: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'[, ... ]'</span>
|
|
1577
|
+
286: <span class="ruby-keyword kw">end</span>
|
|
1578
|
+
287:
|
|
1579
|
+
288: <span class="ruby-comment cmt"># "Push" us on the stack.</span>
|
|
1580
|
+
289: <span class="ruby-identifier">stack</span>[<span class="ruby-keyword kw">self</span>] = <span class="ruby-keyword kw">true</span>
|
|
1581
|
+
290:
|
|
1582
|
+
291: <span class="ruby-identifier">str</span> = <span class="ruby-value str">''</span>
|
|
1583
|
+
292: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
|
|
1584
|
+
293: <span class="ruby-comment cmt"># Analyze the tokens of the pattern skipping the first 'skip' tokens.</span>
|
|
1585
|
+
294: <span class="ruby-identifier">skip</span>.<span class="ruby-identifier">upto</span>(<span class="ruby-ivar">@lastSyntaxToken</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">i</span><span class="ruby-operator">|</span>
|
|
1586
|
+
295: <span class="ruby-identifier">type</span>, <span class="ruby-identifier">name</span> = <span class="ruby-ivar">@tokens</span>[<span class="ruby-identifier">i</span>]
|
|
1587
|
+
296: <span class="ruby-comment cmt"># If the first token is a _{ the pattern describes optional attributes.</span>
|
|
1588
|
+
297: <span class="ruby-comment cmt"># They are represented by a standard idiom.</span>
|
|
1589
|
+
298: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
|
|
1590
|
+
299: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
|
|
1591
|
+
300: <span class="ruby-keyword kw">return</span> <span class="ruby-value str">'{ <attributes> }'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'{'</span>
|
|
1592
|
+
301: <span class="ruby-keyword kw">else</span>
|
|
1593
|
+
302: <span class="ruby-comment cmt"># Separate the syntax elemens by a whitespace.</span>
|
|
1594
|
+
303: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">' '</span>
|
|
1595
|
+
304: <span class="ruby-keyword kw">end</span>
|
|
1596
|
+
305:
|
|
1597
|
+
306: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">i</span>]
|
|
1598
|
+
307: <span class="ruby-comment cmt"># The argument is documented in the syntax definition. We copy the</span>
|
|
1599
|
+
308: <span class="ruby-comment cmt"># entry as we need to modify it.</span>
|
|
1600
|
+
309: <span class="ruby-identifier">argDoc</span> = <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">dup</span>
|
|
1601
|
+
310:
|
|
1602
|
+
311: <span class="ruby-comment cmt"># A documented argument without a name is a terminal token. We use the</span>
|
|
1603
|
+
312: <span class="ruby-comment cmt"># terminal symbol as name.</span>
|
|
1604
|
+
313: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@args</span>[<span class="ruby-identifier">i</span>].<span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
|
|
1605
|
+
314: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"#{name}"</span>
|
|
1606
|
+
315: <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">name</span> = <span class="ruby-identifier">name</span>
|
|
1607
|
+
316: <span class="ruby-keyword kw">else</span>
|
|
1608
|
+
317: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"<#{@args[i].name}>"</span>
|
|
1609
|
+
318: <span class="ruby-keyword kw">end</span>
|
|
1610
|
+
319: <span class="ruby-identifier">addArgDoc</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">argDoc</span>)
|
|
1611
|
+
320:
|
|
1612
|
+
321: <span class="ruby-comment cmt"># Documented arguments don't have the type set yet. Use the token</span>
|
|
1613
|
+
322: <span class="ruby-comment cmt"># value for that.</span>
|
|
1614
|
+
323: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:variable</span>
|
|
1615
|
+
324: <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">typeSpec</span> = <span class="ruby-node">"<#{name}>"</span>
|
|
1616
|
+
325: <span class="ruby-keyword kw">end</span>
|
|
1617
|
+
326: <span class="ruby-keyword kw">else</span>
|
|
1618
|
+
327: <span class="ruby-comment cmt"># Undocumented tokens are recursively expanded.</span>
|
|
1619
|
+
328: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">type</span>
|
|
1620
|
+
329: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:literal</span>
|
|
1621
|
+
330: <span class="ruby-comment cmt"># Literals are shown as such.</span>
|
|
1622
|
+
331: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">name</span>.<span class="ruby-identifier">to_s</span>
|
|
1623
|
+
332: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:variable</span>
|
|
1624
|
+
333: <span class="ruby-comment cmt"># Variables are enclosed by angle brackets.</span>
|
|
1625
|
+
334: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-node">"<#{name}>"</span>
|
|
1626
|
+
335: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:reference</span>
|
|
1627
|
+
336: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">&&</span>
|
|
1628
|
+
337: <span class="ruby-operator">!</span><span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">doc</span>.<span class="ruby-identifier">nil?</span>
|
|
1629
|
+
338: <span class="ruby-identifier">addArgDoc</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-constant">TokenDoc</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">keyword</span>,
|
|
1630
|
+
339: <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>]))
|
|
1631
|
+
340: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">'<'</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>].<span class="ruby-identifier">keyword</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'>'</span>
|
|
1632
|
+
341: <span class="ruby-keyword kw">else</span>
|
|
1633
|
+
342: <span class="ruby-comment cmt"># References are followed recursively.</span>
|
|
1634
|
+
343: <span class="ruby-identifier">str</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>].<span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">stack</span>, <span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">rules</span>, <span class="ruby-value">0</span>)
|
|
1635
|
+
344: <span class="ruby-keyword kw">end</span>
|
|
1636
|
+
345: <span class="ruby-keyword kw">end</span>
|
|
1637
|
+
346: <span class="ruby-keyword kw">end</span>
|
|
1638
|
+
347: <span class="ruby-keyword kw">end</span>
|
|
1639
|
+
348: <span class="ruby-comment cmt"># Remove us from the "stack" again.</span>
|
|
1640
|
+
349: <span class="ruby-identifier">stack</span>.<span class="ruby-identifier">delete</span>(<span class="ruby-keyword kw">self</span>)
|
|
1641
|
+
350: <span class="ruby-identifier">str</span>
|
|
1642
|
+
351: <span class="ruby-keyword kw">end</span></pre>
|
|
1637
1643
|
</div>
|
|
1638
1644
|
|
|
1639
1645
|
</div>
|
|
@@ -1670,14 +1676,14 @@ Generate a syntax description for this pattern.
|
|
|
1670
1676
|
<div class="method-source-code"
|
|
1671
1677
|
id="add-rg-oc-source">
|
|
1672
1678
|
<pre>
|
|
1673
|
-
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line
|
|
1674
|
-
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1679
|
+
<span class="ruby-comment cmt"># File lib/TextParser/Pattern.rb, line 377</span>
|
|
1680
|
+
377: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">addArgDoc</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-identifier">argDoc</span>)
|
|
1681
|
+
378: <span class="ruby-identifier">raise</span> <span class="ruby-value str">'Error'</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">name</span>.<span class="ruby-identifier">nil?</span>
|
|
1682
|
+
379: <span class="ruby-identifier">argDocs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">ad</span><span class="ruby-operator">|</span>
|
|
1683
|
+
380: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">ad</span>.<span class="ruby-identifier">name</span> <span class="ruby-operator">==</span> <span class="ruby-identifier">argDoc</span>.<span class="ruby-identifier">name</span>
|
|
1684
|
+
381: <span class="ruby-keyword kw">end</span>
|
|
1685
|
+
382: <span class="ruby-identifier">argDocs</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">argDoc</span>
|
|
1686
|
+
383: <span class="ruby-keyword kw">end</span></pre>
|
|
1681
1687
|
</div>
|
|
1682
1688
|
|
|
1683
1689
|
</div>
|