Функция создания функции/функций из скрипта/скриптов

Здесь выкладываем скрипты
Правила форума
Уважаемые Пользователи форума, обратите внимание!
Ни при каких обстоятельствах, Администрация форума, не несёт ответственности за какой-либо, прямой или косвенный, ущерб причиненный в результате использования материалов, взятых на этом Сайте или на любом другом сайте, на который имеется гиперссылка с данного Сайта. Возникновение неисправностей, потерю программ или данных в Ваших устройствах, даже если Администрация будет явно поставлена в известность о возможности такого ущерба.
Просим Вас быть предельно осторожными и внимательными, в использовании материалов раздела. Учитывать не только Ваши пожелания, но и границы возможностей вашего оборудования.
Ответить
Sertik
Сообщения: 1598
Зарегистрирован: 15 сен 2017, 09:03

Функция определяет новую глобальную функцию из скрипта или может создать несколько функций из скриптов, начинающихся на заданный префикс.
Удобна для установки нужных глобальных функций в окружение переменных из скриптов пользователя.

Код: Выделить всё

# Функция создания функции/ий из скрипта/скриптов
# 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
}


фрагменты скриптов, готовые работы, статьи, полезные приемы, ссылки
viewtopic.php?f=14&t=13947
Ответить