packages feed

hw-uri 0.1.1.1 → 0.1.1.2

raw patch · 3 files changed

+31/−26 lines, 3 filesPVP: minor bump suggested

API additions: PVP suggests at least a minor version bump

API changes (from Hackage documentation)

+ HaskellWorks.Data.Uri.Location: basename :: Location -> Text

Files

hw-uri.cabal view
@@ -1,7 +1,7 @@ cabal-version:          2.2  name:                   hw-uri-version:                0.1.1.1+version:                0.1.1.2 synopsis:               Supports IO on URIs description:            Supports IO on URIs. homepage:               https://github.com/haskell-works/hw-uri
src/HaskellWorks/Data/Uri/Location.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE DataKinds              #-} {-# LANGUAGE DeriveGeneric          #-} {-# LANGUAGE FunctionalDependencies #-}+{-# LANGUAGE MultiParamTypeClasses  #-} {-# LANGUAGE MultiWayIf             #-} {-# LANGUAGE OverloadedStrings      #-} {-# LANGUAGE TypeApplications       #-}@@ -10,22 +11,25 @@   ( IsPath(..)   , Location(..)   , toLocation+  , basename   , dirname   ) where -import Antiope.Core         (ToText (..), fromText)-import Antiope.S3           (ObjectKey (..), S3Uri (..))+import Antiope.Core              (ToText (..), fromText)+import Antiope.S3                (ObjectKey (..), S3Uri (..)) import Control.Applicative+import Control.Lens              ((^.)) import Data.Aeson-import Data.Maybe           (fromMaybe)-import Data.Semigroup       ((<>))-import Data.Text            (Text)-import GHC.Generics         (Generic)+import Data.Generics.Product.Any+import Data.Maybe                (fromMaybe)+import Data.Semigroup            ((<>))+import Data.Text                 (Text)+import GHC.Generics              (Generic) +import qualified Antiope.S3.Types as Z+import qualified Data.Aeson.Types as J import qualified Data.Text        as T import qualified System.FilePath  as FP-import qualified Data.Aeson.Types as J-import qualified Antiope.S3.Types as Z  class IsPath a s | a -> s where   (</>)  :: a -> s -> a@@ -44,13 +48,13 @@  instance ToJSON Location where   toJSON v = case v of-    S3 uri          -> toJSON uri-    Local filePath  -> toJSON filePath-    HttpUri text    -> toJSON text+    S3 uri         -> toJSON uri+    Local filePath -> toJSON filePath+    HttpUri text   -> toJSON text  parseJsonLocal :: Value -> J.Parser FilePath parseJsonLocal (J.String v) = return (T.unpack v)-parseJsonLocal v = J.typeMismatch ("FilePath (String)") v+parseJsonLocal v            = J.typeMismatch ("FilePath (String)") v  parseJsonHttpUri :: Value -> J.Parser Text parseJsonHttpUri v@(J.String s) = if T.isPrefixOf "http://" s || T.isPrefixOf "https://" s@@ -65,9 +69,9 @@     <|> (Local    <$> parseJsonLocal   v)  instance ToText Location where-  toText (S3 uri)       = toText uri-  toText (Local p)      = T.pack p-  toText (HttpUri uri)  = uri+  toText (S3 uri)      = toText uri+  toText (Local p)     = T.pack p+  toText (HttpUri uri) = uri  instance IsPath Location Text where   (S3      b) </>  p = S3      (b </>           p)@@ -116,6 +120,12 @@   S3 s3Uri    -> S3 (Z.dirname s3Uri)   Local fp    -> Local (FP.takeDirectory fp)   HttpUri uri -> HttpUri (T.pack (FP.takeDirectory (T.unpack uri)))++basename :: Location -> Text+basename location = case location of+  S3 s3Uri    -> T.pack . FP.takeFileName $ T.unpack (toText (s3Uri ^. the @"objectKey"))+  Local fp    -> T.pack $ FP.takeFileName fp+  HttpUri uri -> T.pack . FP.takeFileName $ T.unpack uri  ------------------------------------------------------------------------------- stripStart :: Text -> Text -> Text
test/HaskellWorks/Data/Uri/Gen.hs view
@@ -7,20 +7,15 @@   , localPath   ) where -import Antiope.Core                   (toText) import Antiope.S3                     (BucketName (..), ObjectKey (..), S3Uri (..))-import Data.Aeson import Data.Semigroup                 ((<>)) import HaskellWorks.Data.Uri.Location-import HaskellWorks.Hspec.Hedgehog-import Hedgehog-import Test.Hspec+import Hedgehog                       (MonadGen) -import qualified Data.List       as L-import qualified Data.Text       as T-import qualified Hedgehog.Gen    as G-import qualified Hedgehog.Range  as R-import qualified System.FilePath as FP+import qualified Data.List      as L+import qualified Data.Text      as T+import qualified Hedgehog.Gen   as G+import qualified Hedgehog.Range as R  {-# ANN module ("HLint: ignore Redundant do"        :: String) #-} {-# ANN module ("HLint: ignore Reduce duplication"  :: String) #-}