Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/Actions1.lua.html -- http://anggtwu.net/LUA/Actions1.lua -- (find-angg "LUA/Actions1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- Based on: (find-angg "LUA/Verbatim1.lua") -- (find-angg "LUA/Verbatim3.lua") -- (defun a () (interactive) (find-angg "LUA/Actions1.lua")) -- «.Actions» (to "Actions") -- «.Actions-tests» (to "Actions-tests") -- _ _ _ -- / \ ___| |_(_) ___ _ __ ___ -- / _ \ / __| __| |/ _ \| '_ \/ __| -- / ___ \ (__| |_| | (_) | | | \__ \ -- /_/ \_\___|\__|_|\___/|_| |_|___/ -- -- «Actions» (to ".Actions") Actions = Class { type = "Actions", from = function (oo) return Actions {oo=oo} end, __tostring = function (a) return mytostring(a) end, __index = { act1 = function (a, action, ...) local _action = "_"..action if not a.oo[_action] then error("Unrecognized action: "..action) end a.oo[_action](a.oo,...) return a.oo end, act = function (a, str) for _,actionarg in ipairs(split(str)) do local action,arg = actionarg:match("^([^:]+):?(.*)$") if arg then a:act1(action, arg) else a:act1(action) end end return a.oo end, }, } Foo = Class { type = "Foo", __tostring = function (foo) return mytostring(foo) end, __index = { act1 = function (foo, ...) return Actions.from(foo):act1(...) end, act = function (foo, ...) return Actions.from(foo):act (...) end, _p = function (foo) foo.o = "("..foo.o..")" end, _pl = function (foo,str) foo.o = "("..str..":"..foo.o..")" end, _format = function (foo,fmt) foo.o = format(fmt, foo.o) end, }, } -- «Actions-tests» (to ".Actions-tests") --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Actions1.lua" foo = Foo {o="a"} foo:_p() foo:_pl("a") = foo.o foo = Foo {o="a"} = foo = foo:act1("p") = Actions.from(foo) = Actions.from(foo):act1("p") = Actions.from(foo):act1("p") = Actions.from(foo):act1("format", "[%s]") = Actions.from(foo):act ("p p") = Actions.from(foo):act ("pl:foo") = Actions.from(foo):act ("aninvalidaction") foo = Foo {o="a"} = foo = foo:act("p pl:a format:[%s]") --]] -- Local Variables: -- coding: utf-8-unix -- End: