{-# LANGUAGE OverloadedStrings #-}
module FlatBuffers.Internal.Compiler.Display where
import Data.List.NonEmpty ( NonEmpty )
import qualified Data.List.NonEmpty as NE
import qualified Data.Text as T
import Data.Text ( Text )
class Display a where
display :: a -> Text
instance Display Text where
display = id
instance Display a => Display (NonEmpty a) where
display = display . NE.toList
instance Display a => Display [a] where
display xs = T.intercalate ", " (fmap displayOne xs)
where
displayOne x = "'" <> display x <> "'"
instance Display Integer where
display = displayFromShow
displayFromShow :: Show a => a -> Text
displayFromShow = T.pack . show