操作变换实现(不是javascript)

时间:2010-11-15 12:26:15

标签: java ruby transform operational

我希望在网站上的服务器端实现基于纯文本的更改实现多用户operational transform

是否有推荐的非JavaScript实施?

5 个答案:

答案 0 :(得分:2)

考虑使用Google-Diff-Match-Patch - 纯文本的差异,匹配和补丁库:

“Diff Match和Patch库提供了强大的算法来执行同步纯文本所需的操作。”

Diff:比较两个纯文本块,并有效地返回差异列表。

Diff Demo 匹配:给定搜索字符串,在纯文本块中找到最佳模糊匹配。为准确性和位置加权。

匹配演示 修补程序:将修补程序列表应用于纯文本。即使基础文本不匹配,也要尽最大努力应用补丁。

补丁演示 目前提供Java,JavaScript,C ++,C#,Objective C,Lua和Python。无论语言如何,每个库都具有相同的API和相同的功能。所有版本都有全面的测试工具。

你可以找到它here

答案 1 :(得分:0)

考虑Py-infinote。

py-infinote是JInfinote的python端口,提供协作文本编辑协议(adOPTed),可用于编写多用户协作文本编辑器。 Py-infinote用于HWIOS项目。

https://github.com/sveith/jinfinote

答案 2 :(得分:0)

这是将google wave的操作变换与jedit集成的另一个非常有趣的实现:

https://github.com/djspiewak/cccp

答案 3 :(得分:0)

OpenCoweb是一种流行的OT实现。有几种服务器实现用不同的语言编写。

答案 4 :(得分:0)

简单的参考实现,我将在未来几个月通过添加更复杂的东西来改进;

现在它有:

  • 简单的文本操作;保留,插入,删除和相互转换
  • 文本和转换的注释
  • 生成更改并将其应用于文本

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