添加自定义链接器
链接器可以轻松地引用第三方问题跟踪工具中的问题或票据,例如 GitHub、Salesforce、Zendesk 等。例如,您可以添加一个链接器,将 #2468
自动转换为指向 https://github.com/zulip/zulip/issues/2468
的链接。
如果该模式出现在话题中,在消息收件人栏的话题右侧添加一个打开()按钮,链接到相应的 URL。
添加自定义链接器
- Instructions for all platforms
-
前往 链接转换器.
-
在 新增链接转换 下,输入一个模式和URL 模板。
-
点击 添加链接器。
重新排序链接器
链接器按顺序处理,并且不会应用于已经链接的文本。因此,当多个链接器适用时,您可以选择优先处理哪些链接器。参见重叠模式部分中的示例。
- Instructions for all platforms
-
前往 链接转换器.
-
在链接器下,点击并拖动垂直点以重新排列链接器列表。
常见的链接器模式
以下示例涵盖了最常见的链接器类型,主要关注问题或票据的链接器。
链接到问题或票据
这是一个将 #
后跟数字转换为链接的模式。它通常用于链接到第三方问题跟踪工具中的问题或票据,例如 GitHub、Salesforce、Zendesk 等。
- Instructions for all platforms
- 模式:
#(?P<id>[0-9]+)
- URL 模板:
https://github.com/zulip/zulip/issues/{id}
- 原始文本:
#2468
- 自动链接到:
https://github.com/zulip/zulip/issues/2468
链接到多个项目或应用中的问题或票据
要为多个项目中的问题或票据设置链接器,可以考虑扩展 #2468
格式,添加项目特定的变体。例如,Zulip 开发社区使用 #M2468
表示移动应用程序库中的问题,#D2468
表示桌面应用程序库中的问题,等等。
- Instructions for all platforms
- 模式:
#M(?P<id>[0-9]+)
- URL 模板:
https://github.com/zulip/zulip-mobile/issues/{id}
- 原始文本:
#M2468
- 自动链接到:
https://github.com/zulip/zulip-mobile/issues/2468
链接到多个仓库中的问题或票据
对于通常链接到多个 GitHub 仓库的组织,这个链接器模式将 org/repo#ID
转换为问题或拉取请求的链接。
- Instructions for all platforms
- 模式:
(?P<org>[a-zA-Z0-9_-]+)/(?P<repo>[a-zA-Z0-9_-]+)#(?P<id>[0-9]+)
- URL 模板:
https://github.com/{org}/{repo}/issues/{id}
- 原始文本:
zulip/zulip#2468
- 自动链接到:
https://github.com/zulip/zulip/issues/2468
链接到十六进制问题或票据编号
以下模式将 7 到 40 个字符长度的十六进制字符串(如 Git 提交 ID)链接化。
- Instructions for all platforms
- 模式:
(?P<id>[0-9a-f]{7,40})
- URL 模板:
https://github.com/zulip/zulip/commit/{id}
- 原始文本:
abdc123
- 自动链接到:
https://github.com/zulip/zulip/commit/abcd123
高级链接器模式
链接器是一个灵活的系统,可用于构建适用于各种情况的规则。链接器模式是正则表达式,使用 re2 正则表达式引擎。
链接器使用 RFC 6570 兼容的 URL 模板来描述如何生成链接。这些模板支持多种表达式类型。默认表达式类型 ({var}
) 将对特殊字符如 /
和 &
进行 URL 编码;这种行为对绝大多数链接器都是需要的。高级 URL 模板表达式类型可以帮助您在角落情况中获得所需的确切行为,例如可选的 URL 查询参数。举例来说:
- 使用
{+var}
时,URL 分隔符字符不会被 URL 编码。
- 使用
{?var}
和 {&var}
来表示 URL 查询参数中的变量。
- 使用
{#var}
生成 URL 中的 #
片段。
URL 模板规范提供了简要示例和详细示例,解释了 URL 模板的具体行为。
链接到文档页面
此示例模式是链接到 Zulip 的 ReadTheDocs 站点页面的简写方式。
- Instructions for all platforms
- 模式:
RTD/(?P<article>[a-zA-Z0-9_/.#-]+)
- URL 模板:
https://zulip.readthedocs.io/en/latest/{+article}
- 原始文本:
RTD/overview/changelog.html
- 自动链接到:
https://zulip.readthedocs.io/en/latest/overview/changelog.html
此模式使用了 {+var}
表达式类型。如果使用默认表达式类型 ({article}
),overview
和 changelog
之间的 /
会被错误地 URL 编码。
链接到 Google 搜索结果
此示例模式允许链接到 Google 搜索。
- Instructions for all platforms
- 模式:
google:(?P<q>\w+)?
- URL 模板:
https://google.com/search{?q}
- 原始文本:
google:foo
或 google:
- 自动链接到:
https://google.com/search?q=foo
或 https://google.com/search
此模式使用了 {?var}
表达式类型。如果使用默认表达式类型 ({q}
),则无法仅在 URL 中包含 ?
(如果可选的 q
存在)。
重叠模式
在此示例中,配置了一个通用链接器,使 GitHub 仓库引用如 zulip-desktop#123
链接到该仓库中该问题的 zulip
GitHub 组织中。一个更具体的链接器会覆盖该链接器,以引用不同组织中的特定仓库(如 django/django
)。
- Instructions for all platforms
-
特定链接器(排列在通用链接器之前)
- 模式:
django#(?P<id>[0-9]+)
- URL 模板:
https://github.com/django/django/pull/{id}
-
通用链接器
- 模式:
(?P<repo>[a-zA-Z0-9_-]+)#(?P<id>[0-9]+)
- URL 模板:
https://github.com/zulip/{repo}/pull/{id}
-
示例同时匹配两个链接器;优先应用特定链接器:
- 原始文本:
django#123
- 自动链接到:
https://github.com/django/django/pull/123
-
仅匹配通用链接器的示例:
- 原始文本:
zulip-desktop#123
- 自动链接到:
https://github.com/zulip/zulip-desktop/pull/123
这一组模式有重叠的正则表达式。注意,通用链接器模式也会匹配 lorem#123
。只有在特定链接器排列在更通用模式之前时,特定链接器才会优先应用。您可以通过拖放现有链接器到所需顺序来自定义这一顺序。新的链接器会自动排列在最后。