lol
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

documentation-highlighter: 9.12.0 -> 11.9.0, add new langs

this has been overdue for a while. we also add the `shell` language to
the bundle (in addition to nix and bash) for ShellSession highlighting.

perhaps we should use the full, regular distribution instead of a custom
build, but eh.

pennae 3bf6d6d2 548f98f4

+424 -180
+3
.editorconfig
··· 90 90 indent_style = unset 91 91 trim_trailing_whitespace = unset 92 92 93 + [pkgs/misc/documentation-highlighter/**] 94 + insert_final_newline = unset 95 + 93 96 [pkgs/servers/dict/wordnet_structures.py] 94 97 trim_trailing_whitespace = unset 95 98
+24 -19
pkgs/misc/documentation-highlighter/LICENSE
··· 1 - Copyright (c) 2006, Ivan Sagalaev 1 + BSD 3-Clause License 2 + 3 + Copyright (c) 2006, Ivan Sagalaev. 2 4 All rights reserved. 5 + 3 6 Redistribution and use in source and binary forms, with or without 4 7 modification, are permitted provided that the following conditions are met: 5 8 6 - * Redistributions of source code must retain the above copyright 7 - notice, this list of conditions and the following disclaimer. 8 - * Redistributions in binary form must reproduce the above copyright 9 - notice, this list of conditions and the following disclaimer in the 10 - documentation and/or other materials provided with the distribution. 11 - * Neither the name of highlight.js nor the names of its contributors 12 - may be used to endorse or promote products derived from this software 13 - without specific prior written permission. 9 + * Redistributions of source code must retain the above copyright notice, this 10 + list of conditions and the following disclaimer. 11 + 12 + * Redistributions in binary form must reproduce the above copyright notice, 13 + this list of conditions and the following disclaimer in the documentation 14 + and/or other materials provided with the distribution. 15 + 16 + * Neither the name of the copyright holder nor the names of its 17 + contributors may be used to endorse or promote products derived from 18 + this software without specific prior written permission. 14 19 15 - THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY 16 - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 17 - WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 18 - DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY 19 - DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 20 - (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 21 - LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 22 - ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 23 - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 24 - SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 20 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 23 + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 24 + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 25 + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 26 + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27 + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 28 + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 29 + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+22 -127
pkgs/misc/documentation-highlighter/README.md
··· 1 1 This file was generated with pkgs/misc/documentation-highlighter/update.sh 2 2 3 - # Highlight.js 3 + # Highlight.js CDN Assets 4 4 5 - [![Build Status](https://travis-ci.org/isagalaev/highlight.js.svg?branch=master)](https://travis-ci.org/isagalaev/highlight.js) 5 + [![install size](https://packagephobia.now.sh/badge?p=highlight.js)](https://packagephobia.now.sh/result?p=highlight.js) 6 6 7 - Highlight.js is a syntax highlighter written in JavaScript. It works in 8 - the browser as well as on the server. It works with pretty much any 9 - markup, doesn’t depend on any framework and has automatic language 10 - detection. 7 + **This package contains only the CDN build assets of highlight.js.** 11 8 12 - ## Getting Started 9 + This may be what you want if you'd like to install the pre-built distributable highlight.js client-side assets via NPM. If you're wanting to use highlight.js mainly on the server-side you likely want the [highlight.js][1] package instead. 13 10 14 - The bare minimum for using highlight.js on a web page is linking to the 15 - library along with one of the styles and calling 16 - [`initHighlightingOnLoad`][1]: 11 + To access these files via CDN:<br> 12 + https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/ 17 13 18 - ```html 19 - <link rel="stylesheet" href="/path/to/styles/default.css"> 20 - <script src="/path/to/highlight.pack.js"></script> 21 - <script>hljs.initHighlightingOnLoad();</script> 22 - ``` 14 + **If you just want a single .js file with the common languages built-in: 15 + <https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@latest/build/highlight.min.js>** 23 16 24 - This will find and highlight code inside of `<pre><code>` tags; it tries 25 - to detect the language automatically. If automatic detection doesn’t 26 - work for you, you can specify the language in the `class` attribute: 17 + --- 27 18 28 - ```html 29 - <pre><code class="html">...</code></pre> 30 - ``` 19 + ## Highlight.js 31 20 32 - The list of supported language classes is available in the [class 33 - reference][2]. Classes can also be prefixed with either `language-` or 34 - `lang-`. 21 + Highlight.js is a syntax highlighter written in JavaScript. It works in 22 + the browser as well as on the server. It works with pretty much any 23 + markup, doesn’t depend on any framework, and has automatic language 24 + detection. 35 25 36 - To disable highlighting altogether use the `nohighlight` class: 37 - 38 - ```html 39 - <pre><code class="nohighlight">...</code></pre> 40 - ``` 41 - 42 - ## Custom Initialization 43 - 44 - When you need a bit more control over the initialization of 45 - highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4] 46 - functions. This allows you to control *what* to highlight and *when*. 47 - 48 - Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using 49 - jQuery: 50 - 51 - ```javascript 52 - $(document).ready(function() { 53 - $('pre code').each(function(i, block) { 54 - hljs.highlightBlock(block); 55 - }); 56 - }); 57 - ``` 58 - 59 - You can use any tags instead of `<pre><code>` to mark up your code. If 60 - you don't use a container that preserve line breaks you will need to 61 - configure highlight.js to use the `<br>` tag: 62 - 63 - ```javascript 64 - hljs.configure({useBR: true}); 65 - 66 - $('div.code').each(function(i, block) { 67 - hljs.highlightBlock(block); 68 - }); 69 - ``` 70 - 71 - For other options refer to the documentation for [`configure`][4]. 72 - 73 - 74 - ## Web Workers 75 - 76 - You can run highlighting inside a web worker to avoid freezing the browser 77 - window while dealing with very big chunks of code. 78 - 79 - In your main script: 80 - 81 - ```javascript 82 - addEventListener('load', function() { 83 - var code = document.querySelector('#code'); 84 - var worker = new Worker('worker.js'); 85 - worker.onmessage = function(event) { code.innerHTML = event.data; } 86 - worker.postMessage(code.textContent); 87 - }) 88 - ``` 89 - 90 - In worker.js: 91 - 92 - ```javascript 93 - onmessage = function(event) { 94 - importScripts('<path>/highlight.pack.js'); 95 - var result = self.hljs.highlightAuto(event.data); 96 - postMessage(result.value); 97 - } 98 - ``` 99 - 100 - 101 - ## Getting the Library 102 - 103 - You can get highlight.js as a hosted, or custom-build, browser script or 104 - as a server module. Right out of the box the browser script supports 105 - both AMD and CommonJS, so if you wish you can use RequireJS or 106 - Browserify without having to build from source. The server module also 107 - works perfectly fine with Browserify, but there is the option to use a 108 - build specific to browsers rather than something meant for a server. 109 - Head over to the [download page][5] for all the options. 110 - 111 - **Don't link to GitHub directly.** The library is not supposed to work straight 112 - from the source, it requires building. If none of the pre-packaged options 113 - work for you refer to the [building documentation][6]. 114 - 115 - **The CDN-hosted package doesn't have all the languages.** Otherwise it'd be 116 - too big. If you don't see the language you need in the ["Common" section][5], 117 - it can be added manually: 118 - 119 - ```html 120 - <script src="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.4.0/languages/go.min.js"></script> 121 - ``` 122 - 123 - **On Almond.** You need to use the optimizer to give the module a name. For 124 - example: 125 - 126 - ``` 127 - r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js 128 - ``` 129 - 26 + If you'd like to read the full README:<br> 27 + <https://github.com/highlightjs/highlight.js/blob/main/README.md> 130 28 131 29 ## License 132 30 ··· 136 34 ## Links 137 35 138 36 The official site for the library is at <https://highlightjs.org/>. 37 + 38 + The Github project may be found at: <https://github.com/highlightjs/highlight.js> 139 39 140 40 Further in-depth documentation for the API and other topics is at 141 41 <http://highlightjs.readthedocs.io/>. 142 42 143 - Authors and contributors are listed in the [AUTHORS.en.txt][8] file. 43 + A list of the Core Team and contributors can be found in the [CONTRIBUTORS.md][8] file. 144 44 145 - [1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload 146 - [2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html 147 - [3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block 148 - [4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options 149 - [5]: https://highlightjs.org/download/ 150 - [6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html 151 - [7]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE 152 - [8]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.en.txt 45 + [1]: https://www.npmjs.com/package/highlight.js 46 + [7]: https://github.com/highlightjs/highlight.js/blob/main/LICENSE 47 + [8]: https://github.com/highlightjs/highlight.js/blob/main/CONTRIBUTORS.md
+345 -2
pkgs/misc/documentation-highlighter/highlight.pack.js
··· 1 - /*! highlight.js v9.12.0 | BSD3 License | git.io/hljslicense */ 2 - !function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){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 o(e){function r(e){return" "+e.nodeName+'="'+n(e.value).replace('"',"&quot;")+'"'}s+="<"+t(e)+E.map.call(e.attributes,r).join("")+">"}function u(e){s+="</"+t(e)+">"}function c(e){("start"===e.event?o:u)(e.node)}for(var l=0,s="",f=[];e.length||r.length;){var g=i();if(s+=n(a.substring(l,g[0].offset)),l=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===l);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return s+n(a.substr(l))}function l(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function s(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(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=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.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 l("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function l(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='<span class="'+a,o=t?"":C;return i+=e+'">',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=l(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!y[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){L+=null!=E.sL?d():h(),k=""}function v(e){L+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(L+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"<unnamed>")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');s(N);var R,E=i||N,x={},L="";for(R=E;R!==N;R=R.parent)R.cN&&(L=p(R.cN,"",!0)+L);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(L+=C);return{r:B,value:L,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(y);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"<br>":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?L[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,l,s=i(e);a(s)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n")):n=e,l=n.textContent,r=s?f(s,l,!0):g(l),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),l)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,s,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=y[n]=t(e);r.aliases&&r.aliases.forEach(function(e){L[e]=n})}function R(){return x(y)}function w(e){return e=(e||"").toLowerCase(),y[e]||y[L[e]]}var E=[],x=Object.keys,y={},L={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="</span>",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,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(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});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});hljs.registerLanguage("nix",function(e){var r={keyword:"rec with let in inherit assert if else then",literal:"true false or and null",built_in:"import abort baseNameOf dirOf isNull builtins map removeAttrs throw toString derivation"},t={cN:"subst",b:/\$\{/,e:/}/,k:r},i={b:/[a-zA-Z0-9-_]+(\s*=)/,rB:!0,r:0,c:[{cN:"attr",b:/\S+/}]},s={cN:"string",c:[t],v:[{b:"''",e:"''"},{b:'"',e:'"'}]},a=[e.NM,e.HCM,e.CBCM,s,i];return t.c=a,{aliases:["nixos"],k:r,c:a}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/\b-?[a-z\._]+\b/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}}); 1 + /*! 2 + Highlight.js v11.9.0 (git: b7ec4bfafc) 3 + (c) 2006-2023 undefined and other contributors 4 + License: BSD-3-Clause 5 + */ 6 + var hljs=function(){"use strict";function e(t){ 7 + return t instanceof Map?t.clear=t.delete=t.set=()=>{ 8 + throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ 9 + throw Error("set is read-only") 10 + }),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ 11 + const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i) 12 + })),t}class t{constructor(e){ 13 + void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} 14 + ignoreMatch(){this.isMatchIgnored=!0}}function n(e){ 15 + return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;") 16 + }function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] 17 + ;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope 18 + ;class o{constructor(e,t){ 19 + this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ 20 + this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{ 21 + if(e.startsWith("language:"))return e.replace("language:","language-") 22 + ;if(e.includes(".")){const n=e.split(".") 23 + ;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") 24 + }return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)} 25 + closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){ 26 + this.buffer+=`<span class="${e}">`}}const r=(e={})=>{const t={children:[]} 27 + ;return Object.assign(t,e),t};class a{constructor(){ 28 + this.rootNode=r(),this.stack=[this.rootNode]}get top(){ 29 + return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ 30 + this.top.children.push(e)}openNode(e){const t=r({scope:e}) 31 + ;this.add(t),this.stack.push(t)}closeNode(){ 32 + if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ 33 + for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} 34 + walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ 35 + return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), 36 + t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ 37 + "string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ 38 + a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e} 39 + addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ 40 + this.closeNode()}__addSublanguage(e,t){const n=e.root 41 + ;t&&(n.scope="language:"+t),this.add(n)}toHTML(){ 42 + return new o(this,this.options).value()}finalize(){ 43 + return this.closeAllNodes(),!0}}function l(e){ 44 + return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")} 45 + function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")} 46 + function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{ 47 + const t=e[e.length-1] 48 + ;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} 49 + })(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"} 50 + function p(e){return RegExp(e.toString()+"|").exec("").length-1} 51 + const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ 52 + ;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n 53 + ;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break} 54 + s+=i.substring(0,e.index), 55 + i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0], 56 + "("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)} 57 + const E="[a-zA-Z]\\w*",x="[a-zA-Z_]\\w*",w="\\b\\d+(\\.\\d+)?",y="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",_="\\b(0b[01]+)",O={ 58 + begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'", 59 + illegal:"\\n",contains:[O]},k={scope:"string",begin:'"',end:'"',illegal:"\\n", 60 + contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t, 61 + contains:[]},n);s.contains.push({scope:"doctag", 62 + begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", 63 + end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) 64 + ;const o=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/) 65 + ;return s.contains.push({begin:h(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s 66 + },S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var j=Object.freeze({ 67 + __proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ 68 + scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, 69 + C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number", 70 + begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ 71 + "on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ 72 + t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E, 73 + MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0}, 74 + NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w, 75 + PHRASAL_WORDS_MODE:{ 76 + begin:/\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/ 77 + },QUOTE_STRING_MODE:k,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/, 78 + end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, 79 + RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", 80 + SHEBANG:(e={})=>{const t=/^#![ ]*\// 81 + ;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t, 82 + end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, 83 + TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, 84 + UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function A(e,t){ 85 + "."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){ 86 + void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){ 87 + t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", 88 + e.__beforeBegin=A,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, 89 + void 0===e.relevance&&(e.relevance=0))}function L(e,t){ 90 + Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){ 91 + if(e.match){ 92 + if(e.begin||e.end)throw Error("begin & end are not supported with match") 93 + ;e.begin=e.match,delete e.match}}function P(e,t){ 94 + void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return 95 + ;if(e.starts)throw Error("beforeMatch cannot be used with starts") 96 + ;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] 97 + })),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ 98 + relevance:0,contains:[Object.assign(n,{endsParent:!0})] 99 + },e.relevance=0,delete n.beforeMatch 100 + },H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword" 101 + ;function $(e,t,n=C){const i=Object.create(null) 102 + ;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ 103 + Object.assign(i,$(e[n],t,n))})),i;function s(e,n){ 104 + t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") 105 + ;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){ 106 + return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{ 107 + console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{ 108 + z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) 109 + },K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],o={},r={} 110 + ;for(let e=1;e<=t.length;e++)r[e+i]=s[e],o[e+i]=!0,i+=p(t[e-1]) 111 + ;e[n]=r,e[n]._emit=o,e[n]._multi=!0}function Z(e){(e=>{ 112 + e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, 113 + delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ 114 + _wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope 115 + }),(e=>{if(Array.isArray(e.begin)){ 116 + if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), 117 + K 118 + ;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"), 119 + K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{ 120 + if(Array.isArray(e.end)){ 121 + if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"), 122 + K 123 + ;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"), 124 + K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){ 125 + function t(t,n){ 126 + return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":"")) 127 + }class n{constructor(){ 128 + this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} 129 + addRule(e,t){ 130 + t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), 131 + this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) 132 + ;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|" 133 + }),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex 134 + ;const t=this.matcherRe.exec(e);if(!t)return null 135 + ;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] 136 + ;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){ 137 + this.rules=[],this.multiRegexes=[], 138 + this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ 139 + if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n 140 + ;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), 141 + t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ 142 + return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ 143 + this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ 144 + const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex 145 + ;let n=t.exec(e) 146 + ;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ 147 + const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} 148 + return n&&(this.regexIndex+=n.position+1, 149 + this.regexIndex===this.count&&this.considerAll()),n}} 150 + if(e.compilerExtensions||(e.compilerExtensions=[]), 151 + e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") 152 + ;return e.classNameAliases=i(e.classNameAliases||{}),function n(o,r){const a=o 153 + ;if(o.isCompiled)return a 154 + ;[I,B,Z,D].forEach((e=>e(o,r))),e.compilerExtensions.forEach((e=>e(o,r))), 155 + o.__beforeBegin=null,[T,L,P].forEach((e=>e(o,r))),o.isCompiled=!0;let c=null 156 + ;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords), 157 + c=o.keywords.$pattern, 158 + delete o.keywords.$pattern),c=c||/\w+/,o.keywords&&(o.keywords=$(o.keywords,e.case_insensitive)), 159 + a.keywordPatternRe=t(c,!0), 160 + r&&(o.begin||(o.begin=/\B|\b/),a.beginRe=t(a.begin),o.end||o.endsWithParent||(o.end=/\B|\b/), 161 + o.end&&(a.endRe=t(a.end)), 162 + a.terminatorEnd=l(a.end)||"",o.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+r.terminatorEnd)), 163 + o.illegal&&(a.illegalRe=t(o.illegal)), 164 + o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ 165 + variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ 166 + starts:e.starts?i(e.starts):null 167 + }):Object.isFrozen(e)?i(e):e))("self"===e?o:e)))),o.contains.forEach((e=>{n(e,a) 168 + })),o.starts&&n(o.starts,r),a.matcher=(e=>{const t=new s 169 + ;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" 170 + }))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" 171 + }),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){ 172 + return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{ 173 + constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}} 174 + const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{ 175 + const i=Object.create(null),s=Object.create(null),o=[];let r=!0 176 + ;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ 177 + disableAutodetect:!0,name:"Plain text",contains:[]};let p={ 178 + ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, 179 + languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", 180 + cssSelector:"pre code",languages:null,__emitter:c};function b(e){ 181 + return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s="" 182 + ;"object"==typeof t?(i=e, 183 + n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."), 184 + G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), 185 + s=e,i=t),void 0===n&&(n=!0);const o={code:i,language:s};N("before:highlight",o) 186 + ;const r=o.result?o.result:E(o.language,o.code,n) 187 + ;return r.code=o.code,N("after:highlight",r),r}function E(e,n,s,o){ 188 + const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R) 189 + ;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n="" 190 + ;for(;t;){n+=R.substring(e,t.index) 191 + ;const s=_.case_insensitive?t[0].toLowerCase():t[0],o=(i=s,N.keywords[i]);if(o){ 192 + const[e,i]=o 193 + ;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(j+=i),e.startsWith("_"))n+=t[0];else{ 194 + const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0] 195 + ;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i 196 + ;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{ 197 + if(""===R)return;let e=null;if("string"==typeof N.subLanguage){ 198 + if(!i[N.subLanguage])return void M.addText(R) 199 + ;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top 200 + }else e=x(R,N.subLanguage.length?N.subLanguage:null) 201 + ;N.relevance>0&&(j+=e.relevance),M.__addSublanguage(e._emitter,e.language) 202 + })():l(),R=""}function u(e,t){ 203 + ""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1 204 + ;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue} 205 + const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}} 206 + function h(e,t){ 207 + return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), 208 + e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), 209 + R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{ 210 + value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t) 211 + ;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e) 212 + ;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){ 213 + for(;e.endsParent&&e.parent;)e=e.parent;return e}} 214 + if(e.endsWithParent)return f(e.parent,n,i)}function b(e){ 215 + return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){ 216 + const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const o=N 217 + ;N.endScope&&N.endScope._wrap?(g(), 218 + u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), 219 + d(N.endScope,e)):o.skip?R+=t:(o.returnEnd||o.excludeEnd||(R+=t), 220 + g(),o.excludeEnd&&(R=t));do{ 221 + N.scope&&M.closeNode(),N.skip||N.subLanguage||(j+=N.relevance),N=N.parent 222 + }while(N!==s.parent);return s.starts&&h(s.starts,e),o.returnEnd?0:t.length} 223 + let w={};function y(i,o){const a=o&&o[0];if(R+=i,null==a)return g(),0 224 + ;if("begin"===w.type&&"end"===o.type&&w.index===o.index&&""===a){ 225 + if(R+=n.slice(o.index,o.index+1),!r){const t=Error(`0 width match regex (${e})`) 226 + ;throw t.languageName=e,t.badRule=w.rule,t}return 1} 227 + if(w=o,"begin"===o.type)return(e=>{ 228 + const n=e[0],i=e.rule,s=new t(i),o=[i.__beforeBegin,i["on:begin"]] 229 + ;for(const t of o)if(t&&(t(e,s),s.isMatchIgnored))return b(n) 230 + ;return i.skip?R+=n:(i.excludeBegin&&(R+=n), 231 + g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(o) 232 + ;if("illegal"===o.type&&!s){ 233 + const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"') 234 + ;throw e.mode=N,e}if("end"===o.type){const e=m(o);if(e!==ee)return e} 235 + if("illegal"===o.type&&""===a)return 1 236 + ;if(I>1e5&&I>3*o.index)throw Error("potential infinite loop, way more iterations than matches") 237 + ;return R+=a,a.length}const _=O(e) 238 + ;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"') 239 + ;const v=V(_);let k="",N=o||v;const S={},M=new p.__emitter(p);(()=>{const e=[] 240 + ;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) 241 + ;e.forEach((e=>M.openNode(e)))})();let R="",j=0,A=0,I=0,T=!1;try{ 242 + if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){ 243 + I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=A 244 + ;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(A,e.index),e) 245 + ;A=e.index+t}y(n.substring(A))}return M.finalize(),k=M.toHTML(),{language:e, 246 + value:k,relevance:j,illegal:!1,_emitter:M,_top:N}}catch(t){ 247 + if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n), 248 + illegal:!0,relevance:0,_illegalBy:{message:t.message,index:A, 249 + context:n.slice(A-100,A+100),mode:t.mode,resultSoFar:k},_emitter:M};if(r)return{ 250 + language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} 251 + ;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{ 252 + const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} 253 + ;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(k).map((t=>E(t,e,!1))) 254 + ;s.unshift(n);const o=s.sort(((e,t)=>{ 255 + if(e.relevance!==t.relevance)return t.relevance-e.relevance 256 + ;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1 257 + ;if(O(t.language).supersetOf===e.language)return-1}return 0})),[r,a]=o,c=r 258 + ;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{ 259 + let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" 260 + ;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1]) 261 + ;return t||(X(a.replace("{}",n[1])), 262 + X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} 263 + return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return 264 + ;if(N("before:highlightElement",{el:e,language:n 265 + }),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) 266 + ;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), 267 + console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), 268 + console.warn("The element with unescaped HTML:"), 269 + console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML) 270 + ;t=e;const i=t.textContent,o=n?m(i,{language:n,ignoreIllegals:!0}):x(i) 271 + ;e.innerHTML=o.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n 272 + ;e.classList.add("hljs"),e.classList.add("language-"+i) 273 + })(e,n,o.language),e.result={language:o.language,re:o.relevance, 274 + relevance:o.relevance},o.secondBest&&(e.secondBest={ 275 + language:o.secondBest.language,relevance:o.secondBest.relevance 276 + }),N("after:highlightElement",{el:e,result:o,text:i})}let y=!1;function _(){ 277 + "loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 278 + }function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]} 279 + function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ 280 + s[e.toLowerCase()]=t}))}function k(e){const t=O(e) 281 + ;return t&&!t.disableAutodetect}function N(e,t){const n=e;o.forEach((e=>{ 282 + e[n]&&e[n](t)}))} 283 + "undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ 284 + y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, 285 + highlightElement:w, 286 + highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"), 287 + G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)}, 288 + initHighlighting:()=>{ 289 + _(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, 290 + initHighlightingOnLoad:()=>{ 291 + _(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") 292 + },registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){ 293 + if(W("Language definition for '{}' could not be registered.".replace("{}",e)), 294 + !r)throw t;W(t),s=l} 295 + s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&v(s.aliases,{ 296 + languageName:e})},unregisterLanguage:e=>{delete i[e] 297 + ;for(const t of Object.keys(s))s[t]===e&&delete s[t]}, 298 + listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v, 299 + autoDetection:k,inherit:Q,addPlugin:e=>{(e=>{ 300 + e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ 301 + e["before:highlightBlock"](Object.assign({block:t.el},t)) 302 + }),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ 303 + e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)}, 304 + removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{ 305 + r=!1},n.safeMode=()=>{r=!0},n.versionString="11.9.0",n.regex={concat:h, 306 + lookahead:g,either:f,optional:d,anyNumberOfTimes:u} 307 + ;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n 308 + },ne=te({});return ne.newInstance=()=>te({}),ne}() 309 + ;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.9.0 */ 310 + (()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, 311 + end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ 312 + className:"variable",variants:[{ 313 + begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ 314 + className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE] 315 + },i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={ 316 + begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, 317 + end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/, 318 + contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/, 319 + end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] 320 + },l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 321 + }),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, 322 + contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ 323 + name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, 324 + keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], 325 + literal:["true","false"], 326 + built_in:["break","cd","continue","eval","exec","exit","export","getopts","hash","pwd","readonly","return","shift","test","times","trap","umask","unset","alias","bind","builtin","caller","command","declare","echo","enable","help","let","local","logout","mapfile","printf","read","readarray","source","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"] 327 + },contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{ 328 + className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() 329 + ;hljs.registerLanguage("bash",e)})();/*! `nix` grammar compiled for Highlight.js 11.9.0 */ 330 + (()=>{var e=(()=>{"use strict";return e=>{const n={ 331 + keyword:["rec","with","let","in","inherit","assert","if","else","then"], 332 + literal:["true","false","or","and","null"], 333 + built_in:["import","abort","baseNameOf","dirOf","isNull","builtins","map","removeAttrs","throw","toString","derivation"] 334 + },s={className:"subst",begin:/\$\{/,end:/\}/,keywords:n},a={className:"string", 335 + contains:[{className:"char.escape",begin:/''\$/},s],variants:[{begin:"''", 336 + end:"''"},{begin:'"',end:'"'}] 337 + },i=[e.NUMBER_MODE,e.HASH_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE,a,{ 338 + begin:/[a-zA-Z0-9-_]+(\s*=)/,returnBegin:!0,relevance:0,contains:[{ 339 + className:"attr",begin:/\S+/,relevance:.2}]}];return s.contains=i,{name:"Nix", 340 + aliases:["nixos"],keywords:n,contains:i}}})();hljs.registerLanguage("nix",e) 341 + })();/*! `shell` grammar compiled for Highlight.js 11.9.0 */ 342 + (()=>{var s=(()=>{"use strict";return s=>({name:"Shell Session", 343 + aliases:["console","shellsession"],contains:[{className:"meta.prompt", 344 + begin:/^\s{0,3}[/~\w\d[\]()@-]*[>%$#][ ]?/,starts:{end:/[^\\](?=\s*$)/, 345 + subLanguage:"bash"}}]})})();hljs.registerLanguage("shell",s)})();
+5 -6
pkgs/misc/documentation-highlighter/loader.js
··· 1 1 /* This file is NOT part of highlight.js */ 2 - document.onreadystatechange = function () { 3 - var listings = document.querySelectorAll('.programlisting, .screen'); 4 - for (i = 0; i < listings.length; ++i) { 5 - hljs.highlightBlock(listings[i]); 6 - } 7 - } 2 + document.addEventListener('DOMContentLoaded', (event) => { 3 + document.querySelectorAll('.programlisting, .screen').forEach((element) => { 4 + hljs.highlightElement(element); 5 + }); 6 + });
+15 -18
pkgs/misc/documentation-highlighter/mono-blue.css
··· 1 + pre code.hljs { 2 + display: block; 3 + overflow-x: auto; 4 + padding: 1em 5 + } 6 + code.hljs { 7 + padding: 3px 5px 8 + } 1 9 /* 2 10 Five-color theme from a single blue hue. 3 11 */ 4 12 .hljs { 5 - display: block; 6 - overflow-x: auto; 7 - padding: 0.5em; 8 13 background: #eaeef3; 9 - } 10 - 11 - .hljs { 12 - color: #00193a; 14 + color: #00193a 13 15 } 14 - 15 16 .hljs-keyword, 16 17 .hljs-selector-tag, 17 18 .hljs-title, ··· 19 20 .hljs-doctag, 20 21 .hljs-name, 21 22 .hljs-strong { 22 - font-weight: bold; 23 + font-weight: bold 23 24 } 24 - 25 25 .hljs-comment { 26 - color: #738191; 26 + color: #738191 27 27 } 28 - 29 28 .hljs-string, 30 29 .hljs-title, 31 30 .hljs-section, ··· 38 37 .hljs-name, 39 38 .hljs-selector-id, 40 39 .hljs-selector-class { 41 - color: #0048ab; 40 + color: #0048ab 42 41 } 43 - 44 42 .hljs-meta, 45 43 .hljs-subst, 46 44 .hljs-symbol, ··· 51 49 .hljs-template-variable, 52 50 .hljs-link, 53 51 .hljs-bullet { 54 - color: #4c81c9; 52 + color: #4c81c9 55 53 } 56 - 57 54 .hljs-emphasis { 58 - font-style: italic; 59 - } 55 + font-style: italic 56 + }
+10 -8
pkgs/misc/documentation-highlighter/update.sh
··· 21 21 mkdir $scratch/src 22 22 cd $scratch/src 23 23 24 - token=$(curl https://highlightjs.org/download/ -c "$scratch/jar" \ 25 - | grep csrf \ 26 - | cut -d"'" -f6) 24 + curl \ 25 + -X POST \ 26 + -H 'Content-Type: application/json' \ 27 + --data-raw '{ 28 + "api": 2, 29 + "languages": ["bash", "nix", "shell"] 30 + }' \ 31 + https://highlightjs.org/api/download > $scratch/out.zip 27 32 28 - curl --header "Referer: https://highlightjs.org/download/"\ 29 - -b "$scratch/jar" \ 30 - --data "csrfmiddlewaretoken=$token&nix.js=on&bash.js=on" \ 31 - https://highlightjs.org/download/ > $scratch/out.zip 32 33 33 34 unzip "$scratch/out.zip" 34 35 out="$root/" 35 36 mkdir -p "$out" 36 - cp ./{highlight.pack.js,LICENSE,styles/mono-blue.css} "$out" 37 + cp ./highlight.min.js "$out/highlight.pack.js" 38 + cp ./{LICENSE,styles/mono-blue.css} "$out" 37 39 38 40 ( 39 41 echo "This file was generated with pkgs/misc/documentation-highlighter/update.sh"