parent
							
								
									2c509c329f
								
							
						
					
					
						commit
						21fb4f817c
					
				| @ -0,0 +1,23 @@ | |||||||
|  | import type { App, Directive } from 'vue' | ||||||
|  | import hljs from 'highlight.js' | ||||||
|  | import { includeCode } from '@/utils/format' | ||||||
|  | 
 | ||||||
|  | hljs.configure({ ignoreUnescapedHTML: true }) | ||||||
|  | 
 | ||||||
|  | function highlightCode(el: HTMLElement) { | ||||||
|  |   if (includeCode(el.textContent)) | ||||||
|  |     hljs.highlightBlock(el) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | export default function setupHighlightDirective(app: App) { | ||||||
|  |   const highLightDirective: Directive<HTMLElement> = { | ||||||
|  |     mounted(el: HTMLElement) { | ||||||
|  |       highlightCode(el) | ||||||
|  |     }, | ||||||
|  |     updated(el: HTMLElement) { | ||||||
|  |       highlightCode(el) | ||||||
|  |     }, | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   app.directive('highlight', highLightDirective) | ||||||
|  | } | ||||||
| @ -1 +1,6 @@ | |||||||
| export function setupDirectives() {} | import type { App } from 'vue' | ||||||
|  | import setupHighlightDirective from './highlight' | ||||||
|  | 
 | ||||||
|  | export function setupDirectives(app: App) { | ||||||
|  |   setupHighlightDirective(app) | ||||||
|  | } | ||||||
|  | |||||||
| @ -0,0 +1,15 @@ | |||||||
|  | // 转义 HTML 字符
 | ||||||
|  | export function encodeHTML(source: string) { | ||||||
|  |   return source | ||||||
|  |     .replace(/&/g, '&') | ||||||
|  |     .replace(/</g, '<') | ||||||
|  |     .replace(/>/g, '>') | ||||||
|  |     .replace(/"/g, '"') | ||||||
|  |     .replace(/'/g, ''') | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | // 判断是否为代码块
 | ||||||
|  | export function includeCode(text: string | null | undefined) { | ||||||
|  |   const regexp = /^(?:\s{4}|\t).+/gm | ||||||
|  |   return !!(text?.includes(' = ') || text?.match(regexp)) | ||||||
|  | } | ||||||
| @ -1,6 +0,0 @@ | |||||||
| function includeCode(text: string | null | undefined) { |  | ||||||
|   const regexp = /^(?:\s{4}|\t).+/gm |  | ||||||
|   return !!(text?.includes(' = ') || text?.match(regexp)) |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export default includeCode |  | ||||||
					Loading…
					
					
				
		Reference in New Issue