taskjuggler 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +2086 -0
- data/benchmarks/666tasks.tjp +3183 -0
- data/benchmarks/booking.tjp +14 -10
- data/doc/AppConfig.html +95 -73
- data/doc/Arguments.html +22 -2
- data/doc/CHANGELOG.html +2587 -0
- data/doc/COPYING.html +21 -1
- data/doc/Object.html +161 -122
- data/doc/README.html +21 -1
- data/doc/RuntimeConfig.html +26 -6
- data/doc/String.html +38 -18
- data/doc/StringIO.html +579 -0
- data/doc/TaskJuggler.html +251 -143
- data/doc/TaskJuggler/Account.html +26 -6
- data/doc/TaskJuggler/AccountAttribute.html +28 -8
- data/doc/TaskJuggler/AccountScenario.html +24 -4
- data/doc/TaskJuggler/Allocation.html +30 -10
- data/doc/TaskJuggler/AllocationAttribute.html +28 -8
- data/doc/TaskJuggler/AttributeBase.html +46 -26
- data/doc/TaskJuggler/AttributeDefinition.html +22 -2
- data/doc/TaskJuggler/BatchProcessor.html +40 -20
- data/doc/TaskJuggler/Booking.html +26 -6
- data/doc/TaskJuggler/BookingListAttribute.html +28 -8
- data/doc/TaskJuggler/BooleanAttribute.html +28 -8
- data/doc/TaskJuggler/CSVFile.html +308 -146
- data/doc/TaskJuggler/CellSettingPattern.html +22 -2
- data/doc/TaskJuggler/CellSettingPatternList.html +26 -6
- data/doc/TaskJuggler/Charge.html +26 -6
- data/doc/TaskJuggler/ChargeListAttribute.html +26 -6
- data/doc/TaskJuggler/ChargeSet.html +33 -13
- data/doc/TaskJuggler/ChargeSetListAttribute.html +28 -8
- data/doc/TaskJuggler/ColumnListAttribute.html +26 -6
- data/doc/TaskJuggler/ColumnTable.html +24 -4
- data/doc/TaskJuggler/Daemon.html +26 -6
- data/doc/TaskJuggler/DateAttribute.html +26 -6
- data/doc/TaskJuggler/DefinitionListAttribute.html +22 -2
- data/doc/TaskJuggler/DependencyListAttribute.html +28 -8
- data/doc/TaskJuggler/DurationAttribute.html +28 -8
- data/doc/TaskJuggler/FixnumAttribute.html +24 -4
- data/doc/TaskJuggler/FlagListAttribute.html +28 -8
- data/doc/TaskJuggler/FloatAttribute.html +26 -6
- data/doc/TaskJuggler/FormatListAttribute.html +24 -4
- data/doc/TaskJuggler/GanttChart.html +147 -126
- data/doc/TaskJuggler/GanttContainer.html +34 -14
- data/doc/TaskJuggler/GanttHeader.html +28 -8
- data/doc/TaskJuggler/GanttHeaderScaleItem.html +24 -4
- data/doc/TaskJuggler/GanttLine.html +38 -18
- data/doc/TaskJuggler/GanttLoadStack.html +26 -6
- data/doc/TaskJuggler/GanttMilestone.html +34 -14
- data/doc/TaskJuggler/GanttRouter.html +50 -30
- data/doc/TaskJuggler/GanttTaskBar.html +34 -14
- data/doc/TaskJuggler/HTMLDocument.html +26 -6
- data/doc/TaskJuggler/HTMLGraphics.html +30 -10
- data/doc/TaskJuggler/Interval.html +40 -22
- data/doc/TaskJuggler/IntervalListAttribute.html +28 -8
- data/doc/TaskJuggler/JobInfo.html +24 -4
- data/doc/TaskJuggler/Journal.html +226 -147
- data/doc/TaskJuggler/JournalEntry.html +22 -2
- data/doc/TaskJuggler/JournalEntryList.html +129 -112
- data/doc/TaskJuggler/KeywordArray.html +26 -6
- data/doc/TaskJuggler/KeywordDocumentation.html +46 -26
- data/doc/TaskJuggler/Limits.html +152 -123
- data/doc/TaskJuggler/Limits/Limit.html +149 -70
- data/doc/TaskJuggler/LimitsAttribute.html +36 -51
- data/doc/TaskJuggler/ListAttributeBase.html +24 -4
- data/doc/TaskJuggler/Log.html +50 -32
- data/doc/TaskJuggler/LogFile.html +37 -17
- data/doc/TaskJuggler/LogicalAttribute.html +53 -33
- data/doc/TaskJuggler/LogicalExpression.html +26 -6
- data/doc/TaskJuggler/LogicalExpressionAttribute.html +32 -12
- data/doc/TaskJuggler/LogicalFlag.html +42 -22
- data/doc/TaskJuggler/LogicalFunction.html +204 -140
- data/doc/TaskJuggler/LogicalOperation.html +135 -111
- data/doc/TaskJuggler/Macro.html +22 -2
- data/doc/TaskJuggler/MacroParser.html +32 -12
- data/doc/TaskJuggler/MacroTable.html +32 -12
- data/doc/TaskJuggler/ManagerResponsibilities.html +24 -4
- data/doc/TaskJuggler/ManagerStatusRecord.html +24 -4
- data/doc/TaskJuggler/Message.html +24 -4
- data/doc/TaskJuggler/MessageHandler.html +24 -4
- data/doc/TaskJuggler/Navigator.html +104 -71
- data/doc/TaskJuggler/NavigatorElement.html +32 -12
- data/doc/TaskJuggler/NikuProject.html +22 -2
- data/doc/TaskJuggler/NikuReport.html +310 -228
- data/doc/TaskJuggler/NikuResource.html +22 -2
- data/doc/TaskJuggler/NodeListAttribute.html +615 -0
- data/doc/TaskJuggler/OnShiftCache.html +32 -12
- data/doc/TaskJuggler/ProcessIntercom.html +205 -78
- data/doc/TaskJuggler/ProcessIntercomIface.html +26 -6
- data/doc/TaskJuggler/Project.html +708 -660
- data/doc/TaskJuggler/ProjectBroker.html +506 -304
- data/doc/TaskJuggler/ProjectBrokerIface.html +61 -41
- data/doc/TaskJuggler/ProjectFileParser.html +429 -373
- data/doc/TaskJuggler/ProjectFileScanner.html +1790 -0
- data/doc/TaskJuggler/ProjectRecord.html +80 -60
- data/doc/TaskJuggler/ProjectServer.html +312 -237
- data/doc/TaskJuggler/ProjectServerIface.html +101 -43
- data/doc/TaskJuggler/PropertyAttribute.html +32 -12
- data/doc/TaskJuggler/PropertyList.html +166 -145
- data/doc/TaskJuggler/PropertySet.html +254 -224
- data/doc/TaskJuggler/PropertyTreeNode.html +670 -536
- data/doc/TaskJuggler/Query.html +169 -148
- data/doc/TaskJuggler/RTFHandlers.html +622 -0
- data/doc/TaskJuggler/RTFNavigator.html +28 -8
- data/doc/TaskJuggler/RTFQuery.html +40 -20
- data/doc/TaskJuggler/RTFReport.html +62 -25
- data/doc/TaskJuggler/RTFReportLink.html +765 -0
- data/doc/TaskJuggler/RealFormat.html +26 -6
- data/doc/TaskJuggler/RealFormatAttribute.html +26 -6
- data/doc/TaskJuggler/ReferenceAttribute.html +59 -39
- data/doc/TaskJuggler/Report.html +402 -251
- data/doc/TaskJuggler/ReportBase.html +162 -137
- data/doc/TaskJuggler/ReportContext.html +112 -29
- data/doc/TaskJuggler/ReportServer.html +89 -64
- data/doc/TaskJuggler/ReportServerIface.html +75 -55
- data/doc/TaskJuggler/ReportServerRecord.html +54 -31
- data/doc/TaskJuggler/ReportServlet.html +980 -0
- data/doc/TaskJuggler/ReportTable.html +41 -21
- data/doc/TaskJuggler/ReportTableCell.html +214 -170
- data/doc/TaskJuggler/ReportTableColumn.html +30 -10
- data/doc/TaskJuggler/ReportTableLegend.html +36 -16
- data/doc/TaskJuggler/ReportTableLine.html +32 -12
- data/doc/TaskJuggler/Resource.html +99 -87
- data/doc/TaskJuggler/ResourceListAttribute.html +59 -39
- data/doc/TaskJuggler/ResourceListRE.html +47 -26
- data/doc/TaskJuggler/ResourceScenario.html +403 -437
- data/doc/TaskJuggler/RichText.html +26 -6
- data/doc/TaskJuggler/RichTextAttribute.html +50 -30
- data/doc/TaskJuggler/RichTextDocument.html +37 -17
- data/doc/TaskJuggler/RichTextElement.html +475 -413
- data/doc/TaskJuggler/RichTextException.html +22 -2
- data/doc/TaskJuggler/RichTextFunctionExample.html +28 -8
- data/doc/TaskJuggler/RichTextFunctionHandler.html +24 -4
- data/doc/TaskJuggler/RichTextImage.html +22 -2
- data/doc/TaskJuggler/RichTextIntermediate.html +38 -18
- data/doc/TaskJuggler/RichTextParser.html +56 -34
- data/doc/TaskJuggler/RichTextScanner.html +82 -61
- data/doc/TaskJuggler/RichTextSnip.html +34 -14
- data/doc/TaskJuggler/RichTextSyntaxRules.html +507 -353
- data/doc/TaskJuggler/Scenario.html +22 -2
- data/doc/TaskJuggler/ScenarioData.html +30 -46
- data/doc/TaskJuggler/ScenarioListAttribute.html +38 -18
- data/doc/TaskJuggler/Scoreboard.html +42 -22
- data/doc/TaskJuggler/SheetHandlerBase.html +40 -20
- data/doc/TaskJuggler/SheetReceiver.html +333 -295
- data/doc/TaskJuggler/SheetSender.html +253 -230
- data/doc/TaskJuggler/Shift.html +26 -6
- data/doc/TaskJuggler/ShiftAssignment.html +89 -73
- data/doc/TaskJuggler/ShiftAssignments.html +226 -234
- data/doc/TaskJuggler/ShiftAssignmentsAttribute.html +39 -54
- data/doc/TaskJuggler/ShiftScenario.html +28 -8
- data/doc/TaskJuggler/SortListAttribute.html +34 -14
- data/doc/TaskJuggler/SourceFileInfo.html +24 -4
- data/doc/TaskJuggler/StatusSheetReceiver.html +24 -3
- data/doc/TaskJuggler/StatusSheetReport.html +168 -153
- data/doc/TaskJuggler/StatusSheetSender.html +24 -3
- data/doc/TaskJuggler/StringAttribute.html +38 -18
- data/doc/TaskJuggler/SymbolAttribute.html +32 -12
- data/doc/TaskJuggler/SyntaxReference.html +40 -20
- data/doc/TaskJuggler/TOCEntry.html +26 -6
- data/doc/TaskJuggler/TSResourceRecord.html +22 -2
- data/doc/TaskJuggler/TSTaskRecord.html +22 -2
- data/doc/TaskJuggler/TableColumnDefinition.html +59 -22
- data/doc/TaskJuggler/TableOfContents.html +26 -6
- data/doc/TaskJuggler/TableReport.html +937 -904
- data/doc/TaskJuggler/Task.html +55 -36
- data/doc/TaskJuggler/TaskDependency.html +24 -4
- data/doc/TaskJuggler/TaskListAttribute.html +50 -30
- data/doc/TaskJuggler/TaskListRE.html +27 -7
- data/doc/TaskJuggler/TaskScenario.html +1273 -1153
- data/doc/TaskJuggler/TextFormatter.html +28 -8
- data/doc/TaskJuggler/TextParser.html +585 -338
- data/doc/TaskJuggler/TextParser/Pattern.html +54 -34
- data/doc/TaskJuggler/TextParser/Rule.html +95 -73
- data/doc/TaskJuggler/TextParser/StackElement.html +39 -17
- data/doc/TaskJuggler/TextParser/TextParserResultArray.html +24 -4
- data/doc/TaskJuggler/TextParser/TokenDoc.html +22 -2
- data/doc/TaskJuggler/TextReport.html +28 -8
- data/doc/TaskJuggler/TextScanner.html +400 -1404
- data/doc/TaskJuggler/TextScanner/BufferStreamHandle.html +28 -240
- data/doc/TaskJuggler/TextScanner/FileStreamHandle.html +37 -184
- data/doc/TaskJuggler/TextScanner/MacroStackEntry.html +682 -0
- data/doc/TaskJuggler/TextScanner/StreamHandle.html +342 -67
- data/doc/TaskJuggler/TimeSheet.html +48 -28
- data/doc/TaskJuggler/TimeSheetReceiver.html +24 -3
- data/doc/TaskJuggler/TimeSheetRecord.html +47 -27
- data/doc/TaskJuggler/TimeSheetReport.html +154 -133
- data/doc/TaskJuggler/TimeSheetSender.html +24 -3
- data/doc/TaskJuggler/TimeSheetSummary.html +137 -91
- data/doc/TaskJuggler/TimeSheets.html +26 -6
- data/doc/TaskJuggler/Tj3AppBase.html +85 -58
- data/doc/TaskJuggler/Tj3Client.html +292 -238
- data/doc/TaskJuggler/Tj3Daemon.html +159 -74
- data/doc/TaskJuggler/Tj3SheetAppBase.html +26 -6
- data/doc/TaskJuggler/Tj3SsReceiver.html +26 -6
- data/doc/TaskJuggler/Tj3SsSender.html +53 -26
- data/doc/TaskJuggler/Tj3TsReceiver.html +28 -7
- data/doc/TaskJuggler/Tj3TsSender.html +26 -6
- data/doc/TaskJuggler/Tj3TsSummary.html +26 -6
- data/doc/TaskJuggler/TjException.html +22 -2
- data/doc/TaskJuggler/TjTime.html +216 -160
- data/doc/TaskJuggler/TjpExample.html +34 -14
- data/doc/TaskJuggler/TjpExportRE.html +403 -407
- data/doc/TaskJuggler/TjpSyntaxRules.html +4805 -4408
- data/doc/TaskJuggler/URLParameter.html +649 -0
- data/doc/TaskJuggler/UserManual.html +42 -22
- data/doc/TaskJuggler/WebServer.html +702 -0
- data/doc/TaskJuggler/WorkingHours.html +38 -18
- data/doc/TaskJuggler/WorkingHoursAttribute.html +61 -41
- data/doc/TaskJuggler/XMLBlob.html +24 -4
- data/doc/TaskJuggler/XMLComment.html +24 -4
- data/doc/TaskJuggler/XMLDocument.html +30 -10
- data/doc/TaskJuggler/XMLElement.html +34 -14
- data/doc/TaskJuggler/XMLNamedText.html +22 -2
- data/doc/TaskJuggler/XMLText.html +24 -4
- data/doc/index.html +1841 -1666
- data/doc/lib/AccountScenario_rb.html +1 -1
- data/doc/lib/Account_rb.html +1 -1
- data/doc/lib/Allocation_rb.html +1 -1
- data/doc/lib/AppConfig_rb.html +2 -2
- data/doc/lib/AttributeBase_rb.html +1 -1
- data/doc/lib/AttributeDefinition_rb.html +1 -1
- data/doc/lib/Attributes_rb.html +2 -2
- data/doc/lib/BatchProcessor_rb.html +1 -1
- data/doc/lib/Booking_rb.html +1 -1
- data/doc/lib/ChargeSet_rb.html +1 -1
- data/doc/lib/Charge_rb.html +1 -1
- data/doc/lib/HTMLDocument_rb.html +1 -1
- data/doc/lib/Interval_rb.html +1 -1
- data/doc/lib/Journal_rb.html +2 -2
- data/doc/lib/KeywordArray_rb.html +1 -1
- data/doc/lib/KeywordDocumentation_rb.html +1 -1
- data/doc/lib/Limits_rb.html +2 -2
- data/doc/lib/LogFile_rb.html +2 -2
- data/doc/lib/Log_rb.html +1 -1
- data/doc/lib/LogicalExpression_rb.html +1 -1
- data/doc/lib/LogicalFunction_rb.html +2 -2
- data/doc/lib/LogicalOperation_rb.html +2 -2
- data/doc/lib/MacroParser_rb.html +1 -1
- data/doc/lib/MacroTable_rb.html +1 -1
- data/doc/lib/MessageHandler_rb.html +1 -1
- data/doc/lib/Message_rb.html +1 -1
- data/doc/lib/ProjectFileParser_rb.html +4 -8
- data/doc/lib/ProjectFileScanner_rb.html +67 -0
- data/doc/lib/Project_rb.html +2 -2
- data/doc/lib/PropertyList_rb.html +2 -2
- data/doc/lib/PropertySet_rb.html +2 -2
- data/doc/lib/PropertyTreeNode_rb.html +2 -2
- data/doc/lib/Query_rb.html +2 -2
- data/doc/lib/RTFHandlers_rb.html +73 -0
- data/doc/lib/RTFNavigator_rb.html +1 -1
- data/doc/lib/RTFQuery_rb.html +1 -1
- data/doc/lib/RTFReportLink_rb.html +71 -0
- data/doc/lib/RTFReport_rb.html +2 -2
- data/doc/lib/RealFormat_rb.html +1 -1
- data/doc/lib/ResourceScenario_rb.html +2 -2
- data/doc/lib/Resource_rb.html +2 -2
- data/doc/lib/RichTextDocument_rb.html +1 -1
- data/doc/lib/RichTextElement_rb.html +2 -2
- data/doc/lib/RichTextFunctionExample_rb.html +1 -1
- data/doc/lib/RichTextFunctionHandler_rb.html +1 -1
- data/doc/lib/RichTextParser_rb.html +2 -2
- data/doc/lib/RichTextScanner_rb.html +2 -2
- data/doc/lib/RichTextSnip_rb.html +1 -1
- data/doc/lib/RichTextSyntaxRules_rb.html +2 -2
- data/doc/lib/RichText_rb.html +1 -1
- data/doc/lib/RuntimeConfig_rb.html +1 -1
- data/doc/lib/ScenarioData_rb.html +2 -2
- data/doc/lib/Scenario_rb.html +1 -1
- data/doc/lib/Scoreboard_rb.html +1 -1
- data/doc/lib/SheetHandlerBase_rb.html +1 -1
- data/doc/lib/SheetReceiver_rb.html +2 -2
- data/doc/lib/SheetSender_rb.html +4 -2
- data/doc/lib/ShiftAssignments_rb.html +4 -2
- data/doc/lib/ShiftScenario_rb.html +1 -1
- data/doc/lib/Shift_rb.html +1 -1
- data/doc/lib/SourceFileInfo_rb.html +1 -1
- data/doc/lib/StatusSheetReceiver_rb.html +2 -2
- data/doc/lib/StatusSheetSender_rb.html +2 -2
- data/doc/lib/SyntaxReference_rb.html +1 -1
- data/doc/lib/TOCEntry_rb.html +1 -1
- data/doc/lib/TableColumnDefinition_rb.html +2 -2
- data/doc/lib/TableOfContents_rb.html +1 -1
- data/doc/lib/TaskDependency_rb.html +1 -1
- data/doc/lib/TaskJuggler_rb.html +2 -2
- data/doc/lib/TaskScenario_rb.html +2 -2
- data/doc/lib/Task_rb.html +2 -2
- data/doc/lib/TextFormatter_rb.html +1 -1
- data/doc/lib/TextParser/Pattern_rb.html +1 -1
- data/doc/lib/TextParser/Rule_rb.html +2 -2
- data/doc/lib/TextParser/StackElement_rb.html +2 -2
- data/doc/lib/TextParser/TokenDoc_rb.html +1 -1
- data/doc/lib/TextParser_rb.html +2 -2
- data/doc/lib/TextScanner_rb.html +6 -2
- data/doc/lib/TimeSheetReceiver_rb.html +2 -2
- data/doc/lib/TimeSheetSender_rb.html +2 -2
- data/doc/lib/TimeSheetSummary_rb.html +2 -2
- data/doc/lib/TimeSheets_rb.html +2 -2
- data/doc/lib/Tj3AppBase_rb.html +2 -2
- data/doc/lib/Tj3Config_rb.html +2 -2
- data/doc/lib/Tj3SheetAppBase_rb.html +2 -2
- data/doc/lib/TjException_rb.html +1 -1
- data/doc/lib/TjTime_rb.html +2 -2
- data/doc/lib/TjpExample_rb.html +1 -1
- data/doc/lib/TjpSyntaxRules_rb.html +2 -2
- data/doc/lib/URLParameter_rb.html +67 -0
- data/doc/lib/UTF8String_rb.html +1 -1
- data/doc/lib/UserManual_rb.html +1 -1
- data/doc/lib/WorkingHours_rb.html +1 -1
- data/doc/lib/XMLDocument_rb.html +2 -2
- data/doc/lib/XMLElement_rb.html +1 -1
- data/doc/lib/daemon/Daemon_rb.html +1 -1
- data/doc/lib/daemon/ProcessIntercom_rb.html +2 -2
- data/doc/lib/daemon/ProjectBroker_rb.html +4 -2
- data/doc/lib/daemon/ProjectServer_rb.html +2 -2
- data/doc/lib/daemon/ReportServer_rb.html +2 -2
- data/doc/lib/daemon/WebServer_rb.html +75 -0
- data/doc/lib/deep_copy_rb.html +2 -2
- data/doc/lib/reports/CSVFile_rb.html +2 -2
- data/doc/lib/reports/ColumnTable_rb.html +1 -1
- data/doc/lib/reports/GanttChart_rb.html +2 -2
- data/doc/lib/reports/GanttContainer_rb.html +1 -1
- data/doc/lib/reports/GanttHeaderScaleItem_rb.html +1 -1
- data/doc/lib/reports/GanttHeader_rb.html +1 -1
- data/doc/lib/reports/GanttLine_rb.html +1 -1
- data/doc/lib/reports/GanttLoadStack_rb.html +1 -1
- data/doc/lib/reports/GanttMilestone_rb.html +1 -1
- data/doc/lib/reports/GanttRouter_rb.html +1 -1
- data/doc/lib/reports/GanttTaskBar_rb.html +1 -1
- data/doc/lib/reports/HTMLGraphics_rb.html +1 -1
- data/doc/lib/reports/Navigator_rb.html +2 -2
- data/doc/lib/reports/NikuReport_rb.html +2 -2
- data/doc/lib/reports/ReportBase_rb.html +2 -2
- data/doc/lib/reports/ReportContext_rb.html +2 -2
- data/doc/lib/reports/ReportTableCell_rb.html +2 -2
- data/doc/lib/reports/ReportTableColumn_rb.html +1 -1
- data/doc/lib/reports/ReportTableLegend_rb.html +1 -1
- data/doc/lib/reports/ReportTableLine_rb.html +1 -1
- data/doc/lib/reports/ReportTable_rb.html +2 -2
- data/doc/lib/reports/Report_rb.html +2 -2
- data/doc/lib/reports/ResourceListRE_rb.html +2 -2
- data/doc/lib/reports/StatusSheetReport_rb.html +2 -2
- data/doc/lib/reports/TableReport_rb.html +2 -2
- data/doc/lib/reports/TaskListRE_rb.html +2 -2
- data/doc/lib/reports/TextReport_rb.html +1 -1
- data/doc/lib/reports/TimeSheetReport_rb.html +2 -2
- data/doc/lib/reports/TjpExportRE_rb.html +2 -2
- data/doc/lib/ruby-signal-bug_rb.html +1 -1
- data/doc/lib/taskjuggler3_rb.html +2 -2
- data/doc/lib/tj3client_rb.html +2 -2
- data/doc/lib/tj3d_rb.html +2 -2
- data/doc/lib/tj3man_rb.html +1 -1
- data/doc/lib/tj3ss_receiver_rb.html +1 -1
- data/doc/lib/tj3ss_sender_rb.html +2 -2
- data/doc/lib/tj3ts_receiver_rb.html +2 -2
- data/doc/lib/tj3ts_sender_rb.html +1 -1
- data/doc/lib/tj3ts_summary_rb.html +1 -1
- data/doc/rdoc.css +9 -4
- data/examples/tutorial.tjp +17 -15
- data/gem_spec.rb +3 -0
- data/lib/AppConfig.rb +3 -1
- data/lib/Attributes.rb +10 -8
- data/lib/Journal.rb +55 -20
- data/lib/Limits.rb +72 -46
- data/lib/LogFile.rb +3 -3
- data/lib/LogicalFunction.rb +19 -6
- data/lib/LogicalOperation.rb +5 -1
- data/lib/Project.rb +37 -9
- data/lib/ProjectFileParser.rb +25 -22
- data/lib/ProjectFileScanner.rb +365 -0
- data/lib/PropertyList.rb +2 -1
- data/lib/PropertySet.rb +14 -4
- data/lib/PropertyTreeNode.rb +42 -29
- data/lib/Query.rb +3 -1
- data/lib/RTFHandlers.rb +35 -0
- data/lib/RTFReport.rb +23 -6
- data/lib/RTFReportLink.rb +72 -0
- data/lib/Resource.rb +8 -16
- data/lib/ResourceScenario.rb +1 -22
- data/lib/RichTextElement.rb +42 -0
- data/lib/RichTextParser.rb +6 -4
- data/lib/RichTextScanner.rb +5 -5
- data/lib/RichTextSyntaxRules.rb +48 -10
- data/lib/ScenarioData.rb +5 -3
- data/lib/SheetReceiver.rb +24 -6
- data/lib/SheetSender.rb +17 -13
- data/lib/ShiftAssignments.rb +56 -52
- data/lib/StatusSheetReceiver.rb +1 -0
- data/lib/StatusSheetSender.rb +1 -0
- data/lib/TableColumnDefinition.rb +4 -2
- data/lib/Task.rb +8 -9
- data/lib/TaskJuggler.rb +21 -11
- data/lib/TaskScenario.rb +61 -26
- data/lib/TextParser.rb +268 -106
- data/lib/TextParser/Rule.rb +4 -2
- data/lib/TextParser/StackElement.rb +6 -4
- data/lib/TextScanner.rb +283 -700
- data/lib/TimeSheetReceiver.rb +1 -0
- data/lib/TimeSheetSender.rb +1 -0
- data/lib/TimeSheetSummary.rb +51 -26
- data/lib/TimeSheets.rb +1 -1
- data/lib/Tj3AppBase.rb +8 -1
- data/lib/Tj3Config.rb +1 -1
- data/lib/TjTime.rb +5 -0
- data/lib/TjpSyntaxRules.rb +360 -144
- data/lib/URLParameter.rb +30 -0
- data/lib/XMLDocument.rb +2 -2
- data/lib/daemon/ProcessIntercom.rb +50 -9
- data/lib/daemon/ProjectBroker.rb +63 -10
- data/lib/daemon/ProjectServer.rb +47 -16
- data/lib/daemon/ReportServer.rb +9 -4
- data/lib/daemon/WebServer.rb +204 -0
- data/lib/deep_copy.rb +4 -1
- data/lib/reports/CSVFile.rb +150 -66
- data/lib/reports/GanttChart.rb +2 -1
- data/lib/reports/Navigator.rb +18 -5
- data/lib/reports/NikuReport.rb +32 -2
- data/lib/reports/Report.rb +65 -37
- data/lib/reports/ReportBase.rb +14 -9
- data/lib/reports/ReportContext.rb +19 -4
- data/lib/reports/ReportTable.rb +2 -2
- data/lib/reports/ReportTableCell.rb +54 -30
- data/lib/reports/ResourceListRE.rb +4 -3
- data/lib/reports/StatusSheetReport.rb +8 -13
- data/lib/reports/TableReport.rb +47 -32
- data/lib/reports/TaskListRE.rb +3 -3
- data/lib/reports/TimeSheetReport.rb +14 -5
- data/lib/reports/TjpExportRE.rb +14 -19
- data/lib/taskjuggler3.rb +15 -0
- data/lib/tj3client.rb +9 -7
- data/lib/tj3d.rb +38 -10
- data/lib/tj3ss_sender.rb +7 -0
- data/lib/tj3ts_receiver.rb +1 -0
- data/manual/Day_To_Day_Juggling +1 -1
- data/manual/Rich_Text_Attributes +8 -0
- data/manual/TaskJuggler_2x_Migration +7 -0
- data/manual/The_TaskJuggler_Syntax +20 -6
- data/prj_cfg.rb +3 -2
- data/tasks/changelog.rake +36 -0
- data/tasks/csts.rake +2 -3
- data/tasks/gem.rake +10 -0
- data/tasks/missing.rake +0 -17
- data/test/TestSuite/ReportGenerator/Correct/Journal.html +63 -0
- data/test/TestSuite/ReportGenerator/Correct/Journal.tjp +14 -0
- data/test/TestSuite/{HTML-Reports/LogicalFunctions.tjp → ReportGenerator/Correct/LogicalFunctions1.tjp} +2 -2
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.csv +3 -0
- data/test/TestSuite/ReportGenerator/Correct/LogicalFunctions2.tjp +19 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/ReportGenerator/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/details.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resource.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/task.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/opennodes.tjp +26 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/Journal-1.csv +6 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions1-1.csv +7 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/LogicalFunctions2-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/refs/opennodes-1.csv +2 -0
- data/test/TestSuite/ReportGenerator/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/ReportGenerator/Errors/rtp_report_recursion.tjp +20 -0
- data/test/TestSuite/Scheduler/Correct/Container.html +349 -0
- data/test/TestSuite/Scheduler/Correct/Limits.tjp +11 -4
- data/test/TestSuite/Scheduler/Correct/Shift2.html +464 -150
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.html +108 -0
- data/test/TestSuite/Scheduler/Correct/TimeSheet2.tjp +7 -0
- data/test/TestSuite/Scheduler/Correct/css/tjmanual.css +14 -0
- data/test/TestSuite/Scheduler/Correct/css/tjreport.css +233 -21
- data/test/TestSuite/Scheduler/Correct/scripts/wz_tooltip.js +20 -20
- data/test/TestSuite/StatusSheetTemplates/project.tji +35 -0
- data/test/TestSuite/StatusSheetTemplates/project.tjp +56 -0
- data/test/TestSuite/StatusSheets/run +3 -2
- data/test/TestSuite/Syntax/Correct/Include.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-1.tjp +1 -1
- data/test/TestSuite/Syntax/Correct/Macro-2.tjp +6 -0
- data/test/TestSuite/Syntax/Correct/Macro-3.tjp +14 -0
- data/test/TestSuite/Syntax/Correct/ResourcePrefix.html +32 -0
- data/test/TestSuite/Syntax/Correct/css/tjmanual.css +66 -0
- data/test/TestSuite/Syntax/Correct/css/tjreport.css +407 -0
- data/test/TestSuite/Syntax/Correct/icons/details.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-green.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-red.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/flag-yellow.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resource.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/resourcegroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/task.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/taskgroup.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-down.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-flat.png +0 -0
- data/test/TestSuite/Syntax/Correct/icons/trend-up.png +0 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file2.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir1/file5.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/all.tji +3 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file1.tji +2 -0
- data/test/TestSuite/Syntax/Correct/include/dir3/file2.tji +1 -0
- data/test/TestSuite/Syntax/Correct/scripts/wz_tooltip.js +1301 -0
- data/test/TestSuite/Syntax/Correct/tutorial.tjp +13 -13
- data/test/TestSuite/Syntax/Errors/empty.tjp +1 -1
- data/test/TestSuite/Syntax/Errors/include_recursion.tjp +1 -0
- data/test/TestSuite/Syntax/Errors/macro_stack_overflow.tjp +2 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring1.tjp → no_token_match1.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring2.tjp → no_token_match2.tjp} +2 -2
- data/test/TestSuite/Syntax/Errors/{eof_in_istring3.tjp → no_token_match3.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring4.tjp → no_token_match4.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/{eof_in_istring5.tjp → no_token_match5.tjp} +1 -1
- data/test/TestSuite/Syntax/Errors/not_scheduled.tjp +13 -0
- data/test/TestSuite/Syntax/Errors/unsupported_token.tjp +1 -1
- data/test/TestSuite/TimeSheets/run +5 -5
- data/test/test_CSVFile.rb +75 -0
- data/test/test_Limits.rb +63 -5
- data/test/test_ProjectFileScanner.rb +163 -0
- data/test/test_ReportGenerator.rb +81 -0
- data/test/test_RichText.rb +21 -3
- data/test/test_Scheduler.rb +1 -1
- data/test/test_ShiftAssignments.rb +4 -4
- data/test/test_Syntax.rb +1 -1
- data/test/test_URLParameter.rb +30 -0
- metadata +126 -32
- data/test/TestSuite/Scheduler/Errors/not_scheduled.tjp +0 -8
- data/test/TestSuite/Syntax/Errors/bad_comment.tjp +0 -7
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/boss_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev1_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev2_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/dev3_2002-03-01.tji +0 -67
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/doc_2002-03-01.tji +0 -48
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/resources.yml +0 -31
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/2002-03-01/test_2002-03-01.tji +0 -36
- data/test/TestSuite/TimeSheets/TimeSheetTemplates/acceptable_intervals +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/all.tji +0 -1
- data/test/TestSuite/TimeSheets/TimeSheets/2002-03-01/dev2_2002-03-01.tji +0 -54
- data/test/TestSuite/TimeSheets/TimeSheets/all.tji +0 -2
- data/test/TestSuite/TimeSheets/receiver.log +0 -102
- data/test/TestSuite/TimeSheets/sender.log +0 -794
- data/test/TestSuite/TimeSheets/summary.log +0 -884
- data/test/TestSuite/TimeSheets/timesheets.log +0 -45
- data/test/TestSuite/TimeSheets/tj3d.log +0 -292
- data/test/test_TextScanner.rb +0 -95
|
@@ -69,19 +69,21 @@
|
|
|
69
69
|
<h3 class="section-header">Methods</h3>
|
|
70
70
|
<ul class="link-list">
|
|
71
71
|
|
|
72
|
-
<li><a href="#
|
|
72
|
+
<li><a href="#method-c-new">::new</a></li>
|
|
73
73
|
|
|
74
|
-
<li><a href="#
|
|
74
|
+
<li><a href="#method-c-strToNative">::strToNative</a></li>
|
|
75
75
|
|
|
76
|
-
<li><a href="#
|
|
76
|
+
<li><a href="#method-i-marshal">#marshal</a></li>
|
|
77
77
|
|
|
78
|
-
<li><a href="#
|
|
78
|
+
<li><a href="#method-i-parse">#parse</a></li>
|
|
79
79
|
|
|
80
|
-
<li><a href="#
|
|
80
|
+
<li><a href="#method-i-read">#read</a></li>
|
|
81
81
|
|
|
82
|
-
<li><a href="#
|
|
82
|
+
<li><a href="#method-i-to_s">#to_s</a></li>
|
|
83
83
|
|
|
84
|
-
<li><a href="#
|
|
84
|
+
<li><a href="#method-i-unMarshal">#unMarshal</a></li>
|
|
85
|
+
|
|
86
|
+
<li><a href="#method-i-write">#write</a></li>
|
|
85
87
|
|
|
86
88
|
</ul>
|
|
87
89
|
</div>
|
|
@@ -98,6 +100,8 @@
|
|
|
98
100
|
<h3 class="section-header">Files</h3>
|
|
99
101
|
<ul>
|
|
100
102
|
|
|
103
|
+
<li class="file"><a href="../CHANGELOG.html">CHANGELOG</a></li>
|
|
104
|
+
|
|
101
105
|
<li class="file"><a href="../COPYING.html">COPYING</a></li>
|
|
102
106
|
|
|
103
107
|
<li class="file"><a href="../README.html">README</a></li>
|
|
@@ -267,6 +271,8 @@
|
|
|
267
271
|
|
|
268
272
|
<li><a href="../TaskJuggler/NikuResource.html">TaskJuggler::NikuResource</a></li>
|
|
269
273
|
|
|
274
|
+
<li><a href="../TaskJuggler/NodeListAttribute.html">TaskJuggler::NodeListAttribute</a></li>
|
|
275
|
+
|
|
270
276
|
<li><a href="../TaskJuggler/OnShiftCache.html">TaskJuggler::OnShiftCache</a></li>
|
|
271
277
|
|
|
272
278
|
<li><a href="../TaskJuggler/ProcessIntercom.html">TaskJuggler::ProcessIntercom</a></li>
|
|
@@ -281,6 +287,8 @@
|
|
|
281
287
|
|
|
282
288
|
<li><a href="../TaskJuggler/ProjectFileParser.html">TaskJuggler::ProjectFileParser</a></li>
|
|
283
289
|
|
|
290
|
+
<li><a href="../TaskJuggler/ProjectFileScanner.html">TaskJuggler::ProjectFileScanner</a></li>
|
|
291
|
+
|
|
284
292
|
<li><a href="../TaskJuggler/ProjectRecord.html">TaskJuggler::ProjectRecord</a></li>
|
|
285
293
|
|
|
286
294
|
<li><a href="../TaskJuggler/ProjectServer.html">TaskJuggler::ProjectServer</a></li>
|
|
@@ -297,12 +305,16 @@
|
|
|
297
305
|
|
|
298
306
|
<li><a href="../TaskJuggler/Query.html">TaskJuggler::Query</a></li>
|
|
299
307
|
|
|
308
|
+
<li><a href="../TaskJuggler/RTFHandlers.html">TaskJuggler::RTFHandlers</a></li>
|
|
309
|
+
|
|
300
310
|
<li><a href="../TaskJuggler/RTFNavigator.html">TaskJuggler::RTFNavigator</a></li>
|
|
301
311
|
|
|
302
312
|
<li><a href="../TaskJuggler/RTFQuery.html">TaskJuggler::RTFQuery</a></li>
|
|
303
313
|
|
|
304
314
|
<li><a href="../TaskJuggler/RTFReport.html">TaskJuggler::RTFReport</a></li>
|
|
305
315
|
|
|
316
|
+
<li><a href="../TaskJuggler/RTFReportLink.html">TaskJuggler::RTFReportLink</a></li>
|
|
317
|
+
|
|
306
318
|
<li><a href="../TaskJuggler/RealFormat.html">TaskJuggler::RealFormat</a></li>
|
|
307
319
|
|
|
308
320
|
<li><a href="../TaskJuggler/RealFormatAttribute.html">TaskJuggler::RealFormatAttribute</a></li>
|
|
@@ -321,6 +333,8 @@
|
|
|
321
333
|
|
|
322
334
|
<li><a href="../TaskJuggler/ReportServerRecord.html">TaskJuggler::ReportServerRecord</a></li>
|
|
323
335
|
|
|
336
|
+
<li><a href="../TaskJuggler/ReportServlet.html">TaskJuggler::ReportServlet</a></li>
|
|
337
|
+
|
|
324
338
|
<li><a href="../TaskJuggler/ReportTable.html">TaskJuggler::ReportTable</a></li>
|
|
325
339
|
|
|
326
340
|
<li><a href="../TaskJuggler/ReportTableCell.html">TaskJuggler::ReportTableCell</a></li>
|
|
@@ -449,6 +463,8 @@
|
|
|
449
463
|
|
|
450
464
|
<li><a href="../TaskJuggler/TextScanner/FileStreamHandle.html">TaskJuggler::TextScanner::FileStreamHandle</a></li>
|
|
451
465
|
|
|
466
|
+
<li><a href="../TaskJuggler/TextScanner/MacroStackEntry.html">TaskJuggler::TextScanner::MacroStackEntry</a></li>
|
|
467
|
+
|
|
452
468
|
<li><a href="../TaskJuggler/TextScanner/StreamHandle.html">TaskJuggler::TextScanner::StreamHandle</a></li>
|
|
453
469
|
|
|
454
470
|
<li><a href="../TaskJuggler/TimeSheet.html">TaskJuggler::TimeSheet</a></li>
|
|
@@ -493,8 +509,12 @@
|
|
|
493
509
|
|
|
494
510
|
<li><a href="../TaskJuggler/TjpSyntaxRules.html">TaskJuggler::TjpSyntaxRules</a></li>
|
|
495
511
|
|
|
512
|
+
<li><a href="../TaskJuggler/URLParameter.html">TaskJuggler::URLParameter</a></li>
|
|
513
|
+
|
|
496
514
|
<li><a href="../TaskJuggler/UserManual.html">TaskJuggler::UserManual</a></li>
|
|
497
515
|
|
|
516
|
+
<li><a href="../TaskJuggler/WebServer.html">TaskJuggler::WebServer</a></li>
|
|
517
|
+
|
|
498
518
|
<li><a href="../TaskJuggler/WorkingHours.html">TaskJuggler::WorkingHours</a></li>
|
|
499
519
|
|
|
500
520
|
<li><a href="../TaskJuggler/WorkingHoursAttribute.html">TaskJuggler::WorkingHoursAttribute</a></li>
|
|
@@ -521,6 +541,8 @@
|
|
|
521
541
|
|
|
522
542
|
<li><a href="../String.html">String</a></li>
|
|
523
543
|
|
|
544
|
+
<li><a href="../StringIO.html">StringIO</a></li>
|
|
545
|
+
|
|
524
546
|
</ul>
|
|
525
547
|
<div id="no-class-search-results" style="display: none;">No matching classes.</div>
|
|
526
548
|
</div>
|
|
@@ -546,6 +568,27 @@ nightmare. Hence we use our own class.
|
|
|
546
568
|
|
|
547
569
|
<!-- Attributes -->
|
|
548
570
|
|
|
571
|
+
<div id="attribute-method-details" class="method-section section">
|
|
572
|
+
<h3 class="section-header">Attributes</h3>
|
|
573
|
+
|
|
574
|
+
|
|
575
|
+
<div id="data-attribute-method" class="method-detail">
|
|
576
|
+
<a name="data"></a>
|
|
577
|
+
|
|
578
|
+
<div class="method-heading attribute-method-heading">
|
|
579
|
+
<span class="method-name">data</span><span
|
|
580
|
+
class="attribute-access-type">[R]</span>
|
|
581
|
+
</div>
|
|
582
|
+
|
|
583
|
+
<div class="method-description">
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
</div>
|
|
588
|
+
</div>
|
|
589
|
+
|
|
590
|
+
</div>
|
|
591
|
+
|
|
549
592
|
|
|
550
593
|
<!-- Methods -->
|
|
551
594
|
|
|
@@ -554,12 +597,12 @@ nightmare. Hence we use our own class.
|
|
|
554
597
|
|
|
555
598
|
|
|
556
599
|
<div id="new-method" class="method-detail ">
|
|
557
|
-
<a name="
|
|
600
|
+
<a name="method-c-new"></a>
|
|
558
601
|
|
|
559
602
|
<div class="method-heading">
|
|
560
603
|
|
|
561
604
|
<span class="method-name">new</span><span
|
|
562
|
-
class="method-args">(data, separator = ';', quote = '"')</span>
|
|
605
|
+
class="method-args">(data = nil, separator = ';', quote = '"')</span>
|
|
563
606
|
<span class="method-click-advice">click to toggle source</span>
|
|
564
607
|
|
|
565
608
|
</div>
|
|
@@ -577,12 +620,65 @@ is an Array of Arrays that holds the table. Optionally, you can specify a
|
|
|
577
620
|
<div class="method-source-code"
|
|
578
621
|
id="new-source">
|
|
579
622
|
<pre>
|
|
580
|
-
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
623
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 27</span>
|
|
624
|
+
27: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">initialize</span>(<span class="ruby-identifier">data</span> = <span class="ruby-keyword kw">nil</span>, <span class="ruby-identifier">separator</span> = <span class="ruby-value str">';'</span>, <span class="ruby-identifier">quote</span> = <span class="ruby-value str">'"'</span>)
|
|
625
|
+
28: <span class="ruby-ivar">@data</span> = <span class="ruby-identifier">data</span>
|
|
626
|
+
29: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Illegal separator: #{separator}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-value str">'."'</span>.<span class="ruby-identifier">include?</span>(<span class="ruby-identifier">separator</span>)
|
|
627
|
+
30: <span class="ruby-ivar">@separator</span> = <span class="ruby-identifier">separator</span>
|
|
628
|
+
31: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Illegal quote: #{separator}"</span> <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">quote</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
629
|
+
32: <span class="ruby-ivar">@quote</span> = <span class="ruby-identifier">quote</span>
|
|
630
|
+
33: <span class="ruby-keyword kw">end</span></pre>
|
|
631
|
+
</div>
|
|
632
|
+
|
|
633
|
+
</div>
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
|
|
638
|
+
</div>
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
<div id="str-o-ative-method" class="method-detail ">
|
|
642
|
+
<a name="method-c-strToNative"></a>
|
|
643
|
+
|
|
644
|
+
<div class="method-heading">
|
|
645
|
+
|
|
646
|
+
<span class="method-name">strToNative</span><span
|
|
647
|
+
class="method-args">(str)</span>
|
|
648
|
+
<span class="method-click-advice">click to toggle source</span>
|
|
649
|
+
|
|
650
|
+
</div>
|
|
651
|
+
|
|
652
|
+
<div class="method-description">
|
|
653
|
+
|
|
654
|
+
<p>
|
|
655
|
+
Utility function that tries to convert a <a
|
|
656
|
+
href="../String.html">String</a> into a native type that is supported by
|
|
657
|
+
the <a href="CSVFile.html">CSVFile</a> generator. If no native type is
|
|
658
|
+
found, the input <a href="../String.html">String</a> <em>str</em> will be
|
|
659
|
+
returned unmodified. nil is returned as nil.
|
|
660
|
+
</p>
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
<div class="method-source-code"
|
|
665
|
+
id="str-o-ative-source">
|
|
666
|
+
<pre>
|
|
667
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 182</span>
|
|
668
|
+
182: <span class="ruby-keyword kw">def</span> <span class="ruby-constant">CSVFile</span>.<span class="ruby-identifier">strToNative</span>(<span class="ruby-identifier">str</span>)
|
|
669
|
+
183: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">str</span>.<span class="ruby-identifier">nil?</span>
|
|
670
|
+
184: <span class="ruby-keyword kw">nil</span>
|
|
671
|
+
185: <span class="ruby-keyword kw">elsif</span> <span class="ruby-regexp re">/^[-+]?\d+$/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">str</span>
|
|
672
|
+
186: <span class="ruby-comment cmt"># field is a Fixnum</span>
|
|
673
|
+
187: <span class="ruby-identifier">str</span>.<span class="ruby-identifier">to_i</span>
|
|
674
|
+
188: <span class="ruby-keyword kw">elsif</span> <span class="ruby-regexp re">/^[-+]?\d*\.?\d+([eE][-+]?\d+)?$/</span> <span class="ruby-operator">=~</span> <span class="ruby-identifier">str</span>
|
|
675
|
+
189: <span class="ruby-comment cmt"># field is a Float</span>
|
|
676
|
+
190: <span class="ruby-identifier">str</span>.<span class="ruby-identifier">to_f</span>
|
|
677
|
+
191: <span class="ruby-keyword kw">else</span>
|
|
678
|
+
192: <span class="ruby-comment cmt"># Everything else is kept as String</span>
|
|
679
|
+
193: <span class="ruby-identifier">str</span>
|
|
680
|
+
194: <span class="ruby-keyword kw">end</span>
|
|
681
|
+
195: <span class="ruby-keyword kw">end</span></pre>
|
|
586
682
|
</div>
|
|
587
683
|
|
|
588
684
|
</div>
|
|
@@ -600,7 +696,7 @@ is an Array of Arrays that holds the table. Optionally, you can specify a
|
|
|
600
696
|
|
|
601
697
|
|
|
602
698
|
<div id="parse-method" class="method-detail ">
|
|
603
|
-
<a name="
|
|
699
|
+
<a name="method-i-parse"></a>
|
|
604
700
|
|
|
605
701
|
<div class="method-heading">
|
|
606
702
|
|
|
@@ -622,13 +718,101 @@ href="../String.html">String</a> <tt>str</tt>.
|
|
|
622
718
|
<div class="method-source-code"
|
|
623
719
|
id="parse-source">
|
|
624
720
|
<pre>
|
|
625
|
-
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
721
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 84</span>
|
|
722
|
+
84: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">parse</span>(<span class="ruby-identifier">str</span>)
|
|
723
|
+
85: <span class="ruby-ivar">@data</span> = []
|
|
724
|
+
86: <span class="ruby-identifier">state</span> = <span class="ruby-value">:startOfRecord</span>
|
|
725
|
+
87: <span class="ruby-identifier">fields</span> = <span class="ruby-identifier">field</span> = <span class="ruby-identifier">quoted</span> = <span class="ruby-keyword kw">nil</span>
|
|
726
|
+
88:
|
|
727
|
+
89: <span class="ruby-comment cmt"># Make sure the input is terminated with a record end.</span>
|
|
728
|
+
90: <span class="ruby-identifier">str</span> <span class="ruby-operator">+=</span> <span class="ruby-value str">"\n"</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">str</span>[<span class="ruby-value">1</span>] <span class="ruby-operator">==</span> <span class="ruby-value">\n\</span>
|
|
729
|
+
91:
|
|
730
|
+
92: <span class="ruby-identifier">str</span>.<span class="ruby-identifier">each_utf8_char</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">c</span><span class="ruby-operator">|</span>
|
|
731
|
+
93: <span class="ruby-comment cmt">#puts "c: #{c} State: #{state}"</span>
|
|
732
|
+
94: <span class="ruby-keyword kw">case</span> <span class="ruby-identifier">state</span>
|
|
733
|
+
95: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:startOfRecord</span>
|
|
734
|
+
96: <span class="ruby-comment cmt"># This will store the fields of a record</span>
|
|
735
|
+
97: <span class="ruby-identifier">fields</span> = []
|
|
736
|
+
98: <span class="ruby-identifier">state</span> = <span class="ruby-value">:startOfField</span>
|
|
737
|
+
99: <span class="ruby-keyword kw">redo</span>
|
|
738
|
+
100: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:startOfField</span>
|
|
739
|
+
101: <span class="ruby-identifier">field</span> = <span class="ruby-value str">''</span>
|
|
740
|
+
102: <span class="ruby-identifier">quoted</span> = <span class="ruby-keyword kw">false</span>
|
|
741
|
+
103: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@quote</span>
|
|
742
|
+
104: <span class="ruby-comment cmt"># We've found the start of a quoted field.</span>
|
|
743
|
+
105: <span class="ruby-identifier">state</span> = <span class="ruby-value">:inQuotedField</span>
|
|
744
|
+
106: <span class="ruby-identifier">quoted</span> = <span class="ruby-keyword kw">true</span>
|
|
745
|
+
107: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@separator</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
746
|
+
108: <span class="ruby-comment cmt"># We've found an empty field</span>
|
|
747
|
+
109: <span class="ruby-identifier">field</span> = <span class="ruby-keyword kw">nil</span>
|
|
748
|
+
110: <span class="ruby-identifier">state</span> = <span class="ruby-value">:fieldEnd</span>
|
|
749
|
+
111: <span class="ruby-keyword kw">redo</span>
|
|
750
|
+
112: <span class="ruby-keyword kw">else</span>
|
|
751
|
+
113: <span class="ruby-comment cmt"># We've found the first character of an unquoted field</span>
|
|
752
|
+
114: <span class="ruby-identifier">field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
753
|
+
115: <span class="ruby-identifier">state</span> = <span class="ruby-value">:inUnquotedField</span>
|
|
754
|
+
116: <span class="ruby-keyword kw">end</span>
|
|
755
|
+
117: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:inQuotedField</span>
|
|
756
|
+
118: <span class="ruby-comment cmt"># We are processing the content of a quoted field</span>
|
|
757
|
+
119: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@quote</span>
|
|
758
|
+
120: <span class="ruby-comment cmt"># This could be then end of the field or a quoted quote.</span>
|
|
759
|
+
121: <span class="ruby-identifier">state</span> = <span class="ruby-value">:quoteInQuotedField</span>
|
|
760
|
+
122: <span class="ruby-keyword kw">else</span>
|
|
761
|
+
123: <span class="ruby-comment cmt"># We've found a normal character of the quoted field</span>
|
|
762
|
+
124: <span class="ruby-identifier">field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
763
|
+
125: <span class="ruby-keyword kw">end</span>
|
|
764
|
+
126: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:quoteInQuotedField</span>
|
|
765
|
+
127: <span class="ruby-comment cmt"># We are processing a quoted quote or the end of a quoted field</span>
|
|
766
|
+
128: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@quote</span>
|
|
767
|
+
129: <span class="ruby-comment cmt"># We've found a quoted quote</span>
|
|
768
|
+
130: <span class="ruby-identifier">field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
769
|
+
131: <span class="ruby-identifier">state</span> = <span class="ruby-value">:inQuotedField</span>
|
|
770
|
+
132: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@separator</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
771
|
+
133: <span class="ruby-identifier">state</span> = <span class="ruby-value">:fieldEnd</span>
|
|
772
|
+
134: <span class="ruby-keyword kw">redo</span>
|
|
773
|
+
135: <span class="ruby-keyword kw">else</span>
|
|
774
|
+
136: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unexpected character #{c} in CSV"</span>
|
|
775
|
+
137: <span class="ruby-keyword kw">end</span>
|
|
776
|
+
138: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:inUnquotedField</span>
|
|
777
|
+
139: <span class="ruby-comment cmt"># We are processing an unquoted field</span>
|
|
778
|
+
140: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@separator</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
779
|
+
141: <span class="ruby-comment cmt"># We've found the end of a unquoted field</span>
|
|
780
|
+
142: <span class="ruby-identifier">state</span> = <span class="ruby-value">:fieldEnd</span>
|
|
781
|
+
143: <span class="ruby-keyword kw">redo</span>
|
|
782
|
+
144: <span class="ruby-keyword kw">else</span>
|
|
783
|
+
145: <span class="ruby-comment cmt"># A normal character of an unquoted field</span>
|
|
784
|
+
146: <span class="ruby-identifier">field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
785
|
+
147: <span class="ruby-keyword kw">end</span>
|
|
786
|
+
148: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:fieldEnd</span>
|
|
787
|
+
149: <span class="ruby-comment cmt"># We've completed processing a field. Add the field to the list of</span>
|
|
788
|
+
150: <span class="ruby-comment cmt"># fields. Convert Fixnums and Floats in native types.</span>
|
|
789
|
+
151: <span class="ruby-identifier">fields</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">unMarshal</span>(<span class="ruby-identifier">field</span>, <span class="ruby-identifier">quoted</span>)
|
|
790
|
+
152:
|
|
791
|
+
153: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-value str">"\n"</span>
|
|
792
|
+
154: <span class="ruby-comment cmt"># The field end is an end of a record as well.</span>
|
|
793
|
+
155: <span class="ruby-identifier">state</span> = <span class="ruby-value">:recordEnd</span>
|
|
794
|
+
156: <span class="ruby-keyword kw">redo</span>
|
|
795
|
+
157: <span class="ruby-keyword kw">else</span>
|
|
796
|
+
158: <span class="ruby-comment cmt"># Get the next field.</span>
|
|
797
|
+
159: <span class="ruby-identifier">state</span> = <span class="ruby-value">:startOfField</span>
|
|
798
|
+
160: <span class="ruby-keyword kw">end</span>
|
|
799
|
+
161: <span class="ruby-keyword kw">when</span> <span class="ruby-value">:recordEnd</span>
|
|
800
|
+
162: <span class="ruby-comment cmt"># We've found the end of a record. Add fields to the @data</span>
|
|
801
|
+
163: <span class="ruby-comment cmt"># structure.</span>
|
|
802
|
+
164: <span class="ruby-ivar">@data</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">fields</span>
|
|
803
|
+
165: <span class="ruby-comment cmt"># Look for a new record.</span>
|
|
804
|
+
166: <span class="ruby-identifier">state</span> = <span class="ruby-value">:startOfRecord</span>
|
|
805
|
+
167: <span class="ruby-keyword kw">else</span>
|
|
806
|
+
168: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown state #{state}"</span>
|
|
807
|
+
169: <span class="ruby-keyword kw">end</span>
|
|
808
|
+
170: <span class="ruby-keyword kw">end</span>
|
|
809
|
+
171:
|
|
810
|
+
172: <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">state</span> <span class="ruby-operator">==</span> <span class="ruby-value">:startOfRecord</span>
|
|
811
|
+
173: <span class="ruby-identifier">raise</span> <span class="ruby-node">"CSV state machine error in state #{state}"</span>
|
|
812
|
+
174: <span class="ruby-keyword kw">end</span>
|
|
813
|
+
175:
|
|
814
|
+
176: <span class="ruby-ivar">@data</span>
|
|
815
|
+
177: <span class="ruby-keyword kw">end</span></pre>
|
|
632
816
|
</div>
|
|
633
817
|
|
|
634
818
|
</div>
|
|
@@ -640,7 +824,7 @@ href="../String.html">String</a> <tt>str</tt>.
|
|
|
640
824
|
|
|
641
825
|
|
|
642
826
|
<div id="read-method" class="method-detail ">
|
|
643
|
-
<a name="
|
|
827
|
+
<a name="method-i-read"></a>
|
|
644
828
|
|
|
645
829
|
<div class="method-heading">
|
|
646
830
|
|
|
@@ -663,22 +847,19 @@ Read the data as Array of Arrays from a CSV formated file
|
|
|
663
847
|
<div class="method-source-code"
|
|
664
848
|
id="read-source">
|
|
665
849
|
<pre>
|
|
666
|
-
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
71: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
680
|
-
72: <span class="ruby-identifier">csv</span>
|
|
681
|
-
73: <span class="ruby-keyword kw">end</span></pre>
|
|
850
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 51</span>
|
|
851
|
+
51: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">read</span>(<span class="ruby-identifier">fileName</span>)
|
|
852
|
+
52: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>)
|
|
853
|
+
53: <span class="ruby-identifier">file</span> = <span class="ruby-identifier">$stdin</span>
|
|
854
|
+
54: <span class="ruby-keyword kw">else</span>
|
|
855
|
+
55: <span class="ruby-identifier">file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-value str">'r'</span>)
|
|
856
|
+
56: <span class="ruby-keyword kw">end</span>
|
|
857
|
+
57:
|
|
858
|
+
58: <span class="ruby-ivar">@data</span> = <span class="ruby-identifier">parse</span>(<span class="ruby-identifier">file</span>.<span class="ruby-identifier">read</span>)
|
|
859
|
+
59:
|
|
860
|
+
60: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
861
|
+
61: <span class="ruby-ivar">@data</span>
|
|
862
|
+
62: <span class="ruby-keyword kw">end</span></pre>
|
|
682
863
|
</div>
|
|
683
864
|
|
|
684
865
|
</div>
|
|
@@ -689,13 +870,13 @@ Read the data as Array of Arrays from a CSV formated file
|
|
|
689
870
|
</div>
|
|
690
871
|
|
|
691
872
|
|
|
692
|
-
<div id="
|
|
693
|
-
<a name="
|
|
873
|
+
<div id="to-s-method" class="method-detail ">
|
|
874
|
+
<a name="method-i-to_s"></a>
|
|
694
875
|
|
|
695
876
|
<div class="method-heading">
|
|
696
877
|
|
|
697
|
-
<span class="method-name">
|
|
698
|
-
class="method-args">(
|
|
878
|
+
<span class="method-name">to_s</span><span
|
|
879
|
+
class="method-args">()</span>
|
|
699
880
|
<span class="method-click-advice">click to toggle source</span>
|
|
700
881
|
|
|
701
882
|
</div>
|
|
@@ -703,39 +884,33 @@ Read the data as Array of Arrays from a CSV formated file
|
|
|
703
884
|
<div class="method-description">
|
|
704
885
|
|
|
705
886
|
<p>
|
|
706
|
-
|
|
707
|
-
|
|
887
|
+
Convert the CSV data into a CSV formatted <a
|
|
888
|
+
href="../String.html">String</a>.
|
|
708
889
|
</p>
|
|
709
890
|
|
|
710
891
|
|
|
711
892
|
|
|
712
893
|
<div class="method-source-code"
|
|
713
|
-
id="
|
|
894
|
+
id="to-s-source">
|
|
714
895
|
<pre>
|
|
715
|
-
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
50: <span class="ruby-keyword kw">end</span>
|
|
734
|
-
51: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">write</span> <span class="ruby-value str">"\n"</span>
|
|
735
|
-
52: <span class="ruby-keyword kw">end</span>
|
|
736
|
-
53:
|
|
737
|
-
54: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
738
|
-
55: <span class="ruby-keyword kw">end</span></pre>
|
|
896
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 65</span>
|
|
897
|
+
65: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">to_s</span>
|
|
898
|
+
66: <span class="ruby-identifier">s</span> = <span class="ruby-value str">''</span>
|
|
899
|
+
67: <span class="ruby-ivar">@data</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">line</span><span class="ruby-operator">|</span>
|
|
900
|
+
68: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">true</span>
|
|
901
|
+
69: <span class="ruby-identifier">line</span>.<span class="ruby-identifier">each</span> <span class="ruby-keyword kw">do</span> <span class="ruby-operator">|</span><span class="ruby-identifier">field</span><span class="ruby-operator">|</span>
|
|
902
|
+
70: <span class="ruby-comment cmt"># Don't output a separator before the first field of the line.</span>
|
|
903
|
+
71: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">first</span>
|
|
904
|
+
72: <span class="ruby-identifier">first</span> = <span class="ruby-keyword kw">false</span>
|
|
905
|
+
73: <span class="ruby-keyword kw">else</span>
|
|
906
|
+
74: <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-ivar">@separator</span>
|
|
907
|
+
75: <span class="ruby-keyword kw">end</span>
|
|
908
|
+
76: <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">marshal</span>(<span class="ruby-identifier">field</span>)
|
|
909
|
+
77: <span class="ruby-keyword kw">end</span>
|
|
910
|
+
78: <span class="ruby-identifier">s</span> <span class="ruby-operator"><<</span> <span class="ruby-value str">"\n"</span>
|
|
911
|
+
79: <span class="ruby-keyword kw">end</span>
|
|
912
|
+
80: <span class="ruby-identifier">s</span>
|
|
913
|
+
81: <span class="ruby-keyword kw">end</span></pre>
|
|
739
914
|
</div>
|
|
740
915
|
|
|
741
916
|
</div>
|
|
@@ -746,38 +921,41 @@ Use this function to write the table into a CSV file <tt>fileName</tt>.
|
|
|
746
921
|
</div>
|
|
747
922
|
|
|
748
923
|
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
<div id="private-instance-method-details" class="method-section section">
|
|
752
|
-
<h3 class="section-header">Private Instance Methods</h3>
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
<div id="close-ield-method" class="method-detail ">
|
|
756
|
-
<a name="M000879"></a>
|
|
924
|
+
<div id="write-method" class="method-detail ">
|
|
925
|
+
<a name="method-i-write"></a>
|
|
757
926
|
|
|
758
927
|
<div class="method-heading">
|
|
759
928
|
|
|
760
|
-
<span class="method-name">
|
|
761
|
-
class="method-args">()</span>
|
|
929
|
+
<span class="method-name">write</span><span
|
|
930
|
+
class="method-args">(fileName)</span>
|
|
762
931
|
<span class="method-click-advice">click to toggle source</span>
|
|
763
932
|
|
|
764
933
|
</div>
|
|
765
934
|
|
|
766
935
|
<div class="method-description">
|
|
767
936
|
|
|
768
|
-
|
|
937
|
+
<p>
|
|
938
|
+
Use this function to write the table into a CSV file <tt>fileName</tt>.
|
|
939
|
+
’.’ can be used to write to $stdout.
|
|
940
|
+
</p>
|
|
769
941
|
|
|
770
942
|
|
|
771
943
|
|
|
772
944
|
<div class="method-source-code"
|
|
773
|
-
id="
|
|
945
|
+
id="write-source">
|
|
774
946
|
<pre>
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
947
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 37</span>
|
|
948
|
+
37: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">write</span>(<span class="ruby-identifier">fileName</span>)
|
|
949
|
+
38: <span class="ruby-keyword kw">if</span> (<span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>)
|
|
950
|
+
39: <span class="ruby-identifier">file</span> = <span class="ruby-identifier">$stdout</span>
|
|
951
|
+
40: <span class="ruby-keyword kw">else</span>
|
|
952
|
+
41: <span class="ruby-identifier">file</span> = <span class="ruby-constant">File</span>.<span class="ruby-identifier">open</span>(<span class="ruby-identifier">fileName</span>, <span class="ruby-value str">'w'</span>)
|
|
953
|
+
42: <span class="ruby-keyword kw">end</span>
|
|
954
|
+
43:
|
|
955
|
+
44: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">write</span>(<span class="ruby-identifier">to_s</span>)
|
|
956
|
+
45:
|
|
957
|
+
46: <span class="ruby-identifier">file</span>.<span class="ruby-identifier">close</span> <span class="ruby-keyword kw">unless</span> <span class="ruby-identifier">fileName</span> <span class="ruby-operator">==</span> <span class="ruby-value str">'.'</span>
|
|
958
|
+
47: <span class="ruby-keyword kw">end</span></pre>
|
|
781
959
|
</div>
|
|
782
960
|
|
|
783
961
|
</div>
|
|
@@ -788,8 +966,14 @@ Use this function to write the table into a CSV file <tt>fileName</tt>.
|
|
|
788
966
|
</div>
|
|
789
967
|
|
|
790
968
|
|
|
969
|
+
</div>
|
|
970
|
+
|
|
971
|
+
<div id="private-instance-method-details" class="method-section section">
|
|
972
|
+
<h3 class="section-header">Private Instance Methods</h3>
|
|
973
|
+
|
|
974
|
+
|
|
791
975
|
<div id="marshal-method" class="method-detail ">
|
|
792
|
-
<a name="
|
|
976
|
+
<a name="method-i-marshal"></a>
|
|
793
977
|
|
|
794
978
|
<div class="method-heading">
|
|
795
979
|
|
|
@@ -811,14 +995,20 @@ contained in the <tt>field</tt>.
|
|
|
811
995
|
<div class="method-source-code"
|
|
812
996
|
id="marshal-source">
|
|
813
997
|
<pre>
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
998
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 201</span>
|
|
999
|
+
201: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">marshal</span>(<span class="ruby-identifier">field</span>)
|
|
1000
|
+
202: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">field</span>.<span class="ruby-identifier">nil?</span>
|
|
1001
|
+
203: <span class="ruby-value str">''</span>
|
|
1002
|
+
204: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">field</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Fixnum</span>) <span class="ruby-operator">||</span> <span class="ruby-identifier">field</span>.<span class="ruby-identifier">is_a?</span>(<span class="ruby-constant">Float</span>)
|
|
1003
|
+
205: <span class="ruby-comment cmt"># Numbers don't have to be quoted.</span>
|
|
1004
|
+
206: <span class="ruby-identifier">field</span>.<span class="ruby-identifier">to_s</span>
|
|
1005
|
+
207: <span class="ruby-keyword kw">else</span>
|
|
1006
|
+
208: <span class="ruby-comment cmt"># Duplicate quote characters.</span>
|
|
1007
|
+
209: <span class="ruby-identifier">f</span> = <span class="ruby-identifier">field</span>.<span class="ruby-identifier">gsub</span>(<span class="ruby-regexp re">/@quote/</span>, <span class="ruby-node">"#{@quote * 2}"</span>)
|
|
1008
|
+
210: <span class="ruby-comment cmt"># Enclose the field in quote characters</span>
|
|
1009
|
+
211: <span class="ruby-ivar">@quote</span> <span class="ruby-operator">+</span> <span class="ruby-identifier">f</span>.<span class="ruby-identifier">to_s</span> <span class="ruby-operator">+</span> <span class="ruby-ivar">@quote</span>
|
|
1010
|
+
212: <span class="ruby-keyword kw">end</span>
|
|
1011
|
+
213: <span class="ruby-keyword kw">end</span></pre>
|
|
822
1012
|
</div>
|
|
823
1013
|
|
|
824
1014
|
</div>
|
|
@@ -829,68 +1019,40 @@ contained in the <tt>field</tt>.
|
|
|
829
1019
|
</div>
|
|
830
1020
|
|
|
831
1021
|
|
|
832
|
-
<div id="
|
|
833
|
-
<a name="
|
|
1022
|
+
<div id="un-arshal-method" class="method-detail ">
|
|
1023
|
+
<a name="method-i-unMarshal"></a>
|
|
834
1024
|
|
|
835
1025
|
<div class="method-heading">
|
|
836
1026
|
|
|
837
|
-
<span class="method-name">
|
|
838
|
-
class="method-args">(
|
|
1027
|
+
<span class="method-name">unMarshal</span><span
|
|
1028
|
+
class="method-args">(field, quoted)</span>
|
|
839
1029
|
<span class="method-click-advice">click to toggle source</span>
|
|
840
1030
|
|
|
841
1031
|
</div>
|
|
842
1032
|
|
|
843
1033
|
<div class="method-description">
|
|
844
1034
|
|
|
845
|
-
|
|
1035
|
+
<p>
|
|
1036
|
+
Convert the <a href="../String.html">String</a> <em>field</em> into a
|
|
1037
|
+
native Ruby type. If field was <em>quoted</em>, the result is always the <a
|
|
1038
|
+
href="../String.html">String</a>.
|
|
1039
|
+
</p>
|
|
846
1040
|
|
|
847
1041
|
|
|
848
1042
|
|
|
849
1043
|
<div class="method-source-code"
|
|
850
|
-
id="
|
|
1044
|
+
id="un-arshal-source">
|
|
851
1045
|
<pre>
|
|
852
|
-
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
104: <span class="ruby-keyword kw">else</span>
|
|
863
|
-
105: <span class="ruby-ivar">@field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
864
|
-
106: <span class="ruby-ivar">@state</span> = <span class="ruby-value">2</span>
|
|
865
|
-
107: <span class="ruby-keyword kw">end</span>
|
|
866
|
-
108: <span class="ruby-keyword kw">when</span> <span class="ruby-value">1</span> <span class="ruby-comment cmt"># in quoted field</span>
|
|
867
|
-
109: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@quote</span>
|
|
868
|
-
110: <span class="ruby-ivar">@state</span> = <span class="ruby-value">3</span>
|
|
869
|
-
111: <span class="ruby-keyword kw">elsif</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@separator</span>
|
|
870
|
-
112: <span class="ruby-identifier">closeField</span>
|
|
871
|
-
113: <span class="ruby-keyword kw">else</span>
|
|
872
|
-
114: <span class="ruby-ivar">@field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
873
|
-
115: <span class="ruby-keyword kw">end</span>
|
|
874
|
-
116: <span class="ruby-keyword kw">when</span> <span class="ruby-value">2</span> <span class="ruby-comment cmt"># in unquoted field</span>
|
|
875
|
-
117: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@separator</span>
|
|
876
|
-
118: <span class="ruby-identifier">closeField</span>
|
|
877
|
-
119: <span class="ruby-keyword kw">else</span>
|
|
878
|
-
120: <span class="ruby-ivar">@field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
879
|
-
121: <span class="ruby-keyword kw">end</span>
|
|
880
|
-
122: <span class="ruby-keyword kw">when</span> <span class="ruby-value">3</span> <span class="ruby-comment cmt"># quote found in quoted field</span>
|
|
881
|
-
123: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">c</span> <span class="ruby-operator">==</span> <span class="ruby-ivar">@quote</span>
|
|
882
|
-
124: <span class="ruby-ivar">@field</span> <span class="ruby-operator"><<</span> <span class="ruby-identifier">c</span>
|
|
883
|
-
125: <span class="ruby-ivar">@state</span> = <span class="ruby-value">2</span>
|
|
884
|
-
126: <span class="ruby-keyword kw">else</span>
|
|
885
|
-
127: <span class="ruby-identifier">closeField</span>
|
|
886
|
-
128: <span class="ruby-keyword kw">end</span>
|
|
887
|
-
129: <span class="ruby-keyword kw">else</span>
|
|
888
|
-
130: <span class="ruby-identifier">raise</span> <span class="ruby-node">"Unknown state #{state}"</span>
|
|
889
|
-
131: <span class="ruby-keyword kw">end</span>
|
|
890
|
-
132: <span class="ruby-keyword kw">end</span>
|
|
891
|
-
133: <span class="ruby-identifier">closeField</span> <span class="ruby-keyword kw">if</span> <span class="ruby-ivar">@state</span> <span class="ruby-operator">!=</span> <span class="ruby-value">0</span>
|
|
892
|
-
134: <span class="ruby-ivar">@fields</span>
|
|
893
|
-
135: <span class="ruby-keyword kw">end</span></pre>
|
|
1046
|
+
<span class="ruby-comment cmt"># File lib/reports/CSVFile.rb, line 217</span>
|
|
1047
|
+
217: <span class="ruby-keyword kw">def</span> <span class="ruby-identifier">unMarshal</span>(<span class="ruby-identifier">field</span>, <span class="ruby-identifier">quoted</span>)
|
|
1048
|
+
218: <span class="ruby-comment cmt"># Quoted Strings and nil are returned verbatim.</span>
|
|
1049
|
+
219: <span class="ruby-keyword kw">if</span> <span class="ruby-identifier">quoted</span> <span class="ruby-operator">||</span> <span class="ruby-identifier">field</span>.<span class="ruby-identifier">nil?</span>
|
|
1050
|
+
220: <span class="ruby-identifier">field</span>
|
|
1051
|
+
221: <span class="ruby-keyword kw">else</span>
|
|
1052
|
+
222: <span class="ruby-comment cmt"># Unquoted fields are inspected for special types</span>
|
|
1053
|
+
223: <span class="ruby-constant">CSVFile</span>.<span class="ruby-identifier">strToNative</span>(<span class="ruby-identifier">field</span>)
|
|
1054
|
+
224: <span class="ruby-keyword kw">end</span>
|
|
1055
|
+
225: <span class="ruby-keyword kw">end</span></pre>
|
|
894
1056
|
</div>
|
|
895
1057
|
|
|
896
1058
|
</div>
|