ScriptsBrowser — управление скриптами [экспериментально]

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

ScriptsBrowser — управление скриптами [экспериментально]

Postby John Doe » Tue 09 Aug, 2016 16:10

Каждый автор так или иначе снабжает свои скрипты метаинформацией, такой как название, описание, версия, автор, тема обсуждения на форуме, и т. п.
Сейчас эта информация может содержаться где угодно: в комментариях, или в каком-то диалоге, или в справке.
Естественно централизовано посмотреть её не получится.

Но раз каждый скрипт в любом случае содержит какую-то метаинформацию, то почему бы не заполнять её стандартизировано?
В результате мы получим возможность управлять скриптами централизованно, и реализовать разные интересные возможности, такие как изложенные ранее: John Doe @ Скрипты: система их названий и описаний

Представляю экспериментальную реализацию некоторых идей:
Основные понятия:
  • Скрипт — это lua-файл. Он может содержать макросы или выполнять свои функции иным способом.
  • Скрипт может иметь вспомогательные файлы (cfg/lng/hlf).
  • Несколько скриптов могут формировать "пакет".
ScriptsBrowser.lua — утилита для работы со скриптами, запускается из меню плагинов.

regscript.lua — сам модуль, регистрирующий скрипты.
Все поля на данный момент опциональны, и их список открыт для обсуждения.
Пока предлагаю следующие:


cfgscript.lua — вспомогательный модуль, позволяющий переопределить начальные настройки скриптов не трогая их исходный код.

cfgscript_test.lua — демонстрационный скрипт для иллюстрации того, что регистрация может быть полезна и в произвольных скриптах

InsertInfo.lua — вспомогательный макрос для вставки в скрипт шаблона с метаинформацией.

P.S.
Интерфейс самого модуля может быть интересен для применения в макробраузерах.
Сейчас он позволяет получить таблицу скрипта по индексу, по id, или по полному имени файла.
Attachments
scriptbrowser02.7z
(10.12 KiB) Downloaded 41 times
Last edited by John Doe on Fri 26 Aug, 2016 16:49, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

scriptbrowser — управление скриптами [экспериментально]

Postby John Doe » Fri 19 Aug, 2016 08:50

Latest post of the previous page:

IgorZ wrote:Source of the post Я что-то крупное не заметил? Реализован ещё какой-то способ регистрации, кроме nfo-таблиц?
Я имел ввиду всю обвязку, в том числе получение функции Info (и само её название), завершающее условие (оно добавляет громоздкости), манипуляции с опциями.
IgorZ wrote:Source of the post хотелось бы видеть это независимым от regscript механизмом. Это возможно?
Возможно всё, но есть ли смысл?
В простейшем случае это сейчас так:

Code: Select all

local Info = package.loaded.regscript or function(...) return ... end
local nfo = Info { ...,
  id = "EE765F8C-EF4B-4820-A3E5-DFD25F280852";
  options = {
    --...
  };
}
if not nfo then return end
local O = nfo.options
Собственно, мне лично тоже не нравится как сейчас опции загромождают определение.

Можно было бы сделать независимо, например как-то так:

Code: Select all

local options = {
    --...
  };
local cfg = package.loaded.cfgscript or function(...) return ... end
if not cfg(options,"EE765F8C-EF4B-4820-A3E5-DFD25F280852") then return end
Условие тут обязательно, это единственный способ "отключения" скрипта...

Ещё можно объединить варианты, как-то так:

Code: Select all

local nfo = Info { ...,
  id = "EE765F8C-EF4B-4820-A3E5-DFD25F280852";
  --...
}
if not nfo then return end

local O = {
    --...
  };
nfo:cfg(O)
Таблицу опций и в этом случае может сохраняться в nfo, для удобства доступа браузера.
Но можно и отдельную функцию.

В общем, нужна обратная связь.

P.S.
IgorZ wrote:Source of the post Можно и так.
А вызывать тогда в духе ооп: nfo:help()

IgorZ
Posts: 427
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 6 times

scriptbrowser — управление скриптами [экспериментально]

Postby IgorZ » Tue 23 Aug, 2016 10:21

John Doe wrote:
IgorZ wrote:Source of the post Тогда пока отложить на будущее?
Обсудить может быть полезно и сейчас.
Ну, тогда мой взгляд таков. С программной точки зрения это удобней всего видеть как таблицу. Скажем,

