Skip to content

Commit 4d27b66

Browse files
Add Eq and CPS fromKillSignal (#59)
1 parent e907271 commit 4d27b66

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

CHANGELOG.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ Breaking changes:
2323
- `kill'`'s signal arg
2424

2525
New features:
26-
- Added `fromKillSignal` (#51 by @JordanMartinez)
26+
- Added `fromKillSignal`, `fromKillSignal'` (#51, #59 by @JordanMartinez)
2727
- Added `pidExists` (#53 by @JordanMartinez)
2828
- Export `toUnsafeChildProcess` (#55 by @JordanMartinez)
2929
- Added `stdio` (#55 by @JordanMartinez)
30-
- Added `Show` instance to `Shell` & `KillSignal` (#58 by @JordanMartinez)
30+
- Added `Eq` and `Show` instance to `Shell` & `KillSignal` (#58, #59 by @JordanMartinez)
3131

3232
Other improvements:
3333
- Fix regression: add `ref`/`unref` APIs that were dropped in `v10.0.0` (#50 by @JordanMartinez)

src/Node/ChildProcess/Types.purs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ module Node.ChildProcess.Types
1515
, intSignal
1616
, stringSignal
1717
, fromKillSignal
18+
, fromKillSignal'
1819
, Shell
1920
, enableShell
2021
, customShell
@@ -72,6 +73,17 @@ defaultStdIO = unsafeCoerce (null :: Nullable String)
7273

7374
foreign import data KillSignal :: Type
7475

76+
instance Eq KillSignal where
77+
eq a b = a # fromKillSignal'
78+
( \i -> b # fromKillSignal'
79+
(\b' -> i == b')
80+
(const false)
81+
)
82+
( \s -> b # fromKillSignal'
83+
(const false)
84+
(\b' -> s == b')
85+
)
86+
7587
instance Show KillSignal where
7688
show = showKillSignal
7789

@@ -84,9 +96,12 @@ stringSignal :: String -> KillSignal
8496
stringSignal = unsafeCoerce
8597

8698
fromKillSignal :: KillSignal -> Either Int String
87-
fromKillSignal sig = runFn3 fromKillSignalImpl Left Right sig
99+
fromKillSignal sig = fromKillSignal' Left Right sig
100+
101+
fromKillSignal' :: forall r. (Int -> r) -> (String -> r) -> KillSignal -> r
102+
fromKillSignal' fromInt fromStr sig = runFn3 fromKillSignalImpl fromInt fromStr sig
88103

89-
foreign import fromKillSignalImpl :: Fn3 (forall l r. l -> Either l r) (forall l r. r -> Either l r) (KillSignal) (Either Int String)
104+
foreign import fromKillSignalImpl :: forall r. Fn3 (Int -> r) (String -> r) (KillSignal) r
90105

91106
foreign import data Shell :: Type
92107

0 commit comments

Comments
 (0)