-
Notifications
You must be signed in to change notification settings - Fork 28
Expand file tree
/
Copy pathDataFrameCsvWriter.class.st
More file actions
77 lines (64 loc) · 1.57 KB
/
DataFrameCsvWriter.class.st
File metadata and controls
77 lines (64 loc) · 1.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
Class {
#name : #DataFrameCsvWriter,
#superclass : #DataFrameWriter,
#instVars : [
'separator',
'lineEndConvention'
],
#category : #'DataFrame-IO-Core'
}
{ #category : #accessing }
DataFrameCsvWriter >> defaultLineEndConvention [
^ {
String cr -> #cr.
String lf -> #lf.
String crlf -> #crlf
} asDictionary at: Smalltalk os lineEnding
]
{ #category : #accessing }
DataFrameCsvWriter >> defaultSeparator [
^ $,
]
{ #category : #initialization }
DataFrameCsvWriter >> initialize [
super initialize.
separator := self defaultSeparator.
lineEndConvention := self defaultLineEndConvention
]
{ #category : #accessing }
DataFrameCsvWriter >> lineEndConvention [
^ lineEndConvention
]
{ #category : #accessing }
DataFrameCsvWriter >> lineEndConvention: aSymbol [
"Set the end of line convention to be used.
Either #cr, #lf or #crlf (os convention by default)."
self assert: (#(cr lf crlf) includes: aSymbol).
lineEndConvention := aSymbol
]
{ #category : #accessing }
DataFrameCsvWriter >> separator [
^ separator
]
{ #category : #accessing }
DataFrameCsvWriter >> separator: anObject [
separator := anObject
]
{ #category : #writing }
DataFrameCsvWriter >> write: aDataFrame to: aFileReference [
| stream writer |
stream := aFileReference writeStream.
writer := NeoCSVWriter on: stream.
writer separator: self separator.
writer lineEndConvention: self lineEndConvention.
writer
writeField: '';
writeSeparator;
writeHeader: aDataFrame columnNames.
aDataFrame do: [ :row |
writer
writeField: row name;
writeSeparator;
nextPut: row ].
writer close
]