Code: Select all

{
  {date=дата, version=версия, changes=изменения},
  {...},
  ...
}
Или несимметричный вариант:

Code: Select all

{
  version={date=дата, changes=изменения},
  {...},
  ...
}
Дата, наверное, может быть необязательной. Симметричный (первый) вариант кажется мне навскидку более удобным, потому что он универсален и позволяет легко получить из себя любой другой.
В файле это можно указывать либо как таблицу (в этом случае формат записи очевиден) , либо как многострочный текст, подаваемый на вход специальной функции. Допустим, так:

Code: Select all

nfo:history[[
dd/mm/yyyy    версия    изменения
dd/mm/yyyy    версия    изме...
                        ...нения
dd/mm/yyyy    версия    изменения
...
]]
За образец текста взял используемый мной шаблон оформления истории.
John Doe wrote:
IgorZ wrote:Source of the post И как заставить всех абсолютно авторов? Добавить код, рекурсивно обходящий папку Macros и удаляющий все файлы с "некошерными" расширениями? Ибо альтернативой - только добрая воля (субстанция куда более редкая, чем хотелось бы).
Не будем заставлять)
Если автор позаботился о регистрации скрипта, значит увидел для себя какую-то в этом пользу, и (будем надеяться) предварительно изучил прилагающуюся документацию.
Коллега, Вы противоречите самому себе. С одной стороны, автору будет лень писать несколько знаков дополнительно на каждый файл, с другой, ему не лень проделать работу по изучению документации, вставке nfo и, для уже имеющихся проектов, переименованию файлов и соответствующей переделке кода программы.
Как вариант, предложу компромиссный способ:

Code: Select all

