UNPKG

@observablehq/highlight.js

Version:

Syntax highlighting with language autodetection.

2 lines 11.9 kB
/*! highlight.js v1.1.1 | 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(e){function r(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function t(e){return e.nodeName.toLowerCase()}function n(e,r){var t=e&&e.exec(r);return t&&0===t.index}function a(e){return C.test(e)}function c(e){var r,t,n,c,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=k.exec(i))return E(t[1])?t[1]:"no-highlight";for(i=i.split(/\s+/),r=0,n=i.length;n>r;r++)if(c=i[r],a(c)||E(c))return c}function i(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 s(e){var r=[];return function n(e,a){for(var c=e.firstChild;c;c=c.nextSibling)3===c.nodeType?a+=c.nodeValue.length:1===c.nodeType&&(r.push({event:"start",offset:a,node:c}),a=n(c,a),t(c).match(/br|hr|img|input/)||r.push({event:"stop",offset:a,node:c}));return a}(e,0),r}function o(e,n,a){function c(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function i(e){function n(e){return" "+e.nodeName+'="'+r(e.value).replace('"',"&quot;")+'"'}l+="<"+t(e)+M.map.call(e.attributes,n).join("")+">"}function s(e){l+="</"+t(e)+">"}function o(e){("start"===e.event?i:s)(e.node)}for(var u=0,l="",f=[];e.length||n.length;){var b=c();if(l+=r(a.substring(u,b[0].offset)),u=b[0].offset,b===e){f.reverse().forEach(s);do o(b.splice(0,1)[0]),b=c();while(b===e&&b.length&&b[0].offset===u);f.reverse().forEach(i)}else"start"===b[0].event?f.push(b[0].node):f.pop(),o(b.splice(0,1)[0])}return l+r(a.substr(u))}function u(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(r){return i(e,{v:null},r)})),e.cached_variants||e.eW&&[i(e)]||[e]}function l(e){function r(e){return e&&e.source||e}function t(t,n){return new RegExp(r(t),"m"+(e.cI?"i":"")+(n?"g":""))}function n(a,c){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var i={},s=function(r,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");i[t[0]]=[r,t[1]?Number(t[1]):1]})};"string"==typeof a.k?s("keyword",a.k):R(a.k).forEach(function(e){s(e,a.k[e])}),a.k=i}a.lR=t(a.l||/\w+/,!0),c&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=r(a.e)||"",a.eW&&c.tE&&(a.tE+=(a.e?"|":"")+c.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return u("self"===e?a:e)})),a.c.forEach(function(e){n(e,a)}),a.starts&&n(a.starts,c);var o=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(r).filter(Boolean);a.t=o.length?t(o.join("|"),!0):{exec:function(){return null}}}}n(e)}function f(e,t,a,c){function i(e,r){var t,a;for(t=0,a=r.c.length;a>t;t++)if(n(r.c[t].bR,e))return r.c[t]}function s(e,r){if(n(e.eR,r)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?s(e.parent,r):void 0}function o(e,r){return!a&&n(r.iR,e)}function u(e,r){var t=N.cI?r[0].toLowerCase():r[0];return e.k.hasOwnProperty(t)&&e.k[t]}function g(e,r,t,n){var a=n?"":S.classPrefix,c='<span class="'+a,i=t?"":A;return c+=e+'">',c+r+i}function p(){var e,t,n,a;if(!M.k)return r(C);for(a="",t=0,M.lR.lastIndex=0,n=M.lR.exec(C);n;)a+=r(C.substring(t,n.index)),e=u(M,n),e?(k+=e[1],a+=g(e[0],r(n[0]))):a+=r(n[0]),t=M.lR.lastIndex,n=M.lR.exec(C);return a+r(C.substr(t))}function d(){var e="string"==typeof M.sL;if(e&&!y[M.sL])return r(C);var t=e?f(M.sL,C,!0,R[M.sL]):b(C,M.sL.length?M.sL:void 0);return M.r>0&&(k+=t.r),e&&(R[M.sL]=t.top),g(t.language,t.value,!1,!0)}function h(){x+=null!=M.sL?d():p(),C=""}function m(e){x+=e.cN?g(e.cN,"",!0):"",M=Object.create(e,{parent:{value:M}})}function v(e,r){if(C+=e,null==r)return h(),0;var t=i(r,M);if(t)return t.skip?C+=r:(t.eB&&(C+=r),h(),t.rB||t.eB||(C=r)),m(t,r),t.rB?0:r.length;var n=s(M,r);if(n){var a=M;a.skip?C+=r:(a.rE||a.eE||(C+=r),h(),a.eE&&(C=r));do M.cN&&(x+=A),M.skip||M.sL||(k+=M.r),M=M.parent;while(M!==n.parent);return n.starts&&m(n.starts,""),a.rE?0:r.length}if(o(r,M))throw new Error('Illegal lexeme "'+r+'" for mode "'+(M.cN||"<unnamed>")+'"');return C+=r,r.length||1}var N=E(e);if(!N)throw new Error('Unknown language: "'+e+'"');l(N);var w,M=c||N,R={},x="";for(w=M;w!==N;w=w.parent)w.cN&&(x=g(w.cN,"",!0)+x);var C="",k=0;try{for(var B,L,I=0;;){if(M.t.lastIndex=I,B=M.t.exec(t),!B)break;L=v(t.substring(I,B.index),B[0]),I=B.index+L}for(v(t.substr(I)),w=M;w.parent;w=w.parent)w.cN&&(x+=A);return{r:k,value:x,language:e,top:M}}catch(j){if(j.message&&-1!==j.message.indexOf("Illegal"))return{r:0,value:r(t)};throw j}}function b(e,t){t=t||S.languages||R(y);var n={r:0,value:r(e)},a=n;return t.filter(E).forEach(function(r){var t=f(r,e,!1);t.language=r,t.r>a.r&&(a=t),t.r>n.r&&(a=n,n=t)}),a.language&&(n.second_best=a),n}function g(e){return S.tabReplace||S.useBR?e.replace(B,function(e,r){return S.useBR&&"\n"===e?"<br>":S.tabReplace?r.replace(/\t/g,S.tabReplace):""}):e}function p(e,r,t){var n=r?x[r]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(n)&&a.push(n),a.join(" ").trim()}function d(e){var r,t,n,i,u,l=c(e);a(l)||(S.useBR?(r=document.createElementNS("http://www.w3.org/1999/xhtml","div"),r.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):r=e,u=r.textContent,n=l?f(l,u,!0):b(u),t=s(r),t.length&&(i=document.createElementNS("http://www.w3.org/1999/xhtml","div"),i.innerHTML=n.value,n.value=o(t,s(i),u)),n.value=g(n.value),e.innerHTML=n.value,e.className=p(e.className,l,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 h(e){S=i(S,e)}function m(){if(!m.called){m.called=!0;var e=document.querySelectorAll("pre code");M.forEach.call(e,d)}}function v(){addEventListener("DOMContentLoaded",m,!1),addEventListener("load",m,!1)}function N(r,t){var n=y[r]=t(e);n.aliases&&n.aliases.forEach(function(e){x[e]=r})}function w(){return R(y)}function E(e){return e=(e||"").toLowerCase(),y[e]||y[x[e]]}var M=[],R=Object.keys,y={},x={},C=/^(no-?highlight|plain|text)$/i,k=/\blang(?:uage)?-([\w-]+)\b/i,B=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,A="</span>",S={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=b,e.fixMarkup=g,e.highlightBlock=d,e.configure=h,e.initHighlighting=m,e.initHighlightingOnLoad=v,e.registerLanguage=N,e.listLanguages=w,e.getLanguage=E,e.inherit=i,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={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/},e.C=function(r,t,n){var a=e.inherit({cN:"comment",b:r,e:t,c:[]},n||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.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},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e.registerLanguage("css",function(e){var r="[a-zA-Z-][a-zA-Z0-9_-]*",t={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:r,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}}),e.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:/(\/\w+|\w+\/)>/,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\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",e:/\{/,eE:!0}],i:/#(?!!)/}}),e.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"}}),e.registerLanguage("xml",function(e){var r="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/</,r:0,c:[{cN:"attr",b:r,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("<!--","-->",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"meta",b:/<\?xml/,e:/\?>/,r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"<style(?=\\s|>|$)",e:">",k:{name:"style"},c:[t],starts:{e:"</style>",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"<script(?=\\s|>|$)",e:">",k:{name:"script"},c:[t],starts:{e:"</script>",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"tag",b:"</?",e:"/?>",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}}),e});