[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Redirecting output to non-files?
- From: Javier Guerra <javier@...>
- Date: Thu, 1 Dec 2005 18:15:46 -0500
On Thursday 01 December 2005 6:03 pm, Jens Alfke wrote:
> It looks as though Lua's io package is hardwired to use the ANSI
> stdio library. The reference manual says "a file handle is a
> userdata containing the file stream (FILE*)..." [5.6] There doesn't
> seem to be a way to 'subclass' file handles the way I could e.g.
> subclass java.io.OutputStream.
> What I want to do is redirect Lua output to my own function, so that
> calls to print(), io.write(), io.output():write(), etc. all call my
> function so it can collect the output and do something with it.
> (Apologies if I'm missing something obvious; I've used a lot of
> languages but I'm a newbie at Lua.)
it's not obvious if you're used to other languages, but in Lua you can just
redefine any function; in other words, the io package is just a table with
functions, and, like any table, can be modified:
io.write = mywritefunc
function io.write (...)
-- your writing code
also, you could modify a file's metatable to change it's behavior:
getmetatable (io.output()).write = mywritefunc
Description: PGP signature