files = [[
  cfg:имя файла
  lng:help:имя файла
  lng:help:имя файла
  lng:имя файла
]]
На строки я разбил для красоты. Суть в префиксе типа для имени - минимальная добавка для автора, которая легко парсится программно. Кстати, в принципе можно вместо префиксов использовать постфиксы, но мне кажется, спереди красивее.
John Doe wrote:
IgorZ wrote:Source of the post А если внутри Луа-код, то и расширение логично поставить .lua. Но при этом для соответствующего скрипта и то, и другое - файл настроек.
Файлы с расширением lua в папке scripts это скрипты. Они могут себя зарегистрировать сами, в частности используя и специальное поле для типа.
Аналогично, они могут быть зарегистрированы и из основного скрипта дополнительным вызовом Info.
И третий вариант, тип "настройки" например может быть определён и маской вида *.cfg.*
(В следующей версии я уже ввёл типы, пока только в browser)
Файл языка или настроек с расширением .lua - не скрипт по смыслу. Писать отдельной nfo на каждый такой файл - излишне и даже, я бы сказал, противоречит главной идее. По расширениям я уже писал. Всё-таки описание типа - просто, компактно и универсально.
John Doe wrote:
IgorZ wrote:Source of the post Если, к примеру и языковые настройки, и справка находятся в одном файле (у самого в некоторых скриптах так), то отдельное поле типа позволит явно это указать, а ориентирование по расширению окажется бесполезно.
Используя Info вы можете предусмотреть и такую гипотетическую ситуацию, если это необходимо.
Info здесь избыточен, а значит, вреден. Всё-таки не стоит забывать, что эта информация должна ещё и легко восприниматься визуально, а nfo довольно объёмен. Один - ладно, но писать их в одном файле по штуке на каждый вспомогательный файл - явно лишне.
John Doe wrote:
IgorZ wrote:Source of the post крайне желателен символ, невозможный в имени переменной.
Знаю только один такой \0.
Ну а на практике вряд ли есть необходимость использовать даже слэш.
С другой стороны, использование таблицы позволило бы не делать никаких допущений о практике.
Думаю, dbkey = {"GLOBAL","IgorZ","LuaManager"} выглядит не особо элегантно. Да и писать неудобно. Наверное, лучше всего использовать слэш и удвоение, если надо: dbkey = [[GLOBAL/IgorZ/Import//Export configuration]].
Last edited by HaRT on Tue 23 Aug, 2016 11:59, edited 1 time in total.
Reason: [c]

IgorZ
Posts: 427
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 6 times

scriptbrowser — управление скриптами [экспериментально]

Postby IgorZ » Tue 23 Aug, 2016 10:53

John Doe wrote:
IgorZ wrote:Source of the post Я что-то крупное не заметил? Реализован ещё какой-то способ регистрации, кроме nfo-таблиц?
Я имел ввиду всю обвязку, в том числе получение функции Info (и само её название), завершающее условие (оно добавляет громоздкости), манипуляции с опциями.
Ну, навскидку - несколько громоздко, чересчур усложнённо, опции лучше бы реализовать независимо. Собственно, последние вообще имеют реальный, а не надуманный смысл только если находятся в отдельном файле. Ну и хотелось бы избавиться от последующего if. Может, в случае ошибки возвращать таблицу с двумя полями, FileName и error, такой вариант реален?
John Doe wrote:
IgorZ wrote:Source of the post хотелось бы видеть это независимым от regscript механизмом. Это возможно?
Собственно, мне лично тоже не нравится как сейчас опции загромождают определение.
"Ну вот и атлисьно!"(с) ;)
John Doe wrote:
В общем, нужна обратная связь.
По опциям пока только в общих чертах - манагер пишу, когда время есть.

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

scriptbrowser — управление скриптами [экспериментально]

Postby John Doe » Tue 23 Aug, 2016 11:03

(По первому сообщению отвечу позже)
IgorZ wrote:Source of the post Собственно, последние вообще имеют реальный, а не надуманный смысл только если находятся в отдельном файле.
А так и есть ведь, в таблице только умолчания.
Выпущу наверно вечером новую версию, там будет больше реальных примеров.
IgorZ wrote:Source of the post Ну, навскидку - несколько громоздко, чересчур усложнённо, опции лучше бы реализовать независимо.
Громоздко: ну.. есть такое.
Усложнённо: предложите проще.
Независимо: было бы лучше, но поскольку вещи связанные, то по отдельности будет более громоздко.
IgorZ wrote:Source of the post Может, в случае ошибки возвращать таблицу с двумя полями, FileName и error, такой вариант реален?
Запросто, рассматривал и такой вариант, только что это даёт?
От последующего if не избавляет.
IgorZ wrote:Source of the post "Ну вот и атлисьно!"(с)
Не понял вашу мысль.

IgorZ
Posts: 427
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 6 times

scriptbrowser — управление скриптами [экспериментально]

Postby IgorZ » Tue 23 Aug, 2016 11:30

John Doe wrote:(По первому сообщению отвечу позже)
IgorZ wrote:Source of the post Собственно, последние вообще имеют реальный, а не надуманный смысл только если находятся в отдельном файле.
А так и есть ведь, в таблице только умолчания.
Выпущу наверно вечером новую версию, там будет больше реальных примеров.
Подожду, посмотрю. Может, что-то пока недопонимаю.
John Doe wrote:
IgorZ wrote:Source of the post Может, в случае ошибки возвращать таблицу с двумя полями, FileName и error, такой вариант реален?
Запросто, рассматривал и такой вариант, только что это даёт?
От последующего if не избавляет.
А, собственно, почему ошибка в nfo должна полностью отключать весь файл скрипта, как это сейчас? С таблицей всё просто - если ошибка в nfo вызывает ошибку в скрипте, отработает стандартный механизм, а если не вызывает, браузер сможет показать скрипт с ошибкой в описании. Какие недостатки у данной схемы?
John Doe wrote:
IgorZ wrote:Source of the post "Ну вот и атлисьно!"(с)
Не понял вашу мысль.
Пардон, вспомнил старый КВН и не подумал, что не все обязаны это помнить (у нас в этом году всё лето стоит жара за 30-35 в тени, при том, что обычно хорошо если месяц за всё лето наберётся. Соответственно, на работе аналогичная душегубка, поскольку кондиционера от родного начальства не дождёшься. С утра мозги ещё работают, а после обеда просто караул).
Собственно, сценка:
У китайского студента Ли дед был нарком здравоохранения, отец - министр здравоохранения, естественно, сам Ли пошёл в медицинский. Учился - ясно как, и вот экзамен.
Экзаменатор: Плохо, молодой человек.
Дед, выходя из тени: Моему внуку "плохо"???
Экзаменатор: Ну, ладно, "удовлетворительно".
Отец, выходя из тени: Моему сыну "удовлетворительно"???
Экзаменатор: Но на "хорошо" он не знает!!!
Студент Ли: Ну вот и атлисьно!

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

scriptbrowser — управление скриптами [экспериментально]

Postby John Doe » Tue 23 Aug, 2016 11:45

IgorZ wrote:Source of the post А, собственно, почему ошибка в nfo должна полностью отключать весь файл скрипта, как это сейчас?
Ошибка в nfo не отключает файл скрипта.
А отключается он сейчас только в 2х случаях.
- если в настройках disabled=true
- если minfarversion не соответствует
IgorZ wrote:а если не вызывает, браузер сможет показать скрипт с ошибкой в описании. Какие недостатки у данной схемы?
Никаких, ведь именно так оно сейчас и работает.
IgorZ wrote:Source of the post По опциям пока только в общих чертах - манагер пишу, когда время есть.
Ок. Пока остаётся как есть, и жду предложений.

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

scriptbrowser — управление скриптами [экспериментально]

Postby John Doe » Wed 24 Aug, 2016 23:08

В шапке обновление.

  • scriptbrowser (сделан главным скриптом пакета):
  • Окне информации о скрипте:
  • regscript:
  • cfgscript
  • InsertInfo.lua: добавлен шаблон для scriptscfg
  • samples:

P.S.
Большинство описанных функций можно проверить на самом пакете scriptbrowser, и его файлах.

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

scriptbrowser — управление скриптами [экспериментально]

Postby John Doe » Thu 25 Aug, 2016 18:24

Обновил скриншоты в шапке

User avatar
HaRT
Moderator
Posts: 7917
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 65 times
Been thanked: 94 times

scriptbrowser — управление скриптами [экспериментально]

Postby HaRT » Thu 25 Aug, 2016 18:38

John Doe wrote:Source of the post Обновил скриншоты в шапке
Хорошо бы расшифровку значков из первой колонки добавить в Справку, а то с непривычки выглядит пугающе.

И, пока не поздно, может переименовать везде в ScriptsBrowser (с ‘s’ в середине и с заглавными)? Это чтобы лучше читалось.
Тем более, что внутри архива директория так уже и называется…
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

scriptsbrowser — управление скриптами [экспериментально]

Postby John Doe » Thu 25 Aug, 2016 20:34

HaRT wrote:Source of the post Хорошо бы расшифровку значков из первой колонки добавить в Справку, а то с непривычки выглядит пугающе.
Разумеется, просто не всё сразу. Как-то так:

Code: Select all

  ┌─────── скрипт подчинён другому
  │ ┌───── доступна функция конфигурации
  │ │ ┌─── опции скрипта доступны для изменения
≡ »¤☼?o‼ ─ ошибка в информации о скрипте
│  │ └──── доступна функция справки
│  └────── доступна функция исполнения
└───────── есть подчинённые скрипты (под-скрипты)
           если есть вспомогательные файлы нескрипты, то пункт будет помечен знаком +

HaRT wrote:Source of the post И, пока не поздно, может переименовать
Никогда не поздно)
По мере добавления функций переименую в ScriptsManager.

