MIT licensed by Albert Krewinkel
Maintained by [email protected]
This version can be pinned in stack with:jira-wiki-markup-1.3.2@sha256:b5f0901208a0ee07aff60f5356aeb851b7aa7950c75a18a15fd34247a35886d8,3819
Used by 1 package in lts-17.2(full list with versions):


Hackage MIT license Stackage Lts Stackage Nightly Build status Windows build status

This package provides a parser and printer for Jira wiki markup. It converts the raw text into an abstract syntax tree. The tree is easy to handle and to translate into different output formats.


This package is licensed under the MIT license. See the LICENSE file for details.



jira-wiki-markup uses PVP Versioning. The changelog is available on GitHub.


Released 2020-06-22.

  • Braces are now always escaped when printing; Jira treats braces specially, regardless of context.


Released 2020-06-14

  • Added support for links to anchors.

  • Styled text may not wrap across multiple lines; linebreaks in marked-up text are now forbidden.

  • Module Text.Jira.Parser.Core: new function many1Till which behaves like manyTill, but requires at least on element to be parsed.

  • Ensured the package works with GHC 8.10.


Released 2020-04-04

  • Support was added for additional syntax constructs:

    • citation markup (??citation??),
    • links to attachments ([title^attachment.ext]), and
    • user links ([~username]).
  • Changes to module Text.Jira.Markup:

    • A new data type LinkType is exported from the module.

    • Changes to type Inline:

      • a new constructor Citation has been added;
      • the Link constructor now takes an additional parameter of type LinkType.


Released 2020-04-02

  • Fixed rendering of image attributes: image attributes are separated by commas instead of pipes; the latter are used in block parameters.

  • Fixed parsing of blockquotes which are not preceeded by blank lines.

  • Ensure parsing of single-line blockquotes is possible even if there is no space between bq. marker and contents.

  • Fixed parsing of colors: parsing no longer fails for hexcolors which contain non-decimal digits.

  • Changes to module Text.Jira.Parser.Shared:

    • New parsing function colorName which parses a color descriptor, i.e. either a name or a hexcolor.


Released 2020-03-28

  • Added check that a closing markup char is not preceeded by a whitespace character. Previously, plain text was still incorrectly treated as markup. E.g., the dashes in -> step -> used to be interpreted as delimiters marking deleted text.

  • Allows empty table cells; table parsing failed if one of the cells did not contain any content.

  • Changes to module Text.Jira.Parser.Core:

    • A field stateLastSpcPos was added to data type ParserState to keep track of spaces.
    • Function updateLastSpcPos was added to update the aforementioned field.
    • Function afterSpace was added to test the field.


Released 2020-03-27

  • Fixed parsing of image parameters. Thumbnails and images with parameters were previously not recognized as images.


Released 2020-03-19

  • Fixed table detection in endOfParagraph parser: Tables were expected to have a space between the leading pipe(s) and the cell content. Lines like ||Name| were erroneously not recognized as the beginning of a new block.


Released 2020-03-18

  • Don’t escape colon/semicolon unless necessary: it is necessary to escape colons or semicolons only if they could otherwise become part of a smiley.


Released 2020-03-18

  • Colon : and semicolon ; are now parsed as special characters, since they can be the first characters of an emoji.
  • Fixed parsing of words which contain non-special symbol characters: word boundaries were not set correctly if a word contained a dot . or similar chars.
  • Fixed incorrect emphasis parsing: digits were erroneously allows as the first characters after closing emphasis characters.


Released 2020-03-13.

  • Lists are now allowed to be indented; i.e., lists are still recognized if list markers are preceded by spaces.
  • Support for colored inlines has been added.
  • New constructor ColorInline for type Inline (API change).


Released 2019-12-17.

  • Add Doc datatype representing a full document; parse now returns this type.
  • Improve parsing:
    • double-backslash is recognized as linebreak;
    • emoticons are parsed as Emoji;
    • special sequences of dashes are translated into their unicode representation;
    • naked URLs are parsed as AutoLink;
    • blocks of colored text are parsed as Color;
    • interpretation of special characters as markup can be forced by surrounding them with curly braces.
  • A parser plainText was made available to read markup-less text.
  • Inline-parser symbol was renamed to specialChar.
  • Add printer module to render the document AST as Jira markup.
  • Markup datatype changes:
    • new Block elements Color and HorizontalRule.
    • new Inline elements Emoji, and Styled.
    • Inline constructors Subscript, Superscript, Emph, Strong, Inserted, and Deleted have been remove. Use Styled instead.
    • Constructor Image now takes a list of parameters as an additional argument.
  • CI runs also test GHC 8.8.


  • Ensure proper parsing of backslash-escaped characters.


  • Initially created.