packages feed

erlang 0.2.1 → 0.2.2

raw patch · 2 files changed

+18/−1 lines, 2 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Foreign.Erlang: ErlFloat :: Double -> ErlType

Files

erlang.cabal view
@@ -1,5 +1,5 @@ name:                erlang-version:             0.2.1+version:             0.2.2 stability:           alpha description:   Speaks the Erlang network protocol and impersonates an Erlang node
src/Foreign/Erlang/Types.hs view
@@ -37,6 +37,7 @@ import Data.Char          (chr, ord, isPrint) import qualified Data.ByteString.Lazy       as B import qualified Data.ByteString.Lazy.Char8 as C+import qualified Data.ByteString.Char8      as BB import Data.ByteString.Lazy.Builder  import qualified Data.ByteString            as Byte@@ -50,6 +51,7 @@  data ErlType = ErlNull              | ErlInt Int+             | ErlFloat  Double              | ErlBigInt Integer              | ErlString String              | ErlAtom String@@ -78,6 +80,14 @@     fromErlang (ErlInt x)    = x     fromErlang (ErlBigInt x) = fromIntegral x +instance Erlang Double where+    toErlang   x            = ErlFloat x +    fromErlang (ErlFloat x) = x++instance Erlang Float where+    toErlang x              = ErlFloat (realToFrac x)+    fromErlang (ErlFloat x) = realToFrac x+ instance Erlang Integer where     toErlang   x             = ErlBigInt x     fromErlang (ErlInt x)    = fromIntegral x@@ -134,6 +144,8 @@ putErl (ErlInt val)     | 0 <= val && val < 256 = tag 'a' <> putC val     | otherwise             = tag 'b' <> putN val++putErl (ErlFloat val)       = tag 'c' <> byteString  (BB.pack . take 31 $ show val ++ repeat '\NUL') putErl (ErlAtom val)        = tag 'd' <> putn (length val) <> putA val putErl (ErlTuple val)     | len < 256             = tag 'h' <> putC len <> val'@@ -182,6 +194,11 @@                       | otherwise      = x                  return (ErlInt valFrom32)+      'c' -> do parsed  <- reads . BB.unpack <$> getByteString 31  +                case parsed of+                  [(x,remains)]+                    | all (=='\NUL') remains -> return $ ErlFloat x +                  _                          -> fail $ "could not parse float representation: "++show parsed        'd' -> getn >>= liftM ErlAtom . getA       'e' -> do