Удобна для установки нужных глобальных функций в окружение переменных из скриптов пользователя.
Код: Выделить всё
# Функция создания функции/ий из скрипта/скриптов
# Sertik 13/03/2023
# usage: $1="group" or $1=you funcName
# [$FuncGen group "Func"] - генерирует функции FuncXXYYY из всех скриптов с префиксом имени "Func" ($2)
# [$FuncGen myFunc script1] - генерирует функцию с именем myFunc ($1) из скрипта script1 ($2)
:global FuncGen do={
:if ([:len $1]=0) do={:return "Error function $0 no parameters"}
:if ([:len $2]=0) do={:return "Error function $0 no parameters"}
:local FgenAnswer
:if ($1="group") do={
# group functions generation
:local fnArray;
:foreach f in=[/system script find where name~"^$2.*"] do={
:set fnArray ($fnArray.",".[/system script get $f name])};
:set fnArray [:toarray $fnArray];
:foreach f in=$fnArray do={
:exec script=":global \"$f\" [:parse [/system script get $f source]]";
/log warning ("Function $0: defined function ".$f)}
:set FgenAnswer "Done generate multy functions"
:if ([:len $fnArray]=0) do={:set FgenAnswer "Not find script with $2 prefix name"}
} else={
# one functions generation
if ([:len [/system script find name $2]]=0) do={
:log error ("ERROR function $0: function < $1 > not define but script < $2 > not found")
:return "Error function $0: script $2 not found"}
:do {
:exec script=":global \"$1\" [:parse [/system script get $2 source]]";
} on-error={:log error ("ERROR function $0 declare function < $1 > or get source script < $2 >")
:return "Error"}
/log warning ("Function $0: defined function ".$1)
:set FgenAnswer "Done generation $1 function"
}
:return $FgenAnswer
}