From 64fdbdbeb8090ec3e65377cdae12da90b8b21ac0 Mon Sep 17 00:00:00 2001 From: Repinoid Date: Wed, 21 Oct 2026 15:56:04 +0300 Subject: [PATCH] Use fixed obscure.lst manifest name --- PLAN-LST-FILTER.md | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/PLAN-LST-FILTER.md b/PLAN-LST-FILTER.md index 3995f60..e490406 100644 --- a/PLAN-LST-FILTER.md +++ b/PLAN-LST-FILTER.md @@ -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 выбирается целиком, без фильтрации его внутреннего содержимого. ## Ограничения реализации