Use fixed obscure.lst manifest name

This commit is contained in:
Repinoid
2026-10-21 15:56:04 +03:00
parent c0acb52cf6
commit 64fdbdbeb8
+13 -13
View File
@@ -5,11 +5,12 @@
Добавить в file picker режим manifest-фильтра:
- пользователь выбирает папку целиком;
- если в корне выбранной папки есть `.lst`, он ограничивает набор файлов;
- если в корне выбранной папки есть `obscure.lst`, он ограничивает набор файлов;
- если `.lst` нет, сохраняется текущее поведение: выбираются все поддерживаемые файлы;
- сам `.lst` никогда не отправляется на обработку.
- сам `obscure.lst` никогда не отправляется на обработку;
- другие файлы с расширением `.lst` не являются manifest-файлами и не загружаются.
## Правила `.lst`
## Правила `obscure.lst`
Одна строка — одно правило.
@@ -62,11 +63,10 @@ reports/name*.docx
1. Получить все файлы выбранной папки и подпапок через `webkitdirectory`.
2. Нормализовать `webkitRelativePath`, убрав имя корневой выбранной папки.
3. Найти `.lst` только в корне выбранной папки, без учёта регистра. Если найдено
несколько `.lst`, использовать первый в стабильном алфавитном порядке и
показать предупреждение.
4. Если `.lst` нет, передать в текущую логику все поддерживаемые файлы.
5. Если `.lst` найден:
3. Найти только `obscure.lst` в корне выбранной папки, без учёта регистра.
Остальные `.lst` игнорировать.
4. Если `obscure.lst` нет, передать в текущую логику все поддерживаемые файлы.
5. Если `obscure.lst` найден:
- прочитать UTF-8 и убрать BOM;
- разобрать строки и скомпилировать glob в RegExp;
- отбросить некорректные правила с предупреждением и номером строки;
@@ -82,7 +82,7 @@ reports/name*.docx
Если положительное правило не совпало ни с одним файлом, показать предупреждение,
но продолжить обработку остальных правил. Неподдерживаемые файлы не добавлять.
`.lst` во вложенной папке не является manifest-фильтром и обрабатывается как
`obscure.lst` во вложенной папке не является manifest-фильтром и обрабатывается как
обычный неподдерживаемый файл.
Содержимое ZIP отдельно не фильтровать: ZIP выбирается как один файл и далее
@@ -101,7 +101,7 @@ reports/name*.docx
Ошибки и предупреждения передавать через существующий `cfg.onError` или
`statusEl`. Ошибка одного правила не должна останавливать остальные правила.
Ошибка чтения или декодирования `.lst` даёт предупреждение и пустой результат.
Ошибка чтения или декодирования `obscure.lst` даёт предупреждение и пустой результат.
## Где менять код
@@ -121,7 +121,7 @@ upload/frontend/table/lst_filter.js
Проверить:
1. Папка без `.lst` сохраняет старое поведение.
2. `.lst` не попадает в результат.
2. `obscure.lst` не попадает в результат, другие `.lst` также не загружаются.
3. `*.pdf`, `name*.pdf`, `?`, `**` и классы символов.
4. `*.pdf` совпадает только с файлом в корне, а `**/*.pdf` — также с `x.pdf`
в корне и файлами в подпапках.
@@ -136,8 +136,8 @@ upload/frontend/table/lst_filter.js
13. Ошибка чтения `.lst` даёт пустой результат и предупреждение.
14. Правило без совпадений даёт предупреждение.
15. Только отрицательные или полностью битые правила дают пустой результат.
16. Несколько `.lst` дают предупреждение и используют первый по имени.
17. `.lst` во вложенной папке не включает manifest-режим.
16. Другой `.lst` в корне не включает manifest-режим.
17. `obscure.lst` во вложенной папке не включает manifest-режим.
18. ZIP выбирается целиком, без фильтрации его внутреннего содержимого.
## Ограничения реализации