Добавить пользовательский linkifier
Внимание
Эта функция доступна только владельцам и администраторам организации.
Linkifier (линкификатор) упрощает ссылки на задачи/тикеты во внешних трекерах,
например GitHub, Salesforce, Zendesk и т.д. Например, вы можете добавить
linkifier, который автоматически превращает #2468 в ссылку на
ssues/2468.
Если шаблон встречается в теме, Zulip добавит кнопку Открыть
() справа от темы в верхней
панели получателя, ведущую на соответствующий URL.
Если у вас возникнут сложности с настройкой нужных linkifier, пожалуйста,
напишите в поддержку Zulip и опишите, что вы хотите
сделать.
Добавить linkifier
- Инструкции для всех платформ
-
Перейдите в Шаблоны ссылок.
-
В разделе Добавить новый linkifier укажите Шаблон (Pattern) и
Шаблон URL (URL template).
-
Нажмите Добавить linkifier.
Редактировать linkifier
- Инструкции для всех платформ
-
Перейдите в Шаблоны ссылок.
-
В колонке Действия нажмите значок редактирования
() у нужного linkifier.
-
Измените параметры и нажмите Сохранить изменения.
Удалить linkifier
- Инструкции для всех платформ
-
Перейдите в Шаблоны ссылок.
-
В колонке Действия нажмите значок удаления
() у нужного linkifier.
-
Подтвердите действие, нажав Подтвердить.
Изменить порядок linkifier
Linkifier обрабатываются по порядку и не применяются к тексту, который уже
превращен в ссылку. Поэтому вы можете выбрать, какие linkifier должны иметь
приоритет, если подходят сразу несколько. Примеры см. в разделе
перекрывающихся шаблонов.
- Инструкции для всех платформ
-
Перейдите в Шаблоны ссылок.
-
В колонке Шаблон (Pattern) в списке Linkifier перетащите элемент
за вертикальные точки, чтобы изменить порядок.
Типовые шаблоны linkifier
Ниже приведены примеры наиболее распространенных linkifier, в первую очередь для
задач/тикетов.
Ссылка на задачу или тикет
Шаблон превращает # и номер в ссылку. Часто используется для ссылок на задачи
во внешних трекерах, например GitHub, Salesforce, Zendesk и т.д.
- Инструкции для всех платформ
- Шаблон (Pattern):
#(?P<id>[0-9]+)
- Шаблон URL (URL template):
ssues/{id}
- Исходный текст:
#2468
- Автоматически превращается в:
ssues/2468
Ссылки на задачи в нескольких проектах или приложениях
Если вам нужны linkifier для нескольких проектов, удобно расширить формат
#2468 вариантами с префиксом проекта. Например, сообщество разработчиков Zulip
использует
#M2468 для задач в репозитории мобильного приложения Zulip, #D2468 для задач
в репозитории десктопного приложения и т.д.
- Инструкции для всех платформ
- Шаблон (Pattern):
#F(?P<id>[0-9]+)
- Шаблон URL (URL template):
ssues/{id}
- Исходный текст:
#F245
- Автоматически превращается в:
ssues/245
Ссылки на задачи в нескольких репозиториях
Для организаций, которые часто ссылаются на разные GitHub-репозитории, этот
шаблон превращает org/repo#ID в ссылку на задачу или pull request.
- Инструкции для всех платформ
- Шаблон (Pattern):
(?P<org>[a-zA-Z0-9_-]+)/(?P<repo>[a-zA-Z0-9_-]+)#(?P<id>[0-9]+)
- Шаблон URL (URL template):
ssues/{id}
- Исходный текст:
zulip/zulip#2468
- Автоматически превращается в:
ssues/2468
Ссылка на шестнадцатеричный номер задачи/тикета
Следующий шаблон превращает в ссылку строку шестнадцатеричных символов длиной от
7 до 40, например идентификатор коммита Git.
- Инструкции для всех платформ
- Шаблон (Pattern):
(?P<id>[0-9a-f]{7,40})
- Шаблон URL (URL template): `
- Исходный текст:
abdc123
- Автоматически превращается в: `
Расширенные шаблоны linkifier
Linkifier это гибкий механизм, с помощью которого можно описывать правила для
самых разных случаев. Шаблоны linkifier это регулярные выражения для движка
re2.
Для генерации ссылок linkifier используют URL-шаблоны, совместимые со стандартом
RFC 6570. В этих шаблонах есть
несколько типов выражений. Тип по умолчанию ({var}) кодирует специальные
символы вроде / и &, что подходит для подавляющего большинства linkifier.
Более сложные типы выражений полезны для редких случаев, например с
опциональными query-параметрами. Например:
- Используйте
{+var}, если вы хотите, чтобы символы-разделители URL не
кодировались.
- Используйте
{?var} и {&var} для переменных в query-параметрах URL.
- Используйте
{#var}, чтобы формировать #-фрагменты в URL.
В спецификации URL-шаблонов есть краткие примеры
и подробные примеры,
объясняющие точное поведение URL-шаблонов.
Ссылки на страницы документации
Этот пример это сокращение для ссылок на страницы документации Zulip на
ReadTheDocs.
- Инструкции для всех платформ
- Шаблон (Pattern):
RTD/(?P<article>[a-zA-Z0-9_/.#-]+)
- Шаблон URL (URL template):
s.io/en/latest/{+article}
- Исходный текст:
RTD/overview/changelog.html
- Автоматически превращается в:
s.io/en/latest/overview/changelog.html
Совет
В этом шаблоне используется тип выражения {+var}. Если бы использовался
тип по умолчанию ({article}), то / между overview и changelog
был бы ошибочно URL-encoded.
Ссылки на результаты поиска Google
Этот пример позволяет быстро вставлять ссылки на поиск в Google.
- Инструкции для всех платформ
- Шаблон (Pattern):
google:(?P<q>\w+)?
- Шаблон URL (URL template):
search{?q}
- Исходный текст:
google:foo или google:
- Автоматически превращается в:
search?q=foo или search
Совет
В этом шаблоне используется тип выражения {?var}. С типом по умолчанию
({q}) невозможно было бы включать ? в URL только при наличии опциональной
переменной q.
Перекрывающиеся шаблоны
В этом примере общий linkifier настроен так, чтобы ссылки на репозитории GitHub
вида zulip-desktop#123 вели на задачи в этом репозитории внутри GitHub-
организации zulip. Более специфичный linkifier переопределяет общий для
конкретного репозитория интереса (django/django), который находится в другой
организации.
- Инструкции для всех платформ
- Специфичный linkifier (расположен перед общим)
- Шаблон (Pattern):
django#(?P<id>[0-9]+)
- Шаблон URL (URL template): `
- Общий linkifier
- Шаблон (Pattern):
(?P<repo>[a-zA-Z0-9_-]+)#(?P<id>[0-9]+)
- Шаблон URL (URL template): `
- Пример, подходящий под оба linkifier (приоритет у специфичного):
- Исходный текст:
django#123
- Автоматически превращается в: `
- Пример, подходящий только под общий linkifier:
- Исходный текст:
zulip-desktop#123
- Автоматически превращается в:
sktop/pull/123
Совет
В этом наборе шаблонов есть перекрывающиеся регулярные выражения. Обратите
внимание, что общий шаблон будет совпадать и с lorem#123. Специфичный
шаблон будет иметь приоритет только если он расположен выше общего. Это
можно настроить, перетаскивая существующие linkifier в нужный порядок. Новые
linkifier по умолчанию добавляются в конец списка.