1.3.0 • Published 10 months ago
jira2slack v1.3.0
JIRA 2 Slack
Library to convert between JIRA markup and Slack markup
Example
const J2S = require('jira2slack');
const slackMD = J2S.toSlack('*This* _is_ -some- ^over^ ~formatted~ {{text}}');
// *This* _is_ ~some~ ^over -formatted- `text`Conversions
Below are the conversions that are made:
Jira -> Slack
| 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 |
Notes
- 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 .
Slack -> Jira
| 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 |
Acknowledgments
Special thanks to Kyle Farris for his JIRA to Markdown library
Contributing
- 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.