typed-uuid 0.0.0.2 → 0.1.0.0
raw patch · 3 files changed
+75/−36 lines, 3 filesdep +yamlparse-applicativePVP ok
version bump matches the API change (PVP)
Dependencies added: yamlparse-applicative
API changes (from Hackage documentation)
- Data.UUID.Typed: jsonParseUUID :: Value -> Parser (UUID a)
- Data.UUID.Typed: parseUUID :: Text -> Maybe (UUID a)
- Data.UUID.Typed: textJSONParseUUID :: Text -> Parser (UUID a)
- Data.UUID.Typed: uuidBs :: UUID a -> ByteString
- Data.UUID.Typed: uuidLBs :: UUID a -> ByteString
+ Data.UUID.Typed: instance YamlParse.Applicative.Class.YamlKeySchema (Data.UUID.Typed.UUID a)
+ Data.UUID.Typed: instance YamlParse.Applicative.Class.YamlSchema (Data.UUID.Typed.UUID a)
+ Data.UUID.Typed: parseUUIDAsciiBytes :: ByteString -> Maybe (UUID a)
+ Data.UUID.Typed: parseUUIDLazyAsciiBytes :: ByteString -> Maybe (UUID a)
+ Data.UUID.Typed: parseUUIDText :: Text -> Maybe (UUID a)
+ Data.UUID.Typed: uuidASCIIBytes :: UUID a -> ByteString
+ Data.UUID.Typed: uuidLazyASCIIBytes :: UUID a -> ByteString
Files
- ChangeLog.md +15/−0
- src/Data/UUID/Typed.hs +57/−34
- typed-uuid.cabal +3/−2
ChangeLog.md view
@@ -2,6 +2,21 @@ ## Unreleased changes +## [0.1.0.0] - 2020-05-10++### Added++* `parseUUIDAsciiBytes`+* `parseUUIDLazyAsciiBytes`+* `instance YamlSchema (UUID a)`+* `instance YamlKeySchema (UUID a)`++### Changed++* Renamed `uuidBs` to `uuidASCIIBytes`+* Renamed `uuidLBs` to `uuidLazyASCIIBytes`+* Renamed `parseUUID` to `parseUUIDText`+ ## [0.0.0.2] - 2020-02-13 Put a lower bound on the base version
src/Data/UUID/Typed.hs view
@@ -3,13 +3,22 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE OverloadedStrings #-} -module Data.UUID.Typed where--import Control.Monad.IO.Class-import GHC.Generics-import Text.Read+module Data.UUID.Typed+ ( UUID (..),+ uuidText,+ uuidString,+ uuidASCIIBytes,+ uuidLazyASCIIBytes,+ nextRandomUUID,+ parseUUIDText,+ parseUUIDString,+ parseUUIDAsciiBytes,+ parseUUIDLazyAsciiBytes,+ )+where import Control.DeepSeq+import Control.Monad.IO.Class import Data.Aeson as JSON import Data.Aeson.Types as JSON import Data.Binary@@ -19,51 +28,59 @@ import Data.Hashable import qualified Data.Text as T import Data.Text (Text)+import qualified Data.UUID as UUID+import qualified Data.UUID.V4 as UUID+import Data.Validity+import Data.Validity.UUID () import Foreign.Storable+import GHC.Generics import System.Random+import Text.Read import Web.HttpApiData--import Data.Validity-import Data.Validity.UUID ()--import qualified Data.UUID as UUID-import qualified Data.UUID.V4 as UUID--newtype UUID a =- UUID- { unUUID :: UUID.UUID- }- deriving (Eq, Ord, Generic, Data, Storable, Binary, NFData, Hashable, Random)--instance Validity (UUID a)--instance Show (UUID a) where- show (UUID u) = show u--instance Read (UUID a) where- readPrec = UUID <$> readPrec+import YamlParse.Applicative (YamlKeySchema (..), YamlSchema (..), extraParser, viaYamlSchema) -uuidBs :: UUID a -> SB.ByteString-uuidBs (UUID uuid) = UUID.toASCIIBytes uuid+newtype UUID a+ = UUID+ { unUUID :: UUID.UUID+ }+ deriving (Eq, Ord, Generic, Data, Storable, Binary, NFData, Hashable, Random, Show, Read, Validity) -uuidLBs :: UUID a -> LB.ByteString-uuidLBs = LB.fromStrict . uuidBs+-- | See 'UUID.toText'+uuidText :: UUID a -> Text+uuidText (UUID uuid) = UUID.toText uuid +-- | See 'UUID.toString' uuidString :: UUID a -> String uuidString (UUID uuid) = UUID.toString uuid -uuidText :: UUID a -> Text-uuidText (UUID uuid) = UUID.toText uuid+-- | See 'UUID.toASCIIBytes'+uuidASCIIBytes :: UUID a -> SB.ByteString+uuidASCIIBytes (UUID uuid) = UUID.toASCIIBytes uuid +-- | See 'UUID.toLazyASCIIBytes'+uuidLazyASCIIBytes :: UUID a -> LB.ByteString+uuidLazyASCIIBytes (UUID uuid) = UUID.toLazyASCIIBytes uuid++-- | See 'UUID.nextRandom' nextRandomUUID :: MonadIO m => m (UUID a) nextRandomUUID = liftIO $ UUID <$> UUID.nextRandom -parseUUID :: Text -> Maybe (UUID a)-parseUUID = fmap UUID . UUID.fromText+-- | See 'UUID.fromText'+parseUUIDText :: Text -> Maybe (UUID a)+parseUUIDText = fmap UUID . UUID.fromText +-- | See 'UUID.fromString' parseUUIDString :: String -> Maybe (UUID a) parseUUIDString = fmap UUID . UUID.fromString +-- | See 'UUID.parseUUIDAsciiBytes'+parseUUIDAsciiBytes :: SB.ByteString -> Maybe (UUID a)+parseUUIDAsciiBytes = fmap UUID . UUID.fromASCIIBytes++-- | See 'UUID.parseUUIDLazyAsciiBytes'+parseUUIDLazyAsciiBytes :: LB.ByteString -> Maybe (UUID a)+parseUUIDLazyAsciiBytes = fmap UUID . UUID.fromLazyASCIIBytes+ instance FromJSONKey (UUID a) where fromJSONKey = FromJSONKeyTextParser textJSONParseUUID @@ -71,7 +88,13 @@ toJSONKey = toJSONKeyText (UUID.toText . unUUID) instance FromJSON (UUID a) where- parseJSON = jsonParseUUID+ parseJSON = viaYamlSchema++instance YamlSchema (UUID a) where+ yamlSchema = extraParser textJSONParseUUID yamlSchema++instance YamlKeySchema (UUID a) where+ yamlKeySchema = extraParser textJSONParseUUID yamlKeySchema jsonParseUUID :: Value -> Parser (UUID a) jsonParseUUID = withText "UUID" textJSONParseUUID
typed-uuid.cabal view
@@ -4,10 +4,10 @@ -- -- see: https://github.com/sol/hpack ----- hash: 689ba6b86a977a9b1605472b0ce39c908c5cd8db9682482bbb92d2e30be10973+-- hash: 3beab03fce46280926d3d2293c040ade8b4b61d482353da4ed41730cda4b0cc2 name: typed-uuid-version: 0.0.0.2+version: 0.1.0.0 synopsis: Phantom-Typed version of UUID description: Please see the README on Github at <https://github.com/NorfairKing/typed-uuid#readme> category: Data@@ -47,4 +47,5 @@ , uuid >=1.3 && <1.4 , validity , validity-uuid >=0.0+ , yamlparse-applicative default-language: Haskell2010