Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/Verbatim4.lua.html -- http://anggtwu.net/LUA/Verbatim4.lua -- (find-angg "LUA/Verbatim4.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/Verbatim4.lua")) -- (defun o () (interactive) (find-angg "LUA/Verbatim3.lua")) -- (defun a () (interactive) (find-angg "LUA/Actions1.lua")) -- «.Verbatim» (to "Verbatim") -- «.Verbatim-tests» (to "Verbatim-tests") require "Actions1" -- (find-angg "LUA/Actions1.lua") require "Co1" -- (find-angg "LUA/Co1.lua" "Co-tests") require "Show2" -- (find-angg "LUA/Show2.lua") -- __ __ _ _ _ -- \ \ / /__ _ __| |__ __ _| |_(_)_ __ ___ -- \ \ / / _ \ '__| '_ \ / _` | __| | '_ ` _ \ -- \ V / __/ | | |_) | (_| | |_| | | | | | | -- \_/ \___|_| |_.__/ \__,_|\__|_|_| |_| |_| -- -- «Verbatim» (to ".Verbatim") Verbatim = Class { type = "Verbatim", from = function (o) return Verbatim {o = o} end, __tostring = function (vb) if type(vb.o) == "string" then return vb.o end return mytostringv(vb.o) end, __index = { act1 = function (vb,...) return Actions.from(vb):act1(...) end, act = function (vb,...) return Actions.from(vb):act (...) end, -- -- (find-angg "LUA/Co1.lua" "poor-mans-code") -- vb:e(str) expands some (non-utf8) characters in str. co = Co.new("#$", " %&\\^_{}~"):add("\n", "\\\\\n"), e = function (vb, s) return vb.co:translate(s) end, -- -- Some functions that are not methods, used by map -- (find-LATEX "edrx21.sty" "defvbt" "vbtbgbox") __e = function (s) return Verbatim({}):e(s) end, __v = function (s) return format("\\vbox{%%\n%s%%\n}", s) end, __h1 = function (s) return format("\\vbthbox{%s}", s) end, __bg = function (s) return format("\\vbtbgbox{%s}", s) end, -- -- Actions with arguments _fmt = function (vb,fmt,...) vb.o = format(fmt,...) end, _def = function (vb,name) vb:_fmt("\\def\\%s{%s}", name, vb.o) end, _defvbt = function (vb,name) vb:_fmt("\\defvbt{%s}{%s}", name, vb.o) end, _sa = function (vb,name) vb:_fmt("\\sa{%s}{%s}", name, vb.o) end, -- -- Simple actions prefix = " ", _e = function (vb) vb.o = map(vb.__e, vb.o) end, _h = function (vb) vb.o = map(vb.__h1, vb.o) end, _v = function (vb) vb.o = vb.__v (vb.o) end, _bg = function (vb) vb.o = vb.__bg(vb.o) end, _c = function (vb) vb.o = table.concat(vb.o, "%\n"..vb.prefix) end, _p = function (vb) vb.o = vb.prefix..vb.o end, _o = function (vb) output(vb.o) end, _P = function (vb) print(vb) end, -- -- Other methods (for "users") copy = function (vb) return deepcopy(vb) end, sa = function (vb, name) return vb:act1("sa", name) end, defvbt0 = function (vb, name) return vb:act1("defvbt", name) end, defvbt = function (vb, name) return vb:act("e h c p v bg"):defvbt0(name) end, }, } -- «Verbatim-tests» (to ".Verbatim-tests") --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Verbatim4.lua" output = print = Verbatim.__index.co = Verbatim({}):e "Hello #$\n%&\\^_{}~!!!\n Hey hey" Verbatim.from({"a", "bb", "ccc"}):act("P") Verbatim.from({"a", "bb", "ccc"}):act("c P") Verbatim.from({"a", "bb", "ccc"}):act("e h c P") Verbatim.from({"a", "bb", "ccc"}):act("e h c p P") Verbatim.from({"a", "bb", "ccc"}):act("e h c v P") Verbatim.from({"a", "bb", "ccc"}):act("e h c p v P") Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg P") Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg def:foo P") Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg defvbt:foo P") = Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg") = Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg"):sa("[a b c] box") = Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg defvbt:foo") = Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg"):defvbt0("foo") = Verbatim.from({"a", "bb", "ccc"}):act("e h c p v bg"):defvbt0("foo bar") = Verbatim.from({"a", "bb", "ccc"}):defvbt("foo bar") Verbatim.from({"a", "bb", "ccc"}):defvbt("foo bar"):act("o") --]==] -- Local Variables: -- coding: utf-8-unix -- End: