Library to convert between JIRA markup and Slack markup
const J2S = require('jira2slack');
const slackMD = J2S.toSlack('*This* _is_ -some- ^over^ ~formatted~ {{text}}');
// *This* _is_ ~some~ ^over -formatted- `text`Below are the conversions that are made:
| Format | JIRA | Slack | Destructive | Notes |
|---|---|---|---|---|
| Headers | h1. Heading |
\n *Heading*\n |
Yes | Slack doesn't support headers so library converts headers to bolded text on it's own line |
| Bold | *bold* |
*bold* |
Sometimes | [1] |
| Italic | _italic_ |
_italic_ |
Sometimes | [1] |
| Unordered List | * Bulleted List** Indented more* Indented less |
• Bulleted List..• Indented more• Indented less |
No | [2] |
| Unordered Dash List | - Bulleted Dash List- Bulleted Dash List- Bulleted Dash List |
• Bulleted Dash List• Bulleted Dash List• Bulleted Dash List |
Yes | Ambigious result from Bulleted list so reversal results in use of astericks |
| Ordered List | # Numbered List## Indented more## Indented more### Indented morer### Indented morer### Indented morer## Indented more# Indented less |
1. Numbered List..1. Indented more..2. Indented more....1. Indented morer....2. Indented morer....3. Indented morer..3. Indented more2. Indented less |
No | [1][2] |
| Monospaced | {{code}} |
`code` |
No | |
| Citations | ??citation?? |
-- citation_ |
Yes | Slack doesn't have citations, but I can replicate resulting format |
| Subscript | ~subscript~ |
_subscript |
Yes | Slack doesn't have subscript, but I denote it with a single underscore |
| Superscript | ^superscript^ |
^superscript |
Yes | Slack doesn't have superscript, but I denote it with a single carret |
| Strikethrough | -strikethrough- |
~strikethrough~ |
Sometimes | [1] |
| Code | {code}some code{code} |
```some code``` |
Yes | Slack doesn't support specify the language, so that is removed during conversion |
| Quotes | {quote}quoted text{quote} |
```quoted text``` |
Yes | Slack does't support quoted text so the library uses preformmated ``` instead. This makes it impossible to convert back. |
| Pre-formatted Text | {noformat}pre text{noformat} |
```pre text``` |
Yes | Slack does't support no format text so the library uses preformmated ``` instead. This makes it impossible to convert back. |
| Unnamed Link | [http://someurl.com] |
<http://someurl.com> |
No | |
| Named Link | [Someurl|http://someurl.com] |
<http://someurl.com|Someurl> |
No | |
| Smart Link | [http://someurl.com|http://someurl.com|smart-link] |
<http://someurl.com> |
Yes | Slack doesn't support smart links so we just strip it down to a regular link |
| Blockquote | bq. This is quoted |
> This is quoted |
Sometimes | Slack doesn't support multi-line blockquotes (>>>) so those are ignored |
| Color | {color:white}This is white text{color} |
This is white text |
Yes | Slack doesn't support colored text so it is removed. |
| Panel | {panel:title=foo}Panel Contents{panel} |
Panel: | foo | | --- | | Panel Contents | |
Yes | Slack doesn't support panels, so the library attempts to replicate the format. This makes it impossible to convert back. |
| Table | ||heading 1||heading 2|| |col A1|col B1| |col A2|col B2| |
|heading 1|heading 2| | --- | --- | |col A1|col B1| |col A2|col B2| |
No |
- JIRA supports spaces at the beginning and end of a markdown section (ex
_ foo _) where Slack does not. To match the formatting, the library moves those spaces outside the formatter (ex_ foo _becomes_foo_). While the result works in both JIRA and Slack, it is technically destructive. .indicate whitespace (), not a literal .
| Format | Slack | Jira | Destructive | Notes |
|---|---|---|---|---|
| Headers | \n *Heading*\n |
h1. Heading |
No | |
| Bold | *bold* |
*bold* |
No | |
| Italic | _italic_ |
_italic_ |
No | |
| Unordered List | • Bulleted List..• Indented more• Indented less |
* Bulleted List** Indented more* Indented less |
No | [2] |
| Ordered List | 1. Numbered List..1. Indented more..2. Indented more....1. Indented morer....2. Indented morer....3. Indented morer..3. Indented more2. Indented less |
# Numbered List## Indented more## Indented more### Indented morer### Indented morer### Indented morer## Indented more# Indented less |
No | [2] |
| Monospaced | `code` |
{{code}} |
No | |
| Citations | -- citation_ |
??citation?? |
No | |
| Strikethrough | ~strikethrough~ |
-strikethrough- |
No | |
| Code | ```some code``` |
{code}some code{code} |
No | |
| Unnamed Link | <http://someurl.com> |
[http://someurl.com] |
No | |
| Named Link | <http://someurl.com|Someurl> |
[Someurl|http://someurl.com] |
No | |
| Blockquote | > This is quoted |
bq. This is quoted |
No |
Special thanks to Kyle Farris for his JIRA to Markdown library
- Create a new branch, please don't work in master directly.
- Add failing tests for the change you want to make (if applicable). Run
npm testto see the tests fail. - Fix stuff.
- Run
npm testto see if the tests pass. Repeat steps 2-4 until done. - Update the documentation to reflect any changes.
- Push to your fork and submit a pull request.