1.2.0 • Published 2 years ago
jira2slack v1.2.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 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 |
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 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 |
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 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.