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 |