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 more 2. 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 (
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 more 2. 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 test
to see the tests fail. - Fix stuff.
- Run
npm test
to 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.