surt
Version:
Smart suggest widget
26 lines (19 loc) • 1.9 kB
Plain Text
рестораны wifi
123рестораны wifi гантеля
. Пусть text - результат выполнения функции text() на инпуте
. Пусть kit - рассматриваемый кит сагеста, в котором нужно обернуть совпадающую часть
. Пусть kitText - результат применения функции text() к kit
. Пусть offset - номер символа, с которого начинается первое вхождение подстроки
. Если offset не существует - ничего не делаем
. Иначе, делаем цикл по токенам kit
. Пусть kitOffset - номер первого символа текущего токена в строке kitText
. Если kitOffset + token.length меньше offset, то в текущем ките ничего не делаем. То есть, если выделяемая подстрока начинается с какого-то следующего токена.
. Иначе,
. Находим правую границу выделения в текущем токене, как Math.max() от правой границы самого токена и от offset + text.length
. Оборачиваем выделенную часть в span
. Удаляем первое вхождение выделенной части текста токена из text
Проблемы
1. Оборачивание разделителей.
2. Куча лишнего html
Пока останавливаемся на варианте оборачивания text внутри каждого токена.
Как вариант - не разделять токены внутри китов сагеста дивами, тогда все проще.