webby-0.1.0.0: src/WebbyPrelude.hs
module WebbyPrelude
( module Exports
-- | Custom prelude functions
, decodeUtf8Lenient
, parseInt
) where
import Control.Monad.Trans.Resource as Exports (ResourceT,
liftResourceT,
runResourceT)
import Network.HTTP.Types as Exports
import Network.Wai as Exports
import Protolude as Exports hiding (get, put, (%))
import Data.Text.Encoding as Exports (encodeUtf8)
-- Imports for custom functionality coded in this module.
import Data.Text.Encoding (decodeUtf8With)
import Data.Text.Encoding.Error (lenientDecode)
import qualified Data.Text.Read as TR
-- Text formatting
import Formatting as Exports (format, sformat, (%))
import Formatting.ShortFormatters as Exports (d, sh, st, t)
-- Decode UTF8 leniently (by replacing an invalid input byte with the
-- Unicode replacement character U+FFFD).
decodeUtf8Lenient :: ByteString -> Text
decodeUtf8Lenient = decodeUtf8With lenientDecode
parseInt :: Integral a => Text -> Maybe a
parseInt t' = hush $ fmap fst $ TR.decimal t'