@@ -1,5 +1,8 @@
1-- Use GHC generics to automatically generate good instances.
1-- Use GHC generics to automatically generate good instances.
2{-# LANGUAGE CPP #-}
3{-# LANGUAGE CPP #-}
4+{-# LANGUAGE PackageImports #-}
3{-# OPTIONS_GHC -fno-warn-orphans #-}
6{-# OPTIONS_GHC -fno-warn-orphans #-}
5module Twitter.Generic
8module Twitter.Generic
@@ -11,39 +14,64 @@ module Twitter.Generic
13import Prelude ()
16import Prelude ()
14−import Prelude.Compat
17+import Prelude.Compat ()
16import Twitter
19import Twitter
20+import Twitter.Options
18#ifndef HAS_BOTH_AESON_AND_BENCHMARKS
22#ifndef HAS_BOTH_AESON_AND_BENCHMARKS
19−import Data.Aeson (ToJSON, FromJSON)
23+import Data.Aeson (ToJSON (..), FromJSON (..), genericToJSON, genericToEncoding, genericParseJSON)
21−import "aeson" Data.Aeson (ToJSON, FromJSON)
25+import "aeson" Data.Aeson (ToJSON (..), FromJSON (..), genericToJSON, genericToEncoding, genericParseJSON)
22import qualified "aeson-benchmarks" Data.Aeson as B
26import qualified "aeson-benchmarks" Data.Aeson as B
25−instance ToJSON Metadata
29+instance ToJSON Metadata where
30+ toJSON = genericToJSON twitterOptions
31+ toEncoding = genericToEncoding twitterOptions
26−instance FromJSON Metadata
32+instance FromJSON Metadata where
33+ parseJSON = genericParseJSON twitterOptions
28−instance ToJSON Geo
35+instance ToJSON Geo where
36+ toJSON = genericToJSON twitterOptions
37+ toEncoding = genericToEncoding twitterOptions
29−instance FromJSON Geo
38+instance FromJSON Geo where
39+ parseJSON = genericParseJSON twitterOptions
31−instance ToJSON Story
41+instance ToJSON Story where
42+ toJSON = genericToJSON twitterOptions
43+ toEncoding = genericToEncoding twitterOptions
32−instance FromJSON Story
44+instance FromJSON Story where
45+ parseJSON = genericParseJSON twitterOptions
34−instance ToJSON Result
47+instance ToJSON Result where
48+ toJSON = genericToJSON twitterOptions
49+ toEncoding = genericToEncoding twitterOptions
35−instance FromJSON Result
50+instance FromJSON Result where
51+ parseJSON = genericParseJSON twitterOptions
37#ifdef HAS_BOTH_AESON_AND_BENCHMARKS
53#ifdef HAS_BOTH_AESON_AND_BENCHMARKS
38−instance B.ToJSON Metadata
54+instance B.ToJSON Metadata where
55+ toJSON = B.genericToJSON btwitterOptions
56+ toEncoding = B.genericToEncoding btwitterOptions
39−instance B.FromJSON Metadata
57+instance B.FromJSON Metadata where
58+ parseJSON = B.genericParseJSON btwitterOptions
41−instance B.ToJSON Geo
60+instance B.ToJSON Geo where
61+ toJSON = B.genericToJSON btwitterOptions
62+ toEncoding = B.genericToEncoding btwitterOptions
42−instance B.FromJSON Geo
63+instance B.FromJSON Geo where
64+ parseJSON = B.genericParseJSON btwitterOptions
44−instance B.ToJSON Story
66+instance B.ToJSON Story where
67+ toJSON = B.genericToJSON btwitterOptions
68+ toEncoding = B.genericToEncoding btwitterOptions
45−instance B.FromJSON Story
69+instance B.FromJSON Story where
70+ parseJSON = B.genericParseJSON btwitterOptions
47−instance B.ToJSON Result
72+instance B.ToJSON Result where
73+ toJSON = B.genericToJSON btwitterOptions
74+ toEncoding = B.genericToEncoding btwitterOptions
48−instance B.FromJSON Result
75+instance B.FromJSON Result where
76+ parseJSON = B.genericParseJSON btwitterOptions