📄 highlight.js
字号:
index += mode_info[1].length; } } while (!mode_info[2]); if(modes.length > 1) throw 'Illegal'; return { relevance: relevance, keyword_count: keyword_count, value: result } } catch (e) { if (e == 'Illegal') { return { relevance: 0, keyword_count: 0, value: escape(value) } } else { throw e; } } } function blockText(block) { var result = ''; for (var i = 0; i < block.childNodes.length; i++) if (block.childNodes[i].nodeType == 3) result += block.childNodes[i].nodeValue; else if (block.childNodes[i].nodeName == 'BR') result += '\n'; else throw 'No highlight'; return result; } function blockLanguage(block) { var classes = block.className.split(/\s+/); for (var i = 0; i < classes.length; i++) { if (classes[i] == 'no-highlight') { throw 'No highlight' } if (LANGUAGES[classes[i]]) { return classes[i]; } } } function highlightBlock(block) { try { var text = blockText(block); var language = blockLanguage(block); } catch (e) { if (e == 'No highlight') return; } if (language) { var result = highlight(language, text).value; } else { var max_relevance = 2; var relevance = 0; for (var key in selected_languages) { if (!selected_languages.hasOwnProperty(key)) continue; var r = highlight(key, text); relevance = r.keyword_count + r.relevance; if (relevance > max_relevance) { max_relevance = relevance; var result = r.value; language = key; } } } if (result) { var className = block.className; if (!className.match(language)) { className += ' ' + language; } // See these 4 lines? This is IE's notion of "block.innerHTML = result". Love this browser :-/ var container = document.createElement('div'); container.innerHTML = '<pre><code class="' + className + '">' + result + '</code></pre>'; var environment = block.parentNode.parentNode; environment.replaceChild(container.firstChild, block.parentNode); } } function langRe(language, value, global) { var mode = 'm' + (language.case_insensitive ? 'i' : '') + (global ? 'g' : ''); return new RegExp(value, mode); } function compileModes() { for (var i in LANGUAGES) { if (!LANGUAGES.hasOwnProperty(i)) continue; var language = LANGUAGES[i]; for (var j = 0; j < language.modes.length; j++) { if (language.modes[j].begin) language.modes[j].beginRe = langRe(language, '^' + language.modes[j].begin); if (language.modes[j].end) language.modes[j].endRe = langRe(language, '^' + language.modes[j].end); if (language.modes[j].illegal) language.modes[j].illegalRe = langRe(language, '^(?:' + language.modes[j].illegal + ')'); language.defaultMode.illegalRe = langRe(language, '^(?:' + language.defaultMode.illegal + ')'); if (language.modes[j].relevance == undefined) { language.modes[j].relevance = 1; } } } } function compileKeywords() { function compileModeKeywords(mode) { if (!mode.keywordGroups) { for (var key in mode.keywords) { if (!mode.keywords.hasOwnProperty(key)) continue; if (mode.keywords[key] instanceof Object) mode.keywordGroups = mode.keywords; else mode.keywordGroups = {'keyword': mode.keywords}; break; } } } for (var i in LANGUAGES) { if (!LANGUAGES.hasOwnProperty(i)) continue; var language = LANGUAGES[i]; compileModeKeywords(language.defaultMode); for (var j = 0; j < language.modes.length; j++) { compileModeKeywords(language.modes[j]); } } } function findCode(pre) { for (var i = 0; i < pre.childNodes.length; i++) { node = pre.childNodes[i]; if (node.nodeName == 'CODE') return node; if (!(node.nodeType == 3 && node.nodeValue.match(/\s+/))) return null; } } function initHighlighting() { if (initHighlighting.called) return; initHighlighting.called = true; compileModes(); compileKeywords(); if (arguments.length) { for (var i = 0; i < arguments.length; i++) { if (LANGUAGES[arguments[i]]) { selected_languages[arguments[i]] = LANGUAGES[arguments[i]]; } } } else selected_languages = LANGUAGES; var pres = document.getElementsByTagName('pre'); for (var i = 0; i < pres.length; i++) { var code = findCode(pres[i]); if (code) highlightBlock(code); } } function injectScripts(languages) { var scripts = document.getElementsByTagName('SCRIPT'); for (var i = 0; i < scripts.length; i++) { if (scripts[i].src.match(/highlight\.js(\?.+)?$/)) { var path = scripts[i].src.replace(/highlight\.js(\?.+)?$/, ''); break; } } if (languages.length == 0) { languages = DEFAULT_LANGUAGES; } var injected = {} for (var i = 0; i < languages.length; i++) { var filename = LANGUAGE_GROUPS[languages[i]] ? LANGUAGE_GROUPS[languages[i]] : languages[i]; if (!injected[filename]) { document.write('<script type="text/javascript" src="' + path + 'languages/' + filename + '.js"></script>'); injected[filename] = true; } } } function initHighlightingOnLoad() { var original_arguments = arguments; injectScripts(arguments); var handler = function(){initHighlighting.apply(null, original_arguments)}; if (window.addEventListener) { window.addEventListener('DOMContentLoaded', handler, false); window.addEventListener('load', handler, false); } else if (window.attachEvent) window.attachEvent('onload', handler); else window.onload = handler; } this.LANGUAGES = LANGUAGES; this.ALL_LANGUAGES = ALL_LANGUAGES; this.initHighlightingOnLoad = initHighlightingOnLoad; this.highlightBlock = highlightBlock; // Common regexps this.IDENT_RE = '[a-zA-Z][a-zA-Z0-9_]*'; this.UNDERSCORE_IDENT_RE = '[a-zA-Z_][a-zA-Z0-9_]*'; this.NUMBER_RE = '\\b\\d+(\\.\\d+)?'; this.C_NUMBER_RE = '\\b(0x[A-Za-z0-9]+|\\d+(\\.\\d+)?)'; // Common modes this.APOS_STRING_MODE = { className: 'string', begin: '\'', end: '\'', illegal: '\\n', contains: ['escape'], relevance: 0 }; this.QUOTE_STRING_MODE = { className: 'string', begin: '"', end: '"', illegal: '\\n', contains: ['escape'], relevance: 0 }; this.BACKSLASH_ESCAPE = { className: 'escape', begin: '\\\\.', end: '^', relevance: 0 }; this.C_LINE_COMMENT_MODE = { className: 'comment', begin: '//', end: '$', relevance: 0 }; this.C_BLOCK_COMMENT_MODE = { className: 'comment', begin: '/\\*', end: '\\*/' }; this.HASH_COMMENT_MODE = { className: 'comment', begin: '#', end: '$' }; this.C_NUMBER_MODE = { className: 'number', begin: this.C_NUMBER_RE, end: '^', relevance: 0 };}();var initHighlightingOnLoad = hljs.initHighlightingOnLoad;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -