Как в модуле определить имя файла, содержащего модуль Topic is solved

Столкнулись с проблемой в использовании макросов? Здесь можно получить помощь.
Post Reply
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by buniak_a_h »

Здравствуйте.
Для макрофайлов имя файла с макросом определяется легко: ....
Вопрос с именем файла с модулем. Там ... содержит строку из require . А можно как-то определить имя файла с макросом?
Last edited by buniak_a_h on Sat 24 Apr, 2021 22:52, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Как в модуле определить имя файла, содержащего модуль

Post by citRiks »

buniak_a_h
debug.getinfo()?

Code: Select all

 -- save it as "test-module.lua"
local my_file = debug.getinfo(1, "S").source:match("^@(.+)")
return {
	my_file = my_file
}

Code: Select all

lua:le(require("test-module"))

Code: Select all

╔══════════════════════════ test-module (1) ══════════════════════════╗
║  my_file_is                    │string   │.\test-module.lua         ║
╚══════════════════════ F1, F3, F4, Del, Ctrl+M ══════════════════════╝
?
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by buniak_a_h »

citRiks, спасибо. В моём руководстве по lua про debug.getinfo очень лаконично написано. Про второй параметр = "S" вообще ни слова. Упомянуты только 'f', 'L' и 'n' . :-(
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Как в модуле определить имя файла, содержащего модуль

Post by citRiks »

buniak_a_h wrote: Sun 25 Apr, 2021 00:06 В моём руководстве по lua про debug.getinfo очень лаконично написано. Про второй параметр = "S" вообще ни слова. Упомянуты только 'f', 'L' и 'n'
А я ведь вам уже рекомендовал :)
viewtopic.php?p=159234#p159234
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by buniak_a_h »

citRiks,
1. "разблокировать" - я не умею.
2. Оно ж на аглицком, наверно.
3. Зашёл по ссылке из«Ликбез по LUA». Там описание версии 5.1.4 - но и там только L, n и f. Причём, what="n" приведен только в примере.
Ну или я читать не умею …
Last edited by buniak_a_h on Sun 25 Apr, 2021 23:21, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by John Doe »

buniak_a_h wrote: Sun 25 Apr, 2021 00:06 В моём руководстве по lua
В соответствующей статье должна быть гиперссылка на https://www.lua.org/manual/5.1/manual.html#lua_getinfo

Если её нет, рекомендую вместо 'вашего руководства' использовать простой человеческий гуглтранслейт.
https://t.me/FarManager — Telegram чат
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by John Doe »

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

А на багтрекере есть альтернативные пожелания
https://bugs.farmanager.com/view.php?id=3301
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by buniak_a_h »

John Doe wrote: Mon 26 Apr, 2021 07:58 например … передавая в функцию из скрипта дополнительно путь.
Скрипт и сам может не знать путь, откуда модуль загружается.
John Doe wrote: Mon 26 Apr, 2021 07:58 А на багтрекере есть альтернативные пожелания
Что- меня в этом пожелании настораживает:
https://bugs.farmanager.com/view.php?id=3301 wrote: GetMsg принимает на вход гуид
На самом деле GetMsg (стандартная) принимает на вход некое число - номер топика. Причём ФАР-овские языковые файлы содержат "символьные метки" вида //[Label]. А GetMsg (а) не принимает имя языкового файла и (б) не принимает символьные метки. Я сделал свой модуль и пихаю его везде, где можно. А по уму было бы кузяво сделать параметры GetMsg аналогичными ShowHelp.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Как в модуле определить имя файла, содержащего модуль

Post by citRiks »

Last edited by citRiks on Mon 26 Apr, 2021 19:35, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Как в модуле определить имя файла, содержащего модуль

Post by citRiks »

buniak_a_h wrote: Sun 25 Apr, 2021 23:202. Оно ж на аглицком, наверно.
ага, но это надо просто иметь транслятор на комп, который умеет читать с экрана.
посоветовать конкретный транслятор не могу к сожалению, но такие должны быть
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by buniak_a_h »

citRiks wrote: Mon 26 Apr, 2021 19:11 наверное офтопик, но не знаю в какой форум это пихать.
так как это всем полезно знать, пишу сюда
Ответил в личку
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Как в модуле определить имя файла, содержащего модуль

Post by citRiks »

Last edited by citRiks on Mon 26 Apr, 2021 19:50, edited 3 times in total.
User avatar
buniak_a_h
Posts: 4236
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 643 times
Contact:

Как в модуле определить имя файла, содержащего модуль

Post by buniak_a_h »

citRiks wrote: Mon 26 Apr, 2021 19:29 Не рекомендовано использование, интересно
А дебаггировать как без оного ?
Видимо, имелось в виду не включать в поставку (в распространяемый вариант). Вряд ли Вы стали бы поставлять неизвестному конечному юзеру софт с отладкой. Для себя Вы можете хоть форматирование C:\ включать ;-)
Post Reply

Return to “Нужна помощь”