Позволяет осуществлять нечеткий поиск по коллекциям 1С, таким как Массив, Структура, Соответствие, ТаблицаЗначений.
Данная библиотека - реализация алгоритма (https://github.com/jhawthorn/fzy) перенесенная на OneScript.
Позволяет осуществлять нечеткий поиск по коллекциям 1С, таким как Массив, Структура, Соответствие, ТаблицаЗначений.
opm install fzy
Подключение:
#Использовать fzy
Пример:
#Использовать fzy
Массив = Новый Массив();
Массив.Добавить("app/models/user.rb");
Массив.Добавить("app/models/customer.rc");
Массив.Добавить("app/models/block.rc");
Поиск = Новый Поиск(Массив); // Создание поиска
Результат = Поиск.НайтиЗначенияИлиКлючи("amuser", 1); // Осуществление поиска, и получение результат
Функция "НайтиЗначенияИлиКлючи" имеет следующие параметры:
Тип возвращаемых ключей по коллекциям
Коллекция | Возвращаемый ключ |
---|---|
Массив | Индекс элемента |
Структура | Ключ |
Соответствие | Ключ |
Таблица значений | Строка таблицы значений |
Процедура "ЗагрузитьДанные" Имеет следующие параметры
Дополнительно есть класс для выполнения интерактивного поиска.
#Использовать fzy
Поиск = Новый Поиск();
Поиск.ЗагрузитьДанные(Массив);
ИнтерактивныйПоиск = Новый ИнтерактивныйПоиск(Поиск);
РезультатЗначение = ИнтерактивныйПоиск.НачатьВыбор();
В конструктор которого нужно передать объект "поиск" с подготовленными данными.
Главная функция "НачатьВыбор", имеет два параметра:
Управление:
Кнопка | Действие |
---|---|
ESC | Отмена выбора. Вернет неопределено |
Tab | Переключить на поиск в найденном |
Enter | Выбор текущего элемента |
Стрелка вверх | Курсор вверх |
Стрелка вниз | Курсор вниз |
Стрелка влево | Курсор в самый верх(последний элемент) |
Стрелка вправо | Курсор в самый низ(первый элемент) |
Любая другая | В режиме выбора переходит в режим ввода. |
Интерактивный поиск работает в двух режимах.
На данный момент при прокрутке большего списка в интерактивном режиме может быть мерцание, разной степени бесячести. Это из-за полной отрисовки экрана. Это поправлю в будущем, если это кому-то будет нужно.
Этот метод можно применять например для:
#Использовать fzy
#Использовать gitrunner
ГитРепозиторий = Новый ГитРепозиторий();
ГитРепозиторий.УстановитьРабочийКаталог("/home/nick/tmp/TestRepoDir");
ТЗВеток = ГитРепозиторий.ПолучитьСписокВеток();
Поиск = Новый Поиск(ТЗВеток, "Имя");
ИнтерактивныйПоиск = Новый ИнтерактивныйПоиск(Поиск, "Начните ввод имени ветки");
ВыбранноеЗначение = ИнтерактивныйПоиск.НачатьВыбор(Истина);
ГитРепозиторий.ПерейтиВВетку(ВыбранноеЗначение.Имя);
Сообщить("Переключились на ветку " + ВыбранноеЗначение.Имя);
#Использовать fzy
#Использовать 1connector
// допустим хочу прочитать из интернета страницу, выбрать нужный файл и скачать
// смотреть будем эту страницу http://mirror.corbina.net/debian/
Урл = "http://mirror.corbina.net/debian/";
Результат = КоннекторHTTP.Get(Урл).Текст();
СсылкиДляСкачивания = Новый Соответствие();
Для каждого ТекСтрока Из СтрРазделить(Результат, Символы.ПС) Цикл
Если СтрНачинаетсяС(ТекСтрока, "<a href=") Тогда
ЧастиСсылки = СтрРазделить(ТекСтрока, """");
Если не СтрЗаканчиваетсяНа(ЧастиСсылки[1], "/") Тогда
СсылкиДляСкачивания.Вставить(Урл+ЧастиСсылки[1], Сред(СтрРазделить(ЧастиСсылки[2],"<")[0],2));
КонецЕсли
КонецЕсли;
КонецЦикла;
Поиск = Новый Поиск(СсылкиДляСкачивания);
ИнтерактивныйПоиск = Новый ИнтерактивныйПоиск(Поиск, "Начните ввод имени файла");
ВыбранноеЗначение = ИнтерактивныйПоиск.НачатьВыбор(Истина);
// Представим, что мы тут качаем файл.
Сообщить(СтрШаблон("Выбран файл для скачивания %1", ВыбранноеЗначение));
Подробно смотрите примеры и тесты.
В дальнейшем наполню всевозможными примерами применения, которые будут приходить в голову.
1. Откройте маркетплейс из главного меню TurboConf или из меню в панели уведомлений.
2. Найдите нужную разработку.
3. Нажмите кнопку Установить.
TurboConf все установит автоматически!