Как мне записать изменения в большом текстовом поле? - PullRequest
0 голосов
/ 10 марта 2011

Допустим, я хочу, чтобы пользователь написал историю за 20 минут. После того, как пользователь закончил, я хочу воспроизвести процесс написания истории, чтобы я мог видеть, как пользователь делал это. Как бы я это сделал? Я не хочу смотреть каждую секунду этого, очевидно, но я хотел бы видеть снимок всякий раз, когда было сделано "большое изменение". «Большое изменение» должно быть определено мной. Это может быть количество добавлений или вычитаний X.

Я подумал о том, чтобы как-то пытаться постоянно отслеживать текстовое поле на предмет изменений и затем сохранять текст в виде строки в массиве каждый раз, когда происходит «большое изменение». Затем, чтобы воспроизвести это, я проиграю строковый массив с задержкой в ​​1 секунду.

Кто-нибудь думает о лучшем способе сделать это или знает библиотеку, которая поможет?

Спасибо!

1 Ответ

1 голос
/ 10 марта 2011

Давайте считать само собой разумеющимся, что у вас есть возможность сохранить это состояние и просто взглянуть на проблему обнаружения и отображения различий.Самым сложным аспектом вашей проблемы будет определение и последующее выявление того, что вы называете «большим изменением».Если мы отложим это на мгновение, я думаю, что есть два способа сделать это:

1) Операционное преобразование - (http://en.wikipedia.org/wiki/Operational_transformation)

) Это то, что Google Docs (etherpad) использует для синхронизации реальногосовместное редактирование в нескольких браузерах. С помощью OT вы можете практически воссоздать видео об изменениях, внесенных в документ. Это можно увидеть в действии в истории изменений thinklinkr.com (полное раскрытие - я один из основателей).

2) Diff-match-path - (http://code.google.com/p/google-diff-match-patch/)

На самом деле это набор из трех алгоритмов, которые можно использовать для эффективного создания и устранения различий между текстовыми документами. Я думаю, что это может быть лучше дляВы указали свое требование относительно различий в чанках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...