Реализация Оперативного Преобразования (не JavaScript)

Я рассчитываю реализовать многопользовательское операционное преобразование только для текстовых изменений на стороне сервера на веб-сайте.

Есть ли не-JavaScript реализация, которую вы можете порекомендовать?

5 ответов

Решение

Рассмотрим Google-Diff-Match-Patch - библиотеки Diff, Match и Patch для простого текста:

"Библиотеки Diff Match и Patch предлагают надежные алгоритмы для выполнения операций, необходимых для синхронизации простого текста".

Разница: сравнить два блока простого текста и эффективно вернуть список различий.

Diff Demo Match: по строке поиска найдите лучшее нечеткое совпадение в блоке простого текста. Взвешены как по точности, так и по местоположению.

Match Demo Patch: применить список патчей к простому тексту. Приложите все усилия, чтобы применить исправление, даже если основной текст не совпадает.

Демо-версия патча В настоящее время доступно на Java, JavaScript, C++, C#, Objective C, Lua и Python. Независимо от языка каждая библиотека имеет одинаковый API и одинаковые функциональные возможности. Все версии также имеют комплексные тестовые комплекты.

Вы можете найти это здесь.

OpenCoweb является популярной реализацией OT. Существует несколько реализаций сервера, написанных на разных языках.

Рассмотрим Py-Infinote.

py-infinote - это порт JInfinote для Python, предлагающий протокол совместного редактирования текста (adOPTed), который можно использовать для написания многопользовательских текстовых редакторов для совместной работы. Py-infinote используется в проекте HWIOS.

https://github.com/sveith/jinfinote

Простая справочная реализация, которую я буду улучшать в ближайшие несколько месяцев, добавляя более сложные вещи;

Теперь оно имеет:

  • простые текстовые операции; сохранить, вставить, удалить и их преобразования друг против друга
  • аннотации над текстом и преобразованиями
  • генерация изменений и применение их к тексту

https://github.com/slevental/operational-transformation

Это еще одна довольно интересная реализация, интегрирующая операционное преобразование google wave с jedit:

https://github.com/djspiewak/cccp

Другие вопросы по тегам