File tree Expand file tree Collapse file tree 3 files changed +34
-2
lines changed Expand file tree Collapse file tree 3 files changed +34
-2
lines changed Original file line number Diff line number Diff line change @@ -32,7 +32,17 @@ export interface IMaybe<T> extends IMonad<T> {
3232 /**
3333 * Execute functions with side-effects.
3434 */
35- tap ( val : IMaybePattern < T , void > ) : void
35+ tap ( val : Partial < IMaybePattern < T , void > > ) : void
36+
37+ /**
38+ * Execute a function with side-effects when maybe is a none.
39+ */
40+ tapNone ( f : ( ) => void ) : void
41+
42+ /**
43+ * Execute a function with side-effects when maybe is a some.
44+ */
45+ tapSome ( f : ( val : T ) => void ) : void
3646
3747 /**
3848 * Unwrap and apply MaybePattern functions
Original file line number Diff line number Diff line change @@ -5,7 +5,9 @@ export function maybe<T>(value?: T): IMaybe<T> {
55 of : ( x ) => maybe ( x ) ,
66 valueOr : ( val : T ) => value === null || value === undefined ? val : value ,
77 valueOrCompute : ( f : ( ) => T ) => value === null || value === undefined ? f ( ) : value ,
8- tap : ( obj : IMaybePattern < T , void > ) => value === null || value === undefined ? obj . none ( ) : obj . some ( value ) ,
8+ tap : ( obj : Partial < IMaybePattern < T , void > > ) => value === null || value === undefined ? obj . none && obj . none ( ) : obj . some && obj . some ( value ) ,
9+ tapNone : ( f : ( ) => void ) => ( value === null || value === undefined ) && f ( ) ,
10+ tapSome : ( f : ( val : T ) => void ) => value !== null && value !== undefined && f ( value ) ,
911 match : < R > ( pattern : IMaybePattern < T , R > ) => value === null || value === undefined ? pattern . none ( ) : pattern . some ( value ) ,
1012 map : < R > ( f : ( t : T ) => R ) => value === null || value === undefined ? maybe < R > ( ) : maybe < R > ( f ( value ) ) ,
1113 flatMap : < R > ( f : ( d : T ) => IMaybe < R > ) => value === null || value === undefined ? maybe < R > ( ) : f ( value )
Original file line number Diff line number Diff line change @@ -270,5 +270,25 @@ describe('Maybe', () => {
270270 expect ( maybeSomeNumber ) . toEqual ( 'ok' )
271271 } )
272272 } )
273+
274+ describe ( 'when tapSome' , ( ) => {
275+ it ( 'should work' , ( ) => {
276+ const sut : string | undefined = 'abc'
277+
278+ expect . assertions ( 1 )
279+ maybe ( sut ) . tapSome ( a => expect ( a ) . toEqual ( 'abc' ) )
280+ maybe ( sut ) . tapNone ( ( ) => expect ( 1 ) . toEqual ( 1 ) )
281+ } )
282+ } )
283+
284+ describe ( 'when tapNone' , ( ) => {
285+ it ( 'should work' , ( ) => {
286+ const sut : string | undefined = undefined
287+
288+ expect . assertions ( 1 )
289+ maybe ( sut ) . tapNone ( ( ) => expect ( 1 ) . toEqual ( 1 ) )
290+ maybe ( sut ) . tapSome ( ( ) => expect ( 1 ) . toEqual ( 1 ) )
291+ } )
292+ } )
273293} )
274294
You can’t perform that action at this time.
0 commit comments