@kenchan0130/markdown-to-atlassian-wiki-markup
Version:
Convert markdown to atlassian wiki markup
231 lines (174 loc) • 7.33 kB
Markdown
# @kenchan0130/markdown-to-atlassian-wiki-markup
[![NPM version][npm-image]][npm-url]
[![Build status][github-actions-image]][github-actions-url]
[![dep][dep-image]][dev-dep-url]
[![dev dep][dev-dep-image]][dev-dep-url]
[![snyk][snyk-image]][snyk-url]
[![MIT][mit-image]][mit-url]
[npm-image]: https://img.shields.io/npm/v/@kenchan0130/markdown-to-atlassian-wiki-markup.svg
[npm-url]: https://www.npmjs.com/package/@kenchan0130/markdown-to-atlassian-wiki-markup
[github-actions-image]: https://github.com/kenchan0130/markdown-to-atlassian-wiki-markup/workflows/CI/badge.svg
[github-actions-url]: https://github.com/kenchan0130/markdown-to-atlassian-wiki-markup/actions?query=workflow%3A%22CI%22
[dep-image]: https://badgen.net/david/dep/kenchan0130/markdown-to-atlassian-wiki-markup?label=deps
[dep-url]: https://david-dm.org/kenchan0130/markdown-to-atlassian-wiki-markup
[dev-dep-image]: https://badgen.net/david/dep/kenchan0130/markdown-to-atlassian-wiki-markup?label=devDeps
[dev-dep-url]: https://david-dm.org/kenchan0130/markdown-to-atlassian-wiki-markup?type=dev
[snyk-image]: https://snyk.io/test/npm/@kenchan0130/markdown-to-atlassian-wiki-markup/badge.svg
[snyk-url]: https://snyk.io/test/npm/@kenchan0130/markdown-to-atlassian-wiki-markup
[mit-image]: https://badgen.net/npm/license/@kenchan0130/markdown-to-atlassian-wiki-markup
[mit-url]: https://github.com/kenchan0130/markdown-to-atlassian-wiki-markup/blob/master/LICENSE
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](https://github.com/kenchan0130/markdown-to-atlassian-wiki-markup-cli).
## Installation
```sh
npm install @kenchan0130/markdown-to-atlassian-wiki-markup
# or
yarn add @kenchan0130/markdown-to-atlassian-wiki-markup
```
## Usage
### Usage JavaScript
```js
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
```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.<br>See also: [https://confluence.atlassian.com/doc/code-block-macro-139390.html](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
```js
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}
*/
```
```js
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
```typescript
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}
*/
```
```typescript
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](https://github.com/markedjs/marked).
Therefore, it supports [GitHub Flavored Markdown](https://github.github.com/gfm/).
## Development
### Test
```sh
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
```sh
npm version major|minor|patch
```
Run this with local master branch.
## License
MIT