-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
DataFrameTypeDetector now works with nil #107
Conversation
Also added relevant tests
ifFound: [ false ] | ||
ifNone: [ true ]. | ||
] | ||
|
||
{ #category : #testing } | ||
DataFrameTypeDetector >> canAllBeDateAndTime: aDataSeries [ | ||
[ aDataSeries do: #asDateAndTime ] | ||
[ aDataSeries do: [ :ele | ele isNil ifFalse: [ ele asDateAndTime ]] ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here and in the following, I'd use ele ifNotNil:
rather than ele isNil ifFalse:
.
@@ -32,49 +32,51 @@ DataFrameTypeDetector >> canAllBeNumber: aDataSeries [ | |||
regex := '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$' asRegex. | |||
|
|||
^ aDataSeries | |||
detect: [ :each | [ (regex matches: each) not ] on: Error do: [ ^ false ] ] | |||
detect: [ :each | [ each isNil ifTrue: [ false ] ifFalse: [ (regex matches: each) not ]] on: Error do: [ ^ false ] ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Simlarly: each ifNil: [ false ] ifNotNil: [...]
on: Error do: [ ^ false ]. | ||
^ true | ||
] | ||
|
||
{ #category : #testing } | ||
DataFrameTypeDetector >> canAnyBeFloat: aDataSeries [ | ||
^ aDataSeries | ||
detect: [ :each | each asNumber isFloat ] | ||
detect: [ :each | each isNil ifTrue: [ false ] ifFalse: [ (each asNumber isFloat) ] ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Simpler: each isNotNil and: [ each asNumber isFloat ]
.
^ aDataSeries collect: [ :each | each = 'true' ] | ||
^ aDataSeries collect: [ :each | | ||
each isNil | ||
ifFalse: [ each = 'true' ] ] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once again: ifNotNil:
is clearer than isNil ifFalse:
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
However, seeing all the following cases I wonder if it would be better to have a method #collectNonNils
and use that instead of nil
-testing in each particular use case.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll add collectNonNils
since it makes more sense. PR 102 has removeNils
already so we can do dataSeries deepCopy removeNils
, but one with collect
would be better.
Also added relevant tests.
Fixes #66.