0

我正在开发一个应用程序,该应用程序使用户能够在文本文章上进行协作(通常通过突出显示/注意特定的文本范围)。

我将有一个 API 以某种形式提供文档(它们现在是 .doc 格式,但我想以 Markdown 之类的形式提供它们)。我可以放心地假设文章的内容不会改变。

我目前停留在这些亮点的编码格式上。问题是这些文章有一些格式(即,作者将从另一篇外部文章中引用的块引用,以及典型的换行符和段落间距),因此客户端会以不同于服务器的方式解释该格式.

例如,Markdown 使用>字符来表示块引用中的内容,而 HTML 使用<blockquote>- 所以在这种情况下,我的 Javascript 代码 - 当用户突出显示位于 a 中的文本时<blockquote>- 需要进行一些混乱的计算来获得正确的字符偏移量。

最终,我希望始终在服务器上使用字符偏移量,如下所示:

// e.g.
// from the 55th character to the 58th character
// offset = [55, 3]

我简要地考虑了其他几种方法:

  • 将文章以 HTML 格式发送到客户端,尽管这会产生相同的问题,因为我需要将 CSS 类等添加到 HTML 标记中
  • 将文章内容作为字符串数组发送(在文章中的每个换行符处拆分)并为每个项目指定一个类型(例如,'normal' 或 'blockquote')——尽管这似乎是处理这个问题的一种天真的方法

是否有其他更简洁的方法可以对我缺少的客户端的这些亮点进行编码?

编辑:为了更清楚 - 这将是一个客户端应用程序(需要现代浏览器)。

4

1 回答 1

1

这是一个具有挑战性的问题;没有一个简单的答案。您将需要提出一些易于使用的不变量,理想情况下允许您使用不同的格式化标记语言。我建议将偏移量存储到文档文本中(忽略标记)。当然,从编辑器中获取文本偏移可能并不容易。如果您在浏览器中工作,我认为内容将是 HTML,并且您将从浏览器的选择对象中获得偏移量,它不会提供您理想中想要的文本偏移量。不过,您可以使用一些花哨的 XPath 来计算它。即使您这样做,如果您将文档转换为另一种格式,您仍然可能会遇到问题,因为换行符可能会被转换或删除。

所以我认为答案是:不,没有灵丹妙药,你走在正确的轨道上。

于 2013-03-05T04:32:20.097 回答