blear.classes.safe-markdown

1Introduction

2Example

var SafeMarkdown = require('blear.classes.safe-markdown');

安全 markdown 类,继承于blear.classes.markdown,是 markdown 的安全解析。

特性:

  • heading 解析:h1 ~ h6 标题,自动缩进自动修正
  • toc 解析:根据 heading 生成 toc
  • mention 解析:针对@someone生成 @ 功能
  • xss 防御:自定义白名单对危险字符进行过滤

heading

toc

3Static

3.1.defaults

  • 类型:Object
  • 说明:默认配置

3.2.defaults.headingLinkable

  • 类型:Boolean
  • 说明:是否显示 heading 链接
  • 默认:true

3.3.defaults.headingClass

  • 类型:string
  • 说明:heading className
  • 默认:heading

3.4.defaults.headingIndexable

  • 类型:Boolean
  • 说明:是否显示 heading 索引值
  • 默认:true

3.5.defaults.headingIndexSplit

  • 类型:string
  • 说明:heading 索引值分隔符
  • 默认:.

3.6.defaults.headingIndentable

  • 类型:Boolean
  • 说明:是否进行缩进修正,如将最高 h2 的修正为 h1
  • 默认:true

3.7.defaults.hadingMinLevel

  • 类型:Number
  • 说明:最小 heading level 值,默认为 h1
  • 默认:1

3.8.defaults.tocClass

  • 类型:String
  • 说明:toc className
  • 默认:"toc"

3.9.defaults.mention

  • 类型:Boolean
  • 说明:是否解析提及信息
  • 默认:true

3.10.defaults.mentionNameRegExp

  • 类型:RegExp
  • 说明:提及的名称正则
  • 默认:/[^\s@]+/

3.11.defaults.mentionClass

  • 类型:string
  • 说明:提及 class
  • 默认:"mention"

3.12.defaults.mentionLink

  • 类型:string
  • 说明:提及的链接模板
  • 默认:"/user/${name}/"

3.13.defaults.mentionLinkTarget

  • 类型:string
  • 说明:提及链接打开方式
  • 默认:"_blank"

3.14.defaults.mentionDataAttr

  • 类型:string
  • 说明:提及的 data 属性名称
  • 默认:"mention"

3.15.defaults.linkTrustedDomains

  • 类型:Array
  • 说明:link 信赖的域名列表
  • 默认:[]

3.16.defaults.linkAutoShort

  • 类型:Boolean
  • 说明:自动链接自动缩短网址(只显示网址域名)
  • 默认:true

3.17.defaults.linkFavicon

  • 类型:Boolean
  • 说明:是否输出 link 的 favicon
  • 默认:true

3.18.defaults.linkFaviconClass

  • 类型:string
  • 说明:link favicon 的图标 class
  • 默认:favicon

3.19.defaults.xssable

  • 类型:Boolean
  • 说明:是否进行 xss 防御
  • 默认:true

3.20.defaults.whiteList

  • 类型:Object
  • 说明:xss 白名单
  • 默认:
    {
        a: ['target', 'href', 'title'],
        abbr: ['title'],
        address: [],
        area: ['shape', 'coords', 'href', 'alt'],
        article: [],
        aside: [],
        audio: ['autoplay', 'controls', 'loop', 'preload', 'src'],
        b: [],
        bdi: ['dir'],
        bdo: ['dir'],
        big: [],
        blockquote: ['cite'],
        br: [],
        caption: [],
        center: [],
        cite: [],
        code: [],
        col: ['align', 'valign', 'span', 'width'],
        colgroup: ['align', 'valign', 'span', 'width'],
        dd: [],
        del: ['datetime'],
        details: ['open'],
        div: [],
        dl: [],
        dt: [],
        em: [],
        font: ['color', 'size', 'face'],
        footer: [],
        h1: [],
        h2: [],
        h3: [],
        h4: [],
        h5: [],
        h6: [],
        header: [],
        hr: [],
        i: [],
        img: ['src', 'alt', 'title', 'width', 'height'],
        ins: ['datetime'],
        li: [],
        mark: [],
        nav: [],
        ol: [],
        p: [],
        pre: [],
        s: [],
        section: [],
        small: [],
        span: [],
        sub: [],
        sup: [],
        strong: [],
        table: ['width', 'border', 'align', 'valign'],
        tbody: ['align', 'valign'],
        td: ['width', 'rowspan', 'colspan', 'align', 'valign'],
        tfoot: ['align', 'valign'],
        th: ['width', 'rowspan', 'colspan', 'align', 'valign'],
        thead: ['align', 'valign'],
        tr: ['rowspan', 'align', 'valign'],
        tt: [],
        u: [],
        ul: [],
        video:
            ['autoplay',
                'controls',
                'loop',
                'preload',
                'src',
                'height',
                'width']
    }
    

4new SafeMarkdown(options)

实例化一个安全 markdown,options 为入参,默认值为 .defaults

5Prototype

5.1#render(markdown): ret

5.1.1markdown

  • 类型:String
  • 说明:markdown 内容

5.1.2ret

  • 类型:Object
  • 说明:渲染结果

5.1.3ret.toc

  • 类型:String
  • 说明:toc 内容

5.1.4ret.mentionList

  • 类型:Array
  • 说明:提及列表

5.1.5ret.content

  • 类型:String
  • 说明:渲染内容

6Dependencies

7Reference