{-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE OverloadedStrings #-} module Data.Morpheus.Rendering.RenderGQL ( RenderGQL (..), renderObject, renderIndent, ) where -- MORPHEUS import Data.Semigroup ((<>)) import Data.Text ( Text, intercalate, pack, ) type Rendering = Text class RenderGQL a where render :: a -> Rendering instance RenderGQL Int where render = pack . show instance RenderGQL Float where render = pack . show instance RenderGQL Text where render = pack . show instance RenderGQL Bool where render True = "true" render False = "false" renderIndent :: Rendering renderIndent = " " renderObject :: (a -> Rendering) -> [a] -> Rendering renderObject f list = " { \n " <> intercalate ("\n" <> renderIndent) (map f list) <> "\n}"