Skip to content
This repository was archived by the owner on Dec 29, 2021. It is now read-only.

Commit 22ebc0b

Browse files
committed
Restore compatibility with aeson 1.5
1 parent 2ad3b2f commit 22ebc0b

File tree

3 files changed

+27
-6
lines changed

3 files changed

+27
-6
lines changed

hslua-aeson.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ source-repository head
2727
common common-options
2828
default-language: Haskell2010
2929
build-depends: base >= 4.8 && < 5
30-
, aeson >= 2.0 && < 2.1
30+
, aeson >= 1.5 && < 2.1
3131
, bytestring >= 0.10.2 && < 0.12
3232
, containers >= 0.5.9 && < 0.7
3333
, hashable >= 1.2 && < 1.5
@@ -39,6 +39,7 @@ common common-options
3939
, text >= 1.0 && < 1.3
4040
, vector >= 0.7
4141
default-extensions: BangPatterns
42+
, CPP
4243
, LambdaCase
4344
, OverloadedStrings
4445
, TypeApplications

src/HsLua/Aeson.hs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,19 +35,31 @@ module HsLua.Aeson
3535
) where
3636

3737
import Control.Monad ((<$!>), when)
38-
import Data.Aeson.Key (Key, toText, fromText)
39-
import Data.Aeson.KeyMap
4038
import Data.Scientific (Scientific, toRealFloat, fromFloatDigits)
4139
import Data.String (IsString (fromString))
4240
import Data.Vector (Vector)
4341
import HsLua.Core as Lua
4442
import HsLua.Marshalling as Lua
4543

4644
import qualified Data.Aeson as Aeson
47-
import qualified Data.Aeson.KeyMap as KeyMap
4845
import qualified Data.Vector as Vector
4946
import qualified HsLua.Core.Unsafe as Unsafe
5047

48+
#if MIN_VERSION_aeson(2,0,0)
49+
import Data.Aeson.Key (Key, toText, fromText)
50+
import qualified Data.Aeson.KeyMap as KeyMap
51+
type KeyMap = KeyMap.KeyMap
52+
#else
53+
import Data.Text (Text)
54+
import qualified Data.HashMap.Strict as KeyMap
55+
type Key = Text
56+
type KeyMap = KeyMap.HashMap Key
57+
toText :: Key -> Text
58+
toText = id
59+
fromText :: Text -> Key
60+
fromText = id
61+
#endif
62+
5163
-- Scientific
5264
pushScientific :: Pusher e Scientific
5365
pushScientific = pushRealFloat @Double . toRealFloat

test/test-hslua-aeson.hs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ Tests for Aeson–Lua glue.
77
-}
88
import Control.Monad (when)
99
import Data.AEq ((~==))
10-
import Data.Aeson.Key (Key, fromText)
1110
import Data.ByteString (ByteString)
1211
import Data.Scientific (Scientific, toRealFloat, fromFloatDigits)
1312
import HsLua.Core as Lua
@@ -20,10 +19,17 @@ import Test.Tasty.QuickCheck
2019
import Test.QuickCheck.Instances ()
2120

2221
import qualified Data.Aeson as Aeson
23-
import qualified Data.Aeson.KeyMap as KeyMap
2422
import qualified Data.Vector as Vector
2523
import qualified Test.QuickCheck.Monadic as QC
2624

25+
#if MIN_VERSION_aeson(2,0,0)
26+
import Data.Aeson.Key (Key, fromText)
27+
import qualified Data.Aeson.KeyMap as KeyMap
28+
#else
29+
import qualified Data.HashMap.Strict as KeyMap
30+
#endif
31+
32+
2733
-- | Run this spec.
2834
main :: IO ()
2935
main = defaultMain tests
@@ -153,11 +159,13 @@ luaNumberToScientific = fromFloatDigits . (realToFrac :: Lua.Number -> Double)
153159
instance Arbitrary Aeson.Value where
154160
arbitrary = arbitraryValue 5
155161

162+
#if MIN_VERSION_aeson(2,0,0)
156163
instance Arbitrary Key where
157164
arbitrary = fmap fromText arbitrary
158165

159166
instance Arbitrary a => Arbitrary (KeyMap.KeyMap a) where
160167
arbitrary = fmap KeyMap.fromList arbitrary
168+
#endif
161169

162170
arbitraryValue :: Int -> Gen Aeson.Value
163171
arbitraryValue size = frequency

0 commit comments

Comments
 (0)