taskjuggler 0.0.2 → 0.0.3
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/Rakefile +1 -0
- data/benchmarks/depends.tjp +2 -1
- data/benchmarks/htmltaskreport.tjp +2 -1
- data/doc/classes/AppConfig.html +124 -120
- data/doc/classes/Arguments.html +10 -6
- data/doc/classes/Object.html +229 -0
- data/doc/classes/String.html +35 -31
- data/doc/classes/TaskJuggler/Account.html +18 -18
- data/doc/classes/TaskJuggler/AccountAttribute.html +261 -0
- data/doc/classes/TaskJuggler/AccountScenario.html +12 -12
- data/doc/classes/TaskJuggler/Allocation.html +34 -30
- data/doc/classes/TaskJuggler/AllocationAttribute.html +70 -70
- data/doc/classes/TaskJuggler/AttributeBase.html +131 -147
- data/doc/classes/TaskJuggler/AttributeDefinition.html +38 -21
- data/doc/classes/TaskJuggler/BatchProcessor.html +313 -0
- data/doc/classes/TaskJuggler/Booking.html +22 -18
- data/doc/classes/TaskJuggler/BookingListAttribute.html +42 -42
- data/doc/classes/TaskJuggler/BooleanAttribute.html +40 -40
- data/doc/classes/TaskJuggler/CSVFile.html +28 -24
- data/doc/classes/TaskJuggler/Charge.html +22 -18
- data/doc/classes/TaskJuggler/ChargeListAttribute.html +30 -30
- data/doc/classes/TaskJuggler/ChargeSet.html +41 -37
- data/doc/classes/TaskJuggler/ChargeSetListAttribute.html +46 -46
- data/doc/classes/TaskJuggler/ColumnListAttribute.html +231 -0
- data/doc/classes/TaskJuggler/ColumnTable.html +23 -21
- data/doc/classes/TaskJuggler/DateAttribute.html +20 -20
- data/doc/classes/TaskJuggler/DefinitionListAttribute.html +162 -0
- data/doc/classes/TaskJuggler/DependencyListAttribute.html +46 -46
- data/doc/classes/TaskJuggler/DurationAttribute.html +30 -30
- data/doc/classes/TaskJuggler/FixnumAttribute.html +20 -20
- data/doc/classes/TaskJuggler/FlagListAttribute.html +42 -42
- data/doc/classes/TaskJuggler/FloatAttribute.html +30 -30
- data/doc/classes/TaskJuggler/FormatListAttribute.html +197 -0
- data/doc/classes/TaskJuggler/GanttChart.html +236 -207
- data/doc/classes/TaskJuggler/GanttContainer.html +46 -42
- data/doc/classes/TaskJuggler/GanttHeader.html +16 -12
- data/doc/classes/TaskJuggler/GanttHeaderScaleItem.html +16 -12
- data/doc/classes/TaskJuggler/GanttLine.html +28 -24
- data/doc/classes/TaskJuggler/GanttLoadStack.html +22 -18
- data/doc/classes/TaskJuggler/GanttMilestone.html +46 -42
- data/doc/classes/TaskJuggler/GanttRouter.html +104 -98
- data/doc/classes/TaskJuggler/GanttTaskBar.html +46 -42
- data/doc/classes/TaskJuggler/HTMLDocument.html +12 -12
- data/doc/classes/TaskJuggler/HTMLGraphics.html +12 -12
- data/doc/classes/TaskJuggler/Interval.html +126 -120
- data/doc/classes/TaskJuggler/IntervalListAttribute.html +46 -46
- data/doc/classes/TaskJuggler/JobInfo.html +284 -0
- data/doc/classes/TaskJuggler/Journal.html +197 -0
- data/doc/classes/TaskJuggler/JournalEntry.html +218 -0
- data/doc/classes/TaskJuggler/KeywordArray.html +179 -0
- data/doc/classes/TaskJuggler/KeywordDocumentation.html +445 -396
- data/doc/classes/TaskJuggler/Limits/Limit.html +34 -30
- data/doc/classes/TaskJuggler/Limits.html +68 -62
- data/doc/classes/TaskJuggler/LimitsAttribute.html +40 -40
- data/doc/classes/TaskJuggler/ListAttributeBase.html +207 -0
- data/doc/classes/TaskJuggler/Log.html +72 -68
- data/doc/classes/TaskJuggler/LogicalAttribute.html +38 -34
- data/doc/classes/TaskJuggler/LogicalExpression.html +16 -12
- data/doc/classes/TaskJuggler/LogicalExpressionAttribute.html +194 -0
- data/doc/classes/TaskJuggler/LogicalFlag.html +32 -32
- data/doc/classes/TaskJuggler/LogicalFunction.html +28 -24
- data/doc/classes/TaskJuggler/LogicalOperation.html +17 -13
- data/doc/classes/TaskJuggler/Macro.html +10 -6
- data/doc/classes/TaskJuggler/MacroParser.html +36 -36
- data/doc/classes/TaskJuggler/MacroTable.html +40 -36
- data/doc/classes/TaskJuggler/Message.html +16 -12
- data/doc/classes/TaskJuggler/MessageHandler.html +16 -12
- data/doc/classes/TaskJuggler/Navigator.html +249 -0
- data/doc/classes/TaskJuggler/OnShiftCache.html +316 -0
- data/doc/classes/TaskJuggler/Project.html +1064 -678
- data/doc/classes/TaskJuggler/ProjectFileParser.html +90 -85
- data/doc/classes/TaskJuggler/PropertyAttribute.html +194 -0
- data/doc/classes/TaskJuggler/PropertyList.html +114 -113
- data/doc/classes/TaskJuggler/PropertySet.html +355 -312
- data/doc/classes/TaskJuggler/PropertyTreeNode.html +527 -474
- data/doc/classes/TaskJuggler/Query.html +90 -85
- data/doc/classes/TaskJuggler/RTPNavigator.html +292 -0
- data/doc/classes/TaskJuggler/RTPReport.html +301 -0
- data/doc/classes/TaskJuggler/RealFormat.html +114 -57
- data/doc/classes/TaskJuggler/RealFormatAttribute.html +162 -0
- data/doc/classes/TaskJuggler/ReferenceAttribute.html +87 -20
- data/doc/classes/TaskJuggler/Report.html +82 -291
- data/doc/classes/TaskJuggler/ReportBase.html +448 -0
- data/doc/classes/TaskJuggler/ReportContext.html +243 -0
- data/doc/classes/TaskJuggler/ReportTable.html +158 -129
- data/doc/classes/TaskJuggler/ReportTableCell.html +30 -26
- data/doc/classes/TaskJuggler/ReportTableColumn.html +29 -25
- data/doc/classes/TaskJuggler/ReportTableLegend.html +28 -24
- data/doc/classes/TaskJuggler/ReportTableLine.html +34 -30
- data/doc/classes/TaskJuggler/Resource.html +12 -12
- data/doc/classes/TaskJuggler/ResourceListAttribute.html +46 -46
- data/doc/classes/TaskJuggler/ResourceListRE.html +49 -57
- data/doc/classes/TaskJuggler/ResourceScenario.html +126 -126
- data/doc/classes/TaskJuggler/RichText.html +52 -48
- data/doc/classes/TaskJuggler/RichTextAttribute.html +30 -30
- data/doc/classes/TaskJuggler/RichTextDocument.html +41 -37
- data/doc/classes/TaskJuggler/RichTextElement.html +274 -264
- data/doc/classes/TaskJuggler/RichTextException.html +13 -13
- data/doc/classes/TaskJuggler/RichTextParser.html +48 -47
- data/doc/classes/TaskJuggler/RichTextProtocolExample.html +52 -55
- data/doc/classes/TaskJuggler/RichTextProtocolHandler.html +55 -10
- data/doc/classes/TaskJuggler/RichTextScanner.html +106 -245
- data/doc/classes/TaskJuggler/RichTextSnip.html +28 -24
- data/doc/classes/TaskJuggler/RichTextSyntaxRules.html +381 -301
- data/doc/classes/TaskJuggler/Scenario.html +6 -6
- data/doc/classes/TaskJuggler/ScenarioData.html +40 -36
- data/doc/classes/TaskJuggler/ScenarioListAttribute.html +229 -0
- data/doc/classes/TaskJuggler/Scoreboard.html +70 -66
- data/doc/classes/TaskJuggler/Shift.html +18 -18
- data/doc/classes/TaskJuggler/ShiftAssignment.html +58 -54
- data/doc/classes/TaskJuggler/ShiftAssignments.html +82 -78
- data/doc/classes/TaskJuggler/ShiftAssignmentsAttribute.html +40 -40
- data/doc/classes/TaskJuggler/ShiftScenario.html +24 -24
- data/doc/classes/TaskJuggler/SortListAttribute.html +196 -0
- data/doc/classes/TaskJuggler/SourceFileInfo.html +16 -12
- data/doc/classes/TaskJuggler/StringAttribute.html +30 -30
- data/doc/classes/TaskJuggler/SymbolAttribute.html +20 -20
- data/doc/classes/TaskJuggler/SyntaxReference.html +46 -42
- data/doc/classes/TaskJuggler/TOCEntry.html +16 -12
- data/doc/classes/TaskJuggler/TableColumnDefinition.html +48 -33
- data/doc/classes/TaskJuggler/TableOfContents.html +22 -18
- data/doc/classes/TaskJuggler/TableReport.html +1036 -0
- data/doc/classes/TaskJuggler/Task.html +12 -12
- data/doc/classes/TaskJuggler/TaskDependency.html +16 -12
- data/doc/classes/TaskJuggler/TaskListAttribute.html +46 -46
- data/doc/classes/TaskJuggler/TaskListRE.html +49 -58
- data/doc/classes/TaskJuggler/TaskScenario.html +1270 -1180
- data/doc/classes/TaskJuggler/TextParser/Pattern.html +100 -96
- data/doc/classes/TaskJuggler/TextParser/Rule.html +88 -84
- data/doc/classes/TaskJuggler/TextParser/StackElement.html +16 -12
- data/doc/classes/TaskJuggler/TextParser/TextParserResultArray.html +12 -12
- data/doc/classes/TaskJuggler/TextParser/TokenDoc.html +10 -6
- data/doc/classes/TaskJuggler/TextParser.html +203 -140
- data/doc/classes/TaskJuggler/TextReport.html +364 -0
- data/doc/classes/TaskJuggler/TextScanner/BufferStreamHandle.html +70 -70
- data/doc/classes/TaskJuggler/TextScanner/FileStreamHandle.html +50 -42
- data/doc/classes/TaskJuggler/TextScanner/StreamHandle.html +16 -12
- data/doc/classes/TaskJuggler/TextScanner.html +334 -240
- data/doc/classes/TaskJuggler/TjException.html +6 -6
- data/doc/classes/TaskJuggler/TjTime.html +547 -497
- data/doc/classes/TaskJuggler/TjpExample.html +29 -25
- data/doc/classes/TaskJuggler/TjpExportRE.html +77 -97
- data/doc/classes/TaskJuggler/TjpSyntaxRules.html +3911 -3886
- data/doc/classes/TaskJuggler/UserManual.html +54 -54
- data/doc/classes/TaskJuggler/WorkingHours.html +53 -49
- data/doc/classes/TaskJuggler/WorkingHoursAttribute.html +53 -85
- data/doc/classes/TaskJuggler/XMLBlob.html +21 -21
- data/doc/classes/TaskJuggler/XMLComment.html +21 -21
- data/doc/classes/TaskJuggler/XMLDocument.html +28 -24
- data/doc/classes/TaskJuggler/XMLElement.html +70 -58
- data/doc/classes/TaskJuggler/XMLNamedText.html +11 -11
- data/doc/classes/TaskJuggler/XMLText.html +36 -36
- data/doc/classes/TaskJuggler.html +266 -183
- data/doc/files/COPYING.html +1 -1
- data/doc/files/README.html +1 -1
- data/doc/files/lib/AccountScenario_rb.html +1 -1
- data/doc/files/lib/Account_rb.html +1 -1
- data/doc/files/lib/Allocation_rb.html +1 -1
- data/doc/files/lib/AppConfig_rb.html +1 -1
- data/doc/files/lib/AttributeBase_rb.html +11 -1
- data/doc/files/lib/AttributeDefinition_rb.html +1 -1
- data/doc/files/lib/Attributes_rb.html +1 -1
- data/doc/files/lib/{LogicalFlag_rb.html → BatchProcessor_rb.html} +8 -6
- data/doc/files/lib/Booking_rb.html +1 -1
- data/doc/files/lib/ChargeSet_rb.html +1 -1
- data/doc/files/lib/Charge_rb.html +1 -1
- data/doc/files/lib/HTMLDocument_rb.html +1 -1
- data/doc/files/lib/Interval_rb.html +1 -1
- data/doc/files/lib/Journal_rb.html +106 -0
- data/doc/files/lib/KeywordArray_rb.html +106 -0
- data/doc/files/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/files/lib/Limits_rb.html +1 -1
- data/doc/files/lib/Log_rb.html +1 -1
- data/doc/files/lib/LogicalExpression_rb.html +1 -3
- data/doc/files/lib/LogicalFunction_rb.html +1 -1
- data/doc/files/lib/LogicalOperation_rb.html +1 -1
- data/doc/files/lib/MacroParser_rb.html +1 -1
- data/doc/files/lib/MacroTable_rb.html +1 -1
- data/doc/files/lib/MessageHandler_rb.html +1 -1
- data/doc/files/lib/Message_rb.html +1 -1
- data/doc/files/lib/ProjectFileParser_rb.html +5 -1
- data/doc/files/lib/Project_rb.html +5 -1
- data/doc/files/lib/PropertyList_rb.html +1 -1
- data/doc/files/lib/PropertySet_rb.html +1 -1
- data/doc/files/lib/PropertyTreeNode_rb.html +1 -1
- data/doc/files/lib/Query_rb.html +1 -1
- data/doc/files/lib/RTPNavigator_rb.html +120 -0
- data/doc/files/lib/RTPReport_rb.html +118 -0
- data/doc/files/lib/RealFormat_rb.html +1 -1
- data/doc/files/lib/ResourceScenario_rb.html +1 -1
- data/doc/files/lib/Resource_rb.html +1 -1
- data/doc/files/lib/RichTextDocument_rb.html +1 -1
- data/doc/files/lib/RichTextElement_rb.html +1 -1
- data/doc/files/lib/RichTextParser_rb.html +1 -1
- data/doc/files/lib/RichTextProtocolExample_rb.html +1 -1
- data/doc/files/lib/RichTextProtocolHandler_rb.html +1 -1
- data/doc/files/lib/RichTextScanner_rb.html +1 -1
- data/doc/files/lib/RichTextSnip_rb.html +1 -1
- data/doc/files/lib/RichTextSyntaxRules_rb.html +1 -1
- data/doc/files/lib/RichText_rb.html +1 -1
- data/doc/files/lib/ScenarioData_rb.html +1 -1
- data/doc/files/lib/Scenario_rb.html +1 -1
- data/doc/files/lib/Scoreboard_rb.html +1 -1
- data/doc/files/lib/ShiftAssignments_rb.html +1 -1
- data/doc/files/lib/ShiftScenario_rb.html +1 -1
- data/doc/files/lib/Shift_rb.html +1 -1
- data/doc/files/lib/SourceFileInfo_rb.html +1 -1
- data/doc/files/lib/SyntaxReference_rb.html +1 -1
- data/doc/files/lib/TOCEntry_rb.html +1 -1
- data/doc/files/lib/TableColumnDefinition_rb.html +1 -1
- data/doc/files/lib/TableOfContents_rb.html +1 -1
- data/doc/files/lib/TaskDependency_rb.html +1 -1
- data/doc/files/lib/TaskJuggler_rb.html +1 -1
- data/doc/files/lib/TaskScenario_rb.html +1 -1
- data/doc/files/lib/Task_rb.html +1 -1
- data/doc/files/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/files/lib/TextParser/Rule_rb.html +1 -1
- data/doc/files/lib/TextParser/StackElement_rb.html +1 -1
- data/doc/files/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/files/lib/TextParser_rb.html +1 -1
- data/doc/files/lib/TextScanner_rb.html +1 -1
- data/doc/files/lib/Tj3Config_rb.html +1 -1
- data/doc/files/lib/TjException_rb.html +1 -1
- data/doc/files/lib/TjTime_rb.html +1 -1
- data/doc/files/lib/TjpExample_rb.html +1 -1
- data/doc/files/lib/TjpSyntaxRules_rb.html +1 -1
- data/doc/files/lib/UTF8String_rb.html +1 -1
- data/doc/files/lib/UserManual_rb.html +1 -1
- data/doc/files/lib/WorkingHours_rb.html +1 -1
- data/doc/files/lib/XMLDocument_rb.html +1 -1
- data/doc/files/lib/XMLElement_rb.html +1 -1
- data/doc/files/lib/deep_copy_rb.html +106 -0
- data/doc/files/lib/ms_test_rb.html +90 -0
- data/doc/files/lib/reports/CSVFile_rb.html +1 -1
- data/doc/files/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/files/lib/reports/GanttChart_rb.html +1 -1
- data/doc/files/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/files/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/files/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/files/lib/reports/GanttLine_rb.html +1 -1
- data/doc/files/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/files/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/files/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/files/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/files/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/files/lib/reports/{ReportElement_rb.html → Navigator_rb.html} +6 -8
- data/doc/files/lib/reports/ReportBase_rb.html +106 -0
- data/doc/files/lib/reports/ReportContext_rb.html +106 -0
- data/doc/files/lib/reports/ReportTableCell_rb.html +1 -1
- data/doc/files/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/files/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/files/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/files/lib/reports/ReportTable_rb.html +1 -1
- data/doc/files/lib/reports/Report_rb.html +8 -2
- data/doc/files/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/files/lib/reports/{ReportTableElement_rb.html → TableReport_rb.html} +7 -5
- data/doc/files/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/files/lib/reports/TextReport_rb.html +116 -0
- data/doc/files/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/files/lib/taskjuggler3_rb.html +61 -56
- data/doc/files/lib/tj3man_rb.html +1 -1
- data/doc/fr_class_index.html +41 -3
- data/doc/fr_file_index.html +21 -5
- data/doc/fr_method_index.html +1069 -959
- data/examples/ContactList.html +1467 -0
- data/examples/Deliveries.html +485 -0
- data/examples/Development.html +2525 -0
- data/examples/Overview.html +747 -0
- data/examples/Resource Graph.html +616 -0
- data/examples/tutorial.tjp +63 -67
- data/lib/AttributeBase.rb +27 -31
- data/lib/AttributeDefinition.rb +12 -7
- data/lib/Attributes.rb +134 -34
- data/lib/Interval.rb +2 -0
- data/lib/Journal.rb +44 -0
- data/lib/{LogicalFlag.rb → KeywordArray.rb} +5 -13
- data/lib/KeywordDocumentation.rb +84 -47
- data/lib/Limits.rb +7 -5
- data/lib/LogicalExpression.rb +1 -1
- data/lib/LogicalOperation.rb +33 -0
- data/lib/Project.rb +313 -99
- data/lib/ProjectFileParser.rb +88 -11
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +13 -4
- data/lib/PropertyTreeNode.rb +34 -15
- data/lib/Query.rb +2 -1
- data/lib/RTPNavigator.rb +53 -0
- data/lib/RTPReport.rb +62 -0
- data/lib/RealFormat.rb +28 -10
- data/lib/RichTextElement.rb +18 -12
- data/lib/RichTextParser.rb +1 -0
- data/lib/RichTextProtocolExample.rb +8 -11
- data/lib/RichTextProtocolHandler.rb +11 -1
- data/lib/RichTextScanner.rb +308 -164
- data/lib/RichTextSyntaxRules.rb +24 -0
- data/lib/TableColumnDefinition.rb +5 -1
- data/lib/TaskJuggler.rb +3 -2
- data/lib/TaskScenario.rb +123 -31
- data/lib/TextParser.rb +14 -3
- data/lib/TextScanner.rb +210 -34
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +15 -0
- data/lib/TjpExample.rb +1 -1
- data/lib/TjpSyntaxRules.rb +674 -473
- data/lib/WorkingHours.rb +1 -1
- data/lib/XMLElement.rb +11 -3
- data/lib/deep_copy.rb +72 -0
- data/lib/ms_test.rb +27 -0
- data/lib/reports/ColumnTable.rb +7 -5
- data/lib/reports/GanttChart.rb +60 -34
- data/lib/reports/GanttHeader.rb +1 -1
- data/lib/reports/GanttRouter.rb +7 -5
- data/lib/reports/Navigator.rb +72 -0
- data/lib/reports/Report.rb +58 -73
- data/lib/reports/ReportBase.rb +241 -0
- data/lib/reports/ReportContext.rb +41 -0
- data/lib/reports/ReportTable.rb +7 -2
- data/lib/reports/ReportTableCell.rb +3 -3
- data/lib/reports/ResourceListRE.rb +19 -26
- data/lib/reports/{ReportTableElement.rb → TableReport.rb} +297 -97
- data/lib/reports/TaskListRE.rb +16 -24
- data/lib/reports/TextReport.rb +87 -0
- data/lib/reports/TjpExportRE.rb +55 -50
- data/lib/taskjuggler3.rb +6 -1
- data/manual/Getting_Started +57 -6
- data/manual/How_To_Contribute +2 -4
- data/manual/Intro +2 -2
- data/manual/Reporting_Bugs +9 -2
- data/manual/Rich_Text_Attributes +41 -0
- data/manual/Tutorial +219 -173
- data/tasks/test.rake +3 -0
- data/test/TestSuite/CSV-Reports/celltext.tjp +2 -1
- data/test/TestSuite/CSV-Reports/resourcereport.tjp +2 -1
- data/test/TestSuite/CSV-Reports/resourcereport_with_tasks.tjp +2 -1
- data/test/TestSuite/CSV-Reports/sortByTree.tjp +2 -1
- data/test/TestSuite/CSV-Reports/sortBy_duration.down.tjp +2 -1
- data/test/TestSuite/CSV-Reports/sortBy_effort.up.tjp +2 -1
- data/test/TestSuite/CSV-Reports/sortBy_plan.start.down.tjp +2 -1
- data/test/TestSuite/CSV-Reports/taskreport.tjp +2 -1
- data/test/TestSuite/CSV-Reports/taskreport_with_resources.tjp +2 -1
- data/test/TestSuite/HTML-Reports/depArrows.tjp +72 -0
- data/test/TestSuite/HTML-Reports/reference-export.html +187 -0
- data/test/TestSuite/HTML-Reports/reference.tjp +21 -0
- data/test/TestSuite/Scheduler/Correct/Allocate.tjp +2 -1
- data/test/TestSuite/Scheduler/Correct/AutomaticMilestones.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Booking.tjp +3 -3
- data/test/TestSuite/Scheduler/Correct/Container-2.tjp +37 -0
- data/test/TestSuite/Scheduler/Correct/Container.tjp +40 -0
- data/test/TestSuite/Scheduler/Correct/Depends.tjp +9 -14
- data/test/TestSuite/Scheduler/Correct/Duration.tjp +2 -1
- data/test/TestSuite/Scheduler/Correct/InheritStartEnd.tjp +20 -29
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -13
- data/test/TestSuite/Scheduler/Correct/Optimize-1.tjp +6 -5
- data/test/TestSuite/Scheduler/Correct/Optimize-2.tjp +10 -6
- data/test/TestSuite/Scheduler/Correct/Optimize-3.tjp +9 -6
- data/test/TestSuite/Scheduler/Correct/Optimize-4.tjp +9 -6
- data/test/TestSuite/Scheduler/Correct/Optimize-5.tjp +13 -10
- data/test/TestSuite/Scheduler/Correct/Precedes.tjp +9 -14
- data/test/TestSuite/Scheduler/Correct/Shift.tjp +9 -8
- data/test/TestSuite/Scheduler/Correct/checks.tji +4 -0
- data/test/TestSuite/Scheduler/Errors/weak_end_dep.tjp +16 -0
- data/test/TestSuite/Scheduler/Errors/weak_start_dep.tjp +16 -0
- data/test/TestSuite/Syntax/Correct/Account.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/AutoID.tjp +21 -0
- data/test/TestSuite/Syntax/Correct/AutoMacros.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/Caption.tjp +7 -6
- data/test/TestSuite/Syntax/Correct/Celltext.tjp +7 -4
- data/test/TestSuite/Syntax/Correct/Comments.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/CompletedWork.tji +11 -19
- data/test/TestSuite/Syntax/Correct/CriticalPath.tjp +4 -3
- data/test/TestSuite/Syntax/Correct/Export.tjp +3 -1
- data/test/TestSuite/Syntax/Correct/Flags.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/HtmlTaskReport.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/Journal.tjp +18 -0
- data/test/TestSuite/Syntax/Correct/LoadUnits.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/LogicalExpression.tjp +16 -0
- data/test/TestSuite/Syntax/Correct/Period.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/RawHTML.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/Reports.tjp +4 -2
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.tji +2 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.tjp +23 -0
- data/test/TestSuite/Syntax/Correct/Responsible.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Simple.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/String.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/TaskRoot.tjp +2 -1
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +92 -70
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +7 -0
- data/test/TestSuite/Syntax/Errors/bad_include.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/bad_time_zone.tjp +6 -0
- data/test/TestSuite/Syntax/Errors/bad_timing_res.tjp +5 -0
- data/test/TestSuite/Syntax/Errors/chargeset_master.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/container_attribute.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/cost_acct_no_top.tjp +3 -2
- data/test/TestSuite/Syntax/Errors/cost_rev_same.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/eof_in_istring1.tjp +5 -0
- data/test/TestSuite/Syntax/Errors/eof_in_istring2.tjp +5 -0
- data/test/TestSuite/Syntax/Errors/eof_in_istring3.tjp +6 -0
- data/test/TestSuite/Syntax/Errors/eof_in_istring4.tjp +6 -0
- data/test/TestSuite/Syntax/Errors/eof_in_istring5.tjp +6 -0
- data/test/TestSuite/Syntax/Errors/include_recursion.tji +1 -0
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +7 -0
- data/test/TestSuite/Syntax/Errors/junk_after_cut.tjp +6 -0
- data/test/TestSuite/Syntax/Errors/navigator_exists.tjp +10 -0
- data/test/TestSuite/Syntax/Errors/operand_unkn_flag.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/report_end.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/report_exists.tjp +10 -0
- data/test/TestSuite/Syntax/Errors/report_start.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/rev_acct_no_top.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/sort_direction.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/sort_unknown_scen.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/sorting_crit_exptd1.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/sorting_crit_exptd2.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/sorting_wbs.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/too_large_timing_res.tjp +7 -0
- data/test/TestSuite/Syntax/Errors/unknown_scenario_idx.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/unknown_task.tjp +1 -1
- data/test/all.rb +1 -16
- data/test/test_CSV-Reports.rb +8 -5
- data/test/test_Query.rb +2 -2
- data/test/test_RichText.rb +95 -0
- data/test/test_Scheduler.rb +8 -4
- data/test/test_Syntax.rb +8 -4
- data/test/test_deep_copy.rb +83 -0
- metadata +549 -487
- data/benchmarks/UTF-8-Strings.rb +0 -58
- data/doc/classes/TaskJuggler/ReportElement.html +0 -1070
- data/doc/classes/TaskJuggler/ReportTableElement.html +0 -644
- data/lib/reports/ReportElement.rb +0 -427
- data/test/TestSuite/Syntax/Correct/csvtest +0 -16
- data/test/TestSuite/Syntax/Errors/no_csv_suffix.tjp +0 -10
- data/test/TestSuite/Syntax/Errors/no_html_suffix.tjp +0 -10
- data/test/TestSuite/Syntax/Errors/report_redifinition.tjp +0 -10
data/lib/Journal.rb
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#!/usr/bin/env ruby -w
|
|
2
|
+
# encoding: UTF-8
|
|
3
|
+
#
|
|
4
|
+
# = WorkingHours.rb -- The TaskJuggler III Project Management Software
|
|
5
|
+
#
|
|
6
|
+
# Copyright (c) 2006, 2007, 2008, 2009 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
|
+
class TaskJuggler
|
|
14
|
+
|
|
15
|
+
class JournalEntry
|
|
16
|
+
|
|
17
|
+
attr_reader :date, :headline, :property
|
|
18
|
+
attr_accessor :intro, :more
|
|
19
|
+
|
|
20
|
+
def initialize(journal, date, headline, property)
|
|
21
|
+
@journal = journal
|
|
22
|
+
@journal.addEntry(self)
|
|
23
|
+
@date = date
|
|
24
|
+
@headline = headline
|
|
25
|
+
@property = property
|
|
26
|
+
@intro = nil
|
|
27
|
+
@more = nil
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
class Journal
|
|
33
|
+
|
|
34
|
+
def initialize
|
|
35
|
+
@entries = []
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def addEntry(entry)
|
|
39
|
+
@entries << entry
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby -w
|
|
2
2
|
# encoding: UTF-8
|
|
3
3
|
#
|
|
4
|
-
# =
|
|
4
|
+
# = KeywordArray.rb -- The TaskJuggler III Project Management Software
|
|
5
5
|
#
|
|
6
6
|
# Copyright (c) 2006, 2007, 2008, 2009 by Chris Schlaeger <cs@kde.org>
|
|
7
7
|
#
|
|
@@ -10,22 +10,14 @@
|
|
|
10
10
|
# published by the Free Software Foundation.
|
|
11
11
|
#
|
|
12
12
|
|
|
13
|
-
require 'LogicalOperation'
|
|
14
|
-
|
|
15
13
|
class TaskJuggler
|
|
16
14
|
|
|
17
|
-
class
|
|
18
|
-
|
|
19
|
-
def initialize(opnd)
|
|
20
|
-
super
|
|
21
|
-
end
|
|
15
|
+
class KeywordArray < Array
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
expr.property['flags', 0].include?(@operand1)
|
|
25
|
-
end
|
|
17
|
+
alias a_include? include?
|
|
26
18
|
|
|
27
|
-
def
|
|
28
|
-
|
|
19
|
+
def include?(keyword)
|
|
20
|
+
self[0] == '*' || a_include?(keyword)
|
|
29
21
|
end
|
|
30
22
|
|
|
31
23
|
end
|
data/lib/KeywordDocumentation.rb
CHANGED
|
@@ -30,8 +30,8 @@ class TaskJuggler
|
|
|
30
30
|
class KeywordDocumentation
|
|
31
31
|
|
|
32
32
|
attr_reader :keyword, :pattern, :references
|
|
33
|
-
attr_accessor :contexts, :scenarioSpecific, :
|
|
34
|
-
:predecessor, :successor
|
|
33
|
+
attr_accessor :contexts, :scenarioSpecific, :inheritedFromProject,
|
|
34
|
+
:inheritedFromParent, :predecessor, :successor
|
|
35
35
|
|
|
36
36
|
# Construct a new KeywordDocumentation object. _rule_ is the
|
|
37
37
|
# TextParser::Rule and _pattern_ is the corresponding TextParser::Pattern.
|
|
@@ -53,7 +53,8 @@ class TaskJuggler
|
|
|
53
53
|
# keyword documentation of the optional attribute.
|
|
54
54
|
@optionalAttributes = []
|
|
55
55
|
@scenarioSpecific = false
|
|
56
|
-
@
|
|
56
|
+
@inheritedFromProject= false
|
|
57
|
+
@inheritedFromParent = false
|
|
57
58
|
@contexts = []
|
|
58
59
|
@seeAlso = []
|
|
59
60
|
# The following are references to the neighboring keyword in an
|
|
@@ -104,7 +105,7 @@ class TaskJuggler
|
|
|
104
105
|
def computeInheritance(keywords, rules)
|
|
105
106
|
property = nil
|
|
106
107
|
@contexts.each do |kwd|
|
|
107
|
-
if %w( task resource account shift scenario).include?(kwd.keyword)
|
|
108
|
+
if %w( task resource account report shift scenario).include?(kwd.keyword)
|
|
108
109
|
property = kwd.keyword
|
|
109
110
|
break
|
|
110
111
|
end
|
|
@@ -118,12 +119,17 @@ class TaskJuggler
|
|
|
118
119
|
project.resources
|
|
119
120
|
when 'account'
|
|
120
121
|
project.accounts
|
|
122
|
+
when 'report'
|
|
123
|
+
project.reports
|
|
121
124
|
when 'shift'
|
|
122
125
|
project.shifts
|
|
123
126
|
when 'scenario'
|
|
124
127
|
project.scenarios
|
|
125
128
|
end
|
|
126
|
-
|
|
129
|
+
keyword = @keyword
|
|
130
|
+
keyword = keyword.split('.')[0] if keyword.include?('.')
|
|
131
|
+
@inheritedFromProject = propertySet.inheritedFromProject?(keyword)
|
|
132
|
+
@inheritedFromParent = propertySet.inheritedFromParent?(keyword)
|
|
127
133
|
end
|
|
128
134
|
end
|
|
129
135
|
|
|
@@ -148,7 +154,7 @@ class TaskJuggler
|
|
|
148
154
|
# Top line with multiple elements
|
|
149
155
|
str = "Keyword: #{@keyword} " +
|
|
150
156
|
"Scenario Specific: #{@scenarioSpecific ? 'Yes' : 'No'} " +
|
|
151
|
-
"
|
|
157
|
+
"Inherited: #{@inheritedFromParent ? 'Yes' : 'No'}\n\n"
|
|
152
158
|
|
|
153
159
|
str += "Purpose: #{format(tagW, newRichText(@pattern.doc).to_s,
|
|
154
160
|
textW)}\n\n"
|
|
@@ -203,12 +209,37 @@ class TaskJuggler
|
|
|
203
209
|
@optionalAttributes.sort! do |a, b|
|
|
204
210
|
a.keyword <=> b.keyword
|
|
205
211
|
end
|
|
212
|
+
showLegend = false
|
|
206
213
|
@optionalAttributes.each do |attr|
|
|
207
214
|
unless attrStr.empty?
|
|
208
215
|
attrStr += ', '
|
|
209
216
|
end
|
|
210
|
-
attrStr += '[sc:]' if attr.scenarioSpecific
|
|
211
217
|
attrStr += attr.keyword
|
|
218
|
+
if attr.scenarioSpecific || attr.inheritedFromProject ||
|
|
219
|
+
attr.inheritedFromParent
|
|
220
|
+
first = true
|
|
221
|
+
showLegend = true
|
|
222
|
+
attrStr += '['
|
|
223
|
+
if attr.scenarioSpecific
|
|
224
|
+
attrStr += 'sc'
|
|
225
|
+
first = false
|
|
226
|
+
end
|
|
227
|
+
if attr.inheritedFromProject
|
|
228
|
+
attrStr += ':' unless first
|
|
229
|
+
attrStr += 'ig'
|
|
230
|
+
first = false
|
|
231
|
+
end
|
|
232
|
+
if attr.inheritedFromParent
|
|
233
|
+
attrStr += ':' unless first
|
|
234
|
+
attrStr += 'ip'
|
|
235
|
+
end
|
|
236
|
+
attrStr += ']'
|
|
237
|
+
end
|
|
238
|
+
end
|
|
239
|
+
if showLegend
|
|
240
|
+
attrStr += "\n\n[sc] : Attribute is scenario specific" +
|
|
241
|
+
"\n[ig] : Attribute is inherited from global attribute" +
|
|
242
|
+
"\n[ip] : Attribute is inherited from parent property"
|
|
212
243
|
end
|
|
213
244
|
str += format(tagW, attrStr, textW)
|
|
214
245
|
str += "\n"
|
|
@@ -288,10 +319,14 @@ class TaskJuggler
|
|
|
288
319
|
tr1 << XMLNamedText.new("#{arg.name}", 'td', 'width' => '30%')
|
|
289
320
|
else
|
|
290
321
|
typeSpec = arg.typeSpec
|
|
322
|
+
typeName = typeSpec[1..-2]
|
|
291
323
|
typeSpec[0] = '['
|
|
292
324
|
typeSpec[-1] = ']'
|
|
293
|
-
tr1 <<
|
|
294
|
-
|
|
325
|
+
tr1 << (td = XMLElement.new('td', 'width' => '30%'))
|
|
326
|
+
td << XMLText.new("#{arg.name} [")
|
|
327
|
+
td << XMLNamedText.new(
|
|
328
|
+
typeName, 'a', 'href' => "Getting_Started.html\##{typeName}")
|
|
329
|
+
td << XMLText.new(']')
|
|
295
330
|
end
|
|
296
331
|
tr1 << (td = XMLElement.new('td',
|
|
297
332
|
'style' => 'margin-top:2px; margin-bottom:2px;'))
|
|
@@ -340,52 +375,55 @@ class TaskJuggler
|
|
|
340
375
|
@optionalAttributes.sort! do |a, b|
|
|
341
376
|
a.keyword <=> b.keyword
|
|
342
377
|
end
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
scenSpec = []
|
|
346
|
-
inheritable = []
|
|
347
|
-
scenSpecInheritable = []
|
|
378
|
+
|
|
379
|
+
showDetails = false
|
|
348
380
|
@optionalAttributes.each do |attr|
|
|
349
|
-
if attr.
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
scenSpecInheritable << attr
|
|
354
|
-
else
|
|
355
|
-
inheritable << attr
|
|
356
|
-
end
|
|
357
|
-
else
|
|
358
|
-
if attr.scenarioSpecific
|
|
359
|
-
hasScenSpec = true
|
|
360
|
-
scenSpec << attr
|
|
361
|
-
else
|
|
362
|
-
none << attr
|
|
363
|
-
end
|
|
381
|
+
if attr.scenarioSpecific || attr.inheritedFromProject ||
|
|
382
|
+
attr.inheritedFromParent
|
|
383
|
+
showDetails = true
|
|
384
|
+
break
|
|
364
385
|
end
|
|
365
386
|
end
|
|
387
|
+
|
|
366
388
|
bbox << (p = XMLElement.new('p'))
|
|
367
389
|
p << (tab = XMLElement.new('table', 'align' => 'center',
|
|
368
|
-
|
|
390
|
+
'class' => 'table'))
|
|
369
391
|
tab << (tr = XMLElement.new('tr', 'align' => 'left'))
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
tr << XMLNamedText.new('
|
|
374
|
-
'
|
|
375
|
-
|
|
376
|
-
'style' => 'width:
|
|
377
|
-
|
|
378
|
-
|
|
392
|
+
if showDetails
|
|
393
|
+
# Table of all attributes with checkmarks for being scenario
|
|
394
|
+
# specific, inherited from parent and inherited from global scope.
|
|
395
|
+
tr << XMLNamedText.new('Attributes', 'td', 'class' => 'tag',
|
|
396
|
+
'rowspan' =>
|
|
397
|
+
"#{@optionalAttributes.length + 1}",
|
|
398
|
+
'style' => 'width:15%')
|
|
399
|
+
tr << XMLNamedText.new('Name', 'td', 'class' => 'tag',
|
|
400
|
+
'style' => 'width:40%')
|
|
401
|
+
tr << XMLNamedText.new('Scen. spec.', 'td', 'class' => 'tag',
|
|
379
402
|
'style' => 'width:15%')
|
|
380
|
-
tr <<
|
|
381
|
-
tr << listHTMLAttributes(inheritable, 43)
|
|
382
|
-
tab << (tr = XMLElement.new('tr', 'align' => 'left'))
|
|
383
|
-
tr << XMLNamedText.new('Not inheritable', 'td', 'class' => 'tag',
|
|
403
|
+
tr << XMLNamedText.new('Inh. fm. Global', 'td', 'class' => 'tag',
|
|
384
404
|
'style' => 'width:15%')
|
|
385
|
-
tr <<
|
|
386
|
-
|
|
405
|
+
tr << XMLNamedText.new('Inh. fm. Parent', 'td', 'class' => 'tag',
|
|
406
|
+
'style' => 'width:15%')
|
|
407
|
+
@optionalAttributes.each do |attr|
|
|
408
|
+
tab << (tr = XMLElement.new('tr', 'align' => 'left'))
|
|
409
|
+
tr << (td = XMLElement.new('td', 'class' => 'descr'))
|
|
410
|
+
keywordHTMLRef(td, attr)
|
|
411
|
+
tr << (td = XMLElement.new('td', 'align' => 'center',
|
|
412
|
+
'class' => 'descr'))
|
|
413
|
+
td << XMLText.new('x') if attr.scenarioSpecific
|
|
414
|
+
tr << (td = XMLElement.new('td', 'align' => 'center',
|
|
415
|
+
'class' => 'descr'))
|
|
416
|
+
td << XMLText.new('x') if attr.inheritedFromProject
|
|
417
|
+
tr << (td = XMLElement.new('td', 'align' => 'center',
|
|
418
|
+
'class' => 'descr'))
|
|
419
|
+
td << XMLText.new('x') if attr.inheritedFromParent
|
|
420
|
+
end
|
|
387
421
|
else
|
|
388
|
-
|
|
422
|
+
# Comma separated list of all attributes.
|
|
423
|
+
tr << XMLNamedText.new('Attributes', 'td', 'class' => 'tag',
|
|
424
|
+
'style' => 'width:15%')
|
|
425
|
+
tr << (td = XMLElement.new('td', 'class' => 'descr',
|
|
426
|
+
'style' => 'width:85%'))
|
|
389
427
|
first = true
|
|
390
428
|
@optionalAttributes.each do |attr|
|
|
391
429
|
if first
|
|
@@ -393,7 +431,6 @@ class TaskJuggler
|
|
|
393
431
|
else
|
|
394
432
|
td << XMLText.new(', ')
|
|
395
433
|
end
|
|
396
|
-
td << XMLText.new('[sc:]') if attr.scenarioSpecific
|
|
397
434
|
keywordHTMLRef(td, attr)
|
|
398
435
|
end
|
|
399
436
|
end
|
data/lib/Limits.rb
CHANGED
|
@@ -120,7 +120,9 @@ class TaskJuggler
|
|
|
120
120
|
# The objects need access to some project specific data like the project
|
|
121
121
|
# period.
|
|
122
122
|
def setProject(project)
|
|
123
|
-
|
|
123
|
+
unless @limits.empty?
|
|
124
|
+
raise "Cannot change project after limits have been set!"
|
|
125
|
+
end
|
|
124
126
|
@project = project
|
|
125
127
|
end
|
|
126
128
|
|
|
@@ -174,13 +176,13 @@ class TaskJuggler
|
|
|
174
176
|
period = 60 * 60 * 24
|
|
175
177
|
upper = false
|
|
176
178
|
when 'weeklymax'
|
|
177
|
-
interval.start = interval.start.beginOfWeek(@project['
|
|
178
|
-
interval.end = interval.end.beginOfWeek(@project['
|
|
179
|
+
interval.start = interval.start.beginOfWeek(@project['weekStartsMonday'])
|
|
180
|
+
interval.end = interval.end.beginOfWeek(@project['weekStartsMonday'])
|
|
179
181
|
period = 60 * 60 * 24 * 7
|
|
180
182
|
upper = true
|
|
181
183
|
when 'weeklymin'
|
|
182
|
-
interval.start = interval.start.beginOfWeek(@project['
|
|
183
|
-
interval.end = interval.end.beginOfWeek(@project['
|
|
184
|
+
interval.start = interval.start.beginOfWeek(@project['weekStartsMonday'])
|
|
185
|
+
interval.end = interval.end.beginOfWeek(@project['weekStartsMonday'])
|
|
184
186
|
period = 60 * 60 * 24 * 7
|
|
185
187
|
upper = false
|
|
186
188
|
when 'monthlymax'
|
data/lib/LogicalExpression.rb
CHANGED
|
@@ -12,11 +12,11 @@
|
|
|
12
12
|
|
|
13
13
|
require 'LogicalOperation'
|
|
14
14
|
require 'Attributes'
|
|
15
|
-
require 'LogicalFlag'
|
|
16
15
|
require 'LogicalFunction'
|
|
17
16
|
|
|
18
17
|
class TaskJuggler
|
|
19
18
|
|
|
19
|
+
|
|
20
20
|
# A LogicalExpression is an object that describes tree of LogicalOperation
|
|
21
21
|
# objects and the context that it should be evaluated in.
|
|
22
22
|
class LogicalExpression
|
data/lib/LogicalOperation.rb
CHANGED
|
@@ -114,5 +114,38 @@ class TaskJuggler
|
|
|
114
114
|
|
|
115
115
|
end
|
|
116
116
|
|
|
117
|
+
class LogicalAttribute < LogicalOperation
|
|
118
|
+
|
|
119
|
+
def initialize(attribute, scenario)
|
|
120
|
+
@scenarioIdx = scenario
|
|
121
|
+
super
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
def LogicalAttribute::tjpId
|
|
125
|
+
'logical'
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
def eval(expr)
|
|
129
|
+
expr.property[@operand1, @scenarioIdx]
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
class LogicalFlag < LogicalOperation
|
|
135
|
+
|
|
136
|
+
def initialize(opnd)
|
|
137
|
+
super
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
def eval(expr)
|
|
141
|
+
expr.property['flags', 0].include?(@operand1)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def to_s
|
|
145
|
+
@operand1
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
end
|
|
149
|
+
|
|
117
150
|
end
|
|
118
151
|
|