IgorZ
Posts: 427
Joined: Wed 13 Jul, 2011 03:32
Has thanked: 4 times
Been thanked: 6 times

scriptsbrowser — управление скриптами [экспериментально]

Postby IgorZ » Fri 26 Aug, 2016 05:45

John Doe wrote:По мере добавления функций переименую в ScriptsManager.

Простите, коллега, но ScriptsManager уже есть, хоть и в альфа-виде (если не загрузят сильно, то и первый релиз, надеюсь, не за горами). Предлагаю, и сейчас, и на будущее, просто для удобства сохранить уже сложившееся стихийно разделение: у Вас браузеры, у меня менеджеры. В конце концов, функциональность первична, а название пусть будет своего рода брендом.

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

ScriptsBrowser — управление скриптами [экспериментально]

Postby John Doe » Fri 26 Aug, 2016 09:04

IgorZ wrote:Source of the post В конце концов, функциональность первична, а название пусть будет своего рода брендом.
Да мне не жалко оставить вам manager, но название всё же должно отражать функциональность.
Сейчас тут у нас действительно браузер, но это ненадолго.

Предлагаю обсудить дальнейшее развитие в следующих направлениях:
  • Формат пакета/дистрибутива: Тип архива (zip/7z). Расширение файла (.farscript). Структура папок (modules/scripts/другое). Некий описатель пакета (достаточно ли Info, или желательно выделить дополнительно файл с фиксированным именем.)
  • Установка скриптов из пакета/дистрибутива. На основании Info, плюс допустима кастомная функция.
  • Удаление установленных пакетов.
  • Обновление/переустановка скриптов. С проверкой версий, с сохранением резервных копий.
  • Обновление из сети. Централизованное хранилище (plugring) или альтернативы.

