ruby-marshal-0.2.0: Parse a subset of Ruby objects serialised with Marshal.dump.
Copyright(c) Philip Cunningham 2015
LicenseMIT
Maintainerhello@filib.io
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Data.Ruby.Marshal.Monad

Description

Marshal monad provides an object cache over the Get monad.

Synopsis

Documentation

newtype Marshal a Source #

Marshal monad endows the underlying Get monad with State.

Constructors

Marshal 

Fields

Instances

Instances details
Monad Marshal Source # 
Instance details

Defined in Data.Ruby.Marshal.Monad

Methods

(>>=) :: Marshal a -> (a -> Marshal b) -> Marshal b #

(>>) :: Marshal a -> Marshal b -> Marshal b #

return :: a -> Marshal a #

Functor Marshal Source # 
Instance details

Defined in Data.Ruby.Marshal.Monad

Methods

fmap :: (a -> b) -> Marshal a -> Marshal b #

(<$) :: a -> Marshal b -> Marshal a #

MonadFail Marshal Source # 
Instance details

Defined in Data.Ruby.Marshal.Monad

Methods

fail :: String -> Marshal a #

Applicative Marshal Source # 
Instance details

Defined in Data.Ruby.Marshal.Monad

Methods

pure :: a -> Marshal a #

(<*>) :: Marshal (a -> b) -> Marshal a -> Marshal b #

liftA2 :: (a -> b -> c) -> Marshal a -> Marshal b -> Marshal c #

(*>) :: Marshal a -> Marshal b -> Marshal b #

(<*) :: Marshal a -> Marshal b -> Marshal a #

MonadState Cache Marshal Source # 
Instance details

Defined in Data.Ruby.Marshal.Monad

Methods

get :: Marshal Cache #

put :: Cache -> Marshal () #

state :: (Cache -> (a, Cache)) -> Marshal a #

liftMarshal :: Get a -> Marshal a Source #

Lift Get monad into Marshal monad.

data Cache Source #

State that we must carry around during deserialisation.

Constructors

Cache 

Fields

Instances

Instances details
Show Cache Source # 
Instance details

Defined in Data.Ruby.Marshal.Monad

Methods

showsPrec :: Int -> Cache -> ShowS #

show :: Cache -> String #

showList :: [Cache] -> ShowS #

MonadState Cache Marshal Source # 
Instance details

Defined in Data.Ruby.Marshal.Monad

Methods

get :: Marshal Cache #

put :: Cache -> Marshal () #

state :: (Cache -> (a, Cache)) -> Marshal a #

emptyCache :: Cache Source #

Constructs an empty cache to store symbols and objects.

readCache :: Int -> (Cache -> Vector RubyObject) -> Marshal (Maybe RubyObject) Source #

Look up value in cache.

readObject :: Int -> Marshal (Maybe RubyObject) Source #

Look up object in object cache.

readSymbol :: Int -> Marshal (Maybe RubyObject) Source #

Look up a symbol in symbol cache.

writeCache :: RubyObject -> Marshal () Source #

Write an object to the appropriate cache.