O mecanismo Passos
Uma ação cujo mecanismo é Passos é uma lista TOML de tabelas [[steps]] em vez de texto. Ela chama
as mesmas funções internas e segue as mesmas regras de valor e de valor verdadeiro. As diferenças:
-
Cada passo tem um
idinteiro único e umop:call(fn,args),set(localmais umvalue, ou umcall = { fn, args }),if,goto,end,repeat/end_repeat,exit_repeat,else/end_if. -
Um
ifsalta por id (then_goto/else_goto) ou, sem eles, abre um bloco fechado porend_if. -
repeatrecebe exatamente um entretimes,whileeuntil. -
Uma condição é exatamente uma entre: uma chamada de função interna (
fn/args),value(valor verdadeiro) oucompare("==","!=","<","<=",">",">=") comleft/right. Acrescentenot = truepara invertê-la. -
Um argumento de cadeia que começa com
$lê uma variável ("$target"). Todo o resto é um literal cujo tipo é o seu tipo TOML, e esse tipo precisa corresponder exatamente ao parâmetro, como em Script. -
{ const = "VirtualKey.MediaPlayPause" }é uma constante nomeada, substituída pelo seu número quando os passos são compilados, como em Script. Uma cadeia comum escrita do mesmo jeito, como"VirtualKey.F5", continua sendo texto. -
{ fn = "MouseGetCursorX" }, uma tabela que contém sófn, é o resultado de uma função interna que não recebe argumentos. Ela é aceita em qualquer lugar onde cabe um valor:- nos
argsde uma chamada:args = [{ fn = "WindowGetActive" }] - em
left/rightde uma condição:left = { fn = "ContextGetPointCount" }, right = 20 - no
valuede uma condição:value = { fn = "EngineIsSafeMode" } - no
timesde umrepeat:times = { fn = "FolderWatchGetCount" } - no
valuede um passoset:value = { fn = "UtilityGetTickCount" }
Ela não recebe
args. Para uma função interna que precisa de argumentos, guarde antes o resultado dela numa variável comsete passe"$name". - nos
-
Não há expressões com operadores. Aritmética e montagem de cadeias precisam de uma ação Script.
[[steps]]
id = 1
op = "set"
local = "target"
call = { fn = "WindowGetActive", args = [] }
[[steps]]
id = 2
op = "if"
condition = { fn = "WindowContainsTitle", args = ["$target", "Notepad"] }
[[steps]]
id = 3
op = "call"
fn = "WindowMaximize"
args = ["$target"]
[[steps]]
id = 4
op = "end_if"