From 5e9bf9648d891591fcb1f0e1c7b250fb80b1ddc6 Mon Sep 17 00:00:00 2001 From: Eugen Wissner Date: Fri, 21 Jun 2019 10:44:58 +0200 Subject: Parse queries with megaparsec --- Data/GraphQL.hs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'Data/GraphQL.hs') diff --git a/Data/GraphQL.hs b/Data/GraphQL.hs index dfe9362..c332b6c 100644 --- a/Data/GraphQL.hs +++ b/Data/GraphQL.hs @@ -3,10 +3,12 @@ module Data.GraphQL where import Control.Applicative (Alternative) -import Data.Text (Text) +import qualified Data.Text as T import qualified Data.Aeson as Aeson -import qualified Data.Attoparsec.Text as Attoparsec +import Text.Megaparsec ( errorBundlePretty + , parse + ) import Data.GraphQL.Execute import Data.GraphQL.Parser @@ -19,7 +21,7 @@ import Data.GraphQL.Error -- executed according to the given 'Schema'. -- -- Returns the response as an @Aeson.@'Aeson.Value'. -graphql :: (Alternative m, Monad m) => Schema m -> Text -> m Aeson.Value +graphql :: (Alternative m, Monad m) => Schema m -> T.Text -> m Aeson.Value graphql = flip graphqlSubs $ const Nothing -- | Takes a 'Schema', a variable substitution function and text @@ -28,7 +30,7 @@ graphql = flip graphqlSubs $ const Nothing -- query and the query is then executed according to the given 'Schema'. -- -- Returns the response as an @Aeson.@'Aeson.Value'. -graphqlSubs :: (Alternative m, Monad m) => Schema m -> Subs -> Text -> m Aeson.Value +graphqlSubs :: (Alternative m, Monad m) => Schema m -> Subs -> T.Text -> m Aeson.Value graphqlSubs schema f = - either parseError (execute schema f) - . Attoparsec.parseOnly document + either (parseError . errorBundlePretty) (execute schema f) + . parse document "" -- cgit v1.2.3