Duplicate Fighter (Анти-дубликатор)

Здесь выкладываются готовые к использованию макросы и скрипты.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

Захотелось создать альтернативу плагину SortStrings по части работы с дубликатами строк.
dupfighter-v13.7z
(12.35 KiB) Downloaded 116 times
Last edited by Shmuel on Tue 18 Oct, 2022 18:22, edited 2 times in total.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

Кто-нибудь может объяснить, зачем нужна "очистка" строки-дубликата, т.е. замена её пустой строкой? В чём смысл?
Я сделал такую операцию, поскольку она есть в плагине SortStrings, но что-то не могу понять, зачем это может понадобиться.
Удалить дубликат - понятно, а очистить - не очень.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

Заменил в первом сообщении вложение на версию 2.
- Справка - как коммент в начале файла (пока только на английском).
- Вместо меню - диалог.
- Добавилась (опциональная) возможность использовать Lua-выражения.
- Почти не тестировалось, буду благодарен за багрепорты.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Duplicate Fighter (Анти-дубликатор)

Post by fml2 »

Я самим макро еще не пользовался, а только почитал справку, т.е. комментарий в начале файла. И у меня такие замечания:

1.

2. (главное) Мне кажется, было бы логичнее, если бы дупликатами считались строки, для которых булевский результат выражения true, а не false. Т.е. смысл выражения таков: "Это -- дупликат?"
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

fml2, спасибо за ваши замечания.

По поводу справки: ещё буду редактировать, сравню с вашим вариантом.

По поводу трактовки булевого результата: вначале сделал именно так, как вы предлагаете, то-есть true означал дубликат. Но потом поймал себя на ощущении, что мне важнее определить, что хочется оставить, чем то, что хочется удалить, после чего сделал как сейчас. Буду думать ещё.
fml2
Posts: 534
Joined: Mon 09 Jul, 2012 22:10
Has thanked: 2 times
Been thanked: 8 times

Duplicate Fighter (Анти-дубликатор)

Post by fml2 »

Shmuel wrote:Но потом поймал себя на ощущении, что мне важнее определить, что хочется оставить, чем то, что хочется удалить
Я согласен, что возможны обе трактовки. Но тогда надо бы заголовок поля "Expression" сделать более информативным, т.е. чтобы прямо в диалоге было понятно, что означает выражение (true -- это "оставить" или "стереть"?).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

Заменил в первом сообщении вложение на версию 3.
- Справка поправлена и расширена.
- При отсутствии выделения обрабатывается весь файл.
- Изменена и упрощена логика определения дубликатов (описано в справке).

Любые замечания и предложения приветствуются.
Arama
Posts: 121
Joined: Mon 01 Jun, 2015 12:14
Has thanked: 8 times
Been thanked: 4 times

Duplicate Fighter (Анти-дубликатор)

Post by Arama »

Shmuel,

Неприятный момент, удаляет как дубликаты пустые строки, что ломает форматирование, так задумано?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

Пустые строки равны друг другу, поэтому воспринимаются как дубликаты и удаляются.
Можно, конечно, обойти это:

Code: Select all

╔═══════════════════════ Duplicate Fighter ═══════════════════════╗
║                                                                 ║
║ (•) 1 Remove duplicates                                         ║
║ ( ) 2 Clear duplicates                                          ║
║ ( ) 3 Remove non-uniques                                        ║
║ ( ) 4 Clear non-uniques                                         ║
║                                                                 ║
║ [x] Use Expression            [ ] Convert to boolean            ║
║ Expression:                                                     ║
║ L~="" and L                                                    ↓║
А может опцию добавить стоит?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

Добавил опцию "Сохранять пустые строки". Обновил вложение в первом сообщении.
Arama
Posts: 121
Joined: Mon 01 Jun, 2015 12:14
Has thanked: 8 times
Been thanked: 4 times

Duplicate Fighter (Анти-дубликатор)

Post by Arama »

Спасибо!
Arama
Posts: 121
Joined: Mon 01 Jun, 2015 12:14
Has thanked: 8 times
Been thanked: 4 times

Duplicate Fighter (Анти-дубликатор)

Post by Arama »

А можно выводить статистику работы? Ну там столько строк удалено...
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

Добавлен опциональный вывод статистики. Изменён хоткей. Вложение в первом сообщении обновлено.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

Duplicate Fighter (Анти-дубликатор)

Post by Shmuel »

И ещё раз. Статистика расширена.
Arama
Posts: 121
Joined: Mon 01 Jun, 2015 12:14
Has thanked: 8 times
Been thanked: 4 times

Duplicate Fighter (Анти-дубликатор)

Post by Arama »

А хоткей зачем менять? Приходится руками обратно возвращать...
Post Reply

Return to “Полезные макросы и скрипты”