summaryrefslogtreecommitdiff
path: root/src/Language/GraphQL/Class.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Language/GraphQL/Class.hs')
-rw-r--r--src/Language/GraphQL/Class.hs49
1 files changed, 9 insertions, 40 deletions
diff --git a/src/Language/GraphQL/Class.hs b/src/Language/GraphQL/Class.hs
index 67ae695..0711dba 100644
--- a/src/Language/GraphQL/Class.hs
+++ b/src/Language/GraphQL/Class.hs
@@ -14,7 +14,6 @@ module Language.GraphQL.Class
, ToGraphQL(..)
, deriveFromGraphQL
, deriveToGraphQL
- , gql
) where
import Data.Int (Int8, Int16, Int32, Int64)
@@ -47,7 +46,6 @@ import Language.Haskell.TH
, Dec(..)
, Exp(..)
, Info(..)
- , Lit(..)
, Quote(..)
, Name
, Q
@@ -75,7 +73,6 @@ import Language.Haskell.TH
, litP
, wildP
)
-import Language.Haskell.TH.Quote (QuasiQuoter(..))
import Data.Foldable (Foldable(..))
import qualified Data.HashMap.Strict as HashMap
import qualified Language.GraphQL.Type as Type
@@ -110,6 +107,10 @@ instance ToGraphQL Text
where
toGraphQL = Type.String
+instance ToGraphQL String
+ where
+ toGraphQL = Type.String . Text.pack
+
instance ToGraphQL Int
where
toGraphQL = Type.Int . fromIntegral
@@ -222,6 +223,11 @@ instance FromGraphQL Text
fromGraphQL (Type.String value) = Just value
fromGraphQL _ = Nothing
+instance FromGraphQL String
+ where
+ fromGraphQL (Type.String value) = Just $ Text.unpack value
+ fromGraphQL _ = Nothing
+
instance FromGraphQL Int
where
fromGraphQL = fromGraphQLToIntegral
@@ -459,40 +465,3 @@ deriveToGraphQL typeName = do
[ litE (stringL $ nameBase name')
, [|toGraphQL $(varE alias)|]
]
-
-stripIndentation :: String -> String
-stripIndentation code = reverse
- $ dropWhile isLineBreak
- $ reverse
- $ unlines
- $ indent spaces <$> lines' withoutLeadingNewlines
- where
- indent 0 xs = xs
- indent count (' ' : xs) = indent (count - 1) xs
- indent _ xs = xs
- withoutLeadingNewlines = dropWhile isLineBreak code
- spaces = length $ takeWhile (== ' ') withoutLeadingNewlines
- lines' "" = []
- lines' string =
- let (line, rest) = break isLineBreak string
- reminder =
- case rest of
- [] -> []
- '\r' : '\n' : strippedString -> lines' strippedString
- _ : strippedString -> lines' strippedString
- in line : reminder
- isLineBreak = flip any ['\n', '\r'] . (==)
-
--- | Removes leading and trailing newlines. Indentation of the first line is
--- removed from each line of the string.
-{-# DEPRECATED gql "Use Language.GraphQL.TH.gql instead" #-}
-gql :: QuasiQuoter
-gql = QuasiQuoter
- { quoteExp = pure . LitE . StringL . stripIndentation
- , quotePat = const
- $ fail "Illegal gql QuasiQuote (allowed as expression only, used as a pattern)"
- , quoteType = const
- $ fail "Illegal gql QuasiQuote (allowed as expression only, used as a type)"
- , quoteDec = const
- $ fail "Illegal gql QuasiQuote (allowed as expression only, used as a declaration)"
- }