Я за то, чтобы регламентации везде было минимум.
Разве что тип архива и расширение лучше фиксированные, никого не должно напрячь, и структура папок (modules/scripts) достаточно очевидна.
Всевозможных описателей надо как можно меньше, всё необходимое на практике можно извлечь из Info (уже сейчас).
Никакой базы данных установленных пакетов не надо.

User avatar
HaRT
Moderator
Posts: 7917
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 65 times
Been thanked: 94 times

ScriptsBrowser — управление скриптами [экспериментально]

Postby HaRT » Fri 26 Aug, 2016 11:37

John Doe, коль скоро речь идёт и об управлении пакетами, не пора ли смотреть в сторону NuGet?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

ScriptsBrowser — управление скриптами [экспериментально]

Postby John Doe » Fri 26 Aug, 2016 16:17

Не пользовался, давайте посмотрим.
(Я сильно не копал, поэтому попробую дофантазировать, а вы поправьте что не так)

Определённо решает вопрос размещения пакетов, и их обновления.
Клиент (nuget.exe) ~ 4 MB, вроде не проблема.
Требует какой-то там дотнет, но на современных ОС тоже не проблема (на XP сходу не запустился).

Вопрос: а что собой представляет база установленных пакетов?
Она общая для системы, или хранится локально?
Будет ли всё работать портабельно, с неустановленными копиями фара?

Из практики использования пользователями я вижу что файлы свободно переименовываются, папки переносятся, и в nuget эту ситуацию никак не обработать.
Т.е. всё нормально, если каждый пакет устанавливается в собственную папку, и создатели пакетов согласовывают их уникальность.
Или можно использовать nuget как хранилище и транспорт, а если хочется большей гибкости, то установку и прочее придётся пилить самостоятельно.

User avatar
HaRT
Moderator
Posts: 7917
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 65 times
Been thanked: 94 times

ScriptsBrowser — управление скриптами [экспериментально]

Postby HaRT » Fri 26 Aug, 2016 16:40

John Doe wrote:Source of the post вы поправьте что не так
У меня опыта работы с NuGet тоже нет. Просто я читал, что Майкрософт его продвигает как менеджер пакетов, и многие хорошие инструменты (особенно ориентированные на .NET) его поддерживают. Вот бы NightRoman поделился своим опытом…
Last edited by HaRT on Fri 26 Aug, 2016 16:42, edited 2 times in total.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

ScriptsBrowser — управление скриптами [экспериментально]

Postby John Doe » Fri 26 Aug, 2016 20:03

IgorZ wrote:Source of the post С одной стороны, автору будет лень писать несколько знаков дополнительно на каждый файл, с другой, ему не лень проделать работу по изучению документации, вставке nfo и, для уже имеющихся проектов, переименованию файлов и соответствующей переделке кода программы.

В конечном счёте всё упирается для чего всё это автору. На мой взгляд установка/обновление/автообновление это наиболее весомые причины.
А что касается заполнения полей.. Ну необязательны они, зачем кого-то заставлять.
Вот посмотрит автор как выглядит его скрипт в браузере, и может наведёт это его на какие-то мысли.
Возвращаясь к вопросу указания типа файла: если это нигде потом не используется, то для чего автору его заполнять? А если зачем-то нужно, значит он мотивирован, и заполнит как надо (или файл переименует).
IgorZ wrote:Source of the post Файл языка или настроек с расширением .lua - не скрипт по смыслу.
Если они загружаются, то нет проблемы добавить туда Info из 2х строк.
Если нет, то тот же nfo может сейчас содержаться в родительском скрипте, или в специально выделенном файле (как вы и предлагали).
Я не вижу чтобы это противоречило главной идее.
Собственно, принципиальных возражений против того, чтобы изменить формат поля files у меня нет, просто пока необходимости не вижу.

