taskjuggler 0.0.7 → 0.0.8
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 +119 -0
- data/benchmarks/allocatedSlots.tjp +1602 -0
- data/benchmarks/booking.tjp +40 -30
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/css/tjmanual.css +0 -0
- data/{test/TestSuite/Scheduler/Correct → benchmarks}/css/tjreport.css +1 -0
- data/benchmarks/gantt.tjp +57 -0
- data/benchmarks/htmltaskreport.tjp +26 -1
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/details.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-green.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-red.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/flag-yellow.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resource.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/resourcegroup.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/task.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/taskgroup.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-down.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-flat.png +0 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/icons/trend-up.png +0 -0
- data/benchmarks/profile.clt +36082 -0
- data/benchmarks/profile.html +58182 -0
- data/benchmarks/runbench.rb +6 -0
- data/{test/TestSuite/ReportGenerator/Errors → benchmarks}/scripts/wz_tooltip.js +0 -0
- data/doc/AppConfig.html +85 -37
- data/doc/Arguments.html +11 -1
- data/doc/CHANGELOG.html +131 -2
- data/doc/COPYING.html +11 -1
- data/doc/Object.html +12 -3
- data/doc/README.html +11 -1
- data/doc/RuntimeConfig.html +11 -1
- data/doc/String.html +11 -1
- data/doc/StringIO.html +11 -1
- data/doc/TaskJuggler.html +250 -219
- data/doc/TaskJuggler/Account.html +11 -1
- data/doc/TaskJuggler/AccountAttribute.html +11 -1
- data/doc/TaskJuggler/AccountScenario.html +11 -1
- data/doc/TaskJuggler/Allocation.html +11 -1
- data/doc/TaskJuggler/AllocationAttribute.html +11 -1
- data/doc/TaskJuggler/AttributeBase.html +11 -1
- data/doc/TaskJuggler/AttributeDefinition.html +11 -1
- data/doc/TaskJuggler/BatchProcessor.html +11 -1
- data/doc/TaskJuggler/Booking.html +11 -1
- data/doc/TaskJuggler/BookingListAttribute.html +11 -1
- data/doc/TaskJuggler/BooleanAttribute.html +11 -1
- data/doc/TaskJuggler/CSVFile.html +12 -2
- data/doc/TaskJuggler/CellSettingPattern.html +11 -1
- data/doc/TaskJuggler/CellSettingPatternList.html +11 -1
- data/doc/TaskJuggler/Charge.html +11 -1
- data/doc/TaskJuggler/ChargeListAttribute.html +11 -1
- data/doc/TaskJuggler/ChargeSet.html +11 -1
- data/doc/TaskJuggler/ChargeSetListAttribute.html +11 -1
- data/doc/TaskJuggler/CollisionDetector.html +1063 -0
- data/doc/TaskJuggler/ColumnListAttribute.html +11 -1
- data/doc/TaskJuggler/ColumnTable.html +11 -1
- data/doc/TaskJuggler/Daemon.html +11 -1
- data/doc/TaskJuggler/{OnShiftCache.html → DataCache.html} +127 -139
- data/doc/TaskJuggler/DataCacheEntry.html +711 -0
- data/doc/TaskJuggler/DateAttribute.html +11 -1
- data/doc/TaskJuggler/DefinitionListAttribute.html +11 -1
- data/doc/TaskJuggler/DependencyListAttribute.html +11 -1
- data/doc/TaskJuggler/DurationAttribute.html +16 -5
- data/doc/TaskJuggler/FileList.html +11 -1
- data/doc/TaskJuggler/FileRecord.html +11 -1
- data/doc/TaskJuggler/FixnumAttribute.html +19 -9
- data/doc/TaskJuggler/FlagListAttribute.html +29 -19
- data/doc/TaskJuggler/FloatAttribute.html +23 -13
- data/doc/TaskJuggler/FormatListAttribute.html +19 -9
- data/doc/TaskJuggler/GanttChart.html +94 -133
- data/doc/TaskJuggler/GanttContainer.html +11 -1
- data/doc/TaskJuggler/GanttHeader.html +11 -1
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +11 -1
- data/doc/TaskJuggler/GanttLine.html +11 -1
- data/doc/TaskJuggler/GanttLoadStack.html +11 -1
- data/doc/TaskJuggler/GanttMilestone.html +11 -1
- data/doc/TaskJuggler/GanttRouter.html +247 -596
- data/doc/TaskJuggler/GanttTaskBar.html +11 -1
- data/doc/TaskJuggler/HTMLDocument.html +11 -1
- data/doc/TaskJuggler/HTMLGraphics.html +11 -1
- data/doc/TaskJuggler/Interval.html +11 -1
- data/doc/TaskJuggler/IntervalListAttribute.html +33 -23
- data/doc/TaskJuggler/JobInfo.html +11 -1
- data/doc/TaskJuggler/Journal.html +11 -1
- data/doc/TaskJuggler/JournalEntry.html +11 -1
- data/doc/TaskJuggler/JournalEntryList.html +11 -1
- data/doc/TaskJuggler/KeywordArray.html +11 -1
- data/doc/TaskJuggler/KeywordDocumentation.html +16 -6
- data/doc/TaskJuggler/Limits.html +11 -1
- data/doc/TaskJuggler/Limits/Limit.html +11 -1
- data/doc/TaskJuggler/LimitsAttribute.html +24 -14
- data/doc/TaskJuggler/ListAttributeBase.html +11 -1
- data/doc/TaskJuggler/Log.html +11 -1
- data/doc/TaskJuggler/LogFile.html +11 -1
- data/doc/TaskJuggler/LogicalAttribute.html +11 -1
- data/doc/TaskJuggler/LogicalExpression.html +11 -1
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +19 -9
- data/doc/TaskJuggler/LogicalFlag.html +11 -1
- data/doc/TaskJuggler/LogicalFunction.html +11 -1
- data/doc/TaskJuggler/LogicalOperation.html +11 -1
- data/doc/TaskJuggler/Macro.html +11 -1
- data/doc/TaskJuggler/MacroTable.html +11 -1
- data/doc/TaskJuggler/ManagerResponsibilities.html +11 -1
- data/doc/TaskJuggler/ManagerStatusRecord.html +11 -1
- data/doc/TaskJuggler/Message.html +11 -1
- data/doc/TaskJuggler/MessageHandler.html +11 -1
- data/doc/TaskJuggler/Navigator.html +12 -2
- data/doc/TaskJuggler/NavigatorElement.html +11 -1
- data/doc/TaskJuggler/NikuProject.html +11 -1
- data/doc/TaskJuggler/NikuReport.html +11 -1
- data/doc/TaskJuggler/NikuResource.html +11 -1
- data/doc/TaskJuggler/NodeListAttribute.html +17 -7
- data/doc/TaskJuggler/PlaceHolderCell.html +722 -0
- data/doc/TaskJuggler/ProcessIntercom.html +11 -1
- data/doc/TaskJuggler/ProcessIntercomIface.html +11 -1
- data/doc/TaskJuggler/Project.html +587 -500
- data/doc/TaskJuggler/ProjectBroker.html +11 -1
- data/doc/TaskJuggler/ProjectBrokerIface.html +11 -1
- data/doc/TaskJuggler/ProjectFileParser.html +205 -192
- data/doc/TaskJuggler/ProjectFileScanner.html +230 -207
- data/doc/TaskJuggler/ProjectRecord.html +11 -1
- data/doc/TaskJuggler/ProjectServer.html +11 -1
- data/doc/TaskJuggler/ProjectServerIface.html +11 -1
- data/doc/TaskJuggler/PropertyAttribute.html +19 -9
- data/doc/TaskJuggler/PropertyList.html +95 -83
- data/doc/TaskJuggler/PropertySet.html +11 -1
- data/doc/TaskJuggler/PropertyTreeNode.html +11 -1
- data/doc/TaskJuggler/Query.html +234 -232
- data/doc/TaskJuggler/RTFHandlers.html +11 -1
- data/doc/TaskJuggler/RTFNavigator.html +11 -1
- data/doc/TaskJuggler/RTFQuery.html +11 -1
- data/doc/TaskJuggler/RTFReport.html +11 -1
- data/doc/TaskJuggler/RTFReportLink.html +11 -1
- data/doc/TaskJuggler/RTFWithQuerySupport.html +11 -1
- data/doc/TaskJuggler/RealFormat.html +12 -2
- data/doc/TaskJuggler/RealFormatAttribute.html +15 -5
- data/doc/TaskJuggler/ReferenceAttribute.html +38 -28
- data/doc/TaskJuggler/Report.html +96 -113
- data/doc/TaskJuggler/ReportBase.html +161 -152
- data/doc/TaskJuggler/ReportContext.html +11 -1
- data/doc/TaskJuggler/ReportServer.html +59 -48
- data/doc/TaskJuggler/ReportServerIface.html +51 -41
- data/doc/TaskJuggler/ReportServerRecord.html +11 -1
- data/doc/TaskJuggler/ReportServlet.html +11 -1
- data/doc/TaskJuggler/ReportTable.html +46 -25
- data/doc/TaskJuggler/ReportTableCell.html +296 -275
- data/doc/TaskJuggler/ReportTableColumn.html +14 -4
- data/doc/TaskJuggler/ReportTableLegend.html +11 -1
- data/doc/TaskJuggler/ReportTableLine.html +19 -7
- data/doc/TaskJuggler/Resource.html +12 -2
- data/doc/TaskJuggler/ResourceListAttribute.html +40 -30
- data/doc/TaskJuggler/ResourceListRE.html +11 -1
- data/doc/TaskJuggler/ResourceScenario.html +708 -565
- data/doc/TaskJuggler/RichText.html +54 -36
- data/doc/TaskJuggler/RichTextAttribute.html +31 -21
- data/doc/TaskJuggler/RichTextDocument.html +11 -1
- data/doc/TaskJuggler/RichTextElement.html +11 -1
- data/doc/TaskJuggler/RichTextFunctionExample.html +11 -1
- data/doc/TaskJuggler/RichTextFunctionHandler.html +11 -1
- data/doc/TaskJuggler/RichTextImage.html +11 -1
- data/doc/TaskJuggler/RichTextIntermediate.html +81 -71
- data/doc/TaskJuggler/RichTextParser.html +88 -33
- data/doc/TaskJuggler/RichTextScanner.html +45 -35
- data/doc/TaskJuggler/RichTextSnip.html +11 -1
- data/doc/TaskJuggler/RichTextSyntaxRules.html +436 -389
- data/doc/TaskJuggler/Scenario.html +11 -1
- data/doc/TaskJuggler/ScenarioData.html +11 -1
- data/doc/TaskJuggler/ScenarioListAttribute.html +23 -13
- data/doc/TaskJuggler/Scoreboard.html +92 -73
- data/doc/TaskJuggler/SheetHandlerBase.html +11 -1
- data/doc/TaskJuggler/SheetReceiver.html +11 -1
- data/doc/TaskJuggler/SheetSender.html +11 -1
- data/doc/TaskJuggler/Shift.html +11 -1
- data/doc/TaskJuggler/ShiftAssignment.html +11 -1
- data/doc/TaskJuggler/ShiftAssignments.html +11 -1
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +24 -14
- data/doc/TaskJuggler/ShiftScenario.html +11 -1
- data/doc/TaskJuggler/SimpleQueryExpander.html +11 -1
- data/doc/TaskJuggler/SortListAttribute.html +21 -11
- data/doc/TaskJuggler/SourceFileInfo.html +11 -1
- data/doc/TaskJuggler/StatusSheetReceiver.html +11 -1
- data/doc/TaskJuggler/StatusSheetReport.html +11 -1
- data/doc/TaskJuggler/StatusSheetSender.html +112 -11
- data/doc/TaskJuggler/StringAttribute.html +23 -13
- data/doc/TaskJuggler/SymbolAttribute.html +19 -9
- data/doc/TaskJuggler/SyntaxReference.html +80 -71
- data/doc/TaskJuggler/TOCEntry.html +11 -1
- data/doc/TaskJuggler/TSResourceRecord.html +11 -1
- data/doc/TaskJuggler/TSTaskRecord.html +11 -1
- data/doc/TaskJuggler/TableColumnDefinition.html +11 -1
- data/doc/TaskJuggler/TableOfContents.html +11 -1
- data/doc/TaskJuggler/TableReport.html +422 -411
- data/doc/TaskJuggler/Task.html +11 -1
- data/doc/TaskJuggler/TaskDependency.html +11 -1
- data/doc/TaskJuggler/TaskListAttribute.html +33 -23
- data/doc/TaskJuggler/TaskListRE.html +11 -1
- data/doc/TaskJuggler/TaskScenario.html +2007 -1919
- data/doc/TaskJuggler/TextFormatter.html +11 -1
- data/doc/TaskJuggler/TextParser.html +421 -612
- data/doc/TaskJuggler/TextParser/Pattern.html +410 -211
- data/doc/TaskJuggler/TextParser/Rule.html +224 -152
- data/doc/TaskJuggler/TextParser/StackElement.html +190 -28
- data/doc/TaskJuggler/TextParser/State.html +989 -0
- data/doc/TaskJuggler/TextParser/StateTransition.html +782 -0
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +25 -14
- data/doc/TaskJuggler/TextParser/TokenDoc.html +11 -1
- data/doc/TaskJuggler/TextReport.html +11 -1
- data/doc/TaskJuggler/TextScanner.html +285 -273
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +17 -7
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +24 -14
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +11 -1
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +64 -52
- data/doc/TaskJuggler/TimeSheet.html +11 -1
- data/doc/TaskJuggler/TimeSheetReceiver.html +11 -1
- data/doc/TaskJuggler/TimeSheetRecord.html +11 -1
- data/doc/TaskJuggler/TimeSheetReport.html +11 -1
- data/doc/TaskJuggler/TimeSheetSender.html +11 -1
- data/doc/TaskJuggler/TimeSheetSummary.html +11 -1
- data/doc/TaskJuggler/TimeSheets.html +11 -1
- data/doc/TaskJuggler/Tj3AppBase.html +11 -1
- data/doc/TaskJuggler/Tj3Client.html +11 -1
- data/doc/TaskJuggler/Tj3Daemon.html +11 -1
- data/doc/TaskJuggler/Tj3SheetAppBase.html +11 -1
- data/doc/TaskJuggler/Tj3SsReceiver.html +11 -1
- data/doc/TaskJuggler/Tj3SsSender.html +11 -1
- data/doc/TaskJuggler/Tj3TsReceiver.html +11 -1
- data/doc/TaskJuggler/Tj3TsSender.html +11 -1
- data/doc/TaskJuggler/Tj3TsSummary.html +11 -1
- data/doc/TaskJuggler/TjException.html +11 -1
- data/doc/TaskJuggler/TjTime.html +474 -324
- data/doc/TaskJuggler/TjpExample.html +11 -1
- data/doc/TaskJuggler/TjpExportRE.html +11 -1
- data/doc/TaskJuggler/TjpSyntaxRules.html +3731 -3662
- data/doc/TaskJuggler/URLParameter.html +11 -1
- data/doc/TaskJuggler/UserManual.html +11 -1
- data/doc/TaskJuggler/VimSyntax.html +11 -1
- data/doc/TaskJuggler/WebServer.html +11 -1
- data/doc/TaskJuggler/WorkingHours.html +295 -221
- data/doc/TaskJuggler/WorkingHoursAttribute.html +11 -1
- data/doc/TaskJuggler/XMLBlob.html +11 -1
- data/doc/TaskJuggler/XMLComment.html +11 -1
- data/doc/TaskJuggler/XMLDocument.html +11 -1
- data/doc/TaskJuggler/XMLElement.html +11 -1
- data/doc/TaskJuggler/XMLNamedText.html +11 -1
- data/doc/TaskJuggler/XMLText.html +11 -1
- data/doc/index.html +694 -624
- data/doc/lib/AppConfig_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/DataCache_rb.html +69 -0
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +1 -1
- data/doc/lib/ProjectFileScanner_rb.html +1 -1
- data/doc/lib/Project_rb.html +1 -1
- data/doc/lib/PropertyList_rb.html +1 -1
- data/doc/lib/Query_rb.html +1 -1
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +1 -1
- data/doc/lib/Resource_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +1 -1
- data/doc/lib/RichTextScanner_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +1 -1
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/StatusSheetSender_rb.html +1 -1
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +1 -1
- data/doc/lib/TaskScenario_rb.html +3 -1
- data/doc/lib/TextParser/Pattern_rb.html +3 -1
- data/doc/lib/TextParser/Rule_rb.html +3 -1
- data/doc/lib/TextParser/StackElement_rb.html +3 -1
- data/doc/lib/TextParser/State_rb.html +65 -0
- data/doc/lib/TextParser_rb.html +1 -1
- data/doc/lib/TextScanner_rb.html +1 -1
- data/doc/lib/Tj3Config_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +3 -1
- data/doc/lib/daemon/ReportServer_rb.html +1 -1
- data/doc/lib/reports/CSVFile_rb.html +1 -1
- data/doc/lib/reports/CollisionDetector_rb.html +67 -0
- data/doc/lib/reports/GanttChart_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +3 -1
- data/doc/lib/reports/Navigator_rb.html +1 -1
- data/doc/lib/reports/ReportBase_rb.html +1 -1
- data/doc/lib/reports/ReportTableCell_rb.html +1 -1
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +1 -1
- data/doc/lib/reports/Report_rb.html +1 -1
- data/doc/lib/reports/TableReport_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +1 -1
- data/examples/tutorial.tjp +1 -2
- data/lib/AppConfig.rb +10 -4
- data/lib/Attributes.rb +4 -4
- data/lib/DataCache.rb +124 -0
- data/lib/KeywordDocumentation.rb +5 -5
- data/lib/Project.rb +54 -10
- data/lib/ProjectFileParser.rb +10 -9
- data/lib/ProjectFileScanner.rb +38 -25
- data/lib/PropertyList.rb +6 -4
- data/lib/Query.rb +0 -8
- data/lib/RealFormat.rb +1 -1
- data/lib/Resource.rb +1 -1
- data/lib/ResourceScenario.rb +96 -31
- data/lib/RichText.rb +17 -5
- data/lib/RichTextParser.rb +22 -9
- data/lib/RichTextScanner.rb +34 -34
- data/lib/RichTextSyntaxRules.rb +41 -36
- data/lib/Scoreboard.rb +16 -7
- data/lib/StatusSheetSender.rb +63 -0
- data/lib/SyntaxReference.rb +9 -10
- data/lib/TaskJuggler.rb +28 -4
- data/lib/TaskScenario.rb +66 -19
- data/lib/TextParser.rb +219 -384
- data/lib/TextParser/Pattern.rb +168 -49
- data/lib/TextParser/Rule.rb +33 -17
- data/lib/TextParser/StackElement.rb +42 -2
- data/lib/TextParser/State.rb +175 -0
- data/lib/TextScanner.rb +19 -15
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +111 -3
- data/lib/TjpSyntaxRules.rb +122 -66
- data/lib/WorkingHours.rb +91 -186
- data/lib/daemon/ReportServer.rb +3 -2
- data/lib/reports/CSVFile.rb +1 -1
- data/lib/reports/CollisionDetector.rb +177 -0
- data/lib/reports/GanttChart.rb +25 -41
- data/lib/reports/GanttRouter.rb +104 -233
- data/lib/reports/Navigator.rb +1 -1
- data/lib/reports/Report.rb +9 -33
- data/lib/reports/ReportBase.rb +0 -1
- data/lib/reports/ReportTable.rb +19 -8
- data/lib/reports/ReportTableCell.rb +61 -25
- data/lib/reports/ReportTableColumn.rb +2 -2
- data/lib/reports/ReportTableLine.rb +4 -2
- data/lib/reports/TableReport.rb +1 -0
- data/lib/taskjuggler3.rb +0 -1
- data/manual/Installation +7 -3
- data/manual/Intro +12 -10
- data/manual/The_TaskJuggler_Syntax +4 -4
- data/test/TestSuite/CSV-Reports/celltext-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/genrefs +1 -1
- data/test/TestSuite/CSV-Reports/resourcereport-Reference.csv +4 -4
- data/test/TestSuite/CSV-Reports/resourcereport_with_tasks-Reference.csv +22 -22
- data/test/TestSuite/CSV-Reports/sortByTree-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/sortBy_duration.down-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/sortBy_effort.up-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/sortBy_plan.start.down-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/taskreport-Reference.csv +14 -14
- data/test/TestSuite/CSV-Reports/taskreport_with_resources-Reference.csv +32 -24
- data/test/TestSuite/CSV-Reports/weekly-Reference.csv +13 -0
- data/test/TestSuite/CSV-Reports/weekly.tjp +9 -0
- data/test/TestSuite/HTML-Reports/css/tjreport.css +7 -2
- data/test/TestSuite/HTML-Reports/depArrows.html +839 -830
- data/test/TestSuite/HTML-Reports/depArrows.tjp +12 -12
- data/test/TestSuite/HTML-Reports/profile.html +37581 -0
- data/test/TestSuite/ReportGenerator/Errors/no_report_defined.tjp +7 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +1 -1
- data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/missing-reports +2 -0
- data/test/TestSuite/StatusSheets/run +2 -0
- data/test/TestSuite/Syntax/Correct/Booking.tjp +13 -5
- data/test/TestSuite/Syntax/Correct/ResourceRoot.tjp +21 -0
- data/test/TestSuite/Syntax/Correct/RollupResource.tjp +21 -0
- data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_before_project.tjp +2 -0
- data/test/TestSuite/Syntax/Errors/no_reduce.tjp +6 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +1 -1
- data/test/test_CSV-Reports.rb +2 -4
- data/test/test_CollisionDetector.rb +85 -0
- data/test/test_Project.rb +2 -2
- data/test/test_ProjectFileScanner.rb +73 -31
- data/test/test_Query.rb +2 -2
- data/test/test_ReportGenerator.rb +1 -1
- data/test/test_RichText.rb +4 -4
- data/test/test_WorkingHours.rb +150 -11
- metadata +75 -67
- data/test/TestSuite/ReportGenerator/Errors/css/tjreport.css +0 -407
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.html +0 -26
- data/test/TestSuite/Scheduler/Correct/Allocate.html +0 -3210
- data/test/TestSuite/Scheduler/Correct/Container.html +0 -349
- data/test/TestSuite/Scheduler/Correct/Limits.html +0 -4964
- data/test/TestSuite/Scheduler/Correct/Shift.html +0 -1719
- data/test/TestSuite/Scheduler/Correct/Shift2.html +0 -476
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -66
- data/test/TestSuite/Scheduler/Correct/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/task.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +0 -1301
- data/test/TestSuite/Scheduler/Errors/css/tjmanual.css +0 -66
- data/test/TestSuite/Scheduler/Errors/css/tjreport.css +0 -407
- data/test/TestSuite/Scheduler/Errors/icons/details.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-green.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-red.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resource.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/task.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/taskgroup.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-down.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-flat.png +0 -0
- data/test/TestSuite/Scheduler/Errors/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Errors/scripts/wz_tooltip.js +0 -1301
- data/test/TestSuite/StatusSheets/resrep.tji +0 -7
- data/test/TestSuite/StatusSheets/tj3d.log +0 -312
- data/test/TestSuite/Syntax/Correct/Managers.html +0 -263
- data/test/TestSuite/TimeSheets/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/statussheets.log +0 -1
|
@@ -155,12 +155,18 @@
|
|
|
155
155
|
|
|
156
156
|
<li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
|
|
157
157
|
|
|
158
|
+
<li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
|
|
159
|
+
|
|
158
160
|
<li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
|
|
159
161
|
|
|
160
162
|
<li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
|
|
161
163
|
|
|
162
164
|
<li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
|
|
163
165
|
|
|
166
|
+
<li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
|
|
167
|
+
|
|
168
|
+
<li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
|
|
169
|
+
|
|
164
170
|
<li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
|
|
165
171
|
|
|
166
172
|
<li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
|
|
@@ -267,7 +273,7 @@
|
|
|
267
273
|
|
|
268
274
|
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
269
275
|
|
|
270
|
-
<li><a href="../TaskJuggler/
|
|
276
|
+
<li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
|
|
271
277
|
|
|
272
278
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
273
279
|
|
|
@@ -447,6 +453,10 @@
|
|
|
447
453
|
|
|
448
454
|
<li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
|
|
449
455
|
|
|
456
|
+
<li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
|
|
457
|
+
|
|
458
|
+
<li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
|
|
459
|
+
|
|
450
460
|
<li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
|
|
451
461
|
|
|
452
462
|
<li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
|
|
@@ -71,6 +71,8 @@
|
|
|
71
71
|
|
|
72
72
|
<li><a href="#method-c-new">::new</a></li>
|
|
73
73
|
|
|
74
|
+
<li><a href="#method-i-defaulterList">#defaulterList</a></li>
|
|
75
|
+
|
|
74
76
|
</ul>
|
|
75
77
|
</div>
|
|
76
78
|
|
|
@@ -149,12 +151,18 @@
|
|
|
149
151
|
|
|
150
152
|
<li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
|
|
151
153
|
|
|
154
|
+
<li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
|
|
155
|
+
|
|
152
156
|
<li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
|
|
153
157
|
|
|
154
158
|
<li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
|
|
155
159
|
|
|
156
160
|
<li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
|
|
157
161
|
|
|
162
|
+
<li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
|
|
163
|
+
|
|
164
|
+
<li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
|
|
165
|
+
|
|
158
166
|
<li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
|
|
159
167
|
|
|
160
168
|
<li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
|
|
@@ -261,7 +269,7 @@
|
|
|
261
269
|
|
|
262
270
|
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
263
271
|
|
|
264
|
-
<li><a href="../TaskJuggler/
|
|
272
|
+
<li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
|
|
265
273
|
|
|
266
274
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
267
275
|
|
|
@@ -441,6 +449,10 @@
|
|
|
441
449
|
|
|
442
450
|
<li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
|
|
443
451
|
|
|
452
|
+
<li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
|
|
453
|
+
|
|
454
|
+
<li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
|
|
455
|
+
|
|
444
456
|
<li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
|
|
445
457
|
|
|
446
458
|
<li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
|
|
@@ -638,16 +650,105 @@ project data is accessed via tj3client on a tj3 server process.
|
|
|
638
650
|
30: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-value str">'0'</span>
|
|
639
651
|
31: <span class="ruby-comment cmt"># The base directory of the status sheet templates.</span>
|
|
640
652
|
32: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'StatusSheetTemplates'</span>
|
|
641
|
-
33: <span class="ruby-comment cmt">#
|
|
642
|
-
34: <span class="ruby-
|
|
643
|
-
35: <span class="ruby-
|
|
644
|
-
36: <span class="ruby-comment cmt">#
|
|
645
|
-
37: <span class="ruby-ivar">@
|
|
646
|
-
38:
|
|
647
|
-
39: <span class="ruby-ivar">@
|
|
648
|
-
40:
|
|
649
|
-
41: <span class="ruby-ivar">@
|
|
650
|
-
42:
|
|
653
|
+
33: <span class="ruby-comment cmt"># The base directory of the received time sheets.</span>
|
|
654
|
+
34: <span class="ruby-ivar">@timeSheetDir</span> = <span class="ruby-value str">'TimeSheets'</span>
|
|
655
|
+
35: <span class="ruby-comment cmt"># This file contains the time intervals that the StatusSheetReceiver will</span>
|
|
656
|
+
36: <span class="ruby-comment cmt"># accept as a valid interval.</span>
|
|
657
|
+
37: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-node">"#{@templateDir}/acceptable_intervals"</span>
|
|
658
|
+
38: <span class="ruby-comment cmt"># The log file</span>
|
|
659
|
+
39: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'statussheets.log'</span>
|
|
660
|
+
40:
|
|
661
|
+
41: <span class="ruby-ivar">@signatureFilter</span> = <span class="ruby-regexp re">/^[ ]*statussheet\s[a-z][a-z0-9_]*\s([0-9:\-+]*\s-\s[0-9:\-+]*)/</span>
|
|
662
|
+
42: <span class="ruby-ivar">@introText</span> = <span class="ruby-value str">Please find enclosed your weekly status report template. Please fill out theform and send it back to the sender of this email. You can either use theattached file or the body of the email. In case you send it in the body of theemail, make sure it only contains the 'statussheet' syntax. It must be plaintext, UTF-8 encoded and the status sheet header from 'statussheet' to the periodend date must be in a single line that starts at the beginning of the line.</span>
|
|
663
|
+
43: <span class="ruby-comment cmt"># tj3ts_summary generates a list of resources that have not submitted</span>
|
|
664
|
+
44: <span class="ruby-comment cmt"># their reports yet. If you want to generate the warning below, make</span>
|
|
665
|
+
45: <span class="ruby-comment cmt"># sure you run tj3ts_summary immediately before you sent the status sheet</span>
|
|
666
|
+
46: <span class="ruby-comment cmt"># templates.</span>
|
|
667
|
+
47: <span class="ruby-identifier">defaulters</span> = <span class="ruby-identifier">defaulterList</span>
|
|
668
|
+
48: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">defaulters</span>.<span class="ruby-identifier">empty?</span>
|
|
669
|
+
49: <span class="ruby-ivar">@introText</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">=============================== W A R N I N G ==============================The following people have not submitted their report yet. The status reportsfor the work they have done is not included in this template! You can eithermanually add their status to the tasks or asked them to send their time sheetimmediately and re-request this template.#{defaulters.join}</span>
|
|
670
|
+
50: <span class="ruby-keyword kw">end</span>
|
|
671
|
+
51:
|
|
672
|
+
52: <span class="ruby-ivar">@mailSubject</span> = <span class="ruby-value str">"Your weekly status report template for %s"</span>
|
|
673
|
+
53: <span class="ruby-keyword kw">end</span></pre>
|
|
674
|
+
</div>
|
|
675
|
+
|
|
676
|
+
</div>
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
</div>
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
</div>
|
|
685
|
+
|
|
686
|
+
<div id="public-instance-method-details" class="method-section section">
|
|
687
|
+
<h3 class="section-header">Public Instance Methods</h3>
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
<div id="defaulter-ist-method" class="method-detail ">
|
|
691
|
+
<a name="method-i-defaulterList"></a>
|
|
692
|
+
|
|
693
|
+
<div class="method-heading">
|
|
694
|
+
|
|
695
|
+
<span class="method-name">defaulterList</span><span
|
|
696
|
+
class="method-args">()</span>
|
|
697
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
698
|
+
|
|
699
|
+
</div>
|
|
700
|
+
|
|
701
|
+
<div class="method-description">
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
<div class="method-source-code"
|
|
708
|
+
id="defaulter-ist-source">
|
|
709
|
+
<pre>
|
|
710
|
+
<span class="ruby-comment cmt"># File lib/StatusSheetSender.rb, line 73</span>
|
|
711
|
+
73: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">defaulterList</span>
|
|
712
|
+
74: <span class="ruby-identifier">dirs</span> = <span class="ruby-constant">Dir</span>.<span class="ruby-identifier">glob</span>(<span class="ruby-node">"#{@timeSheetDir}/????-??-??"</span>).<span class="ruby-identifier">sort</span>
|
|
713
|
+
75: <span class="ruby-identifier">tsDir</span> = <span class="ruby-keyword kw">nil</span>
|
|
714
|
+
76: <span class="ruby-comment cmt"># The status sheet intervals and the time sheet intervals are not</span>
|
|
715
|
+
77: <span class="ruby-comment cmt"># identical. The status sheet interval can be smaller and is somewhat</span>
|
|
716
|
+
78: <span class="ruby-comment cmt"># later. But it always includes the end date of the corresponding time</span>
|
|
717
|
+
79: <span class="ruby-comment cmt"># sheet period. To get the file with the IDs of the resources that have</span>
|
|
718
|
+
80: <span class="ruby-comment cmt"># not submitted their report, we need to find the time sheet directory</span>
|
|
719
|
+
81: <span class="ruby-comment cmt"># that is within the status sheet period.</span>
|
|
720
|
+
82: <span class="ruby-identifier">repDate</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(*<span class="ruby-ivar">@date</span>.<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>))
|
|
721
|
+
83: <span class="ruby-identifier">dirs</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">dir</span><span class="ruby-operator">|</span>
|
|
722
|
+
84: <span class="ruby-identifier">dirDate</span> = <span class="ruby-constant">Time</span>.<span class="ruby-identifier">local</span>(*<span class="ruby-identifier">dir</span>[<span class="ruby-value">10</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>].<span class="ruby-identifier">split</span>(<span class="ruby-value str">'-'</span>))
|
|
723
|
+
85: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dirDate</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">repDate</span>
|
|
724
|
+
86: <span class="ruby-identifier">tsDir</span> = <span class="ruby-identifier">dir</span>
|
|
725
|
+
87: <span class="ruby-keyword kw">else</span>
|
|
726
|
+
88: <span class="ruby-keyword kw">break</span>
|
|
727
|
+
89: <span class="ruby-keyword kw">end</span>
|
|
728
|
+
90: <span class="ruby-keyword kw">end</span>
|
|
729
|
+
91: <span class="ruby-comment cmt"># Check if there is a time sheet directory.</span>
|
|
730
|
+
92: <span class="ruby-keyword kw">return</span> [] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tsDir</span>
|
|
731
|
+
93:
|
|
732
|
+
94: <span class="ruby-identifier">missingFile</span> = <span class="ruby-node">"#{tsDir}/missing-reports"</span>
|
|
733
|
+
95: <span class="ruby-comment cmt"># Check if it's got a missing-reports file.</span>
|
|
734
|
+
96: <span class="ruby-keyword kw">return</span> [] <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-identifier">missingFile</span>)
|
|
735
|
+
97:
|
|
736
|
+
98: <span class="ruby-comment cmt"># The sheet could have been submitted after tj3ts_summary was run. We</span>
|
|
737
|
+
99: <span class="ruby-comment cmt"># ignore the entry if a time sheet file now exists. There is a race</span>
|
|
738
|
+
100: <span class="ruby-comment cmt"># condition here. The file may exist, but it may not yet be loaded for</span>
|
|
739
|
+
101: <span class="ruby-comment cmt"># the current project that is used to generate the status report. There</span>
|
|
740
|
+
102: <span class="ruby-comment cmt"># is a race condition here. The file may exist, but it may not yet be</span>
|
|
741
|
+
103: <span class="ruby-comment cmt"># loaded for the current project that is used to generate the status</span>
|
|
742
|
+
104: <span class="ruby-comment cmt"># report.</span>
|
|
743
|
+
105: <span class="ruby-identifier">list</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">readlines</span>(<span class="ruby-identifier">missingFile</span>)
|
|
744
|
+
106: <span class="ruby-identifier">list</span>.<span class="ruby-identifier">delete_if</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">resource</span><span class="ruby-operator">|</span>
|
|
745
|
+
107: <span class="ruby-identifier">tsDate</span> = <span class="ruby-identifier">tsDir</span>[<span class="ruby-value">10</span><span class="ruby-operator">..</span><span class="ruby-value">1</span>]
|
|
746
|
+
108: <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-node">"#{tsDir}/#{resource.chomp}_#{tsDate}.tji"</span>)
|
|
747
|
+
109: <span class="ruby-keyword kw">end</span>
|
|
748
|
+
110:
|
|
749
|
+
111: <span class="ruby-comment cmt"># Return the content of the file.</span>
|
|
750
|
+
112: <span class="ruby-identifier">list</span>
|
|
751
|
+
113: <span class="ruby-keyword kw">end</span></pre>
|
|
651
752
|
</div>
|
|
652
753
|
|
|
653
754
|
</div>
|
|
@@ -153,12 +153,18 @@
|
|
|
153
153
|
|
|
154
154
|
<li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
|
|
155
155
|
|
|
156
|
+
<li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
|
|
157
|
+
|
|
156
158
|
<li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
|
|
157
159
|
|
|
158
160
|
<li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
|
|
159
161
|
|
|
160
162
|
<li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
|
|
161
163
|
|
|
164
|
+
<li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
|
|
165
|
+
|
|
166
|
+
<li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
|
|
167
|
+
|
|
162
168
|
<li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
|
|
163
169
|
|
|
164
170
|
<li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
|
|
@@ -265,7 +271,7 @@
|
|
|
265
271
|
|
|
266
272
|
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
267
273
|
|
|
268
|
-
<li><a href="../TaskJuggler/
|
|
274
|
+
<li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
|
|
269
275
|
|
|
270
276
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
271
277
|
|
|
@@ -445,6 +451,10 @@
|
|
|
445
451
|
|
|
446
452
|
<li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
|
|
447
453
|
|
|
454
|
+
<li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
|
|
455
|
+
|
|
456
|
+
<li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
|
|
457
|
+
|
|
448
458
|
<li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
|
|
449
459
|
|
|
450
460
|
<li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
|
|
@@ -586,10 +596,10 @@
|
|
|
586
596
|
<div class="method-source-code"
|
|
587
597
|
id="new-source">
|
|
588
598
|
<pre>
|
|
589
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
599
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 532</span>
|
|
600
|
+
532: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">type</span>)
|
|
601
|
+
533: <span class="ruby-keyword kw">super</span>
|
|
602
|
+
534: <span class="ruby-keyword kw">end</span></pre>
|
|
593
603
|
</div>
|
|
594
604
|
|
|
595
605
|
</div>
|
|
@@ -620,10 +630,10 @@
|
|
|
620
630
|
<div class="method-source-code"
|
|
621
631
|
id="tjp-d-source">
|
|
622
632
|
<pre>
|
|
623
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
|
|
633
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 536</span>
|
|
634
|
+
536: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">StringAttribute</span><span class="ruby-operator">::</span><span class="ruby-identifier">tjpId</span>
|
|
635
|
+
537: <span class="ruby-value str">'text'</span>
|
|
636
|
+
538: <span class="ruby-keyword kw">end</span></pre>
|
|
627
637
|
</div>
|
|
628
638
|
|
|
629
639
|
</div>
|
|
@@ -660,10 +670,10 @@
|
|
|
660
670
|
<div class="method-source-code"
|
|
661
671
|
id="to-tjp-source">
|
|
662
672
|
<pre>
|
|
663
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
673
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 540</span>
|
|
674
|
+
540: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_tjp</span>
|
|
675
|
+
541: <span class="ruby-node">"#{@type.id} \"#{@value}\""</span>
|
|
676
|
+
542: <span class="ruby-keyword kw">end</span></pre>
|
|
667
677
|
</div>
|
|
668
678
|
|
|
669
679
|
</div>
|
|
@@ -151,12 +151,18 @@
|
|
|
151
151
|
|
|
152
152
|
<li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
|
|
153
153
|
|
|
154
|
+
<li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
|
|
155
|
+
|
|
154
156
|
<li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
|
|
155
157
|
|
|
156
158
|
<li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
|
|
157
159
|
|
|
158
160
|
<li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
|
|
159
161
|
|
|
162
|
+
<li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
|
|
163
|
+
|
|
164
|
+
<li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
|
|
165
|
+
|
|
160
166
|
<li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
|
|
161
167
|
|
|
162
168
|
<li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
|
|
@@ -263,7 +269,7 @@
|
|
|
263
269
|
|
|
264
270
|
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
265
271
|
|
|
266
|
-
<li><a href="../TaskJuggler/
|
|
272
|
+
<li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
|
|
267
273
|
|
|
268
274
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
269
275
|
|
|
@@ -443,6 +449,10 @@
|
|
|
443
449
|
|
|
444
450
|
<li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
|
|
445
451
|
|
|
452
|
+
<li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
|
|
453
|
+
|
|
454
|
+
<li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
|
|
455
|
+
|
|
446
456
|
<li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
|
|
447
457
|
|
|
448
458
|
<li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
|
|
@@ -584,10 +594,10 @@
|
|
|
584
594
|
<div class="method-source-code"
|
|
585
595
|
id="new-source">
|
|
586
596
|
<pre>
|
|
587
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
597
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 547</span>
|
|
598
|
+
547: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">property</span>, <span class="ruby-identifier">type</span>)
|
|
599
|
+
548: <span class="ruby-keyword kw">super</span>
|
|
600
|
+
549: <span class="ruby-keyword kw">end</span></pre>
|
|
591
601
|
</div>
|
|
592
602
|
|
|
593
603
|
</div>
|
|
@@ -618,10 +628,10 @@
|
|
|
618
628
|
<div class="method-source-code"
|
|
619
629
|
id="tjp-d-source">
|
|
620
630
|
<pre>
|
|
621
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
631
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 551</span>
|
|
632
|
+
551: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">SymbolAttribute</span><span class="ruby-operator">::</span><span class="ruby-identifier">tjpId</span>
|
|
633
|
+
552: <span class="ruby-value str">'symbol'</span>
|
|
634
|
+
553: <span class="ruby-keyword kw">end</span></pre>
|
|
625
635
|
</div>
|
|
626
636
|
|
|
627
637
|
</div>
|
|
@@ -167,12 +167,18 @@
|
|
|
167
167
|
|
|
168
168
|
<li><a href="../TaskJuggler/ChargeSetListAttribute.html">TaskJuggler::ChargeSetListAttribute</a></li>
|
|
169
169
|
|
|
170
|
+
<li><a href="../TaskJuggler/CollisionDetector.html">TaskJuggler::CollisionDetector</a></li>
|
|
171
|
+
|
|
170
172
|
<li><a href="../TaskJuggler/ColumnListAttribute.html">TaskJuggler::ColumnListAttribute</a></li>
|
|
171
173
|
|
|
172
174
|
<li><a href="../TaskJuggler/ColumnTable.html">TaskJuggler::ColumnTable</a></li>
|
|
173
175
|
|
|
174
176
|
<li><a href="../TaskJuggler/Daemon.html">TaskJuggler::Daemon</a></li>
|
|
175
177
|
|
|
178
|
+
<li><a href="../TaskJuggler/DataCache.html">TaskJuggler::DataCache</a></li>
|
|
179
|
+
|
|
180
|
+
<li><a href="../TaskJuggler/DataCacheEntry.html">TaskJuggler::DataCacheEntry</a></li>
|
|
181
|
+
|
|
176
182
|
<li><a href="../TaskJuggler/DateAttribute.html">TaskJuggler::DateAttribute</a></li>
|
|
177
183
|
|
|
178
184
|
<li><a href="../TaskJuggler/DefinitionListAttribute.html">TaskJuggler::DefinitionListAttribute</a></li>
|
|
@@ -279,7 +285,7 @@
|
|
|
279
285
|
|
|
280
286
|
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
281
287
|
|
|
282
|
-
<li><a href="../TaskJuggler/
|
|
288
|
+
<li><a href="../TaskJuggler/PlaceHolderCell.html">TaskJuggler::PlaceHolderCell</a></li>
|
|
283
289
|
|
|
284
290
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
285
291
|
|
|
@@ -459,6 +465,10 @@
|
|
|
459
465
|
|
|
460
466
|
<li><a href="../TaskJuggler/TextParser/StackElement.html">TaskJuggler::TextParser::StackElement</a></li>
|
|
461
467
|
|
|
468
|
+
<li><a href="../TaskJuggler/TextParser/State.html">TaskJuggler::TextParser::State</a></li>
|
|
469
|
+
|
|
470
|
+
<li><a href="../TaskJuggler/TextParser/StateTransition.html">TaskJuggler::TextParser::StateTransition</a></li>
|
|
471
|
+
|
|
462
472
|
<li><a href="../TaskJuggler/TextParser/TextParserResultArray.html">TaskJuggler::TextParser::TextParserResultArray</a></li>
|
|
463
473
|
|
|
464
474
|
<li><a href="../TaskJuggler/TextParser/TokenDoc.html">TaskJuggler::TextParser::TokenDoc</a></li>
|
|
@@ -1021,39 +1031,39 @@ value specifies whether the attribute is scenario specific or not.
|
|
|
1021
1031
|
<div class="method-source-code"
|
|
1022
1032
|
id="attributes-source">
|
|
1023
1033
|
<pre>
|
|
1024
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1034
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 223</span>
|
|
1035
|
+
223: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">token</span>, <span class="ruby-identifier">scenarioSpecific</span>)
|
|
1036
|
+
224: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Token #{token} must reference a rule"</span> <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">:reference</span>
|
|
1037
|
+
225: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span>]
|
|
1038
|
+
226: <span class="ruby-comment cmt"># Find the matching rule.</span>
|
|
1039
|
+
227: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">token</span>]
|
|
1040
|
+
228: <span class="ruby-identifier">attrs</span> = {}
|
|
1041
|
+
229: <span class="ruby-comment cmt"># Now we look at the first token of each pattern.</span>
|
|
1042
|
+
230: <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">pattern</span><span class="ruby-operator">|</span>
|
|
1043
|
+
231: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:literal</span>
|
|
1044
|
+
232: <span class="ruby-comment cmt"># If it's a terminal symbol, we found what we are looking for. We add</span>
|
|
1045
|
+
233: <span class="ruby-comment cmt"># it to the attrs hash and mark it as non scenario specific.</span>
|
|
1046
|
+
234: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
|
|
1047
|
+
235: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:scenarioIdCol</span>
|
|
1048
|
+
236: <span class="ruby-comment cmt"># A reference to the !scenarioId rule marks the next token of the</span>
|
|
1049
|
+
237: <span class="ruby-comment cmt"># pattern as a reference to a rule with all scenario specific</span>
|
|
1050
|
+
238: <span class="ruby-comment cmt"># attributes.</span>
|
|
1051
|
+
239: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">true</span>))
|
|
1052
|
+
240: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
|
|
1053
|
+
241: <span class="ruby-comment cmt"># In case we have a reference to another rule, we just follow the</span>
|
|
1054
|
+
242: <span class="ruby-comment cmt"># reference. If the pattern is documented we don't have to follow the</span>
|
|
1055
|
+
243: <span class="ruby-comment cmt"># reference. We can use the pattern instead.</span>
|
|
1056
|
+
244: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>.<span class="ruby-identifier">nil?</span>
|
|
1057
|
+
245: <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">merge!</span>(<span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">scenarioSpecific</span>))
|
|
1058
|
+
246: <span class="ruby-keyword kw">else</span>
|
|
1059
|
+
247: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
|
|
1060
|
+
248: <span class="ruby-keyword kw">end</span>
|
|
1061
|
+
249: <span class="ruby-keyword kw">else</span>
|
|
1062
|
+
250: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Hit unknown token #{token}"</span>
|
|
1063
|
+
251: <span class="ruby-keyword kw">end</span>
|
|
1064
|
+
252: <span class="ruby-keyword kw">end</span>
|
|
1065
|
+
253: <span class="ruby-identifier">attrs</span>
|
|
1066
|
+
254: <span class="ruby-keyword kw">end</span></pre>
|
|
1057
1067
|
</div>
|
|
1058
1068
|
|
|
1059
1069
|
</div>
|
|
@@ -1084,29 +1094,29 @@ value specifies whether the attribute is scenario specific or not.
|
|
|
1084
1094
|
<div class="method-source-code"
|
|
1085
1095
|
id="check-eyword-source">
|
|
1086
1096
|
<pre>
|
|
1087
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
|
1088
|
-
|
|
1089
|
-
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1100
|
-
|
|
1101
|
-
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1108
|
-
|
|
1109
|
-
|
|
1097
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 256</span>
|
|
1098
|
+
256: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
|
|
1099
|
+
257: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">nil?</span> <span class="ruby-operator">||</span> <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">nil?</span>
|
|
1100
|
+
258: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">nil?</span>
|
|
1101
|
+
259: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"ERROR: #{keyword} is not a known keyword.\n\n"</span>
|
|
1102
|
+
260: <span class="ruby-keyword kw">end</span>
|
|
1103
|
+
261: <span class="ruby-comment cmt"># Create list of top-level keywords.</span>
|
|
1104
|
+
262: <span class="ruby-identifier">kwdStr</span> = <span class="ruby-value str">''</span>
|
|
1105
|
+
263: <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
|
|
1106
|
+
264: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
|
|
1107
|
+
265: (<span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">==</span> <span class="ruby-value">1</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">contexts</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-identifier">kwd</span>)
|
|
1108
|
+
266: <span class="ruby-identifier">kwdStr</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">', '</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">kwdStr</span>.<span class="ruby-identifier">empty?</span>
|
|
1109
|
+
267: <span class="ruby-identifier">kwdStr</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">keyword</span>
|
|
1110
|
+
268: <span class="ruby-keyword kw">end</span>
|
|
1111
|
+
269: <span class="ruby-keyword kw">end</span>
|
|
1112
|
+
270: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"Try one of the following keywords as argument to this "</span> <span class="ruby-operator">+</span>
|
|
1113
|
+
271: <span class="ruby-value str">"program:\n"</span>
|
|
1114
|
+
272: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"#{kwdStr}"</span>
|
|
1115
|
+
273: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
|
1116
|
+
274: <span class="ruby-keyword kw">end</span>
|
|
1117
|
+
275:
|
|
1118
|
+
276: <span class="ruby-keyword kw">true</span>
|
|
1119
|
+
277: <span class="ruby-keyword kw">end</span></pre>
|
|
1110
1120
|
</div>
|
|
1111
1121
|
|
|
1112
1122
|
</div>
|
|
@@ -1152,26 +1162,25 @@ Find optional attributes and return them hashed by the defining pattern.
|
|
|
1152
1162
|
196: <span class="ruby-comment cmt"># Push pattern onto 'stack'.</span>
|
|
1153
1163
|
197: <span class="ruby-identifier">stack</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-keyword kw">true</span>
|
|
1154
1164
|
198:
|
|
1155
|
-
199: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'
|
|
1165
|
+
199: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">0</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'{'</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">pattern</span>[<span class="ruby-value">2</span>][<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value str">'}'</span>
|
|
1156
1166
|
200: <span class="ruby-comment cmt"># We have found an optional attribute pattern!</span>
|
|
1157
1167
|
201: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attributes</span>(<span class="ruby-identifier">pattern</span>[<span class="ruby-value">1</span>], <span class="ruby-keyword kw">false</span>)
|
|
1158
1168
|
202: <span class="ruby-keyword kw">end</span>
|
|
1159
1169
|
203:
|
|
1160
1170
|
204: <span class="ruby-comment cmt"># If a token of the pattern is a reference, we recursively</span>
|
|
1161
1171
|
205: <span class="ruby-comment cmt"># follow the reference to the next pattern.</span>
|
|
1162
|
-
206: <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">
|
|
1163
|
-
207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">
|
|
1164
|
-
208: <span class="ruby-identifier">
|
|
1165
|
-
209: <span class="ruby-
|
|
1166
|
-
210: <span class="ruby-
|
|
1167
|
-
211:
|
|
1168
|
-
212:
|
|
1169
|
-
213: <span class="ruby-
|
|
1170
|
-
214:
|
|
1171
|
-
215:
|
|
1172
|
-
216:
|
|
1173
|
-
217:
|
|
1174
|
-
218: <span class="ruby-keyword kw">end</span></pre>
|
|
1172
|
+
206: <span class="ruby-identifier">pattern</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>
|
|
1173
|
+
207: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
|
|
1174
|
+
208: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>]
|
|
1175
|
+
209: <span class="ruby-comment cmt"># Rules with multiple patterns won't lead to attributes.</span>
|
|
1176
|
+
210: <span class="ruby-keyword kw">next</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>.<span class="ruby-identifier">length</span> <span class="ruby-operator">></span> <span class="ruby-value">1</span>
|
|
1177
|
+
211:
|
|
1178
|
+
212: <span class="ruby-identifier">attrs</span> = <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">rule</span>.<span class="ruby-identifier">patterns</span>[<span class="ruby-value">0</span>], <span class="ruby-identifier">stack</span>)
|
|
1179
|
+
213: <span class="ruby-keyword kw">return</span> <span class="ruby-identifier">attrs</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">attrs</span>.<span class="ruby-identifier">empty?</span>
|
|
1180
|
+
214: <span class="ruby-keyword kw">end</span>
|
|
1181
|
+
215: <span class="ruby-keyword kw">end</span>
|
|
1182
|
+
216: {}
|
|
1183
|
+
217: <span class="ruby-keyword kw">end</span></pre>
|
|
1175
1184
|
</div>
|
|
1176
1185
|
|
|
1177
1186
|
</div>
|