-- 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.2.0 -- | 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 -- | 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 -- | Read a Word8 from the monad state getWord8 :: Get Word8 -- | Read a Word16 in little endian format getWord16le :: Get Word16 -- | Read a Word24 in little endian format. Since Word24 unavailable in -- Data.Int we use Word32. getWord24le :: Get Word32 -- | Read a Word32 in little endian format getWord32le :: Get Word32 -- | 8-bit unsigned integer type data Word8 -- | 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.Maybe.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.Internal.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.Applicative Data.Ruby.Marshal.Monad.Marshal instance GHC.Base.Functor Data.Ruby.Marshal.Monad.Marshal instance GHC.Show.Show Data.Ruby.Marshal.Monad.Cache instance GHC.Base.Monad Data.Ruby.Marshal.Monad.Marshal instance Control.Monad.Fail.MonadFail Data.Ruby.Marshal.Monad.Marshal -- | 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. pattern NilChar :: (Eq a, Num a) => a -- | Character that represents FalseClass. pattern FalseChar :: (Eq a, Num a) => a -- | Character that represents TrueClass. pattern TrueChar :: (Eq a, Num a) => a -- | Character that represents Array. pattern ArrayChar :: (Eq a, Num a) => a -- | Character that represents Fixnum. pattern FixnumChar :: (Eq a, Num a) => a -- | Character that represents Float. pattern FloatChar :: (Eq a, Num a) => a -- | Character that represents Hash. pattern HashChar :: (Eq a, Num a) => a -- | Character that represents IVar. pattern IVarChar :: (Eq a, Num a) => a -- | Character that represents Object link. pattern ObjectLinkChar :: (Eq a, Num a) => a -- | Character that represents String. pattern StringChar :: (Eq a, Num a) => a -- | Character that represents Symbol. pattern SymbolChar :: (Eq a, Num a) => a -- | Character that represents Symlink. pattern SymlinkChar :: (Eq a, Num a) => a -- | 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