Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/Verbatim2.lua.html -- http://anggtwu.net/LUA/Verbatim2.lua -- (find-angg "LUA/Verbatim2.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/Verbatim2.lua")) -- (defun o () (interactive) (find-angg "LUA/Verbatim1.lua")) -- -- Superseded by: (find-angg "LUA/Verbatim3.lua") -- Supersedes: (find-angg "LUA/Verbatim1.lua") -- (find-LATEX "2021verbatim.lua") -- (find-dednat6 "myverbatim.lua") -- Used by: (find-LATEXgrep "grep --color=auto -nH --null -e '^%V ' *.tex") -- (c2m212isp 5 "set-compr-traducao") -- (c2m212isa "set-compr-traducao") -- See: (find-LATEX "edrx21.sty" "defvbt") -- «.Verbatim» (to "Verbatim") -- «.Verbatim-tests» (to "Verbatim-tests") -- «.vbt-head» (to "vbt-head") -- «.defvbt» (to "defvbt") -- «.vbt-head-tests» (to "vbt-head-tests") -- «.show2» (to "show2") require "Show2" -- (find-angg "LUA/Show2.lua") require "Co1" -- (find-angg "LUA/Co1.lua" "Co-tests") -- __ __ _ _ _ -- \ \ / /__ _ __| |__ __ _| |_(_)_ __ ___ -- \ \ / / _ \ '__| '_ \ / _` | __| | '_ ` _ \ -- \ 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 = { -- -- See: (find-angg "LUA/Co1.lua" "Co-tests") -- 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 f = { 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, }, -- prefix = " ", actions = { h = function (vb) vb.o = map(vb.f.h1, 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, e = function (vb) vb.o = map(vb.f.e, vb.o) end, v = function (vb) vb.o = vb.f.v (vb.o) end, bg = function (vb) vb.o = vb.f.bg(vb.o) end, o = function (vb) output(vb.o) end, P = function (vb) print(vb) end, def = function (vb, name) vb.o = format("\\def\\%s{%s}", name, vb.o) end, defvbt = function (vb, name) vb.o = format("\\defvbt{%s}{%s}", name, vb.o) end, }, act = function (vb, str) for _,actionarg in ipairs(split(str)) do local action,arg = actionarg:match("^([^:]+):?(.*)$") if not vb.actions[action] then error("Unrecognized action: "..action) end vb.actions[action](vb, arg) end return vb end, sa = function (vb, name) vb.o = format("\\sa{%s}{%s}", name, vb.o) return vb end, defvbt = function (vb, name) return vb:act("e h c p v bg defvbt:"..name) end, }, } -- «Verbatim-tests» (to ".Verbatim-tests") -- See: (find-LATEX "edrx21.sty" "defvbt") --[==[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Verbatim2.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"}):defvbt("foo"):act("o") --]==] -- «vbt-head» (to ".vbt-head") -- (find-LATEX "2021fitch.lua" "fitch-head") registerhead = registerhead or function () return nop end registerhead "%V" { name = "vbt", action = function () local i,j,origlines = tf:getblock() vbt_lines = origlines end, } -- «defvbt» (to ".defvbt") defvbt = function (name) Verbatim.from(vbt_lines):defvbt(name):act("o") end -- «show2» (to ".show2") -- (find-angg "LUA/Show2.lua" "dednat6") -- (find-angg "LUA/Show2.lua" "dednat6" "Verbatim2") -- «vbt-head-tests» (to ".vbt-head-tests") --[==[ ** (find-angg "LUA/Show2.lua" "texbody") ** (find-code-show2 "~/LATEX/Show2.tex") * (code-show2 "~/LATEX/Show2.tex") * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "Verbatim2.lua" usepackages.edrx21 = true dednat6["0"] = true dednat6.Verbatim2 = true = outertexbody defs = [=[ %V foo %V bar %L defvbt "foobar" \pu ]=] test = [[ a:\vbt{foobar}:b ]] = test:show() = Show.log = Show.bigstr * (etv) --]==] -- Local Variables: -- coding: utf-8-unix -- End: