محرك الخطوات
الإجراء الذي محركه الخطوات هو قائمة TOML من جداول [[steps]] بدلًا من النص. يستدعي الدوال المضمَّنة
نفسها ويتبع قواعد القيم وقيم الصدق نفسها. الاختلافات:
-
لكل خطوة
idفريد من نوع عدد صحيح وop:call(fn،args)، وset(localمعvalue، أوcall = { fn, args })، وif، وgoto، وend، وrepeat/end_repeat، وexit_repeat، وelse/end_if. -
إما أن تقفز
ifحسب المعرّف (then_goto/else_goto)، أو، دونهما، تفتح كتلة تُغلقهاend_if. -
تأخذ
repeatواحدًا بالضبط منtimesأوwhileأوuntil. -
الشرط واحد بالضبط مما يلي: استدعاء دالة مضمَّنة (
fn/args)، أوvalue(قيمة الصدق)، أوcompare("=="،"!="،"<"،"<="،">"،">=") معleft/right. أضفnot = trueلعكسه. -
الوسيطة النصية التي تبدأ بـ
$تقرأ متغيرًا ("$target"). كل ما عدا ذلك قيمة حرفية نوعها هو نوعها في TOML، ويجب أن يطابق هذا النوع المعلمة تمامًا، كما في البرنامج النصي. -
{ const = "VirtualKey.MediaPlayPause" }ثابت مسمى، يُستبدل برقمه عند ترجمة الخطوات، كما في البرنامج النصي. أما السلسلة النصية العادية المكتوبة مثله، مثل"VirtualKey.F5"، فتبقى نصًا. -
{ fn = "MouseGetCursorX" }، وهو جدول لا يحتوي إلا علىfn، هو نتيجة دالة مضمَّنة لا تأخذ وسيطات. ويُقبل في كل موضع تُقبل فيه قيمة:- في
argsالخاصة باستدعاء:args = [{ fn = "WindowGetActive" }] - في
left/rightالخاصين بشرط:left = { fn = "ContextGetPointCount" }, right = 20 - في
valueالخاصة بشرط:value = { fn = "EngineIsSafeMode" } - في
timesالخاصة بـrepeat:times = { fn = "FolderWatchGetCount" } - في
valueالخاصة بخطوةset:value = { fn = "UtilityGetTickCount" }
لا يأخذ
args. أما الدالة المضمَّنة التي تحتاج إلى وسيطات، فاحفظ نتيجتها أولًا في متغير باستخدامsetثم مرِّر"$name". - في
-
لا توجد تعابير عوامل. تحتاج العمليات الحسابية وبناء السلاسل النصية إلى إجراء برنامج نصي.
[[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"