GitLab flavoured markdown
The problem
GitLab markdown uses several special characters to construct links - e.g. "#" for issues, "!" for merge requests "@" for users. We are using markdown-it for md rendering, it does not support any of those characters, so we extended it with custom plugin to support merge request links.
markdown-it internally uses linkify-it to render text which looks like links to links, so to extend the markdown-it with custom rules we should extend linkify-it, so our current implementation of merge request links is incorrect and hard to maintain, also it is not so simple implement support for any other link types.
The solution
Completely rewrite our custom markdown plugin.
- Implement "@" notation plugin to support links to user profiles
- Implement "#" notation plugin to support links to issues
- Implement "%" notation plugin to support links to milestones
- implement "~" notation plugin for label name support