packages feed

polysemy-log-di 0.1.0.0 → 0.2.0.0

raw patch · 3 files changed

+40/−8 lines, 3 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Polysemy.Log.Di: interpretLogDiConc :: forall path r. Members [Di Severity path (LogEntry LogMessage), Resource, Async, Embed IO] r => Int -> InterpreterFor Log r
+ Polysemy.Log.Di.Di: interpretDataLogDiLocal :: forall level path msg r. Member (Di level path msg) r => (msg -> level) -> (msg -> msg) -> InterpreterFor (DataLog msg) r
+ Polysemy.Log.Di.Di: interpretLogDiConc :: forall path r. Members [Di Severity path (LogEntry LogMessage), Resource, Async, Embed IO] r => Int -> InterpreterFor Log r

Files

lib/Polysemy/Log/Di.hs view
@@ -6,13 +6,14 @@   -- * Interpreters   interpretLogDi,   interpretLogDi',+  interpretLogDiConc,   interpretDataLogDi,   interpretDiAtomic,   interpretDiAtomic' ) where -import Polysemy.Log.Di.Di (interpretLogDi, interpretLogDi', interpretDataLogDi)-import Polysemy.Log.Di.Atomic (interpretDiAtomic', interpretDiAtomic)+import Polysemy.Log.Di.Atomic (interpretDiAtomic, interpretDiAtomic')+import Polysemy.Log.Di.Di (interpretDataLogDi, interpretLogDi, interpretLogDi', interpretLogDiConc) -- $intro -- This package is a [di](https://hackage.haskell.org/package/di-polysemy) adapter for -- [polysemy-log](https://hackage.haskell.org/package/polysemy-log), providing interpreters that convert
lib/Polysemy/Log/Di/Di.hs view
@@ -2,28 +2,47 @@ module Polysemy.Log.Di.Di where  import qualified DiPolysemy as Di+import Polysemy (interpretH, runT)+import Polysemy.Async (Async) import Polysemy.Internal (InterpretersFor, raise2Under)+import Polysemy.Internal.Tactics (liftT)+import Polysemy.Resource (Resource) import Polysemy.Time (GhcTime) -import Polysemy.Log.Data.DataLog (DataLog(DataLog))+import Polysemy.Log.Data.DataLog (DataLog(DataLog, Local)) import Polysemy.Log.Data.Log (Log) import qualified Polysemy.Log.Data.LogEntry as LogEntry import Polysemy.Log.Data.LogEntry (LogEntry) import qualified Polysemy.Log.Data.LogMessage as LogMessage import Polysemy.Log.Data.LogMessage (LogMessage) import Polysemy.Log.Data.Severity (Severity)-import Polysemy.Log.Log (interpretLogDataLog, interpretLogDataLog')+import Polysemy.Log.Log (interpretLogDataLog, interpretLogDataLog', interpretLogDataLogConc)  -- |Reinterpret 'DataLog' as 'Di.Di', using the provided function to extract the log level from the message.+-- Maintains a context function as state that is applied to each logged message, allowing the context of a block to be+-- modified.+interpretDataLogDiLocal ::+  ∀ level path msg r .+  Member (Di.Di level path msg) r =>+  (msg -> level) ->+  (msg -> msg) ->+  InterpreterFor (DataLog msg) r+interpretDataLogDiLocal extractLevel context =+  interpretH \case+    DataLog msg ->+      liftT (Di.log @_ @path (extractLevel msg) (context msg))+    Local f ma ->+      raise . interpretDataLogDiLocal @_ @path extractLevel (f . context) =<< runT ma+{-# INLINE interpretDataLogDiLocal #-}++-- |Reinterpret 'DataLog' as 'Di.Di', using the provided function to extract the log level from the message. interpretDataLogDi ::   ∀ level path msg r .   Member (Di.Di level path msg) r =>   (msg -> level) ->   InterpreterFor (DataLog msg) r interpretDataLogDi extractLevel =-  interpret \case-    DataLog msg ->-      Di.log @_ @path (extractLevel msg) msg+  interpretDataLogDiLocal @_ @path extractLevel id {-# INLINE interpretDataLogDi #-}  -- |Reinterpret 'Log' as 'Di.Di', using the /polysemy-log/ default message.@@ -51,3 +70,15 @@   raiseUnder .   raise2Under {-# INLINE interpretLogDi' #-}++-- |Reinterpret 'Log' as 'Di.Di' concurrently.+interpretLogDiConc ::+  ∀ path r .+  Members [Di.Di Severity path (LogEntry LogMessage), Resource, Async, Embed IO] r =>+  Int ->+  InterpreterFor Log r+interpretLogDiConc maxQueued =+  interpretDataLogDi @_ @path (LogMessage.severity . LogEntry.message) .+  interpretLogDataLogConc maxQueued .+  raiseUnder+{-# INLINE interpretLogDiConc #-}
polysemy-log-di.cabal view
@@ -5,7 +5,7 @@ -- see: https://github.com/sol/hpack  name:           polysemy-log-di-version:        0.1.0.0+version:        0.2.0.0 synopsis:       polysemy-log interpreter for di description:    See <https://hackage.haskell.org/package/polysemy-log-di/docs/Polysemy-Log-Di.html> category:       Logging