35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /**
 | |
|  * @fileoverview markdown 插件
 | |
|  * Include marked (https://github.com/markedjs/marked)
 | |
|  * Include github-markdown-css (https://github.com/sindresorhus/github-markdown-css)
 | |
|  */
 | |
| const marked = require('./marked.min')
 | |
| let index = 0
 | |
| 
 | |
| function Markdown (vm) {
 | |
|   this.vm = vm
 | |
|   vm._ids = {}
 | |
| }
 | |
| 
 | |
| Markdown.prototype.onUpdate = function (content) {
 | |
|   if (this.vm.properties.markdown) {
 | |
|     return marked(content)
 | |
|   }
 | |
| }
 | |
| 
 | |
| Markdown.prototype.onParse = function (node, vm) {
 | |
|   if (vm.options.markdown) {
 | |
|     // 中文 id 需要转换,否则无法跳转
 | |
|     if (vm.options.useAnchor && node.attrs && /[\u4e00-\u9fa5]/.test(node.attrs.id)) {
 | |
|       const id = 't' + index++
 | |
|       this.vm._ids[node.attrs.id] = id
 | |
|       node.attrs.id = id
 | |
|     }
 | |
|     if (node.name === 'p' || node.name === 'table' || node.name === 'tr' || node.name === 'th' || node.name === 'td' || node.name === 'blockquote' || node.name === 'pre' || node.name === 'code') {
 | |
|       node.attrs.class = `md-${node.name} ${node.attrs.class || ''}`
 | |
|     }
 | |
|   }
 | |
| }
 | |
| 
 | |
| module.exports = Markdown
 |