packages feed

di-polysemy 0.1.2.0 → 0.1.3.0

raw patch · 3 files changed

+26/−9 lines, 3 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

+ DiPolysemy: [Reset] :: m a -> Di level path msg m a
+ DiPolysemy: reset :: forall level_aaNC path_aaND msg_aaNE r_abrn a_aaNB. MemberWithError (Di level_aaNC path_aaND msg_aaNE) r_abrn => Sem r_abrn a_aaNB -> Sem r_abrn a_aaNB
- DiPolysemy: flush :: forall level_aaNq path_aaNr msg_aaNs r_abpV. MemberWithError (Di level_aaNq path_aaNr msg_aaNs) r_abpV => Sem r_abpV ()
+ DiPolysemy: flush :: forall level_aaNr path_aaNs msg_aaNt r_abrj. MemberWithError (Di level_aaNr path_aaNs msg_aaNt) r_abrj => Sem r_abrj ()
- DiPolysemy: local :: forall level_aaNu path_aaNv msg_aaNw r_abpW a_aaNy. MemberWithError (Di level_aaNu path_aaNv msg_aaNw) r_abpW => (Di level_aaNu path_aaNv msg_aaNw -> Di level_aaNu path_aaNv msg_aaNw) -> Sem r_abpW a_aaNy -> Sem r_abpW a_aaNy
+ DiPolysemy: local :: forall level_aaNv path_aaNw msg_aaNx r_abrk a_aaNz. MemberWithError (Di level_aaNv path_aaNw msg_aaNx) r_abrk => (Di level_aaNv path_aaNw msg_aaNx -> Di level_aaNv path_aaNw msg_aaNx) -> Sem r_abrk a_aaNz -> Sem r_abrk a_aaNz
- DiPolysemy: log :: forall level_aaNm path_aaNo msg_aaNn r_abpS. MemberWithError (Di level_aaNm path_aaNo msg_aaNn) r_abpS => level_aaNm -> msg_aaNn -> Sem r_abpS ()
+ DiPolysemy: log :: forall level_aaNn path_aaNp msg_aaNo r_abrg. MemberWithError (Di level_aaNn path_aaNp msg_aaNo) r_abrg => level_aaNn -> msg_aaNo -> Sem r_abrg ()

Files

CHANGELOG.md view
@@ -3,6 +3,10 @@ `di-polysemy` uses [PVP Versioning][1]. The changelog is available [on GitHub][2]. +## 0.1.3.0++* The 'Reset' action has been added+ ## 0.1.2.0  * 'runDiToIO' now reinterprets in terms of reader
di-polysemy.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: ae3ff1a37592db18d658e1f2b0ecdf715409297f5e16c9acdf72d1228908a854+-- hash: 9872d2e47445088ad716a3b4ccfa4fff4cc574e48bf92fbf7859504ee771d57b  name:           di-polysemy-version:        0.1.2.0+version:        0.1.3.0 synopsis:       DI logger wrapped for Polysemy description:    Please see the README on GitHub at <https://github.com/nitros12/di-polysemy> category:       Logging
src/DiPolysemy.hs view
@@ -5,6 +5,7 @@     , log     , flush     , local+    , reset     , push     , attr_     , attr@@ -42,6 +43,7 @@   Log    :: level -> msg -> Di level path msg m ()   Flush  :: Di level path msg m ()   Local  :: (DC.Di level path msg -> DC.Di level path msg) -> m a -> Di level path msg m a+  Reset  :: m a -> Di level path msg m a  makeSem ''Di @@ -65,24 +67,35 @@                                finish                                pure res)) +type DiR level msg = (DC.Di level Df1.Path msg, DC.Di level Df1.Path msg)++dup :: a -> (a, a)+dup a = (a, a)+ runDiToIO   :: forall r level msg a.   Member (Embed IO) r   => (DC.Log level Df1.Path msg -> IO ())   -> Sem (Di level Df1.Path msg ': r) a   -> Sem r a-runDiToIO commit m = diToIO $ runDiIOInner commit (flip P.runReader $ go (raiseUnder m))+runDiToIO commit m = diToIO $ runDiIOInner commit (flip (P.runReader . dup) $ go (raiseUnder m))   where-    go :: Member (Embed IO) r0 => Sem (Di level Df1.Path msg ': r0) a0 -> Sem (P.Reader (DC.Di level Df1.Path msg) ': r0) a0+    go :: Member (Embed IO) r0+      => Sem (Di level Df1.Path msg ': r0) a0+      -> Sem (P.Reader (DiR level msg) ': r0) a0     go = reinterpretH $ \case       Log level msg -> do-        di <- P.ask @(DC.Di level Df1.Path msg)-        r <- embed @IO $ DC.log di level msg-        pureT r-      Flush         -> P.ask @(DC.Di level Df1.Path msg) >>= embed @IO . DC.flush >>= pureT+        (_, di) <- P.ask @(DiR level msg)+        (embed @IO $ DC.log di level msg) >>= pureT+      Flush         -> do+        (_, di) <- P.ask @(DiR level msg)+        (embed @IO $ DC.flush di) >>= pureT       Local f m     -> do         m' <- go <$> runT m-        raise $ subsume $ P.local @(DC.Di level Df1.Path msg) f m'+        raise $ subsume $ P.local @(DiR level msg) (fmap f) m'+      Reset m       -> do+        m' <- go <$> runT m+        raise $ subsume $ P.local @(DiR level msg) (\(odi, _) -> (odi, odi)) m'  runDiToStderrIO :: Member (Embed IO) r => Sem (Di Df1.Level Df1.Path Df1.Message ': r) a -> Sem r a runDiToStderrIO m = do