UNPKG

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

Version:
231 lines (174 loc) 7.33 kB
# @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