How to use markdown-it - 10 common examples

To help you get started, we’ve selected a few markdown-it examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github JoelOtter / kajero / js / parseMarkdown.js View on Github external
import MarkdownIt from 'markdown-it';
import fm from 'front-matter';
import Immutable from 'immutable';

import { codeToText } from './util';

let markedownIt = new MarkdownIt();

export default function parse(md) {
    const content = fm(md);
    const parsedMarkdown = markedownIt.parseInline(content.body);
    const blockParsedMarkdown = markedownIt.parse(content.body);

    // Extract code blocks first
    let codeBlocks = [];
    for (let block of blockParsedMarkdown) {
        if (block.type === 'fence') {
            const info = block.info.split(';').map(s => s.trim());
            const language = info[0];
            const attrs = info.splice(1);
            codeBlocks.push(Immutable.fromJS({
                type: 'code',
                content: block.content.trim(),
github Mermade / shins / index.js View on Github external
'use strict';

const fs = require('fs');
const path = require('path');

const maybe = require('call-me-maybe');

var hljs = require('highlightjs/highlight.pack.js');
var hlpath = require.resolve('highlightjs/highlight.pack.js').replace('highlight.pack.js', '');

const emoji = require('markdown-it-emoji');
const attrs = require('markdown-it-attrs');
var md = require('markdown-it')({
    linkify: true, html: true,
    highlight: function (str, lang) {
        var slang = lang.split('--')[0]; // allows multiple language tabs for the same language
        if (slang && hljs.getLanguage(slang)) {
            try {
                return '<pre class="highlight tab tab-' + lang + '"><code>' +
                    hljs.highlight(slang, str, true).value +
                    '</code></pre>';
            } catch (__) { }
        }

        return '<pre class="highlight"><code>' + md.utils.escapeHtml(str) + '</code></pre>';
    }
}).use(require('markdown-it-lazy-headers'));
md.use(emoji);
const yaml = require('yaml');
github NevenLeung / write-down / src / utils / external / markdown-parser.js View on Github external
import taskList from "markdown-it-task-lists";
import TOC from "markdown-it-table-of-contents";

import twemoji from 'twemoji';

const markdownOption = {
  html:         false,        // Enable HTML tags in source
  xhtmlOut:     false,        // Use '/' to close single tags (<br>)
  breaks:       false,        // Convert '\n' in paragraphs into <br>
  langPrefix:   'language-',  // CSS language prefix for fenced blocks
  linkify:      false,         // autoconvert URL-like texts to links
  typographer:  true,         // Enable smartypants and other sweet transforms
  quotes: '“”‘’',
};

const md = new MarkdownIt(markdownOption);

const anchorOption = {
  level: [1, 2, 3]
};

const imsizeOption = {
  autofill: true
};

const TOC_Option = {
  includeLevel: [1, 2, 3]
};


md.use(abbr)
  .use(anchor, anchorOption)
github Lucas-C / dotfiles_and_notes / bin / md2html.js View on Github external
function md2html(input) {
  var md = require('markdown-it')({html: true, linkify: true, typographer: true})
    .use(require('markdown-it-anchor'), { slugify: slugify } )
    .use(require('markdown-it-checkbox'))
    .use(require('markdown-it-header-sections'))
    .use(require('markdown-it-include'))
    .use(require('markdown-it-multimd-table'), {enableMultilineRows: true})
    .use(require('markdown-it-smartarrows'))
    .use(require('markdown-it-table-of-contents'))
    .use(require('markdown-it-container'), 'classname', {
      validate: name =&gt; name.trim().length, // allow everything not empty
      render: (tokens, idx) =&gt; {
        if (tokens[idx].nesting === 1) {
          return `<div class="${tokens[idx].info.trim()}">\n`;
        }
        return '</div>\n';
      }
    });
github NervJS / taro-ui / build / addImportLoader.js View on Github external
_options.markdownItReact ? _options.markdownItReact() : {}
  )

  const {
    body,
    attributes: { imports: importMap }
  } = frontMatter(source)

  const imports = `import * as Nerv from 'nervjs';  import copy from 'copy-to-clipboard';${importMap}`

  const moduleJS = []
  const state = ''
  // 放在这里应该没有问题, 反正是顺序执行的
  let flag = ''

  md.use(mdContainer, 'demo', {
    validate: params => params.trim().match(/^demo\s*(.*)$/),
    render: (tokens, idx) => {
      // container 从开头到结尾把之间的token跑一遍,其中idx定位到具体的位置

      // 获取描述
      const m = tokens[idx].info.trim().match(/^demo\s*(.*)$/)

      // 有此标记代表 ::: 开始
      if (tokens[idx].nesting === 1) {
        flag = idx

        let codeText = ''
        // let state = null
        // let method = ''
        let i = 1
github aotuzuche / auto-ui / scripts / lib / markdown-loader.js View on Github external
// 只认```,其他忽略
          if (token.markup === '```') {
            if (token.info === 'js') {
              // 插入到import后,component前
              moduleJS.push(token.content)
            } else if (token.info === 'jsx') {
              // 插入render内
              jsx = token.content
            }
          }
          i++
          token = tokens[idx + i]
        }

        // 描述也执行md
        return formatOpening(jsx, md.render(m[1]), flag)
      }
      return formatClosing(flag)
    }
  })
github ming-cult / snake-design / webpack / addImportLoader.js View on Github external
if (token.markup === '```') {
            // 里面的内容都当代码文本输出
            codeText = token.content
          }
          i++
          token = tokens[idx + i]
        }
        // 描述也执行md
        return formatOpening(codeText, md.render(m[1]), flag)
      }
      return formatClosing(flag)
    }
  })

  // md 处理过后的字符串含有 class 和 style ,需要再次处理给到react
  const content = md
    .render(body)
    .replace(/<hr>/g, '<hr>')
    .replace(/<br>/g, '<br>')
    .replace(/class=/g, 'className=')
    .replace(/style="text-align:center"/g, 'style={{ textAlign: "center"}}')
    .replace(/style="text-align:left"/g, 'style={{ textAlign: "left"}}')
    .replace(/style="text-align:right"/g, 'style={{ textAlign: "right"}}')
  return formatModule(imports, moduleJS.join('\n'), content, state)
}
github aotuzuche / auto-ui / scripts / lib / markdown-loader.js View on Github external
jsx = token.content
            }
          }
          i++
          token = tokens[idx + i]
        }

        // 描述也执行md
        return formatOpening(jsx, md.render(m[1]), flag)
      }
      return formatClosing(flag)
    }
  })

  // md 处理过后的字符串含有 class 和 style ,需要再次处理给到react
  let content = md
    .render(body)
    .replace(/<hr>/g, '<hr>')
    .replace(/<br>/g, '<br>')
    .replace(/class=/g, 'className=')
    .replace(/\[x\]/g, '<input disabled="" checked="" type="checkbox">')
    .replace(/\[ \]/g, '<input disabled="" type="checkbox">')

  return formatModule(imports, moduleJS.join('\n'), content)
}
github ming-cult / snake-design / webpack / addImportLoader.js View on Github external
// 从 ::: 下一个token开始
        let token = tokens[idx + i]

        // 如果没有到结尾
        while (token.markup !== ':::') {
          // 只认```,其他忽略
          if (token.markup === '```') {
            // 里面的内容都当代码文本输出
            codeText = token.content
          }
          i++
          token = tokens[idx + i]
        }
        // 描述也执行md
        return formatOpening(codeText, md.render(m[1]), flag)
      }
      return formatClosing(flag)
    }
  })
github aotuzuche / auto-ui / scripts / lib / markdown-loader.js View on Github external
jsx = token.content
            }
          }
          i++
          token = tokens[idx + i]
        }

        // 描述也执行md
        return formatOpening(jsx, md.render(m[1]), flag)
      }
      return formatClosing(flag)
    }
  })

  // md 处理过后的字符串含有 class 和 style ,需要再次处理给到react
  let content = md
    .render(body)
    .replace(/<hr>/g, '<hr>')
    .replace(/<br>/g, '<br>')
    .replace(/class=/g, 'className=')
    .replace(/\[x\]/g, '<input disabled="" checked="" type="checkbox">')
    .replace(/\[ \]/g, '<input disabled="" type="checkbox">')

  return formatModule(imports, moduleJS.join('\n'), content)
}