taskjuggler 0.1.1 → 0.2.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 +37 -5
- data/README.rdoc +4 -2
- data/benchmarks/UTF-8-Strings.rb +58 -0
- data/benchmarks/css/tjmanual.css +0 -1
- data/benchmarks/htmltaskreport-1.html +47702 -0
- data/benchmarks/htmltaskreport-2.html +23345 -0
- data/benchmarks/htmltaskreport-3.html +23265 -0
- data/benchmarks/htmltaskreport-4.html +22135 -0
- data/benchmarks/profile.clt +36082 -0
- data/benchmarks/tj3.profile +0 -0
- data/benchmarks/tj3.profile.grind +6185 -0
- data/benchmarks/tj3.profile.symbols +432 -0
- data/benchmarks/tj3.profile.txt +448 -0
- data/data/tjp.vim +689 -0
- data/doc/AppConfig.html +26 -2
- data/doc/CHANGELOG.html +60 -8
- data/doc/COPYING.html +26 -2
- data/doc/Diff/Hunk.html +26 -2
- data/doc/Diff.html +26 -2
- data/doc/Diffable.html +26 -2
- data/doc/DiffableString.html +26 -2
- data/doc/Object.html +26 -104
- data/doc/README_rdoc.html +39 -7
- data/doc/RuntimeConfig.html +26 -2
- data/doc/String.html +26 -2
- data/doc/TaskJuggler/Account.html +27 -3
- data/doc/TaskJuggler/AccountAttribute.html +30 -6
- data/doc/TaskJuggler/AccountScenario.html +28 -4
- data/doc/TaskJuggler/Allocation.html +33 -9
- data/doc/TaskJuggler/AllocationAttribute.html +31 -7
- data/doc/TaskJuggler/AttributeBase.html +162 -111
- data/doc/TaskJuggler/AttributeDefinition.html +26 -2
- data/doc/TaskJuggler/AttributeOverwrite.html +26 -2
- data/doc/TaskJuggler/BatchProcessor.html +26 -2
- data/doc/TaskJuggler/Booking.html +29 -5
- data/doc/TaskJuggler/BookingListAttribute.html +29 -5
- data/doc/TaskJuggler/BooleanAttribute.html +30 -6
- data/doc/TaskJuggler/CSVFile.html +26 -2
- data/doc/TaskJuggler/CellSettingPattern.html +26 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -2
- data/doc/TaskJuggler/Charge.html +30 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +29 -5
- data/doc/TaskJuggler/ChargeSet.html +26 -2
- data/doc/TaskJuggler/ChargeSetListAttribute.html +30 -6
- data/doc/TaskJuggler/CollisionDetector.html +26 -2
- data/doc/TaskJuggler/ColumnListAttribute.html +28 -4
- data/doc/TaskJuggler/ColumnTable.html +26 -2
- data/doc/TaskJuggler/Daemon.html +26 -2
- data/doc/TaskJuggler/DataCache.html +26 -2
- data/doc/TaskJuggler/DataCacheEntry.html +26 -2
- data/doc/TaskJuggler/DateAttribute.html +30 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +28 -4
- data/doc/TaskJuggler/DependencyListAttribute.html +30 -6
- data/doc/TaskJuggler/DurationAttribute.html +31 -7
- data/doc/TaskJuggler/FileList.html +26 -2
- data/doc/TaskJuggler/FileRecord.html +26 -2
- data/doc/TaskJuggler/FixnumAttribute.html +28 -4
- data/doc/TaskJuggler/FlagListAttribute.html +30 -6
- data/doc/TaskJuggler/FloatAttribute.html +29 -5
- data/doc/TaskJuggler/FormatListAttribute.html +29 -5
- data/doc/TaskJuggler/GanttChart.html +26 -2
- data/doc/TaskJuggler/GanttContainer.html +26 -2
- data/doc/TaskJuggler/GanttHeader.html +26 -2
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +26 -2
- data/doc/TaskJuggler/GanttLine.html +27 -3
- data/doc/TaskJuggler/GanttLoadStack.html +26 -2
- data/doc/TaskJuggler/GanttMilestone.html +26 -2
- data/doc/TaskJuggler/GanttRouter.html +26 -2
- data/doc/TaskJuggler/GanttTaskBar.html +26 -2
- data/doc/TaskJuggler/HTMLDocument.html +26 -2
- data/doc/TaskJuggler/HTMLElements.html +623 -0
- data/doc/TaskJuggler/HTMLGraphics.html +26 -2
- data/doc/TaskJuggler/ICalReport.html +864 -0
- data/doc/TaskJuggler/ICalendar/Component.html +969 -0
- data/doc/TaskJuggler/ICalendar/Event.html +742 -0
- data/doc/TaskJuggler/ICalendar/Journal.html +722 -0
- data/doc/TaskJuggler/ICalendar/Person.html +633 -0
- data/doc/TaskJuggler/ICalendar/Todo.html +789 -0
- data/doc/TaskJuggler/ICalendar.html +1035 -0
- data/doc/TaskJuggler/Interval.html +99 -172
- data/doc/TaskJuggler/IntervalList.html +31 -7
- data/doc/TaskJuggler/JobInfo.html +26 -2
- data/doc/TaskJuggler/Journal.html +26 -2
- data/doc/TaskJuggler/JournalEntry.html +26 -2
- data/doc/TaskJuggler/JournalEntryList.html +26 -2
- data/doc/TaskJuggler/KeywordArray.html +26 -2
- data/doc/TaskJuggler/KeywordDocumentation.html +26 -2
- data/doc/TaskJuggler/Limits/Limit.html +124 -49
- data/doc/TaskJuggler/Limits.html +139 -156
- data/doc/TaskJuggler/LimitsAttribute.html +39 -14
- data/doc/TaskJuggler/ListAttributeBase.html +35 -11
- data/doc/TaskJuggler/Log.html +26 -2
- data/doc/TaskJuggler/LogFile.html +26 -2
- data/doc/TaskJuggler/LogicalAttribute.html +26 -2
- data/doc/TaskJuggler/LogicalExpression.html +26 -2
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +35 -11
- data/doc/TaskJuggler/LogicalExpressionListAttribute.html +35 -11
- data/doc/TaskJuggler/LogicalFlag.html +26 -2
- data/doc/TaskJuggler/LogicalFunction.html +28 -4
- data/doc/TaskJuggler/LogicalOperation.html +26 -2
- data/doc/TaskJuggler/ManagerResponsibilities.html +26 -2
- data/doc/TaskJuggler/ManagerStatusRecord.html +26 -2
- data/doc/TaskJuggler/Message.html +26 -2
- data/doc/TaskJuggler/MessageHandler.html +108 -62
- data/doc/TaskJuggler/Navigator.html +26 -2
- data/doc/TaskJuggler/NavigatorElement.html +26 -2
- data/doc/TaskJuggler/NikuProject.html +26 -2
- data/doc/TaskJuggler/NikuReport.html +27 -3
- data/doc/TaskJuggler/NikuResource.html +26 -2
- data/doc/TaskJuggler/NodeListAttribute.html +31 -7
- data/doc/TaskJuggler/PlaceHolderCell.html +26 -2
- data/doc/TaskJuggler/ProcessIntercom.html +26 -2
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -2
- data/doc/TaskJuggler/Project.html +1236 -973
- data/doc/TaskJuggler/ProjectBroker.html +26 -2
- data/doc/TaskJuggler/ProjectBrokerIface.html +26 -2
- data/doc/TaskJuggler/ProjectFileParser.html +29 -4
- data/doc/TaskJuggler/ProjectFileScanner.html +56 -31
- data/doc/TaskJuggler/ProjectRecord.html +26 -2
- data/doc/TaskJuggler/ProjectServer.html +26 -2
- data/doc/TaskJuggler/ProjectServerIface.html +26 -2
- data/doc/TaskJuggler/PropertyAttribute.html +35 -11
- data/doc/TaskJuggler/PropertyList.html +26 -2
- data/doc/TaskJuggler/PropertySet.html +126 -106
- data/doc/TaskJuggler/PropertyTreeNode.html +595 -551
- data/doc/TaskJuggler/Query.html +127 -100
- data/doc/TaskJuggler/RTFHandlers.html +26 -2
- data/doc/TaskJuggler/RTFNavigator.html +26 -2
- data/doc/TaskJuggler/RTFQuery.html +28 -4
- data/doc/TaskJuggler/RTFReport.html +26 -2
- data/doc/TaskJuggler/RTFReportLink.html +26 -2
- data/doc/TaskJuggler/RTFWithQuerySupport.html +26 -2
- data/doc/TaskJuggler/RealFormat.html +26 -2
- data/doc/TaskJuggler/RealFormatAttribute.html +31 -7
- data/doc/TaskJuggler/ReferenceAttribute.html +58 -34
- data/doc/TaskJuggler/Report.html +427 -284
- data/doc/TaskJuggler/ReportBase.html +28 -102
- data/doc/TaskJuggler/ReportContext.html +26 -2
- data/doc/TaskJuggler/ReportScenario.html +633 -0
- data/doc/TaskJuggler/ReportServer.html +26 -2
- data/doc/TaskJuggler/ReportServerIface.html +26 -2
- data/doc/TaskJuggler/ReportServerRecord.html +26 -2
- data/doc/TaskJuggler/ReportServlet.html +26 -2
- data/doc/TaskJuggler/ReportTable.html +26 -2
- data/doc/TaskJuggler/ReportTableCell.html +26 -2
- data/doc/TaskJuggler/ReportTableColumn.html +26 -2
- data/doc/TaskJuggler/ReportTableLegend.html +26 -2
- data/doc/TaskJuggler/ReportTableLine.html +26 -2
- data/doc/TaskJuggler/Resource.html +225 -163
- data/doc/TaskJuggler/ResourceListAttribute.html +71 -47
- data/doc/TaskJuggler/ResourceListRE.html +26 -2
- data/doc/TaskJuggler/ResourceScenario.html +645 -603
- data/doc/TaskJuggler/RichText.html +26 -2
- data/doc/TaskJuggler/RichTextAttribute.html +53 -29
- data/doc/TaskJuggler/RichTextDocument.html +26 -2
- data/doc/TaskJuggler/RichTextElement.html +26 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +26 -2
- data/doc/TaskJuggler/RichTextFunctionHandler.html +26 -2
- data/doc/TaskJuggler/RichTextImage.html +26 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +29 -5
- data/doc/TaskJuggler/RichTextParser.html +26 -2
- data/doc/TaskJuggler/RichTextScanner.html +26 -2
- data/doc/TaskJuggler/RichTextSnip.html +26 -2
- data/doc/TaskJuggler/RichTextSyntaxRules.html +26 -2
- data/doc/TaskJuggler/Scenario.html +26 -2
- data/doc/TaskJuggler/ScenarioData.html +95 -28
- data/doc/TaskJuggler/ScenarioListAttribute.html +39 -15
- data/doc/TaskJuggler/Scoreboard.html +137 -73
- data/doc/TaskJuggler/ScoreboardInterval.html +1116 -0
- data/doc/TaskJuggler/SheetHandlerBase.html +26 -2
- data/doc/TaskJuggler/SheetReceiver.html +26 -2
- data/doc/TaskJuggler/SheetSender.html +26 -2
- data/doc/TaskJuggler/Shift.html +27 -3
- data/doc/TaskJuggler/ShiftAssignment.html +27 -3
- data/doc/TaskJuggler/ShiftAssignments.html +174 -149
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +41 -16
- data/doc/TaskJuggler/ShiftScenario.html +26 -2
- data/doc/TaskJuggler/SimpleQueryExpander.html +26 -2
- data/doc/TaskJuggler/SortListAttribute.html +35 -11
- data/doc/TaskJuggler/StatusSheetReceiver.html +26 -2
- data/doc/TaskJuggler/StatusSheetReport.html +26 -2
- data/doc/TaskJuggler/StatusSheetSender.html +26 -2
- data/doc/TaskJuggler/StdIoWrapper.html +26 -2
- data/doc/TaskJuggler/StringAttribute.html +39 -15
- data/doc/TaskJuggler/SymbolAttribute.html +35 -11
- data/doc/TaskJuggler/SyntaxReference.html +26 -2
- data/doc/TaskJuggler/TOCEntry.html +26 -2
- data/doc/TaskJuggler/TSResourceRecord.html +26 -2
- data/doc/TaskJuggler/TSTaskRecord.html +26 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +26 -2
- data/doc/TaskJuggler/TableOfContents.html +26 -2
- data/doc/TaskJuggler/TableReport.html +239 -214
- data/doc/TaskJuggler/TagFile/TagFileEntry.html +841 -0
- data/doc/TaskJuggler/TagFile.html +817 -0
- data/doc/TaskJuggler/Task.html +27 -3
- data/doc/TaskJuggler/TaskDepListAttribute.html +47 -23
- data/doc/TaskJuggler/TaskDependency.html +26 -2
- data/doc/TaskJuggler/TaskListAttribute.html +47 -23
- data/doc/TaskJuggler/TaskListRE.html +26 -2
- data/doc/TaskJuggler/TaskScenario.html +2235 -2178
- data/doc/TaskJuggler/TernarySearchTree.html +26 -2
- data/doc/TaskJuggler/TextFormatter.html +26 -2
- data/doc/TaskJuggler/TextParser/Macro.html +26 -2
- data/doc/TaskJuggler/TextParser/MacroTable.html +26 -2
- data/doc/TaskJuggler/TextParser/Pattern.html +26 -2
- data/doc/TaskJuggler/TextParser/Rule.html +26 -2
- data/doc/TaskJuggler/TextParser/Scanner/BufferStreamHandle.html +32 -8
- data/doc/TaskJuggler/TextParser/Scanner/FileStreamHandle.html +39 -15
- data/doc/TaskJuggler/TextParser/Scanner/MacroStackEntry.html +26 -2
- data/doc/TaskJuggler/TextParser/Scanner/StreamHandle.html +119 -86
- data/doc/TaskJuggler/TextParser/Scanner.html +317 -291
- data/doc/TaskJuggler/TextParser/SourceFileInfo.html +26 -2
- data/doc/TaskJuggler/TextParser/StackElement.html +26 -2
- data/doc/TaskJuggler/TextParser/State.html +26 -2
- data/doc/TaskJuggler/TextParser/StateTransition.html +26 -2
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +26 -2
- data/doc/TaskJuggler/TextParser/TokenDoc.html +26 -2
- data/doc/TaskJuggler/TextParser.html +85 -61
- data/doc/TaskJuggler/TextReport.html +26 -2
- data/doc/TaskJuggler/TimeInterval.html +841 -0
- data/doc/TaskJuggler/{IntervalListAttribute.html → TimeIntervalListAttribute.html} +33 -9
- data/doc/TaskJuggler/TimeSheet.html +26 -2
- data/doc/TaskJuggler/TimeSheetReceiver.html +26 -2
- data/doc/TaskJuggler/TimeSheetRecord.html +27 -3
- data/doc/TaskJuggler/TimeSheetReport.html +29 -5
- data/doc/TaskJuggler/TimeSheetSender.html +26 -2
- data/doc/TaskJuggler/TimeSheetSummary.html +26 -2
- data/doc/TaskJuggler/TimeSheets.html +26 -2
- data/doc/TaskJuggler/Tj3.html +150 -111
- data/doc/TaskJuggler/Tj3AppBase.html +26 -2
- data/doc/TaskJuggler/Tj3Client.html +26 -2
- data/doc/TaskJuggler/Tj3Daemon.html +26 -2
- data/doc/TaskJuggler/Tj3Man.html +26 -2
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -2
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -2
- data/doc/TaskJuggler/Tj3SsSender.html +26 -2
- data/doc/TaskJuggler/Tj3TsReceiver.html +26 -2
- data/doc/TaskJuggler/Tj3TsSender.html +26 -2
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -2
- data/doc/TaskJuggler/TjException.html +26 -2
- data/doc/TaskJuggler/TjRuntimeError.html +26 -2
- data/doc/TaskJuggler/TjTime.html +539 -477
- data/doc/TaskJuggler/TjpExample.html +26 -2
- data/doc/TaskJuggler/TjpExportRE.html +240 -161
- data/doc/TaskJuggler/TjpSyntaxRules.html +4236 -3844
- data/doc/TaskJuggler/URLParameter.html +26 -2
- data/doc/TaskJuggler/UserManual.html +26 -2
- data/doc/TaskJuggler/VimSyntax.html +31 -7
- data/doc/TaskJuggler/WebServer.html +26 -2
- data/doc/TaskJuggler/WelcomePage.html +26 -2
- data/doc/TaskJuggler/WorkingHours.html +227 -152
- data/doc/TaskJuggler/WorkingHoursAttribute.html +62 -38
- data/doc/TaskJuggler/XMLBlob.html +26 -2
- data/doc/TaskJuggler/XMLComment.html +26 -2
- data/doc/TaskJuggler/XMLDocument.html +26 -2
- data/doc/TaskJuggler/XMLElement.html +26 -2
- data/doc/TaskJuggler/XMLNamedText.html +26 -2
- data/doc/TaskJuggler/XMLText.html +26 -2
- data/doc/TaskJuggler.html +486 -427
- data/doc/index.html +801 -659
- data/doc/lib/taskjuggler/AccountScenario_rb.html +1 -1
- data/doc/lib/taskjuggler/Account_rb.html +1 -1
- data/doc/lib/taskjuggler/AlgorithmDiff_rb.html +1 -1
- data/doc/lib/taskjuggler/Allocation_rb.html +1 -1
- data/doc/lib/taskjuggler/AppConfig_rb.html +1 -1
- data/doc/lib/taskjuggler/AttributeBase_rb.html +1 -1
- data/doc/lib/taskjuggler/AttributeDefinition_rb.html +1 -1
- data/doc/lib/taskjuggler/Attributes_rb.html +1 -1
- data/doc/lib/taskjuggler/BatchProcessor_rb.html +1 -1
- data/doc/lib/taskjuggler/Booking_rb.html +1 -1
- data/doc/lib/taskjuggler/ChargeSet_rb.html +1 -1
- data/doc/lib/taskjuggler/Charge_rb.html +1 -1
- data/doc/lib/taskjuggler/DataCache_rb.html +1 -1
- data/doc/lib/taskjuggler/FileList_rb.html +1 -1
- data/doc/lib/taskjuggler/HTMLDocument_rb.html +1 -1
- data/doc/lib/{ruby-signal-bug_rb.html → taskjuggler/HTMLElements_rb.html} +9 -9
- data/doc/lib/{exchangebug_rb.html → taskjuggler/ICalendar_rb.html} +9 -9
- data/doc/lib/taskjuggler/IntervalList_rb.html +1 -1
- data/doc/lib/taskjuggler/Interval_rb.html +1 -1
- data/doc/lib/taskjuggler/Journal_rb.html +1 -1
- data/doc/lib/taskjuggler/KeywordArray_rb.html +1 -1
- data/doc/lib/taskjuggler/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/taskjuggler/Limits_rb.html +1 -1
- data/doc/lib/taskjuggler/LogFile_rb.html +1 -1
- data/doc/lib/taskjuggler/Log_rb.html +1 -1
- data/doc/lib/taskjuggler/LogicalExpression_rb.html +1 -1
- data/doc/lib/taskjuggler/LogicalFunction_rb.html +1 -1
- data/doc/lib/taskjuggler/LogicalOperation_rb.html +1 -1
- data/doc/lib/taskjuggler/MessageHandler_rb.html +1 -1
- data/doc/lib/taskjuggler/ProjectFileParser_rb.html +1 -1
- data/doc/lib/taskjuggler/ProjectFileScanner_rb.html +1 -1
- data/doc/lib/taskjuggler/Project_rb.html +1 -1
- data/doc/lib/taskjuggler/PropertyList_rb.html +1 -1
- data/doc/lib/taskjuggler/PropertySet_rb.html +1 -1
- data/doc/lib/taskjuggler/PropertyTreeNode_rb.html +1 -1
- data/doc/lib/taskjuggler/Query_rb.html +1 -1
- data/doc/lib/taskjuggler/RealFormat_rb.html +1 -1
- data/doc/lib/taskjuggler/ResourceScenario_rb.html +1 -1
- data/doc/lib/taskjuggler/Resource_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/Document_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/Element_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/FunctionExample_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/FunctionHandler_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/Parser_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/RTFHandlers_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/RTFNavigator_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/RTFQuery_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/RTFReportLink_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/RTFReport_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/RTFWithQuerySupport_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/Scanner_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/Snip_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/SyntaxRules_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/TOCEntry_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText/TableOfContents_rb.html +1 -1
- data/doc/lib/taskjuggler/RichText_rb.html +1 -1
- data/doc/lib/taskjuggler/RuntimeConfig_rb.html +1 -1
- data/doc/lib/taskjuggler/ScenarioData_rb.html +1 -1
- data/doc/lib/taskjuggler/Scenario_rb.html +1 -1
- data/doc/lib/taskjuggler/Scoreboard_rb.html +1 -1
- data/doc/lib/taskjuggler/SheetHandlerBase_rb.html +1 -1
- data/doc/lib/taskjuggler/SheetReceiver_rb.html +1 -1
- data/doc/lib/taskjuggler/SheetSender_rb.html +1 -1
- data/doc/lib/taskjuggler/ShiftAssignments_rb.html +1 -1
- data/doc/lib/taskjuggler/ShiftScenario_rb.html +1 -1
- data/doc/lib/taskjuggler/Shift_rb.html +1 -1
- data/doc/lib/taskjuggler/SimpleQueryExpander_rb.html +1 -1
- data/doc/lib/taskjuggler/StatusSheetReceiver_rb.html +1 -1
- data/doc/lib/taskjuggler/StatusSheetSender_rb.html +1 -1
- data/doc/lib/taskjuggler/StdIoWrapper_rb.html +1 -1
- data/doc/lib/taskjuggler/SyntaxReference_rb.html +1 -1
- data/doc/lib/taskjuggler/TableColumnDefinition_rb.html +1 -1
- data/doc/lib/taskjuggler/TaskDependency_rb.html +1 -1
- data/doc/lib/taskjuggler/TaskJuggler_rb.html +1 -1
- data/doc/lib/taskjuggler/TaskScenario_rb.html +1 -1
- data/doc/lib/taskjuggler/Task_rb.html +1 -1
- data/doc/lib/taskjuggler/TernarySearchTree_rb.html +1 -1
- data/doc/lib/taskjuggler/TextFormatter_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/MacroTable_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/Rule_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/Scanner_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/SourceFileInfo_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/StackElement_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/State_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/taskjuggler/TextParser_rb.html +1 -1
- data/doc/lib/taskjuggler/TimeSheetReceiver_rb.html +1 -1
- data/doc/lib/taskjuggler/TimeSheetSender_rb.html +1 -1
- data/doc/lib/taskjuggler/TimeSheetSummary_rb.html +1 -1
- data/doc/lib/taskjuggler/TimeSheets_rb.html +1 -1
- data/doc/lib/taskjuggler/Tj3AppBase_rb.html +1 -1
- data/doc/lib/taskjuggler/Tj3Config_rb.html +1 -1
- data/doc/lib/taskjuggler/Tj3SheetAppBase_rb.html +1 -1
- data/doc/lib/taskjuggler/TjException_rb.html +1 -1
- data/doc/lib/taskjuggler/TjTime_rb.html +1 -1
- data/doc/lib/taskjuggler/TjpExample_rb.html +1 -1
- data/doc/lib/taskjuggler/TjpSyntaxRules_rb.html +1 -1
- data/doc/lib/taskjuggler/URLParameter_rb.html +1 -1
- data/doc/lib/taskjuggler/UTF8String_rb.html +1 -1
- data/doc/lib/taskjuggler/UserManual_rb.html +1 -1
- data/doc/lib/taskjuggler/VimSyntax_rb.html +1 -1
- data/doc/lib/taskjuggler/WorkingHours_rb.html +1 -1
- data/doc/lib/taskjuggler/XMLDocument_rb.html +1 -1
- data/doc/lib/taskjuggler/XMLElement_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3Client_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3Daemon_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3Man_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3SsReceiver_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3SsSender_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3TsReceiver_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3TsSender_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3TsSummary_rb.html +1 -1
- data/doc/lib/taskjuggler/apps/Tj3_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/Daemon_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/ProcessIntercom_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/ProjectBroker_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/ProjectServer_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/ReportServer_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/ReportServlet_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/WebServer_rb.html +1 -1
- data/doc/lib/taskjuggler/daemon/WelcomePage_rb.html +1 -1
- data/doc/lib/taskjuggler/deep_copy_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/CSVFile_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/CollisionDetector_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttChart_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttLine_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ICalReport_rb.html +71 -0
- data/doc/lib/taskjuggler/reports/Navigator_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/NikuReport_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ReportBase_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ReportContext_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ReportTableCell_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/ReportTable_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/Report_rb.html +5 -1
- data/doc/lib/taskjuggler/reports/ResourceListRE_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/StatusSheetReport_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/TableReport_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/TagFile_rb.html +71 -0
- data/doc/lib/taskjuggler/reports/TaskListRE_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/TextReport_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/TimeSheetReport_rb.html +1 -1
- data/doc/lib/taskjuggler/reports/TjpExportRE_rb.html +1 -1
- data/doc/lib/tj3_rb.html +1 -1
- data/doc/lib/tj3client_rb.html +1 -1
- data/doc/lib/tj3d_rb.html +1 -1
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +1 -1
- data/doc/lib/tj3ts_receiver_rb.html +1 -1
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/lib/taskjuggler/Account.rb +1 -1
- data/lib/taskjuggler/AccountScenario.rb +1 -1
- data/lib/taskjuggler/Allocation.rb +5 -5
- data/lib/taskjuggler/AttributeBase.rb +30 -22
- data/lib/taskjuggler/Attributes.rb +80 -78
- data/lib/taskjuggler/Booking.rb +2 -2
- data/lib/taskjuggler/Charge.rb +3 -3
- data/lib/taskjuggler/ICalendar.rb +251 -0
- data/lib/taskjuggler/Interval.rb +215 -53
- data/lib/taskjuggler/IntervalList.rb +5 -5
- data/lib/taskjuggler/Limits.rb +79 -69
- data/lib/taskjuggler/LogicalFunction.rb +2 -2
- data/lib/taskjuggler/MessageHandler.rb +11 -6
- data/lib/taskjuggler/Project.rb +208 -95
- data/lib/taskjuggler/ProjectFileParser.rb +2 -2
- data/lib/taskjuggler/ProjectFileScanner.rb +7 -6
- data/lib/taskjuggler/PropertySet.rb +1 -5
- data/lib/taskjuggler/PropertyTreeNode.rb +21 -16
- data/lib/taskjuggler/Query.rb +10 -7
- data/lib/taskjuggler/Resource.rb +6 -1
- data/lib/taskjuggler/ResourceScenario.rb +85 -69
- data/lib/taskjuggler/RichText/RTFQuery.rb +2 -2
- data/lib/taskjuggler/ScenarioData.rb +11 -1
- data/lib/taskjuggler/Scoreboard.rb +8 -1
- data/lib/taskjuggler/Shift.rb +1 -1
- data/lib/taskjuggler/ShiftAssignments.rb +22 -20
- data/lib/taskjuggler/Task.rb +1 -1
- data/lib/taskjuggler/TaskJuggler.rb +65 -51
- data/lib/taskjuggler/TaskScenario.rb +486 -419
- data/lib/taskjuggler/TextParser/Scanner.rb +22 -11
- data/lib/taskjuggler/TimeSheets.rb +1 -1
- data/lib/taskjuggler/Tj3Config.rb +1 -1
- data/lib/taskjuggler/TjTime.rb +7 -3
- data/lib/taskjuggler/TjpSyntaxRules.rb +157 -23
- data/lib/taskjuggler/VimSyntax.rb +18 -0
- data/lib/taskjuggler/WorkingHours.rb +20 -4
- data/lib/taskjuggler/apps/Tj3.rb +16 -1
- data/lib/taskjuggler/reports/GanttLine.rb +1 -1
- data/lib/taskjuggler/reports/ICalReport.rb +136 -0
- data/lib/taskjuggler/reports/NikuReport.rb +1 -1
- data/lib/taskjuggler/reports/Report.rb +59 -0
- data/lib/taskjuggler/reports/ReportBase.rb +2 -67
- data/lib/taskjuggler/reports/TableReport.rb +9 -8
- data/lib/taskjuggler/reports/TagFile.rb +120 -0
- data/lib/taskjuggler/reports/TimeSheetReport.rb +3 -3
- data/lib/taskjuggler/reports/TjpExportRE.rb +33 -9
- data/manual/Installation +126 -0
- data/spec/ICalendar_spec.rb +45 -0
- data/spec/IntervalList_spec.rb +11 -11
- data/tasks/changelog.rake +150 -60
- data/tasks/gem.rake +1 -0
- data/tasks/vim.rake +2 -2
- data/test/TestSuite/Export-Reports/refs/Booking.tjp +1 -1
- data/test/TestSuite/Export-Reports/refs/CompletedWork.tji.tjp +40 -0
- data/test/TestSuite/Export-Reports/refs/Macro-2.tjp +10 -1
- data/test/TestSuite/Export-Reports/refs/TaskPrefix.tjp +1 -1
- 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/{Scheduler/Correct → HTML-Reports/scripts}/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/Scheduler/Correct/Booking.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Duration.tjp +3 -3
- data/test/TestSuite/Scheduler/Errors/R.html +113 -0
- data/test/TestSuite/Scheduler/Errors/allocate_no_assigned.tjp +15 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjmanual.css +0 -1
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/css/tjreport.css +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/details.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-green.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-red.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/flag-yellow.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resource.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/resourcegroup.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/task.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/taskgroup.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-down.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-flat.png +0 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/icons/trend-up.png +0 -0
- data/test/TestSuite/Scheduler/Errors/overbooked_duration.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/overbooked_effort.tjp +11 -0
- data/test/TestSuite/Scheduler/Errors/overbooked_length.tjp +13 -0
- data/test/TestSuite/{ReportGenerator/Correct → Scheduler/Errors}/scripts/wz_tooltip.js +0 -0
- data/test/TestSuite/StatusSheets/dev2.tji +22 -0
- data/test/TestSuite/Syntax/Correct/CompletedWork.tji.tjp +38 -0
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +5 -2
- data/test/TestSuite/Syntax/Errors/scenario_after_tracking.tjp +8 -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_Limits.rb +38 -30
- data/test/test_Scheduler.rb +2 -2
- data/test/test_ShiftAssignments.rb +8 -8
- data/test/test_WorkingHours.rb +4 -4
- metadata +1015 -1005
- data/lib/exchangebug.rb +0 -42
- data/lib/ruby-signal-bug.rb +0 -55
- data/test/TestSuite/Export-Reports/refs/DST.tjp +0 -60
- data/test/TestSuite/Export-Reports/refs/ReleasePlan.tjp +0 -80
- 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 -412
- data/test/TestSuite/ReportGenerator/Correct/Alerts-1.html +0 -680
- data/test/TestSuite/ReportGenerator/Correct/DependencyList.csv +0 -4
- data/test/TestSuite/ReportGenerator/Correct/DependencyList.tjp +0 -25
- data/test/TestSuite/ReportGenerator/Correct/Journal-1.csv +0 -8
- data/test/TestSuite/ReportGenerator/Correct/Journal-2.csv +0 -8
- data/test/TestSuite/ReportGenerator/Correct/Journal-3.html +0 -28
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +0 -3
- 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/' +0 -23
- 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/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/DST.tjp +0 -11
- data/test/TestSuite/Syntax/Correct/ReleasePlan.tjp +0 -32
- data/test/TestSuite/TimeSheets/receiver.log.mod +0 -1056
- data/test/TestSuite/TimeSheets/uu.txt +0 -29
data/manual/Installation
CHANGED
|
@@ -49,6 +49,9 @@ work. For users that are not interested in multi-core support, the web
|
|
|
49
49
|
server, the time sheet infrastructure and daemon Ruby 1.8.7 is still
|
|
50
50
|
ok to use. On Windows you need at least Ruby 1.9.2.
|
|
51
51
|
|
|
52
|
+
See below for instructions on how to use the latest and greates Ruby
|
|
53
|
+
version in parallel with your distribution Ruby.
|
|
54
|
+
|
|
52
55
|
* '''RubyGems:''' If it did not come with your OS or the Ruby
|
|
53
56
|
installation, see [http://docs.rubygems.org here] how to get and
|
|
54
57
|
install it.
|
|
@@ -210,3 +213,126 @@ manual and some other parts do require a build step.
|
|
|
210
213
|
|
|
211
214
|
will do it all and even create installable gem files again.
|
|
212
215
|
|
|
216
|
+
=== Installing a newer Ruby version ===
|
|
217
|
+
|
|
218
|
+
New Ruby versions are released usually about once or twice a year.
|
|
219
|
+
Unfortunately, it takes some time before Linux distributions pick up
|
|
220
|
+
the new release. Depending on your distribution, this can take
|
|
221
|
+
anything from a few weeks to several years. Many distributions still
|
|
222
|
+
have not yet made the switch to Ruby 1.9. The core part of
|
|
223
|
+
TaskJuggler can be used with Ruby 1.8.9, but it is at least 3 times
|
|
224
|
+
slower. Therefor it is recommended, that you install the latest
|
|
225
|
+
stable release of Ruby to use TaskJuggler. This can easily and safely
|
|
226
|
+
being done in parallel to your distribution Ruby. Both versions can
|
|
227
|
+
be used in parallel without interfering each other.
|
|
228
|
+
|
|
229
|
+
This section only covers Linux. For other operating system, please
|
|
230
|
+
search the web for instructions. If you want to contribute the
|
|
231
|
+
description for another OS, please see [[How_To_Contribute]].
|
|
232
|
+
|
|
233
|
+
First, you need to download the source code of the latest stable
|
|
234
|
+
release from
|
|
235
|
+
[http://www.ruby-lang.org/en/downloads/ www.ruby-lang.org].
|
|
236
|
+
|
|
237
|
+
The source code is distributed as zipped tarfile. You can extract it
|
|
238
|
+
like this. Change the file name to the actual version you have
|
|
239
|
+
downloaded.
|
|
240
|
+
|
|
241
|
+
tar -Zxvf ruby-X.X.X-*.tar.gz
|
|
242
|
+
|
|
243
|
+
This will create a directory with the same name as the archive, but
|
|
244
|
+
without the ''''.tar.gz'''' extension. Now change into this directory
|
|
245
|
+
and configure the source code for your specific OS and compile it.
|
|
246
|
+
For this to work, you need to have the GNU C compiler and related
|
|
247
|
+
utilities installed. We configure Ruby to append ''''19'''' to all
|
|
248
|
+
executable names. This way, you can easily choose if you want to run
|
|
249
|
+
the old or the new Ruby. ''''ruby'''' runs your distribution Ruby,
|
|
250
|
+
''''ruby19'''' runs your new ruby.
|
|
251
|
+
|
|
252
|
+
cd ruby-X.X.X-*
|
|
253
|
+
./configure --program-suffix=19
|
|
254
|
+
make
|
|
255
|
+
|
|
256
|
+
If all goes well, you can install it now. This requires root
|
|
257
|
+
permission, so you need to enter the root password. All executables
|
|
258
|
+
will be installed into ''''/usr/local/bin''''.
|
|
259
|
+
|
|
260
|
+
sudo make install
|
|
261
|
+
|
|
262
|
+
As a final step, you need to install the ''''mail'''' gem.
|
|
263
|
+
|
|
264
|
+
sudo gem19 install mail
|
|
265
|
+
|
|
266
|
+
If you don't want to use TaskJuggler from the git repository, you can
|
|
267
|
+
install the TaskJuggler gem as well.
|
|
268
|
+
|
|
269
|
+
sudo gem19 install taskjuggler
|
|
270
|
+
|
|
271
|
+
That's it. You now have the latest Ruby installed and are ready to
|
|
272
|
+
use TaskJuggler.
|
|
273
|
+
|
|
274
|
+
=== Installing the Vim Support ===
|
|
275
|
+
|
|
276
|
+
TaskJuggler can be used with any text editor that supports UTF-8 text
|
|
277
|
+
file editing. If you don't have a preference yet, we recommend to try
|
|
278
|
+
the [http://www.vim.org Vim] text editor. It's a very powerful editor
|
|
279
|
+
and it has been customized for better integration with TaskJuggler.
|
|
280
|
+
This section describes, how to activate and use the Vim integration.
|
|
281
|
+
Vim is provided by pretty much any Linux distribution and also works
|
|
282
|
+
well on MacOX and Windows. See the web page for how to install it if
|
|
283
|
+
you don't have it yet.
|
|
284
|
+
|
|
285
|
+
This section describes the integration on Linux. Please see the
|
|
286
|
+
[[How_To_Contribute]] section if you want to contribute the
|
|
287
|
+
description for another OS.
|
|
288
|
+
|
|
289
|
+
If you have never customized Vim, you need to create a few
|
|
290
|
+
directories first.
|
|
291
|
+
|
|
292
|
+
cd ${HOME}
|
|
293
|
+
mkdir .vim
|
|
294
|
+
mkdir .vim/syntax
|
|
295
|
+
|
|
296
|
+
Then copy the syntax file ''''tjp.vim'''' into the vim syntax
|
|
297
|
+
directory. The following command works if you have installed
|
|
298
|
+
TaskJuggler as a gem with the system provided Ruby. For other cases,
|
|
299
|
+
you may have to modify it accordingly.
|
|
300
|
+
|
|
301
|
+
cp `gem contents taskjuggler | fgrep tjp.vim` .vim/syntax
|
|
302
|
+
|
|
303
|
+
Now we have to make sure, Vim detects the file. Edit the
|
|
304
|
+
''''.vim/filetype.vim'''' file to contain the following section.
|
|
305
|
+
|
|
306
|
+
augroup filetypedetect
|
|
307
|
+
au BufNewFile,BufRead *.tjp,*.tji setf tjp
|
|
308
|
+
augroup END
|
|
309
|
+
|
|
310
|
+
And edit the ''''.vim/syntax.vim'''' file to contain the following line.
|
|
311
|
+
|
|
312
|
+
au! Syntax tjp so ~/.vim/syntax/tjp.vim
|
|
313
|
+
|
|
314
|
+
When you now open a ''''.tjp'''' or ''''.tji'''' file in Vim, you
|
|
315
|
+
should have the following features available:
|
|
316
|
+
|
|
317
|
+
* Syntax highlighting. TJP keywords should be colored in different colors.
|
|
318
|
+
* Syntax folding. The optional parts of properties within the curly
|
|
319
|
+
braces can be collapsed. For this to work, the opening brace needs
|
|
320
|
+
to be on the same line as the property keyword. The closing brace
|
|
321
|
+
must be the first non-blank character of the last line of the
|
|
322
|
+
block. See the '''':help fold'''' Vim help command for details how
|
|
323
|
+
to open and close folds.
|
|
324
|
+
* Tag navigation. If you include a [tagfile] report in your project,
|
|
325
|
+
Vim will know all property IDs and can jump to them. If you have a
|
|
326
|
+
task with the ID ''''foo.bar'''', the command '''':ta foo.bar''''
|
|
327
|
+
will put the cursor right where task ''''foo.bar'''' was declared.
|
|
328
|
+
* ID completion. If you include a [tagfile] report in your project,
|
|
329
|
+
Vim can tell you the full hierarchical ID of a property. Just move
|
|
330
|
+
the cursor to the first line of the property definition and press
|
|
331
|
+
''''Ctrl-]''''.
|
|
332
|
+
* Run tj3 from within vim. Just type '''':make your_project.tjp'''' to
|
|
333
|
+
start the scheduling process. In case of errors or warnings, you
|
|
334
|
+
will be able to navigate the errors with '''':cn'''' and
|
|
335
|
+
'''':cp''''.
|
|
336
|
+
* Move the cursor over any TaskJuggler syntax keyword and press
|
|
337
|
+
''''shift-k'''' to get the manual page for this keyword.
|
|
338
|
+
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -w
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
#
|
|
4
|
+
# = IntervalList_spec.rb -- The TaskJuggler III Project Management Software
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011
|
|
7
|
+
# by Chris Schlaeger <chris@linux.com>
|
|
8
|
+
#
|
|
9
|
+
# This program is free software; you can redistribute it and/or modify
|
|
10
|
+
# it under the terms of version 2 of the GNU General Public License as
|
|
11
|
+
# published by the Free Software Foundation.
|
|
12
|
+
#
|
|
13
|
+
|
|
14
|
+
require 'rubygems'
|
|
15
|
+
|
|
16
|
+
require 'taskjuggler/ICalendar'
|
|
17
|
+
|
|
18
|
+
class TaskJuggler
|
|
19
|
+
|
|
20
|
+
describe ICalendar do
|
|
21
|
+
|
|
22
|
+
describe ICalendar::Component do
|
|
23
|
+
|
|
24
|
+
it 'should quote properly' do
|
|
25
|
+
c = ICalendar::Component.new(nil, '', nil, nil)
|
|
26
|
+
[
|
|
27
|
+
[ '', '' ],
|
|
28
|
+
[ 'foo', 'foo' ],
|
|
29
|
+
[ '"', '\"' ],
|
|
30
|
+
[ ';', '\;' ],
|
|
31
|
+
[ ',', '\,' ],
|
|
32
|
+
[ "\n", '\n' ],
|
|
33
|
+
[ "foo\nbar", 'foo\nbar' ],
|
|
34
|
+
[ 'a"b"c', 'a\"b\"c' ]
|
|
35
|
+
].each do |i, o|
|
|
36
|
+
c.send('quoted', i).should == o
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
|
data/spec/IntervalList_spec.rb
CHANGED
|
@@ -27,17 +27,17 @@ class TaskJuggler
|
|
|
27
27
|
@t4 = TjTime.new('2011-01-05').freeze
|
|
28
28
|
@t5 = TjTime.new('2011-01-06').freeze
|
|
29
29
|
@t6 = TjTime.new('2011-01-07').freeze
|
|
30
|
-
@i0_1 =
|
|
31
|
-
@i0_2 =
|
|
32
|
-
@i0_3 =
|
|
33
|
-
@i1_2 =
|
|
34
|
-
@i1_3 =
|
|
35
|
-
@i2_3 =
|
|
36
|
-
@i3_4 =
|
|
37
|
-
@i3_6 =
|
|
38
|
-
@i4_5 =
|
|
39
|
-
@i4_6 =
|
|
40
|
-
@i5_6 =
|
|
30
|
+
@i0_1 = TimeInterval.new(@t0, @t1).freeze
|
|
31
|
+
@i0_2 = TimeInterval.new(@t0, @t2).freeze
|
|
32
|
+
@i0_3 = TimeInterval.new(@t0, @t3).freeze
|
|
33
|
+
@i1_2 = TimeInterval.new(@t1, @t2).freeze
|
|
34
|
+
@i1_3 = TimeInterval.new(@t1, @t3).freeze
|
|
35
|
+
@i2_3 = TimeInterval.new(@t2, @t3).freeze
|
|
36
|
+
@i3_4 = TimeInterval.new(@t3, @t4).freeze
|
|
37
|
+
@i3_6 = TimeInterval.new(@t3, @t6).freeze
|
|
38
|
+
@i4_5 = TimeInterval.new(@t4, @t5).freeze
|
|
39
|
+
@i4_6 = TimeInterval.new(@t4, @t6).freeze
|
|
40
|
+
@i5_6 = TimeInterval.new(@t5, @t6).freeze
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
describe "#<<" do
|
data/tasks/changelog.rake
CHANGED
|
@@ -3,76 +3,166 @@ require 'time'
|
|
|
3
3
|
desc 'update changelog'
|
|
4
4
|
task :CHANGELOG do
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
6
|
+
class Entry
|
|
7
|
+
|
|
8
|
+
attr_reader :type
|
|
9
|
+
|
|
10
|
+
def initialize(ref, author, time, message)
|
|
11
|
+
@ref = ref
|
|
12
|
+
@author = author
|
|
13
|
+
@time = time
|
|
14
|
+
@message = message
|
|
15
|
+
if (m = /New: (.*)/.match(@message))
|
|
16
|
+
@type = :feature
|
|
17
|
+
@message = m[1]
|
|
18
|
+
elsif (m = /Fix: (.*)/.match(@message))
|
|
19
|
+
@type = :bugfix
|
|
20
|
+
@message = m[1]
|
|
21
|
+
else
|
|
22
|
+
@type = :other
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def to_s
|
|
27
|
+
" * #{@message}\n"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class Release
|
|
33
|
+
|
|
34
|
+
attr_reader :date, :version, :tag
|
|
35
|
+
|
|
36
|
+
def initialize(tag, predecessor)
|
|
37
|
+
@tag = tag
|
|
38
|
+
# We only support release tags in the form X.X.X
|
|
39
|
+
@version = /\d+\.\d+\.\d+/.match(tag)
|
|
40
|
+
|
|
41
|
+
# Construct a Git range.
|
|
42
|
+
interval = predecessor ? "#{predecessor.tag}..#{@tag}" : @tag
|
|
43
|
+
|
|
44
|
+
# Get the date of the release
|
|
45
|
+
date = Time.parse(/Date: (.*)/.match(`git show #{tag}`)[1]).utc
|
|
46
|
+
@date = date.strftime("%Y-%m-%d")
|
|
47
|
+
|
|
48
|
+
@entries = []
|
|
49
|
+
# Use -z option for git-log to get 0 bytes as separators.
|
|
50
|
+
`git log -z #{interval}`.split("\0").each do |commit|
|
|
51
|
+
# We ignore merges.
|
|
52
|
+
next if commit =~ /^Merge: \d*/
|
|
53
|
+
|
|
54
|
+
ref, author, time, _, message = commit.split("\n", 5)
|
|
55
|
+
ref = ref[/commit ([0-9a-f]+)/, 1]
|
|
56
|
+
author = author[/Author: (.*)/, 1].strip
|
|
57
|
+
time = Time.parse(time[/Date: (.*)/, 1]).utc
|
|
58
|
+
# Eleminate git-svn-id: lines
|
|
59
|
+
message.gsub!(/git-svn-id: .*\n/, '')
|
|
60
|
+
# Eliminate Signed-off-by: lines
|
|
61
|
+
message.gsub!(/Signed-off-by: .*\n/, '')
|
|
62
|
+
message.strip!
|
|
63
|
+
@entries << Entry.new(ref, author, time, message)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def empty?
|
|
68
|
+
@entries.empty?
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def to_s
|
|
72
|
+
s = ''
|
|
73
|
+
if hasFeatures? || hasFixes?
|
|
74
|
+
if hasFeatures?
|
|
75
|
+
s << "== New Features\n\n"
|
|
76
|
+
@entries.each do |entry|
|
|
77
|
+
s << entry.to_s if entry.type == :feature
|
|
78
|
+
end
|
|
79
|
+
s << "\n"
|
|
80
|
+
end
|
|
81
|
+
if hasFixes?
|
|
82
|
+
s << "== Bug Fixes\n\n"
|
|
83
|
+
@entries.each do |entry|
|
|
84
|
+
s << entry.to_s if entry.type == :bugfix
|
|
85
|
+
end
|
|
86
|
+
s << "\n"
|
|
87
|
+
end
|
|
88
|
+
else
|
|
89
|
+
@entries.each do |entry|
|
|
90
|
+
s << entry.to_s
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
s
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
private
|
|
97
|
+
|
|
98
|
+
def hasFeatures?
|
|
99
|
+
@entries.each do |entry|
|
|
100
|
+
return true if entry.type == :feature
|
|
101
|
+
end
|
|
102
|
+
false
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def hasFixes?
|
|
106
|
+
@entries.each do |entry|
|
|
107
|
+
return true if entry.type == :bugfix
|
|
108
|
+
end
|
|
109
|
+
false
|
|
14
110
|
end
|
|
15
111
|
|
|
16
|
-
versionToComparable(a) <=> versionToComparable(b)
|
|
17
112
|
end
|
|
18
113
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
releases.each do |release|
|
|
28
|
-
# This buffer holds the final text for the release section. It will
|
|
29
|
-
# contain the commit messages in RDoc format.
|
|
30
|
-
text = ''
|
|
31
|
-
# We only support release tags in the form X.X.X
|
|
32
|
-
version = /\d+\.\d+\.\d+/.match(release)
|
|
33
|
-
# Construct a Git range.
|
|
34
|
-
interval = prevRelease ? "#{prevRelease}..#{release}" : release
|
|
35
|
-
prevRelease = release
|
|
36
|
-
|
|
37
|
-
# Get the date of the release
|
|
38
|
-
date = Time.parse(/Date: (.*)/.match(`git show #{release}`)[1]).utc
|
|
39
|
-
date = date.strftime("%Y-%m-%d")
|
|
40
|
-
|
|
41
|
-
logText = ''
|
|
42
|
-
# Use -z option for git-log to get 0 bytes as separators.
|
|
43
|
-
`git log -z #{interval}`.split("\0").each do |commit|
|
|
44
|
-
# We ignore merges.
|
|
45
|
-
next if commit =~ /^Merge: \d*/
|
|
46
|
-
|
|
47
|
-
ref, author, time, _, message = commit.split("\n", 5)
|
|
48
|
-
ref = ref[/commit ([0-9a-f]+)/, 1]
|
|
49
|
-
author = author[/Author: (.*)/, 1].strip
|
|
50
|
-
time = Time.parse(time[/Date: (.*)/, 1]).utc
|
|
51
|
-
# Eleminate git-svn-id: lines
|
|
52
|
-
message.gsub!(/git-svn-id: .*\n/, '')
|
|
53
|
-
# Eliminate Signed-off-by: lines
|
|
54
|
-
message.gsub!(/Signed-off-by: .*\n/, '')
|
|
55
|
-
message.strip!
|
|
56
|
-
|
|
57
|
-
logText += " * #{message}\n"
|
|
114
|
+
class ChangeLog
|
|
115
|
+
|
|
116
|
+
def initialize
|
|
117
|
+
@releases = []
|
|
118
|
+
predecessor = nil
|
|
119
|
+
getReleaseVersions.each do |version|
|
|
120
|
+
@releases << (predecessor = Release.new(version, predecessor))
|
|
121
|
+
end
|
|
58
122
|
end
|
|
59
123
|
|
|
60
|
-
|
|
61
|
-
|
|
124
|
+
def to_s
|
|
125
|
+
s = ''
|
|
126
|
+
@releases.reverse.each do |release|
|
|
127
|
+
next if release.empty?
|
|
62
128
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
129
|
+
# We use RDOC markup syntax to generate a title
|
|
130
|
+
if release.version
|
|
131
|
+
s << "= Release #{release.version} (#{release.date})\n\n"
|
|
132
|
+
else
|
|
133
|
+
s << "= Next Release (Some Day)\n\n"
|
|
134
|
+
end
|
|
135
|
+
s << release.to_s + "\n"
|
|
136
|
+
end
|
|
137
|
+
s
|
|
68
138
|
end
|
|
69
|
-
|
|
139
|
+
|
|
140
|
+
private
|
|
141
|
+
|
|
142
|
+
# 'git tag' is not sorted numerically. This function implements a
|
|
143
|
+
# numerical comparison for tag versions of the format 'release-X.X.X'. X
|
|
144
|
+
# can be a multi-digit number.
|
|
145
|
+
def compareTags(a, b)
|
|
146
|
+
|
|
147
|
+
def versionToComparable(v)
|
|
148
|
+
/\d+\.\d+\.\d+/.match(v)[0].split('.').map{ |l| sprintf("%03d", l.to_i)}.
|
|
149
|
+
join('.')
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
versionToComparable(a) <=> versionToComparable(b)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def getReleaseVersions
|
|
156
|
+
# Get list of release tags from Git repository
|
|
157
|
+
releaseVersions = `git tag`.split("\n").map { |r| r.chomp }.
|
|
158
|
+
sort{ |a, b| compareTags(a, b) }
|
|
159
|
+
releaseVersions << 'HEAD'
|
|
160
|
+
end
|
|
161
|
+
|
|
70
162
|
end
|
|
71
163
|
|
|
72
164
|
File.open('CHANGELOG', 'w+') do |changelog|
|
|
73
|
-
|
|
74
|
-
sections.reverse.each do |section|
|
|
75
|
-
changelog.puts section + "\n"
|
|
76
|
-
end
|
|
165
|
+
changelog.puts ChangeLog.new.to_s
|
|
77
166
|
end
|
|
167
|
+
|
|
78
168
|
end
|
data/tasks/gem.rake
CHANGED
|
@@ -12,6 +12,7 @@ execs = Dir.glob('./bin/*') + Dir.glob('./**/run') +
|
|
|
12
12
|
|
|
13
13
|
task :release => [:clobber] do
|
|
14
14
|
puts "Preparing release of #{PROJECT_NAME} version #{PROJECT_VERSION}"
|
|
15
|
+
Rake::Task[:vim].invoke
|
|
15
16
|
Rake::Task[:spec].invoke
|
|
16
17
|
Rake::Task[:test].invoke
|
|
17
18
|
Rake::Task[:rdoc].invoke
|
data/tasks/vim.rake
CHANGED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
project prj "Project" "1.0" 2000-01-01-00:00-+0000 - 2000-03-01-00:00-+0000 {
|
|
2
|
+
timezone "Europe/Berlin"
|
|
3
|
+
scenario plan "Plan Scenario" {
|
|
4
|
+
active yes
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
projectids prj
|
|
9
|
+
|
|
10
|
+
resource r "Resource"
|
|
11
|
+
|
|
12
|
+
task t "Task" {
|
|
13
|
+
start 2000-01-01-00:00-+0000
|
|
14
|
+
end 2000-01-14-17:00-+0000
|
|
15
|
+
scheduling asap
|
|
16
|
+
scheduled
|
|
17
|
+
}
|
|
18
|
+
supplement task t {
|
|
19
|
+
booking r 2000-01-03-08:00-+0000 + 3.0h,
|
|
20
|
+
2000-01-03-12:00-+0000 + 5.0h,
|
|
21
|
+
2000-01-04-08:00-+0000 + 3.0h,
|
|
22
|
+
2000-01-04-12:00-+0000 + 5.0h,
|
|
23
|
+
2000-01-05-08:00-+0000 + 3.0h,
|
|
24
|
+
2000-01-05-12:00-+0000 + 5.0h,
|
|
25
|
+
2000-01-06-08:00-+0000 + 3.0h,
|
|
26
|
+
2000-01-06-12:00-+0000 + 5.0h,
|
|
27
|
+
2000-01-07-08:00-+0000 + 3.0h,
|
|
28
|
+
2000-01-07-12:00-+0000 + 5.0h { overtime 2 }
|
|
29
|
+
priority 500
|
|
30
|
+
projectid prj
|
|
31
|
+
}
|
|
32
|
+
supplement resource r {
|
|
33
|
+
workinghours sun off
|
|
34
|
+
workinghours mon 9:00 - 12:00, 13:00 - 18:00
|
|
35
|
+
workinghours tue 9:00 - 12:00, 13:00 - 18:00
|
|
36
|
+
workinghours wed 9:00 - 12:00, 13:00 - 18:00
|
|
37
|
+
workinghours thu 9:00 - 12:00, 13:00 - 18:00
|
|
38
|
+
workinghours fri 9:00 - 12:00, 13:00 - 18:00
|
|
39
|
+
workinghours sat off
|
|
40
|
+
}
|
|
@@ -8,7 +8,12 @@ project prj "Test" "1.0" 2010-04-28-00:00-+0000 - 2010-05-05-00:00-+0000 {
|
|
|
8
8
|
projectids prj
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
task _Task_1 "
|
|
11
|
+
task _Task_1 " Crème brûlée Prepare " {
|
|
12
|
+
start 2010-04-28-00:00-+0000
|
|
13
|
+
milestone
|
|
14
|
+
scheduled
|
|
15
|
+
}
|
|
16
|
+
task _Task_2 "task" {
|
|
12
17
|
start 2010-04-28-00:00-+0000
|
|
13
18
|
milestone
|
|
14
19
|
scheduled
|
|
@@ -17,3 +22,7 @@ supplement task _Task_1 {
|
|
|
17
22
|
priority 500
|
|
18
23
|
projectid prj
|
|
19
24
|
}
|
|
25
|
+
supplement task _Task_2 {
|
|
26
|
+
priority 500
|
|
27
|
+
projectid prj
|
|
28
|
+
}
|