Use fixed obscure.lst manifest name
This commit is contained in:
+13
-13
@@ -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 выбирается целиком, без фильтрации его внутреннего содержимого.
|
||||
|
||||
## Ограничения реализации
|
||||
|
||||
Reference in New Issue
Block a user