Skip to content

如何实现markdown和html文件互相转换

html转markdown

markdown转html

转换规则: mk-html

解析md文件为token流

我们会先使用js来读取整个js文件,将其整合为一个字符串,然后读取并解析这个字符串,生成对应的token。

那么这个token的类型有哪些?

ts
type Toke {
  interface Space: {
    ···
  },
  interface Tag: {
    ···
    // 通过rules转换为相关的html标签
  },
  interface Table: {
    ···
  },
  interface List: {

  },
  interface ListItems: {

  }
  ...
}

那么要做的就是写一个函数把目标字符串转换为相关的token流

将token流渲染为html文件

html转markdown

这里使用了一个包turndown,具体使用方法如下:

js
var TurndownService = require('turndown')

var turndownService = new TurndownService()
var markdown = turndownService.turndown('<h1>Hello world!</h1>')

页面加载进入时,在整个网页进行监听

js
body.addEventListener('mousedown', ()=>{})

body.addEventListener('mouseup', () => {})

在mouseup和mousedown中使用window.getSelection获取当前所选取的内容和类型,并调用trundown函数,将其转换为html

页面离开时,使用removeEventlistener取消事件监听

js
removeEventListener(type, listener, options);