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-фильтра: Добавить в file picker режим manifest-фильтра:
- пользователь выбирает папку целиком; - пользователь выбирает папку целиком;
- если в корне выбранной папки есть `.lst`, он ограничивает набор файлов; - если в корне выбранной папки есть `obscure.lst`, он ограничивает набор файлов;
- если `.lst` нет, сохраняется текущее поведение: выбираются все поддерживаемые файлы; - если `.lst` нет, сохраняется текущее поведение: выбираются все поддерживаемые файлы;
- сам `.lst` никогда не отправляется на обработку. - сам `obscure.lst` никогда не отправляется на обработку;
- другие файлы с расширением `.lst` не являются manifest-файлами и не загружаются.
## Правила `.lst` ## Правила `obscure.lst`
Одна строка — одно правило. Одна строка — одно правило.
@@ -62,11 +63,10 @@ reports/name*.docx
1. Получить все файлы выбранной папки и подпапок через `webkitdirectory`. 1. Получить все файлы выбранной папки и подпапок через `webkitdirectory`.
2. Нормализовать `webkitRelativePath`, убрав имя корневой выбранной папки. 2. Нормализовать `webkitRelativePath`, убрав имя корневой выбранной папки.
3. Найти `.lst` только в корне выбранной папки, без учёта регистра. Если найдено 3. Найти только `obscure.lst` в корне выбранной папки, без учёта регистра.
несколько `.lst`, использовать первый в стабильном алфавитном порядке и Остальные `.lst` игнорировать.
показать предупреждение. 4. Если `obscure.lst` нет, передать в текущую логику все поддерживаемые файлы.
4. Если `.lst` нет, передать в текущую логику все поддерживаемые файлы. 5. Если `obscure.lst` найден:
5. Если `.lst` найден:
- прочитать UTF-8 и убрать BOM; - прочитать UTF-8 и убрать BOM;
- разобрать строки и скомпилировать glob в RegExp; - разобрать строки и скомпилировать glob в RegExp;
- отбросить некорректные правила с предупреждением и номером строки; - отбросить некорректные правила с предупреждением и номером строки;
@@ -82,7 +82,7 @@ reports/name*.docx
Если положительное правило не совпало ни с одним файлом, показать предупреждение, Если положительное правило не совпало ни с одним файлом, показать предупреждение,
но продолжить обработку остальных правил. Неподдерживаемые файлы не добавлять. но продолжить обработку остальных правил. Неподдерживаемые файлы не добавлять.
`.lst` во вложенной папке не является manifest-фильтром и обрабатывается как `obscure.lst` во вложенной папке не является manifest-фильтром и обрабатывается как
обычный неподдерживаемый файл. обычный неподдерживаемый файл.
Содержимое ZIP отдельно не фильтровать: ZIP выбирается как один файл и далее Содержимое ZIP отдельно не фильтровать: ZIP выбирается как один файл и далее
@@ -101,7 +101,7 @@ reports/name*.docx
Ошибки и предупреждения передавать через существующий `cfg.onError` или Ошибки и предупреждения передавать через существующий `cfg.onError` или
`statusEl`. Ошибка одного правила не должна останавливать остальные правила. `statusEl`. Ошибка одного правила не должна останавливать остальные правила.
Ошибка чтения или декодирования `.lst` даёт предупреждение и пустой результат. Ошибка чтения или декодирования `obscure.lst` даёт предупреждение и пустой результат.
## Где менять код ## Где менять код
@@ -121,7 +121,7 @@ upload/frontend/table/lst_filter.js
Проверить: Проверить:
1. Папка без `.lst` сохраняет старое поведение. 1. Папка без `.lst` сохраняет старое поведение.
2. `.lst` не попадает в результат. 2. `obscure.lst` не попадает в результат, другие `.lst` также не загружаются.
3. `*.pdf`, `name*.pdf`, `?`, `**` и классы символов. 3. `*.pdf`, `name*.pdf`, `?`, `**` и классы символов.
4. `*.pdf` совпадает только с файлом в корне, а `**/*.pdf` — также с `x.pdf` 4. `*.pdf` совпадает только с файлом в корне, а `**/*.pdf` — также с `x.pdf`
в корне и файлами в подпапках. в корне и файлами в подпапках.
@@ -136,8 +136,8 @@ upload/frontend/table/lst_filter.js
13. Ошибка чтения `.lst` даёт пустой результат и предупреждение. 13. Ошибка чтения `.lst` даёт пустой результат и предупреждение.
14. Правило без совпадений даёт предупреждение. 14. Правило без совпадений даёт предупреждение.
15. Только отрицательные или полностью битые правила дают пустой результат. 15. Только отрицательные или полностью битые правила дают пустой результат.
16. Несколько `.lst` дают предупреждение и используют первый по имени. 16. Другой `.lst` в корне не включает manifest-режим.
17. `.lst` во вложенной папке не включает manifest-режим. 17. `obscure.lst` во вложенной папке не включает manifest-режим.
18. ZIP выбирается целиком, без фильтрации его внутреннего содержимого. 18. ZIP выбирается целиком, без фильтрации его внутреннего содержимого.
## Ограничения реализации ## Ограничения реализации