@observablehq/highlight.js
Version:
Syntax highlighting with language autodetection.
2 lines • 14 kB
JavaScript
/*! highlight.js v2.0.0 | BSD3 License | git.io/hljslicense */
!function(e){var r="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):r&&(r.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return r.hljs}))}(function(a){var f=[],o=Object.keys,M={},s={},r=/^(no-?highlight|plain|text)$/i,l=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,n={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},d="</span>",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function b(e){return e.nodeName.toLowerCase()}function m(e,r){var t=e&&e.exec(r);return t&&0===t.index}function u(e){return r.test(e)}function E(e){var r,t={},n=Array.prototype.slice.call(arguments,1);for(r in e)t[r]=e[r];return n.forEach(function(e){for(r in e)t[r]=e[r]}),t}function g(e){var a=[];return function e(r,t){for(var n=r.firstChild;n;n=n.nextSibling)3===n.nodeType?t+=n.nodeValue.length:1===n.nodeType&&(a.push({event:"start",offset:t,node:n}),t=e(n,t),b(n).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:n}));return t}(e,0),a}function c(e){if(n&&!e.langApiRestored){for(var r in e.langApiRestored=!0,n)e[r]&&(e[n[r]]=e[r]);(e.c||[]).concat(e.v||[]).forEach(c)}}function v(i){function l(e){return e&&e.source||e}function s(e,r){return new RegExp(l(e),"m"+(i.cI?"i":"")+(r?"g":""))}!function r(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){var n={},a=function(t,e){i.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var r=e.split("|");n[r[0]]=[t,r[1]?Number(r[1]):1]})};"string"==typeof t.k?a("keyword",t.k):o(t.k).forEach(function(e){a(e,t.k[e])}),t.k=n}t.lR=s(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=s(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=s(t.e)),t.tE=l(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=s(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return function(r){return r.v&&!r.cached_variants&&(r.cached_variants=r.v.map(function(e){return E(r,{v:null},e)})),r.cached_variants||r.eW&&[E(r)]||[r]}("self"===e?t:e)})),t.c.forEach(function(e){r(e,t)}),t.starts&&r(t.starts,e);var c=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(l).filter(Boolean);t.t=c.length?s(function(e,r){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,n=0,a="",c=0;c<e.length;c++){var i=n,s=l(e[c]);for(0<c&&(a+=r);0<s.length;){var o=t.exec(s);if(null==o){a+=s;break}a+=s.substring(0,o.index),s=s.substring(o.index+o[0].length),"\\"==o[0][0]&&o[1]?a+="\\"+String(Number(o[1])+i):(a+=o[0],"("==o[0]&&n++)}}return a}(c,"|"),!0):{exec:function(){return null}}}}(i)}function C(e,r,c,t){function s(e,r,t,n){var a='<span class="'+(n?"":h.classPrefix);return(a+=e+'">')+r+(t?"":d)}function i(){b+=null!=u.sL?function(){var e="string"==typeof u.sL;if(e&&!M[u.sL])return _(E);var r=e?C(u.sL,E,!0,f[u.sL]):S(E,u.sL.length?u.sL:void 0);return 0<u.r&&(g+=r.r),e&&(f[u.sL]=r.top),s(r.language,r.value,!1,!0)}():function(){var e,r,t,n,a,c,i;if(!u.k)return _(E);for(n="",r=0,u.lR.lastIndex=0,t=u.lR.exec(E);t;)n+=_(E.substring(r,t.index)),a=u,c=t,i=l.cI?c[0].toLowerCase():c[0],(e=a.k.hasOwnProperty(i)&&a.k[i])?(g+=e[1],n+=s(e[0],_(t[0]))):n+=_(t[0]),r=u.lR.lastIndex,t=u.lR.exec(E);return n+_(E.substr(r))}(),E=""}function o(e){b+=e.cN?s(e.cN,"",!0):"",u=Object.create(e,{parent:{value:u}})}function n(e,r){if(E+=e,null==r)return i(),0;var t=function(e,r){var t,n,a;for(t=0,n=r.c.length;t<n;t++)if(m(r.c[t].bR,e))return r.c[t].endSameAsBegin&&(r.c[t].eR=(a=r.c[t].bR.exec(e)[0],new RegExp(a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m"))),r.c[t]}(r,u);if(t)return t.skip?E+=r:(t.eB&&(E+=r),i(),t.rB||t.eB||(E=r)),o(t),t.rB?0:r.length;var n=function e(r,t){if(m(r.eR,t)){for(;r.endsParent&&r.parent;)r=r.parent;return r}if(r.eW)return e(r.parent,t)}(u,r);if(n){var a=u;for(a.skip?E+=r:(a.rE||a.eE||(E+=r),i(),a.eE&&(E=r));u.cN&&(b+=d),u.skip||u.sL||(g+=u.r),(u=u.parent)!==n.parent;);return n.starts&&(n.endSameAsBegin&&(n.starts.eR=n.eR),o(n.starts)),a.rE?0:r.length}if(function(e,r){return!c&&m(r.iR,e)}(r,u))throw new Error('Illegal lexeme "'+r+'" for mode "'+(u.cN||"<unnamed>")+'"');return E+=r,r.length||1}var l=A(e);if(!l)throw new Error('Unknown language: "'+e+'"');v(l);var a,u=t||l,f={},b="";for(a=u;a!==l;a=a.parent)a.cN&&(b=s(a.cN,"",!0)+b);var E="",g=0;try{for(var p,N,R=0;u.t.lastIndex=R,p=u.t.exec(r);)N=n(r.substring(R,p.index),p[0]),R=p.index+N;for(n(r.substr(R)),a=u;a.parent;a=a.parent)a.cN&&(b+=d);return{r:g,value:b,language:e,top:u}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(r)};throw e}}function S(t,e){e=e||h.languages||o(M);var n={r:0,value:_(t)},a=n;return e.filter(A).filter(R).forEach(function(e){var r=C(e,t,!1);r.language=e,r.r>a.r&&(a=r),r.r>n.r&&(a=n,n=r)}),a.language&&(n.second_best=a),n}function p(e){return h.tabReplace||h.useBR?e.replace(t,function(e,r){return h.useBR&&"\n"===e?"<br>":h.tabReplace?r.replace(/\t/g,h.tabReplace):""}):e}function i(e){var r,t,n,a,c,i=function(e){var r,t,n,a,c=e.className+" ";if(c+=e.parentNode?e.parentNode.className:"",t=l.exec(c))return A(t[1])?t[1]:"no-highlight";for(r=0,n=(c=c.split(/\s+/)).length;r<n;r++)if(u(a=c[r])||A(a))return a}(e);u(i)||(h.useBR?(r=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):r=e,c=r.textContent,n=i?C(i,c,!0):S(c),(t=g(r)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=n.value,n.value=function(e,r,t){var n=0,a="",c=[];function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset<r[0].offset?e:r:"start"===r[0].event?e:r:e.length?e:r}function s(e){a+="<"+b(e)+f.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+_(e.value).replace('"',""")+'"'}).join("")+">"}function o(e){a+="</"+b(e)+">"}function l(e){("start"===e.event?s:o)(e.node)}for(;e.length||r.length;){var u=i();if(a+=_(t.substring(n,u[0].offset)),n=u[0].offset,u===e){for(c.reverse().forEach(o);l(u.splice(0,1)[0]),(u=i())===e&&u.length&&u[0].offset===n;);c.reverse().forEach(s)}else"start"===u[0].event?c.push(u[0].node):c.pop(),l(u.splice(0,1)[0])}return a+_(t.substr(n))}(t,g(a),c)),n.value=p(n.value),e.innerHTML=n.value,e.className=function(e,r,t){var n=r?s[r]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(n)&&a.push(n),a.join(" ").trim()}(e.className,i,n.language),e.result={language:n.language,re:n.r},n.second_best&&(e.second_best={language:n.second_best.language,re:n.second_best.r}))}function N(){if(!N.called){N.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,i)}}function A(e){return e=(e||"").toLowerCase(),M[e]||M[s[e]]}function R(e){var r=A(e);return r&&!r.disableAutodetect}return a.highlight=C,a.highlightAuto=S,a.fixMarkup=p,a.highlightBlock=i,a.configure=function(e){h=E(h,e)},a.initHighlighting=N,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",N,!1),addEventListener("load",N,!1)},a.registerLanguage=function(r,e){var t=M[r]=e(a);c(t),t.aliases&&t.aliases.forEach(function(e){s[e]=r})},a.listLanguages=function(){return o(M)},a.getLanguage=A,a.autoDetection=R,a.inherit=E,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,r,t){var n=a.inherit({cN:"comment",b:e,e:r,c:[]},t||{});return n.c.push(a.PWM),n.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),n},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a.registerLanguage("css",function(e){var r={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:"[a-zA-Z-][a-zA-Z0-9_-]*",r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,r]}]}}),a.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as mutable viewof",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise DOM Files Generators html md now Mutable Promises require resolve svg tex width fetch"},n={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},a={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,a]};a.c=[e.ASM,e.QSM,c,n,e.RM];var i=a.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,n,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:i}]}]},{b:/</,e:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,sL:"xml",c:[{b:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},{b:/<[A-Za-z0-9\\._:-]+/,e:/(\/[A-Za-z0-9\\._:-]+|[A-Za-z0-9\\._:-]+\/)>/,skip:!0,c:[{b:/<[A-Za-z0-9\\._:-]+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:i}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor get set",e:/\{/,eE:!0}],i:/#(?!!)/}}),a.registerLanguage("json",function(e){var r={literal:"true false null"},t=[e.QSM,e.CNM],n={e:",",eW:!0,eE:!0,c:t,k:r},a={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(n,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(n)],i:"\\S"};return t.splice(t.length,0,a,c),{c:t,k:r,i:"\\S"}}),a.registerLanguage("xml",function(e){var r={eW:!0,i:/</,r:0,c:[{cN:"attr",b:"[A-Za-z0-9\\._:-]+",r:0},{b:/=\s*/,r:0,c:[{cN:"string",endsParent:!0,v:[{b:/"/,e:/"/},{b:/'/,e:/'/},{b:/[^\s"'=<>`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"<!DOCTYPE",e:">",r:10,c:[{b:"\\[",e:"\\]"}]},e.C("\x3c!--","--\x3e",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0},{b:'b"',e:'"',skip:!0},{b:"b'",e:"'",skip:!0},e.inherit(e.ASM,{i:null,cN:null,c:null,skip:!0}),e.inherit(e.QSM,{i:null,cN:null,c:null,skip:!0})]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[r],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[r],starts:{e:"<\/script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},r]}]}}),a});