packages feed

bower-json 0.7.0.0 → 0.8.0

raw patch · 4 files changed

+57/−8 lines, 4 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Web.Bower.PackageMeta: authorEmail :: Author -> Maybe String
- Web.Bower.PackageMeta: authorHomepage :: Author -> Maybe String
- Web.Bower.PackageMeta: authorName :: Author -> String
- Web.Bower.PackageMeta: bowerAuthors :: PackageMeta -> [Author]
- Web.Bower.PackageMeta: bowerDependencies :: PackageMeta -> [(PackageName, VersionRange)]
- Web.Bower.PackageMeta: bowerDescription :: PackageMeta -> Maybe String
- Web.Bower.PackageMeta: bowerDevDependencies :: PackageMeta -> [(PackageName, VersionRange)]
- Web.Bower.PackageMeta: bowerHomepage :: PackageMeta -> Maybe String
- Web.Bower.PackageMeta: bowerIgnore :: PackageMeta -> [String]
- Web.Bower.PackageMeta: bowerKeywords :: PackageMeta -> [String]
- Web.Bower.PackageMeta: bowerLicence :: PackageMeta -> [String]
- Web.Bower.PackageMeta: bowerMain :: PackageMeta -> [FilePath]
- Web.Bower.PackageMeta: bowerModuleType :: PackageMeta -> [ModuleType]
- Web.Bower.PackageMeta: bowerName :: PackageMeta -> PackageName
- Web.Bower.PackageMeta: bowerPrivate :: PackageMeta -> Bool
- Web.Bower.PackageMeta: bowerRepository :: PackageMeta -> Maybe Repository
- Web.Bower.PackageMeta: bowerResolutions :: PackageMeta -> [(PackageName, Version)]
- Web.Bower.PackageMeta: repositoryType :: Repository -> String
- Web.Bower.PackageMeta: repositoryUrl :: Repository -> String
- Web.Bower.PackageMeta: runVersion :: Version -> String
- Web.Bower.PackageMeta: runVersionRange :: VersionRange -> String
+ Web.Bower.PackageMeta: [authorEmail] :: Author -> Maybe String
+ Web.Bower.PackageMeta: [authorHomepage] :: Author -> Maybe String
+ Web.Bower.PackageMeta: [authorName] :: Author -> String
+ Web.Bower.PackageMeta: [bowerAuthors] :: PackageMeta -> [Author]
+ Web.Bower.PackageMeta: [bowerDependencies] :: PackageMeta -> [(PackageName, VersionRange)]
+ Web.Bower.PackageMeta: [bowerDescription] :: PackageMeta -> Maybe String
+ Web.Bower.PackageMeta: [bowerDevDependencies] :: PackageMeta -> [(PackageName, VersionRange)]
+ Web.Bower.PackageMeta: [bowerHomepage] :: PackageMeta -> Maybe String
+ Web.Bower.PackageMeta: [bowerIgnore] :: PackageMeta -> [String]
+ Web.Bower.PackageMeta: [bowerKeywords] :: PackageMeta -> [String]
+ Web.Bower.PackageMeta: [bowerLicense] :: PackageMeta -> [String]
+ Web.Bower.PackageMeta: [bowerMain] :: PackageMeta -> [FilePath]
+ Web.Bower.PackageMeta: [bowerModuleType] :: PackageMeta -> [ModuleType]
+ Web.Bower.PackageMeta: [bowerName] :: PackageMeta -> PackageName
+ Web.Bower.PackageMeta: [bowerPrivate] :: PackageMeta -> Bool
+ Web.Bower.PackageMeta: [bowerRepository] :: PackageMeta -> Maybe Repository
+ Web.Bower.PackageMeta: [bowerResolutions] :: PackageMeta -> [(PackageName, Version)]
+ Web.Bower.PackageMeta: [repositoryType] :: Repository -> String
+ Web.Bower.PackageMeta: [repositoryUrl] :: Repository -> String
+ Web.Bower.PackageMeta: [runVersionRange] :: VersionRange -> String
+ Web.Bower.PackageMeta: [runVersion] :: Version -> String

Files