IgorZ wrote:Source of the post nfo довольно объёмен.
2 строки, ведь необязательно все поля заполнять.
IgorZ wrote:Source of the post писать их в одном файле по штуке на каждый вспомогательный файл - явно лишне.
Я тоже так решил, потому и предусмотрел поле files.
Info предлагаю писать не на каждый файл, а только там, где реально потребуется.
IgorZ wrote:Source of the post dbkey = {"GLOBAL","IgorZ","LuaManager"} выглядит не особо элегантно.
А мне нравится)
Но не буду упираться, решать вам, как автору редактора (к нему правда вопросы тоже есть, но это в другой теме)

По формату истории: посмотрим как она у нас будет на практике использоваться.
И стоит ли ей находиться в nfo, это ж громоздко. Может лучше в отдельном файле.
Last edited by John Doe on Fri 26 Aug, 2016 20:08, edited 1 time in total.

User avatar
John Doe
Бюрократ
Posts: 11042
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

ScriptsBrowser — управление скриптами [экспериментально]

Postby John Doe » Sat 27 Aug, 2016 10:32

John Doe wrote:Source of the post Установка скриптов из пакета/дистрибутива. На основании Info, плюс допустима кастомная функция.
Чтобы получить информацию о скриптах пакета, их тоже надо загрузить.
И стандартный способ тут не годится, т.к. произойдёт нежелательная "регистрация".
Предполагаю выйти из положения несколько модифицировав шаблон.
Будет так:

Code: Select all

local Info = Info or package.loaded.regscript or function(...) return ... end --luacheck: ignore 113/Info

Code: [Select all] [Expand/Collapse] [Download] (InsertInfo.lua)
  1. local Info = Info or package.loaded.regscript or function(...) return ... end --luacheck: ignore 113/Info
  2. local nfo = Info {...,
  3.   name        = "Insert script Info";
  4.   description = "regscript helper macro";
  5.   version     = "0.2.1"; --http://semver.org/lang/ru/
  6.   author      = "jd",
  7.   id          = "76F75AE2-B33C-432F-8D46-93E897D06AB1";
  8.   parent_id   = "99086D25-80D3-4632-81F1-FC205C487C1B";
  9.   options     = {author = ""};
  10. }
  11. if not nfo then return end
  12. local O = nfo.options
  13.  
  14. local templateInfo = [=[
  15. local Info = Info or package.loaded.regscript or function(...) return ... end --luacheck: ignore 113/Info
  16. local nfo = Info {_filename or ...,
  17.   name        = "";
  18.   description = "";
  19.   version     = ""; --http://semver.org/lang/ru/
  20.   author      = "%s";
  21.   url         = "";
  22.   id          = "%s";
  23.   --parent_id   = "";
  24.   --minfarversion = {3,0,0,4744,0};
  25.   --files       = "*.cfg;*.ru.lng";
  26.   --config      = function(nfo,name) end;
  27.   --help        = function(nfo,name) end;
  28.   --execute     = function(nfo,name) end;
  29.  
  30.   --disabled    = false;
  31.   --options     = {};
  32. }
  33. if not nfo then return end
  34. --local O = nfo.options
  35. ]=]
  36.  
  37. Macro { description="Insert script Info template";
  38.   area="Editor"; key="CtrlF11"; filemask="*.lua";
  39.   id="6A170EA8-CDF3-4F9B-99F0-73DE7D74D861";
  40.   action=function() mf.print(templateInfo:format(O.author or "",win.Uuid(win.Uuid()):upper()))end
  41. }
  42.  
  43. local templateConfig = [=[
  44. Config {
  45.   id="";
  46.   --disabled=true;
  47.   options={
  48.     --
  49.   };
  50. }
  51. ]=]
  52.  
  53. Macro { description="Insert script Config template";
  54.   area="Editor"; key="CtrlF11"; filemask="scriptscfg;scriptscfg.sample";
  55.   id="791BEA87-3727-41BF-B63D-70B0E236D4D7";
  56.   action=function()
  57.     mf.print(templateConfig)
  58.   end;
  59. }


Return to “Обсуждение макросов”

Who is online

Users browsing this forum: No registered users and 6 guests