Skip to content

Commit b543e5a

Browse files
committed
Implemented type deduction inside Collection>>asDataSeries
1 parent 8444328 commit b543e5a

File tree

1 file changed

+15
-21
lines changed

1 file changed

+15
-21
lines changed
Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,22 @@
11
*DataFrame-Core
22
asDataSeries
33

4-
| seriesClass series |
4+
| allInstancesOf |
55

6-
"If all the values are associations, we convert it to DataSeries the same way as the array of associations is converted to dictionary with asDictionary"
7-
self detect: [ :x |
8-
(x class = Association) not ]
9-
ifNone: [ | keys values |
10-
keys := self collect: [ :assoc |
11-
assoc key ].
12-
values := self collect: [ :assoc |
13-
assoc value ].
14-
15-
series := values asDataSeries.
16-
series keys: keys.
17-
^ series ].
6+
allInstancesOf := [ :aClass |
7+
self detect: [ :x |
8+
(x isKindOf: aClass) not ]
9+
ifFound: [ false ]
10+
ifNone: [ true ] ].
1811

19-
self
20-
detect: [ :x | x isNumber not ]
21-
ifFound: [ seriesClass := DataSeries ]
22-
ifNone: [ seriesClass := DataSeriesNumeric ].
12+
(allInstancesOf value: Number) ifTrue: [
13+
^ DataSeriesNumeric newFrom: self ].
2314

24-
series := seriesClass new: self size.
25-
26-
self doWithIndex: [:each :i | series at: i put: each].
27-
^ series
15+
(allInstancesOf value: String) ifTrue: [
16+
"Can we convert it to DataSeriesTime?"
17+
[ ^ DataSeriesTime newFrom: self ]
18+
on: Error do: [ "nothing" ] ].
19+
20+
"Either everything is a String, or none of the above is satisfied. In any case, we convert everything to String"
21+
^ DataSeriesText newFrom: self
2822

0 commit comments

Comments
 (0)