blucontrol 0.3.0.1 → 0.3.1.0
raw patch · 6 files changed
+54/−2 lines, 6 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Blucontrol.Control.Count: instance Control.Monad.Trans.Control.MonadTransControl Blucontrol.Control.Count.ControlCountT
+ Blucontrol.Gamma.Modifier: data GammaModifierT c m a
+ Blucontrol.Gamma.Modifier: instance (Control.Monad.Base.MonadBase GHC.Types.IO m, Blucontrol.Gamma.MonadGamma c m) => Blucontrol.Gamma.MonadGamma c (Blucontrol.Gamma.Modifier.GammaModifierT c m)
+ Blucontrol.Gamma.Modifier: instance Control.Monad.Base.MonadBase b m => Control.Monad.Base.MonadBase b (Blucontrol.Gamma.Modifier.GammaModifierT c m)
+ Blucontrol.Gamma.Modifier: instance Control.Monad.Reader.Class.MonadReader r m => Control.Monad.Reader.Class.MonadReader r (Blucontrol.Gamma.Modifier.GammaModifierT c m)
+ Blucontrol.Gamma.Modifier: instance Control.Monad.Trans.Class.MonadTrans (Blucontrol.Gamma.Modifier.GammaModifierT c)
+ Blucontrol.Gamma.Modifier: instance Control.Monad.Trans.Control.MonadBaseControl b m => Control.Monad.Trans.Control.MonadBaseControl b (Blucontrol.Gamma.Modifier.GammaModifierT c m)
+ Blucontrol.Gamma.Modifier: instance Control.Monad.Trans.Control.MonadTransControl (Blucontrol.Gamma.Modifier.GammaModifierT c)
+ Blucontrol.Gamma.Modifier: instance GHC.Base.Applicative m => GHC.Base.Applicative (Blucontrol.Gamma.Modifier.GammaModifierT c m)
+ Blucontrol.Gamma.Modifier: instance GHC.Base.Functor m => GHC.Base.Functor (Blucontrol.Gamma.Modifier.GammaModifierT c m)
+ Blucontrol.Gamma.Modifier: instance GHC.Base.Monad m => GHC.Base.Monad (Blucontrol.Gamma.Modifier.GammaModifierT c m)
+ Blucontrol.Gamma.Modifier: runGammaModifierT :: (c -> IO c) -> GammaModifierT c m a -> m a
- Blucontrol.Control.Concat: data ControlConcatT (t1 :: (* -> *) -> * -> *) (t2 :: (* -> *) -> * -> *) (m :: * -> *) a
+ Blucontrol.Control.Concat: data ControlConcatT (t1 :: (Type -> Type) -> Type -> Type) (t2 :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) a
Files
- CHANGELOG.md +5/−0
- blucontrol.cabal +2/−1
- src/Blucontrol/Control/Concat.hs +2/−1
- src/Blucontrol/Control/Count.hs +13/−0
- src/Blucontrol/Gamma/Modifier.hs +29/−0
- src/Blucontrol/Main/CLI.hs +3/−0
CHANGELOG.md view
@@ -1,5 +1,10 @@ # Revision history for blucontrol +## 0.3.1.0 *30 May 2021*++* New module `Blucontrol.Gamma.Modifier`.+* New command line flag `-i`/`--ignore-config` to stick to the default configuration.+ ## 0.3.0.1 *28 Apr 2021* * Support GHC 9.0.1.
blucontrol.cabal view
@@ -1,5 +1,5 @@ name: blucontrol-version: 0.3.0.1+version: 0.3.1.0 synopsis: Configurable blue light filter description: This application is a blue light filter, with the main focus on configurability.@@ -33,6 +33,7 @@ Blucontrol.Gamma Blucontrol.Gamma.Const Blucontrol.Gamma.Linear+ Blucontrol.Gamma.Modifier Blucontrol.Main Blucontrol.Main.CLI Blucontrol.Main.Control
src/Blucontrol/Control/Concat.hs view
@@ -9,10 +9,11 @@ import Control.Monad.Base import Control.Monad.Trans import Control.Monad.Trans.Control+import Data.Kind import Blucontrol.Control -newtype ControlConcatT (t1 :: (* -> *) -> * -> *) (t2 :: (* -> *) -> * -> *) (m :: * -> *) a = ControlConcatT { unControlConcatT :: t2 (t1 m) a }+newtype ControlConcatT (t1 :: (Type -> Type) -> Type -> Type) (t2 :: (Type -> Type) -> Type -> Type) (m :: Type -> Type) a = ControlConcatT { unControlConcatT :: t2 (t1 m) a } deriving (Applicative, Functor, Monad, MonadBase b, MonadBaseControl b) instance (forall m. Monad m => Monad (t1 m), MonadTrans t1, MonadTrans t2) => MonadTrans (ControlConcatT t1 t2) where
src/Blucontrol/Control/Count.hs view
@@ -24,6 +24,19 @@ instance MonadTrans ControlCountT where lift = ControlCountT . lift . lift +-- TODO: workaround for ghc-9.0.1+defaultLiftWith2' :: (Monad m)+ => (Run ControlCountT -> m a)+ -> ControlCountT m a+defaultLiftWith2' f = ControlCountT $ liftWith $ \run -> liftWith $ \run' -> f $ run' . run . unControlCountT++instance MonadTransControl ControlCountT where+ type StT ControlCountT a = StT (ReaderT ConfigCount) (StT (StateT Natural) a)+ -- TODO: workaround for ghc-9.0.1+ --liftWith = defaultLiftWith2 ControlCountT unControlCountT+ liftWith = defaultLiftWith2'+ restoreT = defaultRestoreT2 ControlCountT+ instance MonadBaseControl IO m => MonadControl (ControlCountT m) where type ControlConstraint (ControlCountT m) a = CountableException a doInbetween a = do if isException a
+ src/Blucontrol/Gamma/Modifier.hs view
@@ -0,0 +1,29 @@+{-# LANGUAGE UndecidableInstances #-}++module Blucontrol.Gamma.Modifier (+ GammaModifierT+, runGammaModifierT+) where++import Control.Monad.Base+import Control.Monad.Except+import Control.Monad.Reader+import Control.Monad.Trans.Control++import Blucontrol.Gamma++newtype GammaModifierT c m a = GammaModifierT { unGammaModifierT :: ReaderT (c -> IO c) m a }+ deriving (Applicative, Functor, Monad, MonadBase b, MonadBaseControl b, MonadTrans, MonadTransControl)++instance MonadReader r m => MonadReader r (GammaModifierT c m) where+ ask = lift ask+ local f tma = liftWith $ \ run ->+ local f $ run tma++instance (MonadBase IO m, MonadGamma c m) => MonadGamma c (GammaModifierT c m) where+ gamma = do oldGamma <- lift gamma+ modifyGamma <- GammaModifierT ask+ liftBase $ modifyGamma oldGamma++runGammaModifierT :: (c -> IO c) -> GammaModifierT c m a -> m a+runGammaModifierT modify tma = runReaderT (unGammaModifierT tma) modify
src/Blucontrol/Main/CLI.hs view
@@ -20,6 +20,7 @@ data Flag = Help | Version+ | IgnoreConfig deriving (Eq, Generic, Ord, Read, Show) instance NFData Flag@@ -27,6 +28,7 @@ options :: [OptDescr Flag] options = [ Option ['h'] ["help"] (NoArg Help) "Explain CLI usage" , Option ['v'] ["version"] (NoArg Version) "Display version"+ , Option ['i'] ["ignore-config"] (NoArg IgnoreConfig) "Use default configuration" ] launch :: IO ()@@ -45,6 +47,7 @@ [] -> build [Version] -> do printVersion exitSuccess+ [IgnoreConfig] -> return () _ -> do printUsage exitFailure