have a basic form of processes working! see demo.lua for an example
This commit is contained in:
parent
44e40d96e6
commit
4eb12d77c9
@ -12,4 +12,6 @@ dofile (localdir .. "/orgs/orgs.lua")
|
||||
dofile (localdir .. "/interactions/interactions.lua")
|
||||
|
||||
-- messaging functions
|
||||
dofile (localdir .. "/processes/processes.lua")
|
||||
dofile (localdir .. "/processes/processes.lua")
|
||||
|
||||
dofile (localdir .. "/modules/dictator.lua")
|
33
modpol/demo.lua
Normal file
33
modpol/demo.lua
Normal file
@ -0,0 +1,33 @@
|
||||
test_org = modpol.instance:add_org('test')
|
||||
|
||||
req_id = test_org:make_request({
|
||||
type = 'add_member',
|
||||
user = 'luke',
|
||||
params = {'luke'}
|
||||
})
|
||||
|
||||
process = dictator.init(test_org.id, req_id)
|
||||
process:decide(true)
|
||||
|
||||
req_id = test_org:make_request({
|
||||
type = 'delete',
|
||||
user = 'luke',
|
||||
params = {}
|
||||
})
|
||||
|
||||
process = dictator.init(test_org.id, req_id)
|
||||
process:decide(true)
|
||||
|
||||
-- test_org:add_member('luke')
|
||||
-- test_org:add_member('nathan')
|
||||
-- test_org:add_member('bruh')
|
||||
-- print(test_org:list_member())
|
||||
-- test_org:remove_member('nathan')
|
||||
-- print('================')
|
||||
-- print(test_org:list_member())
|
||||
-- test_org:add_member('testing')
|
||||
-- test_org:add_member('test 2')
|
||||
-- print('==================')
|
||||
-- print(test_org:list_member())
|
||||
-- print(modpol.orgs.list_all())
|
||||
-- test_org:delete()
|
@ -86,3 +86,5 @@ modpol.ocutil.log ("modpol loaded")
|
||||
|
||||
-- ===================================================================
|
||||
-- End of file.
|
||||
|
||||
dofile(topdir .. '/demo.lua')
|
39
modpol/modules/dictator.lua
Normal file
39
modpol/modules/dictator.lua
Normal file
@ -0,0 +1,39 @@
|
||||
dictator = {}
|
||||
dictator.__index = dictator
|
||||
|
||||
function dictator.init(org_id, request_id)
|
||||
local object = {
|
||||
request_id = request_id,
|
||||
org_id = org_id,
|
||||
resolved = false
|
||||
}
|
||||
|
||||
setmetatable(object, dictator)
|
||||
|
||||
return object
|
||||
|
||||
end
|
||||
|
||||
function dictator:decide(ruling)
|
||||
local org = modpol.orgs.get_org(self.org_id)
|
||||
print(org.name)
|
||||
if ruling then
|
||||
local req = org.requests[self.request_id]
|
||||
print(self.request_id)
|
||||
for k, v in ipairs(org.requests) do print(k, v) end
|
||||
print(req)
|
||||
print(req.type)
|
||||
if req.type == 'add_org' then
|
||||
org:add_org(req.params[1])
|
||||
elseif req.type == 'delete' then
|
||||
org:delete()
|
||||
elseif req.type == 'add_member' then
|
||||
org:add_member(req.params[1])
|
||||
elseif req.type == 'remove_member' then
|
||||
org:remove_member(req.params[1])
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
org.requests[self.request_id] = nil
|
||||
end
|
@ -14,6 +14,7 @@ function temp_org()
|
||||
policies = {},
|
||||
processes = {},
|
||||
requests = {},
|
||||
request_count = 0,
|
||||
members = {},
|
||||
parent = nil,
|
||||
children = {}
|
||||
@ -261,9 +262,12 @@ end
|
||||
-- ===========================
|
||||
-- compares to requests to see if they are identical
|
||||
function modpol.orgs.comp_req(req1, req2)
|
||||
-- compares request type
|
||||
if req1.type ~= req2.type then
|
||||
return false
|
||||
else
|
||||
-- comparing parameters
|
||||
-- we can assume the number of params is the same as this is checked in the make_request func
|
||||
for k, v in ipairs(req1.params) do
|
||||
if v ~= req2.params[k] then
|
||||
return false
|
||||
@ -293,7 +297,10 @@ function modpol.orgs:make_request(request)
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(self.requests, request)
|
||||
return true
|
||||
-- use lazy deletion here, not very clean
|
||||
-- table.insert(self.requests, request)
|
||||
self.request_count = self.request_count + 1
|
||||
self.requests[self.request_count] = request
|
||||
return self.request_count
|
||||
|
||||
end
|
Loading…
x
Reference in New Issue
Block a user