taskjuggler 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -129,6 +129,8 @@
|
|
129
129
|
|
130
130
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
131
131
|
|
132
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
133
|
+
|
132
134
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
133
135
|
|
134
136
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
@@ -207,6 +209,8 @@
|
|
207
209
|
|
208
210
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
209
211
|
|
212
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
213
|
+
|
210
214
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
211
215
|
|
212
216
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
@@ -239,6 +243,8 @@
|
|
239
243
|
|
240
244
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
241
245
|
|
246
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
247
|
+
|
242
248
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
243
249
|
|
244
250
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
@@ -519,6 +525,8 @@
|
|
519
525
|
|
520
526
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
521
527
|
|
528
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
529
|
+
|
522
530
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
523
531
|
|
524
532
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
@@ -545,8 +553,6 @@
|
|
545
553
|
|
546
554
|
<li><a href="../String.html">String</a></li>
|
547
555
|
|
548
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
549
|
-
|
550
556
|
</ul>
|
551
557
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
552
558
|
</div>
|
@@ -641,36 +647,36 @@ project data is accessed via tj3client on a tj3 server process.
|
|
641
647
|
<div class="method-source-code"
|
642
648
|
id="new-source">
|
643
649
|
<pre>
|
644
|
-
<span class="ruby-comment cmt"># File lib/StatusSheetSender.rb, line
|
645
|
-
|
646
|
-
|
647
|
-
|
648
|
-
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
650
|
+
<span class="ruby-comment cmt"># File lib/StatusSheetSender.rb, line 26</span>
|
651
|
+
26: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">appName</span>)
|
652
|
+
27: <span class="ruby-keyword kw">super</span>(<span class="ruby-identifier">appName</span>, <span class="ruby-value str">'status'</span>)
|
653
|
+
28:
|
654
|
+
29: <span class="ruby-comment cmt"># This is a LogicalExpression string that controls what resources should</span>
|
655
|
+
30: <span class="ruby-comment cmt"># not be getting a status sheet.</span>
|
656
|
+
31: <span class="ruby-ivar">@hideResource</span> = <span class="ruby-value str">'0'</span>
|
657
|
+
32: <span class="ruby-comment cmt"># The base directory of the status sheet templates.</span>
|
658
|
+
33: <span class="ruby-ivar">@templateDir</span> = <span class="ruby-value str">'StatusSheetTemplates'</span>
|
659
|
+
34: <span class="ruby-comment cmt"># The base directory of the received time sheets.</span>
|
660
|
+
35: <span class="ruby-ivar">@timeSheetDir</span> = <span class="ruby-value str">'TimeSheets'</span>
|
661
|
+
36: <span class="ruby-comment cmt"># This file contains the time intervals that the StatusSheetReceiver will</span>
|
662
|
+
37: <span class="ruby-comment cmt"># accept as a valid interval.</span>
|
663
|
+
38: <span class="ruby-ivar">@signatureFile</span> = <span class="ruby-node">"#{@templateDir}/acceptable_intervals"</span>
|
664
|
+
39: <span class="ruby-comment cmt"># The log file</span>
|
665
|
+
40: <span class="ruby-ivar">@logFile</span> = <span class="ruby-value str">'statussheets.log'</span>
|
666
|
+
41:
|
667
|
+
42: <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>
|
668
|
+
43: <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>
|
669
|
+
44: <span class="ruby-comment cmt"># tj3ts_summary generates a list of resources that have not submitted</span>
|
670
|
+
45: <span class="ruby-comment cmt"># their reports yet. If you want to generate the warning below, make</span>
|
671
|
+
46: <span class="ruby-comment cmt"># sure you run tj3ts_summary immediately before you sent the status sheet</span>
|
672
|
+
47: <span class="ruby-comment cmt"># templates.</span>
|
673
|
+
48: <span class="ruby-identifier">defaulters</span> = <span class="ruby-identifier">defaulterList</span>
|
674
|
+
49: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">defaulters</span>.<span class="ruby-identifier">empty?</span>
|
675
|
+
50: <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>
|
676
|
+
51: <span class="ruby-keyword kw">end</span>
|
677
|
+
52:
|
678
|
+
53: <span class="ruby-ivar">@mailSubject</span> = <span class="ruby-value str">"Your weekly status report template for %s"</span>
|
679
|
+
54: <span class="ruby-keyword kw">end</span></pre>
|
674
680
|
</div>
|
675
681
|
|
676
682
|
</div>
|
@@ -707,48 +713,48 @@ project data is accessed via tj3client on a tj3 server process.
|
|
707
713
|
<div class="method-source-code"
|
708
714
|
id="defaulter-ist-source">
|
709
715
|
<pre>
|
710
|
-
<span class="ruby-comment cmt"># File lib/StatusSheetSender.rb, line
|
711
|
-
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
|
722
|
-
|
723
|
-
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
|
751
|
-
|
716
|
+
<span class="ruby-comment cmt"># File lib/StatusSheetSender.rb, line 74</span>
|
717
|
+
74: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">defaulterList</span>
|
718
|
+
75: <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>
|
719
|
+
76: <span class="ruby-identifier">tsDir</span> = <span class="ruby-keyword kw">nil</span>
|
720
|
+
77: <span class="ruby-comment cmt"># The status sheet intervals and the time sheet intervals are not</span>
|
721
|
+
78: <span class="ruby-comment cmt"># identical. The status sheet interval can be smaller and is somewhat</span>
|
722
|
+
79: <span class="ruby-comment cmt"># later. But it always includes the end date of the corresponding time</span>
|
723
|
+
80: <span class="ruby-comment cmt"># sheet period. To get the file with the IDs of the resources that have</span>
|
724
|
+
81: <span class="ruby-comment cmt"># not submitted their report, we need to find the time sheet directory</span>
|
725
|
+
82: <span class="ruby-comment cmt"># that is within the status sheet period.</span>
|
726
|
+
83: <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>))
|
727
|
+
84: <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>
|
728
|
+
85: <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>))
|
729
|
+
86: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">dirDate</span> <span class="ruby-operator"><</span> <span class="ruby-identifier">repDate</span>
|
730
|
+
87: <span class="ruby-identifier">tsDir</span> = <span class="ruby-identifier">dir</span>
|
731
|
+
88: <span class="ruby-keyword kw">else</span>
|
732
|
+
89: <span class="ruby-keyword kw">break</span>
|
733
|
+
90: <span class="ruby-keyword kw">end</span>
|
734
|
+
91: <span class="ruby-keyword kw">end</span>
|
735
|
+
92: <span class="ruby-comment cmt"># Check if there is a time sheet directory.</span>
|
736
|
+
93: <span class="ruby-keyword kw">return</span> [] <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tsDir</span>
|
737
|
+
94:
|
738
|
+
95: <span class="ruby-identifier">missingFile</span> = <span class="ruby-node">"#{tsDir}/missing-reports"</span>
|
739
|
+
96: <span class="ruby-comment cmt"># Check if it's got a missing-reports file.</span>
|
740
|
+
97: <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>)
|
741
|
+
98:
|
742
|
+
99: <span class="ruby-comment cmt"># The sheet could have been submitted after tj3ts_summary was run. We</span>
|
743
|
+
100: <span class="ruby-comment cmt"># ignore the entry if a time sheet file now exists. There is a race</span>
|
744
|
+
101: <span class="ruby-comment cmt"># condition here. The file may exist, but it may not yet be loaded for</span>
|
745
|
+
102: <span class="ruby-comment cmt"># the current project that is used to generate the status report. There</span>
|
746
|
+
103: <span class="ruby-comment cmt"># is a race condition here. The file may exist, but it may not yet be</span>
|
747
|
+
104: <span class="ruby-comment cmt"># loaded for the current project that is used to generate the status</span>
|
748
|
+
105: <span class="ruby-comment cmt"># report.</span>
|
749
|
+
106: <span class="ruby-identifier">list</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">readlines</span>(<span class="ruby-identifier">missingFile</span>)
|
750
|
+
107: <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>
|
751
|
+
108: <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>]
|
752
|
+
109: <span class="ruby-constant">File</span>.<span class="ruby-identifier">exists?</span>(<span class="ruby-node">"#{tsDir}/#{resource.chomp}_#{tsDate}.tji"</span>)
|
753
|
+
110: <span class="ruby-keyword kw">end</span>
|
754
|
+
111:
|
755
|
+
112: <span class="ruby-comment cmt"># Return the content of the file.</span>
|
756
|
+
113: <span class="ruby-identifier">list</span>
|
757
|
+
114: <span class="ruby-keyword kw">end</span></pre>
|
752
758
|
</div>
|
753
759
|
|
754
760
|
</div>
|
@@ -131,6 +131,8 @@
|
|
131
131
|
|
132
132
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
133
133
|
|
134
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
135
|
+
|
134
136
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
135
137
|
|
136
138
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
@@ -209,6 +211,8 @@
|
|
209
211
|
|
210
212
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
211
213
|
|
214
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
215
|
+
|
212
216
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
213
217
|
|
214
218
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
@@ -241,6 +245,8 @@
|
|
241
245
|
|
242
246
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
243
247
|
|
248
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
249
|
+
|
244
250
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
245
251
|
|
246
252
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
@@ -521,6 +527,8 @@
|
|
521
527
|
|
522
528
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
523
529
|
|
530
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
531
|
+
|
524
532
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
525
533
|
|
526
534
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
@@ -547,8 +555,6 @@
|
|
547
555
|
|
548
556
|
<li><a href="../String.html">String</a></li>
|
549
557
|
|
550
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
551
|
-
|
552
558
|
</ul>
|
553
559
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
554
560
|
</div>
|
@@ -596,10 +602,10 @@
|
|
596
602
|
<div class="method-source-code"
|
597
603
|
id="new-source">
|
598
604
|
<pre>
|
599
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
600
|
-
|
601
|
-
|
602
|
-
|
605
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 545</span>
|
606
|
+
545: <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>)
|
607
|
+
546: <span class="ruby-keyword kw">super</span>
|
608
|
+
547: <span class="ruby-keyword kw">end</span></pre>
|
603
609
|
</div>
|
604
610
|
|
605
611
|
</div>
|
@@ -630,10 +636,10 @@
|
|
630
636
|
<div class="method-source-code"
|
631
637
|
id="tjp-d-source">
|
632
638
|
<pre>
|
633
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
634
|
-
|
635
|
-
|
636
|
-
|
639
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 549</span>
|
640
|
+
549: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">StringAttribute</span><span class="ruby-operator">::</span><span class="ruby-identifier">tjpId</span>
|
641
|
+
550: <span class="ruby-value str">'text'</span>
|
642
|
+
551: <span class="ruby-keyword kw">end</span></pre>
|
637
643
|
</div>
|
638
644
|
|
639
645
|
</div>
|
@@ -670,10 +676,10 @@
|
|
670
676
|
<div class="method-source-code"
|
671
677
|
id="to-tjp-source">
|
672
678
|
<pre>
|
673
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
674
|
-
|
675
|
-
|
676
|
-
|
679
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 553</span>
|
680
|
+
553: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_tjp</span>
|
681
|
+
554: <span class="ruby-node">"#{@type.id} \"#{@value}\""</span>
|
682
|
+
555: <span class="ruby-keyword kw">end</span></pre>
|
677
683
|
</div>
|
678
684
|
|
679
685
|
</div>
|
@@ -129,6 +129,8 @@
|
|
129
129
|
|
130
130
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
131
131
|
|
132
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
133
|
+
|
132
134
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
133
135
|
|
134
136
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
@@ -207,6 +209,8 @@
|
|
207
209
|
|
208
210
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
209
211
|
|
212
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
213
|
+
|
210
214
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
211
215
|
|
212
216
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
@@ -239,6 +243,8 @@
|
|
239
243
|
|
240
244
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
241
245
|
|
246
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
247
|
+
|
242
248
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
243
249
|
|
244
250
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
@@ -519,6 +525,8 @@
|
|
519
525
|
|
520
526
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
521
527
|
|
528
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
529
|
+
|
522
530
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
523
531
|
|
524
532
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
@@ -545,8 +553,6 @@
|
|
545
553
|
|
546
554
|
<li><a href="../String.html">String</a></li>
|
547
555
|
|
548
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
549
|
-
|
550
556
|
</ul>
|
551
557
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
552
558
|
</div>
|
@@ -594,10 +600,10 @@
|
|
594
600
|
<div class="method-source-code"
|
595
601
|
id="new-source">
|
596
602
|
<pre>
|
597
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
598
|
-
|
599
|
-
|
600
|
-
|
603
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 560</span>
|
604
|
+
560: <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>)
|
605
|
+
561: <span class="ruby-keyword kw">super</span>
|
606
|
+
562: <span class="ruby-keyword kw">end</span></pre>
|
601
607
|
</div>
|
602
608
|
|
603
609
|
</div>
|
@@ -628,10 +634,10 @@
|
|
628
634
|
<div class="method-source-code"
|
629
635
|
id="tjp-d-source">
|
630
636
|
<pre>
|
631
|
-
<span class="ruby-comment cmt"># File lib/Attributes.rb, line
|
632
|
-
|
633
|
-
|
634
|
-
|
637
|
+
<span class="ruby-comment cmt"># File lib/Attributes.rb, line 564</span>
|
638
|
+
564: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">SymbolAttribute</span><span class="ruby-operator">::</span><span class="ruby-identifier">tjpId</span>
|
639
|
+
565: <span class="ruby-value str">'symbol'</span>
|
640
|
+
566: <span class="ruby-keyword kw">end</span></pre>
|
635
641
|
</div>
|
636
642
|
|
637
643
|
</div>
|
@@ -145,6 +145,8 @@
|
|
145
145
|
|
146
146
|
<li><a href="../TaskJuggler/AttributeDefinition.html">TaskJuggler::AttributeDefinition</a></li>
|
147
147
|
|
148
|
+
<li><a href="../TaskJuggler/AttributeOverwrite.html">TaskJuggler::AttributeOverwrite</a></li>
|
149
|
+
|
148
150
|
<li><a href="../TaskJuggler/BatchProcessor.html">TaskJuggler::BatchProcessor</a></li>
|
149
151
|
|
150
152
|
<li><a href="../TaskJuggler/Booking.html">TaskJuggler::Booking</a></li>
|
@@ -223,6 +225,8 @@
|
|
223
225
|
|
224
226
|
<li><a href="../TaskJuggler/Interval.html">TaskJuggler::Interval</a></li>
|
225
227
|
|
228
|
+
<li><a href="../TaskJuggler/IntervalList.html">TaskJuggler::IntervalList</a></li>
|
229
|
+
|
226
230
|
<li><a href="../TaskJuggler/IntervalListAttribute.html">TaskJuggler::IntervalListAttribute</a></li>
|
227
231
|
|
228
232
|
<li><a href="../TaskJuggler/JobInfo.html">TaskJuggler::JobInfo</a></li>
|
@@ -255,6 +259,8 @@
|
|
255
259
|
|
256
260
|
<li><a href="../TaskJuggler/LogicalExpressionAttribute.html">TaskJuggler::LogicalExpressionAttribute</a></li>
|
257
261
|
|
262
|
+
<li><a href="../TaskJuggler/LogicalExpressionListAttribute.html">TaskJuggler::LogicalExpressionListAttribute</a></li>
|
263
|
+
|
258
264
|
<li><a href="../TaskJuggler/LogicalFlag.html">TaskJuggler::LogicalFlag</a></li>
|
259
265
|
|
260
266
|
<li><a href="../TaskJuggler/LogicalFunction.html">TaskJuggler::LogicalFunction</a></li>
|
@@ -535,6 +541,8 @@
|
|
535
541
|
|
536
542
|
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
537
543
|
|
544
|
+
<li><a href="../TaskJuggler/WelcomePage.html">TaskJuggler::WelcomePage</a></li>
|
545
|
+
|
538
546
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
539
547
|
|
540
548
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
@@ -561,8 +569,6 @@
|
|
561
569
|
|
562
570
|
<li><a href="../String.html">String</a></li>
|
563
571
|
|
564
|
-
<li><a href="../StringIO.html">StringIO</a></li>
|
565
|
-
|
566
572
|
</ul>
|
567
573
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
568
574
|
</div>
|
@@ -647,47 +653,47 @@ that uses this <a href="SyntaxReference.html">SyntaxReference</a>.
|
|
647
653
|
<div class="method-source-code"
|
648
654
|
id="new-source">
|
649
655
|
<pre>
|
650
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
651
|
-
|
652
|
-
|
653
|
-
|
654
|
-
|
655
|
-
|
656
|
-
|
657
|
-
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
663
|
-
|
664
|
-
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
|
678
|
-
|
679
|
-
|
680
|
-
|
681
|
-
|
682
|
-
|
683
|
-
|
684
|
-
|
685
|
-
|
686
|
-
|
687
|
-
|
688
|
-
|
689
|
-
|
690
|
-
|
656
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 36</span>
|
657
|
+
36: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">manual</span> = <span class="ruby-keyword kw">nil</span>)
|
658
|
+
37: <span class="ruby-ivar">@manual</span> = <span class="ruby-identifier">manual</span>
|
659
|
+
38: <span class="ruby-ivar">@messageHandler</span> = <span class="ruby-constant">MessageHandler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
|
660
|
+
39: <span class="ruby-ivar">@parser</span> = <span class="ruby-constant">ProjectFileParser</span>.<span class="ruby-identifier">new</span>(<span class="ruby-ivar">@messageHandler</span>)
|
661
|
+
40: <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">updateParserTables</span>
|
662
|
+
41:
|
663
|
+
42: <span class="ruby-comment cmt"># This hash stores all documented keywords using the keyword as</span>
|
664
|
+
43: <span class="ruby-comment cmt"># index.</span>
|
665
|
+
44: <span class="ruby-ivar">@keywords</span> = {}
|
666
|
+
45: <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>.<span class="ruby-identifier">each_value</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">rule</span><span class="ruby-operator">|</span>
|
667
|
+
46: <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>
|
668
|
+
47: <span class="ruby-comment cmt"># Only patterns that are documented are of interest.</span>
|
669
|
+
48: <span class="ruby-keyword kw">next</span> <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>
|
670
|
+
49:
|
671
|
+
50: <span class="ruby-comment cmt"># Make sure each keyword is unique.</span>
|
672
|
+
51: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">keyword</span>)
|
673
|
+
52: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Multiple patterns have the same keyword #{pattern.keyword}"</span>
|
674
|
+
53: <span class="ruby-keyword kw">end</span>
|
675
|
+
54:
|
676
|
+
55: <span class="ruby-identifier">argDocs</span> = []
|
677
|
+
56: <span class="ruby-comment cmt"># Create a new KeywordDocumentation object and fill-in all extracted</span>
|
678
|
+
57: <span class="ruby-comment cmt"># values.</span>
|
679
|
+
58: <span class="ruby-identifier">kwd</span> = <span class="ruby-constant">KeywordDocumentation</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">rule</span>, <span class="ruby-identifier">pattern</span>,
|
680
|
+
59: <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">to_syntax</span>(<span class="ruby-identifier">argDocs</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>), <span class="ruby-identifier">argDocs</span>,
|
681
|
+
60: <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">pattern</span>, {}), <span class="ruby-ivar">@manual</span>)
|
682
|
+
61: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">keyword</span>] = <span class="ruby-identifier">kwd</span>
|
683
|
+
62: <span class="ruby-keyword kw">end</span>
|
684
|
+
63: <span class="ruby-keyword kw">end</span>
|
685
|
+
64:
|
686
|
+
65: <span class="ruby-comment cmt"># Make sure all references to other keywords are present.</span>
|
687
|
+
66: <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>
|
688
|
+
67: <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">crossReference</span>(<span class="ruby-ivar">@keywords</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>)
|
689
|
+
68: <span class="ruby-keyword kw">end</span>
|
690
|
+
69:
|
691
|
+
70: <span class="ruby-comment cmt"># Figure out whether the keyword describes an inheritable attribute or</span>
|
692
|
+
71: <span class="ruby-comment cmt"># not.</span>
|
693
|
+
72: <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>
|
694
|
+
73: <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">computeInheritance</span>(<span class="ruby-ivar">@keywords</span>, <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>)
|
695
|
+
74: <span class="ruby-keyword kw">end</span>
|
696
|
+
75: <span class="ruby-keyword kw">end</span></pre>
|
691
697
|
</div>
|
692
698
|
|
693
699
|
</div>
|
@@ -727,19 +733,19 @@ href="../String.html">String</a> objects).
|
|
727
733
|
<div class="method-source-code"
|
728
734
|
id="all-source">
|
729
735
|
<pre>
|
730
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
731
|
-
|
732
|
-
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
736
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 78</span>
|
737
|
+
78: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">all</span>
|
738
|
+
79: <span class="ruby-identifier">sorted</span> = <span class="ruby-ivar">@keywords</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort</span>
|
739
|
+
80: <span class="ruby-comment cmt"># Register the neighbours with each keyword so we can use this info in</span>
|
740
|
+
81: <span class="ruby-comment cmt"># navigation bars.</span>
|
741
|
+
82: <span class="ruby-identifier">pred</span> = <span class="ruby-keyword kw">nil</span>
|
742
|
+
83: <span class="ruby-identifier">sorted</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">kwd</span><span class="ruby-operator">|</span>
|
743
|
+
84: <span class="ruby-identifier">keyword</span> = <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">kwd</span>]
|
744
|
+
85: <span class="ruby-identifier">pred</span>.<span class="ruby-identifier">successor</span> = <span class="ruby-identifier">keyword</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">pred</span>
|
745
|
+
86: <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">predecessor</span> = <span class="ruby-identifier">pred</span>
|
746
|
+
87: <span class="ruby-identifier">pred</span> = <span class="ruby-identifier">keyword</span>
|
747
|
+
88: <span class="ruby-keyword kw">end</span>
|
748
|
+
89: <span class="ruby-keyword kw">end</span></pre>
|
743
749
|
</div>
|
744
750
|
|
745
751
|
</div>
|
@@ -773,49 +779,49 @@ support navigating through the syntax reference.
|
|
773
779
|
<div class="method-source-code"
|
774
780
|
id="generate-navbar-source">
|
775
781
|
<pre>
|
776
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
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
|
-
|
782
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 142</span>
|
783
|
+
142: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateHTMLnavbar</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">keywords</span>)
|
784
|
+
143: <span class="ruby-identifier">html</span> = <span class="ruby-constant">HTMLDocument</span>.<span class="ruby-identifier">new</span>
|
785
|
+
144: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">html</span>.<span class="ruby-identifier">generateHead</span>(<span class="ruby-value str">'TaskJuggler Syntax Reference Navigator'</span>)
|
786
|
+
145: <span class="ruby-identifier">head</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'base'</span>, <span class="ruby-value str">'target'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'display'</span>)
|
787
|
+
146: <span class="ruby-identifier">html</span> <span class="ruby-operator"><<</span> (<span class="ruby-identifier">body</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'body'</span>))
|
788
|
+
147:
|
789
|
+
148: <span class="ruby-identifier">body</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'Table Of Contents'</span>, <span class="ruby-value str">'a'</span>, <span class="ruby-value str">'href'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'toc.html'</span>)
|
790
|
+
149: <span class="ruby-identifier">body</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'br'</span>)
|
791
|
+
150:
|
792
|
+
151: <span class="ruby-identifier">normalizedKeywords</span> = {}
|
793
|
+
152: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
|
794
|
+
153: <span class="ruby-identifier">normalizedKeywords</span>[<span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">title</span>] = <span class="ruby-identifier">keyword</span>
|
795
|
+
154: <span class="ruby-keyword kw">end</span>
|
796
|
+
155: <span class="ruby-identifier">letter</span> = <span class="ruby-keyword kw">nil</span>
|
797
|
+
156: <span class="ruby-identifier">letters</span> = []
|
798
|
+
157: <span class="ruby-identifier">normalizedKeywords</span>.<span class="ruby-identifier">keys</span>.<span class="ruby-identifier">sort!</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">normalized</span><span class="ruby-operator">|</span>
|
799
|
+
158: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">normalized</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>] <span class="ruby-operator">!=</span> <span class="ruby-identifier">letter</span>
|
800
|
+
159: <span class="ruby-identifier">letter</span> = <span class="ruby-identifier">normalized</span>[<span class="ruby-value">0</span>, <span class="ruby-value">1</span>]
|
801
|
+
160: <span class="ruby-identifier">letters</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">letter</span>
|
802
|
+
161: <span class="ruby-identifier">body</span> <span class="ruby-operator"><<</span> (<span class="ruby-identifier">h</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'h3'</span>))
|
803
|
+
162: <span class="ruby-identifier">h</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">letter</span>.<span class="ruby-identifier">upcase</span>, <span class="ruby-value str">'a'</span>, <span class="ruby-value str">'name'</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">letter</span>)
|
804
|
+
163: <span class="ruby-keyword kw">end</span>
|
805
|
+
164: <span class="ruby-identifier">keyword</span> = <span class="ruby-identifier">normalizedKeywords</span>[<span class="ruby-identifier">normalized</span>]
|
806
|
+
165: <span class="ruby-identifier">body</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"#{normalized}"</span>, <span class="ruby-value str">'a'</span>,
|
807
|
+
166: <span class="ruby-value str">'href'</span> =<span class="ruby-operator">></span> <span class="ruby-node">"#{keyword}.html"</span>)
|
808
|
+
167: <span class="ruby-identifier">body</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'br'</span>)
|
809
|
+
168: <span class="ruby-keyword kw">end</span>
|
810
|
+
169:
|
811
|
+
170: <span class="ruby-identifier">html</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">directory</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'navbar.html'</span>)
|
812
|
+
171:
|
813
|
+
172: <span class="ruby-identifier">html</span> = <span class="ruby-constant">HTMLDocument</span>.<span class="ruby-identifier">new</span>
|
814
|
+
173: <span class="ruby-identifier">head</span> = <span class="ruby-identifier">html</span>.<span class="ruby-identifier">generateHead</span>(<span class="ruby-value str">'TaskJuggler Syntax Reference Navigator'</span>)
|
815
|
+
174: <span class="ruby-identifier">head</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'base'</span>, <span class="ruby-value str">'target'</span> =<span class="ruby-operator">></span> <span class="ruby-value str">'navigator'</span>)
|
816
|
+
175: <span class="ruby-identifier">html</span> <span class="ruby-operator"><<</span> (<span class="ruby-identifier">body</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'body'</span>))
|
817
|
+
176:
|
818
|
+
177: <span class="ruby-identifier">body</span> <span class="ruby-operator"><<</span> (<span class="ruby-identifier">h3</span> = <span class="ruby-constant">XMLElement</span>.<span class="ruby-identifier">new</span>(<span class="ruby-value str">'h3'</span>))
|
819
|
+
178: <span class="ruby-identifier">letters</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">l</span><span class="ruby-operator">|</span>
|
820
|
+
179: <span class="ruby-identifier">h3</span> <span class="ruby-operator"><<</span> <span class="ruby-constant">XMLNamedText</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">l</span>.<span class="ruby-identifier">upcase</span>, <span class="ruby-value str">'a'</span>,
|
821
|
+
180: <span class="ruby-value str">'href'</span> =<span class="ruby-operator">></span> <span class="ruby-node">"navbar.html##{l}"</span>)
|
822
|
+
181: <span class="ruby-keyword kw">end</span>
|
823
|
+
182: <span class="ruby-identifier">html</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">directory</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'alphabet.html'</span>)
|
824
|
+
183: <span class="ruby-keyword kw">end</span></pre>
|
819
825
|
</div>
|
820
826
|
|
821
827
|
</div>
|
@@ -850,14 +856,14 @@ error the result is empty but an error message will be send to $stderr.
|
|
850
856
|
<div class="method-source-code"
|
851
857
|
id="generate-reference-source">
|
852
858
|
<pre>
|
853
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
859
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 132</span>
|
860
|
+
132: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">generateHTMLreference</span>(<span class="ruby-identifier">directory</span>, <span class="ruby-identifier">keyword</span>)
|
861
|
+
133: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
|
862
|
+
134: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">generateHTML</span>(<span class="ruby-identifier">directory</span>)
|
863
|
+
135: <span class="ruby-keyword kw">else</span>
|
864
|
+
136: <span class="ruby-value str">''</span>
|
865
|
+
137: <span class="ruby-keyword kw">end</span>
|
866
|
+
138: <span class="ruby-keyword kw">end</span></pre>
|
861
867
|
</div>
|
862
868
|
|
863
869
|
</div>
|
@@ -888,15 +894,15 @@ error the result is empty but an error message will be send to $stderr.
|
|
888
894
|
<div class="method-source-code"
|
889
895
|
id="internal-eferences-source">
|
890
896
|
<pre>
|
891
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
892
|
-
|
893
|
-
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
898
|
-
|
899
|
-
|
897
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 109</span>
|
898
|
+
109: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">internalReferences</span>
|
899
|
+
110: <span class="ruby-identifier">references</span> = {}
|
900
|
+
111: <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">keyword</span><span class="ruby-operator">|</span>
|
901
|
+
112: (<span class="ruby-identifier">refs</span> = <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">references</span>.<span class="ruby-identifier">uniq</span>).<span class="ruby-identifier">empty?</span> <span class="ruby-operator">||</span>
|
902
|
+
113: <span class="ruby-identifier">references</span>[<span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">keyword</span>] = <span class="ruby-identifier">refs</span>
|
903
|
+
114: <span class="ruby-keyword kw">end</span>
|
904
|
+
115: <span class="ruby-identifier">references</span>
|
905
|
+
116: <span class="ruby-keyword kw">end</span></pre>
|
900
906
|
</div>
|
901
907
|
|
902
908
|
</div>
|
@@ -934,19 +940,19 @@ the keywords will be enumerated ‘A.1’ to ‘A.20’.
|
|
934
940
|
<div class="method-source-code"
|
935
941
|
id="table-f-ontents-source">
|
936
942
|
<pre>
|
937
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
944
|
-
|
945
|
-
|
946
|
-
|
947
|
-
|
948
|
-
|
949
|
-
|
943
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 96</span>
|
944
|
+
96: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">tableOfContents</span>(<span class="ruby-identifier">toc</span>, <span class="ruby-identifier">sectionPrefix</span>)
|
945
|
+
97: <span class="ruby-identifier">keywords</span> = <span class="ruby-identifier">all</span>
|
946
|
+
98: <span class="ruby-comment cmt"># Set the chapter name to 'Syntax Reference' with a link to the first</span>
|
947
|
+
99: <span class="ruby-comment cmt"># keyword.</span>
|
948
|
+
100: <span class="ruby-identifier">toc</span>.<span class="ruby-identifier">addEntry</span>(<span class="ruby-constant">TOCEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-identifier">sectionPrefix</span>, <span class="ruby-value str">'Syntax Reference'</span>, <span class="ruby-identifier">keywords</span>[<span class="ruby-value">0</span>]))
|
949
|
+
101: <span class="ruby-identifier">i</span> = <span class="ruby-value">1</span>
|
950
|
+
102: <span class="ruby-identifier">keywords</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">keyword</span><span class="ruby-operator">|</span>
|
951
|
+
103: <span class="ruby-identifier">title</span> = <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">title</span>
|
952
|
+
104: <span class="ruby-identifier">toc</span>.<span class="ruby-identifier">addEntry</span>(<span class="ruby-constant">TOCEntry</span>.<span class="ruby-identifier">new</span>(<span class="ruby-node">"#{sectionPrefix}.#{i}"</span>, <span class="ruby-identifier">title</span>, <span class="ruby-identifier">keyword</span>))
|
953
|
+
105: <span class="ruby-identifier">i</span> <span class="ruby-operator">+=</span> <span class="ruby-value">1</span>
|
954
|
+
106: <span class="ruby-keyword kw">end</span>
|
955
|
+
107: <span class="ruby-keyword kw">end</span></pre>
|
950
956
|
</div>
|
951
957
|
|
952
958
|
</div>
|
@@ -982,14 +988,14 @@ be send to $stderr.
|
|
982
988
|
<div class="method-source-code"
|
983
989
|
id="to-s-source">
|
984
990
|
<pre>
|
985
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
986
|
-
|
987
|
-
|
988
|
-
|
989
|
-
|
990
|
-
|
991
|
-
|
992
|
-
|
991
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 121</span>
|
992
|
+
121: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>(<span class="ruby-identifier">keyword</span>)
|
993
|
+
122: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
|
994
|
+
123: <span class="ruby-ivar">@keywords</span>[<span class="ruby-identifier">keyword</span>].<span class="ruby-identifier">to_s</span>
|
995
|
+
124: <span class="ruby-keyword kw">else</span>
|
996
|
+
125: <span class="ruby-value str">''</span>
|
997
|
+
126: <span class="ruby-keyword kw">end</span>
|
998
|
+
127: <span class="ruby-keyword kw">end</span></pre>
|
993
999
|
</div>
|
994
1000
|
|
995
1001
|
</div>
|
@@ -1031,39 +1037,39 @@ value specifies whether the attribute is scenario specific or not.
|
|
1031
1037
|
<div class="method-source-code"
|
1032
1038
|
id="attributes-source">
|
1033
1039
|
<pre>
|
1034
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
|
1049
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
|
1040
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 224</span>
|
1041
|
+
224: <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>)
|
1042
|
+
225: <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>
|
1043
|
+
226: <span class="ruby-identifier">token</span> = <span class="ruby-identifier">token</span>[<span class="ruby-value">1</span>]
|
1044
|
+
227: <span class="ruby-comment cmt"># Find the matching rule.</span>
|
1045
|
+
228: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">token</span>]
|
1046
|
+
229: <span class="ruby-identifier">attrs</span> = {}
|
1047
|
+
230: <span class="ruby-comment cmt"># Now we look at the first token of each pattern.</span>
|
1048
|
+
231: <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>
|
1049
|
+
232: <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>
|
1050
|
+
233: <span class="ruby-comment cmt"># If it's a terminal symbol, we found what we are looking for. We add</span>
|
1051
|
+
234: <span class="ruby-comment cmt"># it to the attrs hash and mark it as non scenario specific.</span>
|
1052
|
+
235: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
|
1053
|
+
236: <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>
|
1054
|
+
237: <span class="ruby-comment cmt"># A reference to the !scenarioId rule marks the next token of the</span>
|
1055
|
+
238: <span class="ruby-comment cmt"># pattern as a reference to a rule with all scenario specific</span>
|
1056
|
+
239: <span class="ruby-comment cmt"># attributes.</span>
|
1057
|
+
240: <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>))
|
1058
|
+
241: <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>
|
1059
|
+
242: <span class="ruby-comment cmt"># In case we have a reference to another rule, we just follow the</span>
|
1060
|
+
243: <span class="ruby-comment cmt"># reference. If the pattern is documented we don't have to follow the</span>
|
1061
|
+
244: <span class="ruby-comment cmt"># reference. We can use the pattern instead.</span>
|
1062
|
+
245: <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>
|
1063
|
+
246: <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>))
|
1064
|
+
247: <span class="ruby-keyword kw">else</span>
|
1065
|
+
248: <span class="ruby-identifier">attrs</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-identifier">scenarioSpecific</span>
|
1066
|
+
249: <span class="ruby-keyword kw">end</span>
|
1067
|
+
250: <span class="ruby-keyword kw">else</span>
|
1068
|
+
251: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Hit unknown token #{token}"</span>
|
1069
|
+
252: <span class="ruby-keyword kw">end</span>
|
1070
|
+
253: <span class="ruby-keyword kw">end</span>
|
1071
|
+
254: <span class="ruby-identifier">attrs</span>
|
1072
|
+
255: <span class="ruby-keyword kw">end</span></pre>
|
1067
1073
|
</div>
|
1068
1074
|
|
1069
1075
|
</div>
|
@@ -1094,29 +1100,29 @@ value specifies whether the attribute is scenario specific or not.
|
|
1094
1100
|
<div class="method-source-code"
|
1095
1101
|
id="check-eyword-source">
|
1096
1102
|
<pre>
|
1097
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1103
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 257</span>
|
1104
|
+
257: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">checkKeyword</span>(<span class="ruby-identifier">keyword</span>)
|
1105
|
+
258: <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>
|
1106
|
+
259: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">keyword</span>.<span class="ruby-identifier">nil?</span>
|
1107
|
+
260: <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>
|
1108
|
+
261: <span class="ruby-keyword kw">end</span>
|
1109
|
+
262: <span class="ruby-comment cmt"># Create list of top-level keywords.</span>
|
1110
|
+
263: <span class="ruby-identifier">kwdStr</span> = <span class="ruby-value str">''</span>
|
1111
|
+
264: <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>
|
1112
|
+
265: <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>
|
1113
|
+
266: (<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>)
|
1114
|
+
267: <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>
|
1115
|
+
268: <span class="ruby-identifier">kwdStr</span> <span class="ruby-operator">+=</span> <span class="ruby-identifier">kwd</span>.<span class="ruby-identifier">keyword</span>
|
1116
|
+
269: <span class="ruby-keyword kw">end</span>
|
1117
|
+
270: <span class="ruby-keyword kw">end</span>
|
1118
|
+
271: <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>
|
1119
|
+
272: <span class="ruby-value str">"program:\n"</span>
|
1120
|
+
273: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-node">"#{kwdStr}"</span>
|
1121
|
+
274: <span class="ruby-keyword kw">return</span> <span class="ruby-keyword kw">false</span>
|
1122
|
+
275: <span class="ruby-keyword kw">end</span>
|
1123
|
+
276:
|
1124
|
+
277: <span class="ruby-keyword kw">true</span>
|
1125
|
+
278: <span class="ruby-keyword kw">end</span></pre>
|
1120
1126
|
</div>
|
1121
1127
|
|
1122
1128
|
</div>
|
@@ -1149,38 +1155,38 @@ Find optional attributes and return them hashed by the defining pattern.
|
|
1149
1155
|
<div class="method-source-code"
|
1150
1156
|
id="optional-ttributes-source">
|
1151
1157
|
<pre>
|
1152
|
-
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line
|
1153
|
-
|
1154
|
-
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1159
|
-
|
1160
|
-
|
1161
|
-
|
1162
|
-
|
1163
|
-
|
1164
|
-
|
1165
|
-
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1183
|
-
|
1158
|
+
<span class="ruby-comment cmt"># File lib/SyntaxReference.rb, line 188</span>
|
1159
|
+
188: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">optionalAttributes</span>(<span class="ruby-identifier">pattern</span>, <span class="ruby-identifier">stack</span>)
|
1160
|
+
189: <span class="ruby-comment cmt"># If we hit an endless recursion we won't find any attributes. So we push</span>
|
1161
|
+
190: <span class="ruby-comment cmt"># each pattern we process on the 'stack'. If we hit it again, we just</span>
|
1162
|
+
191: <span class="ruby-comment cmt"># return an empty hash.</span>
|
1163
|
+
192: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">stack</span>[<span class="ruby-identifier">pattern</span>]
|
1164
|
+
193:
|
1165
|
+
194: <span class="ruby-comment cmt"># If we hit a pattern that is documented, we ignore it.</span>
|
1166
|
+
195: <span class="ruby-keyword kw">return</span> {} <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">stack</span>.<span class="ruby-identifier">empty?</span> <span class="ruby-operator">&&</span> <span class="ruby-identifier">pattern</span>.<span class="ruby-identifier">doc</span>
|
1167
|
+
196:
|
1168
|
+
197: <span class="ruby-comment cmt"># Push pattern onto 'stack'.</span>
|
1169
|
+
198: <span class="ruby-identifier">stack</span>[<span class="ruby-identifier">pattern</span>] = <span class="ruby-keyword kw">true</span>
|
1170
|
+
199:
|
1171
|
+
200: <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>
|
1172
|
+
201: <span class="ruby-comment cmt"># We have found an optional attribute pattern!</span>
|
1173
|
+
202: <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>)
|
1174
|
+
203: <span class="ruby-keyword kw">end</span>
|
1175
|
+
204:
|
1176
|
+
205: <span class="ruby-comment cmt"># If a token of the pattern is a reference, we recursively</span>
|
1177
|
+
206: <span class="ruby-comment cmt"># follow the reference to the next pattern.</span>
|
1178
|
+
207: <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>
|
1179
|
+
208: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">type</span> <span class="ruby-operator">==</span> <span class="ruby-value">:reference</span>
|
1180
|
+
209: <span class="ruby-identifier">rule</span> = <span class="ruby-ivar">@parser</span>.<span class="ruby-identifier">rules</span>[<span class="ruby-identifier">name</span>]
|
1181
|
+
210: <span class="ruby-comment cmt"># Rules with multiple patterns won't lead to attributes.</span>
|
1182
|
+
211: <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>
|
1183
|
+
212:
|
1184
|
+
213: <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>)
|
1185
|
+
214: <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>
|
1186
|
+
215: <span class="ruby-keyword kw">end</span>
|
1187
|
+
216: <span class="ruby-keyword kw">end</span>
|
1188
|
+
217: {}
|
1189
|
+
218: <span class="ruby-keyword kw">end</span></pre>
|
1184
1190
|
</div>
|
1185
1191
|
|
1186
1192
|
</div>
|