morpheus-graphql-0.0.1: src/Data/Morpheus/Parser/Fragment.hs
{-# LANGUAGE OverloadedStrings #-}
module Data.Morpheus.Parser.Fragment
( fragment
) where
import Data.Attoparsec.Text (Parser, skipSpace, string)
import Data.Morpheus.Parser.Body (entries)
import Data.Morpheus.Parser.Primitive (getPosition, token)
import Data.Morpheus.Types.Query.Fragment (Fragment (..))
import Data.Text (Text)
fragment :: Parser (Text, Fragment)
fragment = do
skipSpace
index <- getPosition
_ <- string "fragment"
skipSpace
name <- token
skipSpace
_ <- string "on"
skipSpace
targetName <- token
skipSpace
fragmentBody <- entries
pure (name, Fragment {key = name, target = targetName, content = fragmentBody, position = index})