Аналог плагина MkDir

Здесь обсуждается всё, что касается макросов.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Latest post of the previous page:

tstr, спасибо!
Заменил файл во вложении.
Last edited by Shmuel on Fri 30 May, 2025 18:45, edited 1 time in total.
siberia-man
Posts: 132
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 10 times

Аналог плагина MkDir

Post by siberia-man »

HaRT wrote: Sun 25 May, 2025 01:57 возможности совмещать диапазоны

Code: Select all

$ echo {a..c}{x..z}
ax ay az bx by bz cx cy cz

$ echo {{a..c},{x..z}}
a b c x y z

$ bash --version | head -1
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

siberia-man wrote: Fri 30 May, 2025 19:33 возможности совмещать диапазоны
Оно работает в данном макросе, только синтаксис другой:
  1. {a-c}{x-z}
  2. {a-c};{x-z}
Last edited by Shmuel on Fri 30 May, 2025 19:45, edited 1 time in total.
Volodya
Posts: 324
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 71 times
Been thanked: 2 times

Аналог плагина MkDir

Post by Volodya »

Аппетит приходит во время еды.
Имеется алиас <main>. В некоторых случаях хочется добавить иногда дополнительную директорию A, а иногда B.
Если написать, <main>;A - всё работает ожидаемо. Если же написать Dir\{<main>;A} то получается чепуха. Я что-то делаю не так?
На первом уровне конструкция <main>;<extension> работает правильно. Хотелось бы иметь эту возможность и на втором (Dir\{<main>;<extension>}
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Volodya wrote: Sat 31 May, 2025 00:05 Если же написать Dir\{<main>;A} то получается чепуха.
В справке написано: "вложенные перечисления недопустимы". По-видимому ваш <main> содержит перечисление.
Возможно в будущем избавимся и от этого ограничения, возможно с использованием библиотеки LPeg (встроена в LuaFAR).
Volodya
Posts: 324
Joined: Thu 31 Mar, 2005 19:41
Has thanked: 71 times
Been thanked: 2 times

Аналог плагина MkDir

Post by Volodya »

Shmuel wrote: Sat 31 May, 2025 00:27 В справке написано: "вложенные перечисления недопустимы".
Понятно. Придется пока делать в два этапа.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Шестая версия.
  1. вложенные перечисления допустимы
  2. диапазоны должны быть всегда обрамлены фигурными скобками
  3. если в неизменяемой части есть что-то из {};, то она должна заключаться в кавычки

mkdir.7z
(6.87 KiB) Downloaded 98 times
Yegor
Posts: 1505
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Аналог плагина MkDir

Post by Yegor »

Shmuel, спасибо, раз уж пошла такая "пьянка", может стоит добавить элементы даты и времени с каким-то префиксом?
Типа

Code: Select all

{#YYYY}-{#MM}-{#DD}-Backup
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Yegor, идея неплохая, но её можно реализовать и на уровне алиасов. Сделать несколько предопределённых алиасов, к примеру: <YYYY>, <MM>, <DD> и т.д.
Yegor
Posts: 1505
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Аналог плагина MkDir

Post by Yegor »

Shmuel wrote: Wed 04 Jun, 2025 15:35 Сделать несколько предопределённых алиасов, к примеру: <YYYY>, <MM>, <DD> и т.д.
Ну год не часто меняется, с днем и временем как? Разве есть алиасы зависимые от текущей даты?
Кстати можно забыть про то, что я написал выше и сделать алиасы с lua expressions?

mkdir.alias:

Code: Select all

date  {{=os.date("%Y-%m-%d")}}
Last edited by Yegor on Wed 04 Jun, 2025 16:51, edited 2 times in total.
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Yegor wrote: Wed 04 Jun, 2025 16:50 сделать алиасы с lua expressions
Думал об этом, но как бы для большинства потенциальных юзеров это может быть непонятно. Впрочем... почему бы и нет.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Yegor wrote: Wed 04 Jun, 2025 15:09 раз уж пошла такая "пьянка"
Седьмая версия. Алиасы могут содержать код Lua.
Пример синтаксиса в mkdir.alias: lua:date os.date("%Y-%m-%d"). В диалоге нужно указывать просто <date>.
mkdir.7z
(7.75 KiB) Downloaded 90 times
Yegor
Posts: 1505
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Аналог плагина MkDir

Post by Yegor »

Shmuel wrote: Thu 05 Jun, 2025 15:38 Алиасы могут содержать код Lua.
"И тут Остапа понесло", а вот так?

Code: Select all

lua:testarray { "foo", "bar" }
или метод, возвращающий массив или таблицу (что там в lua есть)

Наверное это перебор, но решает все проблемы :)
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Yegor wrote: Fri 06 Jun, 2025 00:25 Наверное это перебор, но решает все проблемы
Возможно пример не очень удачный, ибо не вижу, чем
lua:testarray { "foo", "bar" } лучше чем
testarray foo;bar.
Если расширять дальше, то напрашивается возможно функция-генератор, возвращающая при каждом вызове имя новой папки и nil, когда её работа окончена.
Shmuel
Posts: 7243
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 48 times
Been thanked: 635 times

Аналог плагина MkDir

Post by Shmuel »

Восьмая версия. Если Lua-алиас возвращает таблицу, то она преобразуется в перечисление.
Пример: lua:test t={}; for k=10,100,7 do table.insert(t,k) end; return t
mkdir.7z
(8.19 KiB) Downloaded 119 times
Yegor
Posts: 1505
Joined: Mon 04 Apr, 2005 13:41
Location: San Ramon, CA / Kharkov, UA
Has thanked: 52 times
Been thanked: 94 times

Аналог плагина MkDir

Post by Yegor »

Shmuel wrote: Fri 06 Jun, 2025 08:26 Если расширять дальше, то напрашивается возможно функция-генератор
Именно это я и имел в виду, когда писал
Yegor wrote: Fri 06 Jun, 2025 00:25 или метод, возвращающий массив или таблицу (что там в lua есть)
Спасибо
Мы не можем ждать милостей от Фара, взять их у него — наша задача! (C) Мичурин
Post Reply

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