@@ -15,8 +15,9 @@ import Control.Monad.Reader (ask, asks)
1515import qualified Control.Monad.State as State
1616import qualified Data.Aeson as Aeson
1717import Data.Aeson ((.=) , (.:) )
18+ import qualified Data.Aeson.Key as Key
19+ import qualified Data.Aeson.KeyMap as KeyMap
1820import Data.Acid (Query , Update , makeAcidic )
19- import qualified Data.HashMap.Strict as HashMap
2021import qualified Data.Map.Strict as Map
2122import Data.Monoid (Sum (.. ))
2223import qualified Data.Text as T
@@ -85,30 +86,30 @@ instance SafeCopy PackageBasicDescription where
8586instance Aeson. ToJSON PackageBasicDescription where
8687 toJSON PackageBasicDescription {.. } =
8788 Aeson. object
88- [ T. pack " license" .= Pretty. prettyShow pbd_license
89- , T. pack " copyright" .= pbd_copyright
90- , T. pack " synopsis" .= pbd_synopsis
91- , T. pack " description" .= pbd_description
92- , T. pack " author" .= pbd_author
93- , T. pack " homepage" .= pbd_homepage
94- , T. pack " metadata_revision" .= pbd_metadata_revision
89+ [ Key. fromString " license" .= Pretty. prettyShow pbd_license
90+ , Key. fromString " copyright" .= pbd_copyright
91+ , Key. fromString " synopsis" .= pbd_synopsis
92+ , Key. fromString " description" .= pbd_description
93+ , Key. fromString " author" .= pbd_author
94+ , Key. fromString " homepage" .= pbd_homepage
95+ , Key. fromString " metadata_revision" .= pbd_metadata_revision
9596 ]
9697
9798
9899instance Aeson. FromJSON PackageBasicDescription where
99100 parseJSON = Aeson. withObject " PackageBasicDescription" $ \ obj -> do
100- pbd_version' <- obj .: T. pack " license"
101+ pbd_version' <- obj .: Key. fromString " license"
101102 let parseEitherLicense t =
102103 Parsec. simpleParsec t <|> fmap licenseToSPDX (simpleParse t)
103104 case parseEitherLicense pbd_version' of
104105 Nothing -> fail $ concat [" Could not parse version: \" " , pbd_version', " \" " ]
105106 Just pbd_license -> do
106- pbd_copyright <- obj .: T. pack " copyright"
107- pbd_synopsis <- obj .: T. pack " synopsis"
108- pbd_description <- obj .: T. pack " description"
109- pbd_author <- obj .: T. pack " author"
110- pbd_homepage <- obj .: T. pack " homepage"
111- pbd_metadata_revision <- obj .: T. pack " metadata_revision"
107+ pbd_copyright <- obj .: Key. fromString " copyright"
108+ pbd_synopsis <- obj .: Key. fromString " synopsis"
109+ pbd_description <- obj .: Key. fromString " description"
110+ pbd_author <- obj .: Key. fromString " author"
111+ pbd_homepage <- obj .: Key. fromString " homepage"
112+ pbd_metadata_revision <- obj .: Key. fromString " metadata_revision"
112113 return $
113114 PackageBasicDescription {.. }
114115
@@ -161,14 +162,13 @@ instance Aeson.FromJSON PackageVersions where
161162 parseJSON = Aeson. withObject " PackageVersions" $ \ obj ->
162163 fmap PackageVersions
163164 $ traverse (parsePair)
164- $ HashMap . toList obj
165+ $ KeyMap . toList obj
165166 where
166167 parsePair (vStr, vStatus) =
167- (,) <$> parseVersion vStr <*> parseStatus vStatus
168+ (,) <$> parseVersion ( Key. toString vStr) <*> parseStatus vStatus
168169
169- parseVersion verText =
170- let verString = T. unpack verText
171- in case simpleParse verString of
170+ parseVersion verString =
171+ case simpleParse verString of
172172 Just ver -> return ver
173173 Nothing -> fail $ concat [" Could not parse \" "
174174 , verString ++ " \" as Version. "
0 commit comments