taskjuggler 0.0.11 → 0.1.0
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 +6 -1550
- data/benchmarks/UTF-8-Strings.rb +58 -0
- data/benchmarks/profile.clt +36082 -0
- data/benchmarks/profile.html +58182 -0
- data/benchmarks/runbench.rb +2 -2
- data/data/css/tjmanual.css +0 -1
- data/doc/AppConfig.html +1491 -0
- data/doc/CHANGELOG.html +557 -0
- data/doc/COPYING.html +899 -0
- data/doc/Diff.html +1193 -0
- data/doc/Diff/Hunk.html +1026 -0
- data/doc/Diffable.html +684 -0
- data/doc/DiffableString.html +684 -0
- data/doc/Object.html +720 -0
- data/doc/README_rdoc.html +742 -0
- data/doc/RuntimeConfig.html +856 -0
- data/doc/String.html +1005 -0
- data/doc/TaskJuggler.html +2639 -0
- data/doc/TaskJuggler/Account.html +753 -0
- data/doc/TaskJuggler/AccountAttribute.html +769 -0
- data/doc/TaskJuggler/AccountScenario.html +712 -0
- data/doc/TaskJuggler/Allocation.html +963 -0
- data/doc/TaskJuggler/AllocationAttribute.html +799 -0
- data/doc/TaskJuggler/AttributeBase.html +1328 -0
- data/doc/TaskJuggler/AttributeDefinition.html +815 -0
- data/doc/TaskJuggler/AttributeOverwrite.html +606 -0
- data/doc/TaskJuggler/BatchProcessor.html +1178 -0
- data/doc/TaskJuggler/Booking.html +859 -0
- data/doc/TaskJuggler/BookingListAttribute.html +769 -0
- data/doc/TaskJuggler/BooleanAttribute.html +769 -0
- data/doc/TaskJuggler/CSVFile.html +1128 -0
- data/doc/TaskJuggler/CellSettingPattern.html +700 -0
- data/doc/TaskJuggler/CellSettingPatternList.html +749 -0
- data/doc/TaskJuggler/Charge.html +777 -0
- data/doc/TaskJuggler/ChargeListAttribute.html +733 -0
- data/doc/TaskJuggler/ChargeSet.html +949 -0
- data/doc/TaskJuggler/ChargeSetListAttribute.html +778 -0
- data/doc/TaskJuggler/CollisionDetector.html +1089 -0
- data/doc/TaskJuggler/ColumnListAttribute.html +733 -0
- data/doc/TaskJuggler/ColumnTable.html +763 -0
- data/doc/TaskJuggler/Daemon.html +819 -0
- data/doc/TaskJuggler/DataCache.html +1025 -0
- data/doc/TaskJuggler/DataCacheEntry.html +737 -0
- data/doc/TaskJuggler/DateAttribute.html +737 -0
- data/doc/TaskJuggler/DefinitionListAttribute.html +655 -0
- data/doc/TaskJuggler/DependencyListAttribute.html +773 -0
- data/doc/TaskJuggler/DurationAttribute.html +770 -0
- data/doc/TaskJuggler/FileList.html +793 -0
- data/doc/TaskJuggler/FileRecord.html +702 -0
- data/doc/TaskJuggler/FixnumAttribute.html +691 -0
- data/doc/TaskJuggler/FlagListAttribute.html +769 -0
- data/doc/TaskJuggler/FloatAttribute.html +733 -0
- data/doc/TaskJuggler/FormatListAttribute.html +697 -0
- data/doc/TaskJuggler/GanttChart.html +1487 -0
- data/doc/TaskJuggler/GanttContainer.html +945 -0
- data/doc/TaskJuggler/GanttHeader.html +948 -0
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +762 -0
- data/doc/TaskJuggler/GanttLine.html +1325 -0
- data/doc/TaskJuggler/GanttLoadStack.html +828 -0
- data/doc/TaskJuggler/GanttMilestone.html +926 -0
- data/doc/TaskJuggler/GanttRouter.html +1136 -0
- data/doc/TaskJuggler/GanttTaskBar.html +948 -0
- data/doc/TaskJuggler/HTMLDocument.html +754 -0
- data/doc/TaskJuggler/HTMLElements.html +599 -0
- data/doc/TaskJuggler/HTMLGraphics.html +837 -0
- data/doc/TaskJuggler/Interval.html +1076 -0
- data/doc/TaskJuggler/IntervalList.html +797 -0
- data/doc/TaskJuggler/IntervalListAttribute.html +773 -0
- data/doc/TaskJuggler/JobInfo.html +943 -0
- data/doc/TaskJuggler/Journal.html +1248 -0
- data/doc/TaskJuggler/JournalEntry.html +860 -0
- data/doc/TaskJuggler/JournalEntryList.html +1229 -0
- data/doc/TaskJuggler/KeywordArray.html +696 -0
- data/doc/TaskJuggler/KeywordDocumentation.html +2250 -0
- data/doc/TaskJuggler/Limits.html +1036 -0
- data/doc/TaskJuggler/Limits/Limit.html +947 -0
- data/doc/TaskJuggler/LimitsAttribute.html +734 -0
- data/doc/TaskJuggler/ListAttributeBase.html +703 -0
- data/doc/TaskJuggler/Log.html +1163 -0
- data/doc/TaskJuggler/LogFile.html +980 -0
- data/doc/TaskJuggler/LogicalAttribute.html +760 -0
- data/doc/TaskJuggler/LogicalExpression.html +801 -0
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +691 -0
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +691 -0
- data/doc/TaskJuggler/LogicalFlag.html +753 -0
- data/doc/TaskJuggler/LogicalFunction.html +1409 -0
- data/doc/TaskJuggler/LogicalOperation.html +1144 -0
- data/doc/TaskJuggler/ManagerResponsibilities.html +736 -0
- data/doc/TaskJuggler/ManagerStatusRecord.html +740 -0
- data/doc/TaskJuggler/Message.html +837 -0
- data/doc/TaskJuggler/MessageHandler.html +1056 -0
- data/doc/TaskJuggler/Navigator.html +943 -0
- data/doc/TaskJuggler/NavigatorElement.html +994 -0
- data/doc/TaskJuggler/NikuProject.html +724 -0
- data/doc/TaskJuggler/NikuReport.html +1470 -0
- data/doc/TaskJuggler/NikuResource.html +694 -0
- data/doc/TaskJuggler/NodeListAttribute.html +655 -0
- data/doc/TaskJuggler/PlaceHolderCell.html +748 -0
- data/doc/TaskJuggler/ProcessIntercom.html +1017 -0
- data/doc/TaskJuggler/ProcessIntercomIface.html +773 -0
- data/doc/TaskJuggler/Project.html +3478 -0
- data/doc/TaskJuggler/ProjectBroker.html +1676 -0
- data/doc/TaskJuggler/ProjectBrokerIface.html +851 -0
- data/doc/TaskJuggler/ProjectFileParser.html +2102 -0
- data/doc/TaskJuggler/ProjectFileScanner.html +1896 -0
- data/doc/TaskJuggler/ProjectRecord.html +978 -0
- data/doc/TaskJuggler/ProjectServer.html +1249 -0
- data/doc/TaskJuggler/ProjectServerIface.html +868 -0
- data/doc/TaskJuggler/PropertyAttribute.html +691 -0
- data/doc/TaskJuggler/PropertyList.html +1399 -0
- data/doc/TaskJuggler/PropertySet.html +1796 -0
- data/doc/TaskJuggler/PropertyTreeNode.html +2851 -0
- data/doc/TaskJuggler/Query.html +1756 -0
- data/doc/TaskJuggler/RTFHandlers.html +664 -0
- data/doc/TaskJuggler/RTFNavigator.html +792 -0
- data/doc/TaskJuggler/RTFQuery.html +1083 -0
- data/doc/TaskJuggler/RTFReport.html +820 -0
- data/doc/TaskJuggler/RTFReportLink.html +812 -0
- data/doc/TaskJuggler/RTFWithQuerySupport.html +702 -0
- data/doc/TaskJuggler/RealFormat.html +805 -0
- data/doc/TaskJuggler/RealFormatAttribute.html +655 -0
- data/doc/TaskJuggler/ReferenceAttribute.html +880 -0
- data/doc/TaskJuggler/Report.html +1501 -0
- data/doc/TaskJuggler/ReportBase.html +1266 -0
- data/doc/TaskJuggler/ReportContext.html +837 -0
- data/doc/TaskJuggler/ReportServer.html +1068 -0
- data/doc/TaskJuggler/ReportServerIface.html +902 -0
- data/doc/TaskJuggler/ReportServerRecord.html +781 -0
- data/doc/TaskJuggler/ReportServlet.html +1029 -0
- data/doc/TaskJuggler/ReportTable.html +1179 -0
- data/doc/TaskJuggler/ReportTableCell.html +1666 -0
- data/doc/TaskJuggler/ReportTableColumn.html +890 -0
- data/doc/TaskJuggler/ReportTableLegend.html +1060 -0
- data/doc/TaskJuggler/ReportTableLine.html +1067 -0
- data/doc/TaskJuggler/Resource.html +1004 -0
- data/doc/TaskJuggler/ResourceListAttribute.html +829 -0
- data/doc/TaskJuggler/ResourceListRE.html +737 -0
- data/doc/TaskJuggler/ResourceScenario.html +2549 -0
- data/doc/TaskJuggler/RichText.html +879 -0
- data/doc/TaskJuggler/RichTextAttribute.html +811 -0
- data/doc/TaskJuggler/RichTextDocument.html +1038 -0
- data/doc/TaskJuggler/RichTextElement.html +1780 -0
- data/doc/TaskJuggler/RichTextFunctionExample.html +799 -0
- data/doc/TaskJuggler/RichTextFunctionHandler.html +750 -0
- data/doc/TaskJuggler/RichTextImage.html +712 -0
- data/doc/TaskJuggler/RichTextIntermediate.html +1285 -0
- data/doc/TaskJuggler/RichTextParser.html +868 -0
- data/doc/TaskJuggler/RichTextScanner.html +1565 -0
- data/doc/TaskJuggler/RichTextSnip.html +1000 -0
- data/doc/TaskJuggler/RichTextSyntaxRules.html +2052 -0
- data/doc/TaskJuggler/Scenario.html +656 -0
- data/doc/TaskJuggler/ScenarioData.html +838 -0
- data/doc/TaskJuggler/ScenarioListAttribute.html +733 -0
- data/doc/TaskJuggler/Scoreboard.html +1201 -0
- data/doc/TaskJuggler/SheetHandlerBase.html +1297 -0
- data/doc/TaskJuggler/SheetReceiver.html +1398 -0
- data/doc/TaskJuggler/SheetSender.html +1168 -0
- data/doc/TaskJuggler/Shift.html +751 -0
- data/doc/TaskJuggler/ShiftAssignment.html +1008 -0
- data/doc/TaskJuggler/ShiftAssignments.html +1413 -0
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +734 -0
- data/doc/TaskJuggler/ShiftScenario.html +782 -0
- data/doc/TaskJuggler/SimpleQueryExpander.html +732 -0
- data/doc/TaskJuggler/SortListAttribute.html +691 -0
- data/doc/TaskJuggler/StatusSheetReceiver.html +678 -0
- data/doc/TaskJuggler/StatusSheetReport.html +935 -0
- data/doc/TaskJuggler/StatusSheetSender.html +808 -0
- data/doc/TaskJuggler/StdIoWrapper.html +696 -0
- data/doc/TaskJuggler/StringAttribute.html +733 -0
- data/doc/TaskJuggler/SymbolAttribute.html +691 -0
- data/doc/TaskJuggler/SyntaxReference.html +1240 -0
- data/doc/TaskJuggler/TOCEntry.html +836 -0
- data/doc/TaskJuggler/TSResourceRecord.html +732 -0
- data/doc/TaskJuggler/TSTaskRecord.html +744 -0
- data/doc/TaskJuggler/TableColumnDefinition.html +949 -0
- data/doc/TaskJuggler/TableOfContents.html +790 -0
- data/doc/TaskJuggler/TableReport.html +2555 -0
- data/doc/TaskJuggler/Task.html +890 -0
- data/doc/TaskJuggler/TaskDepListAttribute.html +773 -0
- data/doc/TaskJuggler/TaskDependency.html +832 -0
- data/doc/TaskJuggler/TaskListAttribute.html +773 -0
- data/doc/TaskJuggler/TaskListRE.html +736 -0
- data/doc/TaskJuggler/TaskScenario.html +5180 -0
- data/doc/TaskJuggler/TernarySearchTree.html +1341 -0
- data/doc/TaskJuggler/TextFormatter.html +973 -0
- data/doc/TaskJuggler/TextParser.html +1862 -0
- data/doc/TaskJuggler/TextParser/Macro.html +708 -0
- data/doc/TaskJuggler/TextParser/MacroTable.html +832 -0
- data/doc/TaskJuggler/TextParser/Pattern.html +1743 -0
- data/doc/TaskJuggler/TextParser/Rule.html +1419 -0
- data/doc/TaskJuggler/TextParser/Scanner.html +1516 -0
- data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +661 -0
- data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +727 -0
- data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +724 -0
- data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +1095 -0
- data/doc/TaskJuggler/TextParser/SourceFileInfo.html +760 -0
- data/doc/TaskJuggler/TextParser/StackElement.html +940 -0
- data/doc/TaskJuggler/TextParser/State.html +1015 -0
- data/doc/TaskJuggler/TextParser/StateTransition.html +808 -0
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +711 -0
- data/doc/TaskJuggler/TextParser/TokenDoc.html +742 -0
- data/doc/TaskJuggler/TextReport.html +921 -0
- data/doc/TaskJuggler/TimeSheet.html +1264 -0
- data/doc/TaskJuggler/TimeSheetReceiver.html +675 -0
- data/doc/TaskJuggler/TimeSheetRecord.html +1415 -0
- data/doc/TaskJuggler/TimeSheetReport.html +1013 -0
- data/doc/TaskJuggler/TimeSheetSender.html +700 -0
- data/doc/TaskJuggler/TimeSheetSummary.html +959 -0
- data/doc/TaskJuggler/TimeSheets.html +736 -0
- data/doc/TaskJuggler/Tj3.html +857 -0
- data/doc/TaskJuggler/Tj3AppBase.html +942 -0
- data/doc/TaskJuggler/Tj3Client.html +1510 -0
- data/doc/TaskJuggler/Tj3Daemon.html +870 -0
- data/doc/TaskJuggler/Tj3Man.html +768 -0
- data/doc/TaskJuggler/Tj3SheetAppBase.html +758 -0
- data/doc/TaskJuggler/Tj3SsReceiver.html +747 -0
- data/doc/TaskJuggler/Tj3SsSender.html +780 -0
- data/doc/TaskJuggler/Tj3TsReceiver.html +747 -0
- data/doc/TaskJuggler/Tj3TsSender.html +767 -0
- data/doc/TaskJuggler/Tj3TsSummary.html +775 -0
- data/doc/TaskJuggler/TjException.html +692 -0
- data/doc/TaskJuggler/TjRuntimeError.html +606 -0
- data/doc/TaskJuggler/TjTime.html +3117 -0
- data/doc/TaskJuggler/TjpExample.html +897 -0
- data/doc/TaskJuggler/TjpExportRE.html +1772 -0
- data/doc/TaskJuggler/TjpSyntaxRules.html +14329 -0
- data/doc/TaskJuggler/URLParameter.html +691 -0
- data/doc/TaskJuggler/UserManual.html +1224 -0
- data/doc/TaskJuggler/VimSyntax.html +1064 -0
- data/doc/TaskJuggler/WebServer.html +757 -0
- data/doc/TaskJuggler/WelcomePage.html +789 -0
- data/doc/TaskJuggler/WorkingHours.html +1218 -0
- data/doc/TaskJuggler/WorkingHoursAttribute.html +756 -0
- data/doc/TaskJuggler/XMLBlob.html +707 -0
- data/doc/TaskJuggler/XMLComment.html +702 -0
- data/doc/TaskJuggler/XMLDocument.html +803 -0
- data/doc/TaskJuggler/XMLElement.html +990 -0
- data/doc/TaskJuggler/XMLNamedText.html +663 -0
- data/doc/TaskJuggler/XMLText.html +717 -0
- data/doc/index.html +4518 -0
- data/doc/lib/taskjuggler/AccountScenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Account_rb.html +71 -0
- data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +67 -0
- data/doc/lib/taskjuggler/Allocation_rb.html +71 -0
- data/doc/lib/taskjuggler/AppConfig_rb.html +69 -0
- data/doc/lib/taskjuggler/AttributeBase_rb.html +69 -0
- data/doc/lib/taskjuggler/AttributeDefinition_rb.html +67 -0
- data/doc/lib/taskjuggler/Attributes_rb.html +83 -0
- data/doc/lib/taskjuggler/BatchProcessor_rb.html +71 -0
- data/doc/lib/taskjuggler/Booking_rb.html +67 -0
- data/doc/lib/taskjuggler/ChargeSet_rb.html +69 -0
- data/doc/lib/taskjuggler/Charge_rb.html +69 -0
- data/doc/lib/taskjuggler/DataCache_rb.html +71 -0
- data/doc/lib/taskjuggler/FileList_rb.html +67 -0
- data/doc/lib/taskjuggler/HTMLDocument_rb.html +71 -0
- data/doc/lib/taskjuggler/HTMLElements_rb.html +69 -0
- data/doc/lib/taskjuggler/IntervalList_rb.html +69 -0
- data/doc/lib/taskjuggler/Interval_rb.html +69 -0
- data/doc/lib/taskjuggler/Journal_rb.html +67 -0
- data/doc/lib/taskjuggler/KeywordArray_rb.html +67 -0
- data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +77 -0
- data/doc/lib/taskjuggler/Limits_rb.html +69 -0
- data/doc/lib/taskjuggler/LogFile_rb.html +69 -0
- data/doc/lib/taskjuggler/Log_rb.html +71 -0
- data/doc/lib/taskjuggler/LogicalExpression_rb.html +73 -0
- data/doc/lib/taskjuggler/LogicalFunction_rb.html +69 -0
- data/doc/lib/taskjuggler/LogicalOperation_rb.html +69 -0
- data/doc/lib/taskjuggler/MessageHandler_rb.html +69 -0
- data/doc/lib/taskjuggler/ProjectFileParser_rb.html +77 -0
- data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +69 -0
- data/doc/lib/taskjuggler/Project_rb.html +113 -0
- data/doc/lib/taskjuggler/PropertyList_rb.html +67 -0
- data/doc/lib/taskjuggler/PropertySet_rb.html +71 -0
- data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +67 -0
- data/doc/lib/taskjuggler/Query_rb.html +69 -0
- data/doc/lib/taskjuggler/RealFormat_rb.html +67 -0
- data/doc/lib/taskjuggler/ResourceScenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Resource_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/Document_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/Element_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +67 -0
- data/doc/lib/taskjuggler/RichText/Parser_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +73 -0
- data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +75 -0
- data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +69 -0
- data/doc/lib/taskjuggler/RichText/Scanner_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/Snip_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +67 -0
- data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +71 -0
- data/doc/lib/taskjuggler/RichText_rb.html +73 -0
- data/doc/lib/taskjuggler/RuntimeConfig_rb.html +69 -0
- data/doc/lib/taskjuggler/ScenarioData_rb.html +71 -0
- data/doc/lib/taskjuggler/Scenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Scoreboard_rb.html +69 -0
- data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +75 -0
- data/doc/lib/taskjuggler/SheetReceiver_rb.html +81 -0
- data/doc/lib/taskjuggler/SheetSender_rb.html +79 -0
- data/doc/lib/taskjuggler/ShiftAssignments_rb.html +71 -0
- data/doc/lib/taskjuggler/ShiftScenario_rb.html +69 -0
- data/doc/lib/taskjuggler/Shift_rb.html +71 -0
- data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +69 -0
- data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +69 -0
- data/doc/lib/taskjuggler/StatusSheetSender_rb.html +69 -0
- data/doc/lib/taskjuggler/StdIoWrapper_rb.html +67 -0
- data/doc/lib/taskjuggler/SyntaxReference_rb.html +75 -0
- data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +67 -0
- data/doc/lib/taskjuggler/TaskDependency_rb.html +67 -0
- data/doc/lib/taskjuggler/TaskJuggler_rb.html +75 -0
- data/doc/lib/taskjuggler/TaskScenario_rb.html +71 -0
- data/doc/lib/taskjuggler/Task_rb.html +71 -0
- data/doc/lib/taskjuggler/TernarySearchTree_rb.html +69 -0
- data/doc/lib/taskjuggler/TextFormatter_rb.html +69 -0
- data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +71 -0
- data/doc/lib/taskjuggler/TextParser/Rule_rb.html +69 -0
- data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +77 -0
- data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/State_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +67 -0
- data/doc/lib/taskjuggler/TextParser_rb.html +79 -0
- data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +69 -0
- data/doc/lib/taskjuggler/TimeSheetSender_rb.html +69 -0
- data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +69 -0
- data/doc/lib/taskjuggler/TimeSheets_rb.html +67 -0
- data/doc/lib/taskjuggler/Tj3AppBase_rb.html +79 -0
- data/doc/lib/taskjuggler/Tj3Config_rb.html +71 -0
- data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +69 -0
- data/doc/lib/taskjuggler/TjException_rb.html +67 -0
- data/doc/lib/taskjuggler/TjTime_rb.html +71 -0
- data/doc/lib/taskjuggler/TjpExample_rb.html +69 -0
- data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +67 -0
- data/doc/lib/taskjuggler/URLParameter_rb.html +69 -0
- data/doc/lib/taskjuggler/UTF8String_rb.html +69 -0
- data/doc/lib/taskjuggler/UserManual_rb.html +81 -0
- data/doc/lib/taskjuggler/VimSyntax_rb.html +69 -0
- data/doc/lib/taskjuggler/WorkingHours_rb.html +71 -0
- data/doc/lib/taskjuggler/XMLDocument_rb.html +69 -0
- data/doc/lib/taskjuggler/XMLElement_rb.html +69 -0
- data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +75 -0
- data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +75 -0
- data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +75 -0
- data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +71 -0
- data/doc/lib/taskjuggler/apps/Tj3_rb.html +71 -0
- data/doc/lib/taskjuggler/daemon/Daemon_rb.html +69 -0
- data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +71 -0
- data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +83 -0
- data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +85 -0
- data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +73 -0
- data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +69 -0
- data/doc/lib/taskjuggler/daemon/WebServer_rb.html +81 -0
- data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +71 -0
- data/doc/lib/taskjuggler/deep_copy_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/CSVFile_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttChart_rb.html +75 -0
- data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttLine_rb.html +79 -0
- data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/Navigator_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/NikuReport_rb.html +71 -0
- data/doc/lib/taskjuggler/reports/ReportBase_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportContext_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +67 -0
- data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/ReportTable_rb.html +71 -0
- data/doc/lib/taskjuggler/reports/Report_rb.html +93 -0
- data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +75 -0
- data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/TableReport_rb.html +77 -0
- data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +75 -0
- data/doc/lib/taskjuggler/reports/TextReport_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +69 -0
- data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +69 -0
- data/doc/lib/tj3_rb.html +69 -0
- data/doc/lib/tj3client_rb.html +69 -0
- data/doc/lib/tj3d_rb.html +69 -0
- data/doc/lib/tj3man_rb.html +69 -0
- data/doc/lib/tj3ss_receiver_rb.html +69 -0
- data/doc/lib/tj3ss_sender_rb.html +69 -0
- data/doc/lib/tj3ts_receiver_rb.html +69 -0
- data/doc/lib/tj3ts_sender_rb.html +69 -0
- data/doc/lib/tj3ts_summary_rb.html +69 -0
- data/doc/rdoc.css +706 -0
- data/examples/tutorial.tjp +2 -1
- data/lib/taskjuggler/Attributes.rb +33 -12
- data/lib/taskjuggler/DataCache.rb +17 -0
- data/lib/taskjuggler/FileList.rb +9 -0
- data/lib/taskjuggler/HTMLDocument.rb +19 -21
- data/lib/taskjuggler/HTMLElements.rb +46 -0
- data/lib/taskjuggler/Journal.rb +95 -46
- data/lib/taskjuggler/KeywordDocumentation.rb +248 -185
- data/lib/taskjuggler/LogicalExpression.rb +2 -2
- data/lib/taskjuggler/LogicalFunction.rb +22 -1
- data/lib/taskjuggler/LogicalOperation.rb +15 -5
- data/lib/taskjuggler/Project.rb +73 -16
- data/lib/taskjuggler/ProjectFileParser.rb +1 -1
- data/lib/taskjuggler/ProjectFileScanner.rb +27 -0
- data/lib/taskjuggler/PropertySet.rb +22 -45
- data/lib/taskjuggler/PropertyTreeNode.rb +99 -128
- data/lib/taskjuggler/Query.rb +39 -8
- data/lib/taskjuggler/Resource.rb +15 -6
- data/lib/taskjuggler/RichText/Document.rb +3 -3
- data/lib/taskjuggler/RichText/RTFQuery.rb +4 -4
- data/lib/taskjuggler/SheetHandlerBase.rb +14 -12
- data/lib/taskjuggler/SheetReceiver.rb +17 -15
- data/lib/taskjuggler/SheetSender.rb +16 -10
- data/{spec/support → lib/taskjuggler}/StdIoWrapper.rb +17 -0
- data/lib/taskjuggler/SyntaxReference.rb +2 -2
- data/lib/taskjuggler/TableColumnDefinition.rb +4 -3
- data/lib/taskjuggler/Task.rb +7 -2
- data/lib/taskjuggler/TaskJuggler.rb +74 -0
- data/lib/taskjuggler/TaskScenario.rb +62 -83
- data/lib/taskjuggler/TextParser.rb +20 -13
- data/lib/taskjuggler/TextParser/Scanner.rb +17 -1
- data/lib/taskjuggler/TimeSheetSummary.rb +9 -5
- data/lib/taskjuggler/TimeSheets.rb +6 -1
- data/lib/taskjuggler/Tj3AppBase.rb +41 -18
- data/lib/taskjuggler/Tj3Config.rb +1 -1
- data/lib/taskjuggler/TjTime.rb +6 -1
- data/lib/taskjuggler/TjpSyntaxRules.rb +408 -227
- data/lib/taskjuggler/UTF8String.rb +10 -0
- data/lib/taskjuggler/UserManual.rb +89 -81
- data/lib/taskjuggler/WorkingHours.rb +2 -3
- data/lib/taskjuggler/XMLDocument.rb +13 -4
- data/lib/taskjuggler/XMLElement.rb +31 -3
- data/lib/taskjuggler/apps/Tj3.rb +53 -21
- data/lib/taskjuggler/apps/Tj3Client.rb +19 -17
- data/lib/taskjuggler/apps/Tj3Daemon.rb +24 -21
- data/lib/taskjuggler/{Tj3Man.rb → apps/Tj3Man.rb} +2 -2
- data/lib/taskjuggler/apps/Tj3SsReceiver.rb +14 -11
- data/lib/taskjuggler/apps/Tj3SsSender.rb +17 -14
- data/lib/taskjuggler/apps/Tj3TsReceiver.rb +14 -11
- data/lib/taskjuggler/apps/Tj3TsSender.rb +16 -13
- data/lib/taskjuggler/apps/Tj3TsSummary.rb +16 -13
- data/lib/taskjuggler/reports/GanttChart.rb +1 -1
- data/lib/taskjuggler/reports/GanttRouter.rb +0 -2
- data/lib/taskjuggler/reports/GanttTaskBar.rb +2 -1
- data/lib/taskjuggler/reports/Navigator.rb +2 -1
- data/lib/taskjuggler/reports/NikuReport.rb +11 -7
- data/lib/taskjuggler/reports/ReportContext.rb +1 -0
- data/lib/taskjuggler/reports/StatusSheetReport.rb +7 -2
- data/lib/taskjuggler/reports/TableReport.rb +6 -4
- data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -0
- data/lib/taskjuggler/reports/TjpExportRE.rb +4 -4
- data/lib/tj3man.rb +1 -1
- data/manual/Day_To_Day_Juggling +134 -137
- data/manual/TaskJuggler_2x_Migration +39 -32
- data/manual/The_TaskJuggler_Syntax +6 -0
- data/prj_cfg.rb +2 -3
- data/spec/StatusSheets_spec.rb +314 -0
- data/spec/TimeSheets_spec.rb +237 -16
- data/spec/Tj3_spec.rb +1 -1
- data/spec/support/DaemonControl.rb +1 -1
- data/tasks/changelog.rake +13 -3
- data/tasks/manual.rake +1 -1
- data/test/TestSuite/CSV-Reports/refs/celltext.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/resourcereport.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/resourcereport_with_tasks.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/sortByTree.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/sortBy_effort.up.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/sortBy_plan.start.down.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/taskreport.csv +1 -1
- data/test/TestSuite/CSV-Reports/refs/taskreport_with_resources.csv +1 -1
- data/test/TestSuite/CSV-Reports/sortByTree.tjp +3 -1
- data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +4 -1
- data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +1 -1
- data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +4 -1
- data/test/TestSuite/CSV-Reports/taskreport.tjp +3 -1
- data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +3 -1
- data/test/TestSuite/CSV-Reports/weekly.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Account.tjp +25 -30
- data/test/TestSuite/Export-Reports/refs/AdoptedTasks.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Allocate-1.tjp +43 -72
- data/test/TestSuite/Export-Reports/refs/Alternative.tjp +17 -22
- data/test/TestSuite/Export-Reports/refs/AutoID.tjp +11 -10
- data/test/TestSuite/Export-Reports/refs/AutoMacros.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Booking.tjp +16 -23
- data/test/TestSuite/Export-Reports/refs/Caption.tjp +13 -16
- data/test/TestSuite/Export-Reports/refs/Celltext.tjp +12 -16
- data/test/TestSuite/Export-Reports/refs/Comments.tjp +15 -19
- data/test/TestSuite/Export-Reports/refs/Complete.tjp +17 -26
- data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
- data/test/TestSuite/Export-Reports/refs/Currencyformat.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/CustomAttributes.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Depends1.tjp +5 -4
- data/test/TestSuite/Export-Reports/refs/Durations.tjp +18 -27
- data/test/TestSuite/Export-Reports/refs/Efficiency.tjp +21 -20
- data/test/TestSuite/Export-Reports/refs/EnvVar.tjp +21 -0
- data/test/TestSuite/Export-Reports/refs/Flags.tjp +6 -5
- data/test/TestSuite/Export-Reports/refs/Gap.tjp +2 -1
- data/test/TestSuite/Export-Reports/refs/HtmlTaskReport.tjp +15 -19
- data/test/TestSuite/Export-Reports/refs/Include.tjp +21 -20
- data/test/TestSuite/Export-Reports/refs/Journal.tjp +6 -5
- data/test/TestSuite/Export-Reports/refs/Limits-1.tjp +92 -140
- data/test/TestSuite/Export-Reports/refs/LoadUnits.tjp +293 -566
- data/test/TestSuite/Export-Reports/refs/LogicalExpression.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/LogicalFunction.tjp +17 -22
- data/test/TestSuite/Export-Reports/refs/Macro-1.tjp +32 -53
- data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Macro-3.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Manager.tjp +51 -50
- data/test/TestSuite/Export-Reports/refs/Mandatory.tjp +22 -31
- data/test/TestSuite/Export-Reports/refs/Milestone.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/MinMax.tjp +2 -1
- data/test/TestSuite/Export-Reports/refs/Niku.tjp +80 -139
- data/test/TestSuite/Export-Reports/refs/Numberformat.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Period.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Persistent.tjp +17 -21
- data/test/TestSuite/Export-Reports/refs/Precedes1.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Priority.tjp +121 -107
- data/test/TestSuite/Export-Reports/refs/Project.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/ProjectIDs.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Query.tjp +17 -26
- data/test/TestSuite/Export-Reports/refs/Reports.tjp +42 -61
- data/test/TestSuite/Export-Reports/refs/Resource.tjp +21 -20
- data/test/TestSuite/Export-Reports/refs/ResourcePrefix.tjp +16 -20
- data/test/TestSuite/Export-Reports/refs/ResourceRoot.tjp +36 -35
- data/test/TestSuite/Export-Reports/refs/Responsible.tjp +17 -21
- data/test/TestSuite/Export-Reports/refs/RollupResource.tjp +36 -35
- data/test/TestSuite/Export-Reports/refs/Scenario.tjp +3 -1
- data/test/TestSuite/Export-Reports/refs/Scheduling.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Select.tjp +29 -43
- data/test/TestSuite/Export-Reports/refs/Shift.tjp +12 -11
- data/test/TestSuite/Export-Reports/refs/Simple.tjp +15 -19
- data/test/TestSuite/Export-Reports/refs/StatusSheet.tjp +33 -47
- data/test/TestSuite/Export-Reports/refs/String.tjp +9 -10
- data/test/TestSuite/Export-Reports/refs/Supplement.tjp +7 -8
- data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +10 -11
- data/test/TestSuite/Export-Reports/refs/TaskRoot.tjp +10 -9
- data/test/TestSuite/Export-Reports/refs/TimeFrame.tjp +9 -9
- data/test/TestSuite/Export-Reports/refs/TimeSheet1.tjp +25 -37
- data/test/TestSuite/Export-Reports/refs/Timezone.tjp +1 -0
- data/test/TestSuite/Export-Reports/refs/Vacation.tjp +26 -25
- data/test/TestSuite/Export-Reports/refs/tutorial.tjp +453 -821
- data/test/TestSuite/HTML-Reports/Alerts.html +160 -412
- data/test/TestSuite/HTML-Reports/CellText.html +758 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +245 -0
- data/test/TestSuite/HTML-Reports/Query.html +31 -0
- data/test/TestSuite/HTML-Reports/css/tjmanual.css +0 -20
- data/test/TestSuite/HTML-Reports/css/tjreport.css +6 -7
- data/test/TestSuite/HTML-Reports/depArrows.html +851 -0
- data/test/TestSuite/HTML-Reports/profile.html +37581 -0
- data/test/TestSuite/{ReportGenerator/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +27 -3
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions3.tjp +20 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions4.tjp +16 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/DependencyList-1.csv +4 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-2.csv +8 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions3-1.csv +4 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions4-1.csv +2 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +3 -1
- data/test/TestSuite/Scheduler/Correct/Booking.tjp +8 -7
- data/test/TestSuite/Scheduler/Correct/Booking2.tjp +16 -9
- data/test/TestSuite/Scheduler/Correct/Booking3.tjp +28 -0
- data/test/TestSuite/Scheduler/Correct/Container.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Depends.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +4 -4
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +3 -1
- data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/MultipleMandatories.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +7 -7
- data/test/TestSuite/Scheduler/Correct/Scenarios.tjp +2 -2
- data/test/TestSuite/Scheduler/Correct/Shift.tjp +7 -5
- data/test/TestSuite/Scheduler/Correct/Shift2.tjp +1 -1
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +5 -2
- data/test/TestSuite/Scheduler/Errors/booking_no_duty.tjp +1 -1
- data/test/TestSuite/Scheduler/Errors/ts_alert1_more_details.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_alert2_more_details.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_expected_end.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_headline1.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_rem_or_end.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_remaining.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_status_work.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_no_work.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_res_new_task.tjp +5 -2
- data/test/TestSuite/Scheduler/Errors/ts_work_too_high.tjp +4 -2
- data/test/TestSuite/Scheduler/Errors/ts_work_too_low.tjp +4 -2
- data/test/TestSuite/StatusSheets/dev2.tji +22 -0
- data/test/TestSuite/StatusSheets/run +1 -1
- data/test/TestSuite/Syntax/Correct/Booking.tjp +0 -5
- data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
- data/test/TestSuite/Syntax/Correct/EnvVar.tjp +12 -0
- data/test/TestSuite/Syntax/Correct/Freeze.tjp +1 -3
- data/test/TestSuite/Syntax/Correct/Limits-1.tjp +9 -5
- data/test/TestSuite/Syntax/Correct/Priority.tjp +22 -11
- data/test/TestSuite/Syntax/Correct/Scenario.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +2 -0
- data/test/TestSuite/Syntax/Correct/TimeSheet1.tjp +4 -4
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +20 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +7 -6
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/no_own_resource_booking.tjp +16 -0
- data/test/TestSuite/Syntax/Errors/no_own_task_booking.tjp +16 -0
- data/test/TestSuite/Syntax/Errors/resourceroot_leaf.tjp +10 -0
- data/test/TestSuite/Syntax/Errors/runaway_token.tjp +8 -0
- data/test/TestSuite/Syntax/Errors/sorting_bsi.tjp +11 -0
- data/test/TestSuite/Syntax/Errors/ss_no_tracking_scenario.tjp +14 -0
- data/test/TestSuite/Syntax/Errors/taskroot_leaf.tjp +8 -0
- data/test/TestSuite/Syntax/Errors/ts_bad_priority.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_default_details.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_default_summary.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_duplicate_task.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_end_too_early.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_headline_too_long.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_no_headline2.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/ts_no_tracking_scenario.tjp +14 -0
- data/test/TestSuite/Syntax/Errors/ts_summary_too_long.tjp +4 -2
- data/test/TestSuite/Syntax/Errors/unknown_env_var.tjp +7 -0
- data/test/TestSuite/TimeSheets/resrep.tji +7 -0
- data/test/TestSuite/TimeSheets/ts.tji +351 -0
- data/test/TestSuite/TimeSheets/tsdef.tji +2 -0
- data/test/test_Export-Reports.rb +3 -0
- data/test/test_Journal.rb +4 -4
- data/test/test_PropertySet.rb +5 -5
- data/test/test_Syntax.rb +3 -0
- data/test/test_WorkingHours.rb +11 -18
- metadata +1012 -649
- data/lib/exchangebug.rb +0 -42
- data/lib/ruby-signal-bug.rb +0 -55
- data/spec/tj3client.log +0 -23
- data/test/TestSuite/CSV-Reports/alert.tjp +0 -9
- data/test/TestSuite/CSV-Reports/refs/alert.csv +0 -15
- data/test/TestSuite/Export-Reports/refs/CriticalPath.tjp +0 -41
- data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -89
- data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -79
- data/test/TestSuite/HTML-Reports/TimeSheet.html +0 -79
- data/test/TestSuite/HTML-Reports/reference.html +0 -51
- data/test/TestSuite/ReportGenerator/Correct/Alerts-1.csv +0 -1
- data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -78
- data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -6
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +0 -66
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +0 -413
- data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes-1.csv +0 -2
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +0 -2
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +0 -26
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +0 -2
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +0 -86
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +0 -413
- 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/StatusSheetTemplates/project.tji +0 -35
- data/test/TestSuite/StatusSheetTemplates/project.tjp +0 -56
- data/test/TestSuite/StatusSheets/TimeSheets/2002-03-01/resource1_2002-03-01.tji +0 -0
- data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +0 -33
- data/test/TestSuite/Syntax/Correct/DST.tjp +0 -11
- data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
- data/test/TestSuite/Syntax/Correct/niku.xml +0 -30
- data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +0 -11
- data/test/TestSuite/TimeSheets/uu.txt +0 -29
|
@@ -1248,12 +1248,12 @@ class TaskJuggler
|
|
|
1248
1248
|
a('startsuccs').each do |task, onEnd|
|
|
1249
1249
|
if onEnd
|
|
1250
1250
|
date = task['end', query.scenarioIdx].to_s(query.timeFormat)
|
|
1251
|
-
dep "[->]"
|
|
1251
|
+
dep = "[->]"
|
|
1252
1252
|
else
|
|
1253
1253
|
date = task['start', query.scenarioIdx].to_s(query.timeFormat)
|
|
1254
|
-
dep "[->["
|
|
1254
|
+
dep = "[->["
|
|
1255
1255
|
end
|
|
1256
|
-
list << generateDepencyListItem(query
|
|
1256
|
+
list << generateDepencyListItem(query, task, dep, date)
|
|
1257
1257
|
end
|
|
1258
1258
|
# Than add the tasks that depend on the end of this task.
|
|
1259
1259
|
a('endsuccs').each do |task, onEnd|
|
|
@@ -1264,7 +1264,7 @@ class TaskJuggler
|
|
|
1264
1264
|
date = task['start', query.scenarioIdx].to_s(query.timeFormat)
|
|
1265
1265
|
dep = "]->["
|
|
1266
1266
|
end
|
|
1267
|
-
list << generateDepencyListItem(query
|
|
1267
|
+
list << generateDepencyListItem(query, task, dep, date)
|
|
1268
1268
|
end
|
|
1269
1269
|
|
|
1270
1270
|
query.assignList(list)
|
|
@@ -1282,7 +1282,7 @@ class TaskJuggler
|
|
|
1282
1282
|
date = task['start', query.scenarioIdx].to_s(query.timeFormat)
|
|
1283
1283
|
dep = "[->["
|
|
1284
1284
|
end
|
|
1285
|
-
list << generateDepencyListItem(query
|
|
1285
|
+
list << generateDepencyListItem(query, task, dep, date)
|
|
1286
1286
|
end
|
|
1287
1287
|
# Than add the tasks that depend on the end of this task.
|
|
1288
1288
|
a('endpreds').each do |task, onEnd|
|
|
@@ -1293,7 +1293,7 @@ class TaskJuggler
|
|
|
1293
1293
|
date = task['start', query.scenarioIdx].to_s(query.timeFormat)
|
|
1294
1294
|
dep = "[->]"
|
|
1295
1295
|
end
|
|
1296
|
-
list << generateDepencyListItem(query
|
|
1296
|
+
list << generateDepencyListItem(query, task, dep, date)
|
|
1297
1297
|
end
|
|
1298
1298
|
|
|
1299
1299
|
query.assignList(list)
|
|
@@ -1308,19 +1308,16 @@ class TaskJuggler
|
|
|
1308
1308
|
a('assignedresources').each do |resource|
|
|
1309
1309
|
if resource.allocated?(@scenarioIdx,
|
|
1310
1310
|
Interval.new(query.start, query.end), @property)
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
list << "#{resource.fullId}: #{resource.name}"
|
|
1311
|
+
if query.listItem
|
|
1312
|
+
rti = RichText.new(query.listItem, RTFHandlers.create(@project),
|
|
1313
|
+
@project.messageHandler).
|
|
1314
|
+
generateIntermediateFormat
|
|
1315
|
+
q = query.dup
|
|
1316
|
+
q.property = resource
|
|
1317
|
+
rti.setQuery(q)
|
|
1318
|
+
list << "<nowiki>#{rti.to_s}</nowiki>"
|
|
1320
1319
|
else
|
|
1321
|
-
|
|
1322
|
-
"Unsupported list mode #{query.listMode} used for " +
|
|
1323
|
-
"resources column.")
|
|
1320
|
+
list << "<nowiki>#{resource.name} (#{resource.fullId})</nowiki>"
|
|
1324
1321
|
end
|
|
1325
1322
|
end
|
|
1326
1323
|
end
|
|
@@ -1359,7 +1356,7 @@ class TaskJuggler
|
|
|
1359
1356
|
['seqno', true, -1 ]])
|
|
1360
1357
|
inputList.sort!
|
|
1361
1358
|
|
|
1362
|
-
query.assignList(generateTaskList(inputList, query
|
|
1359
|
+
query.assignList(generateTaskList(inputList, query))
|
|
1363
1360
|
end
|
|
1364
1361
|
|
|
1365
1362
|
def query_targets(query)
|
|
@@ -1370,7 +1367,7 @@ class TaskJuggler
|
|
|
1370
1367
|
['seqno', true, -1 ]])
|
|
1371
1368
|
targetList.sort!
|
|
1372
1369
|
|
|
1373
|
-
query.assignList(generateTaskList(targetList, query
|
|
1370
|
+
query.assignList(generateTaskList(targetList, query))
|
|
1374
1371
|
end
|
|
1375
1372
|
|
|
1376
1373
|
|
|
@@ -1647,14 +1644,13 @@ class TaskJuggler
|
|
|
1647
1644
|
|
|
1648
1645
|
def bookResources(date, slotDuration)
|
|
1649
1646
|
# If there are no allocations defined, we can't do any bookings.
|
|
1650
|
-
# In projection mode we do not allow
|
|
1651
|
-
#
|
|
1652
|
-
#
|
|
1647
|
+
# In projection mode we do not allow allocations prior to the current
|
|
1648
|
+
# date. If the scenario is not scheduled in projection mode, this
|
|
1649
|
+
# restriction only applies to tasks with bookings.
|
|
1653
1650
|
if a('allocate').empty? ||
|
|
1654
|
-
(@project.scenario(@scenarioIdx).get('projection')
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
a('assignedresources').empty?))
|
|
1651
|
+
((@project.scenario(@scenarioIdx).get('projection') ||
|
|
1652
|
+
!a('booking').empty?) &&
|
|
1653
|
+
date < @project['now'])
|
|
1658
1654
|
return
|
|
1659
1655
|
end
|
|
1660
1656
|
|
|
@@ -1805,7 +1801,7 @@ class TaskJuggler
|
|
|
1805
1801
|
def bookBookings
|
|
1806
1802
|
scheduled = a('scheduled')
|
|
1807
1803
|
slotDuration = @project['scheduleGranularity']
|
|
1808
|
-
|
|
1804
|
+
findBookings.each do |booking|
|
|
1809
1805
|
unless booking.resource.leaf?
|
|
1810
1806
|
error('booking_resource_not_leaf',
|
|
1811
1807
|
"Booked resources may not be group resources",
|
|
@@ -2306,71 +2302,54 @@ class TaskJuggler
|
|
|
2306
2302
|
amount
|
|
2307
2303
|
end
|
|
2308
2304
|
|
|
2309
|
-
def generateDepencyListItem(
|
|
2310
|
-
|
|
2311
|
-
|
|
2312
|
-
|
|
2313
|
-
|
|
2314
|
-
|
|
2315
|
-
|
|
2316
|
-
|
|
2317
|
-
|
|
2318
|
-
|
|
2319
|
-
|
|
2320
|
-
|
|
2321
|
-
|
|
2322
|
-
when 6
|
|
2323
|
-
"#{task.name} #{dep}"
|
|
2324
|
-
when 7
|
|
2325
|
-
"#{task.name} (#{task.fullId}) #{dep}"
|
|
2326
|
-
when 8
|
|
2327
|
-
"#{task.fullId}: #{task.name} #{dep}"
|
|
2328
|
-
when 9
|
|
2329
|
-
"#{task.fullId}"
|
|
2330
|
-
when 10
|
|
2331
|
-
"#{task.name}"
|
|
2332
|
-
when 11
|
|
2333
|
-
"#{task.name} (#{task.fullId})"
|
|
2334
|
-
when 12
|
|
2335
|
-
"#{task.fullId}: #{task.name}"
|
|
2336
|
-
else
|
|
2337
|
-
error('bad_listmode_deps',
|
|
2338
|
-
"Unsupported list mode #{query.listMode} used for " +
|
|
2339
|
-
"dependency column. Use 1 - 12.")
|
|
2340
|
-
end
|
|
2341
|
-
|
|
2342
|
-
"* <nowiki>#{str}</nowiki>"
|
|
2305
|
+
def generateDepencyListItem(query, task, dep, date)
|
|
2306
|
+
if query.listItem
|
|
2307
|
+
rti = RichText.new(query.listItem, RTFHandlers.create(@project),
|
|
2308
|
+
@project.messageHandler).generateIntermediateFormat
|
|
2309
|
+
q = query.dup
|
|
2310
|
+
q.property = task
|
|
2311
|
+
q.setCustomData('dependency', { :string => dep })
|
|
2312
|
+
q.setCustomData('date', { :string => date })
|
|
2313
|
+
rti.setQuery(q)
|
|
2314
|
+
"<nowiki>#{rti.to_s}</nowiki>"
|
|
2315
|
+
else
|
|
2316
|
+
"<nowiki>#{task.name} (#{task.fullId}) #{dep} #{date}</nowiki>"
|
|
2317
|
+
end
|
|
2343
2318
|
end
|
|
2344
2319
|
|
|
2345
|
-
def generateTaskList(taskList,
|
|
2320
|
+
def generateTaskList(taskList, query)
|
|
2346
2321
|
list = []
|
|
2347
2322
|
taskList.each do |task|
|
|
2348
|
-
date = task['start', @scenarioIdx].
|
|
2349
|
-
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2353
|
-
|
|
2354
|
-
|
|
2355
|
-
|
|
2356
|
-
|
|
2357
|
-
list << "
|
|
2358
|
-
when 5
|
|
2359
|
-
list << "#{task.fullId} (#{date})"
|
|
2360
|
-
when 6
|
|
2361
|
-
list << "#{task.name} (#{date})"
|
|
2362
|
-
when 7, nil
|
|
2363
|
-
list << "#{task.name} (#{task.fullId}) #{date}"
|
|
2364
|
-
when 8
|
|
2365
|
-
list << "#{task.fullId}: #{task.name} #{date}"
|
|
2323
|
+
date = task['start', @scenarioIdx].
|
|
2324
|
+
to_s(@property.project['timeFormat'])
|
|
2325
|
+
if query.listItem
|
|
2326
|
+
rti = RichText.new(query.listItem, RTFHandlers.create(@project),
|
|
2327
|
+
@project.messageHandler).generateIntermediateFormat
|
|
2328
|
+
q = query.dup
|
|
2329
|
+
q.property = task
|
|
2330
|
+
q.setCustomData('date', { :string => date })
|
|
2331
|
+
rti.setQuery(q)
|
|
2332
|
+
list << "<nowiki>#{rti.to_s}</nowiki>"
|
|
2366
2333
|
else
|
|
2367
|
-
|
|
2368
|
-
"Bad listmode #{mode}. Use 1 - 8.")
|
|
2334
|
+
list << "<nowiki>#{task.name} (#{task.fullId}) #{date}</nowiki>"
|
|
2369
2335
|
end
|
|
2370
2336
|
end
|
|
2371
2337
|
list
|
|
2372
2338
|
end
|
|
2373
2339
|
|
|
2340
|
+
def findBookings
|
|
2341
|
+
# Map the index back to the Scenario object.
|
|
2342
|
+
scenario = @property.project.scenario(@scenarioIdx)
|
|
2343
|
+
# Check if the current scenario should inherit its bookings from the
|
|
2344
|
+
# parent. If so, redirect 'scenario' to the parent. The top-level
|
|
2345
|
+
# scenario can never inherit bookings.
|
|
2346
|
+
while !scenario.get('ownbookings') do
|
|
2347
|
+
scenario = scenario.parent
|
|
2348
|
+
end
|
|
2349
|
+
# Return the bookings of the found scenario.
|
|
2350
|
+
@property['booking', @property.project.scenarioIdx(scenario)]
|
|
2351
|
+
end
|
|
2352
|
+
|
|
2374
2353
|
end
|
|
2375
2354
|
|
|
2376
2355
|
end
|
|
@@ -278,18 +278,20 @@ class TaskJuggler
|
|
|
278
278
|
transition = state.transition(token = getNextToken)
|
|
279
279
|
end
|
|
280
280
|
|
|
281
|
+
# If we have looped-back we need to finish the pattern first. Final
|
|
282
|
+
# tokens of repeatable rules do have transitions!
|
|
283
|
+
if transition && transition.loopBack
|
|
284
|
+
finishPattern(token)
|
|
285
|
+
transition = state.transition(token = getNextToken)
|
|
286
|
+
end
|
|
287
|
+
|
|
281
288
|
if transition
|
|
282
|
-
# Shift: This for normal state transitions. This may be from one
|
|
283
|
-
# token of a pattern to the next token of the same pattern
|
|
284
|
-
# start of a new pattern
|
|
285
|
-
#
|
|
286
|
-
# process next.
|
|
289
|
+
# Shift: This is for normal state transitions. This may be from one
|
|
290
|
+
# token of a pattern to the next token of the same pattern or to the
|
|
291
|
+
# start of a new pattern. The transition tells us what state we have
|
|
292
|
+
# to process next.
|
|
287
293
|
state = transition.state
|
|
288
294
|
|
|
289
|
-
# If we have looped-back we need to finish the pattern first. Final
|
|
290
|
-
# tokens of repeatable rules do have transitions!
|
|
291
|
-
finishPattern(token) if transition.loopBack
|
|
292
|
-
|
|
293
295
|
# Transitions that enter rules generate states which we need to
|
|
294
296
|
# resume at when a rule has been completely processed. We push this
|
|
295
297
|
# list of states on the @stack.
|
|
@@ -338,9 +340,9 @@ class TaskJuggler
|
|
|
338
340
|
error("no_reduce",
|
|
339
341
|
"Unexpected token '#{token[1]}' found. " +
|
|
340
342
|
"Expecting one of " +
|
|
341
|
-
"#{@stack.last.state.expectedTokens.join(', ')}"
|
|
343
|
+
"#{@stack.last.state.expectedTokens.join(', ')}",
|
|
344
|
+
@scanner.sourceFileInfo)
|
|
342
345
|
end
|
|
343
|
-
returnToken(token) if token
|
|
344
346
|
if finishPattern(token)
|
|
345
347
|
# Accept: We're done with parsing.
|
|
346
348
|
break
|
|
@@ -353,13 +355,17 @@ class TaskJuggler
|
|
|
353
355
|
end
|
|
354
356
|
|
|
355
357
|
def finishPattern(token)
|
|
358
|
+
# The method to finish this pattern may include another file or change
|
|
359
|
+
# the parser rules. Therefor we have to return the token to the scanner.
|
|
360
|
+
returnToken(token) if token
|
|
361
|
+
|
|
356
362
|
#dumpStack
|
|
357
363
|
# To finish a pattern we need to pop the StackElement with the token
|
|
358
364
|
# values from the stack.
|
|
359
365
|
stackEntry = @stack.pop
|
|
360
366
|
if stackEntry.nil? || @stack.empty?
|
|
361
367
|
# Check if we have reached the bottom of the stack.
|
|
362
|
-
token = getNextToken
|
|
368
|
+
token = getNextToken
|
|
363
369
|
if token[0] == :endOfText
|
|
364
370
|
# If the token is the end of the top-level file, we're done. We push
|
|
365
371
|
# back the StackEntry since it holds the overall result of the
|
|
@@ -371,7 +377,8 @@ class TaskJuggler
|
|
|
371
377
|
# rules.
|
|
372
378
|
error('unexpctd_token', "Unexpected token '#{token[1]}' found. " +
|
|
373
379
|
"Expecting one of " +
|
|
374
|
-
"#{stackEntry.state.expectedTokens.join(', ')}"
|
|
380
|
+
"#{stackEntry.state.expectedTokens.join(', ')}",
|
|
381
|
+
@scanner.sourceFileInfo)
|
|
375
382
|
end
|
|
376
383
|
# Memorize if the rule for this pattern was repeatable. Then we will
|
|
377
384
|
# store the result of the pattern in an Array.
|
|
@@ -67,12 +67,18 @@ class TaskJuggler::TextParser
|
|
|
67
67
|
@stream = nil
|
|
68
68
|
end
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
# Inject the String _text_ into the input stream at the current cursor
|
|
71
|
+
# position.
|
|
72
|
+
def injectText(text)
|
|
71
73
|
pos = @scanner.pos
|
|
72
74
|
@nextMacroEnd = pos + text.length
|
|
73
75
|
@line = @line[0, pos] + text + @line[pos..-1]
|
|
74
76
|
@scanner = StringScanner.new(@line)
|
|
75
77
|
@scanner.pos = pos
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def injectMacro(macro, args, text)
|
|
81
|
+
injectText(text)
|
|
76
82
|
|
|
77
83
|
# Simple detection for recursive macro calls.
|
|
78
84
|
return false if @macroStack.length > 20
|
|
@@ -213,6 +219,8 @@ class TaskJuggler::TextParser
|
|
|
213
219
|
@patternsByMode = { }
|
|
214
220
|
# The currently active scanner mode.
|
|
215
221
|
@scannerMode = nil
|
|
222
|
+
# The mode that the scanner is in at the start and end of file
|
|
223
|
+
@defaultMode = defaultMode
|
|
216
224
|
# Points to the currently active pattern set as defined by the mode.
|
|
217
225
|
@activePatterns = nil
|
|
218
226
|
|
|
@@ -402,6 +410,14 @@ class TaskJuggler::TextParser
|
|
|
402
410
|
@activePatterns.each do |type, re, postProc|
|
|
403
411
|
if (match = @cf.scan(re))
|
|
404
412
|
if match == :scannerEOF
|
|
413
|
+
if @scannerMode != @defaultMode
|
|
414
|
+
# The stream resets the line number to 1. Since we still
|
|
415
|
+
# know the start of the token, we setup @lineDelta so that
|
|
416
|
+
# sourceFileInfo() returns the proper line number.
|
|
417
|
+
@lineDelta = -(@startOfToken.lineNo - 1)
|
|
418
|
+
error('runaway_token',
|
|
419
|
+
"Unterminated token starting at #{@startOfToken}")
|
|
420
|
+
end
|
|
405
421
|
# We've found the end of an input file. Return a special token
|
|
406
422
|
# that describes the end of a file.
|
|
407
423
|
@finishLastFile = true
|
|
@@ -158,12 +158,16 @@ EOT
|
|
|
158
158
|
warnings = nil
|
|
159
159
|
begin
|
|
160
160
|
# Save a copy of the sheet for debugging purposes.
|
|
161
|
-
command =
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
warnings = stderr.read
|
|
161
|
+
command = [ '--unsafe', "--silent", "check-ts", @projectId,
|
|
162
|
+
sheetFile ]
|
|
163
|
+
res = stdIoWrapper do
|
|
164
|
+
Tj3Client.new.main(command)
|
|
166
165
|
end
|
|
166
|
+
if res.returnValue != 0
|
|
167
|
+
error("summary sheets: #{err}")
|
|
168
|
+
end
|
|
169
|
+
report = res.stdOut
|
|
170
|
+
warnings = res.stdErr
|
|
167
171
|
rescue
|
|
168
172
|
fatal("Cannot summarize sheet: #{$!}")
|
|
169
173
|
end
|
|
@@ -284,7 +284,12 @@ class TaskJuggler
|
|
|
284
284
|
totalSlots += record.work
|
|
285
285
|
end
|
|
286
286
|
|
|
287
|
-
|
|
287
|
+
unless (scenarioIdx = @resource.project['trackingScenarioIdx'])
|
|
288
|
+
error('ts_no_tracking_scenario',
|
|
289
|
+
'No trackingscenario has been defined.')
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
if @resource['efficiency', scenarioIdx] > 0.0
|
|
288
293
|
targetSlots = totalNetWorkingSlots
|
|
289
294
|
# This is acceptable rounding error when checking the total reported
|
|
290
295
|
# work.
|
|
@@ -20,6 +20,9 @@ require 'taskjuggler/TextFormatter'
|
|
|
20
20
|
|
|
21
21
|
class TaskJuggler
|
|
22
22
|
|
|
23
|
+
class TjRuntimeError < RuntimeError
|
|
24
|
+
end
|
|
25
|
+
|
|
23
26
|
class Tj3AppBase
|
|
24
27
|
|
|
25
28
|
def initialize
|
|
@@ -31,6 +34,7 @@ class TaskJuggler
|
|
|
31
34
|
@silent = false
|
|
32
35
|
@configFile = nil
|
|
33
36
|
@mandatoryArgs = ''
|
|
37
|
+
@mininumRubyVersion = '1.9.2'
|
|
34
38
|
end
|
|
35
39
|
|
|
36
40
|
def processArguments(argv)
|
|
@@ -83,28 +87,47 @@ class TaskJuggler
|
|
|
83
87
|
end
|
|
84
88
|
|
|
85
89
|
def main(argv = ARGV)
|
|
90
|
+
if Gem::Version.new(RUBY_VERSION.dup) <
|
|
91
|
+
Gem::Version.new(@mininumRubyVersion)
|
|
92
|
+
error('This program requires at least Ruby version ' +
|
|
93
|
+
"#{@mininumRubyVersion}!")
|
|
94
|
+
end
|
|
95
|
+
|
|
86
96
|
# Install signal handler to exit gracefully on CTRL-C.
|
|
87
97
|
intHandler = Kernel.trap('INT') do
|
|
88
|
-
error("
|
|
98
|
+
error("Aborting on user request!")
|
|
89
99
|
end
|
|
90
100
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
101
|
+
begin
|
|
102
|
+
args = processArguments(argv)
|
|
103
|
+
|
|
104
|
+
# If DEBUG mode has been enabled, we restore the INT trap handler again
|
|
105
|
+
# to get Ruby backtrackes.
|
|
106
|
+
Kernel.trap('INT', intHandler) if $DEBUG
|
|
107
|
+
|
|
108
|
+
unless @silent
|
|
109
|
+
puts "#{AppConfig.softwareName} v#{AppConfig.version} - " +
|
|
110
|
+
"#{AppConfig.packageInfo}\n\n" +
|
|
111
|
+
"Copyright (c) #{AppConfig.copyright.join(', ')}\n" +
|
|
112
|
+
" by #{AppConfig.authors.join(', ')}\n\n" +
|
|
113
|
+
"#{AppConfig.license}\n"
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
@rc = RuntimeConfig.new(AppConfig.packageName, @configFile)
|
|
117
|
+
|
|
118
|
+
appMain(args)
|
|
119
|
+
rescue Exception => e
|
|
120
|
+
if e.is_a?(SystemExit) || e.is_a?(Interrupt)
|
|
121
|
+
# Don't show backtrace on user interrupt unless we are in debug mode.
|
|
122
|
+
$stderr.puts e.backtrace.join("\n") if $DEBUG
|
|
123
|
+
1
|
|
124
|
+
else
|
|
125
|
+
error("Ups, you have triggered a bug in #{AppConfig.softwareName}!\n" +
|
|
126
|
+
"#{e}\n" +
|
|
127
|
+
e.backtrace.join("\n") +
|
|
128
|
+
"Please see the user manual on how to get this bug fixed!")
|
|
129
|
+
end
|
|
103
130
|
end
|
|
104
|
-
|
|
105
|
-
@rc = RuntimeConfig.new(AppConfig.packageName, @configFile)
|
|
106
|
-
|
|
107
|
-
args
|
|
108
131
|
end
|
|
109
132
|
|
|
110
133
|
private
|
|
@@ -114,7 +137,7 @@ class TaskJuggler
|
|
|
114
137
|
end
|
|
115
138
|
|
|
116
139
|
def error(message, exitVal = 1)
|
|
117
|
-
$stderr.puts "
|
|
140
|
+
$stderr.puts "\nERROR: #{message}"
|
|
118
141
|
exit exitVal
|
|
119
142
|
end
|
|
120
143
|
|