-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Parse a subset of Ruby objects serialised with Marshal.dump.
--
-- Parse a subset of Ruby objects serialised with Marshal.dump.
@package ruby-marshal
@version 0.1.1
-- | Parsers for signed and unsigned integrals.
module Data.Ruby.Marshal.Int
-- | Read an Int8.
getInt8 :: Get Int8
-- | Read an Int16.
getInt16le :: Get Int16
-- | Read an Int24. Since Int24 unavailable in Data.Int we use Int32.
getInt24le :: Get Int32
-- | Read an Int32.
getInt32le :: Get Int32
-- | 16-bit signed integer type
data Int16 :: *
getWord8 :: Get Word8
getWord16le :: Get Word16
-- | Read a Word24 in little endian format. Since Word24 unavailable in
-- Data.Int we use Word32.
getWord24le :: Get Word32
getWord32le :: Get Word32
-- | 8-bit unsigned integer type
data Word8 :: *
-- | Ruby encoding types.
module Data.Ruby.Marshal.Encoding
-- | Lowers encoding ADT into an encoding string.
fromEnc :: RubyStringEncoding -> ByteString
-- | Lifts encoding strings into encoding ADT.
toEnc :: ByteString -> RubyStringEncoding
-- | ADT representing all supported Ruby encodings.
data RubyStringEncoding
ASCII_8BIT :: RubyStringEncoding
Big5 :: RubyStringEncoding
Big5_HKSCS :: RubyStringEncoding
Big5_UAO :: RubyStringEncoding
CP50220 :: RubyStringEncoding
CP50221 :: RubyStringEncoding
CP51932 :: RubyStringEncoding
CP850 :: RubyStringEncoding
CP852 :: RubyStringEncoding
CP855 :: RubyStringEncoding
CP949 :: RubyStringEncoding
CP950 :: RubyStringEncoding
CP951 :: RubyStringEncoding
EUC_JP :: RubyStringEncoding
EUC_JP_2004 :: RubyStringEncoding
EUC_KR :: RubyStringEncoding
EUC_TW :: RubyStringEncoding
Emacs_Mule :: RubyStringEncoding
EucJP_ms :: RubyStringEncoding
GB12345 :: RubyStringEncoding
GB18030 :: RubyStringEncoding
GB1988 :: RubyStringEncoding
GB2312 :: RubyStringEncoding
GBK :: RubyStringEncoding
IBM437 :: RubyStringEncoding
IBM737 :: RubyStringEncoding
IBM775 :: RubyStringEncoding
IBM852 :: RubyStringEncoding
IBM855 :: RubyStringEncoding
IBM857 :: RubyStringEncoding
IBM860 :: RubyStringEncoding
IBM861 :: RubyStringEncoding
IBM862 :: RubyStringEncoding
IBM863 :: RubyStringEncoding
IBM864 :: RubyStringEncoding
IBM865 :: RubyStringEncoding
IBM866 :: RubyStringEncoding
IBM869 :: RubyStringEncoding
ISO_2022_JP :: RubyStringEncoding
ISO_2022_JP_2 :: RubyStringEncoding
ISO_2022_JP_KDDI :: RubyStringEncoding
ISO_8859_1 :: RubyStringEncoding
ISO_8859_10 :: RubyStringEncoding
ISO_8859_11 :: RubyStringEncoding
ISO_8859_13 :: RubyStringEncoding
ISO_8859_14 :: RubyStringEncoding
ISO_8859_15 :: RubyStringEncoding
ISO_8859_16 :: RubyStringEncoding
ISO_8859_2 :: RubyStringEncoding
ISO_8859_3 :: RubyStringEncoding
ISO_8859_4 :: RubyStringEncoding
ISO_8859_5 :: RubyStringEncoding
ISO_8859_6 :: RubyStringEncoding
ISO_8859_7 :: RubyStringEncoding
ISO_8859_8 :: RubyStringEncoding
ISO_8859_9 :: RubyStringEncoding
KOI8_R :: RubyStringEncoding
KOI8_U :: RubyStringEncoding
MacCentEuro :: RubyStringEncoding
MacCroatian :: RubyStringEncoding
MacCyrillic :: RubyStringEncoding
MacGreek :: RubyStringEncoding
MacIceland :: RubyStringEncoding
MacJapanese :: RubyStringEncoding
MacRoman :: RubyStringEncoding
MacRomania :: RubyStringEncoding
MacThai :: RubyStringEncoding
MacTurkish :: RubyStringEncoding
MacUkraine :: RubyStringEncoding
SJIS_DoCoMo :: RubyStringEncoding
SJIS_KDDI :: RubyStringEncoding
SJIS_SoftBank :: RubyStringEncoding
Shift_JIS :: RubyStringEncoding
Stateless_ISO_2022_JP :: RubyStringEncoding
Stateless_ISO_2022_JP_KDDI :: RubyStringEncoding
TIS_620 :: RubyStringEncoding
US_ASCII :: RubyStringEncoding
UTF8_DoCoMo :: RubyStringEncoding
UTF8_KDDI :: RubyStringEncoding
UTF8_MAC :: RubyStringEncoding
UTF8_SoftBank :: RubyStringEncoding
UTF_16 :: RubyStringEncoding
UTF_16BE :: RubyStringEncoding
UTF_16LE :: RubyStringEncoding
UTF_32 :: RubyStringEncoding
UTF_32BE :: RubyStringEncoding
UTF_32LE :: RubyStringEncoding
UTF_7 :: RubyStringEncoding
UTF_8 :: RubyStringEncoding
Windows_1250 :: RubyStringEncoding
Windows_1251 :: RubyStringEncoding
Windows_1252 :: RubyStringEncoding
Windows_1253 :: RubyStringEncoding
Windows_1254 :: RubyStringEncoding
Windows_1255 :: RubyStringEncoding
Windows_1256 :: RubyStringEncoding
Windows_1257 :: RubyStringEncoding
Windows_1258 :: RubyStringEncoding
Windows_31J :: RubyStringEncoding
Windows_874 :: RubyStringEncoding
UnsupportedEncoding :: RubyStringEncoding
instance GHC.Show.Show Data.Ruby.Marshal.Encoding.RubyStringEncoding
instance GHC.Classes.Ord Data.Ruby.Marshal.Encoding.RubyStringEncoding
instance GHC.Classes.Eq Data.Ruby.Marshal.Encoding.RubyStringEncoding
-- | Core RubyObject data representation.
module Data.Ruby.Marshal.RubyObject
-- | Representation of a Ruby object.
data RubyObject
-- | represents nil
RNil :: RubyObject
-- | represents true or false
RBool :: !Bool -> RubyObject
-- | represents a Fixnum
RFixnum :: {-# UNPACK #-} !Int -> RubyObject
-- | represents an Array
RArray :: !(Vector RubyObject) -> RubyObject
-- | represents an Hash
RHash :: !(Vector (RubyObject, RubyObject)) -> RubyObject
-- | represents an IVar
RIVar :: !(RubyObject, RubyStringEncoding) -> RubyObject
-- | represents a String
RString :: !ByteString -> RubyObject
-- | represents a Float
RFloat :: {-# UNPACK #-} !Float -> RubyObject
-- | represents a Symbol
RSymbol :: !ByteString -> RubyObject
-- | represents an invalid object
Unsupported :: RubyObject
-- | Transform plain Haskell values to RubyObjects and back.
class Rubyable a
-- | Takes a plain Haskell value and lifts into RubyObject
toRuby :: Rubyable a => a -> RubyObject
-- | Takes a RubyObject transforms it into a more general Haskell value.
fromRuby :: Rubyable a => RubyObject -> Maybe a
instance GHC.Show.Show Data.Ruby.Marshal.RubyObject.RubyObject
instance GHC.Classes.Ord Data.Ruby.Marshal.RubyObject.RubyObject
instance GHC.Classes.Eq Data.Ruby.Marshal.RubyObject.RubyObject
instance Data.Ruby.Marshal.RubyObject.Rubyable Data.Ruby.Marshal.RubyObject.RubyObject
instance Data.Ruby.Marshal.RubyObject.Rubyable ()
instance Data.Ruby.Marshal.RubyObject.Rubyable GHC.Types.Bool
instance Data.Ruby.Marshal.RubyObject.Rubyable GHC.Types.Int
instance Data.Ruby.Marshal.RubyObject.Rubyable a => Data.Ruby.Marshal.RubyObject.Rubyable (Data.Vector.Vector a)
instance (Data.Ruby.Marshal.RubyObject.Rubyable a, Data.Ruby.Marshal.RubyObject.Rubyable b) => Data.Ruby.Marshal.RubyObject.Rubyable (Data.Vector.Vector (a, b))
instance Data.Ruby.Marshal.RubyObject.Rubyable Data.ByteString.Internal.ByteString
instance Data.Ruby.Marshal.RubyObject.Rubyable GHC.Types.Float
instance Data.Ruby.Marshal.RubyObject.Rubyable (Data.ByteString.Internal.ByteString, Data.Ruby.Marshal.Encoding.RubyStringEncoding)
instance Data.Ruby.Marshal.RubyObject.Rubyable a => Data.Ruby.Marshal.RubyObject.Rubyable (GHC.Base.Maybe a)
instance Data.Ruby.Marshal.RubyObject.Rubyable a => Data.Ruby.Marshal.RubyObject.Rubyable [a]
instance (Data.Ruby.Marshal.RubyObject.Rubyable a, Data.Ruby.Marshal.RubyObject.Rubyable b) => Data.Ruby.Marshal.RubyObject.Rubyable [(a, b)]
instance (Data.Ruby.Marshal.RubyObject.Rubyable a, Data.Ruby.Marshal.RubyObject.Rubyable b, GHC.Classes.Ord a) => Data.Ruby.Marshal.RubyObject.Rubyable (Data.Map.Base.Map a b)
-- | Marshal monad provides an object cache over the Get monad.
module Data.Ruby.Marshal.Monad
-- | Marshal monad endows the underlying Get monad with State.
newtype Marshal a
Marshal :: StateT Cache Get a -> Marshal a
[runMarshal] :: Marshal a -> StateT Cache Get a
-- | Lift Get monad into Marshal monad.
liftMarshal :: Get a -> Marshal a
-- | State that we must carry around during deserialisation.
data Cache
Cache :: !(Vector RubyObject) -> !(Vector RubyObject) -> Cache
-- | object cache.
[objects] :: Cache -> !(Vector RubyObject)
-- | symbol cache.
[symbols] :: Cache -> !(Vector RubyObject)
-- | Constructs an empty cache to store symbols and objects.
emptyCache :: Cache
-- | Look up value in cache.
readCache :: Int -> (Cache -> Vector RubyObject) -> Marshal (Maybe RubyObject)
-- | Look up object in object cache.
readObject :: Int -> Marshal (Maybe RubyObject)
-- | Look up a symbol in symbol cache.
readSymbol :: Int -> Marshal (Maybe RubyObject)
-- | Write an object to the appropriate cache.
writeCache :: RubyObject -> Marshal ()
instance Control.Monad.State.Class.MonadState Data.Ruby.Marshal.Monad.Cache Data.Ruby.Marshal.Monad.Marshal
instance GHC.Base.Monad Data.Ruby.Marshal.Monad.Marshal
instance GHC.Base.Applicative Data.Ruby.Marshal.Monad.Marshal
instance GHC.Base.Functor Data.Ruby.Marshal.Monad.Marshal
instance GHC.Show.Show Data.Ruby.Marshal.Monad.Cache
-- | Common types for Ruby Marshal deserialisation.
module Data.Ruby.Marshal.Types
-- | Marshal monad endows the underlying Get monad with State.
data Marshal a
-- | State that we must carry around during deserialisation.
data Cache
-- | ADT representing all supported Ruby encodings.
data RubyStringEncoding
ASCII_8BIT :: RubyStringEncoding
Big5 :: RubyStringEncoding
Big5_HKSCS :: RubyStringEncoding
Big5_UAO :: RubyStringEncoding
CP50220 :: RubyStringEncoding
CP50221 :: RubyStringEncoding
CP51932 :: RubyStringEncoding
CP850 :: RubyStringEncoding
CP852 :: RubyStringEncoding
CP855 :: RubyStringEncoding
CP949 :: RubyStringEncoding
CP950 :: RubyStringEncoding
CP951 :: RubyStringEncoding
EUC_JP :: RubyStringEncoding
EUC_JP_2004 :: RubyStringEncoding
EUC_KR :: RubyStringEncoding
EUC_TW :: RubyStringEncoding
Emacs_Mule :: RubyStringEncoding
EucJP_ms :: RubyStringEncoding
GB12345 :: RubyStringEncoding
GB18030 :: RubyStringEncoding
GB1988 :: RubyStringEncoding
GB2312 :: RubyStringEncoding
GBK :: RubyStringEncoding
IBM437 :: RubyStringEncoding
IBM737 :: RubyStringEncoding
IBM775 :: RubyStringEncoding
IBM852 :: RubyStringEncoding
IBM855 :: RubyStringEncoding
IBM857 :: RubyStringEncoding
IBM860 :: RubyStringEncoding
IBM861 :: RubyStringEncoding
IBM862 :: RubyStringEncoding
IBM863 :: RubyStringEncoding
IBM864 :: RubyStringEncoding
IBM865 :: RubyStringEncoding
IBM866 :: RubyStringEncoding
IBM869 :: RubyStringEncoding
ISO_2022_JP :: RubyStringEncoding
ISO_2022_JP_2 :: RubyStringEncoding
ISO_2022_JP_KDDI :: RubyStringEncoding
ISO_8859_1 :: RubyStringEncoding
ISO_8859_10 :: RubyStringEncoding
ISO_8859_11 :: RubyStringEncoding
ISO_8859_13 :: RubyStringEncoding
ISO_8859_14 :: RubyStringEncoding
ISO_8859_15 :: RubyStringEncoding
ISO_8859_16 :: RubyStringEncoding
ISO_8859_2 :: RubyStringEncoding
ISO_8859_3 :: RubyStringEncoding
ISO_8859_4 :: RubyStringEncoding
ISO_8859_5 :: RubyStringEncoding
ISO_8859_6 :: RubyStringEncoding
ISO_8859_7 :: RubyStringEncoding
ISO_8859_8 :: RubyStringEncoding
ISO_8859_9 :: RubyStringEncoding
KOI8_R :: RubyStringEncoding
KOI8_U :: RubyStringEncoding
MacCentEuro :: RubyStringEncoding
MacCroatian :: RubyStringEncoding
MacCyrillic :: RubyStringEncoding
MacGreek :: RubyStringEncoding
MacIceland :: RubyStringEncoding
MacJapanese :: RubyStringEncoding
MacRoman :: RubyStringEncoding
MacRomania :: RubyStringEncoding
MacThai :: RubyStringEncoding
MacTurkish :: RubyStringEncoding
MacUkraine :: RubyStringEncoding
SJIS_DoCoMo :: RubyStringEncoding
SJIS_KDDI :: RubyStringEncoding
SJIS_SoftBank :: RubyStringEncoding
Shift_JIS :: RubyStringEncoding
Stateless_ISO_2022_JP :: RubyStringEncoding
Stateless_ISO_2022_JP_KDDI :: RubyStringEncoding
TIS_620 :: RubyStringEncoding
US_ASCII :: RubyStringEncoding
UTF8_DoCoMo :: RubyStringEncoding
UTF8_KDDI :: RubyStringEncoding
UTF8_MAC :: RubyStringEncoding
UTF8_SoftBank :: RubyStringEncoding
UTF_16 :: RubyStringEncoding
UTF_16BE :: RubyStringEncoding
UTF_16LE :: RubyStringEncoding
UTF_32 :: RubyStringEncoding
UTF_32BE :: RubyStringEncoding
UTF_32LE :: RubyStringEncoding
UTF_7 :: RubyStringEncoding
UTF_8 :: RubyStringEncoding
Windows_1250 :: RubyStringEncoding
Windows_1251 :: RubyStringEncoding
Windows_1252 :: RubyStringEncoding
Windows_1253 :: RubyStringEncoding
Windows_1254 :: RubyStringEncoding
Windows_1255 :: RubyStringEncoding
Windows_1256 :: RubyStringEncoding
Windows_1257 :: RubyStringEncoding
Windows_1258 :: RubyStringEncoding
Windows_31J :: RubyStringEncoding
Windows_874 :: RubyStringEncoding
UnsupportedEncoding :: RubyStringEncoding
-- | Representation of a Ruby object.
data RubyObject
-- | represents nil
RNil :: RubyObject
-- | represents true or false
RBool :: !Bool -> RubyObject
-- | represents a Fixnum
RFixnum :: {-# UNPACK #-} !Int -> RubyObject
-- | represents an Array
RArray :: !(Vector RubyObject) -> RubyObject
-- | represents an Hash
RHash :: !(Vector (RubyObject, RubyObject)) -> RubyObject
-- | represents an IVar
RIVar :: !(RubyObject, RubyStringEncoding) -> RubyObject
-- | represents a String
RString :: !ByteString -> RubyObject
-- | represents a Float
RFloat :: {-# UNPACK #-} !Float -> RubyObject
-- | represents a Symbol
RSymbol :: !ByteString -> RubyObject
-- | represents an invalid object
Unsupported :: RubyObject
-- | Character that represents NilCharlass.
-- | Character that represents FalseClass.
-- | Character that represents TrueClass.
-- | Character that represents Array.
-- | Character that represents Fixnum.
-- | Character that represents Float.
-- | Character that represents Hash.
-- | Character that represents IVar.
-- | Character that represents Object link.
-- | Character that represents String.
-- | Character that represents Symbol.
-- | Character that represents Symlink.
-- | Parsers for Ruby Marshal format.
module Data.Ruby.Marshal.Get
-- | Parses Marshal version.
getMarshalVersion :: Marshal (Word8, Word8)
-- | Parses a subset of Ruby objects.
getRubyObject :: Marshal RubyObject
-- | Simple interface to parse Ruby Marshal binary.
module Data.Ruby.Marshal
-- | Parses a subset of Ruby objects serialised with Marshal, Ruby's
-- built-in binary serialisation format.
decode :: ByteString -> Maybe RubyObject
-- | Parses a subset of Ruby objects serialised with Marshal, Ruby's
-- built-in binary serialisation format.
decodeEither :: ByteString -> Either String RubyObject
-- | Takes a RubyObject transforms it into a more general Haskell value.
fromRuby :: Rubyable a => RubyObject -> Maybe a
-- | Takes a plain Haskell value and lifts into RubyObject
toRuby :: Rubyable a => a -> RubyObject