Как эффективно хранить все текстовые правки? - PullRequest
2 голосов
/ 05 июня 2019

Я создаю приложение PHP Symfony 4 + Vue.js.И одна из его частей - текстовый редактор, который запоминает все правки в тексте.Я видел, как та же проблема решается в редакторе ACE - они сохраняют каждую букву, но мне не нужна такая точность.Достаточно будет хранить подстроки с типом действия.Что-то вроде:

{ action: add, from: 0, to: null, text: "New string" }

И результатом будет текст: «Новая строка».Потом я что-то изменил:

{ action: add, from: 3, to: 4, text: 'Delicious S' }

И результатом стало: «Новая вкусная строка».Сохраняя такие «коммиты» с текстом, я могу восстановить состояние текста в какой-то момент, применяя опубликованные коммиты до необходимого момента.

Считаю ли я правильным или есть какой-то лучший способ?

Может быть, вы знаете какой-нибудь эффективный алгоритм или структуру данных для хранения такой задачи?

Какие координаты редактирования в тексте следует использовать, чтобы работать с ними более эффективно?

...