packages feed

ulid 0.3.0.0 → 0.3.2.0

raw patch · 6 files changed

+26/−19 lines, 6 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.ULID: instance GHC.Generics.Generic Data.ULID.ULID
+ Data.ULID.Random: instance GHC.Generics.Generic Data.ULID.Random.ULIDRandom
+ Data.ULID.TimeStamp: instance GHC.Generics.Generic Data.ULID.TimeStamp.ULIDTimeStamp

Files

src/Data/ULID.hs view
@@ -27,6 +27,7 @@ -}  {-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-} module Data.ULID (     ULID(..),     getULIDTime,@@ -43,6 +44,7 @@ import           Data.Monoid           ((<>)) import           Data.Text as T import           Data.Time.Clock.POSIX+import           GHC.Generics import           System.IO.Unsafe import qualified System.Random         as R @@ -60,13 +62,13 @@   { timeStamp :: !ULIDTimeStamp   , random    :: !ULIDRandom   }-  deriving (Eq, Typeable, Data)+  deriving (Eq, Typeable, Data, Generic)  instance Ord ULID where     compare (ULID ts1 _) (ULID ts2 _) = compare ts1 ts2  instance Show ULID where-    show (ULID ts bytes) = (show ts) ++ (show bytes)+    show (ULID ts bytes) = show ts ++ show bytes  instance Read ULID where     readsPrec _ str = do@@ -87,7 +89,7 @@ -- but since the work to put it here has already been done -- it's no harm to leave it in. instance NFData ULID where-    rnf (ULID ts bytes) = rnf ts `seq` (rnf bytes `seq` ())+    rnf (ULID ts bytes) = rnf ts `seq` rnf bytes  instance R.Random ULID where     randomR _ = R.random -- ignore range@@ -95,7 +97,6 @@         t <- getULIDTimeStamp         let (r, g') = mkULIDRandom g         return (ULID t r, g')-    randomIO = getULID  instance Hashable ULID where     hashWithSalt salt ulid = hashWithSalt salt (encode ulid)@@ -126,7 +127,8 @@ -- than storing the shown `Text`, -- but still human-readable unlike the Binary version. ulidToInteger :: ULID -> Integer-ulidToInteger = roll.(LBS.unpack).encode+ulidToInteger =+    roll . LBS.unpack . encode   -- | Convert a ULID from its corresponding 128-bit Integer.@@ -138,7 +140,7 @@     | n > maxValidInteger = Left         "Value must not be larger than the maximum safe Integer size (128 bits)"     | otherwise = Right-        . decode . LBS.pack . (unroll 16) $ n  -- 16 bytes = 128 bit+        . decode . LBS.pack . unroll 16 $ n  -- 16 bytes = 128 bit   where     maxValidInteger :: Integer     maxValidInteger = (2 ^ 128) - 1
src/Data/ULID/Base32.hs view
@@ -137,7 +137,7 @@   -> i  -- ^ Natural number to encode   -> Text  -- ^ 0 padded, Douglas Crockford's base 32 encoded Text encode width =-  (leftpad $ clampZero width) . encodePlain . clampZero+  leftpad (clampZero width) . encodePlain . clampZero   -- | >>> decode 5 "0003V"
src/Data/ULID/Random.hs view
@@ -2,6 +2,7 @@ -- either with PRNGs or TRNGs.  {-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-} module Data.ULID.Random (     ULIDRandom,     mkCryptoULIDRandom,@@ -19,6 +20,7 @@ import Data.Maybe import Data.Word import Data.Text as T hiding (split, take)+import GHC.Generics import System.Random  @@ -27,21 +29,21 @@  -- | Newtype wrapping a `ByteString` newtype ULIDRandom = ULIDRandom BS.ByteString-    deriving (Eq, Typeable, Data)+    deriving (Eq, Typeable, Data, Generic)  instance Show ULIDRandom where-    show (ULIDRandom r) = T.unpack $ B32.encode 16.roll.(BS.unpack) $ r+    show (ULIDRandom r) = T.unpack $ B32.encode 16 . roll . BS.unpack $ r  instance Read ULIDRandom where   readsPrec _ = fmap     (\(int, rest) ->         (ULIDRandom $ BS.pack $ unroll numBytes int, T.unpack rest))-    . (B32.decode $ 16)+    . B32.decode 16     . T.pack  instance Binary ULIDRandom where-    put (ULIDRandom r) = mapM_ put (BS.unpack $ r)-    get = ULIDRandom <$> (BS.pack) <$> replicateM numBytes get+    put (ULIDRandom r) = mapM_ put (BS.unpack r)+    get = ULIDRandom . BS.pack <$> replicateM numBytes get  instance NFData ULIDRandom where     rnf (ULIDRandom r) = rnf r@@ -66,7 +68,7 @@ mkULIDRandom :: RandomGen g => g -> (ULIDRandom, g) mkULIDRandom g = let   (g1, g2) = split g-  genbytes = (BS.pack) . take numBytes . randoms+  genbytes = BS.pack . take numBytes . randoms   in (ULIDRandom $ genbytes g, g2)  @@ -75,4 +77,4 @@ -- | Note: The call to `newStdGen` splits the generator, -- so this is safe to call multiple times getULIDRandom =-  fst <$> mkULIDRandom <$> newStdGen+  fst . mkULIDRandom <$> newStdGen
src/Data/ULID/TimeStamp.hs view
@@ -1,6 +1,7 @@ -- | Custom data type for timestamps (milliseconds since 1970)  {-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveGeneric #-} module Data.ULID.TimeStamp (     ULIDTimeStamp,     mkULIDTimeStamp,@@ -16,6 +17,7 @@ import           Data.Text as T import           Data.Time.Clock import           Data.Time.Clock.POSIX+import           GHC.Generics  import qualified Data.ULID.Base32 as B32 @@ -24,20 +26,20 @@  -- | UNIX time in milliseconds newtype ULIDTimeStamp = ULIDTimeStamp Integer-    deriving (Eq, Ord, Typeable, Data)+    deriving (Eq, Ord, Typeable, Data, Generic)  instance Show ULIDTimeStamp where     show (ULIDTimeStamp i) = T.unpack $ B32.encode 10 i  instance Read ULIDTimeStamp where     readsPrec _ = fmap-        (\(int, rest)->(ULIDTimeStamp int, T.unpack rest))-        . (B32.decode) 10+        (\(int, rest) -> (ULIDTimeStamp int, T.unpack rest))+        . B32.decode 10         . T.pack  instance Binary ULIDTimeStamp where     put (ULIDTimeStamp i) = mapM_ put (unroll numBytes i)-    get = ULIDTimeStamp <$> roll <$> replicateM numBytes get+    get = ULIDTimeStamp . roll <$> replicateM numBytes get  instance NFData ULIDTimeStamp where     rnf (ULIDTimeStamp i) = rnf i
test/Data/ULIDSpec.hs view
@@ -75,6 +75,7 @@         decode (encode a2) `shouldBe` a2         encode a1 `shouldNotBe` encode a2 +    -- TODO: This can have race conditions     it "encodes MSB first" $ do         a1 <- getULIDTime 12345         let e1 = encode a1
ulid.cabal view
@@ -1,5 +1,5 @@ name:                ulid-version:             0.3.0.0+version:             0.3.2.0 synopsis:            Implementation of ULID - Universally Unique                      Lexicographically Sortable Identifier description:         Implementation of Alizain Feerasta's ULID specification.