@@ -4,81 +4,35 @@ module Restyler.Prelude
44 )
55where
66
7- --------------------------------------------------------------------------------
8- -- Safe(r) re-exports
9- --------------------------------------------------------------------------------
10- import Prelude as X hiding
11- (head , init , last , maximum , minimum , pred , read , readFile , succ , tail )
7+ import RIO as X hiding (LogLevel (.. ), first , second )
128
13- import Control.Applicative as X ((<|>) )
14- import Control.Arrow as X ((&&&) , (***) )
159import Control.Error.Util as X (hush , note )
16- import Control.Exception.Safe as X
17- import Control.Monad as X
1810import Control.Monad.Except as X
19- import Control.Monad.Logger as X
20- import Control.Monad.Reader as X
21- import Data.Bifunctor as X
22- import Data.Char as X (isSpace )
23- import Data.Foldable as X hiding (maximumBy , minimumBy )
24- import Data.List as X
25- (dropWhileEnd , find , foldl' , isInfixOf , isPrefixOf , isSuffixOf )
26- import Data.Maybe as X hiding (fromJust )
27- import Data.Proxy as X
28- import Data.Semigroup as X ((<>) )
29- import Data.Text as X (Text , pack , strip , unpack )
30- import Data.Text.Encoding as X
31- import Data.Traversable as X
32- import Data.Vector as X (Vector )
33- import Data.Void as X
34- import GHC.Generics as X
35- import GHC.Stack as X
11+ import Data.Bifunctor as X (first , second )
3612import GitHub.Data as X hiding (command )
37- import Safe as X
13+ import RIO.Char as X (isSpace )
14+ import RIO.List as X (dropWhileEnd , find , headMaybe , minimumByMaybe )
15+ import RIO.Text as X (encodeUtf8 , pack , unpack )
16+ import Safe as X (fromJustNote )
17+
18+ -- TODO: Move to RIO and its own logging facilities
19+ import Control.Monad.Logger as X
20+ (LogLevel (.. ), MonadLogger , logDebugN , logErrorN , logInfoN , logWarnN )
3821
3922--------------------------------------------------------------------------------
4023-- Globally-useful utilities
4124--------------------------------------------------------------------------------
42- import qualified Data.Foldable as F
43- import qualified Data.Text as T
25+ import qualified RIO.Text as T
4426
45- -- | @'when'@ with a monadic condition
46- --
47- -- > x <- someMonadicConditional
48- -- > when x $ do
49- -- > someMonadicAction
50- -- >
51- -- > whenM someMonadicConditional someMonadicAction
52- --
53- whenM :: Monad m => m Bool -> m () -> m ()
54- whenM condition action = do
55- result <- condition
56- when result action
57-
58- -- | Same for @'unless'@
59- unlessM :: Monad m => m Bool -> m () -> m ()
60- unlessM condition action = do
61- result <- condition
62- unless result action
63-
64- -- | @'Show'@ as @'Text'@
65- tshow :: Show a => a -> Text
66- tshow = T. pack . show
27+ decodeUtf8 :: ByteString -> Text
28+ decodeUtf8 = T. decodeUtf8With T. lenientDecode
6729
6830infixl 4 <$$>
6931
7032-- | @'fmap'@ for doubly-wrapped values
7133(<$$>) :: (Functor f , Functor g ) => (a -> b ) -> f (g a ) -> f (g b )
7234f <$$> a = fmap f <$> a
7335
74- minimumBy :: (a -> a -> Ordering ) -> [a ] -> Maybe a
75- minimumBy _ [] = Nothing
76- minimumBy f xs = Just $ F. minimumBy f xs
77-
78- maximumBy :: (a -> a -> Ordering ) -> [a ] -> Maybe a
79- maximumBy _ [] = Nothing
80- maximumBy f xs = Just $ F. maximumBy f xs
81-
8236-- | Strip whitespace from the end of a @'Text'@
8337chomp :: Text -> Text
8438chomp = T. dropWhileEnd isSpace
0 commit comments