@@ -23,6 +23,12 @@ data Deps = Deps
2323 , dependencies :: [(N.Name,V.Version)]
2424 } deriving Show
2525
26+data MiniDeps = Mini [(N.Name,V.Version)]
27+
28+instance FromJSON MiniDeps where
29+ parseJSON (Object obj) = Mini <$> getDependencies obj
30+ parseJSON _ = mzero
31+
2632instance FromJSON Deps where
2733 parseJSON (Object obj) =
2834 do version <- get obj "version" "your projects version number"
@@ -48,19 +54,22 @@ instance FromJSON Deps where
4854
4955 elmVersion <- get obj "elm-version" "the version of the Elm compiler you are using"
5056
51− deps <- toDeps =<< get obj "dependencies"
52− "a listing of your project's dependencies"
57+ deps <- getDependencies obj
5358
5459 return $ Deps name version summary desc license repo exposed elmVersion deps
5560
5661 parseJSON _ = mzero
5762
58−toDeps deps =
59− forM (Map.toList deps) $ \(f,v) ->
60− case (N.fromString f, V.fromString v) of
61− (Just name, Just version) -> return (name,version)
62− (Nothing, _) -> fail $ N.errorMsg f
63− (_, Nothing) -> fail $ "invalid version number " ++ v
63+getDependencies obj =
64+ toDeps =<< get obj "dependencies" "a listing of your project's dependencies"
65+ where
66+ toDeps deps =
67+ forM (Map.toList deps) $ \(f,v) ->
68+ case (N.fromString f, V.fromString v) of
69+ (Just name, Just version) -> return (name,version)
70+ (Nothing, _) -> fail $ N.errorMsg f
71+ (_, Nothing) -> fail $ "invalid version number " ++ v
72+
6473
6574get obj field desc =
6675 do maybe <- obj .:? field