bower-json.cabal view
@@ -1,5 +1,5 @@ name:                bower-json-version:             0.7.0.0+version:             0.8.0 synopsis:            Read bower.json from Haskell license:             MIT license-file:        LICENSE@@ -15,6 +15,9 @@    This package provides a data type and ToJSON/FromJSON instances for Bower's   package manifest file, bower.json.++extra-source-files:+  test-resources/bower.json  source-repository head   type:     git
src/Web/Bower/PackageMeta/Internal.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE TupleSections #-} {-# LANGUAGE RecordWildCards #-}+{-# LANGUAGE CPP #-}  -- | A data type representing the Bower.json package description file, together -- with a parser and related functions.@@ -10,7 +11,9 @@  module Web.Bower.PackageMeta.Internal where -import Control.Applicative+#if !MIN_VERSION_base(4,8,0)+import Control.Applicative (pure, (<$>), (<*>))+#endif import Control.Monad import Control.Category ((>>>)) import Control.Monad.Error.Class (MonadError(..))@@ -42,7 +45,7 @@   , bowerDescription     :: Maybe String   , bowerMain            :: [FilePath]   , bowerModuleType      :: [ModuleType]-  , bowerLicence         :: [String]+  , bowerLicense         :: [String]   , bowerIgnore          :: [String]   , bowerKeywords        :: [String]   , bowerAuthors         :: [Author]@@ -186,9 +189,9 @@ asPackageMeta =   PackageMeta <$> key "name" (withString parsePackageName)             <*> keyMay "description" asString-            <*> keyOrDefault "main"       [] (eachInArray asString)-            <*> keyOrDefault "moduleType" [] (eachInArray (withString parseModuleType))-            <*> keyOrDefault "licence"    [] (eachInArray asString)+            <*> keyOrDefault "main"       [] (arrayOrSingle asString)+            <*> keyOrDefault "moduleType" [] (arrayOrSingle (withString parseModuleType))+            <*> keyOrDefault "license"    [] (arrayOrSingle asString)             <*> keyOrDefault "ignore"     [] (eachInArray asString)             <*> keyOrDefault "keywords"   [] (eachInArray asString)             <*> keyOrDefault "authors"    [] (eachInArray asAuthor)@@ -199,6 +202,12 @@             <*> keyOrDefault "resolutions"     [] (asAssocListOf Version)             <*> keyOrDefault "private" False asBool   where+  arrayOrSingle :: Parse e a -> Parse e [a]+  arrayOrSingle parser =+    (fmap (:[]) parser) <|> eachInArray parser+    where+    (<|>) p q = catchError p (const q)+   asAssocListOf :: (String -> a) -> Parse BowerError [(PackageName, a)]   asAssocListOf g =     eachInObjectWithKey (parsePackageName . T.unpack) (g <$> asString)@@ -267,7 +276,7 @@       , maybePair "description" bowerDescription       , maybeArrayPair "main" bowerMain       , maybeArrayPair "moduleType" bowerModuleType-      , maybeArrayPair "licence" bowerLicence+      , maybeArrayPair "license" bowerLicense       , maybeArrayPair "ignore" bowerIgnore       , maybeArrayPair "keywords" bowerKeywords       , maybeArrayPair "authors" bowerAuthors
+ test-resources/bower.json view
@@ -0,0 +1,23 @@+{+  "name": "purescript-prelude",+  "homepage": "https://github.com/purescript/purescript-prelude",+  "description": "The PureScript Prelude",+  "keywords": [+    "purescript"+  ],+  "license": "MIT",+  "repository": {+    "type": "git",+    "url": "git://github.com/purescript/purescript-prelude.git"+  },+  "ignore": [+    "**/.*",+    "bower_components",+    "node_modules",+    "output",+    "test",+    "bower.json",+    "gulpfile.js",+    "package.json"+  ]+}
test/Main.hs view
@@ -1,4 +1,5 @@ {-# LANGUAGE OverloadedStrings #-}+{-# LANGUAGE RecordWildCards #-}  import Test.Tasty import Test.Tasty.HUnit@@ -26,6 +27,7 @@   [ testGroup "FromJSON Author instance" authorTests   , testGroup "optional keys" optionalKeyTests   , testGroup "round trips" roundTripTests+  , testGroup "real bower.json" realBowerJsonTests   ]  authorTests :: [TestTree]@@ -99,7 +101,7 @@     { bowerDescription     = Just "hello, world"     , bowerMain            = ["foo.js"]     , bowerModuleType      = [Globals, Node]-    , bowerLicence         = ["MIT"]+    , bowerLicense         = ["MIT"]     , bowerIgnore          = []     , bowerKeywords        = ["purescript"]     , bowerAuthors         = [authorWithoutOptionalAttrs, authorWithEmail, authorWithBoth]@@ -123,3 +125,15 @@ roundTripTests =   map (\(name, b) -> testCase name (Just b @=? decode (encode b)))       allPkgs++realBowerJsonTests :: [TestTree]+realBowerJsonTests = [go]+  where+  go =+    testCase "parses a real bower.json correctly" $ do+      res <- decodeFile "./test-resources/bower.json"+      case res of+        Right PackageMeta{..} ->+          ["MIT"] @=? bowerLicense+        Left err ->+          assertBool ("Failed to parse ./test-resources/bower.json: " ++ show err) False