Оперативное реализация преобразования (не JavaScript) [закрыто
-
10-10-2019 - |
Вопрос
Я хочу внедрить многопользовательский оперативное преобразование Просто для простых текстовых изменений на стороне сервера на веб-сайте.
Есть ли реализация не Javascript, которую вы можете порекомендовать?
Решение
Рассмотрим Google-Diff-Match-Patch-Diff, Match и Patch Libraries для простого текста:
«Библиотеки Diff Match и Patch предлагают надежные алгоритмы для выполнения операций, необходимых для синхронизации простого текста».
DIFF: Сравните два блока простого текста и эффективно верните список различий.
Diff Demo Match: Учитывая строку поиска, найдите его лучшее нечеткое совпадение в блоке простого текста. Взвешен как для точности, так и для местоположения.
Сопоставьте демо -патч: примените список патчей на простой текст. Используйте наиболее эффективные для применения патча, даже если базовый текст не соответствует.
Патч демонстрация в настоящее время доступна в Java, JavaScript, C ++, C#, Objective C, Lua и Python. Независимо от языка, каждая библиотека имеет одинаковый API и одинаковую функциональность. Все версии также имеют всеобъемлющие тестовые жгуты.
Вы можете найти это здесь.
Другие советы
Рассмотрим py-infinote.
Py-Infinote-это порт Python Jinfinote, предлагающий совместный протокол редактирования текста (принятый), который можно использовать для написания многопользовательских редакторов совместного текста. Py-Infinote используется в проекте HWIOS.
Это еще одна довольно интересная реализация, интегрирующая оперативное преобразование Google Wave с Jedit:
OpenCoweb - популярная реализация OT. Есть несколько реализаций сервера, написанных на разных языках.
Простая справочная реализация, которую я буду улучшать в ближайшие несколько месяцев, добавив более сложные вещи;
Теперь есть:
- Простые текстовые операции; сохранить, вставить, удалить и их преобразования друг против друга
- аннотации по тексту и преобразованиям
- генерация изменений и применение их к тексту