| Copyright | 2011 John Millikin |
|---|---|
| License | MIT |
| Maintainer | jmillikin@gmail.com |
| Portability | GHC only |
| Safe Haskell | None |
| Language | Haskell98 |
Data.Knob
Description
Create memory‐backed Handles, 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
A knob is a basic virtual file, which contains a byte buffer. A knob can
have multiple Handles 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.
getContents :: MonadIO m => Knob -> m ByteString Source #
setContents :: MonadIO m => Knob -> ByteString -> m () 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.
Arguments
| :: MonadIO m | |
| => Knob | |
| -> String | Filename shown in error messages. |
| -> IOMode | |
| -> (Handle -> IO a) | |
| -> m a |
See newFileHandle.