taskjuggler 0.0.5 → 0.0.6
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 +2086 -0
- data/benchmarks/666tasks.tjp +3183 -0
- data/benchmarks/booking.tjp +14 -10
- data/doc/AppConfig.html +95 -73
- data/doc/Arguments.html +22 -2
- data/doc/CHANGELOG.html +2587 -0
- data/doc/COPYING.html +21 -1
- data/doc/Object.html +161 -122
- data/doc/README.html +21 -1
- data/doc/RuntimeConfig.html +26 -6
- data/doc/String.html +38 -18
- data/doc/StringIO.html +579 -0
- data/doc/TaskJuggler.html +251 -143
- data/doc/TaskJuggler/Account.html +26 -6
- data/doc/TaskJuggler/AccountAttribute.html +28 -8
- data/doc/TaskJuggler/AccountScenario.html +24 -4
- data/doc/TaskJuggler/Allocation.html +30 -10
- data/doc/TaskJuggler/AllocationAttribute.html +28 -8
- data/doc/TaskJuggler/AttributeBase.html +46 -26
- data/doc/TaskJuggler/AttributeDefinition.html +22 -2
- data/doc/TaskJuggler/BatchProcessor.html +40 -20
- data/doc/TaskJuggler/Booking.html +26 -6
- data/doc/TaskJuggler/BookingListAttribute.html +28 -8
- data/doc/TaskJuggler/BooleanAttribute.html +28 -8
- data/doc/TaskJuggler/CSVFile.html +308 -146
- data/doc/TaskJuggler/CellSettingPattern.html +22 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
- data/doc/TaskJuggler/Charge.html +26 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
- data/doc/TaskJuggler/ChargeSet.html +33 -13
- data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
- data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
- data/doc/TaskJuggler/ColumnTable.html +24 -4
- data/doc/TaskJuggler/Daemon.html +26 -6
- data/doc/TaskJuggler/DateAttribute.html +26 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
- data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
- data/doc/TaskJuggler/DurationAttribute.html +28 -8
- data/doc/TaskJuggler/FixnumAttribute.html +24 -4
- data/doc/TaskJuggler/FlagListAttribute.html +28 -8
- data/doc/TaskJuggler/FloatAttribute.html +26 -6
- data/doc/TaskJuggler/FormatListAttribute.html +24 -4
- data/doc/TaskJuggler/GanttChart.html +147 -126
- data/doc/TaskJuggler/GanttContainer.html +34 -14
- data/doc/TaskJuggler/GanttHeader.html +28 -8
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
- data/doc/TaskJuggler/GanttLine.html +38 -18
- data/doc/TaskJuggler/GanttLoadStack.html +26 -6
- data/doc/TaskJuggler/GanttMilestone.html +34 -14
- data/doc/TaskJuggler/GanttRouter.html +50 -30
- data/doc/TaskJuggler/GanttTaskBar.html +34 -14
- data/doc/TaskJuggler/HTMLDocument.html +26 -6
- data/doc/TaskJuggler/HTMLGraphics.html +30 -10
- data/doc/TaskJuggler/Interval.html +40 -22
- data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
- data/doc/TaskJuggler/JobInfo.html +24 -4
- data/doc/TaskJuggler/Journal.html +226 -147
- data/doc/TaskJuggler/JournalEntry.html +22 -2
- data/doc/TaskJuggler/JournalEntryList.html +129 -112
- data/doc/TaskJuggler/KeywordArray.html +26 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
- data/doc/TaskJuggler/Limits.html +152 -123
- data/doc/TaskJuggler/Limits/Limit.html +149 -70
- data/doc/TaskJuggler/LimitsAttribute.html +36 -51
- data/doc/TaskJuggler/ListAttributeBase.html +24 -4
- data/doc/TaskJuggler/Log.html +50 -32
- data/doc/TaskJuggler/LogFile.html +37 -17
- data/doc/TaskJuggler/LogicalAttribute.html +53 -33
- data/doc/TaskJuggler/LogicalExpression.html +26 -6
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
- data/doc/TaskJuggler/LogicalFlag.html +42 -22
- data/doc/TaskJuggler/LogicalFunction.html +204 -140
- data/doc/TaskJuggler/LogicalOperation.html +135 -111
- data/doc/TaskJuggler/Macro.html +22 -2
- data/doc/TaskJuggler/MacroParser.html +32 -12
- data/doc/TaskJuggler/MacroTable.html +32 -12
- data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
- data/doc/TaskJuggler/Message.html +24 -4
- data/doc/TaskJuggler/MessageHandler.html +24 -4
- data/doc/TaskJuggler/Navigator.html +104 -71
- data/doc/TaskJuggler/NavigatorElement.html +32 -12
- data/doc/TaskJuggler/NikuProject.html +22 -2
- data/doc/TaskJuggler/NikuReport.html +310 -228
- data/doc/TaskJuggler/NikuResource.html +22 -2
- data/doc/TaskJuggler/NodeListAttribute.html +615 -0
- data/doc/TaskJuggler/OnShiftCache.html +32 -12
- data/doc/TaskJuggler/ProcessIntercom.html +205 -78
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
- data/doc/TaskJuggler/Project.html +708 -660
- data/doc/TaskJuggler/ProjectBroker.html +506 -304
- data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
- data/doc/TaskJuggler/ProjectFileParser.html +429 -373
- data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
- data/doc/TaskJuggler/ProjectRecord.html +80 -60
- data/doc/TaskJuggler/ProjectServer.html +312 -237
- data/doc/TaskJuggler/ProjectServerIface.html +101 -43
- data/doc/TaskJuggler/PropertyAttribute.html +32 -12
- data/doc/TaskJuggler/PropertyList.html +166 -145
- data/doc/TaskJuggler/PropertySet.html +254 -224
- data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
- data/doc/TaskJuggler/Query.html +169 -148
- data/doc/TaskJuggler/RTFHandlers.html +622 -0
- data/doc/TaskJuggler/RTFNavigator.html +28 -8
- data/doc/TaskJuggler/RTFQuery.html +40 -20
- data/doc/TaskJuggler/RTFReport.html +62 -25
- data/doc/TaskJuggler/RTFReportLink.html +765 -0
- data/doc/TaskJuggler/RealFormat.html +26 -6
- data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
- data/doc/TaskJuggler/Report.html +402 -251
- data/doc/TaskJuggler/ReportBase.html +162 -137
- data/doc/TaskJuggler/ReportContext.html +112 -29
- data/doc/TaskJuggler/ReportServer.html +89 -64
- data/doc/TaskJuggler/ReportServerIface.html +75 -55
- data/doc/TaskJuggler/ReportServerRecord.html +54 -31
- data/doc/TaskJuggler/ReportServlet.html +980 -0
- data/doc/TaskJuggler/ReportTable.html +41 -21
- data/doc/TaskJuggler/ReportTableCell.html +214 -170
- data/doc/TaskJuggler/ReportTableColumn.html +30 -10
- data/doc/TaskJuggler/ReportTableLegend.html +36 -16
- data/doc/TaskJuggler/ReportTableLine.html +32 -12
- data/doc/TaskJuggler/Resource.html +99 -87
- data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
- data/doc/TaskJuggler/ResourceListRE.html +47 -26
- data/doc/TaskJuggler/ResourceScenario.html +403 -437
- data/doc/TaskJuggler/RichText.html +26 -6
- data/doc/TaskJuggler/RichTextAttribute.html +50 -30
- data/doc/TaskJuggler/RichTextDocument.html +37 -17
- data/doc/TaskJuggler/RichTextElement.html +475 -413
- data/doc/TaskJuggler/RichTextException.html +22 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
- data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
- data/doc/TaskJuggler/RichTextImage.html +22 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
- data/doc/TaskJuggler/RichTextParser.html +56 -34
- data/doc/TaskJuggler/RichTextScanner.html +82 -61
- data/doc/TaskJuggler/RichTextSnip.html +34 -14
- data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
- data/doc/TaskJuggler/Scenario.html +22 -2
- data/doc/TaskJuggler/ScenarioData.html +30 -46
- data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
- data/doc/TaskJuggler/Scoreboard.html +42 -22
- data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
- data/doc/TaskJuggler/SheetReceiver.html +333 -295
- data/doc/TaskJuggler/SheetSender.html +253 -230
- data/doc/TaskJuggler/Shift.html +26 -6
- data/doc/TaskJuggler/ShiftAssignment.html +89 -73
- data/doc/TaskJuggler/ShiftAssignments.html +226 -234
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
- data/doc/TaskJuggler/ShiftScenario.html +28 -8
- data/doc/TaskJuggler/SortListAttribute.html +34 -14
- data/doc/TaskJuggler/SourceFileInfo.html +24 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
- data/doc/TaskJuggler/StatusSheetReport.html +168 -153
- data/doc/TaskJuggler/StatusSheetSender.html +24 -3
- data/doc/TaskJuggler/StringAttribute.html +38 -18
- data/doc/TaskJuggler/SymbolAttribute.html +32 -12
- data/doc/TaskJuggler/SyntaxReference.html +40 -20
- data/doc/TaskJuggler/TOCEntry.html +26 -6
- data/doc/TaskJuggler/TSResourceRecord.html +22 -2
- data/doc/TaskJuggler/TSTaskRecord.html +22 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
- data/doc/TaskJuggler/TableOfContents.html +26 -6
- data/doc/TaskJuggler/TableReport.html +937 -904
- data/doc/TaskJuggler/Task.html +55 -36
- data/doc/TaskJuggler/TaskDependency.html +24 -4
- data/doc/TaskJuggler/TaskListAttribute.html +50 -30
- data/doc/TaskJuggler/TaskListRE.html +27 -7
- data/doc/TaskJuggler/TaskScenario.html +1273 -1153
- data/doc/TaskJuggler/TextFormatter.html +28 -8
- data/doc/TaskJuggler/TextParser.html +585 -338
- data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
- data/doc/TaskJuggler/TextParser/Rule.html +95 -73
- data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
- data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
- data/doc/TaskJuggler/TextReport.html +28 -8
- data/doc/TaskJuggler/TextScanner.html +400 -1404
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
- data/doc/TaskJuggler/TimeSheet.html +48 -28
- data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
- data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
- data/doc/TaskJuggler/TimeSheetReport.html +154 -133
- data/doc/TaskJuggler/TimeSheetSender.html +24 -3
- data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
- data/doc/TaskJuggler/TimeSheets.html +26 -6
- data/doc/TaskJuggler/Tj3AppBase.html +85 -58
- data/doc/TaskJuggler/Tj3Client.html +292 -238
- data/doc/TaskJuggler/Tj3Daemon.html +159 -74
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
- data/doc/TaskJuggler/Tj3SsSender.html +53 -26
- data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
- data/doc/TaskJuggler/Tj3TsSender.html +26 -6
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
- data/doc/TaskJuggler/TjException.html +22 -2
- data/doc/TaskJuggler/TjTime.html +216 -160
- data/doc/TaskJuggler/TjpExample.html +34 -14
- data/doc/TaskJuggler/TjpExportRE.html +403 -407
- data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
- data/doc/TaskJuggler/URLParameter.html +649 -0
- data/doc/TaskJuggler/UserManual.html +42 -22
- data/doc/TaskJuggler/WebServer.html +702 -0
- data/doc/TaskJuggler/WorkingHours.html +38 -18
- data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
- data/doc/TaskJuggler/XMLBlob.html +24 -4
- data/doc/TaskJuggler/XMLComment.html +24 -4
- data/doc/TaskJuggler/XMLDocument.html +30 -10
- data/doc/TaskJuggler/XMLElement.html +34 -14
- data/doc/TaskJuggler/XMLNamedText.html +22 -2
- data/doc/TaskJuggler/XMLText.html +24 -4
- data/doc/index.html +1841 -1666
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +2 -2
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +2 -2
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +2 -2
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +2 -2
- data/doc/lib/LogFile_rb.html +2 -2
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +2 -2
- data/doc/lib/LogicalOperation_rb.html +2 -2
- data/doc/lib/MacroParser_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -1
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/Message_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +4 -8
- data/doc/lib/ProjectFileScanner_rb.html +67 -0
- data/doc/lib/Project_rb.html +2 -2
- data/doc/lib/PropertyList_rb.html +2 -2
- data/doc/lib/PropertySet_rb.html +2 -2
- data/doc/lib/PropertyTreeNode_rb.html +2 -2
- data/doc/lib/Query_rb.html +2 -2
- data/doc/lib/RTFHandlers_rb.html +73 -0
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +1 -1
- data/doc/lib/RTFReportLink_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +2 -2
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +2 -2
- data/doc/lib/Resource_rb.html +2 -2
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +2 -2
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +2 -2
- data/doc/lib/RichTextScanner_rb.html +2 -2
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +1 -1
- data/doc/lib/SheetReceiver_rb.html +2 -2
- data/doc/lib/SheetSender_rb.html +4 -2
- data/doc/lib/ShiftAssignments_rb.html +4 -2
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +2 -2
- data/doc/lib/StatusSheetSender_rb.html +2 -2
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +2 -2
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +2 -2
- data/doc/lib/TaskScenario_rb.html +2 -2
- data/doc/lib/Task_rb.html +2 -2
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +2 -2
- data/doc/lib/TextParser/StackElement_rb.html +2 -2
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +2 -2
- data/doc/lib/TextScanner_rb.html +6 -2
- data/doc/lib/TimeSheetReceiver_rb.html +2 -2
- data/doc/lib/TimeSheetSender_rb.html +2 -2
- data/doc/lib/TimeSheetSummary_rb.html +2 -2
- data/doc/lib/TimeSheets_rb.html +2 -2
- data/doc/lib/Tj3AppBase_rb.html +2 -2
- data/doc/lib/Tj3Config_rb.html +2 -2
- data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +2 -2
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +2 -2
- data/doc/lib/URLParameter_rb.html +67 -0
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +2 -2
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
- data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
- data/doc/lib/daemon/ProjectServer_rb.html +2 -2
- data/doc/lib/daemon/ReportServer_rb.html +2 -2
- data/doc/lib/daemon/WebServer_rb.html +75 -0
- data/doc/lib/deep_copy_rb.html +2 -2
- data/doc/lib/reports/CSVFile_rb.html +2 -2
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +2 -2
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +2 -2
- data/doc/lib/reports/NikuReport_rb.html +2 -2
- data/doc/lib/reports/ReportBase_rb.html +2 -2
- data/doc/lib/reports/ReportContext_rb.html +2 -2
- data/doc/lib/reports/ReportTableCell_rb.html +2 -2
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +2 -2
- data/doc/lib/reports/Report_rb.html +2 -2
- data/doc/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
- data/doc/lib/reports/TableReport_rb.html +2 -2
- data/doc/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
- data/doc/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/lib/ruby-signal-bug_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +2 -2
- data/doc/lib/tj3client_rb.html +2 -2
- data/doc/lib/tj3d_rb.html +2 -2
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +2 -2
- data/doc/lib/tj3ts_receiver_rb.html +2 -2
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/doc/rdoc.css +9 -4
- data/examples/tutorial.tjp +17 -15
- data/gem_spec.rb +3 -0
- data/lib/AppConfig.rb +3 -1
- data/lib/Attributes.rb +10 -8
- data/lib/Journal.rb +55 -20
- data/lib/Limits.rb +72 -46
- data/lib/LogFile.rb +3 -3
- data/lib/LogicalFunction.rb +19 -6
- data/lib/LogicalOperation.rb +5 -1
- data/lib/Project.rb +37 -9
- data/lib/ProjectFileParser.rb +25 -22
- data/lib/ProjectFileScanner.rb +365 -0
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +14 -4
- data/lib/PropertyTreeNode.rb +42 -29
- data/lib/Query.rb +3 -1
- data/lib/RTFHandlers.rb +35 -0
- data/lib/RTFReport.rb +23 -6
- data/lib/RTFReportLink.rb +72 -0
- data/lib/Resource.rb +8 -16
- data/lib/ResourceScenario.rb +1 -22
- data/lib/RichTextElement.rb +42 -0
- data/lib/RichTextParser.rb +6 -4
- data/lib/RichTextScanner.rb +5 -5
- data/lib/RichTextSyntaxRules.rb +48 -10
- data/lib/ScenarioData.rb +5 -3
- data/lib/SheetReceiver.rb +24 -6
- data/lib/SheetSender.rb +17 -13
- data/lib/ShiftAssignments.rb +56 -52
- data/lib/StatusSheetReceiver.rb +1 -0
- data/lib/StatusSheetSender.rb +1 -0
- data/lib/TableColumnDefinition.rb +4 -2
- data/lib/Task.rb +8 -9
- data/lib/TaskJuggler.rb +21 -11
- data/lib/TaskScenario.rb +61 -26
- data/lib/TextParser.rb +268 -106
- data/lib/TextParser/Rule.rb +4 -2
- data/lib/TextParser/StackElement.rb +6 -4
- data/lib/TextScanner.rb +283 -700
- data/lib/TimeSheetReceiver.rb +1 -0
- data/lib/TimeSheetSender.rb +1 -0
- data/lib/TimeSheetSummary.rb +51 -26
- data/lib/TimeSheets.rb +1 -1
- data/lib/Tj3AppBase.rb +8 -1
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +5 -0
- data/lib/TjpSyntaxRules.rb +360 -144
- data/lib/URLParameter.rb +30 -0
- data/lib/XMLDocument.rb +2 -2
- data/lib/daemon/ProcessIntercom.rb +50 -9
- data/lib/daemon/ProjectBroker.rb +63 -10
- data/lib/daemon/ProjectServer.rb +47 -16
- data/lib/daemon/ReportServer.rb +9 -4
- data/lib/daemon/WebServer.rb +204 -0
- data/lib/deep_copy.rb +4 -1
- data/lib/reports/CSVFile.rb +150 -66
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/Navigator.rb +18 -5
- data/lib/reports/NikuReport.rb +32 -2
- data/lib/reports/Report.rb +65 -37
- data/lib/reports/ReportBase.rb +14 -9
- data/lib/reports/ReportContext.rb +19 -4
- data/lib/reports/ReportTable.rb +2 -2
- data/lib/reports/ReportTableCell.rb +54 -30
- data/lib/reports/ResourceListRE.rb +4 -3
- data/lib/reports/StatusSheetReport.rb +8 -13
- data/lib/reports/TableReport.rb +47 -32
- data/lib/reports/TaskListRE.rb +3 -3
- data/lib/reports/TimeSheetReport.rb +14 -5
- data/lib/reports/TjpExportRE.rb +14 -19
- data/lib/taskjuggler3.rb +15 -0
- data/lib/tj3client.rb +9 -7
- data/lib/tj3d.rb +38 -10
- data/lib/tj3ss_sender.rb +7 -0
- data/lib/tj3ts_receiver.rb +1 -0
- data/manual/Day_To_Day_Juggling +1 -1
- data/manual/Rich_Text_Attributes +8 -0
- data/manual/TaskJuggler_2x_Migration +7 -0
- data/manual/The_TaskJuggler_Syntax +20 -6
- data/prj_cfg.rb +3 -2
- data/tasks/changelog.rake +36 -0
- data/tasks/csts.rake +2 -3
- data/tasks/gem.rake +10 -0
- data/tasks/missing.rake +0 -17
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
- data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
- 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.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
- data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
- data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
- data/test/TestSuite/StatusSheets/run +3 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +5 -5
- data/test/test_CSVFile.rb +75 -0
- data/test/test_Limits.rb +63 -5
- data/test/test_ProjectFileScanner.rb +163 -0
- data/test/test_ReportGenerator.rb +81 -0
- data/test/test_RichText.rb +21 -3
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +4 -4
- data/test/test_Syntax.rb +1 -1
- data/test/test_URLParameter.rb +30 -0
- metadata +126 -32
- data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
- data/test/TestSuite/TimeSheets/receiver.log +0 -102
- data/test/TestSuite/TimeSheets/sender.log +0 -794
- data/test/TestSuite/TimeSheets/summary.log +0 -884
- data/test/TestSuite/TimeSheets/timesheets.log +0 -45
- data/test/TestSuite/TimeSheets/tj3d.log +0 -292
- data/test/test_TextScanner.rb +0 -95
data/lib/Query.rb
CHANGED
|
@@ -179,7 +179,7 @@ class TaskJuggler
|
|
|
179
179
|
|
|
180
180
|
# Return the result of the Query as String. The result may be nil.
|
|
181
181
|
def to_s
|
|
182
|
-
@attr ? @attr.to_s(self) : (@string || '')
|
|
182
|
+
@attr ? @attr.to_s(self) : (@rti ? @rti.to_s : (@string || ''))
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
# Return the result of the Query as Fixnum or Float. The result may be
|
|
@@ -207,6 +207,8 @@ class TaskJuggler
|
|
|
207
207
|
else
|
|
208
208
|
@attr.value
|
|
209
209
|
end
|
|
210
|
+
elsif @rti
|
|
211
|
+
@rti
|
|
210
212
|
elsif @numerical
|
|
211
213
|
@numerical
|
|
212
214
|
else
|
data/lib/RTFHandlers.rb
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -w
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
#
|
|
4
|
+
# = RTFHandlers.rb -- The TaskJuggler III Project Management Software
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
|
|
7
|
+
#
|
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
|
9
|
+
# it under the terms of version 2 of the GNU General Public License as
|
|
10
|
+
# published by the Free Software Foundation.
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
require 'RTFNavigator'
|
|
14
|
+
require 'RTFQuery'
|
|
15
|
+
require 'RTFReport'
|
|
16
|
+
require 'RTFReportLink'
|
|
17
|
+
|
|
18
|
+
class TaskJuggler
|
|
19
|
+
|
|
20
|
+
# This convenience class creates an Array containing all RichTextFunction
|
|
21
|
+
# objects used by TaskJuggler.
|
|
22
|
+
class RTFHandlers
|
|
23
|
+
|
|
24
|
+
def RTFHandlers.create(project, sourceFileInfo = nil)
|
|
25
|
+
[
|
|
26
|
+
RTFNavigator.new(project, sourceFileInfo),
|
|
27
|
+
RTFQuery.new(project, sourceFileInfo),
|
|
28
|
+
RTFReport.new(project, sourceFileInfo),
|
|
29
|
+
RTFReportLink.new(project, sourceFileInfo)
|
|
30
|
+
]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
end
|
data/lib/RTFReport.rb
CHANGED
|
@@ -40,16 +40,33 @@ class TaskJuggler
|
|
|
40
40
|
error('rtp_report_unknown_id', "Unknown report #{id}")
|
|
41
41
|
return nil
|
|
42
42
|
end
|
|
43
|
+
# Detect recursive nesting
|
|
44
|
+
found = false
|
|
45
|
+
@project.reportContexts.each do |c|
|
|
46
|
+
if c.report == report
|
|
47
|
+
found = true
|
|
48
|
+
break
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
if found
|
|
52
|
+
stack = ""
|
|
53
|
+
@project.reportContexts.each do |context|
|
|
54
|
+
stack += ' -> ' unless stack.empty?
|
|
55
|
+
stack += '[ ' if context.report == report
|
|
56
|
+
stack += context.report.fullId
|
|
57
|
+
end
|
|
58
|
+
stack += " -> #{report.fullId} ] ..."
|
|
59
|
+
error('rtp_report_recursion',
|
|
60
|
+
"Recursive nesting of reports detected: #{stack}")
|
|
61
|
+
return nil
|
|
62
|
+
end
|
|
43
63
|
|
|
44
|
-
# Save the old report context record
|
|
45
|
-
oldReportContext = @project.reportContext
|
|
46
64
|
# Create a new context for the report.
|
|
47
|
-
@project.
|
|
65
|
+
@project.reportContexts.push(ReportContext.new(@project, report))
|
|
48
66
|
# Generate the report with the new context
|
|
49
|
-
report.
|
|
67
|
+
report.generateIntermediateFormat
|
|
50
68
|
html = report.to_html
|
|
51
|
-
|
|
52
|
-
@project.reportContext = oldReportContext
|
|
69
|
+
@project.reportContexts.pop
|
|
53
70
|
|
|
54
71
|
html
|
|
55
72
|
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -w
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
#
|
|
4
|
+
# = RTFReportLink.rb -- The TaskJuggler III Project Management Software
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger <cs@kde.org>
|
|
7
|
+
#
|
|
8
|
+
# This program is free software; you can redistribute it and/or modify
|
|
9
|
+
# it under the terms of version 2 of the GNU General Public License as
|
|
10
|
+
# published by the Free Software Foundation.
|
|
11
|
+
#
|
|
12
|
+
|
|
13
|
+
require 'RichTextFunctionHandler'
|
|
14
|
+
require 'XMLElement'
|
|
15
|
+
require 'URLParameter'
|
|
16
|
+
|
|
17
|
+
class TaskJuggler
|
|
18
|
+
|
|
19
|
+
# This class is a specialized RichTextFunctionHandler that generates a link
|
|
20
|
+
# to another report. It's not available on all output formats.
|
|
21
|
+
class RTFReportLink < RichTextFunctionHandler
|
|
22
|
+
|
|
23
|
+
def initialize(project, sourceFileInfo = nil)
|
|
24
|
+
super(project, 'reportlink', sourceFileInfo)
|
|
25
|
+
@blockFunction = false
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Not supported for this function
|
|
29
|
+
def to_s(args)
|
|
30
|
+
''
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# Return a HTML tree for the report.
|
|
34
|
+
def to_html(args)
|
|
35
|
+
if args.nil? || (id = args['id']).nil?
|
|
36
|
+
error('rtp_report_id',
|
|
37
|
+
"Argument 'id' missing to specify the report to be used.")
|
|
38
|
+
return nil
|
|
39
|
+
end
|
|
40
|
+
unless (report = @project.report(id))
|
|
41
|
+
error('rtp_report_unknown_id', "Unknown report #{id}")
|
|
42
|
+
return nil
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
# The URL for interactive reports is different than for static reports.
|
|
46
|
+
if report.interactive?
|
|
47
|
+
# The project and report ID must be provided as query.
|
|
48
|
+
url = "taskjuggler?project=#{@project['projectid']};" +
|
|
49
|
+
"report=#{report.fullId}"
|
|
50
|
+
|
|
51
|
+
if args['attributes']
|
|
52
|
+
url += ";attributes=" + URLParameter.encode(args['attributes'])
|
|
53
|
+
end
|
|
54
|
+
else
|
|
55
|
+
# The report name just gets a '.html' extension.
|
|
56
|
+
url = report.name + ".html"
|
|
57
|
+
end
|
|
58
|
+
a = XMLElement.new('a', 'href'=> url)
|
|
59
|
+
a << XMLText.new(report.name)
|
|
60
|
+
a
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# Not supported for this function.
|
|
64
|
+
def to_tagged(args)
|
|
65
|
+
nil
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
|
data/lib/Resource.rb
CHANGED
|
@@ -37,7 +37,7 @@ class TaskJuggler
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def query_journal(query)
|
|
40
|
-
|
|
40
|
+
journalText(query, true)
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def query_dashboard(query)
|
|
@@ -47,7 +47,7 @@ class TaskJuggler
|
|
|
47
47
|
private
|
|
48
48
|
|
|
49
49
|
# Create a blog-style list of all alert messages that match the Query.
|
|
50
|
-
def
|
|
50
|
+
def journalText(query, longVersion)
|
|
51
51
|
# The components of the message are either UTF-8 text or RichText. For
|
|
52
52
|
# the RichText components, we use the originally provided markup since
|
|
53
53
|
# we compose the result as RichText markup first.
|
|
@@ -66,8 +66,8 @@ class TaskJuggler
|
|
|
66
66
|
alertName = "[[File:icons/flag-#{levelRecord[0]}.png|" +
|
|
67
67
|
"alt=[#{levelRecord[1]}]|text-bottom]]"
|
|
68
68
|
levelList.each do |entry|
|
|
69
|
-
# The TimeSheetRecords associated with this entry.
|
|
70
69
|
tsRecord = entry.timeSheetRecord
|
|
70
|
+
|
|
71
71
|
if entry.property.is_a?(Task)
|
|
72
72
|
rText += "== #{alertName} <nowiki>#{entry.property.name}</nowiki> "+
|
|
73
73
|
"(ID: #{entry.property.fullId}) ==\n\n"
|
|
@@ -122,13 +122,9 @@ class TaskJuggler
|
|
|
122
122
|
|
|
123
123
|
# Now convert the RichText markup String into RichTextIntermediate
|
|
124
124
|
# format.
|
|
125
|
-
handlers = [
|
|
126
|
-
RTFNavigator.new(@project),
|
|
127
|
-
RTFQuery.new(@project),
|
|
128
|
-
RTFReport.new(@project)
|
|
129
|
-
]
|
|
130
125
|
begin
|
|
131
|
-
rti = RichText.new(rText,
|
|
126
|
+
rti = RichText.new(rText, RTFHandlers.create(@project)).
|
|
127
|
+
generateIntermediateFormat
|
|
132
128
|
rescue RichTextException => msg
|
|
133
129
|
$stderr.puts "Error while processing Rich Text\n" +
|
|
134
130
|
"Line #{msg.lineNo}: #{msg.text}\n" +
|
|
@@ -167,19 +163,15 @@ class TaskJuggler
|
|
|
167
163
|
taskList.each do |task|
|
|
168
164
|
rText += "== <nowiki>[#{task.query_alert(query)}] Task: " +
|
|
169
165
|
"#{task.name}</nowiki> (#{task.fullId}) ==\n\n"
|
|
170
|
-
|
|
166
|
+
rText += task.query_journalmessages(query).richText.inputText + "\n\n"
|
|
171
167
|
end
|
|
172
168
|
end
|
|
173
169
|
|
|
174
170
|
# Now convert the RichText markup String into RichTextIntermediate
|
|
175
171
|
# format.
|
|
176
|
-
handlers = [
|
|
177
|
-
RTFNavigator.new(@project),
|
|
178
|
-
RTFQuery.new(@project),
|
|
179
|
-
RTFReport.new(@project)
|
|
180
|
-
]
|
|
181
172
|
begin
|
|
182
|
-
rti = RichText.new(rText,
|
|
173
|
+
rti = RichText.new(rText, RTFHandlers.create(@project)).
|
|
174
|
+
generateIntermediateFormat
|
|
183
175
|
rescue RichTextException => msg
|
|
184
176
|
$stderr.puts "Error while processing Rich Text\n" +
|
|
185
177
|
"Line #{msg.lineNo}: #{msg.text}\n" +
|
data/lib/ResourceScenario.rb
CHANGED
|
@@ -310,27 +310,6 @@ class TaskJuggler
|
|
|
310
310
|
work
|
|
311
311
|
end
|
|
312
312
|
|
|
313
|
-
# Returns the allocated work of the resource (and its children).
|
|
314
|
-
def getAllocatedWork(startIdx, endIdx, task = nil)
|
|
315
|
-
# Convert the interval dates to indexes if needed.
|
|
316
|
-
startIdx = @project.dateToIdx(startIdx, true) if startIdx.is_a?(TjTime)
|
|
317
|
-
endIdx = @project.dateToIdx(endIdx, true) if endIdx.is_a?(TjTime)
|
|
318
|
-
|
|
319
|
-
work = 0.0
|
|
320
|
-
if @property.container?
|
|
321
|
-
@property.children.each do |resource|
|
|
322
|
-
work += resource.getAllocatedWork(@scenarioIdx, startIdx, endIdx, task)
|
|
323
|
-
end
|
|
324
|
-
else
|
|
325
|
-
return 0.0 if @scoreboard.nil?
|
|
326
|
-
|
|
327
|
-
work = @project.convertToDailyLoad(
|
|
328
|
-
getAllocatedSlots(startIdx, endIdx, task) *
|
|
329
|
-
@project['scheduleGranularity'])
|
|
330
|
-
end
|
|
331
|
-
work
|
|
332
|
-
end
|
|
333
|
-
|
|
334
313
|
# Returns the allocated accumulated time of this resource and its children.
|
|
335
314
|
def getAllocatedTime(startIdx, endIdx, task = nil)
|
|
336
315
|
# Convert the interval dates to indexes if needed.
|
|
@@ -340,7 +319,7 @@ class TaskJuggler
|
|
|
340
319
|
time = 0
|
|
341
320
|
if @property.container?
|
|
342
321
|
@property.children.each do |resource|
|
|
343
|
-
time += resource.
|
|
322
|
+
time += resource.getAllocatedTime(@scenarioIdx, startIdx, endIdx, task)
|
|
344
323
|
end
|
|
345
324
|
else
|
|
346
325
|
return 0 if @scoreboard.nil?
|
data/lib/RichTextElement.rb
CHANGED
|
@@ -98,6 +98,8 @@ class TaskJuggler
|
|
|
98
98
|
number = "#{@data[0]}.#{@data[1]} "
|
|
99
99
|
when :title3
|
|
100
100
|
number = "#{@data[0]}.#{@data[1]}.#{@data[2]} "
|
|
101
|
+
when :title4
|
|
102
|
+
number = "#{@data[0]}.#{@data[1]}.#{@data[2]}.#{@data[3]} "
|
|
101
103
|
end
|
|
102
104
|
if number
|
|
103
105
|
# We've found a section heading. The String value of the Element is the
|
|
@@ -153,6 +155,10 @@ class TaskJuggler
|
|
|
153
155
|
return textBlockFormat(@richText.indent + @richText.titleIndent,
|
|
154
156
|
sTitle(3), children_to_s,
|
|
155
157
|
@richText.lineWidth) + "\n"
|
|
158
|
+
when :title4
|
|
159
|
+
return textBlockFormat(@richText.indent + @richText.titleIndent,
|
|
160
|
+
sTitle(4), children_to_s,
|
|
161
|
+
@richText.lineWidth) + "\n"
|
|
156
162
|
when :hline
|
|
157
163
|
return "#{' ' * @richText.indent}" +
|
|
158
164
|
"#{'-' * (@richText.lineWidth - @richText.indent)}\n"
|
|
@@ -178,6 +184,11 @@ class TaskJuggler
|
|
|
178
184
|
return textBlockFormat(@richText.indent + @richText.listIndent * 3,
|
|
179
185
|
'* ', children_to_s,
|
|
180
186
|
@richText.lineWidth) + "\n"
|
|
187
|
+
when :bulletlist4
|
|
188
|
+
when :bulletitem4
|
|
189
|
+
return textBlockFormat(@richText.indent + @richText.listIndent * 4,
|
|
190
|
+
'* ', children_to_s,
|
|
191
|
+
@richText.lineWidth) + "\n"
|
|
181
192
|
when :numberlist1
|
|
182
193
|
when :numberitem1
|
|
183
194
|
return textBlockFormat(@richText.indent + @richText.listIndent,
|
|
@@ -193,6 +204,12 @@ class TaskJuggler
|
|
|
193
204
|
return textBlockFormat(@richText.indent + @richText.listIndent,
|
|
194
205
|
"#{@data[0]}.#{@data[1]}.#{@data[2]} ",
|
|
195
206
|
children_to_s, @richText.lineWidth) + "\n"
|
|
207
|
+
when :numberlist4
|
|
208
|
+
when :numberitem4
|
|
209
|
+
return textBlockFormat(@richText.indent + @richText.listIndent,
|
|
210
|
+
"#{@data[0]}.#{@data[1]}.#{@data[2]}." +
|
|
211
|
+
"#{@data[3]} ",
|
|
212
|
+
children_to_s, @richText.lineWidth) + "\n"
|
|
196
213
|
when :img
|
|
197
214
|
pre = @data.altText if @data.altText
|
|
198
215
|
when :ref
|
|
@@ -232,6 +249,9 @@ class TaskJuggler
|
|
|
232
249
|
when :title3
|
|
233
250
|
pre = "<h3>#{@data[0]}.#{@data[1]}.#{@data[2]} "
|
|
234
251
|
post = "</h3>\n\n"
|
|
252
|
+
when :title4
|
|
253
|
+
pre = "<h4>#{@data[0]}.#{@data[1]}.#{@data[2]}.#{@data[3]} "
|
|
254
|
+
post = "</h4>\n\n"
|
|
235
255
|
when :hline
|
|
236
256
|
pre = '<hr>'
|
|
237
257
|
post = "</hr>\n"
|
|
@@ -259,6 +279,12 @@ class TaskJuggler
|
|
|
259
279
|
when :bulletitem3
|
|
260
280
|
pre = '<li> * '
|
|
261
281
|
post = "</li>\n"
|
|
282
|
+
when :bulletlist4
|
|
283
|
+
pre = '<ul>'
|
|
284
|
+
post = '</ul>'
|
|
285
|
+
when :bulletitem4
|
|
286
|
+
pre = '<li> * '
|
|
287
|
+
post = "</li>\n"
|
|
262
288
|
when :numberlist1
|
|
263
289
|
pre = '<ol>'
|
|
264
290
|
post = '</ol>'
|
|
@@ -277,6 +303,12 @@ class TaskJuggler
|
|
|
277
303
|
when :numberitem3
|
|
278
304
|
pre = "<li>#{@data[0]}.#{@data[1]}.#{@data[2]} "
|
|
279
305
|
post = "</li>\n"
|
|
306
|
+
when :numberlist4
|
|
307
|
+
pre = '<ol>'
|
|
308
|
+
post = '</ol>'
|
|
309
|
+
when :numberitem4
|
|
310
|
+
pre = "<li>#{@data[0]}.#{@data[1]}.#{@data[2]}.#{@data[3]} "
|
|
311
|
+
post = "</li>\n"
|
|
280
312
|
when :img
|
|
281
313
|
pre = "<img file=\"#{@data.fileName}\"/>"
|
|
282
314
|
when :ref
|
|
@@ -346,6 +378,8 @@ class TaskJuggler
|
|
|
346
378
|
htmlTitle(2)
|
|
347
379
|
when :title3
|
|
348
380
|
htmlTitle(3)
|
|
381
|
+
when :title4
|
|
382
|
+
htmlTitle(4)
|
|
349
383
|
when :hline
|
|
350
384
|
noChilds = true
|
|
351
385
|
XMLElement.new('hr', attrs, true)
|
|
@@ -370,6 +404,10 @@ class TaskJuggler
|
|
|
370
404
|
XMLElement.new('ul')
|
|
371
405
|
when :bulletitem3
|
|
372
406
|
XMLElement.new('li')
|
|
407
|
+
when :bulletlist4
|
|
408
|
+
XMLElement.new('ul')
|
|
409
|
+
when :bulletitem4
|
|
410
|
+
XMLElement.new('li')
|
|
373
411
|
when :numberlist1
|
|
374
412
|
XMLElement.new('ol')
|
|
375
413
|
when :numberitem1
|
|
@@ -382,6 +420,10 @@ class TaskJuggler
|
|
|
382
420
|
XMLElement.new('ol')
|
|
383
421
|
when :numberitem3
|
|
384
422
|
XMLElement.new('li')
|
|
423
|
+
when :numberlist4
|
|
424
|
+
XMLElement.new('ol')
|
|
425
|
+
when :numberitem4
|
|
426
|
+
XMLElement.new('li')
|
|
385
427
|
when :img
|
|
386
428
|
el = XMLElement.new('img', 'src' => @data.fileName)
|
|
387
429
|
el['alt'] = @data.altText if @data.altText
|
data/lib/RichTextParser.rb
CHANGED
|
@@ -27,7 +27,7 @@ class TaskJuggler
|
|
|
27
27
|
|
|
28
28
|
# Create the parser and initialize the rule set. _rt_ is the RichText object
|
|
29
29
|
# the resulting tree of RichTextElement objects should belong to.
|
|
30
|
-
def initialize(rti, sectionCounter = [ 0, 0, 0], tokenSet = nil)
|
|
30
|
+
def initialize(rti, sectionCounter = [ 0, 0, 0, 0 ], tokenSet = nil)
|
|
31
31
|
super()
|
|
32
32
|
@richTextI = rti
|
|
33
33
|
# These are the tokens that can be returned by the RichTextScanner.
|
|
@@ -36,15 +36,17 @@ class TaskJuggler
|
|
|
36
36
|
QUERY
|
|
37
37
|
INLINEFUNCSTART INLINEFUNCEND
|
|
38
38
|
BLOCKFUNCSTART BLOCKFUNCEND ID STRING
|
|
39
|
-
TITLE1 TITLE2 TITLE3
|
|
40
|
-
|
|
39
|
+
TITLE1 TITLE2 TITLE3 TITLE4
|
|
40
|
+
TITLE1END TITLE2END TITLE3END TITLE4END
|
|
41
|
+
BULLET1 BULLET2 BULLET3 BULLET4
|
|
42
|
+
NUMBER1 NUMBER2 NUMBER3 NUMBER4 )
|
|
41
43
|
limitTokenSet(tokenSet)
|
|
42
44
|
# Load the rule set into the parser.
|
|
43
45
|
initRules
|
|
44
46
|
# The sections and numbered list can each nest 3 levels deep. We use these
|
|
45
47
|
# counter Arrays to generate proper 1.2.3 type labels.
|
|
46
48
|
@sectionCounter = sectionCounter
|
|
47
|
-
@numberListCounter = [ 0, 0, 0 ]
|
|
49
|
+
@numberListCounter = [ 0, 0, 0, 0 ]
|
|
48
50
|
end
|
|
49
51
|
|
|
50
52
|
# Construct the parser and get ready to read.
|
data/lib/RichTextScanner.rb
CHANGED
|
@@ -112,7 +112,7 @@ class TaskJuggler
|
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
# The parser uses this function to report any errors during parsing.
|
|
115
|
-
def error(id, text, foo)
|
|
115
|
+
def error(id, text, foo = nil, bar = nil)
|
|
116
116
|
if @debug
|
|
117
117
|
$stderr.puts "Line #{@lineNo}: #{text}\n" +
|
|
118
118
|
"#{@text[@lineStart, @pos - @lineStart]}"
|
|
@@ -237,7 +237,7 @@ class TaskJuggler
|
|
|
237
237
|
case (c = nextChar)
|
|
238
238
|
when '='
|
|
239
239
|
# Headings start with 2 or more = and must be followed by a space.
|
|
240
|
-
level = readSequenceMax('=',
|
|
240
|
+
level = readSequenceMax('=', 5)
|
|
241
241
|
if level == 1
|
|
242
242
|
# 1 = does not mean anything. Push it back and process it as normal
|
|
243
243
|
# text further down.
|
|
@@ -256,7 +256,7 @@ class TaskJuggler
|
|
|
256
256
|
returnChar(level)
|
|
257
257
|
when '*'
|
|
258
258
|
# Bullet lists start with one to three * characters.
|
|
259
|
-
level = readSequenceMax('*')
|
|
259
|
+
level = readSequenceMax('*', 4)
|
|
260
260
|
# Between the * characters and the bullet text must be exactly one
|
|
261
261
|
# space.
|
|
262
262
|
return [ "BULLET#{level}", '*' * level ] if nextChar == ' '
|
|
@@ -264,7 +264,7 @@ class TaskJuggler
|
|
|
264
264
|
returnChar(level + 1)
|
|
265
265
|
when '#'
|
|
266
266
|
# Numbered list start with one to three # characters.
|
|
267
|
-
level = readSequenceMax('#')
|
|
267
|
+
level = readSequenceMax('#', 4)
|
|
268
268
|
# Between the # characters and the bullet text must be exactly one
|
|
269
269
|
# space.
|
|
270
270
|
return [ "NUMBER#{level}", '#' * level ] if nextChar == ' '
|
|
@@ -322,7 +322,7 @@ class TaskJuggler
|
|
|
322
322
|
nil
|
|
323
323
|
end
|
|
324
324
|
elsif c == '=' && !@ignoreInlineMarkup
|
|
325
|
-
level = readSequenceMax('=',
|
|
325
|
+
level = readSequenceMax('=', 5)
|
|
326
326
|
if level > 1
|
|
327
327
|
[ "TITLE#{level - 1}END", '=' * level ]
|
|
328
328
|
else
|