diff --git a/CHANGELOG.md b/CHANGELOG.md index 3dda90c..ab2109b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on and this project adheres to [Haskell Package Versioning Policy](https://pvp.haskell.org/). +## [Unreleased] +### Changed +- Remove deprecated 'gql' quasi quoter. + ## [1.4.0.0] - 2024-10-26 ### Changed - `Schema.Directive` is extended to contain a boolean argument, representing @@ -538,6 +542,7 @@ and this project adheres to ### Added - Data types for the GraphQL language. +[Unreleased]: https://git.caraus.tech/OSS/graphql/compare/v1.4.0.0...master [1.4.0.0]: https://git.caraus.tech/OSS/graphql/compare/v1.3.0.0...v1.4.0.0 [1.3.0.0]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.3...v1.3.0.0 [1.2.0.3]: https://git.caraus.tech/OSS/graphql/compare/v1.2.0.2...v1.2.0.3 diff --git a/graphql.cabal b/graphql.cabal index 3ee6561..ac9c186 100644 --- a/graphql.cabal +++ b/graphql.cabal @@ -40,7 +40,6 @@ library Language.GraphQL.Execute Language.GraphQL.Execute.Coerce Language.GraphQL.Execute.OrderedMap - Language.GraphQL.TH Language.GraphQL.Type Language.GraphQL.Type.In Language.GraphQL.Type.Out @@ -63,7 +62,6 @@ library exceptions ^>= 0.10.4, megaparsec >= 9.0 && < 10, parser-combinators >= 1.3 && < 2, - template-haskell >= 2.16 && < 3, text >= 1.2 && < 3, transformers >= 0.5.6 && < 0.7, unordered-containers ^>= 0.2.14, @@ -84,7 +82,6 @@ test-suite graphql-test Language.GraphQL.Execute.CoerceSpec Language.GraphQL.Execute.OrderedMapSpec Language.GraphQL.ExecuteSpec - Language.GraphQL.THSpec Language.GraphQL.Type.OutSpec Language.GraphQL.Validate.RulesSpec Schemas.HeroSchema diff --git a/src/Language/GraphQL/TH.hs b/src/Language/GraphQL/TH.hs deleted file mode 100644 index 22ffdd0..0000000 --- a/src/Language/GraphQL/TH.hs +++ /dev/null @@ -1,48 +0,0 @@ -{- This Source Code Form is subject to the terms of the Mozilla Public License, - v. 2.0. If a copy of the MPL was not distributed with this file, You can - obtain one at https://mozilla.org/MPL/2.0/. -} - --- | Template Haskell helpers. -module Language.GraphQL.TH - ( gql - ) where - -import Language.Haskell.TH.Quote (QuasiQuoter(..)) -import Language.Haskell.TH (Exp(..), Lit(..)) - -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.Class.gql from graphql-spice 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)" - } diff --git a/tests/Language/GraphQL/THSpec.hs b/tests/Language/GraphQL/THSpec.hs deleted file mode 100644 index 2858ab2..0000000 --- a/tests/Language/GraphQL/THSpec.hs +++ /dev/null @@ -1,24 +0,0 @@ -{- This Source Code Form is subject to the terms of the Mozilla Public License, - v. 2.0. If a copy of the MPL was not distributed with this file, You can - obtain one at https://mozilla.org/MPL/2.0/. -} - -{-# LANGUAGE QuasiQuotes #-} - -module Language.GraphQL.THSpec - ( spec - ) where - -import Language.GraphQL.TH (gql) -import Test.Hspec (Spec, describe, it, shouldBe) - -spec :: Spec -spec = - describe "gql" $ - it "replaces CRNL with NL" $ - let expected = "line1\nline2\nline3" - actual = [gql| - line1 - line2 - line3 - |] - in actual `shouldBe` expected