(async function __tabEvaluateScriptBridge() {
const __tabScriptArgs = {"theme": "tomorrow", "showLineNumbers": true, "showCopyButton": true, "debug": true};
const __tabOriginalFunction = (
/**
* 动态检测 <pre> 标签并加载 PrismJS 代码高亮
*
* 功能:
* - 检测页面中已有的 <pre><code> 块
* - 使用 MutationObserver 监听动态新增的 <pre> 标签
* - 自动从 CDN 加载 PrismJS 核心及语言包
* - 根据 class/language 属性自动识别编程语言
* - 支持行号显示、复制按钮等可选功能
*/
async function run(args = {}) {
// ========== 配置项 ==========
const config = {
// PrismJS CDN 基础路径(可自定义版本)
prismCdnBase: args.prismCdnBase || 'https://cdn.jsdelivr.net/npm/prismjs@1.29.0',
// 是否显示行号
showLineNumbers: args.showLineNumbers ?? true,
// 是否添加复制按钮
showCopyButton: args.showCopyButton ?? true,
// 主题样式 (default / tomorrow / twilight / okaidia / dark / funky)
theme: args.theme || 'default',
// 额外要加载的语言列表(自动检测会补充)
extraLanguages: args.extraLanguages || [],
// 是否在控制台输出日志
debug: args.debug ?? false,
};
// 主题 CSS 映射
const THEME_CSS = {
default: `${config.prismCdnBase}/themes/prism.min.css`,
tomorrow: `${config.prismCdnBase}/themes/prism-tomorrow.min.css`,
twilight: `${config.prismCdnBase}/themes/prism-twilight.min.css`,
okaidia: `${config.prismCdnBase}/themes/prism-okaidia.min.css`,
dark: `${config.prismCdnBase}/themes/prism-dark.min.css`,
funky: `${config.prismCdnBase}/themes/prism-funky.min.css`,
coy: `${config.prismCdnBase}/themes/prism-coy.min.css`,
solarizedlight: `${config.prismCdnBase}/themes/prism-solarizedlight.min.css`,
};
// 语言别名映射(class 名称 -> Prism 语言名)
const LANGUAGE_ALIASES = {
'js': 'javascript',
'ts': 'typescript',
'py': 'python',
'rb': 'ruby',
'sh': 'bash',
'shell': 'bash',
'yml': 'yaml',
'md': 'markdown',
'cs': 'csharp',
'c++': 'cpp',
'h': 'c',
'hpp': 'cpp',
'fs': 'fsharp',
'kt': 'kotlin',
'rs': 'rust',
'go': 'go',
'java': 'java',
'swift': 'swift',
'scala': 'scala',
'kotlin': 'kotlin',
'graphql': 'graphql',
'json': 'javascript', // JSON 用 js 高亮足够好
'html': 'markup',
'htm': 'markup',
'svg': 'markup',
'xml': 'markup',
'vue': 'markup',
'svelte': 'markup',
'jsx': 'jsx',
'tsx': 'tsx',
'diff': 'diff',
'sql': 'sql',
'bash': 'bash',
'batch': 'batch',
'powershell': 'powershell',
'dockerfile': 'docker',
'docker': 'docker',
'makefile': 'makefile',
};