-- | (Orphan) PrettyVal instances for various standard datatypes {-# OPTIONS_GHC -fno-warn-orphans #-} module IdeSession.Util.PrettyVal ( -- * Re-exports PrettyVal(..) ) where import Text.Show.Pretty import Data.IntMap (IntMap) import Data.Map (Map) import Data.Trie (Trie) import Data.ByteString (ByteString) import Data.Text (Text) import qualified Data.IntMap as IntMap import qualified Data.Map as Map import qualified Data.Trie as Trie import qualified Data.ByteString.Char8 as BSC import qualified Data.Text as Text instance PrettyVal a => PrettyVal (Maybe a) where prettyVal Nothing = Con "Nothing" [] prettyVal (Just x) = Con "Just" [prettyVal x] -- TODO: This has encoding issues instance PrettyVal ByteString where prettyVal = prettyVal . BSC.unpack instance PrettyVal a => PrettyVal (IntMap a) where prettyVal m = Con "fromList" [prettyVal . IntMap.toList $ m] instance (PrettyVal k, PrettyVal a) => PrettyVal (Map k a) where prettyVal m = Con "fromList" [prettyVal . Map.toList $ m] instance PrettyVal a => PrettyVal (Trie a) where prettyVal m = Con "fromList" [prettyVal . Trie.toList $ m] instance PrettyVal Bool where prettyVal True = Con "True" [] prettyVal False = Con "False" [] instance PrettyVal Text where prettyVal = prettyVal . Text.unpack