Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/CoroRepl1.lua.html -- http://anggtwu.net/LUA/CoroRepl1.lua -- (find-angg "LUA/CoroRepl1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/CoroRepl1.lua")) -- (find-es "lua5" "cow-and-coy") -- -- «.CoroRepl» (to "CoroRepl") sprint = function (...) local args = pack(...) return mapconcat(tostring, args, "\t", args.n).."\n" end -- «CoroRepl» (to ".CoroRepl") CoroRepl = Class { type = "CoroRepl", __index = { write_ = function (c,s) io.write(s) end, print_ = function (c,...) print(...) end, read_ = function (c) return io.read() end, -- dumps = function (c) local f = mytostring local d = format("[i=%s o=%s p=%s]", f(c.i), f(c.o), f(c.p)) return (d:gsub("\\\n", "|")) end, dumpw = function (c) io.write(c:dumps().." ") end, clr = function (c) c.i,c.o,c.p = nil,nil,nil end, dumpwc = function (c) c:dumpw(); c:clr() end, iop = function (c) return {i=c.i, o=c.o, p=c.p} end, -- writep = function (c,p) c:write_(p) end, writeo = function (c,o) c.o = (c.o or "")..o; c:write_(o) end, printo = function (c,...) c:writeo(sprint(...)) end, read0 = function (c,p) c:writep(p); return c:read_() end, read1 = function (c) return c:read0("c> ") end, read2 = function (c) return c:read0("c>> ") end, -- repl = function (c) while true do local a,b = c:read1(), c:read2() c:printo("Rec: "..bitrim(a)..","..bitrim(b)) if b:match "stop" then break end end end, }, } c0 = CoroRepl {} c1 = CoroRepl { read0 = function (c,p) c:writep(p) c.p = p c:dumpwc() c.i = io.read() return c.i end, } c1 = CoroRepl { read0 = function (c,p) -- c:writep(p) c.p = p local i = coy(c:iop()) c:clr() c.i = i return c.i end, } --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "CoroRepl1.lua" c = c0 c = c1 c:repl() foo bar plic ploc qux stop -- (find-es "lua5" "cow-and-coy") f = cow(foo) = type(f) = f("foo") = f("bar") = f("plic") = f("ploc") f1 = print = cow(foo) for s in cow(foo) do print(s) end --]] -- Local Variables: -- coding: utf-8-unix -- End: