如何确定OT Text Diff

时间:2018-03-14 17:06:52

标签: string reactjs operational-transform sharejs

我正在尝试将sharedb操作实施到我的前端代码上。我目前拥有它,以便当我的text0组件触发其react事件时,它会提交一个操作(https://github.com/ottypes/json0),特别是onChange。例如:

如果我的文字是: Hello World

我删除l来制作它 Hello Word

然后我在结尾添加s来制作它 Hello Words

我想要它以便我的OT文本差异应该有提交给其他客户的操作(除非这是错误的)

[{p: 9, d: 'l'}, {p: 10, i: 's'}]

使用库或手工生成这些操作的最佳方法是什么?我查看了可能使用diff库,但它没有给出操作发生位置的任何索引,尽管给出了插入和删除操作的内容。

1 个答案:

答案 0 :(得分:0)

您可以使用浏览器提供的选择属性和onkeydown事件手动构建更改集,或使用差异库,例如: Neil Fraser https://www.npmjs.com/package/diff_match_patch对我非常有用(免责声明:我是该套餐的发行人。)