Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
-- This file: -- http://anggtwu.net/LUA/LoadString1.lua.html -- http://anggtwu.net/LUA/LoadString1.lua -- (find-angg "LUA/LoadString1.lua") -- Author: Eduardo Ochs <eduardoochs@gmail.com> -- -- (defun e () (interactive) (find-angg "LUA/LoadString1.lua")) -- See: (find-es "lua5" "loadstring_and_eof") -- (find-es "lua5" "loadstring") -- (find-angggrep "grep --color=auto -nH --null -e '<eof>' LUA/*.lua") -- (find-angg "LUA/Repl3.lua" "MultiLineCmd") LoadString = Class { type = "LoadString", __index = { concat0 = function (ls) return table.concat(ls, "\n") end, concat1 = function (ls) return (ls:concat0():gsub("^=", "return ")) end, concat2 = function (ls) return (ls:concat0():gsub("^=(.*)$", "print(%1\n )")) end, incomplete = function (ls) ls.f1,ls.status1 = loadstring(ls:concat1(), ls.chunkname) return ls.status1 and ls.status1:match("'<eof>'$") and ls.status1 end, loadstring = function (ls) ls.f2,ls.status2 = loadstring(ls:concat1(), ls.chunkname) return ls.f2,ls.status2 end, }, } --[[ * (eepitch-lua51) * (eepitch-kill) * (eepitch-lua51) dofile "LoadString1.lua" o = LoadString {"=2+", " 3"} = o:concat0() = o:concat1() = o:concat2() = o:incomplete() o = LoadString {"=2+", " 3+"} = o:concat0() = o:concat1() = o:concat2() = o:incomplete() o = LoadString {"=2+", " 3+", chunkname="FOO"} = o:concat0() = o:concat1() = o:concat2() = o:incomplete() o = LoadString {"=2+", " 3"} = assert(o:loadstring())() --> 5 o = LoadString {"=2+", " 3+"} = assert(o:loadstring())() --> unexpected symbol near '<eof>' --]]