Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/GetOpt1.lua.html -- http://anggtwu.net/LUA/GetOpt1.lua -- (find-angg "LUA/GetOpt1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/GetOpt1.lua")) -- «.GetOpt» (to "GetOpt") -- «.GetOpt-tests» (to "GetOpt-tests") -- «GetOpt» (to ".GetOpt") GetOpt = Class { type = "GetOpt", __tostring = function (g) return g:tostring() end, __index = { tostring = function (g) return mapconcat(mytostring, g.args, " ") end, tostring = function (g) return table.concat(g.args, " ") end, setargs = function (g,...) g.args = HTable(pack(...)); return g end, unpack = function (g) return myunpack(g.args) end, select = function (g,n) return select(n, g:unpack()) end, drop = function (g,n) return g:setargs(g:select(n+1)) end, run = function (g,...) g:setargs(...):run1() end, run1 = function (g) if g.args[1] then g:rest(0) else g:noargs() end end, noargs = function (g) end, nomoreargs = function (g) end, otherargs = function (g) print("Unprocessed: "..g:tostring()); error() end, rest = function (g,n) g:drop(n) local head = g.args[1] if not head then return g:nomoreargs() end if g[head] then return g[head](g, g:select(2)) end return g:otherargs() end, }, } -- «GetOpt-tests» (to ".GetOpt-tests") --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "GetOpt1.lua" mygetopt = GetOpt { ["-one"] = function (g,a) PP("-one:", a); g:rest(2) end, ["-two"] = function (g,a,b) PP("-two:", a,b); g:rest(3) end, } = mygetopt:setargs("-one", "bla", "-two", "foo", "bar") = mygetopt = mygetopt:drop(2) = mygetopt:drop(3) = mygetopt:run("-one", "bla", "-two", "foo", "bar") = mygetopt:run("-one", "bla", "-two", "foo", "bar", "???", "blop") = mygetopt:rest(0) = mygetopt = mygetopt = mygetopt:drop(0) = mygetopt ;; (find-pil3page (+ 19 77) "8.4 Errors") args = HTable(pack("-one", "bla", "-two", "foo", "bar")), --]] -- Local Variables: -- coding: utf-8-unix -- End: