Интроспекция макросов/скриптов: получить описание и пр.
Интроспекция макросов/скриптов: получить описание и пр.
Подскажите пожалуйста как получить description (и другую metadata?) для макроса, из самого макроса в runtime (при исполнении)?
Зачем нужно - писать например какой нибудь лог,
где макрос пишет "я, такой то макрос, делаю/сделал то-то" (kind of self-tracing ability)
Поможите чем можити
ответ смотреть в моих сообщениях на этой странице, -
полное пошаговое описание
Keywords/tags: macro, script, metadata, self, description, self-reading, introspection
Зачем нужно - писать например какой нибудь лог,
где макрос пишет "я, такой то макрос, делаю/сделал то-то" (kind of self-tracing ability)
Поможите чем можити
ответ смотреть в моих сообщениях на этой странице, -
полное пошаговое описание
Keywords/tags: macro, script, metadata, self, description, self-reading, introspection
Last edited by Xerox on Tue 10 Dec, 2019 11:50, edited 10 times in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Как получить description для макроса из самого макроса в runtime при исполнении?
mf.GetMacroCopy не пробовали?
Он, конечно, требует номера … Но если знаешь Id, то можно найти "себя".
Он, конечно, требует номера … Но если знаешь Id, то можно найти "себя".
Как получить description для макроса из самого макроса в runtime при исполнении?
buniak_a_h, Спасибо, да!
но хотелось бы его как раз избежать, так как там унутри реализован простой перебор,
да еще и опять же нужен ключ, что не круто.
Впрочем, если там все равно перебор по ключу, то можно проверить нельзя ли сделать перебор еще по чему другому без требования ключа..
В любом случае огромное спасибо что прояснили, думал я чего-то напрочь упускаю
немного странно что нет без костылей в виде перебора, но это точно не самое страшное.
Если мнея читают девелоперы, то просьба добавить функциональность, если можно,
или прояснить может еще чего есть хитрого для интроспекции энтой?
PS
А свой собственный ключ мы "иcкоропки" знаем?
Или надо сделать отдельную переменную, и ее задать и в "кей = мой_кей;", и потом и в ГетМакроКопи(мой_кей)?
Но тогда получается что проще и в дескрипшион хранить в переменной и не париться .. ?
но хотелось бы его как раз избежать, так как там унутри реализован простой перебор,
да еще и опять же нужен ключ, что не круто.
Впрочем, если там все равно перебор по ключу, то можно проверить нельзя ли сделать перебор еще по чему другому без требования ключа..
В любом случае огромное спасибо что прояснили, думал я чего-то напрочь упускаю
немного странно что нет без костылей в виде перебора, но это точно не самое страшное.
Если мнея читают девелоперы, то просьба добавить функциональность, если можно,
или прояснить может еще чего есть хитрого для интроспекции энтой?
PS
А свой собственный ключ мы "иcкоропки" знаем?
Или надо сделать отдельную переменную, и ее задать и в "кей = мой_кей;", и потом и в ГетМакроКопи(мой_кей)?
Но тогда получается что проще и в дескрипшион хранить в переменной и не париться .. ?
Last edited by Xerox on Thu 05 Dec, 2019 11:42, edited 1 time in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Как получить description для макроса из самого макроса в runtime при исполнении?
Да, было бы удобно, чтобы эта функция с аргументом index=0 возвращала всё тоже самое для выполняемого макроса.
- John Doe
- Бюрократ
- Posts: 13807
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 426 times
- Contact:
Как получить description для макроса из самого макроса в runtime при исполнении?
Не уверен, что стоит наворачивать такое.buniak_a_h wrote: ↑Thu 05 Dec, 2019 11:44 Да, было бы удобно, чтобы эта функция с аргументом index=0 возвращала всё тоже самое для выполняемого макроса.
Альтернативы:
- передавать в функцию параметром
- вернуть числовое возвращаемое значение для Macro/Event (как было до LuaMacro build 538)
Как получить description для макроса из самого макроса в runtime при исполнении?
3виняюсь, это как? параметр - это гуид, который я и предлагал (за неимением выбора) хранить отдельно в переменной?
Как это было и сейчас так нет?
Пока не до конца понял, но если можно вернуть, то пусть будет?
Функционал юзеру карман на тянет, насчет девелопмента? - не знаю,
но думаю что всем лучше будет если внутри макроса можно будет знать что мы за макрос там такой..
Если и сейчас как-то можно "вернуть возвращяемое значение", то прошу примерчик?
Last edited by Xerox on Thu 05 Dec, 2019 13:09, edited 1 time in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Как получить description для макроса из самого макроса в runtime при исполнении?
Первое можно, но лично не вижу особой проблемы пробежаться по всем макросам, сравнить Id-ы с текущим (он известен) и получить description. Насколько я понимаю, проблема в том, что description может зависеть от контекста, языка и пр. … А Guid - константа.
Второе я не понял.
Как получить description для макроса из самого макроса в runtime при исполнении?
Эммм.. и откуда он известен внутри исполняемого макроса во время исполнения?
(если мы его предварительно снаружи руками не сохранили в переменной)
в жизни вообще есть только лишь одна единственная проблема, это когда нет денег
Ну ок, получается надо перебор делать, сохранив ручками descriptions & guids
Last edited by Xerox on Thu 05 Dec, 2019 18:36, edited 2 times in total.
- buniak_a_h
- Posts: 4236
- Joined: Sat 20 Apr, 2013 00:17
- Location: Санкт-Петробад
- Has thanked: 222 times
- Been thanked: 643 times
- Contact:
Как получить description для макроса из самого макроса в runtime при исполнении?
Исходник у Вас. Менять Id смысла нет. Задайте константу, определите её том же файле, что и макрос - и он будет её знать.
Вариант с динамическим добавлением макроса по far.MacroAdd - наверно, можно исхитриться запоминать Id в таблице. Над этим я не думал…
Наоборот будет правильней. Пишете
local MacroID='…'
и ниже
Code: Select all
Macro {id = MacroID;
…
}
Last edited by buniak_a_h on Thu 05 Dec, 2019 19:00, edited 1 time in total.
Как получить description для макроса из самого макроса в runtime при исполнении?
а я не только думал, но и сделалbuniak_a_h wrote: ↑Thu 05 Dec, 2019 18:59 Вариант с динамическим добавлением макроса по far.MacroAdd - наверно, можно исхитриться запоминать Id в таблице. Над этим я не думал…
и собственно вот и ультимативное решение всех метаданных и интроспекций будь они неладны,
далее по тексту:
Интроспекция макросов/скриптов: получить описание и пр.
Смело берем за шкирку "%farhome%\Plugins\LuaMacro\utils.lua",
и у него где то на 350-й строчке есть такой код:
.. но мы его не пугаемся, и аккурат за ним лепим ему свою блямбу:
прим: смотреть более рекомедованные 2-й и 3-й варианты блямбы на второй странице: viewtopic.php?p=157564#p157564
и у него где то на 350-й строчке есть такой код:
.. но мы его не пугаемся, и аккурат за ним лепим ему свою блямбу:
прим: смотреть более рекомедованные 2-й и 3-й варианты блямбы на второй странице: viewtopic.php?p=157564#p157564
Last edited by Xerox on Fri 06 Dec, 2019 17:18, edited 16 times in total.
Как получить description для макроса из самого макроса в runtime при исполнении?
Уффф...
Но отдыхать некогда, надо же как-то продемонстрировать достижения.
Уже из последних сил пишем такой макрос:
Но отдыхать некогда, надо же как-то продемонстрировать достижения.
Уже из последних сил пишем такой макрос:
Как получить description для макроса из самого макроса в runtime при исполнении? (+решение)
Как пытливый взгляд читателя уже успел заметить, мы собрали здесь не только description, но и вообще все возможные метаданные.
Идут с подчеркиванием, чтобы не сконфликтовать там с какими уже существующими искаропки блямбами (нидайбожиупасигосподь):
Идут с подчеркиванием, чтобы не сконфликтовать там с какими уже существующими искаропки блямбами (нидайбожиупасигосподь):
Last edited by Xerox on Thu 05 Dec, 2019 22:35, edited 1 time in total.
Как получить description для макроса из самого макроса в runtime при исполнении? (+РЕШЕНИЕ ВСЕ МЕТАДАННЫЕ/ ИНТРОСПЕКЦИЯ)
Технически же, я и сам не понял что мы тут сделали.
То ли корявое ООП для ЛУА, то ли другую какую неведомую зверюшку, поскольку что на знакомое мне ООП это мало похоже
Свершили же мы это, дабы облегчить жизнь следующим поколениям, ступившим на тяжкую стезю ФАР скриптинга на ЛУА.
Думаю практических применений тут довольно много, и часть из них, как я считаю, совершенно необходима для нормального девелопмента.
Надеюсь одмины внесут эту небольшую правку "%farhome%\Plugins\LuaMacro\utils.lua" в дистрибутив?
Потому что никакого вреда кроме пользы я лично не вижу..
То ли корявое ООП для ЛУА, то ли другую какую неведомую зверюшку, поскольку что на знакомое мне ООП это мало похоже
Свершили же мы это, дабы облегчить жизнь следующим поколениям, ступившим на тяжкую стезю ФАР скриптинга на ЛУА.
Думаю практических применений тут довольно много, и часть из них, как я считаю, совершенно необходима для нормального девелопмента.
Надеюсь одмины внесут эту небольшую правку "%farhome%\Plugins\LuaMacro\utils.lua" в дистрибутив?
Потому что никакого вреда кроме пользы я лично не вижу..
Last edited by Xerox on Thu 05 Dec, 2019 23:23, edited 3 times in total.