Я создаю приложение PHP Symfony 4 + Vue.js.И одна из его частей - текстовый редактор, который запоминает все правки в тексте.Я видел, как та же проблема решается в редакторе ACE - они сохраняют каждую букву, но мне не нужна такая точность.Достаточно будет хранить подстроки с типом действия.Что-то вроде:
{ action: add, from: 0, to: null, text: "New string" }
И результатом будет текст: «Новая строка».Потом я что-то изменил:
{ action: add, from: 3, to: 4, text: 'Delicious S' }
И результатом стало: «Новая вкусная строка».Сохраняя такие «коммиты» с текстом, я могу восстановить состояние текста в какой-то момент, применяя опубликованные коммиты до необходимого момента.
Считаю ли я правильным или есть какой-то лучший способ?
Может быть, вы знаете какой-нибудь эффективный алгоритм или структуру данных для хранения такой задачи?
Какие координаты редактирования в тексте следует использовать, чтобы работать с ними более эффективно?