| Copyright | 2011 John Millikin |
|---|---|
| License | MIT |
| Maintainer | n@monade.li |
| Portability | GHC only |
| Safe Haskell | Safe-Inferred |
| Language | Haskell2010 |
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
- data Device
- newDevice :: MonadIO m => Knob -> IOMode -> m Device
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 | |
| -> (Handle -> IO a) | |
| -> m a |
See newFileHandle.
An IO device backed by a Knob. You shouldn't usually use this type directly;
use newFileHandle or withFileHandle instead.