You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
38 lines
1.1 KiB
Lua
38 lines
1.1 KiB
Lua
--- Module for describing an action in a 'declarative' way
|
|
-- @classmod lqc.fsm.action
|
|
-- @alias Action
|
|
local Action = {}
|
|
local Action_mt = {
|
|
__index = Action,
|
|
}
|
|
|
|
--- Creates a new action.
|
|
-- @param var (Symbolic) variable to store the result of the action in
|
|
-- @param cmd Command that was called during this action
|
|
-- @param command_generator Generator that generated the command, used for shrinking the command
|
|
-- @return new action object
|
|
function Action.new(var, cmd, command_generator) -- TODO rename to args_generators
|
|
if var == nil then
|
|
error 'Need to provide variable to action object!'
|
|
end
|
|
if cmd == nil then
|
|
error 'Need to provide command to action object!'
|
|
end
|
|
|
|
local action = {
|
|
variable = var,
|
|
command = cmd,
|
|
cmd_gen = command_generator,
|
|
}
|
|
return setmetatable(action, Action_mt)
|
|
end
|
|
|
|
--- Returns a string representation of the action
|
|
-- @return string representation of the action
|
|
function Action:to_string()
|
|
return '{ set, ' .. self.variable:to_string() .. ', ' .. self.command:to_string() .. ' }'
|
|
end
|
|
|
|
return Action
|
|
|