taskjuggler 0.0.3 → 0.0.4
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/benchmarks/UTF-8-Strings.rb +58 -0
- data/data/css/tjmanual.css +52 -0
- data/data/css/tjreport.css +195 -0
- data/data/icons/details.png +0 -0
- data/data/icons/flag-green.png +0 -0
- data/data/icons/flag-red.png +0 -0
- data/data/icons/flag-yellow.png +0 -0
- data/data/icons/resource.png +0 -0
- data/data/icons/resourcegroup.png +0 -0
- data/data/icons/task.png +0 -0
- data/data/icons/taskgroup.png +0 -0
- data/data/icons/trend-down.png +0 -0
- data/data/icons/trend-flat.png +0 -0
- data/data/icons/trend-up.png +0 -0
- data/data/scripts/wz_tooltip.js +1301 -0
- data/doc/classes/AppConfig.html +298 -230
- data/doc/classes/Arguments.html +8 -8
- data/doc/classes/Object.html +7 -7
- data/doc/classes/String.html +89 -89
- data/doc/classes/TaskJuggler.html +396 -264
- data/doc/classes/TaskJuggler/Account.html +18 -18
- data/doc/classes/TaskJuggler/AccountAttribute.html +26 -26
- data/doc/classes/TaskJuggler/AccountScenario.html +12 -12
- data/doc/classes/TaskJuggler/Allocation.html +30 -30
- data/doc/classes/TaskJuggler/AllocationAttribute.html +26 -26
- data/doc/classes/TaskJuggler/AttributeBase.html +227 -115
- data/doc/classes/TaskJuggler/AttributeDefinition.html +6 -6
- data/doc/classes/TaskJuggler/BatchProcessor.html +117 -83
- data/doc/classes/TaskJuggler/Booking.html +18 -18
- data/doc/classes/TaskJuggler/BookingListAttribute.html +26 -26
- data/doc/classes/TaskJuggler/BooleanAttribute.html +26 -26
- data/doc/classes/TaskJuggler/CSVFile.html +24 -24
- data/doc/classes/TaskJuggler/CellSettingPattern.html +201 -0
- data/doc/classes/TaskJuggler/CellSettingPatternList.html +253 -0
- data/doc/classes/TaskJuggler/Charge.html +18 -18
- data/doc/classes/TaskJuggler/ChargeListAttribute.html +20 -20
- data/doc/classes/TaskJuggler/ChargeSet.html +37 -37
- data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +26 -26
- data/doc/classes/TaskJuggler/ColumnListAttribute.html +20 -20
- data/doc/classes/TaskJuggler/ColumnTable.html +40 -40
- data/doc/classes/TaskJuggler/DateAttribute.html +54 -15
- data/doc/classes/TaskJuggler/DefinitionListAttribute.html +10 -10
- data/doc/classes/TaskJuggler/DependencyListAttribute.html +47 -47
- data/doc/classes/TaskJuggler/DurationAttribute.html +30 -30
- data/doc/classes/TaskJuggler/FixnumAttribute.html +20 -20
- data/doc/classes/TaskJuggler/FlagListAttribute.html +43 -43
- data/doc/classes/TaskJuggler/FloatAttribute.html +30 -30
- data/doc/classes/TaskJuggler/FormatListAttribute.html +21 -21
- data/doc/classes/TaskJuggler/GanttChart.html +48 -48
- data/doc/classes/TaskJuggler/GanttContainer.html +42 -42
- data/doc/classes/TaskJuggler/GanttHeader.html +12 -12
- data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +12 -12
- data/doc/classes/TaskJuggler/GanttLine.html +24 -24
- data/doc/classes/TaskJuggler/GanttLoadStack.html +18 -18
- data/doc/classes/TaskJuggler/GanttMilestone.html +42 -42
- data/doc/classes/TaskJuggler/GanttRouter.html +24 -24
- data/doc/classes/TaskJuggler/GanttTaskBar.html +42 -42
- data/doc/classes/TaskJuggler/HTMLDocument.html +13 -13
- data/doc/classes/TaskJuggler/HTMLGraphics.html +12 -12
- data/doc/classes/TaskJuggler/Interval.html +57 -57
- data/doc/classes/TaskJuggler/IntervalListAttribute.html +47 -47
- data/doc/classes/TaskJuggler/JobInfo.html +68 -12
- data/doc/classes/TaskJuggler/Journal.html +266 -20
- data/doc/classes/TaskJuggler/JournalEntry.html +79 -23
- data/doc/classes/TaskJuggler/JournalEntryList.html +454 -0
- data/doc/classes/TaskJuggler/KeywordArray.html +10 -10
- data/doc/classes/TaskJuggler/KeywordDocumentation.html +171 -170
- data/doc/classes/TaskJuggler/Limits.html +36 -36
- data/doc/classes/TaskJuggler/Limits/Limit.html +30 -30
- data/doc/classes/TaskJuggler/LimitsAttribute.html +40 -40
- data/doc/classes/TaskJuggler/ListAttributeBase.html +20 -20
- data/doc/classes/TaskJuggler/Log.html +145 -107
- data/doc/classes/TaskJuggler/LogicalAttribute.html +65 -36
- data/doc/classes/TaskJuggler/LogicalExpression.html +61 -24
- data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +20 -20
- data/doc/classes/TaskJuggler/LogicalFlag.html +31 -51
- data/doc/classes/TaskJuggler/LogicalFunction.html +64 -53
- data/doc/classes/TaskJuggler/LogicalOperation.html +103 -55
- data/doc/classes/TaskJuggler/Macro.html +6 -6
- data/doc/classes/TaskJuggler/MacroParser.html +36 -36
- data/doc/classes/TaskJuggler/MacroTable.html +37 -37
- data/doc/classes/TaskJuggler/Message.html +12 -12
- data/doc/classes/TaskJuggler/MessageHandler.html +32 -20
- data/doc/classes/TaskJuggler/Navigator.html +110 -46
- data/doc/classes/TaskJuggler/NavigatorElement.html +449 -0
- data/doc/classes/TaskJuggler/OnShiftCache.html +24 -24
- data/doc/classes/TaskJuggler/Project.html +1158 -893
- data/doc/classes/TaskJuggler/ProjectFileParser.html +94 -91
- data/doc/classes/TaskJuggler/PropertyAttribute.html +20 -20
- data/doc/classes/TaskJuggler/PropertyList.html +225 -155
- data/doc/classes/TaskJuggler/PropertySet.html +375 -332
- data/doc/classes/TaskJuggler/PropertyTreeNode.html +750 -510
- data/doc/classes/TaskJuggler/Query.html +404 -139
- data/doc/classes/TaskJuggler/{RTPNavigator.html → RTFNavigator.html} +57 -56
- data/doc/classes/TaskJuggler/RTFQuery.html +343 -0
- data/doc/classes/TaskJuggler/{RTPReport.html → RTFReport.html} +70 -67
- data/doc/classes/TaskJuggler/RealFormat.html +18 -18
- data/doc/classes/TaskJuggler/RealFormatAttribute.html +10 -10
- data/doc/classes/TaskJuggler/ReferenceAttribute.html +107 -40
- data/doc/classes/TaskJuggler/RemoteServiceManager.html +335 -0
- data/doc/classes/TaskJuggler/Report.html +66 -64
- data/doc/classes/TaskJuggler/ReportBase.html +112 -123
- data/doc/classes/TaskJuggler/ReportContext.html +43 -38
- data/doc/classes/TaskJuggler/ReportServer.html +320 -0
- data/doc/classes/TaskJuggler/ReportTable.html +42 -42
- data/doc/classes/TaskJuggler/ReportTableCell.html +221 -129
- data/doc/classes/TaskJuggler/ReportTableColumn.html +27 -27
- data/doc/classes/TaskJuggler/ReportTableLegend.html +24 -24
- data/doc/classes/TaskJuggler/ReportTableLine.html +126 -80
- data/doc/classes/TaskJuggler/Resource.html +12 -12
- data/doc/classes/TaskJuggler/ResourceListAttribute.html +82 -47
- data/doc/classes/TaskJuggler/ResourceListRE.html +43 -39
- data/doc/classes/TaskJuggler/ResourceScenario.html +413 -321
- data/doc/classes/TaskJuggler/RichText.html +64 -248
- data/doc/classes/TaskJuggler/RichTextAttribute.html +94 -30
- data/doc/classes/TaskJuggler/RichTextDocument.html +87 -85
- data/doc/classes/TaskJuggler/RichTextElement.html +456 -363
- data/doc/classes/TaskJuggler/RichTextException.html +13 -13
- data/doc/classes/TaskJuggler/{RichTextProtocolExample.html → RichTextFunctionExample.html} +64 -63
- data/doc/classes/TaskJuggler/{RichTextProtocolHandler.html → RichTextFunctionHandler.html} +42 -36
- data/doc/classes/TaskJuggler/RichTextIntermediate.html +563 -0
- data/doc/classes/TaskJuggler/RichTextParser.html +54 -51
- data/doc/classes/TaskJuggler/RichTextScanner.html +94 -92
- data/doc/classes/TaskJuggler/RichTextSnip.html +96 -60
- data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +369 -227
- data/doc/classes/TaskJuggler/Scenario.html +6 -6
- data/doc/classes/TaskJuggler/ScenarioData.html +37 -37
- data/doc/classes/TaskJuggler/ScenarioListAttribute.html +31 -31
- data/doc/classes/TaskJuggler/Scoreboard.html +66 -66
- data/doc/classes/TaskJuggler/Shift.html +18 -18
- data/doc/classes/TaskJuggler/ShiftAssignment.html +54 -54
- data/doc/classes/TaskJuggler/ShiftAssignments.html +78 -78
- data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +40 -40
- data/doc/classes/TaskJuggler/ShiftScenario.html +24 -24
- data/doc/classes/TaskJuggler/SortListAttribute.html +22 -22
- data/doc/classes/TaskJuggler/SourceFileInfo.html +12 -12
- data/doc/classes/TaskJuggler/StringAttribute.html +30 -30
- data/doc/classes/TaskJuggler/SymbolAttribute.html +20 -20
- data/doc/classes/TaskJuggler/SyntaxReference.html +42 -42
- data/doc/classes/TaskJuggler/TOCEntry.html +12 -12
- data/doc/classes/TaskJuggler/TSResourceRecord.html +197 -0
- data/doc/classes/TaskJuggler/TSTaskRecord.html +215 -0
- data/doc/classes/TaskJuggler/TableColumnDefinition.html +64 -43
- data/doc/classes/TaskJuggler/TableOfContents.html +18 -18
- data/doc/classes/TaskJuggler/TableReport.html +447 -468
- data/doc/classes/TaskJuggler/Task.html +12 -12
- data/doc/classes/TaskJuggler/TaskDependency.html +12 -12
- data/doc/classes/TaskJuggler/TaskListAttribute.html +47 -47
- data/doc/classes/TaskJuggler/TaskListRE.html +43 -39
- data/doc/classes/TaskJuggler/TaskScenario.html +529 -282
- data/doc/classes/TaskJuggler/TextParser.html +215 -194
- data/doc/classes/TaskJuggler/TextParser/Pattern.html +97 -97
- data/doc/classes/TaskJuggler/TextParser/Rule.html +84 -84
- data/doc/classes/TaskJuggler/TextParser/StackElement.html +16 -15
- data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +12 -12
- data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +6 -6
- data/doc/classes/TaskJuggler/TextReport.html +77 -74
- data/doc/classes/TaskJuggler/TextScanner.html +294 -281
- data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +70 -70
- data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +59 -60
- data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +12 -12
- data/doc/classes/TaskJuggler/TimeSheetReport.html +406 -0
- data/doc/classes/TaskJuggler/TjException.html +6 -6
- data/doc/classes/TaskJuggler/TjTime.html +522 -513
- data/doc/classes/TaskJuggler/TjpExample.html +25 -25
- data/doc/classes/TaskJuggler/TjpExportRE.html +21 -24
- data/doc/classes/TaskJuggler/TjpSyntaxRules.html +6177 -4318
- data/doc/classes/TaskJuggler/UserManual.html +212 -213
- data/doc/classes/TaskJuggler/WorkingHours.html +49 -49
- data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +53 -53
- data/doc/classes/TaskJuggler/XMLBlob.html +21 -21
- data/doc/classes/TaskJuggler/XMLComment.html +21 -21
- data/doc/classes/TaskJuggler/XMLDocument.html +27 -26
- data/doc/classes/TaskJuggler/XMLElement.html +86 -50
- data/doc/classes/TaskJuggler/XMLNamedText.html +11 -11
- data/doc/classes/TaskJuggler/XMLText.html +36 -36
- data/doc/files/COPYING.html +1 -1
- data/doc/files/README.html +1 -1
- data/doc/files/lib/AccountScenario_rb.html +3 -2
- data/doc/files/lib/Account_rb.html +3 -2
- data/doc/files/lib/Allocation_rb.html +3 -2
- data/doc/files/lib/AppConfig_rb.html +5 -2
- data/doc/files/lib/AttributeBase_rb.html +3 -2
- data/doc/files/lib/AttributeDefinition_rb.html +3 -2
- data/doc/files/lib/Attributes_rb.html +3 -2
- data/doc/files/lib/BatchProcessor_rb.html +4 -3
- data/doc/files/lib/Booking_rb.html +3 -2
- data/doc/files/lib/ChargeSet_rb.html +3 -2
- data/doc/files/lib/Charge_rb.html +3 -2
- data/doc/files/lib/HTMLDocument_rb.html +3 -2
- data/doc/files/lib/Interval_rb.html +3 -2
- data/doc/files/lib/Journal_rb.html +4 -3
- data/doc/files/lib/KeywordArray_rb.html +3 -2
- data/doc/files/lib/KeywordDocumentation_rb.html +3 -2
- data/doc/files/lib/Limits_rb.html +3 -2
- data/doc/files/lib/Log_rb.html +3 -2
- data/doc/files/lib/LogicalExpression_rb.html +3 -2
- data/doc/files/lib/LogicalFunction_rb.html +3 -2
- data/doc/files/lib/LogicalOperation_rb.html +3 -2
- data/doc/files/lib/MacroParser_rb.html +3 -2
- data/doc/files/lib/MacroTable_rb.html +3 -2
- data/doc/files/lib/MessageHandler_rb.html +3 -2
- data/doc/files/lib/Message_rb.html +3 -2
- data/doc/files/lib/ProjectFileParser_rb.html +7 -4
- data/doc/files/lib/Project_rb.html +3 -2
- data/doc/files/lib/PropertyList_rb.html +3 -2
- data/doc/files/lib/PropertySet_rb.html +3 -2
- data/doc/files/lib/PropertyTreeNode_rb.html +3 -2
- data/doc/files/lib/Query_rb.html +3 -2
- data/doc/files/lib/{RTPNavigator_rb.html → RTFNavigator_rb.html} +8 -7
- data/doc/files/lib/RTFQuery_rb.html +121 -0
- data/doc/files/lib/{RTPReport_rb.html → RTFReport_rb.html} +8 -7
- data/doc/files/lib/RealFormat_rb.html +3 -2
- data/doc/files/lib/RemoteServiceManager_rb.html +117 -0
- data/doc/files/lib/ReportServer_rb.html +107 -0
- data/doc/files/lib/ResourceScenario_rb.html +3 -2
- data/doc/files/lib/Resource_rb.html +3 -2
- data/doc/files/lib/RichTextDocument_rb.html +4 -3
- data/doc/files/lib/RichTextElement_rb.html +3 -2
- data/doc/files/lib/{RichTextProtocolExample_rb.html → RichTextFunctionExample_rb.html} +8 -7
- data/doc/files/lib/{RichTextProtocolHandler_rb.html → RichTextFunctionHandler_rb.html} +7 -6
- data/doc/files/lib/RichTextParser_rb.html +3 -2
- data/doc/files/lib/RichTextScanner_rb.html +3 -2
- data/doc/files/lib/RichTextSnip_rb.html +3 -2
- data/doc/files/lib/RichTextSyntaxRules_rb.html +3 -2
- data/doc/files/lib/RichText_rb.html +3 -2
- data/doc/files/lib/ScenarioData_rb.html +3 -2
- data/doc/files/lib/Scenario_rb.html +3 -2
- data/doc/files/lib/Scoreboard_rb.html +3 -2
- data/doc/files/lib/ShiftAssignments_rb.html +3 -2
- data/doc/files/lib/ShiftScenario_rb.html +3 -2
- data/doc/files/lib/Shift_rb.html +3 -2
- data/doc/files/lib/SourceFileInfo_rb.html +3 -2
- data/doc/files/lib/SyntaxReference_rb.html +3 -2
- data/doc/files/lib/TOCEntry_rb.html +3 -2
- data/doc/files/lib/TableColumnDefinition_rb.html +3 -2
- data/doc/files/lib/TableOfContents_rb.html +3 -2
- data/doc/files/lib/TaskDependency_rb.html +3 -2
- data/doc/files/lib/TaskJuggler_rb.html +7 -2
- data/doc/files/lib/TaskScenario_rb.html +3 -2
- data/doc/files/lib/Task_rb.html +3 -2
- data/doc/files/lib/TextParser/Pattern_rb.html +4 -3
- data/doc/files/lib/TextParser/Rule_rb.html +4 -3
- data/doc/files/lib/TextParser/StackElement_rb.html +4 -3
- data/doc/files/lib/TextParser/TokenDoc_rb.html +4 -3
- data/doc/files/lib/TextParser_rb.html +3 -2
- data/doc/files/lib/TextScanner_rb.html +3 -2
- data/doc/files/lib/Tj3Config_rb.html +3 -2
- data/doc/files/lib/TjException_rb.html +3 -2
- data/doc/files/lib/TjTime_rb.html +3 -2
- data/doc/files/lib/TjpExample_rb.html +3 -2
- data/doc/files/lib/TjpSyntaxRules_rb.html +3 -2
- data/doc/files/lib/UTF8String_rb.html +14 -6
- data/doc/files/lib/UserManual_rb.html +6 -3
- data/doc/files/lib/WorkingHours_rb.html +3 -2
- data/doc/files/lib/XMLDocument_rb.html +3 -2
- data/doc/files/lib/XMLElement_rb.html +3 -2
- data/doc/files/lib/deep_copy_rb.html +3 -2
- data/doc/files/lib/reports/CSVFile_rb.html +3 -2
- data/doc/files/lib/reports/ColumnTable_rb.html +3 -2
- data/doc/files/lib/reports/GanttChart_rb.html +3 -2
- data/doc/files/lib/reports/GanttContainer_rb.html +3 -2
- data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +3 -2
- data/doc/files/lib/reports/GanttHeader_rb.html +3 -2
- data/doc/files/lib/reports/GanttLine_rb.html +3 -2
- data/doc/files/lib/reports/GanttLoadStack_rb.html +3 -2
- data/doc/files/lib/reports/GanttMilestone_rb.html +3 -2
- data/doc/files/lib/reports/GanttRouter_rb.html +3 -2
- data/doc/files/lib/reports/GanttTaskBar_rb.html +3 -2
- data/doc/files/lib/reports/HTMLGraphics_rb.html +3 -2
- data/doc/files/lib/reports/Navigator_rb.html +3 -2
- data/doc/files/lib/reports/ReportBase_rb.html +3 -2
- data/doc/files/lib/reports/ReportContext_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableCell_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableColumn_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableLegend_rb.html +3 -2
- data/doc/files/lib/reports/ReportTableLine_rb.html +3 -2
- data/doc/files/lib/reports/ReportTable_rb.html +3 -2
- data/doc/files/lib/reports/Report_rb.html +7 -2
- data/doc/files/lib/reports/ResourceListRE_rb.html +3 -2
- data/doc/files/lib/reports/TableReport_rb.html +3 -2
- data/doc/files/lib/reports/TaskListRE_rb.html +3 -2
- data/doc/files/lib/reports/TextReport_rb.html +4 -3
- data/doc/files/lib/reports/TimeSheetReport_rb.html +117 -0
- data/doc/files/lib/reports/TjpExportRE_rb.html +3 -2
- data/doc/files/lib/taskjuggler3_rb.html +94 -77
- data/doc/files/lib/tj3client_rb.html +280 -0
- data/doc/files/lib/tj3man_rb.html +10 -9
- data/doc/fr_class_index.html +27 -5
- data/doc/fr_file_index.html +15 -7
- data/doc/fr_method_index.html +1312 -1020
- data/examples/tutorial.tjp +113 -14
- data/gem_spec.rb +2 -1
- data/lib/Account.rb +1 -1
- data/lib/AccountScenario.rb +1 -1
- data/lib/Allocation.rb +1 -1
- data/lib/AppConfig.rb +23 -10
- data/lib/AttributeBase.rb +34 -6
- data/lib/AttributeDefinition.rb +1 -1
- data/lib/Attributes.rb +51 -16
- data/lib/BatchProcessor.rb +204 -77
- data/lib/Booking.rb +1 -1
- data/lib/Charge.rb +1 -1
- data/lib/ChargeSet.rb +1 -1
- data/lib/HTMLDocument.rb +2 -2
- data/lib/Interval.rb +1 -1
- data/lib/Journal.rb +231 -9
- data/lib/KeywordArray.rb +1 -1
- data/lib/KeywordDocumentation.rb +6 -4
- data/lib/Limits.rb +1 -1
- data/lib/Log.rb +8 -1
- data/lib/LogicalExpression.rb +14 -13
- data/lib/LogicalFunction.rb +88 -14
- data/lib/LogicalOperation.rb +124 -53
- data/lib/MacroParser.rb +1 -1
- data/lib/MacroTable.rb +2 -2
- data/lib/Message.rb +1 -1
- data/lib/MessageHandler.rb +7 -3
- data/lib/Project.rb +93 -14
- data/lib/ProjectFileParser.rb +30 -15
- data/lib/PropertyList.rb +103 -36
- data/lib/PropertySet.rb +22 -10
- data/lib/PropertyTreeNode.rb +120 -15
- data/lib/Query.rb +119 -48
- data/lib/{RTPNavigator.rb → RTFNavigator.rb} +11 -10
- data/lib/RTFQuery.rb +166 -0
- data/lib/{RTPReport.rb → RTFReport.rb} +11 -8
- data/lib/RealFormat.rb +1 -1
- data/lib/RemoteServiceManager.rb +80 -0
- data/lib/ReportServer.rb +66 -0
- data/lib/Resource.rb +1 -1
- data/lib/ResourceScenario.rb +48 -19
- data/lib/RichText.rb +98 -41
- data/lib/RichTextDocument.rb +10 -8
- data/lib/RichTextElement.rb +72 -28
- data/lib/{RichTextProtocolExample.rb → RichTextFunctionExample.rb} +8 -7
- data/lib/{RichTextProtocolHandler.rb → RichTextFunctionHandler.rb} +12 -14
- data/lib/RichTextParser.rb +6 -3
- data/lib/RichTextScanner.rb +91 -19
- data/lib/RichTextSnip.rb +8 -3
- data/lib/RichTextSyntaxRules.rb +103 -45
- data/lib/Scenario.rb +1 -1
- data/lib/ScenarioData.rb +2 -2
- data/lib/Scoreboard.rb +1 -1
- data/lib/Shift.rb +1 -1
- data/lib/ShiftAssignments.rb +1 -1
- data/lib/ShiftScenario.rb +1 -1
- data/lib/SourceFileInfo.rb +1 -1
- data/lib/SyntaxReference.rb +2 -2
- data/lib/TOCEntry.rb +1 -1
- data/lib/TableColumnDefinition.rb +59 -16
- data/lib/TableOfContents.rb +1 -1
- data/lib/Task.rb +1 -1
- data/lib/TaskDependency.rb +1 -1
- data/lib/TaskJuggler.rb +31 -8
- data/lib/TaskScenario.rb +165 -16
- data/lib/TextParser.rb +36 -22
- data/lib/TextParser/Pattern.rb +3 -3
- data/lib/TextParser/Rule.rb +2 -2
- data/lib/TextParser/StackElement.rb +4 -3
- data/lib/TextParser/TokenDoc.rb +2 -2
- data/lib/TextScanner.rb +52 -37
- data/lib/Tj3Config.rb +6 -5
- data/lib/TjException.rb +1 -1
- data/lib/TjTime.rb +12 -3
- data/lib/TjpExample.rb +1 -1
- data/lib/TjpSyntaxRules.rb +1044 -150
- data/lib/UTF8String.rb +2 -1
- data/lib/UserManual.rb +18 -70
- data/lib/WorkingHours.rb +3 -3
- data/lib/XMLDocument.rb +3 -2
- data/lib/XMLElement.rb +6 -1
- data/lib/deep_copy.rb +1 -1
- data/lib/reports/CSVFile.rb +1 -1
- data/lib/reports/ColumnTable.rb +9 -9
- data/lib/reports/GanttChart.rb +1 -1
- data/lib/reports/GanttContainer.rb +1 -1
- data/lib/reports/GanttHeader.rb +1 -1
- data/lib/reports/GanttHeaderScaleItem.rb +1 -1
- data/lib/reports/GanttLine.rb +40 -40
- data/lib/reports/GanttLoadStack.rb +1 -1
- data/lib/reports/GanttMilestone.rb +1 -1
- data/lib/reports/GanttRouter.rb +1 -1
- data/lib/reports/GanttTaskBar.rb +1 -1
- data/lib/reports/HTMLGraphics.rb +1 -1
- data/lib/reports/Navigator.rb +149 -22
- data/lib/reports/Report.rb +115 -172
- data/lib/reports/ReportBase.rb +22 -27
- data/lib/reports/ReportContext.rb +29 -15
- data/lib/reports/ReportTable.rb +1 -1
- data/lib/reports/ReportTableCell.rb +120 -27
- data/lib/reports/ReportTableColumn.rb +3 -3
- data/lib/reports/ReportTableLegend.rb +1 -1
- data/lib/reports/ReportTableLine.rb +10 -2
- data/lib/reports/ResourceListRE.rb +5 -1
- data/lib/reports/TableReport.rb +237 -287
- data/lib/reports/TaskListRE.rb +5 -1
- data/lib/reports/TextReport.rb +7 -4
- data/lib/reports/TimeSheetReport.rb +233 -0
- data/lib/reports/TjpExportRE.rb +2 -2
- data/lib/taskjuggler3.rb +27 -11
- data/lib/tj3client.rb +110 -0
- data/lib/tj3man.rb +4 -4
- data/manual/Getting_Started +0 -50
- data/manual/How_To_Contribute +6 -13
- data/manual/Installation +102 -28
- data/manual/Intro +11 -1
- data/manual/Reporting_Bugs +23 -7
- data/manual/Rich_Text_Attributes +59 -6
- data/manual/TaskJuggler_2x_Migration +27 -0
- data/manual/The_TaskJuggler_Syntax +104 -0
- data/manual/Tutorial +10 -9
- data/prj_cfg.rb +8 -2
- data/tasks/csts.rake +1 -1
- data/tasks/manual.rake +5 -3
- data/test/MessageChecker.rb +1 -1
- data/test/TestSuite/HTML-Reports/Alerts.html +172 -0
- data/test/TestSuite/HTML-Reports/Alerts.tjp +77 -0
- data/test/TestSuite/HTML-Reports/CellText.html +758 -0
- data/test/TestSuite/HTML-Reports/CellText.tjp +75 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.html +156 -0
- data/test/TestSuite/HTML-Reports/ColumnPeriods.tjp +44 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.html +172 -0
- data/test/TestSuite/HTML-Reports/IsOngoing.tjp +34 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.html +80 -0
- data/test/TestSuite/HTML-Reports/LogicalFunctions.tjp +20 -0
- data/test/TestSuite/HTML-Reports/Query.html +31 -0
- data/test/TestSuite/HTML-Reports/Query.tjp +28 -0
- data/test/TestSuite/HTML-Reports/Sorting.tjp +68 -0
- data/test/TestSuite/HTML-Reports/TimeSheet.tjp +69 -0
- data/test/TestSuite/HTML-Reports/UDAQuery.tjp +27 -0
- data/test/TestSuite/HTML-Reports/css/tjmanual.css +52 -0
- data/test/TestSuite/HTML-Reports/css/tjreport.css +195 -0
- data/test/TestSuite/HTML-Reports/depArrows.html +842 -0
- data/test/TestSuite/HTML-Reports/icons/details.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/flag-green.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/flag-red.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/flag-yellow.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/resource.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/resourcegroup.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/task.png +0 -0
- data/test/TestSuite/HTML-Reports/icons/taskgroup.png +0 -0
- data/test/TestSuite/HTML-Reports/reference.tjp +7 -8
- data/test/TestSuite/HTML-Reports/scripts/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/HTML-Reports/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Scheduler/Correct/Mandatory.tjp +34 -0
- data/test/TestSuite/Syntax/Correct/Celltext.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/Journal.tjp +2 -2
- data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/LogicalFunction.tjp +20 -0
- data/test/TestSuite/Syntax/Correct/Query.tjp +18 -0
- data/test/TestSuite/Syntax/Correct/StatusSheet.tjp +45 -0
- data/test/TestSuite/Syntax/Correct/TimeSheet.tjp +49 -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/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +113 -14
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +28 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +12 -0
- data/test/all.rb +2 -2
- data/test/test_BatchProcessor.rb +42 -13
- data/test/test_CSV-Reports.rb +1 -1
- data/test/test_Journal.rb +176 -0
- data/test/test_Limits.rb +1 -1
- data/test/test_LogicalExpression.rb +14 -5
- data/test/test_MacroTable.rb +1 -1
- data/test/test_Project.rb +1 -1
- data/test/test_PropertySet.rb +1 -1
- data/test/test_Query.rb +1 -1
- data/test/test_RealFormat.rb +1 -1
- data/test/test_RichText.rb +30 -20
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +2 -2
- data/test/test_Syntax.rb +1 -1
- data/test/test_TextScanner.rb +1 -1
- data/test/test_TjTime.rb +1 -1
- data/test/test_TjpExample.rb +1 -1
- data/test/test_UTF8String.rb +1 -1
- data/test/test_WorkingHours.rb +1 -1
- data/test/test_deep_copy.rb +2 -2
- metadata +610 -532
- data/doc/files/lib/ms_test_rb.html +0 -90
- data/examples/ContactList.html +0 -1467
- data/examples/Deliveries.html +0 -485
- data/examples/Development.html +0 -2525
- data/examples/Overview.html +0 -747
- data/examples/Resource Graph.html +0 -616
- data/lib/ms_test.rb +0 -27
- data/test/TestSuite/HTML-Reports/reference-export.html +0 -187
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
</tr>
|
|
54
54
|
<tr class="top-aligned-row">
|
|
55
55
|
<td><strong>Last Update:</strong></td>
|
|
56
|
-
<td>
|
|
56
|
+
<td>2010-01-27 20:53:41 +0100</td>
|
|
57
57
|
</tr>
|
|
58
58
|
</table>
|
|
59
59
|
</div>
|
|
@@ -69,7 +69,8 @@ encoding: UTF-8
|
|
|
69
69
|
</p>
|
|
70
70
|
<h1>TjpExportRE.rb — The <a href="../../../classes/TaskJuggler.html">TaskJuggler</a> III Project Management Software</h1>
|
|
71
71
|
<p>
|
|
72
|
-
Copyright © 2006, 2007, 2008, 2009 by Chris Schlaeger
|
|
72
|
+
Copyright © 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger
|
|
73
|
+
<cs@kde.org>
|
|
73
74
|
</p>
|
|
74
75
|
<p>
|
|
75
76
|
This program is free software; you can redistribute it and/or modify it
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
</tr>
|
|
54
54
|
<tr class="top-aligned-row">
|
|
55
55
|
<td><strong>Last Update:</strong></td>
|
|
56
|
-
<td>
|
|
56
|
+
<td>2010-01-27 20:53:40 +0100</td>
|
|
57
57
|
</tr>
|
|
58
58
|
</table>
|
|
59
59
|
</div>
|
|
@@ -69,7 +69,8 @@ encoding: UTF-8
|
|
|
69
69
|
</p>
|
|
70
70
|
<h1>taskjuggler3.rb — The <a href="../../classes/TaskJuggler.html">TaskJuggler</a> III Project Management Software</h1>
|
|
71
71
|
<p>
|
|
72
|
-
Copyright © 2006, 2007, 2008, 2009 by Chris Schlaeger
|
|
72
|
+
Copyright © 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger
|
|
73
|
+
<cs@kde.org>
|
|
73
74
|
</p>
|
|
74
75
|
<p>
|
|
75
76
|
This program is free software; you can redistribute it and/or modify it
|
|
@@ -101,9 +102,9 @@ by the Free Software Foundation.
|
|
|
101
102
|
|
|
102
103
|
<div class="name-list">
|
|
103
104
|
|
|
104
|
-
<a href="#
|
|
105
|
+
<a href="#M000005">main</a>
|
|
105
106
|
|
|
106
|
-
<a href="#
|
|
107
|
+
<a href="#M000004">processArguments</a>
|
|
107
108
|
|
|
108
109
|
</div>
|
|
109
110
|
</div>
|
|
@@ -124,12 +125,12 @@ by the Free Software Foundation.
|
|
|
124
125
|
<h3 class="section-bar">Public Instance methods</h3>
|
|
125
126
|
|
|
126
127
|
|
|
127
|
-
<div id="method-
|
|
128
|
-
<a name="
|
|
128
|
+
<div id="method-M000005" class="method-detail">
|
|
129
|
+
<a name="M000005"></a>
|
|
129
130
|
|
|
130
131
|
<div class="method-heading">
|
|
131
132
|
|
|
132
|
-
<a href="#
|
|
133
|
+
<a href="#M000005" class="method-signature">
|
|
133
134
|
|
|
134
135
|
<span class="method-name">main</span><span class="method-args">()</span>
|
|
135
136
|
|
|
@@ -140,26 +141,37 @@ by the Free Software Foundation.
|
|
|
140
141
|
<div class="method-description">
|
|
141
142
|
|
|
142
143
|
<p><a class="source-toggle" href="#"
|
|
143
|
-
onclick="toggleCode('
|
|
144
|
-
<div class="method-source-code" id="
|
|
144
|
+
onclick="toggleCode('M000005-source');return false;">[Source]</a></p>
|
|
145
|
+
<div class="method-source-code" id="M000005-source">
|
|
145
146
|
<pre>
|
|
146
|
-
<span class="ruby-comment cmt"># File lib/taskjuggler3.rb, line
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
147
|
+
<span class="ruby-comment cmt"># File lib/taskjuggler3.rb, line 97</span>
|
|
148
|
+
97: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
|
|
149
|
+
98: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-value">1</span>
|
|
150
|
+
99: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">false</span>
|
|
151
|
+
100: <span class="ruby-ivar">@reportServer</span> = <span class="ruby-keyword kw">false</span>
|
|
152
|
+
101: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-value str">''</span>
|
|
153
|
+
102:
|
|
154
|
+
103: <span class="ruby-comment cmt"># Install signal handler to exit gracefully on CTRL-C.</span>
|
|
155
|
+
104: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">'INT'</span>) <span class="ruby-keyword kw">do</span>
|
|
156
|
+
105: <span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nAborting on user request!"</span>
|
|
157
|
+
106: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
|
|
158
|
+
107: <span class="ruby-keyword kw">end</span>
|
|
159
|
+
108:
|
|
160
|
+
109: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">processArguments</span>(<span class="ruby-constant">ARGV</span>)
|
|
161
|
+
110: <span class="ruby-identifier">tj</span> = <span class="ruby-constant">TaskJuggler</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">true</span>)
|
|
162
|
+
111: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">maxCpuCores</span> = <span class="ruby-ivar">@maxCpuCores</span>
|
|
163
|
+
112: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">files</span>, <span class="ruby-ivar">@reportServer</span>)
|
|
164
|
+
113: <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">schedule</span>
|
|
165
|
+
114: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@forceReports</span>
|
|
166
|
+
115: <span class="ruby-keyword kw">end</span>
|
|
167
|
+
116:
|
|
168
|
+
117: <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@reportServer</span>
|
|
169
|
+
118: <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">serveReports</span>
|
|
170
|
+
119: <span class="ruby-keyword kw">else</span>
|
|
171
|
+
120: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span> <span class="ruby-keyword kw">if</span> <span class="ruby-operator">!</span><span class="ruby-identifier">tj</span>.<span class="ruby-identifier">generateReports</span>(<span class="ruby-ivar">@outputDir</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">tj</span>.<span class="ruby-identifier">errors</span> <span class="ruby-operator">></span> <span class="ruby-value">0</span>
|
|
172
|
+
121: <span class="ruby-keyword kw">end</span>
|
|
173
|
+
122:
|
|
174
|
+
123: <span class="ruby-keyword kw">end</span>
|
|
163
175
|
</pre>
|
|
164
176
|
</div>
|
|
165
177
|
|
|
@@ -167,12 +179,12 @@ by the Free Software Foundation.
|
|
|
167
179
|
</div>
|
|
168
180
|
|
|
169
181
|
|
|
170
|
-
<div id="method-
|
|
171
|
-
<a name="
|
|
182
|
+
<div id="method-M000004" class="method-detail">
|
|
183
|
+
<a name="M000004"></a>
|
|
172
184
|
|
|
173
185
|
<div class="method-heading">
|
|
174
186
|
|
|
175
|
-
<a href="#
|
|
187
|
+
<a href="#M000004" class="method-signature">
|
|
176
188
|
|
|
177
189
|
<span class="method-name">processArguments</span><span class="method-args">(argv)</span>
|
|
178
190
|
|
|
@@ -183,19 +195,19 @@ by the Free Software Foundation.
|
|
|
183
195
|
<div class="method-description">
|
|
184
196
|
|
|
185
197
|
<p><a class="source-toggle" href="#"
|
|
186
|
-
onclick="toggleCode('
|
|
187
|
-
<div class="method-source-code" id="
|
|
198
|
+
onclick="toggleCode('M000004-source');return false;">[Source]</a></p>
|
|
199
|
+
<div class="method-source-code" id="M000004-source">
|
|
188
200
|
<pre>
|
|
189
201
|
<span class="ruby-comment cmt"># File lib/taskjuggler3.rb, line 20</span>
|
|
190
202
|
20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
|
|
191
203
|
21: <span class="ruby-identifier">opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span>
|
|
192
204
|
22:
|
|
193
|
-
23: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">"#{AppConfig.
|
|
205
|
+
23: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">"#{AppConfig.softwareName} v#{AppConfig.version} - "</span> <span class="ruby-operator">+</span>
|
|
194
206
|
24: <span class="ruby-node">"#{AppConfig.packageInfo}\n\n"</span> <span class="ruby-operator">+</span>
|
|
195
207
|
25: <span class="ruby-node">"Copyright (c) #{AppConfig.copyright.join(', ')}"</span> <span class="ruby-operator">+</span>
|
|
196
208
|
26: <span class="ruby-node">" by #{AppConfig.authors.join(', ')}\n\n"</span> <span class="ruby-operator">+</span>
|
|
197
209
|
27: <span class="ruby-node">"#{AppConfig.license}\n"</span> <span class="ruby-operator">+</span>
|
|
198
|
-
28: <span class="ruby-node">"For more info about #{AppConfig.
|
|
210
|
+
28: <span class="ruby-node">"For more info about #{AppConfig.softwareName} see "</span> <span class="ruby-operator">+</span>
|
|
199
211
|
29: <span class="ruby-node">"#{AppConfig.contact}\n\n"</span> <span class="ruby-operator">+</span>
|
|
200
212
|
30: <span class="ruby-node">"Usage: #{AppConfig.appName} [options] file.tjp "</span> <span class="ruby-operator">+</span>
|
|
201
213
|
31: <span class="ruby-value str">"[ file1.tji ... ]"</span>
|
|
@@ -214,50 +226,55 @@ by the Free Software Foundation.
|
|
|
214
226
|
44: <span class="ruby-value str">'Generate reports despite scheduling errors'</span>) <span class="ruby-keyword kw">do</span>
|
|
215
227
|
45: <span class="ruby-ivar">@forceReports</span> = <span class="ruby-keyword kw">true</span>
|
|
216
228
|
46: <span class="ruby-keyword kw">end</span>
|
|
217
|
-
47: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-
|
|
218
|
-
48: <span class="ruby-value str">'
|
|
219
|
-
49:
|
|
220
|
-
50:
|
|
221
|
-
51: <span class="ruby-
|
|
222
|
-
52:
|
|
223
|
-
53:
|
|
224
|
-
54:
|
|
225
|
-
55:
|
|
226
|
-
56:
|
|
227
|
-
57:
|
|
228
|
-
58:
|
|
229
|
-
59: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'--
|
|
230
|
-
60: <span class="ruby-identifier">puts</span> <span class="ruby-
|
|
231
|
-
61:
|
|
232
|
-
62:
|
|
233
|
-
63:
|
|
234
|
-
64:
|
|
235
|
-
65:
|
|
236
|
-
66:
|
|
237
|
-
67:
|
|
238
|
-
68:
|
|
239
|
-
69:
|
|
240
|
-
70:
|
|
241
|
-
71:
|
|
242
|
-
72:
|
|
243
|
-
73:
|
|
244
|
-
74:
|
|
245
|
-
75:
|
|
246
|
-
76: <span class="ruby-identifier"
|
|
247
|
-
77: <span class="ruby-identifier"
|
|
248
|
-
78:
|
|
249
|
-
79:
|
|
250
|
-
80:
|
|
251
|
-
81:
|
|
252
|
-
82: <span class="ruby-identifier">puts</span> <span class="ruby-
|
|
253
|
-
83:
|
|
254
|
-
84:
|
|
255
|
-
85:
|
|
256
|
-
86:
|
|
257
|
-
87:
|
|
258
|
-
88:
|
|
259
|
-
89:
|
|
260
|
-
90:
|
|
229
|
+
47: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-s'</span>, <span class="ruby-value str">'--report-server'</span>,
|
|
230
|
+
48: <span class="ruby-value str">'Parse and schedule the project and wait for remote report '</span> <span class="ruby-operator">+</span>
|
|
231
|
+
49: <span class="ruby-value str">'requests'</span>) <span class="ruby-keyword kw">do</span>
|
|
232
|
+
50: <span class="ruby-ivar">@reportServer</span> = <span class="ruby-keyword kw">true</span>
|
|
233
|
+
51: <span class="ruby-keyword kw">end</span>
|
|
234
|
+
52: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-o'</span>, <span class="ruby-value str">'--output-dir <directory>'</span>, <span class="ruby-constant">String</span>,
|
|
235
|
+
53: <span class="ruby-value str">'Directory the reports should go into'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
|
|
236
|
+
54: <span class="ruby-ivar">@outputDir</span> = <span class="ruby-identifier">arg</span> <span class="ruby-operator">+</span> <span class="ruby-value str">'/'</span>
|
|
237
|
+
55: <span class="ruby-keyword kw">end</span>
|
|
238
|
+
56: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-c N'</span>, <span class="ruby-constant">Integer</span>, <span class="ruby-value str">'Maximum number of CPU cores to use'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
|
|
239
|
+
57: <span class="ruby-ivar">@maxCpuCores</span> = <span class="ruby-identifier">arg</span>
|
|
240
|
+
58: <span class="ruby-keyword kw">end</span>
|
|
241
|
+
59: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'-h'</span>, <span class="ruby-value str">'--help'</span>, <span class="ruby-value str">'Show this message'</span>) <span class="ruby-keyword kw">do</span>
|
|
242
|
+
60: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
|
|
243
|
+
61: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
244
|
+
62: <span class="ruby-keyword kw">end</span>
|
|
245
|
+
63:
|
|
246
|
+
64: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'--version'</span>, <span class="ruby-value str">'Show version info'</span>) <span class="ruby-keyword kw">do</span>
|
|
247
|
+
65: <span class="ruby-identifier">puts</span> <span class="ruby-node">"#{AppConfig.softwareName} v#{AppConfig.version} - "</span> <span class="ruby-operator">+</span>
|
|
248
|
+
66: <span class="ruby-node">"#{AppConfig.packageInfo}"</span>
|
|
249
|
+
67: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
250
|
+
68: <span class="ruby-keyword kw">end</span>
|
|
251
|
+
69:
|
|
252
|
+
70: <span class="ruby-comment cmt"># Show some progress information by default</span>
|
|
253
|
+
71: <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">silent</span> = <span class="ruby-keyword kw">false</span>
|
|
254
|
+
72: <span class="ruby-keyword kw">begin</span>
|
|
255
|
+
73: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">argv</span>)
|
|
256
|
+
74: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OptionParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">msg</span>
|
|
257
|
+
75: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">"\n"</span>
|
|
258
|
+
76: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span>
|
|
259
|
+
77: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
260
|
+
78: <span class="ruby-keyword kw">end</span>
|
|
261
|
+
79:
|
|
262
|
+
80: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">files</span>.<span class="ruby-identifier">empty?</span>
|
|
263
|
+
81: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
|
|
264
|
+
82: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nNo project file name specified!"</span>
|
|
265
|
+
83: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
|
|
266
|
+
84: <span class="ruby-keyword kw">end</span>
|
|
267
|
+
85:
|
|
268
|
+
86: <span class="ruby-keyword kw">unless</span> <span class="ruby-constant">TaskJuggler</span><span class="ruby-operator">::</span><span class="ruby-constant">Log</span>.<span class="ruby-identifier">silent</span>
|
|
269
|
+
87: <span class="ruby-identifier">puts</span> <span class="ruby-node">"#{AppConfig.softwareName} v#{AppConfig.version} - "</span> <span class="ruby-operator">+</span>
|
|
270
|
+
88: <span class="ruby-node">"#{AppConfig.packageInfo}\n\n"</span> <span class="ruby-operator">+</span>
|
|
271
|
+
89: <span class="ruby-node">"Copyright (c) #{AppConfig.copyright.join(', ')}"</span> <span class="ruby-operator">+</span>
|
|
272
|
+
90: <span class="ruby-node">" by #{AppConfig.authors.join(', ')}\n\n"</span> <span class="ruby-operator">+</span>
|
|
273
|
+
91: <span class="ruby-node">"#{AppConfig.license}\n"</span>
|
|
274
|
+
92: <span class="ruby-keyword kw">end</span>
|
|
275
|
+
93:
|
|
276
|
+
94: <span class="ruby-identifier">files</span>
|
|
277
|
+
95: <span class="ruby-keyword kw">end</span>
|
|
261
278
|
</pre>
|
|
262
279
|
</div>
|
|
263
280
|
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
|
|
2
|
+
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
|
3
|
+
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<title>File: tj3client.rb [TaskJuggler III API documentation]</title>
|
|
6
|
+
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
|
7
|
+
<meta http-equiv="Content-Script-Type" content="text/javascript" />
|
|
8
|
+
<link rel="stylesheet" href="../.././rdoc-style.css" type="text/css" media="screen" />
|
|
9
|
+
<script type="text/javascript">
|
|
10
|
+
// <![CDATA[
|
|
11
|
+
|
|
12
|
+
function popupCode( url ) {
|
|
13
|
+
window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
function toggleCode( id ) {
|
|
17
|
+
if ( document.getElementById )
|
|
18
|
+
elem = document.getElementById( id );
|
|
19
|
+
else if ( document.all )
|
|
20
|
+
elem = eval( "document.all." + id );
|
|
21
|
+
else
|
|
22
|
+
return false;
|
|
23
|
+
|
|
24
|
+
elemStyle = elem.style;
|
|
25
|
+
|
|
26
|
+
if ( elemStyle.display != "block" ) {
|
|
27
|
+
elemStyle.display = "block"
|
|
28
|
+
} else {
|
|
29
|
+
elemStyle.display = "none"
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// Make codeblocks hidden by default
|
|
36
|
+
document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }<\/style>" )
|
|
37
|
+
|
|
38
|
+
// ]]>
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
</head>
|
|
42
|
+
<body>
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
<div id="fileHeader">
|
|
46
|
+
<h1>tj3client.rb</h1>
|
|
47
|
+
<table class="header-table">
|
|
48
|
+
<tr class="top-aligned-row">
|
|
49
|
+
<td><strong>Path:</strong></td>
|
|
50
|
+
<td>lib/tj3client.rb
|
|
51
|
+
|
|
52
|
+
</td>
|
|
53
|
+
</tr>
|
|
54
|
+
<tr class="top-aligned-row">
|
|
55
|
+
<td><strong>Last Update:</strong></td>
|
|
56
|
+
<td>2010-01-27 20:53:40 +0100</td>
|
|
57
|
+
</tr>
|
|
58
|
+
</table>
|
|
59
|
+
</div>
|
|
60
|
+
<!-- banner header -->
|
|
61
|
+
|
|
62
|
+
<div id="bodyContent">
|
|
63
|
+
|
|
64
|
+
<div id="contextContent">
|
|
65
|
+
|
|
66
|
+
<div id="description">
|
|
67
|
+
<p>
|
|
68
|
+
encoding: UTF-8
|
|
69
|
+
</p>
|
|
70
|
+
<h1>tj3client.rb — The <a href="../../classes/TaskJuggler.html">TaskJuggler</a> III Project Management Software</h1>
|
|
71
|
+
<p>
|
|
72
|
+
Copyright © 2006, 2007, 2008, 2009, 2010 by Chris Schlaeger
|
|
73
|
+
<cs@kde.org>
|
|
74
|
+
</p>
|
|
75
|
+
<p>
|
|
76
|
+
This program is free software; you can redistribute it and/or modify it
|
|
77
|
+
under the terms of version 2 of the GNU General Public License as published
|
|
78
|
+
by the Free Software Foundation.
|
|
79
|
+
</p>
|
|
80
|
+
|
|
81
|
+
</div>
|
|
82
|
+
|
|
83
|
+
<div id="requires-list">
|
|
84
|
+
<h3 class="section-bar">Required files</h3>
|
|
85
|
+
|
|
86
|
+
<div class="name-list">
|
|
87
|
+
|
|
88
|
+
optparse
|
|
89
|
+
|
|
90
|
+
drb
|
|
91
|
+
|
|
92
|
+
Tj3Config
|
|
93
|
+
|
|
94
|
+
</div>
|
|
95
|
+
</div>
|
|
96
|
+
|
|
97
|
+
</div>
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
<div id="method-list">
|
|
101
|
+
<h3 class="section-bar">Methods</h3>
|
|
102
|
+
|
|
103
|
+
<div class="name-list">
|
|
104
|
+
|
|
105
|
+
<a href="#M000002">main</a>
|
|
106
|
+
|
|
107
|
+
<a href="#M000001">processArguments</a>
|
|
108
|
+
|
|
109
|
+
</div>
|
|
110
|
+
</div>
|
|
111
|
+
|
|
112
|
+
</div>
|
|
113
|
+
|
|
114
|
+
<!-- if includes -->
|
|
115
|
+
|
|
116
|
+
<div id="section">
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
<!-- if method_list -->
|
|
122
|
+
|
|
123
|
+
<div id="methods">
|
|
124
|
+
|
|
125
|
+
<h3 class="section-bar">Public Instance methods</h3>
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
<div id="method-M000002" class="method-detail">
|
|
129
|
+
<a name="M000002"></a>
|
|
130
|
+
|
|
131
|
+
<div class="method-heading">
|
|
132
|
+
|
|
133
|
+
<a href="#M000002" class="method-signature">
|
|
134
|
+
|
|
135
|
+
<span class="method-name">main</span><span class="method-args">()</span>
|
|
136
|
+
|
|
137
|
+
</a>
|
|
138
|
+
|
|
139
|
+
</div>
|
|
140
|
+
|
|
141
|
+
<div class="method-description">
|
|
142
|
+
|
|
143
|
+
<p><a class="source-toggle" href="#"
|
|
144
|
+
onclick="toggleCode('M000002-source');return false;">[Source]</a></p>
|
|
145
|
+
<div class="method-source-code" id="M000002-source">
|
|
146
|
+
<pre>
|
|
147
|
+
<span class="ruby-comment cmt"># File lib/tj3client.rb, line 72</span>
|
|
148
|
+
72: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">main</span>
|
|
149
|
+
73: <span class="ruby-ivar">@reports</span> = []
|
|
150
|
+
74:
|
|
151
|
+
75: <span class="ruby-comment cmt"># Install signal handler to exit gracefully on CTRL-C.</span>
|
|
152
|
+
76: <span class="ruby-constant">Kernel</span>.<span class="ruby-identifier">trap</span>(<span class="ruby-value str">'INT'</span>) <span class="ruby-keyword kw">do</span>
|
|
153
|
+
77: <span class="ruby-identifier">puts</span> <span class="ruby-value str">"\nAborting on user request!"</span>
|
|
154
|
+
78: <span class="ruby-identifier">exit</span> <span class="ruby-value">1</span>
|
|
155
|
+
79: <span class="ruby-keyword kw">end</span>
|
|
156
|
+
80:
|
|
157
|
+
81: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">processArguments</span>(<span class="ruby-constant">ARGV</span>)
|
|
158
|
+
82:
|
|
159
|
+
83: <span class="ruby-comment cmt"># Connect to the RemoteServiceManager object and request a new service</span>
|
|
160
|
+
84: <span class="ruby-comment cmt"># process.</span>
|
|
161
|
+
85: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>
|
|
162
|
+
86: <span class="ruby-identifier">serviceManager</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-value str">'druby://localhost:8474'</span>)
|
|
163
|
+
87:
|
|
164
|
+
88: <span class="ruby-identifier">uri</span> = <span class="ruby-identifier">serviceManager</span>.<span class="ruby-identifier">requestService</span>
|
|
165
|
+
89: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">stop_service</span>
|
|
166
|
+
90:
|
|
167
|
+
91: <span class="ruby-constant">DRb</span>.<span class="ruby-identifier">start_service</span>
|
|
168
|
+
92: <span class="ruby-identifier">server</span> = <span class="ruby-constant">DRbObject</span>.<span class="ruby-identifier">new</span>(<span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">uri</span>)
|
|
169
|
+
93: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">connect</span>(<span class="ruby-identifier">$stdout</span>, <span class="ruby-identifier">$stderr</span>)
|
|
170
|
+
94:
|
|
171
|
+
95: <span class="ruby-identifier">files</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">file</span><span class="ruby-operator">|</span>
|
|
172
|
+
96: <span class="ruby-identifier">fileContent</span> = <span class="ruby-constant">IO</span>.<span class="ruby-identifier">read</span>(<span class="ruby-identifier">file</span>)
|
|
173
|
+
97: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">fileContent</span>)
|
|
174
|
+
98: <span class="ruby-keyword kw">end</span>
|
|
175
|
+
99:
|
|
176
|
+
100: <span class="ruby-ivar">@reports</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">id</span><span class="ruby-operator">|</span>
|
|
177
|
+
101: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">generateReport</span>(<span class="ruby-identifier">id</span>)
|
|
178
|
+
102: <span class="ruby-keyword kw">end</span>
|
|
179
|
+
103:
|
|
180
|
+
104: <span class="ruby-identifier">server</span>.<span class="ruby-identifier">disconnect</span>
|
|
181
|
+
105: <span class="ruby-keyword kw">end</span>
|
|
182
|
+
</pre>
|
|
183
|
+
</div>
|
|
184
|
+
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
<div id="method-M000001" class="method-detail">
|
|
190
|
+
<a name="M000001"></a>
|
|
191
|
+
|
|
192
|
+
<div class="method-heading">
|
|
193
|
+
|
|
194
|
+
<a href="#M000001" class="method-signature">
|
|
195
|
+
|
|
196
|
+
<span class="method-name">processArguments</span><span class="method-args">(argv)</span>
|
|
197
|
+
|
|
198
|
+
</a>
|
|
199
|
+
|
|
200
|
+
</div>
|
|
201
|
+
|
|
202
|
+
<div class="method-description">
|
|
203
|
+
|
|
204
|
+
<p><a class="source-toggle" href="#"
|
|
205
|
+
onclick="toggleCode('M000001-source');return false;">[Source]</a></p>
|
|
206
|
+
<div class="method-source-code" id="M000001-source">
|
|
207
|
+
<pre>
|
|
208
|
+
<span class="ruby-comment cmt"># File lib/tj3client.rb, line 20</span>
|
|
209
|
+
20: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">processArguments</span>(<span class="ruby-identifier">argv</span>)
|
|
210
|
+
21: <span class="ruby-identifier">opts</span> = <span class="ruby-constant">OptionParser</span>.<span class="ruby-identifier">new</span>
|
|
211
|
+
22:
|
|
212
|
+
23: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">banner</span> = <span class="ruby-node">"#{AppConfig.softwareName} v#{AppConfig.version} - "</span> <span class="ruby-operator">+</span>
|
|
213
|
+
24: <span class="ruby-node">"#{AppConfig.packageInfo}\n\n"</span> <span class="ruby-operator">+</span>
|
|
214
|
+
25: <span class="ruby-node">"Copyright (c) #{AppConfig.copyright.join(', ')}"</span> <span class="ruby-operator">+</span>
|
|
215
|
+
26: <span class="ruby-node">" by #{AppConfig.authors.join(', ')}\n\n"</span> <span class="ruby-operator">+</span>
|
|
216
|
+
27: <span class="ruby-node">"#{AppConfig.license}\n"</span> <span class="ruby-operator">+</span>
|
|
217
|
+
28: <span class="ruby-node">"For more info about #{AppConfig.softwareName} see "</span> <span class="ruby-operator">+</span>
|
|
218
|
+
29: <span class="ruby-node">"#{AppConfig.contact}\n\n"</span> <span class="ruby-operator">+</span>
|
|
219
|
+
30: <span class="ruby-node">"Usage: #{AppConfig.appName} [options] file.tjp "</span> <span class="ruby-operator">+</span>
|
|
220
|
+
31: <span class="ruby-value str">"[ file1.tji ... ]"</span>
|
|
221
|
+
32: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">separator</span> <span class="ruby-value str">""</span>
|
|
222
|
+
33: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'--silent'</span>, <span class="ruby-value str">"Don't show program and progress information"</span>) <span class="ruby-keyword kw">do</span>
|
|
223
|
+
34: <span class="ruby-ivar">@silent</span> = <span class="ruby-keyword kw">true</span>
|
|
224
|
+
35: <span class="ruby-keyword kw">end</span>
|
|
225
|
+
36: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on</span>(<span class="ruby-value str">'-g'</span>, <span class="ruby-value str">'--generate-report <ID>'</span>, <span class="ruby-constant">String</span>,
|
|
226
|
+
37: <span class="ruby-value str">'Generate reports despite scheduling errors'</span>) <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">arg</span><span class="ruby-operator">|</span>
|
|
227
|
+
38: <span class="ruby-ivar">@reports</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">arg</span>
|
|
228
|
+
39: <span class="ruby-keyword kw">end</span>
|
|
229
|
+
40: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'-h'</span>, <span class="ruby-value str">'--help'</span>, <span class="ruby-value str">'Show this message'</span>) <span class="ruby-keyword kw">do</span>
|
|
230
|
+
41: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span>
|
|
231
|
+
42: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
232
|
+
43: <span class="ruby-keyword kw">end</span>
|
|
233
|
+
44:
|
|
234
|
+
45: <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">on_tail</span>(<span class="ruby-value str">'--version'</span>, <span class="ruby-value str">'Show version info'</span>) <span class="ruby-keyword kw">do</span>
|
|
235
|
+
46: <span class="ruby-identifier">puts</span> <span class="ruby-node">"#{AppConfig.softwareName} v#{AppConfig.version} - "</span> <span class="ruby-operator">+</span>
|
|
236
|
+
47: <span class="ruby-node">"#{AppConfig.packageInfo}"</span>
|
|
237
|
+
48: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
238
|
+
49: <span class="ruby-keyword kw">end</span>
|
|
239
|
+
50:
|
|
240
|
+
51: <span class="ruby-comment cmt"># Show some progress information by default</span>
|
|
241
|
+
52: <span class="ruby-ivar">@silent</span> = <span class="ruby-keyword kw">false</span>
|
|
242
|
+
53: <span class="ruby-keyword kw">begin</span>
|
|
243
|
+
54: <span class="ruby-identifier">files</span> = <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">parse</span>(<span class="ruby-identifier">argv</span>)
|
|
244
|
+
55: <span class="ruby-keyword kw">rescue</span> <span class="ruby-constant">OptionParser</span><span class="ruby-operator">::</span><span class="ruby-constant">ParseError</span> =<span class="ruby-operator">></span> <span class="ruby-identifier">msg</span>
|
|
245
|
+
56: <span class="ruby-identifier">puts</span> <span class="ruby-identifier">opts</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-value str">"\n"</span>
|
|
246
|
+
57: <span class="ruby-identifier">$stderr</span>.<span class="ruby-identifier">puts</span> <span class="ruby-identifier">msg</span>
|
|
247
|
+
58: <span class="ruby-identifier">exit</span> <span class="ruby-value">0</span>
|
|
248
|
+
59: <span class="ruby-keyword kw">end</span>
|
|
249
|
+
60:
|
|
250
|
+
61: <span class="ruby-keyword kw">unless</span> <span class="ruby-ivar">@silent</span>
|
|
251
|
+
62: <span class="ruby-identifier">puts</span> <span class="ruby-node">"#{AppConfig.softwareName} v#{AppConfig.version} - "</span> <span class="ruby-operator">+</span>
|
|
252
|
+
63: <span class="ruby-node">"#{AppConfig.packageInfo}\n\n"</span> <span class="ruby-operator">+</span>
|
|
253
|
+
64: <span class="ruby-node">"Copyright (c) #{AppConfig.copyright.join(', ')}"</span> <span class="ruby-operator">+</span>
|
|
254
|
+
65: <span class="ruby-node">" by #{AppConfig.authors.join(', ')}\n\n"</span> <span class="ruby-operator">+</span>
|
|
255
|
+
66: <span class="ruby-node">"#{AppConfig.license}\n"</span>
|
|
256
|
+
67: <span class="ruby-keyword kw">end</span>
|
|
257
|
+
68:
|
|
258
|
+
69: <span class="ruby-identifier">files</span>
|
|
259
|
+
70: <span class="ruby-keyword kw">end</span>
|
|
260
|
+
</pre>
|
|
261
|
+
</div>
|
|
262
|
+
|
|
263
|
+
</div>
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
</div>
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
</div>
|
|
274
|
+
|
|
275
|
+
<div id="validator-badges">
|
|
276
|
+
<p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
|
|
277
|
+
</div>
|
|
278
|
+
|
|
279
|
+
</body>
|
|
280
|
+
</html>
|