|
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>'
--]]