Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

jira2markdown

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

jira2markdown

Convert text from JIRA markup to Markdown using parsing expression grammars

  • 0.4
  • PyPI
  • Socket score

Maintainers
1

Overview

jira2markdown is a text converter from JIRA markup to YouTrack Markdown using parsing expression grammars. The Markdown implementation in YouTrack follows the CommonMark specification with extensions. Thus, jira2markdown can be used to convert text to any Markdown syntax with minimal modifications.

Table of Contents

Prerequisites

  • Python 3.7+

Installation

pip install jira2markdown

Usage

from jira2markdown import convert

convert("Some *Jira text* formatting [example|https://example.com].")
# >>> Some **Jira text** formatting [example](https://example.com).

# To convert user mentions provide a mapping Jira internal account id to username 
# as a second argument to convert function
convert("[Winston Smith|~accountid:internal-id] woke up with the word 'Shakespeare' on his lips", {
    "internal-id": "winston",
})
# >>> @winston woke up with the word 'Shakespeare' on his lips

Conversion tables

Headings

JiraMarkdown
h1. Biggest heading# Biggest heading
h2. Bigger heading## Bigger heading
h3. Big heading### Big heading
h4. Normal heading#### Normal heading
h5. Small heading##### Small heading
h6. Smallest heading###### Smallest heading

Text Effects

JiraMarkdown
*strong***strong**
_emphasis_Not converted (the same syntax)
??citation??<q>citation</q>
-deleted-~~deleted~~
+inserted+inserted
^superscript^<sup>superscript</sup>
~subscript~<sub>subscript</sub>
{{monospaced}}`monospaced`
bq. Some block quoted text> Some block quoted text
{quote}Content to be quoted{quote}> Content to be quoted
{color:red}red text!{color}<font color="red">red text!</font>

Text Breaks

JiraMarkdown
\\Line break
---
--
JiraMarkdown
[#anchor]Not converted
[^attachment.ext][attachment.ext](attachment.ext)
[http://www.example.com]<http://www.example.com>
[Example|http://example.com][Example](http://example.com)
[mailto:box@example.com]<box@example.com>
[file:///c:/temp/foo.txt]Not converted
{anchor:anchorname}Not converted
[~username]@username

Lists

JiraMarkdown
* some
* bullet
** indented
** bullets
* points
- some
- bullet
  - indented
  - bullets
- points
# a
# numbered
# list
1. a
1. numbered
1. list
# a
# numbered
#* with
#* nested
#* bullet
# list
1. a
1. numbered
   - with
   - nested
   - bullet
1. list
* a
* bulleted
*# with
*# nested
*# numbered
* list
- a
- bulleted
  1. with
  1. nested
  1. numbered
- list

Images

JiraMarkdown
!image.jpg!
!image.jpg|thumbnail!
!image.gif|align=right, vspace=4!
![image.jpg](image.jpg)
!image.jpg|width=300, height=200!
![image.jpg](image.jpg){width=300 height=200}

Tables

JiraMarkdown
||heading 1||heading 2||heading 3||
|col A1|col A2|col A3|
|col B1|col B2|col B3|

|heading 1|heading 2|heading 3|
|---|---|---|
|col A1|col A2|col A3|
|col B1|col B2|col B3|

Advanced Formatting

JiraMarkdown
{noformat}
preformatted piece of text
 so *no* further _formatting_ is done here
{noformat}
```
preformatted piece of text
 so *no* further _formatting_ is done here
```
{panel:title=My Title}
Some text with a title
{panel}
> **My Title**
> Some text with a title
{code:xml}
    <test>
        <another tag="attribute"/>
    </test>
{code}
```xml
    <test>
        <another tag="attribute"/>
    </test>
```

Customization

To customize the list of markup elements send it as an optional argument to convert:

from jira2markdown import convert
from jira2markdown.elements import MarkupElements
from jira2markdown.markup.links import Link
from jira2markdown.markup.text_effects import Bold

# Only bold and link tokens will be converted here
elements = MarkupElements([Link, Bold])
convert("Some Jira text here", elements=elements)

Keep in mind that the order of markup elements is important! Elements are matching first from top to bottom in the list.

To override some elements in the default element list use insert_after/replace methods:

from jira2markdown import convert
from jira2markdown.elements import MarkupElements
from jira2markdown.markup.base import AbstractMarkup
from jira2markdown.markup.links import Link
from jira2markdown.markup.text_effects import Color

class CustomColor(Color):
    ...

class MyElement(AbstractMarkup):
    ...

elements = MarkupElements()
elements.replace(Color, CustomColor)
elements.insert_after(Link, MyElement)
convert("Some Jira text here", elements=elements)

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc