Маски файлов в API

Разработка Far.
User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 19:26

Latest post of the previous page:

Тех. вопросы:

1. Можно ли при задании групп использовать группы? (могу и попробовать, но ответ и другим будет полезен)
2. В меню групп что делает [Ctrl-R]? (комбинация указана среди подсказок внизу)

User avatar
DrKnS
Posts: 4563
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

Re: Маски файлов

Post by DrKnS » Sat 03 Mar, 2012 20:07

NightRoman wrote:1. Можно ли при задании групп использовать группы? (могу и попробовать, но ответ и другим будет полезен)
Нельзя. Могу и добавить (уже просили), но что если ты там рекурсию организуешь?
2. В меню групп что делает [Ctrl-R]? (комбинация указана среди подсказок внизу)
Что быстрее - нажать и посмотреть или на форум написать?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sat 03 Mar, 2012 20:15

но что если ты там рекурсию организуешь?
С этим можно справиться разными способами. Могут быть причины, почему это не хочется делать, это да. Но что возможна рекурсия - это не причина, как таковая. (для примера - хард линками тоже можно рекурсию организовать, но Фар ведь не запрещает их создавать)
Что быстрее - нажать и посмотреть или на форум написать?
Странный вопрос. А если это Remove или еще чего, что я не хочу делать? F1 там не работает.

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: Маски файлов

Post by zg » Sat 03 Mar, 2012 23:15

NightRoman wrote:[(для примера - хард линками тоже можно рекурсию организовать, но Фар ведь не запрещает их создавать)
как?

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sun 04 Mar, 2012 06:10

Принципиально или нет, я juntion имел в виду. Делается просто. Имеем любую папку (C:\TEMP\1). Идем в C:\TEMP\1 на левой панели, а с правой стоим на C:\TEMP\1 и создаем линк C:\TEMP\1\1 (AltF6). Теперь можно бесконечно входить внутрь C:\TEMP\1\1\1\1\1\...

User avatar
Tim Sobolev
Posts: 693
Joined: Fri 01 Apr, 2005 14:46
Location: Украина
Contact:

Re: Маски файлов

Post by Tim Sobolev » Sun 04 Mar, 2012 08:39

Была идея о назначении каждой простой группе уникального идентификатора, а сложной группе множества внешних идентификаторов, составляющегося из идентификаторов её простых групп. При включении сложной группы в другую группу наследуется это множество и собственный идентификатор включаемой группы. При создании/изменении сложной группы (без превращения в простую)/превращении простой группы в сложную происходит проверка, соответствует ли один из образующих внешних идентификаторов идентификатору самой группы. Да -- рекурсия. Также после этого происходит проверка всех сложных групп, включающих собственный идентификатор этой группы.

User avatar
DrKnS
Posts: 4563
Joined: Thu 04 Aug, 2005 06:44
Location: Kyiv
Has thanked: 2 times
Been thanked: 113 times
Contact:

Re: Маски файлов

Post by DrKnS » Sun 04 Mar, 2012 09:56

NightRoman wrote:можно бесконечно входить внутрь C:\TEMP\1\1\1\1\1\...
По папкам ты ходишь сам, медленно, и рано или поздно либо осознаешь бессмысленность этих походов, либо упрешься в ограничение в 32768 символов.

Здесь же фар будет молча и с дикой скоростью наращивать строку, ограниченную только размером адресного пространства, поэтому проблема актуальна.

2useven10
Posts: 2978
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 2 times
Been thanked: 80 times

Re: Маски файлов

Post by 2useven10 » Sun 04 Mar, 2012 10:05

можно просто ограничить глубину вложенности (скажем до 5 уровней), если больше, считать маску невалидной.
upd: - точнее возвращать ошибку при применении маски, в момент создания она вполне могла быть нерекурсивной...

User avatar
NightRoman
Posts: 5849
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 8 times
Been thanked: 8 times
Contact:

Re: Маски файлов

Post by NightRoman » Sun 04 Mar, 2012 10:10

DrKnS wrote:По папкам ты ходишь сам, медленно, и рано или поздно либо осознаешь бессмысленность этих походов, либо упрешься в ограничение в 32768 символов.
А если поиск? А если какая утилита не ожидает такой подлянки для рекурсивного прохода по папкам? Нет, это все равно капкан.

Да при чем тут это? Рекурсию можно отследить, хоть список составлять и проверять, чтобы туда дважды одна группа не попадала. При встрече группы либо давать полный отлуп, либо ее игноривать. Первое - лучше, пусть юзер устранит у себя эту рекурсию.

Denis
Posts: 1390
Joined: Tue 05 Apr, 2005 18:12
Has thanked: 2 times
Been thanked: 2 times

Re: Маски файлов

Post by Denis » Sun 04 Mar, 2012 10:12

Вроде же как несложно отследить рекурсию - если эта группа уже один раз была - выдавать ошибку.

User avatar
zg
zero-gravity
Posts: 5241
Joined: Tue 15 Mar, 2005 17:36
Location: riga
Been thanked: 42 times
Contact:

Re: Маски файлов

Post by zg » Sun 04 Mar, 2012 12:47

NightRoman wrote:Принципиально или нет, я juntion имел в виду. Делается просто. Имеем любую папку (C:\TEMP\1). Идем в C:\TEMP\1 на левой панели, а с правой стоим на C:\TEMP\1 и создаем линк C:\TEMP\1\1 (AltF6). Теперь можно бесконечно входить внутрь C:\TEMP\1\1\1\1\1\...
это не хард-линки.

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

Re: Маски файлов

Post by HaRT » Mon 05 Mar, 2012 12:02

DrKnS wrote:Здесь же фар будет молча и с дикой скоростью наращивать строку
Известны эффективные алгоритмы для проверки ацикличности направленного графа. Разве этого недостаточно?
Фар есть инструмент, а не нянька. © 2009 DrKnS

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

Re: Маски файлов

Post by John Doe » Mon 05 Mar, 2012 12:07

Code: Select all

drkns 04.03.2012 14:08:07 +0200 - build 2517

1. Продолжение 2488 - группы могут содержать другие группы.

User avatar
Skirda
Posts: 3474
Joined: Wed 16 Mar, 2005 11:01
Been thanked: 1 time

Re: Маски файлов

Post by Skirda » Tue 02 Jul, 2013 14:06

В общем ту такое дело, пытаюсь поправить хельп в части "@MaskGroupsSettings"
Мне сначала непонятна была цель F7 в списке групп масок, ведь есть Ctr-Alt-F в списке. Но потом вспомнил про "группы в группе".
Вроде всё ок, но фигня вот какая:
1. Ищется только точное совпадение. Не айс: "rar" вместо "*.rar" вроде как более юзерфриндли.
2. Как найти "*.h[ay]p"?

Далее (собственно подтверждения ради)
Создал группу <docums>=/\.doc[x]?$/i
Ctrl-I в панелях, добавил и отметил <docums>, на панели *.doc и *.docx. Ok.
Иду в группы правлю <docums>=/\.doc$/i
Ожидаю что фильтр применился. Неа, на панели тот же набор *.doc и *.docx
...перезапуск Far помогает.
We are the Borg. You will be assimilated.
So Say We All!

Post Reply

Return to “Development”