+linesnum button, insert pname and fixed [ ] mess

master
AiTechEye 2019-01-04 17:02:12 +01:00 committed by GitHub
parent e50bb339e3
commit 0e2b22be7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 91 additions and 10 deletions

View File

@ -5,8 +5,9 @@ was.register_function=function(name,t)
was.privs[name]=t.privs
end
was.register_symbol=function(symbol,f)
was.register_symbol=function(symbol,f,info)
was.symbols[symbol]=f
was.info[symbol]=info
end
was.chr=function(t)
@ -40,9 +41,12 @@ was.compiler=function(input_text,user)
input_text=input_text .."\n"
input_text=input_text:gsub("%(","{")
input_text=input_text:gsub("%)","}")
input_text=input_text:gsub("%[","")
input_text=input_text:gsub("%]","")
for i=1,was.symbols_characters:len(),1 do
input_text=input_text:gsub("%" ..was.symbols_characters:sub(i,i)," " .. was.symbols_characters:sub(i,i) .." ")
local c=was.symbols_characters:sub(i,i)
input_text=input_text:gsub("%" ..c," " .. c .." ")
end
local c

View File

@ -11,7 +11,8 @@ was={
[">="]=function() end,
["<="]=function() end,
},
symbols_characters="#@=?!&()[]{}%*+-/$<>|~^",
symbols_characters="#@=?!&(){}%*+-/$<>|~^",
unallowed_characters="[]",
}
dofile(minetest.get_modpath("was") .. "/api.lua")
@ -26,12 +27,47 @@ minetest.register_chatcommand("was", {
end,
})
was.gui_addnumbers=function(text)
text=text.."\n"
local t=""
for i,v in ipairs(text.split(text,"\n")) do
t=t ..i.." " ..v .."\n"
end
return t
end
was.gui_delnumbers=function(text)
local t=""
for i,v in ipairs(text.split(text,"\n")) do
local n,nn
for ii=1,v:len(),1 do
local s=string.sub(v,ii,ii)
if not n and was.num(s)==false then
n=true
end
if n and (nn or s~=" ") then
t=t..s
nn=true
elseif n and not nn then
nn=true
end
end
t=t.."\n"
end
return t
end
was.gui=function(name,msg)
was.user[name]=was.user[name] or {text="",funcs={}}
was.user[name]=was.user[name] or {text="",funcs={},inserttext="true",lines="off"}
local text=was.user[name].text or ""
local funcs=""
for f,v in pairs(was.symbols) do
funcs=funcs .. f ..","
table.insert(was.user[name].funcs,f)
end
for f,v in pairs(was.functions) do
if minetest.check_player_privs(name,was.privs[f]) then
funcs=funcs .. f ..","
@ -46,7 +82,8 @@ was.gui=function(name,msg)
.."label[0,0.6;".. minetest.colorize("#00FF00",(msg or "")) .."]"
.."button[0,-0.2;1.3,1;run;Run]"
.."button[1,-0.2;1.3,1;save;Save]"
.."button[2,-0.2;1.5,1;lines;Lines " ..was.user[name].lines.."]"
.."checkbox[16.6,-0.2;inserttext;Insert text;".. was.user[name].inserttext.."]"
minetest.after(0.1, function(gui,name)
return minetest.show_formspec(name, "was.gui",gui)
@ -60,24 +97,61 @@ minetest.register_on_player_receive_fields(function(user, form, pressed)
if (pressed.quit and not pressed.key_enter) or not was.user[name] then
return
end
local funcs=was.user[name].funcs
was.user[name].funcs={}
was.user[name].text=pressed.text
if was.user[name].text:find("%[") or was.user[name].text:find("%]") then
was.user[name].text=was.user[name].text:gsub("%[","")
was.user[name].text=was.user[name].text:gsub("%]","")
minetest.close_formspec(name,form)
was.gui(name,"Unallowed characters removed")
return
end
if pressed.lines then
if was.user[name].lines=="on" then
was.user[name].text=was.gui_delnumbers(was.user[name].text)
was.user[name].lines="off"
else
was.user[name].text=was.gui_addnumbers(was.user[name].text)
was.user[name].lines="on"
end
was.gui(name)
elseif was.user[name].lines=="on" then
was.user[name].text=was.gui_delnumbers(was.user[name].text)
was.user[name].lines="off"
end
if pressed.inserttext then
was.user[name].inserttext=pressed.inserttext
end
if pressed.list and pressed.list~="IMV" then
local n=pressed.list:gsub("CHG:","")
local f=funcs[tonumber(n)]
local info=was.info[f] or ""
if was.privs[f] then
info=info .. "| Privs: " ..minetest.privs_to_string(was.privs[f])
end
if was.user[name].inserttext=="true" and f then
was.user[name].text=was.user[name].text .. f ..(was.functions[f] and "()" or "")
end
minetest.close_formspec(name,form)
was.gui(name,info)
elseif pressed.save then
elseif pressed.run then
local msg=was.compiler(pressed.text,name)
if msg then
was.user[name].text=was.gui_addnumbers(was.user[name].text)
was.user[name].lines="on"
end
was.gui(name,msg)
end
end

View File

@ -1,6 +1,9 @@
was.register_symbol("?",function(data,variables,user)
return user
end)
was.register_symbol("?",
function(data,variables,user)
return user
end,
"return username"
)
was.register_function("print",{
privs={server=true},