Skip to content

kenchan0130/markdown-to-atlassian-wiki-markup

Repository files navigation

@kenchan0130/markdown-to-atlassian-wiki-markup

NPM version Build status dep dev dep snyk MIT

Convert markdown to atlassian wiki markup

If you want to use this on your command line, you can use markdown-to-atlassian-wiki-markup-cli.

Installation

npm install @kenchan0130/markdown-to-atlassian-wiki-markup
# or
yarn add @kenchan0130/markdown-to-atlassian-wiki-markup

Usage

Usage JavaScript

var markdownToAtlassianWikiMarkup = require("@kenchan0130/markdown-to-atlassian-wiki-markup").markdownToAtlassianWikiMarkup;

var wikiMarkup = markdownToAtlassianWikiMarkup("# Heading 1\n- list");
console.log(wikiMarkup);
/**
h1. Heading

* list

**/

Usage TypeScript

import { markdownToAtlassianWikiMarkup } from "@kenchan0130/markdown-to-atlassian-wiki-markup";

const wikiMarkup = markdownToAtlassianWikiMarkup("# Heading 1\n- list");
console.log(wikiMarkup);
/**
h1. Heading

* list

**/

Options

You can use MarkdownToAtlassianWikiMarkupOptions. It has following properties.

namespace key type description
codeBlock theme CodeBlockTheme or string Theme of code block.
See also: https://confluence.atlassian.com/doc/code-block-macro-139390.html
codeBlock showLineNumbers boolean or (code: string, lang: AtlassianSupportLanguage) => boolean function Show or not linenumbers of code block.
codeBlock collapse boolean or (code: string, lang: AtlassianSupportLanguage) => boolean function Enable or not collapse of code block.

Options JavaScript Example

var markdownToAtlassianWikiMarkup = require("@kenchan0130/markdown-to-atlassian-wiki-markup").markdownToAtlassianWikiMarkup;

var options = {
  codeBlock: {
    theme: "DJango",
    showLineNumbers: true,
    collapse: true
  }
};
var wikiMarkup = markdownToAtlassianWikiMarkup(`
\`\`\`javascript
console.log("This is JavaScript.");
\`\`\`
`, options);
console.log(wikiMarkup);
/*

{code:collapse=true|language=javascript|linenumbers=true|theme=DJango}
console.log("This is JavaScript.");
{code}

*/
var markdownToAtlassianWikiMarkup = require("@kenchan0130/markdown-to-atlassian-wiki-markup").markdownToAtlassianWikiMarkup;

const options = {
  codeBlock: {
    theme: "DJango",
    // In this case, it does not display line numbers when the code lang is none.
    showLineNumbers: function(_code, lang) { return lang !== "none"; },
    // In this case, it makes code block collapsed when the code line number more than 10.
    collapse: function(code) { return code.split("\n").length > 10; },
  }
});
var wikiMarkup = markdownToAtlassianWikiMarkup(```
\`\`\`typescript
console.log("This is TypeScript.");
\`\`\`
```, options);
console.log(wikiMarkup);
/*

{code:collapse=false|language=none|linenumbers=false|theme=DJango}
console.log("This is TypeScript.");
{code}

*/

Options TypeScript Example

import { AtlassianSupportLanguage, CodeBlockTheme, markdownToAtlassianWikiMarkup, MarkdownToAtlassianWikiMarkupOptions } from "@kenchan0130/markdown-to-atlassian-wiki-markup";

const options = {
  codeBlock: {
    theme: CodeBlockTheme.DJango,
    showLineNumbers: true,
    collapse: true
  }
};
const wikiMarkup = markdownToAtlassianWikiMarkup(`
\`\`\`javascript
console.log("This is JavaScript.");
\`\`\`
`, options);
console.log(wikiMarkup);
/*

{code:collapse=true|language=javascript|linenumbers=true|theme=DJango}
console.log("This is JavaScript.");
{code}

*/
import { AtlassianSupportLanguage, CodeBlockTheme, markdownToAtlassianWikiMarkup, MarkdownToAtlassianWikiMarkupOptions } from "@kenchan0130/markdown-to-atlassian-wiki-markup";

const options = {
  codeBlock: {
    theme: CodeBlockTheme.DJango,
    // In this case, it does not display line numbers when the code lang is none.
    showLineNumbers: (
      _code: string,
      lang: AtlassianSupportLanguage
    ): boolean => lang !== AtlassianSupportLanguage.None,
    // In this case, it makes code block collapsed when the code line number more than 10.
    collapse: (
      code: string,
      _lang: AtlassianSupportLanguage
    ): boolean => code.split("\n").length > 10,
  }
});
const wikiMarkup = markdownToAtlassianWikiMarkup(```
\`\`\`typescript
console.log("This is TypeScript.");
\`\`\`
```, options);
console.log(wikiMarkup);
/*

{code:collapse=false|language=none|linenumbers=false|theme=DJango}
console.log("This is TypeScript.");
{code}

*/

About Markdown

Markdown has various dialects.

This library uses marked. Therefore, it supports GitHub Flavored Markdown.

Development

Test

npm ci
npm run test

Contributing

  1. Fork the project
  2. Create a descriptively named feature branch
  3. Add your feature
  4. Submit a pull request

Release

npm version major|minor|patch

Run this with local master branch.

License

MIT