ot-text中文文档|ot-text js中文教程|解析

npm npmdoc 2年前 (2021-12-25) 364次浏览

ot-text中文文档|ot-text js中文教程|解析

安装命令:npm i ot-text

明文 OT 类型

注意:此 OT 类型使用 UTF16 偏移量而不是 unicode 代码点来计算字符数。这在 javascript 中稍微快一些,但它与其他语言的 ot 实现不兼容。对于未来的项目,我建议您改用
ot-text-unicodeot-text-unicode 还具有完整的打字稿类型信息,它支持绳索以实现更好的字符串编辑性能。

这种 OT 类型可用于编辑纯文本文档,如源代码或降价。

这个项目的历史在这里

有关此类型实现的规范的文档,请参阅ottypes/docs

规格

明文 OT 类型将文档视为一个巨大的字符串,直接将 index 编辑到字符串中。这与大多数文本编辑器不同,后者将文档分解为一系列行。对于现代计算机上的小文档,转换并不是特别昂贵。但是,如果您有大型文档,则应该使用像jumprope
librope这样的绳索库

每个操作都描述了对文档的遍历。遍历可以随时编辑文档。

例如,给定文档:

"ABCDEFG"

你可以应用操作

[1, ' hi ', 2, {d:3}]

此操作将跳过第一个字符,插入 ‘ hi ‘,再跳过 2 个字符,然后删除接下来的 3 个字符。结果将是:

"A hi BCG"

操作

操作是沿文档移动的组件列表。每个组件都是其中之一

  • Number N : 向前跳过文档中的N 个字符
  • “str” :在文档的当前位置插入“str”
  • {d:N} : 删除文档当前位置的N 个字符

该操作不必跳过文档中的最后一个字符。

选择

文本类型也有操作选择的方法。

选择范围是选择范围的单个数字(光标位置)或一对 [anchor, focus] 数字(又名 [start, end])。请注意,结束可以在开始之前。


评论

这是 ShareJS 明文类型的第三次迭代。现在已经很长时间没有改变了。

第一次迭代类似,只是它是可逆的。可逆性很好,但我想最终构建一个任意的 P2P OT 系统,而在 p2p 设置中,可逆性变得不切实际。我不希望系统依赖它。

第二次迭代使每个组件指定一个位置并在那里进行编辑。操作是这些编辑的列表。因为组件没有排序,如果将两个大的操作相互转换,则需要 M*N 时间来转换。可以对组件进行排序以解决此问题,但是如果您打算这样做,您也可以按设计对它们进行排序 – 这就是当前文本实现所做的。我认为单独的编辑样式更好,因为我希望它更简单,但是当我实现它时,我发现每个方法的实现大小几乎相同。

还有一个这种类型C 实现,它 [insanely](h ttps://dl.dropboxusercontent.com/u/2494815/ot%20apply%20bench%201.png) fast实现几乎相同,除了这个 javascript 实现使用 16 位字计算字符,而 C 实现使用 unicode 代码点计算字符。如果您的文档中的星体平面中有任何字符(如表情符号😅),则编辑和光标位置将在实现之间错位。请参阅此处了解更多信息如果您正在构建跨平台应用程序,请改用较新的ot-text-unicode


执照

贡献给这个存储库的所有代码都是在标准的 MIT 许可下获得许可的:

版权所有 2011 ottypes 库贡献者

特此授予任何人免费获得本软件和相关文档文件(“软件”)副本的许可,不受限制地处理本软件,包括但不限于使用、复制、修改、合并的权利、发布、分发、再许可和/或销售本软件的副本,并允许向其提供本软件的人员这样做,但须符合以下条件:

该软件“按原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途的适用性和不侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任承担责任,无论是在合同诉讼、侵权行为或其他方面,由软件或软件的使用或使用或其他原因引起的或与之相关的软件。

项目主页地址:https://github.com/ottypes/text
项目issue数量: 0

项目贡献人员列表:


极客公园 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:ot-text中文文档|ot-text js中文教程|解析
喜欢 (0)
.excerpt .focus {display:none}