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