@atlaskit/编辑-bitbucket- transfer
编辑 Bitbucket 变压器,用于在ADF,Markdown,和HTML格式之间转换.
说明
这个软件包提供专门为Bitbucket编辑器集成而设计的转换公用设备. 它处理在ADF(阿特拉斯文文档格式),Markdown,和HTML之间转换的复杂管线,特别侧重于通过转换过程的字幕逃出和属性保存.
关键特性
变形器
- 序列器: ADF 到Markdown 转换的主要序列化工具
- 表格序列器: 专用表格转换处理
- 工具函数: 通用转型公用事业
引出管道
- HTML 属性逃避: 为 Markdown 存储安全地逃脱标题
- 统一逃脱战略: 处理 HTML 元字符和 Markdown 标点
- 往返安全:通过ADF → Markdown → HTML → ADF 管道确保数据完整性
实例
这套软件包包括综合实例 examples/ 目录 :
- 基本变压器示例
- Bitbucket HTML 处理
- Bitbucket 标记下处理
- 辅助设施和型式
团队
编辑器: 协作
说明逃跑和Markdown/HTML/ADF管道
这个软件包将 ADF 序列化到 Markdown 以进行存储,后来用 python-markdown 从 HTML 重建由后端提供的 ADF 。 图像标题使用 python- markdown 存储在 Markdown attr_list 图像上的语法 :
{: data-layout='center' data-caption='...'}
为什么逃出字幕很棘手
- python- markdown 先解析出Markdown, 然后应用
attr_list将属性绑定在元素上。 如果内部有标题文字data-caption包含Markdown标记(例如:.**, (中文(简体) ),__, (中文(简体) ),`, (中文(简体) ),~~),这些标记可以在Markdown解析时被解释. - 当马克当标记在属性文本中被解释时,属性列表可能会被错构或被弹出,导致属性没有被设置在元素上(例如丢失)
data-caption) (中文(简体) ).
统一属性逃出
为了保证字幕在Markdown → HTML 转换安全地存活下来,我们使用统一的逃生策略:
-
escapeHtmlAttribute(text): 逃出 HTML 属性元字符 (&, (中文(简体) ),<, (中文(简体) ),>, (中文(简体) ),", (中文(简体) ),')和 Markdown/atr list- systems- punctuation 通过将其转换成数字实体:*→*, (中文(简体) ),_→_, (中文(简体) ),`→`, (中文(简体) ),~→~|→|, (中文(简体) ),{→{, (中文(简体) ),}→}[→[, (中文(简体) ),]→], (中文(简体) ),(→(, (中文(简体) ),)→), (中文(简体) ),!→!
-
这使得 python-markdown 无法将标题内容解释为 Markdown 或 attr list 的一部分, 安全保存属性 .
-
unescapeHtmlAttribute(text):在从HTML读回到ADF时,解码相同的超集实体. 解码对命令很敏感..&用于防止双重unescape问题。 解开后,我们将Markdown格式化的有限子集进行消毒和解析以显示(**, (中文(简体) ),_, (中文(简体) ),~~,以及`)进入我们控制的HTML安全标记.
端到端流
- ADF — Markdown( bbc- frontbucket - 使用此软件包) :
- 说明被序列化为
data-caption使用escapeHtmlAttribute以编码 HTML 元字符和 Markdown puntuation.
- 说明被序列化为
- Markdown — HTML( bbc- core) : (中文(简体) )
- python- markdown 缩写为 HTML 并应用
attr_list。 。 。 . - 由于标出是实体编码的,所以即使标题中包含Markdown标记或
{...}- 像文字一样.
- python- markdown 缩写为 HTML 并应用
- HTML ~ ADF (前端) :
- 我们读了
data-caption从 html 调用unescapeHtmlAttribute,它同时解码 HTML 和 puncutuation 实体. - 然后对Markdown的一个安全子集进行消毒和解析,以生成ADF字幕节点(例如,
<strong>, (中文(简体) ),<em>, (中文(简体) ),<s>, (中文(简体) ),<code>) (中文(简体) ).
- 我们读了
移徙
escapeAttrListValue已删除。 使用escapeHtmlAttribute财务报告和审定财务报表unescapeHtmlAttribute。 。 。 .
安全考虑
- 我们总是编码
<财务报告和审定财务报表>在属性中,当从 HTML 解析回来时,我们在将任何 Markdown 格式转换为 HTML 之前,对标题内容进行消毒. - 我们的Markdown解析是故意的最小的 直接地图给一组安全标记.