Как определить OT Text Diff
Я пытаюсь реализовать sharedb
операции на мой код переднего конца. В настоящее время он у меня есть, чтобы он отправлял операцию ( https://github.com/ottypes/json0), в частности text0
когда мой react
компонент запускает его onChange
событие. Например:
Если бы мой текст был:Hello World
и я удаляю l
сделать этоHello Word
а потом я добавляю s
в конце, чтобы сделать этоHello Words
Я хочу, чтобы в моей разнице в тексте OT были операции для отправки остальным клиентам (если это не так)
[{p: 9, d: 'l'}, {p: 10, i: 's'}]
Каков наилучший способ для генерации этих операций с помощью библиотеки или вручную? Я изучил, возможно, используя diff
библиотека, но она не дает никаких индексов того, где операция имела место, несмотря на то, что дают операции вставки и удаления.
1 ответ
Вы можете использовать предоставляемые браузером свойства выбора и события onkeydown для создания наборов изменений вручную или использовать разностную библиотеку, например, https://www.npmjs.com/package/diff_match_patch от Нила Фрейзера. Это было очень полезно для меня (заявление об отказе от ответственности) Я являюсь издателем этого пакета.)