packages feed

from-env-0.1.3.0: src/System/Environment/FromEnv/TryParse.hs

{-# LANGUAGE FlexibleContexts  #-}
{-# LANGUAGE FlexibleInstances #-}
module System.Environment.FromEnv.TryParse
(
    TryParse (..)
)
where

import           Data.Text (Text)
import qualified Data.Text as T
import           Text.Read (readMaybe)

-- | Class for things that may be parsed from strings.
class TryParse a where
  tryParse :: String -> Maybe a

instance TryParse Int where tryParse = readMaybe
instance TryParse Double where tryParse = readMaybe
instance TryParse Float where tryParse = readMaybe

instance TryParse [Char] where
   tryParse = Just

instance TryParse Char where
   tryParse [c] = Just c
   tryParse _   = Nothing

instance TryParse Text where
  tryParse = Just . T.pack

instance TryParse Bool where
  tryParse "" = Just False
  tryParse _  = Just True