knob-0.1.1: Memory-backed handles

Copyright | 2011 John Millikin
License | MIT
Maintainer | jmillikin@gmail.com
Portability | GHC only
Safe Haskell | None
Language | Haskell98

Data.Knob

Description

Create memory‐backed `Handle`s, referencing virtual files. This is mostly useful for testing `Handle`‐based APIs without having to interact with the filesystem.

    import Data.ByteString (pack)
    import Data.Knob
    import System.IO

    main = do
        knob <- newKnob (pack [])
        h <- newFileHandle knob "test.txt" WriteMode
        hPutStrLn h "Hello world!"
        hClose h
        bytes <- Data.Knob.getContents knob
        putStrLn ("Wrote bytes: " ++ show bytes)

Synopsis

- data Knob
- newKnob :: MonadIO m => ByteString -> m Knob
- getContents :: MonadIO m => Knob -> m ByteString
- setContents :: MonadIO m => Knob -> ByteString -> m ()
- newFileHandle :: MonadIO m => Knob -> String -> IOMode -> m Handle
- withFileHandle :: MonadIO m => Knob -> String -> IOMode -> (Handle -> IO a) -> m a

# Documentation

data Knob Source

A knob is a basic virtual file, which contains a byte buffer. A knob can have multiple `Handle`s open to it, each of which behaves like a standard file handle.

Use `getContents` and `setContents` to inspect and modify the knob’s byte buffer.

newKnob :: MonadIO m => ByteString -> m Knob Source

getContents :: MonadIO m => Knob -> m ByteString Source

setContents :: MonadIO m => Knob -> ByteString -> m () Source

newFileHandle Source

Arguments

:: MonadIO m |
=> Knob |
-> String | Filename shown in error messages
-> IOMode |
-> m Handle |

Create a new `Handle` pointing to a `Knob`. This handle behaves like a file-backed handle for most purposes.

withFileHandle Source

Arguments

:: MonadIO m |
=> Knob |
-> String | Filename shown in error messages.
-> IOMode |
-> (Handle -> IO a) |
-> m a |

See `newFileHandle`.