parseManager/test.lua
Ryan Ward ac7118092a What have I undertook
added stuff, fixed more bugs, more documentation, more pain and suffering

This is taking too long, but ill push through hahahahahahahahha
2019-01-26 19:45:50 -05:00

79 lines
1.8 KiB
Lua

package.path="?/init.lua;lua/?/init.lua;lua/?.lua;"..package.path
local bin = require("bin")
local multi = require("multi")
require("parseManager")
require("bit")
test=parseManager:load("test.dms")
print(test:dump())
--Code would happen here anyway
local runner = function(block,t)
if not t then return nil end
if t.Type=="text" then
io.write(t.text)
io.read()
t=self:next()
elseif t.Type=="condition" then
t=self:next()
elseif t.Type=="assignment" then
t=self:next()
elseif t.Type=="label" then
t=self:next()
elseif t.Type=="method" then
t=self:next()
elseif t.Type=="choice" then
print(t.text)
for i=1,#t.choices do
print(i..". "..t.choices[i])
end
io.write("Choose#: ")
cm=tonumber(io.read())
t=self:next(nil,cm,nil,t)
elseif t.Type=="end" then
if t.text=="leaking" then -- go directly to the block right under the current block if it exists
t=self:next()
else
os.exit()
end
elseif t.Type=="error" then
error(t.text)
else
t=self:next()
end
return t
end
test.mainRunner = runner
test.active = false
multi:newThread("Parse Manager Main State",function()
local dat = self:mainRunner(nil,self:next())
while dat do
thread.skip()
dat = self:mainRunner(nil,dat)
end
end)
function test:run()
multi:mainloop()
end
test:define{
sleep = function(self,n)
thread.sleep(n)
end,
newLightThread = function(self,block)
local state = parseManager:load(self.currentChunk.path)
state.mainENV = self.mainENV
state.mainRunner = runner
multi:newThread("Parse Manager State",function()
local dat = state:mainRunner(nil,state:next())
while dat do
thread.skip()
dat = state:mainRunner(nil,dat)
end
end)
end
}
--End of injecting
--~ test:run()
multi:newThread("",function()
print("Threading works")
end)
multi:mainloop()