knob-0.2.2: Memory-backed handles
Copyright2011 John Millikin
LicenseMIT
Maintainern@monade.li
PortabilityGHC only
Safe HaskellSafe-Inferred
LanguageHaskell2010

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

Documentation

data Knob Source #

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.

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 

data Device Source #

An IO device backed by a Knob. You shouldn't usually use this type directly; use newFileHandle or withFileHandle instead.