diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/METADATA b/METADATA new file mode 100644 index 0000000..06280f7 --- /dev/null +++ b/METADATA @@ -0,0 +1,2 @@ +languages: bash, css, json, lisp, markdown, plaintext, xml, yaml +theme: a11y-dark diff --git a/changelog.xml b/changelog.xml new file mode 100644 index 0000000..b6848f3 --- /dev/null +++ b/changelog.xml @@ -0,0 +1,128 @@ + + + + docs-builder ChangeLog + https://40ants.com/docs-builder + xml-emitter + en-us + + 0.11.1 (2024-03-11) + <ul><li><p>Fixed initite loop when the system is unknown to <code>ASDF</code> yet.</p></li></ul> + Mon, 11 Mar 2024 00:00:00 +0000 + + + 0.11.0 (2023-06-05) + <ul><li><p>Now docs builder tries to load system using either Quicklisp client or <code>ASDF</code> if system is not already loaded.</p></li><li><p>Also a bug was fixed - previously <a href="https://40ants.com/docs-builder/#x-28DOCS-BUILDER-3ABUILD-20FUNCTION-29" data-document="https://40ants.com/docs-builder/" data-node="x-28DOCS-BUILDER-3ABUILD-20FUNCTION-29"><code>docs-builder:build</code></a> function hanged in recursion in case if asdf system wasn't found. + Now it will show an error.</p></li></ul> + Mon, 05 Jun 2023 00:00:00 +0000 + + + 0.10.0 (2022-11-16) + <p>Support new refactored <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a> system.</p> + Wed, 16 Nov 2022 00:00:00 +0000 + + + 0.9.1 (2022-10-26) + <p>Fixed an issue with warnings from <code>ASDF</code> find-system function. Also, a build now should go faster.</p> + Wed, 26 Oct 2022 00:00:00 +0000 + + + 0.9.0 (2021-10-27) + <p>Added support for <code>DYNAMIC-BINDINGS</code> key in <a href="https://40ants.com/docs-builder/#x-28DOCS-CONFIG-3ADOCS-CONFIG-20GENERIC-FUNCTION-29" data-document="https://40ants.com/docs-builder/" data-node="x-28DOCS-CONFIG-3ADOCS-CONFIG-20GENERIC-FUNCTION-29"><code>docs-config:docs-config</code></a>'s results. This allows to configure documentation builder +in case if usual arguments passing is not enough.</p> + Wed, 27 Oct 2021 00:00:00 +0000 + + + 0.8.0 (2021-10-21) + <p><a href="https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FBUILDER-3ABUILD-20GENERIC-FUNCTION-29" data-document="https://40ants.com/docs-builder/" data-node="x-28DOCS-BUILDER-2FBUILDER-3ABUILD-20GENERIC-FUNCTION-29"><code>docs-builder/builder:build</code></a> generic-function specialized on <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a> system now supports <code>ROOT-SECTIONS</code> argument. +You can specify this argument to render a multipage documentation and suppress a warning about more than one root section.</p> + Thu, 21 Oct 2021 00:00:00 +0000 + + + 0.7.1 (2021-09-11) + <p>Fixed building documentation with <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a> if changelog section is absent.</p> + Sat, 11 Sep 2021 00:00:00 +0000 + + + 0.7.0 (2021-09-04) + <p>Added <a href="https://40ants.com/docs-builder/#x-28DOCS-CONFIG-3ADOCS-CONFIG-20GENERIC-FUNCTION-29" data-document="https://40ants.com/docs-builder/" data-node="x-28DOCS-CONFIG-3ADOCS-CONFIG-20GENERIC-FUNCTION-29"><code>docs-config:docs-config</code></a> generic-function to allow define +a special config for documented systems.</p> + Sat, 04 Sep 2021 00:00:00 +0000 + + + 0.6.2 (2021-08-31) + <p>Speedup documentation builder guessing.</p> + Tue, 31 Aug 2021 00:00:00 +0000 + + + 0.6.1 (2021-08-28) + <p>Fixed argument passing to the builder. Previously +error <code>Unknown &amp;KEY argument: :ERROR-ON-WARNINGS</code> has happened. </p> + Sat, 28 Aug 2021 00:00:00 +0000 + + + 0.6.0 (2021-08-28) + <p>Support new refactored <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a> system.</p> + Sat, 28 Aug 2021 00:00:00 +0000 + + + 0.5.3 (2021-05-08) + <p>Roswell script was fixed to work with latest <a href="https://40ants.com/defmain/#x-28-23A-28-287-29-20BASE-CHAR-20-2E-20-22defmain-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>defmain</code></a> system.</p> + Sat, 08 May 2021 00:00:00 +0000 + + + 0.5.2 (2021-04-25) + <p>Fixed the case when <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a> or <code>MGL-PAX</code> +builder found the same section twice. This could +happen for a package-inferred system where +some package has the same nickname as as a +primary system.</p> + Sun, 25 Apr 2021 00:00:00 +0000 + + + 0.5.1 (2021-04-16) + <p>Fixed returning of the path to resulting docs.</p> + Fri, 16 Apr 2021 00:00:00 +0000 + + + 0.5.0 (2021-04-15) + <p>Now <a href="https://40ants.com/docs-builder/#x-28DOCS-BUILDER-3ABUILD-20FUNCTION-29" data-document="https://40ants.com/docs-builder/" data-node="x-28DOCS-BUILDER-3ABUILD-20FUNCTION-29"><code>docs-builder:build</code></a> has a special argument <code>ERROR-ON-WARNINGS</code> +which is T by default. This flag causes a <a href="https://40ants.com/docs-builder/#x-28DOCS-BUILDER-3ADOCUMENTATION-HAS-PROBLEMS-20CONDITION-29" data-document="https://40ants.com/docs-builder/" data-node="x-28DOCS-BUILDER-3ADOCUMENTATION-HAS-PROBLEMS-20CONDITION-29"><code>docs-builder:documentation-has-problems</code></a> +continuable error signaled in case if there were some warnings +during building the documentation.</p> + Thu, 15 Apr 2021 00:00:00 +0000 + + + 0.4.2 (2021-04-05) + <p>Fixed dependency on <code>log4cl-extras</code>.</p> + Mon, 05 Apr 2021 00:00:00 +0000 + + + 0.4.1 (2021-04-05) + <p>Now utility will dump traceback +in case of errors during the build.</p> + Mon, 05 Apr 2021 00:00:00 +0000 + + + 0.4.0 (2021-04-05) + <ul><li><p>Added support for <a href="https://40ants.com/doc/#x-28-23A-28-2810-29-20BASE-CHAR-20-2E-20-2240ants-doc-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29"><code>40ants-doc</code></a> documentation builder.</p></li><li><p>Switched <code>MGL-PAX</code> builder from my fork to original.</p></li></ul> + Mon, 05 Apr 2021 00:00:00 +0000 + + + 0.3.0 (2021-02-22) + <p>Now <code>MGL-PAX</code> builder is able to discover all root sections and to build +a multipage <code>HTML</code> doc.</p> + Mon, 22 Feb 2021 00:00:00 +0000 + + + 0.2.0 (2021-02-21) + <p>Added basic support for Geneva documentation generator.</p> + Sun, 21 Feb 2021 00:00:00 +0000 + + + 0.1.0 (2021-02-04) + <p>Initial version.</p> + Thu, 04 Feb 2021 00:00:00 +0000 + + + \ No newline at end of file diff --git a/changelog/index.html b/changelog/index.html new file mode 100644 index 0000000..9c3b3da --- /dev/null +++ b/changelog/index.html @@ -0,0 +1,173 @@ + + + + ChangeLog + + + + + + + + + + + + + + + + + + + + + +
Fork me on GitHub + + +

ChangeLog

0.11.1 (2024-03-11)

0.11.0 (2023-06-05)

0.10.0 (2022-11-16)

Support new refactored 40ants-doc system.

0.9.1 (2022-10-26)

Fixed an issue with warnings from ASDF find-system function. Also, a build now should go faster.

0.9.0 (2021-10-27)

Added support for DYNAMIC-BINDINGS key in docs-config:docs-config's results. This allows to configure documentation builder +in case if usual arguments passing is not enough.

0.8.0 (2021-10-21)

docs-builder/builder:build generic-function specialized on 40ants-doc system now supports ROOT-SECTIONS argument. +You can specify this argument to render a multipage documentation and suppress a warning about more than one root section.

0.7.1 (2021-09-11)

Fixed building documentation with 40ants-doc if changelog section is absent.

0.7.0 (2021-09-04)

Added docs-config:docs-config generic-function to allow define +a special config for documented systems.

0.6.2 (2021-08-31)

Speedup documentation builder guessing.

0.6.1 (2021-08-28)

Fixed argument passing to the builder. Previously +error Unknown &KEY argument: :ERROR-ON-WARNINGS has happened.

0.6.0 (2021-08-28)

Support new refactored 40ants-doc system.

0.5.3 (2021-05-08)

Roswell script was fixed to work with latest defmain system.

0.5.2 (2021-04-25)

Fixed the case when 40ants-doc or MGL-PAX +builder found the same section twice. This could +happen for a package-inferred system where +some package has the same nickname as as a +primary system.

0.5.1 (2021-04-16)

Fixed returning of the path to resulting docs.

0.5.0 (2021-04-15)

Now docs-builder:build has a special argument ERROR-ON-WARNINGS +which is T by default. This flag causes a docs-builder:documentation-has-problems +continuable error signaled in case if there were some warnings +during building the documentation.

0.4.2 (2021-04-05)

Fixed dependency on log4cl-extras.

0.4.1 (2021-04-05)

Now utility will dump traceback +in case of errors during the build.

0.4.0 (2021-04-05)

0.3.0 (2021-02-22)

Now MGL-PAX builder is able to discover all root sections and to build +a multipage HTML doc.

0.2.0 (2021-02-21)

Added basic support for Geneva documentation generator.

0.1.0 (2021-02-04)

Initial version.

+
+
+ + \ No newline at end of file diff --git a/doctools.js b/doctools.js new file mode 100644 index 0000000..8cbf1b1 --- /dev/null +++ b/doctools.js @@ -0,0 +1,323 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for all documentation. + * + * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/** + * select a different prefix for underscore + */ +$u = _.noConflict(); + +/** + * make the code below compatible with browsers without + * an installed firebug like debugger +if (!window.console || !console.firebug) { + var names = ["log", "debug", "info", "warn", "error", "assert", "dir", + "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", + "profile", "profileEnd"]; + window.console = {}; + for (var i = 0; i < names.length; ++i) + window.console[names[i]] = function() {}; +} + */ + +/** + * small helper function to urldecode strings + * + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#Decoding_query_parameters_from_a_URL + */ +jQuery.urldecode = function(x) { + if (!x) { + return x + } + return decodeURIComponent(x.replace(/\+/g, ' ')); +}; + +/** + * small helper function to urlencode strings + */ +jQuery.urlencode = encodeURIComponent; + +/** + * This function returns the parsed url parameters of the + * current request. Multiple values per key are supported, + * it will always return arrays of strings for the value parts. + */ +jQuery.getQueryParameters = function(s) { + if (typeof s === 'undefined') + s = document.location.search; + var parts = s.substr(s.indexOf('?') + 1).split('&'); + var result = {}; + for (var i = 0; i < parts.length; i++) { + var tmp = parts[i].split('=', 2); + var key = jQuery.urldecode(tmp[0]); + var value = jQuery.urldecode(tmp[1]); + if (key in result) + result[key].push(value); + else + result[key] = [value]; + } + return result; +}; + +/** + * highlight a given string on a jquery object by wrapping it in + * span elements with the given class name. + */ +jQuery.fn.highlightText = function(text, className) { + function highlight(node, addItems) { + if (node.nodeType === 3) { + var val = node.nodeValue; + var pos = val.toLowerCase().indexOf(text); + if (pos >= 0 && + !jQuery(node.parentNode).hasClass(className) && + !jQuery(node.parentNode).hasClass("nohighlight")) { + var span; + var isInSVG = jQuery(node).closest("body, svg, foreignObject").is("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.className = className; + } + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + node.parentNode.insertBefore(span, node.parentNode.insertBefore( + document.createTextNode(val.substr(pos + text.length)), + node.nextSibling)); + node.nodeValue = val.substr(0, pos); + if (isInSVG) { + var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute('class', className); + addItems.push({ + "parent": node.parentNode, + "target": rect}); + } + } + } + else if (!jQuery(node).is("button, select, textarea")) { + jQuery.each(node.childNodes, function() { + highlight(this, addItems); + }); + } + } + var addItems = []; + var result = this.each(function() { + highlight(this, addItems); + }); + for (var i = 0; i < addItems.length; ++i) { + jQuery(addItems[i].parent).before(addItems[i].target); + } + return result; +}; + +/* + * backward compatibility for jQuery.browser + * This will be supported until firefox bug is fixed. + */ +if (!jQuery.browser) { + jQuery.uaMatch = function(ua) { + ua = ua.toLowerCase(); + + var match = /(chrome)[ \/]([\w.]+)/.exec(ua) || + /(webkit)[ \/]([\w.]+)/.exec(ua) || + /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) || + /(msie) ([\w.]+)/.exec(ua) || + ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) || + []; + + return { + browser: match[ 1 ] || "", + version: match[ 2 ] || "0" + }; + }; + jQuery.browser = {}; + jQuery.browser[jQuery.uaMatch(navigator.userAgent).browser] = true; +} + +/** + * Small JavaScript module for the documentation. + */ +var Documentation = { + + init : function() { + this.fixFirefoxAnchorBug(); + this.highlightSearchWords(); + this.initIndexTable(); + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } + }, + + /** + * i18n support + */ + TRANSLATIONS : {}, + PLURAL_EXPR : function(n) { return n === 1 ? 0 : 1; }, + LOCALE : 'unknown', + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext : function(string) { + var translated = Documentation.TRANSLATIONS[string]; + if (typeof translated === 'undefined') + return string; + return (typeof translated === 'string') ? translated : translated[0]; + }, + + ngettext : function(singular, plural, n) { + var translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated === 'undefined') + return (n == 1) ? singular : plural; + return translated[Documentation.PLURALEXPR(n)]; + }, + + addTranslations : function(catalog) { + for (var key in catalog.messages) + this.TRANSLATIONS[key] = catalog.messages[key]; + this.PLURAL_EXPR = new Function('n', 'return +(' + catalog.plural_expr + ')'); + this.LOCALE = catalog.locale; + }, + + /** + * add context elements like header anchor links + */ + addContextElements : function() { + $('div[id] > :header:first').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this headline')). + appendTo(this); + }); + $('dt[id]').each(function() { + $('\u00B6'). + attr('href', '#' + this.id). + attr('title', _('Permalink to this definition')). + appendTo(this); + }); + }, + + /** + * workaround a firefox stupidity + * see: https://bugzilla.mozilla.org/show_bug.cgi?id=645075 + */ + fixFirefoxAnchorBug : function() { + if (document.location.hash && $.browser.mozilla) + window.setTimeout(function() { + document.location.href += ''; + }, 10); + }, + + /** + * highlight the search words provided in the url in the text + */ + highlightSearchWords : function() { + var params = $.getQueryParameters(); + var terms = (params.highlight) ? params.highlight[0].split(/\s+/) : []; + if (terms.length) { + var body = $('div.body'); + if (!body.length) { + body = $('body'); + } + window.setTimeout(function() { + $.each(terms, function() { + body.highlightText(this.toLowerCase(), 'highlighted'); + }); + }, 10); + $('') + .appendTo($('#searchbox')); + } + }, + + /** + * init the domain index toggle buttons + */ + initIndexTable : function() { + var togglers = $('img.toggler').click(function() { + var src = $(this).attr('src'); + var idnum = $(this).attr('id').substr(7); + $('tr.cg-' + idnum).toggle(); + if (src.substr(-9) === 'minus.png') + $(this).attr('src', src.substr(0, src.length-9) + 'plus.png'); + else + $(this).attr('src', src.substr(0, src.length-8) + 'minus.png'); + }).css('display', ''); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) { + togglers.click(); + } + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords : function() { + $('#searchbox .highlight-link').fadeOut(300); + $('span.highlighted').removeClass('highlighted'); + }, + + /** + * make the url absolute + */ + makeURL : function(relativeURL) { + return DOCUMENTATION_OPTIONS.URL_ROOT + '/' + relativeURL; + }, + + /** + * get the current relative url + */ + getCurrentURL : function() { + var path = document.location.pathname; + var parts = path.split(/\//); + $.each(DOCUMENTATION_OPTIONS.URL_ROOT.split(/\//), function() { + if (this === '..') + parts.pop(); + }); + var url = parts.join('/'); + return path.substring(url.lastIndexOf('/') + 1, path.length - 1); + }, + + initOnKeyListeners: function() { + $(document).keydown(function(event) { + var activeElementType = document.activeElement.tagName; + // don't navigate when in search box, textarea, dropdown or button + if (activeElementType !== 'TEXTAREA' && activeElementType !== 'INPUT' && activeElementType !== 'SELECT' + && activeElementType !== 'BUTTON' && !event.altKey && !event.ctrlKey && !event.metaKey + && !event.shiftKey) { + switch (event.keyCode) { + case 37: // left + var prevHref = $('link[rel="prev"]').prop('href'); + if (prevHref) { + window.location.href = prevHref; + return false; + } + break; + case 39: // right + var nextHref = $('link[rel="next"]').prop('href'); + if (nextHref) { + window.location.href = nextHref; + return false; + } + break; + } + } + }); + } +}; + +// quick alias for translations +_ = Documentation.gettext; + +$(document).ready(function() { + Documentation.init(); +}); diff --git a/highlight.min.css b/highlight.min.css new file mode 100644 index 0000000..7820d7d --- /dev/null +++ b/highlight.min.css @@ -0,0 +1,7 @@ +pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}/*! + Theme: a11y-dark + Author: @ericwbailey + Maintainer: @ericwbailey + + Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css +*/.hljs{background:#2b2b2b;color:#f8f8f2}.hljs-comment,.hljs-quote{color:#d4d0ab}.hljs-deletion,.hljs-name,.hljs-regexp,.hljs-selector-class,.hljs-selector-id,.hljs-tag,.hljs-template-variable,.hljs-variable{color:#ffa07a}.hljs-built_in,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-type{color:#f5ab35}.hljs-attribute{color:gold}.hljs-addition,.hljs-bullet,.hljs-string,.hljs-symbol{color:#abe338}.hljs-section,.hljs-title{color:#00e0e0}.hljs-keyword,.hljs-selector-tag{color:#dcc6e0}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}@media screen and (-ms-high-contrast:active){.hljs-addition,.hljs-attribute,.hljs-built_in,.hljs-bullet,.hljs-comment,.hljs-link,.hljs-literal,.hljs-meta,.hljs-number,.hljs-params,.hljs-quote,.hljs-string,.hljs-symbol,.hljs-type{color:highlight}.hljs-keyword,.hljs-selector-tag{font-weight:700}} \ No newline at end of file diff --git a/highlight.min.js b/highlight.min.js new file mode 100644 index 0000000..d14eb0c --- /dev/null +++ b/highlight.min.js @@ -0,0 +1,466 @@ +/*! + Highlight.js v11.9.0 (git: b7ec4bfafc) + (c) 2006-2023 undefined and other contributors + License: BSD-3-Clause + */ +var hljs=function(){"use strict";function e(t){ +return t instanceof Map?t.clear=t.delete=t.set=()=>{ +throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{ +throw Error("set is read-only") +}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{ +const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i) +})),t}class t{constructor(e){ +void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1} +ignoreMatch(){this.isMatchIgnored=!0}}function n(e){ +return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'") +}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t] +;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope +;class o{constructor(e,t){ +this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){ +this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{ +if(e.startsWith("language:"))return e.replace("language:","language-") +;if(e.includes(".")){const n=e.split(".") +;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ") +}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)} +closeNode(e){s(e)&&(this.buffer+="")}value(){return this.buffer}span(e){ +this.buffer+=``}}const r=(e={})=>{const t={children:[]} +;return Object.assign(t,e),t};class a{constructor(){ +this.rootNode=r(),this.stack=[this.rootNode]}get top(){ +return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){ +this.top.children.push(e)}openNode(e){const t=r({scope:e}) +;this.add(t),this.stack.push(t)}closeNode(){ +if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){ +for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)} +walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){ +return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t), +t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){ +"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{ +a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e} +addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){ +this.closeNode()}__addSublanguage(e,t){const n=e.root +;t&&(n.scope="language:"+t),this.add(n)}toHTML(){ +return new o(this,this.options).value()}finalize(){ +return this.closeAllNodes(),!0}}function l(e){ +return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")} +function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")} +function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{ +const t=e[e.length-1] +;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{} +})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"} +function p(e){return RegExp(e.toString()+"|").exec("").length-1} +const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./ +;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n +;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break} +s+=i.substring(0,e.index), +i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0], +"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)} +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={ +begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'", +illegal:"\\n",contains:[O]},k={scope:"string",begin:'"',end:'"',illegal:"\\n", +contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t, +contains:[]},n);s.contains.push({scope:"doctag", +begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)", +end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0}) +;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,}/) +;return s.contains.push({begin:h(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s +},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var j=Object.freeze({ +__proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{ +scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N, +C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number", +begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{ +"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{ +t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E, +MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0}, +NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w, +PHRASAL_WORDS_MODE:{ +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/ +},QUOTE_STRING_MODE:k,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/, +end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]}, +RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~", +SHEBANG:(e={})=>{const t=/^#![ ]*\// +;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t, +end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)}, +TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x, +UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function A(e,t){ +"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){ +void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){ +t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)", +e.__beforeBegin=A,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords, +void 0===e.relevance&&(e.relevance=0))}function L(e,t){ +Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){ +if(e.match){ +if(e.begin||e.end)throw Error("begin & end are not supported with match") +;e.begin=e.match,delete e.match}}function P(e,t){ +void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return +;if(e.starts)throw Error("beforeMatch cannot be used with starts") +;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t] +})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={ +relevance:0,contains:[Object.assign(n,{endsParent:!0})] +},e.relevance=0,delete n.beforeMatch +},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword" +;function $(e,t,n=C){const i=Object.create(null) +;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{ +Object.assign(i,$(e[n],t,n))})),i;function s(e,n){ +t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|") +;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){ +return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{ +console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{ +z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0) +},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],o={},r={} +;for(let e=1;e<=t.length;e++)r[e+i]=s[e],o[e+i]=!0,i+=p(t[e-1]) +;e[n]=r,e[n]._emit=o,e[n]._multi=!0}function Z(e){(e=>{ +e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope, +delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={ +_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope +}),(e=>{if(Array.isArray(e.begin)){ +if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"), +K +;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"), +K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{ +if(Array.isArray(e.end)){ +if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"), +K +;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"), +K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){ +function t(t,n){ +return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":"")) +}class n{constructor(){ +this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0} +addRule(e,t){ +t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]), +this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null) +;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|" +}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex +;const t=this.matcherRe.exec(e);if(!t)return null +;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n] +;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){ +this.rules=[],this.multiRegexes=[], +this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){ +if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n +;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))), +t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){ +return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){ +this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){ +const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex +;let n=t.exec(e) +;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{ +const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)} +return n&&(this.regexIndex+=n.position+1, +this.regexIndex===this.count&&this.considerAll()),n}} +if(e.compilerExtensions||(e.compilerExtensions=[]), +e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.") +;return e.classNameAliases=i(e.classNameAliases||{}),function n(o,r){const a=o +;if(o.isCompiled)return a +;[I,B,Z,D].forEach((e=>e(o,r))),e.compilerExtensions.forEach((e=>e(o,r))), +o.__beforeBegin=null,[T,L,P].forEach((e=>e(o,r))),o.isCompiled=!0;let c=null +;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords), +c=o.keywords.$pattern, +delete o.keywords.$pattern),c=c||/\w+/,o.keywords&&(o.keywords=$(o.keywords,e.case_insensitive)), +a.keywordPatternRe=t(c,!0), +r&&(o.begin||(o.begin=/\B|\b/),a.beginRe=t(a.begin),o.end||o.endsWithParent||(o.end=/\B|\b/), +o.end&&(a.endRe=t(a.end)), +a.terminatorEnd=l(a.end)||"",o.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+r.terminatorEnd)), +o.illegal&&(a.illegalRe=t(o.illegal)), +o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{ +variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{ +starts:e.starts?i(e.starts):null +}):Object.isFrozen(e)?i(e):e))("self"===e?o:e)))),o.contains.forEach((e=>{n(e,a) +})),o.starts&&n(o.starts,r),a.matcher=(e=>{const t=new s +;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin" +}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end" +}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){ +return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{ +constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}} +const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{ +const i=Object.create(null),s=Object.create(null),o=[];let r=!0 +;const a="Could not find the language '{}', did you forget to load/include a language module?",l={ +disableAutodetect:!0,name:"Plain text",contains:[]};let p={ +ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i, +languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-", +cssSelector:"pre code",languages:null,__emitter:c};function b(e){ +return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s="" +;"object"==typeof t?(i=e, +n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."), +G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"), +s=e,i=t),void 0===n&&(n=!0);const o={code:i,language:s};N("before:highlight",o) +;const r=o.result?o.result:E(o.language,o.code,n) +;return r.code=o.code,N("after:highlight",r),r}function E(e,n,s,o){ +const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R) +;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n="" +;for(;t;){n+=R.substring(e,t.index) +;const s=_.case_insensitive?t[0].toLowerCase():t[0],o=(i=s,N.keywords[i]);if(o){ +const[e,i]=o +;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(j+=i),e.startsWith("_"))n+=t[0];else{ +const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0] +;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i +;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{ +if(""===R)return;let e=null;if("string"==typeof N.subLanguage){ +if(!i[N.subLanguage])return void M.addText(R) +;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top +}else e=x(R,N.subLanguage.length?N.subLanguage:null) +;N.relevance>0&&(j+=e.relevance),M.__addSublanguage(e._emitter,e.language) +})():l(),R=""}function u(e,t){ +""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1 +;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue} +const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}} +function h(e,t){ +return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope), +e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap), +R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{ +value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t) +;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e) +;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){ +for(;e.endsParent&&e.parent;)e=e.parent;return e}} +if(e.endsWithParent)return f(e.parent,n,i)}function b(e){ +return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){ +const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const o=N +;N.endScope&&N.endScope._wrap?(g(), +u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(), +d(N.endScope,e)):o.skip?R+=t:(o.returnEnd||o.excludeEnd||(R+=t), +g(),o.excludeEnd&&(R=t));do{ +N.scope&&M.closeNode(),N.skip||N.subLanguage||(j+=N.relevance),N=N.parent +}while(N!==s.parent);return s.starts&&h(s.starts,e),o.returnEnd?0:t.length} +let w={};function y(i,o){const a=o&&o[0];if(R+=i,null==a)return g(),0 +;if("begin"===w.type&&"end"===o.type&&w.index===o.index&&""===a){ +if(R+=n.slice(o.index,o.index+1),!r){const t=Error(`0 width match regex (${e})`) +;throw t.languageName=e,t.badRule=w.rule,t}return 1} +if(w=o,"begin"===o.type)return(e=>{ +const n=e[0],i=e.rule,s=new t(i),o=[i.__beforeBegin,i["on:begin"]] +;for(const t of o)if(t&&(t(e,s),s.isMatchIgnored))return b(n) +;return i.skip?R+=n:(i.excludeBegin&&(R+=n), +g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(o) +;if("illegal"===o.type&&!s){ +const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"")+'"') +;throw e.mode=N,e}if("end"===o.type){const e=m(o);if(e!==ee)return e} +if("illegal"===o.type&&""===a)return 1 +;if(I>1e5&&I>3*o.index)throw Error("potential infinite loop, way more iterations than matches") +;return R+=a,a.length}const _=O(e) +;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"') +;const v=V(_);let k="",N=o||v;const S={},M=new p.__emitter(p);(()=>{const e=[] +;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope) +;e.forEach((e=>M.openNode(e)))})();let R="",j=0,A=0,I=0,T=!1;try{ +if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){ +I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=A +;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(A,e.index),e) +;A=e.index+t}y(n.substring(A))}return M.finalize(),k=M.toHTML(),{language:e, +value:k,relevance:j,illegal:!1,_emitter:M,_top:N}}catch(t){ +if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n), +illegal:!0,relevance:0,_illegalBy:{message:t.message,index:A, +context:n.slice(A-100,A+100),mode:t.mode,resultSoFar:k},_emitter:M};if(r)return{ +language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N} +;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{ +const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)} +;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(k).map((t=>E(t,e,!1))) +;s.unshift(n);const o=s.sort(((e,t)=>{ +if(e.relevance!==t.relevance)return t.relevance-e.relevance +;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1 +;if(O(t.language).supersetOf===e.language)return-1}return 0})),[r,a]=o,c=r +;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{ +let t=e.className+" ";t+=e.parentNode?e.parentNode.className:"" +;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1]) +;return t||(X(a.replace("{}",n[1])), +X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"} +return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return +;if(N("before:highlightElement",{el:e,language:n +}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e) +;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."), +console.warn("https://github.com/highlightjs/highlight.js/wiki/security"), +console.warn("The element with unescaped HTML:"), +console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML) +;t=e;const i=t.textContent,o=n?m(i,{language:n,ignoreIllegals:!0}):x(i) +;e.innerHTML=o.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n +;e.classList.add("hljs"),e.classList.add("language-"+i) +})(e,n,o.language),e.result={language:o.language,re:o.relevance, +relevance:o.relevance},o.secondBest&&(e.secondBest={ +language:o.secondBest.language,relevance:o.secondBest.relevance +}),N("after:highlightElement",{el:e,result:o,text:i})}let y=!1;function _(){ +"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0 +}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]} +function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{ +s[e.toLowerCase()]=t}))}function k(e){const t=O(e) +;return t&&!t.disableAutodetect}function N(e,t){const n=e;o.forEach((e=>{ +e[n]&&e[n](t)}))} +"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{ +y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_, +highlightElement:w, +highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"), +G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)}, +initHighlighting:()=>{ +_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")}, +initHighlightingOnLoad:()=>{ +_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.") +},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){ +if(W("Language definition for '{}' could not be registered.".replace("{}",e)), +!r)throw t;W(t),s=l} +s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&v(s.aliases,{ +languageName:e})},unregisterLanguage:e=>{delete i[e] +;for(const t of Object.keys(s))s[t]===e&&delete s[t]}, +listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v, +autoDetection:k,inherit:Q,addPlugin:e=>{(e=>{ +e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{ +e["before:highlightBlock"](Object.assign({block:t.el},t)) +}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{ +e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)}, +removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{ +r=!1},n.safeMode=()=>{r=!0},n.versionString="11.9.0",n.regex={concat:h, +lookahead:g,either:f,optional:d,anyNumberOfTimes:u} +;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n +},ne=te({});return ne.newInstance=()=>te({}),ne}() +;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/, +end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{ +className:"variable",variants:[{ +begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={ +className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE] +},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={ +begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/, +end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/, +contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/, +end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t] +},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10 +}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0, +contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{ +name:"Bash",aliases:["sh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/, +keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"], +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","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"] +},contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{ +className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})() +;hljs.registerLanguage("bash",e)})();/*! `css` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict" +;const e=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video","defs","g","marker","mask","pattern","svg","switch","symbol","feBlend","feColorMatrix","feComponentTransfer","feComposite","feConvolveMatrix","feDiffuseLighting","feDisplacementMap","feFlood","feGaussianBlur","feImage","feMerge","feMorphology","feOffset","feSpecularLighting","feTile","feTurbulence","linearGradient","radialGradient","stop","circle","ellipse","image","line","path","polygon","polyline","rect","text","use","textPath","tspan","foreignObject","clipPath"],r=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"].sort().reverse(),o=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"].sort().reverse(),t=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"].sort().reverse(),i=["align-content","align-items","align-self","alignment-baseline","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","cx","cy","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","color-interpolation","color-interpolation-filters","color-profile","color-rendering","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","empty-cells","enable-background","fill","fill-opacity","fill-rule","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","flood-color","flood-opacity","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-horizontal","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","kerning","justify-content","left","letter-spacing","lighting-color","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","marker","marker-end","marker-mid","marker-start","mask","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","r","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","shape-rendering","stop-color","stop-opacity","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","speak","speak-as","src","tab-size","table-layout","text-anchor","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vector-effect","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","x","y","z-index"].sort().reverse() +;return n=>{const a=n.regex,l=(e=>({IMPORTANT:{scope:"meta",begin:"!important"}, +BLOCK_COMMENT:e.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number", +begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{ +className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{ +scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$", +contains:[e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{ +scope:"number", +begin:e.NUMBER_RE+"(%|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)?", +relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/} +}))(n),s=[n.APOS_STRING_MODE,n.QUOTE_STRING_MODE];return{name:"CSS", +case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"}, +classNameAliases:{keyframePosition:"selector-tag"},contains:[l.BLOCK_COMMENT,{ +begin:/-(webkit|moz|ms|o)-(?=[a-z])/},l.CSS_NUMBER_MODE,{ +className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{ +className:"selector-class",begin:"\\.[a-zA-Z-][a-zA-Z0-9_-]*",relevance:0 +},l.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{ +begin:":("+o.join("|")+")"},{begin:":(:)?("+t.join("|")+")"}]},l.CSS_VARIABLE,{ +className:"attribute",begin:"\\b("+i.join("|")+")\\b"},{begin:/:/,end:/[;}{]/, +contains:[l.BLOCK_COMMENT,l.HEXCOLOR,l.IMPORTANT,l.CSS_NUMBER_MODE,...s,{ +begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri" +},contains:[...s,{className:"string",begin:/[^)]/,endsWithParent:!0, +excludeEnd:!0}]},l.FUNCTION_DISPATCH]},{begin:a.lookahead(/@/),end:"[{;]", +relevance:0,illegal:/:/,contains:[{className:"keyword",begin:/@-?\w[\w]*(-\w+)*/ +},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{ +$pattern:/[a-z-]+/,keyword:"and or not only",attribute:r.join(" ")},contains:[{ +begin:/[a-z-]+(?=:)/,className:"attribute"},...s,l.CSS_NUMBER_MODE]}]},{ +className:"selector-tag",begin:"\\b("+e.join("|")+")\\b"}]}}})() +;hljs.registerLanguage("css",e)})();/*! `json` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const a=["true","false","null"],n={ +scope:"literal",beginKeywords:a.join(" ")};return{name:"JSON",keywords:{ +literal:a},contains:[{className:"attr",begin:/"(\\.|[^\\"\r\n])*"(?=\s*:)/, +relevance:1.01},{match:/[{}[\],:]/,className:"punctuation",relevance:0 +},e.QUOTE_STRING_MODE,n,e.C_NUMBER_MODE,e.C_LINE_COMMENT_MODE,e.C_BLOCK_COMMENT_MODE], +illegal:"\\S"}}})();hljs.registerLanguage("json",e)})();/*! `lisp` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="[a-zA-Z_\\-+\\*\\/<=>&#][a-zA-Z0-9_\\-+*\\/<=>&#!]*",a="\\|[^]*?\\|",i="(-|\\+)?\\d+(\\.\\d+|\\/\\d+)?((d|e|f|l|s|D|E|F|L|S)(\\+|-)?\\d+)?",s={ +className:"literal",begin:"\\b(t{1}|nil)\\b"},l={className:"number",variants:[{ +begin:i,relevance:0},{begin:"#(b|B)[0-1]+(/[0-1]+)?"},{ +begin:"#(o|O)[0-7]+(/[0-7]+)?"},{begin:"#(x|X)[0-9a-fA-F]+(/[0-9a-fA-F]+)?"},{ +begin:"#(c|C)\\("+i+" +"+i,end:"\\)"}]},b=e.inherit(e.QUOTE_STRING_MODE,{ +illegal:null}),g=e.COMMENT(";","$",{relevance:0}),r={begin:"\\*",end:"\\*"},t={ +className:"symbol",begin:"[:&]"+n},c={begin:n,relevance:0},d={begin:a},o={ +contains:[l,b,r,t,{begin:"\\(",end:"\\)",contains:["self",s,b,l,c]},c], +variants:[{begin:"['`]\\(",end:"\\)"},{begin:"\\(quote ",end:"\\)",keywords:{ +name:"quote"}},{begin:"'"+a}]},v={variants:[{begin:"'"+n},{ +begin:"#'"+n+"(::"+n+")*"}]},m={begin:"\\(\\s*",end:"\\)"},u={endsWithParent:!0, +relevance:0};return m.contains=[{className:"name",variants:[{begin:n,relevance:0 +},{begin:a}]},u],u.contains=[o,v,m,s,l,b,g,r,t,d,c],{name:"Lisp",illegal:/\S/, +contains:[l,e.SHEBANG(),s,b,g,o,v,m,c]}}})();hljs.registerLanguage("lisp",e) +})();/*! `markdown` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/, +end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/, +relevance:0},{ +begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/, +relevance:2},{ +begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/), +relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{ +begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/ +},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0, +returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)", +excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[", +end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[], +variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}] +},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{ +begin:/_(?![_\s])/,end:/_/,relevance:0}]},c=e.inherit(i,{contains:[] +}),t=e.inherit(s,{contains:[]});i.contains.push(t),s.contains.push(c) +;let g=[n,a];return[i,s,c,t].forEach((e=>{e.contains=e.contains.concat(g) +})),g=g.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{ +className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{ +begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n", +contains:g}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)", +end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:g, +end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{ +begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{ +begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))", +contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{ +begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{ +className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{ +className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]}]}}})() +;hljs.registerLanguage("markdown",e)})();/*! `plaintext` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text", +aliases:["text","txt"],disableAutodetect:!0})})() +;hljs.registerLanguage("plaintext",t)})();/*! `xml` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const a=e.regex,n=a.concat(/[\p{L}_]/u,a.optional(/[\p{L}0-9_.-]*:/u),/[\p{L}0-9_.-]*/u),s={ +className:"symbol",begin:/&[a-z]+;|&#[0-9]+;|&#x[a-f0-9]+;/},t={begin:/\s/, +contains:[{className:"keyword",begin:/#?[a-z_][a-z1-9_-]+/,illegal:/\n/}] +},i=e.inherit(t,{begin:/\(/,end:/\)/}),c=e.inherit(e.APOS_STRING_MODE,{ +className:"string"}),l=e.inherit(e.QUOTE_STRING_MODE,{className:"string"}),r={ +endsWithParent:!0,illegal:/`]+/}]}]}]};return{ +name:"HTML, XML", +aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"], +case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin://,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{ +className:"meta",begin://,contains:[t,i,l,c]}]}] +},e.COMMENT(//,{relevance:10}),{begin://, +relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/, +relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"style"},contains:[r],starts:{ +end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag", +begin:/)/,end:/>/,keywords:{name:"script"},contains:[r],starts:{ +end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{ +className:"tag",begin:/<>|<\/>/},{className:"tag", +begin:a.concat(//,/>/,/\s/)))), +end:/\/?>/,contains:[{className:"name",begin:n,relevance:0,starts:r}]},{ +className:"tag",begin:a.concat(/<\//,a.lookahead(a.concat(n,/>/))),contains:[{ +className:"name",begin:n,relevance:0},{begin:/>/,relevance:0,endsParent:!0}]}]}} +})();hljs.registerLanguage("xml",e)})();/*! `yaml` grammar compiled for Highlight.js 11.9.0 */ +(()=>{var e=(()=>{"use strict";return e=>{ +const n="true false yes no null",a="[\\w#;/?:@&=+$,.~*'()[\\]]+",s={ +className:"string",relevance:0,variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/ +},{begin:/\S+/}],contains:[e.BACKSLASH_ESCAPE,{className:"template-variable", +variants:[{begin:/\{\{/,end:/\}\}/},{begin:/%\{/,end:/\}/}]}]},i=e.inherit(s,{ +variants:[{begin:/'/,end:/'/},{begin:/"/,end:/"/},{begin:/[^\s,{}[\]]+/}]}),l={ +end:",",endsWithParent:!0,excludeEnd:!0,keywords:n,relevance:0},t={begin:/\{/, +end:/\}/,contains:[l],illegal:"\\n",relevance:0},g={begin:"\\[",end:"\\]", +contains:[l],illegal:"\\n",relevance:0},b=[{className:"attr",variants:[{ +begin:/\w[\w :()\./-]*:(?=[ \t]|$)/},{begin:/"\w[\w :()\./-]*":(?=[ \t]|$)/},{ +begin:/'\w[\w :()\./-]*':(?=[ \t]|$)/}]},{className:"meta",begin:"^---\\s*$", +relevance:10},{className:"string", +begin:"[\\|>]([1-9]?[+-])?[ ]*\\n( +)[^ ][^\\n]*\\n(\\2[^\\n]+\\n?)*"},{ +begin:"<%[%=-]?",end:"[%-]?%>",subLanguage:"ruby",excludeBegin:!0,excludeEnd:!0, +relevance:0},{className:"type",begin:"!\\w+!"+a},{className:"type", +begin:"!<"+a+">"},{className:"type",begin:"!"+a},{className:"type",begin:"!!"+a +},{className:"meta",begin:"&"+e.UNDERSCORE_IDENT_RE+"$"},{className:"meta", +begin:"\\*"+e.UNDERSCORE_IDENT_RE+"$"},{className:"bullet",begin:"-(?=[ ]|$)", +relevance:0},e.HASH_COMMENT_MODE,{beginKeywords:n,keywords:{literal:n}},{ +className:"number", +begin:"\\b[0-9]{4}(-[0-9][0-9]){0,2}([Tt \\t][0-9][0-9]?(:[0-9][0-9]){2})?(\\.[0-9]*)?([ \\t])*(Z|[-+][0-9][0-9]?(:[0-9][0-9])?)?\\b" +},{className:"number",begin:e.C_NUMBER_RE+"\\b",relevance:0},t,g,s],r=[...b] +;return r.pop(),r.push(i),l.contains=r,{name:"YAML",case_insensitive:!0, +aliases:["yml"],contains:b}}})();hljs.registerLanguage("yaml",e)})(); \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..a7a2d13 --- /dev/null +++ b/index.html @@ -0,0 +1,331 @@ + + + + Common Lisp Docs Builder + + + + + + + + + + + + + + + + + + + + + +
Fork me on GitHub + + +

Common Lisp Docs Builder

DOCS-BUILDER ASDF System Details

This system is a generic documentation builder for Common Lisp Systems. +It able to generate HTML documentation for specified ASDF system.

The idea is to use docs-builder as an universal HTML documentation builders +which can be used in a continuous integration pipeline. For example, it is +used inside build-docs GitHub action, which can be +used to build docs update gh-pages for any Common Lisp library (if it is uses +documentation generator supported by docs-builder).

Currently Docs Builder supports only 40ants-doc, MGL-PAX +and Geneva, but it +can be extended to support other documentation builders, covered by examples in here: +cl-doc-systems.github.io.

Usage

Documentation can be built in a few ways: from the lisp REPL, command-line and +using the GitHub action.

REPL

From the REPL, you need first to call a docs-builder:build function:

function
system &rest rest &key (error-on-warnings t) &allow-other-keys

Builds HTML documentation for ASDF system and returns absolute path to the dir with docs.

Inside, it will try to guess which documentation builder should be used:

Returns a builder object which can be passed to the docs-builder/builder:build generic-function along with system.

The builder type is guessed using different euristics which depends on a documentation system.

If you want to add support for a new documentation generator, use defguesser macro.

Then it will pass the builder object and ASDF system to the docs-builder/builder:build generic-function:

generic-function
builder system &key local root-sections &allow-other-keys

Builds HTML documentation for ASDF system and returns absolute path to the dir with docs.

Here is an example how to build documentation for :docs-builder ASDF system:

CL-USER> (docs-builder:build :docs-builder)
+ <INFO> [02:12:00] docs-builder/core core.lisp (build :before system) -
+  Building docs for system #<PACKAGE-INFERRED-SYSTEM "docs-builder"> found at /Users/art/projects/docs-builder/
+ <INFO> [02:12:00] docs-builder/builders/mgl-pax/builder builder.lisp (build builder system) -
+  Building docs in "/Users/art/projects/docs-builder/docs/build/" dir
+#P"/Users/art/projects/docs-builder/docs/build/"

Command-line

You can use builder from command-line. To do this, first install it using Roswell:

# Note, we need to install this patched mgl-pax
+# first, to be able to load docs-builder.
+# This step in necessary until this pull
+# will be merged:
+# https://github.com/melisgl/mgl-pax/pull/8
+
+$ ros install 40ants/doc
+
+$ ros install 40ants/docs-builder

Here we call it to build documentation for "docs-builder" ASDF system:

$ build-docs docs-builder
+ <INFO> [02:26:32] docs-builder/main main.lisp (main) -
+  Quickloading system "docs-builder"
+ <INFO> [02:26:34] docs-builder/core core.lisp (build :before system) -
+  Building docs for system #<PACKAGE-INFERRED-SYSTEM "docs-builder"> found at /Users/art/projects/docs-builder/
+ <INFO> [02:26:34] docs-builder/builders/mgl-pax/builder builder.lisp (build builder system) -
+  Building docs in "/Users/art/projects/docs-builder/docs/build/" dir
+Scan was called 2146 times.

GitHub Action

If you host your project on the GitHub, then the most easy way to build and host documentation +would be to use Github Pages.

To build docs and update the site, create a file .github/workflows/docs.yml with a content like this:

name: 'Docs'
+
+on:
+  # This will run tests on pushes
+  # to master branch and every monday:
+  push:
+    branches:
+      - 'main'
+      - 'master'
+  schedule:
+    - cron:  '0 10 * * 1'
+
+jobs:
+  build-docs:
+    runs-on: ubuntu-latest
+    
+    env:
+      LISP: sbcl-bin
+
+    steps:
+      - uses: actions/checkout@v1
+      - uses: 40ants/setup-lisp@v1
+      - uses: 40ants/build-docs@v1
+        with:
+          asdf-system: cl-info

You'll find more info in the action's documentation.

Additional Params

You can customize a builder by defining a method for this generic function:

Should return a plist which will be passed as keyword +arguments to the documentation builder when building +docs for a given asdf-system.

Implement a method, EQL specialized on a concrete ASDF system.

Here is a typical method I use for my own libraries to set +a custom theme for 40ants-doc system:

(defmethod docs-config ((system (eql (asdf:registered-system "cl-info"))))
+  ;; 40ANTS-DOC-THEME-40ANTS system will bring
+  ;; as dependency a full 40ANTS-DOC but we don't want
+  ;; unnecessary dependencies here:
+  (uiop:symbol-call :ql :quickload :40ants-doc-theme-40ants)
+  (list :theme
+        (find-symbol "40ANTS-THEME"
+                     (find-package "40ANTS-DOC-THEME-40ANTS"))))

Try to load additional dependencies inside the method. This users of your +library will not download dependencies needed only for building documentation.

For some special cases it might be useful to return a special key DYNAMIC-BINDINGS. +This could be useful, for configuring some custom extensions like it did with +interactive demos for the Weblocks. Here is how +a method looks like when I configure Weblocks documentation builder:

(defmethod docs-config ((system (eql (asdf:registered-system "weblocks"))))
+  ;; ...
+  (list :theme
+        (find-symbol "40ANTS-THEME"
+                     (find-package "40ANTS-DOC-THEME-40ANTS"))
+        :dynamic-bindings (list (cons 'weblocks/doc/example:*server-url*
+                                      ;; When local examples server is running,
+                                      ;; we'll be using it instead of production:
+                                      (unless weblocks/doc/example::*port*
+                                        "http://examples.40ants.com/"))))

Extending

Docs builder was made to be extensible and here we see how to add support for a new +documentation generator. A documentation builder we'll use is a Geneva.

Some time ago I've wrote a template system to demonstrate how to +document ASDF system using Geneva. Lets try to automate docs building and add Geneva support to the docs-builder!

First, we need a way to detect if the system uses the Geneva. This is done using "guesser". +Let's define a guesser which will consider we are working with Geneva, if there is a docs/source/index.mk2 +file. Files with *.mk2 extensions are special markup used by Geneva.

Add a Builder Class

First thing we need to do is to create a builder class.

Create a src/builders/geneva/builder.lisp file with +following content:

(defclass builder ()
+  ())

Guessing a Doc Generator

DOCS-BUILDER uses a number of euristics to determine the CLOS class +to be used for documentation generation. Euristics are incapulated in +"guessers". Let's create a src/builders/geneva/guesser.lisp file +and define a simple guesser, which will return the builder class defined +in the previous section if a file docs/sources/index.mk2 exists.

To define a guesser, we'll be using docs-builder/guesser:defguesser macro:

macro
name (system) &body body
(docs-builder/guesser:defguesser geneva (system)
+  (when (probe-file
+         (asdf:system-relative-pathname system
+                                        "docs/source/index.mk2"))
+    (uiop:symbol-call :ql :quickload :docs-builder/builders/geneva/builder
+                          :silent t)
+    (make-instance (intern "BUILDER" "DOCS-BUILDER/BUILDERS/GENEVA/BUILDER"))))

When all rules matched, guesser loads the builder package and all its dependencies. +In our case, Geneva system will be loaded.

Add this guesser file to the docs-builder.asd file:

(defsystem "docs-builder" 
+  :class :package-inferred-system
+  :author "Alexander Artemenko"
+  :license "Unlicense"
+  :pathname "src"
+  :description ""
+  :defsystem-depends-on ("40ants-doc")
+  :depends-on ("docs-builder/core"
+               "docs-builder/builders/40ants-doc/guesser"
+               "docs-builder/builders/mgl-pax/guesser"
+               "docs-builder/builders/geneva/guesser"))

This way, it will be loaded along with the primary system while +geneva/builder and it's dependencies will be loaded only +if the system we are building documentation for is using Geneva.

Now we can call docs-builder/guesser:guess-builder generic-function to create a builder for example +system:

CL-USER> (docs-builder/guesser:guess-builder :example)
+#<DOCS-BUILDER/BUILDERS/GENEVA/BUILDER::BUILDER {1003D89313}>

Add a Build Method

Now open a src/builders/geneva/builder.lisp file again and +add a method to the docs-builder/builder:build generic-function. +The method should build HTML documentation and return a path to the folder.

(defmethod docs-builder/builder:build ((builder builder) (system asdf:system))
+  (let* ((docs-source-dir
+           (asdf:system-relative-pathname system
+                                          "docs/source/"))
+         (docs-output-dir
+           (asdf:system-relative-pathname system
+                                          "docs/build/"))
+         (index-input-filename
+           (uiop:merge-pathnames* docs-source-dir
+                                  "index.mk2"))
+         (index-output-filename
+           (uiop:merge-pathnames* docs-output-dir
+                                  "index.html"))
+         (document (with-open-file (s index-input-filename)
+                     (geneva.mk2:read-mk2 s))))
+    (ensure-directories-exist docs-output-dir)
+    
+    (uiop:with-output-file (s index-output-filename
+                              :if-exists :supersede)
+      (geneva.html:render-html document :stream s)
+      ;; Return a directory with resulting docs:
+      docs-output-dir)))

Finally, we can build our documentation:

CL-USER> (docs-builder:build :example)
+ <INFO> [23:53:48] docs-builder/builder builder.lisp (build :around system) -
+  Building docs for system #<PACKAGE-INFERRED-SYSTEM "example"> found at /Users/art/cl-doc-systems/geneva/
+#P"/Users/art/cl-doc-systems/geneva/docs/build/"

Of cause, in reality this method could be a more complex. It should process all *.mk2 files +and build API reference for the primary system and all package inferred subsystems.

Supported Docs Generators

40ANTS-DOC

This guesser tries to find if your system depends on 40ants-doc system. +If it is, then the 40ANTS-DOC +will be used to build documentation.

During the build phase, the builder will try to find documentation sections not refereced +from any other sections. For each root section, builder will create a separate HTML +page. If there are few root sections, make sure one of them is having 40ants-doc name. +Otherwise index.html page will not be created.

Algorithm searches section amongh all exported symbols. If you don't want it to find +some root section, just pass :export nil to the 40ants-doc:defsection macro.

If you want your documentation link back to the GitHub sources, make sure +you have either :homepage or :source-control in your ASDF definition:

(asdf:defsystem #:example
+  :licence "MIT"
+  :version "0.0.3"
+  :author "John Doe"
+  :mailto "john@doe.me"
+  :homepage "https://github.com/john-doe/example"
+  :source-control (:git "https://github.com/john-doe/example")
+  ...)

Note, that this builder not only renders HTML documentation, but also updates +README files in the system's root directory.

What is next

  • build a ChangeLog.md out of changelog.lisp, if it is exists

MGL-PAX

This guesser tries to find if your system depends on MGL-PAX system. +If it is, then the MGL-PAX +will be used to build documentation.

During the build phase, the builder will try to find MGL-PAX sections not refereced +from any other sections. For each root section, builder will create a separate HTML +page. If there are few root sections, make sure one of them is having \mgl-pax name. +Otherwise index.html page will not be created.

Algorithm searches section amongh all exported symbols. If you don't want it to find +some root section, just pass :export nil to the MGL-PAX:DEFSECTION macro.

If you want your documentation link back to the GitHub sources, make sure +you have either :homepage or :source-control in your ASDF definition:

(asdf:defsystem #:example
+  :licence "MIT"
+  :version "0.0.3"
+  :author "John Doe"
+  :mailto "john@doe.me"
+  :homepage "https://github.com/john-doe/example"
+  :source-control (:git "https://github.com/john-doe/example")
+  ...)

Note, that this builder not only renders HTML documentation, but also updates +README files in the system's root directory.

Geneva

This guesser tries to find a file docs/sources/index.mk2 and if it exists +then Geneva documentation generator will be used.

What is next

  • make builder to process all *.mk2 files in the docs/sources/ dir.

  • build API reference pages for all packages created by the system.

API

Utilities

Returns a list of string with names of external dependencies of the system.

It works with package-inferred systems too, recursively collecting +external-dependencies of all subsystems.

Warning! By default, this function does not return dependencies of dependencies. +To get them all, add :ALL T option.

Returns a list of packages created by ASDF system.

Default implementation returns a package having the same name as a system +and all packages matched to package-inferred subsystems:

CL-USER> (docs-builder/utils:system-packages :docs-builder)
+(#<PACKAGE "DOCS-BUILDER">
+ #<PACKAGE "DOCS-BUILDER/UTILS">
+ #<PACKAGE "DOCS-BUILDER/GUESSER">
+ #<PACKAGE "DOCS-BUILDER/BUILDERS/GENEVA/GUESSER">
+ #<PACKAGE "DOCS-BUILDER/BUILDER">
+ #<PACKAGE "DOCS-BUILDER/BUILDERS/MGL-PAX/GUESSER">
+ #<PACKAGE "DOCS-BUILDER/DOCS">
+ #<PACKAGE "DOCS-BUILDER/BUILDERS/MGL-PAX/BUILDER">)

This function can be used by builder to find pieces of documentation. +For example, mgl-pax +builder uses it to find documentation sections.

Roadmap

  • Use eazy-documentation as default fallback + when no other builder was guessed.

  • Support other documentation generators, collected at https://cl-doc-systems.github.io/

  • Add ability to put a configuration file into the reporitory, for fine-tunning the builder.

+
+
+ + \ No newline at end of file diff --git a/jquery.js b/jquery.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/jquery.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 00 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + + + +var splitChars = (function() { + var result = {}; + var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, + 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, + 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, + 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, + 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, + 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, + 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, + 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, + 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, + 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; + var i, j, start, end; + for (i = 0; i < singles.length; i++) { + result[singles[i]] = true; + } + var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], + [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], + [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], + [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], + [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], + [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], + [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], + [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], + [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], + [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], + [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], + [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], + [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], + [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], + [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], + [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], + [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], + [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], + [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], + [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], + [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], + [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], + [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], + [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], + [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], + [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], + [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], + [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], + [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], + [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], + [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], + [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], + [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], + [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], + [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], + [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], + [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], + [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], + [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], + [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], + [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], + [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], + [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], + [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], + [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], + [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], + [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], + [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], + [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; + for (i = 0; i < ranges.length; i++) { + start = ranges[i][0]; + end = ranges[i][1]; + for (j = start; j <= end; j++) { + result[j] = true; + } + } + return result; +})(); + +function splitQuery(query) { + var result = []; + var start = -1; + for (var i = 0; i < query.length; i++) { + if (splitChars[query.charCodeAt(i)]) { + if (start !== -1) { + result.push(query.slice(start, i)); + start = -1; + } + } else if (start === -1) { + start = i; + } + } + if (start !== -1) { + result.push(query.slice(start)); + } + return result; +} + + diff --git a/references.json b/references.json new file mode 100644 index 0000000..83ad066 --- /dev/null +++ b/references.json @@ -0,0 +1 @@ +[{"URL":"https://40ants.com/docs-builder/README.md#x-28DOCS-BUILDER-3A-40README-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER:@README","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E1-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.1.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E3-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.3.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E4-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.4.1|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E5-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.5.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E5-2E2-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.5.2|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E6-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.6.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E6-2E2-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.6.2|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E7-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.7.1|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E9-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.9.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E10-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.10.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E11-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.11.1|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40ROADMAP-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@ROADMAP","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FUTILS-3ASYSTEM-PACKAGES-20GENERIC-FUNCTION-29","OBJECT":"DOCS-BUILDER/UTILS:SYSTEM-PACKAGES","LOCATIVE":"GENERIC-FUNCTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FUTILS-3AEXTERNAL-DEPENDENCIES-20FUNCTION-29","OBJECT":"DOCS-BUILDER/UTILS:EXTERNAL-DEPENDENCIES","LOCATIVE":"FUNCTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FUTILS-3A-3A-40UTILS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/UTILS::@UTILS","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-3ANUM-OF-WARNINGS-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-20DOCS-BUILDER-3ADOCUMENTATION-HAS-PROBLEMS-29-29","OBJECT":"DOCS-BUILDER:NUM-OF-WARNINGS","LOCATIVE":["READER","DOCUMENTATION-HAS-PROBLEMS"]},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-3ADOCUMENTATION-HAS-PROBLEMS-20CONDITION-29","OBJECT":"DOCS-BUILDER:DOCUMENTATION-HAS-PROBLEMS","LOCATIVE":"CONDITION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40API-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@API","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FBUILDERS-2FGENEVA-2FGUESSER-3A-3A-40TODO-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/BUILDERS/GENEVA/GUESSER::@TODO","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FBUILDERS-2FGENEVA-2FGUESSER-3A-3A-40INDEX-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/BUILDERS/GENEVA/GUESSER::@INDEX","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FBUILDERS-2FMGL-PAX-2FGUESSER-3A-3A-40INDEX-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/BUILDERS/MGL-PAX/GUESSER::@INDEX","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FBUILDERS-2F40ANTS-DOC-2FGUESSER-3A-3A-40TODO-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/BUILDERS/40ANTS-DOC/GUESSER::@TODO","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FBUILDERS-2F40ANTS-DOC-2FGUESSER-3A-3A-40INDEX-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/BUILDERS/40ANTS-DOC/GUESSER::@INDEX","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40SUPPORTED-BUILDERS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@SUPPORTED-BUILDERS","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40ADDING-A-BUILD-METHOD-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@ADDING-A-BUILD-METHOD","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FGUESSER-3ADEFGUESSER-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29","OBJECT":"DOCS-BUILDER/GUESSER:DEFGUESSER","LOCATIVE":["MACRO"]},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40ADDING-A-GUESSER-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@ADDING-A-GUESSER","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40ADDING-A-BUILDER-CLASS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@ADDING-A-BUILDER-CLASS","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40EXTENDING-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@EXTENDING","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-CONFIG-3ADOCS-CONFIG-20GENERIC-FUNCTION-29","OBJECT":"DOCS-CONFIG:DOCS-CONFIG","LOCATIVE":"GENERIC-FUNCTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40ADDITIONAL-PARAMS-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@ADDITIONAL-PARAMS","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40GITHUB-ACTION-USAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@GITHUB-ACTION-USAGE","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40COMMAND-LINE-USAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@COMMAND-LINE-USAGE","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FBUILDER-3ABUILD-20GENERIC-FUNCTION-29","OBJECT":"DOCS-BUILDER/BUILDER:BUILD","LOCATIVE":"GENERIC-FUNCTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FGUESSER-3AGUESS-BUILDER-20GENERIC-FUNCTION-29","OBJECT":"DOCS-BUILDER/GUESSER:GUESS-BUILDER","LOCATIVE":"GENERIC-FUNCTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-3ABUILD-20FUNCTION-29","OBJECT":"DOCS-BUILDER:BUILD","LOCATIVE":"FUNCTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40REPL-USAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@REPL-USAGE","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-2FDOCS-3A-3A-40USAGE-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/DOCS::@USAGE","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/#x-28-23A-28-2812-29-20BASE-CHAR-20-2E-20-22docs-builder-22-29-20ASDF-2FSYSTEM-3ASYSTEM-29","OBJECT":"docs-builder","LOCATIVE":"SYSTEM"},{"URL":"https://40ants.com/docs-builder/#x-28DOCS-BUILDER-3A-40INDEX-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER:@INDEX","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-40CHANGELOG-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG:@CHANGELOG","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E11-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.11.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E9-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.9.1|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E8-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.8.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E7-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.7.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E6-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.6.1|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E5-2E3-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.5.3|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E5-2E1-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.5.1|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E4-2E2-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.4.2|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E4-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.4.0|","LOCATIVE":"SECTION"},{"URL":"https://40ants.com/docs-builder/changelog/#x-28DOCS-BUILDER-2FCHANGELOG-3A-3A-7C0-2E2-2E0-7C-2040ANTS-DOC-2FLOCATIVES-3ASECTION-29","OBJECT":"DOCS-BUILDER/CHANGELOG::|0.2.0|","LOCATIVE":"SECTION"}] \ No newline at end of file diff --git a/search/index.html b/search/index.html new file mode 100644 index 0000000..09f945d --- /dev/null +++ b/search/index.html @@ -0,0 +1,114 @@ + + + + Search Page + + + + + + + + + + + + + + + + + + + + + +
Fork me on GitHub + + +
+ + + + + +
+
+
+ + \ No newline at end of file diff --git a/searchindex.js b/searchindex.js new file mode 100644 index 0000000..fbce6ef --- /dev/null +++ b/searchindex.js @@ -0,0 +1 @@ +Search.setIndex({"docnames":["../index","../changelog"],"filenames":["../","../changelog/"],"objects":{"DOCS-BUILDER":{"BUILD":[0,6,2,"x-28DOCS-BUILDER-3ABUILD-20FUNCTION-29"],"DOCUMENTATION-HAS-PROBLEMS":[0,0,2,"x-28DOCS-BUILDER-3ADOCUMENTATION-HAS-PROBLEMS-20CONDITION-29"],"NUM-OF-WARNINGS":[0,18,2,"x-28DOCS-BUILDER-3ANUM-OF-WARNINGS-20-2840ANTS-DOC-2FLOCATIVES-3AREADER-20DOCS-BUILDER-3ADOCUMENTATION-HAS-PROBLEMS-29-29"]},"DOCS-BUILDER/GUESSER":{"GUESS-BUILDER":[0,7,2,"x-28DOCS-BUILDER-2FGUESSER-3AGUESS-BUILDER-20GENERIC-FUNCTION-29"],"DEFGUESSER":[0,12,2,"x-28DOCS-BUILDER-2FGUESSER-3ADEFGUESSER-20-2840ANTS-DOC-2FLOCATIVES-3AMACRO-29-29"]},"DOCS-BUILDER/BUILDER":{"BUILD":[0,7,2,"x-28DOCS-BUILDER-2FBUILDER-3ABUILD-20GENERIC-FUNCTION-29"]},"DOCS-CONFIG":{"DOCS-CONFIG":[0,7,2,"x-28DOCS-CONFIG-3ADOCS-CONFIG-20GENERIC-FUNCTION-29"]},"DOCS-BUILDER/UTILS":{"EXTERNAL-DEPENDENCIES":[0,6,2,"x-28DOCS-BUILDER-2FUTILS-3AEXTERNAL-DEPENDENCIES-20FUNCTION-29"],"SYSTEM-PACKAGES":[0,7,2,"x-28DOCS-BUILDER-2FUTILS-3ASYSTEM-PACKAGES-20GENERIC-FUNCTION-29"]}},"objnames":[["lisp","symbol","Symbol"],["lisp","argument","Argument"],["lisp","system","ASDF System"],["lisp","class","Class"],["lisp","compiler-macro","Compiler Macro"],["lisp","constant","Constant"],["lisp","function","Function"],["lisp","generic-function","Generic Function"],["lisp","glossary-term","Glossary Term"],["lisp","include","Included Block"],["lisp","stdout-of","Stdout of Code"],["lisp","locative","Locative"],["lisp","macro","Macro"],["lisp","method","Method"],["lisp","package","Package"],["lisp","restart","Restart"],["lisp","section","Section"],["lisp","accessor","Accessor"],["lisp","reader","Slot Reader"],["lisp","writer","Slot Write"],["lisp","structure-accessor","Structure Accessor"],["lisp","type","Type"],["lisp","variable","Variable"]],"objtypes":["lisp:symbol","lisp:argument","lisp:system","lisp:class","lisp:compiler-macro","lisp:constant","lisp:function","lisp:generic-function","lisp:glossary-term","lisp:include","lisp:stdout-of","lisp:locative","lisp:macro","lisp:method","lisp:package","lisp:restart","lisp:section","lisp:accessor","lisp:reader","lisp:writer","lisp:structure-accessor","lisp:type","lisp:variable"],"terms":{"Description:":[0],"A":[0],"meta":[0],"document":[1,0],"builder":[1,0],"for":[1,0],"Common":[0],"Lisp":[0],"projects.":[0],"Licence:":[0],"Unlicens":[0],"Author:":[0],"Alexand":[0],"Artemenko":[0],"Homepage:":[0],"https://40ants.com/docs-build":[0],"Bug":[0],"tracker:":[0],"https://github.com/40ants/docs-builder/issu":[0],"Sourc":[0],"control:":[0],"GIT":[0],"Depend":[0],"on:":[0],"40ants-doc":[1,0],",":[0],"alexandria":[0],"docs-config":[0],"log4cl":[0],"uiop":[0],"DOCS-BUILDER":[0],"ASDF":[1,0],"System":[0],"Detail":[0],"Thi":[1,0],"system":[1,0],"is":[1,0],"a":[1,0],"gener":[0],"Systems.\nIt":[0],"abl":[1,0],"to":[1,0],"HTML":[1,0],"specifi":[1,0],"system.":[1,0],"The":[0],"idea":[0],"us":[1,0],"docs-build":[0],"as":[1,0],"an":[1,0],"univers":[0],"builders\nwhich":[0],"can":[1,0],"be":[0],"in":[1,0],"continu":[0],"integr":[0],"pipeline.":[0],"For":[0],"example,":[0],"it":[1,0],"is\nus":[0],"insid":[0],"build-doc":[0],"GitHub":[0],"action,":[0],"which":[0],"be\nus":[0],"build":[1,0],"doc":[1,0],"updat":[0],"gh-page":[0],"ani":[0],"librari":[0],"(if":[0],"uses\ndocument":[0],"support":[1,0],"by":[1,0],").":[0],"Current":[0],"Doc":[0],"Builder":[0],"onli":[0],"MGL-PAX":[1,0],"\nand":[0],"Geneva":[1,0],"but":[0],"it\ncan":[0],"extend":[0],"other":[0],"builders,":[0],"cover":[0],"exampl":[0],"here:\n":[0],"cl-doc-systems.github.io":[0],".":[1,0],"Document":[0],"built":[0],"few":[0],"ways:":[0],"from":[1,0],"the":[1,0],"lisp":[0],"REPL":[0],"command-lin":[0],"and\nus":[0],"action":[0],"From":[0],"you":[0],"need":[0],"first":[0],"call":[0],"docs-builder:build":[1,0],"function:":[0],"Build":[0],"and":[1,0],"return":[1,0],"absolut":[0],"path":[1,0],"dir":[0],"with":[1,0],"docs.":[1,0],"Inside,":[0],"will":[1,0],"try":[0],"guess":[0],"should":[1,0],"used:":[0],"Return":[0],"object":[0],"pass":[1,0],"docs-builder/builder:build":[1,0],"generic-funct":[1,0],"along":[0],"type":[0],"differ":[0],"eurist":[0],"depend":[1,0],"on":[1,0],"If":[0],"want":[0],"add":[0],"new":[1,0],"generator,":[0],"defguess":[0],"macro.":[0],"Then":[0],"generic-function:":[0],"Here":[0],"how":[0],":docs-build":[0],"system:":[0],"CL-USER>":[0],"(docs-builder:build":[0],":docs-builder)\n":[0],"":[0],"[02:12:00]":[0],"docs-builder/cor":[0],"core.lisp":[0],"(build":[0],":befor":[0],"system)":[0],"-\n":[0],"#":[0],"found":[1,0],"at":[0],"/Users/art/projects/docs-builder/\n":[0],"docs-builder/builders/mgl-pax/build":[0],"builder.lisp":[0],"\"/Users/art/projects/docs-builder/docs/build/\"":[0],"dir\n#P\"/Users/art/projects/docs-builder/docs/build/\"":[0],"You":[0],"command-line.":[0],"To":[0],"do":[0],"this,":[0],"instal":[0],"Roswel":[1,0],":":[0],"#":[0],"Note,":[0],"we":[0],"thi":[1,0],"patch":[0],"mgl-pax\n#":[0],"first,":[0],"load":[1,0],"docs-builder.\n#":[0],"step":[0],"necessari":[0],"until":[0],"pull\n#":[0],"merged:\n#":[0],"https://github.com/melisgl/mgl-pax/pull/8\n\n$":[0],"ro":[0],"40ants/doc\n\n$":[0],"40ants/docs-build":[0],"\"docs-builder\"":[0],"$":[0],"docs-builder\n":[0],"[02:26:32]":[0],"docs-builder/main":[0],"main.lisp":[0],"(main)":[0],"Quickload":[0],"\"docs-builder\"\n":[0],"[02:26:34]":[0],"dir\nScan":[0],"wa":[1,0],"2146":[0],"times.":[0],"Command-lin":[0],"host":[0],"your":[0],"project":[0],"GitHub,":[0],"then":[0],"most":[0],"easi":[0],"wai":[0],"documentation\nwould":[0],"Github":[0],"Page":[0],"site,":[0],"creat":[0],"file":[0],".github/workflows/docs.yml":[0],"content":[0],"like":[0],"this:":[0],"name:":[0],"'Docs'\n\non:\n":[0],"run":[0],"test":[0],"pushes\n":[0],"master":[0],"branch":[0],"everi":[0],"monday:\n":[0],"push:\n":[0],"branches:\n":[0],"-":[1,0],"'main'\n":[0],"'master'\n":[0],"schedule:\n":[0],"cron:":[0],"'0":[0],"10":[0],"*":[0],"1'\n\njobs:\n":[0],"build-docs:\n":[0],"runs-on:":[0],"ubuntu-latest\n":[0],"\n":[0],"env:\n":[0],"LISP:":[0],"sbcl-bin\n\n":[0],"steps:\n":[0],"uses:":[0],"actions/checkout@v1\n":[0],"40ants/setup-lisp@v1\n":[0],"40ants/build-docs@v1\n":[0],"with:\n":[0],"asdf-system:":[0],"cl-info":[0],"You'll":[0],"find":[0],"more":[1,0],"info":[0],"action'":[0],"Action":[0],"custom":[0],"defin":[0],"method":[0],"Should":[0],"plist":[0],"keyword\nargu":[0],"when":[1,0],"building\ndoc":[0],"given":[0],"asdf-system.":[0],"Implement":[0],"method,":[0],"EQL":[0],"special":[1,0],"concret":[0],"typic":[0],"I":[0],"my":[1,0],"own":[0],"set\na":[0],"theme":[0],"(defmethod":[0],"((system":[0],"(eql":[0],"(asdf:registered-system":[0],"\"cl-info\"))))\n":[0],";;":[0],"40ANTS-DOC-THEME-40ANTS":[0],"bring\n":[0],"full":[0],"40ANTS-DOC":[0],"don't":[0],"want\n":[0],"unnecessari":[0],"(uiop:symbol-cal":[0],":ql":[0],":quickload":[0],":40ants-doc-theme-40ants)\n":[0],"(list":[0],":theme\n":[0],"(find-symbol":[0],"\"40ANTS-THEME\"\n":[0],"(find-packag":[0],"\"40ANTS-DOC-THEME-40ANTS\"))))":[0],"Try":[0],"addit":[0],"method.":[0],"user":[0],"of":[1,0],"your\nlibrari":[0],"not":[1,0],"download":[0],"documentation.":[1,0],"some":[1,0],"case":[1,0],"might":[0],"kei":[1,0],"DYNAMIC-BINDINGS":[1,0],".\nThi":[0],"could":[0],"useful,":[0],"configur":[1,0],"extens":[0],"did":[0],"with\ninteract":[0],"demo":[0],"Weblock":[0],"how\na":[0],"look":[0],"builder:":[0],"\"weblocks\"))))\n":[0],"...\n":[0],"\"40ANTS-DOC-THEME-40ANTS\"))\n":[0],":dynamic-bind":[0],"(con":[0],"'weblocks/doc/example:*server-url*\n":[0],"When":[0],"local":[0],"server":[0],"running,\n":[0],"we'll":[0],"instead":[0],"production:\n":[0],"(unless":[0],"weblocks/doc/example::*port*\n":[0],"\"http://examples.40ants.com/\"))))":[0],"Addition":[0],"Param":[0],"Usage":[0],"made":[0],"here":[0],"see":[0],"new\ndocument":[0],"generator.":[1,0],"Some":[0],"time":[0],"ago":[0],"I've":[0],"wrote":[0],"templat":[0],"demonstr":[0],"to\ndocu":[0],"Geneva.":[0],"Let":[0],"autom":[0],"!":[0],"First,":[0],"detect":[0],"if":[1,0],"done":[0],"\"guesser\".\nLet'":[0],"guesser":[0],"consid":[0],"ar":[0],"work":[1,0],"Geneva,":[0],"there":[1,0],"docs/source/index.mk2":[0],"\nfile.":[0],"File":[0],"*.mk2":[0],"markup":[0],"First":[0],"thing":[0],"class.":[0],"Creat":[0],"src/builders/geneva/builder.lisp":[0],"with\nfollow":[0],"content:":[0],"(defclass":[0],"()\n":[0],"())":[0],"Add":[0],"Class":[0],"number":[0],"determin":[0],"CLOS":[0],"class\nto":[0],"generation.":[0],"Eurist":[0],"incapul":[0],"in\n\"guessers\".":[0],"Let'":[0],"src/builders/geneva/guesser.lisp":[0],"file\nand":[0],"simpl":[0],"guesser,":[0],"class":[0],"defined\nin":[0],"previou":[0],"section":[1,0],"docs/sources/index.mk2":[0],"exists.":[0],"docs-builder/guesser:defguess":[0],"macro:":[0],"(docs-builder/guesser:defguess":[0],"geneva":[0],"(system)\n":[0],"(when":[0],"(probe-file\n":[0],"(asdf:system-relative-pathnam":[0],"system\n":[0],"\"docs/source/index.mk2\"))\n":[0],":docs-builder/builders/geneva/builder\n":[0],":silent":[0],"t)\n":[0],"(make-inst":[0],"(intern":[0],"\"BUILDER\"":[0],"\"DOCS-BUILDER/BUILDERS/GENEVA/BUILDER\"))))":[0],"all":[1,0],"rule":[0],"matched,":[0],"packag":[1,0],"dependencies.\nIn":[0],"our":[0],"case,":[0],"loaded.":[1,0],"docs-builder.asd":[0],"file:":[0],"(defsystem":[0],":class":[0],":package-inferred-system\n":[0],":author":[0],"\"Alexand":[0],"Artemenko\"\n":[0],":licens":[0],"\"Unlicense\"\n":[0],":pathnam":[0],"\"src\"\n":[0],":descript":[0],"\"\"\n":[0],":defsystem-depends-on":[0],"(\"40ants-doc\")\n":[0],":depends-on":[0],"(\"docs-builder/core\"\n":[0],"\"docs-builder/builders/40ants-doc/guesser\"\n":[0],"\"docs-builder/builders/mgl-pax/guesser\"\n":[0],"\"docs-builder/builders/geneva/guesser\"))":[0],"way,":[0],"primari":[0],"while\n":[0],"geneva/build":[0],"it'":[0],"only\nif":[0],"Now":[1,0],"docs-builder/guesser:guess-build":[0],"example\nsystem:":[0],"(docs-builder/guesser:guess-build":[0],":example)\n#":[0],"Guess":[0],"Gener":[0],"open":[0],"again":[0],"and\nadd":[0],"generic-function.\nTh":[0],"folder.":[0],"((builder":[0],"builder)":[0],"(system":[0],"asdf:system))\n":[0],"(let*":[0],"((docs-source-dir\n":[0],"\"docs/source/\"))\n":[0],"(docs-output-dir\n":[0],"\"docs/build/\"))\n":[0],"(index-input-filename\n":[0],"(uiop:merge-pathnames*":[0],"docs-source-dir\n":[0],"\"index.mk2\"))\n":[0],"(index-output-filename\n":[0],"docs-output-dir\n":[0],"\"index.html\"))\n":[0],"(document":[0],"(with-open-fil":[0],"(s":[0],"index-input-filename)\n":[0],"(geneva.mk2:read-mk2":[0],"s))))\n":[0],"(ensure-directories-exist":[0],"docs-output-dir)\n":[0],"(uiop:with-output-fil":[0],"index-output-filename\n":[0],":if-exist":[0],":supersede)\n":[0],"(geneva.html:render-html":[0],":stream":[0],"s)\n":[0],"directori":[0],"result":[1,0],"docs:\n":[0],"docs-output-dir)))":[0],"Finally,":[0],"documentation:":[0],":example)\n":[0],"[23:53:48]":[0],"docs-builder/build":[0],":around":[0],"\"example\">":[0],"/Users/art/cl-doc-systems/geneva/\n#P\"/Users/art/cl-doc-systems/geneva/docs/build/\"":[0],"Of":[0],"cause,":[0],"realiti":[0],"complex.":[0],"It":[0],"process":[0],"files\nand":[0],"API":[0],"refer":[0],"infer":[0],"subsystems.":[0],"Method":[0],"Extend":[0],"tri":[1,0],"system.\nIf":[0],"is,":[0],"\nwill":[0],"Dure":[0],"phase,":[0],"refereced\nfrom":[0],"sections.":[0],"each":[0],"root":[1,0],"section,":[0],"separ":[0],"\npage.":[0],"sections,":[0],"make":[0],"sure":[0],"them":[0],"have":[0],"name.\nOtherwis":[0],"index.html":[0],"page":[0],"created.":[0],"Algorithm":[0],"search":[0],"amongh":[0],"export":[0],"symbols.":[0],"find\nsom":[0],"just":[0],":export":[0],"nil":[0],"40ants-doc:defsect":[0],"link":[0],"back":[0],"sources,":[0],"sure\ny":[0],"either":[1,0],":homepag":[0],"or":[1,0],":source-control":[0],"definition:":[0],"(asdf:defsystem":[0],"#:example\n":[0],":licenc":[0],"\"MIT\"\n":[0],":version":[0],"\"0.0.3\"\n":[0],"\"John":[0],"Doe\"\n":[0],":mailto":[0],"\"john@doe.me\"\n":[0],"\"https://github.com/john-doe/example\"\n":[0],"(:git":[0],"\"https://github.com/john-doe/example\")\n":[0],"...)":[0],"Note":[0],"that":[0],"render":[1,0],"documentation,":[0],"also":[0],"updates\n":[0],"README":[0],"system'":[0],"directory.":[0],"ChangeLog.md":[0],"out":[0],"changelog.lisp,":[0],"exist":[0],"What":[0],"next":[0],"\\":[0],"mgl-pax":[0],"MGL-PAX:DEFSECTION":[0],"exists\nthen":[0],"used.":[0],"docs/sources/":[0],"dir.":[0],"Support":[1,0],"list":[0],"string":[0],"name":[0],"extern":[0],"package-inf":[1,0],"too,":[0],"recurs":[1,0],"collecting\nexternal-depend":[0],"Warning!":[0],"By":[0],"default,":[0],"function":[1,0],"doe":[0],"dependencies.\nTo":[0],"get":[0],"all,":[0],":ALL":[0],"T":[1,0],"option.":[0],"Default":[0],"implement":[0],"same":[1,0],"system\nand":[0],"match":[0],"subsystems:":[0],"(docs-builder/utils:system-packag":[0],":docs-builder)\n(#\n":[0],"#\n":[0],"\"DOCS-BUILDER/GUESSER\">\n":[0],"\"DOCS-BUILDER/BUILDERS/GENEVA/GUESSER\">\n":[0],"\"DOCS-BUILDER/BUILDER\">\n":[0],"\"DOCS-BUILDER/BUILDERS/MGL-PAX/GUESSER\">\n":[0],"\"DOCS-BUILDER/DOCS\">\n":[0],"\"DOCS-BUILDER/BUILDERS/MGL-PAX/BUILDER\">)":[0],"piec":[0],"documentation.\nFor":[0],"\nbuilder":[1,0],"Utiliti":[0],"Use":[0],"eazy-document":[0],"default":[0],"fallback\n":[0],"no":[0],"guessed.":[0],"generators,":[0],"collect":[0],"https://cl-doc-systems.github.io/":[0],"abil":[0],"put":[0],"into":[0],"reporitory,":[0],"fine-tun":[0],"builder.":[1,0],"Roadmap":[0],"Fix":[1],"initit":[1],"loop":[1],"unknown":[1],"yet.":[1],"0.11.1":[1],"(2024-03-11)":[1],"Quicklisp":[1],"client":[1],"alreadi":[1],"Also":[1],"bug":[1],"fix":[1],"previous":[1],"hang":[1],"asdf":[1],"wasn't":[1],"found.\n":[1],"show":[1],"error.":[1],"0.11.0":[1],"(2023-06-05)":[1],"refactor":[1],"0.10.0":[1],"(2022-11-16)":[1],"issu":[1],"warn":[1],"find-system":[1],"function.":[1],"Also,":[1],"now":[1],"go":[1],"faster.":[1],"0.9.1":[1],"(2022-10-26)":[1],"Added":[1],"docs-config:docs-config":[1],"'s":[1],"results.":[1],"allow":[1],"builder\nin":[1],"usual":[1],"argument":[1],"enough.":[1],"0.9.0":[1],"(2021-10-27)":[1],"ROOT-SECTIONS":[1],"argument.\nY":[1],"multipag":[1],"suppress":[1],"about":[1],"than":[1],"section.":[1],"0.8.0":[1],"(2021-10-21)":[1],"changelog":[1],"absent.":[1],"0.7.1":[1],"(2021-09-11)":[1],"define\na":[1],"config":[1],"systems.":[1],"0.7.0":[1],"(2021-09-04)":[1],"Speedup":[1],"guessing.":[1],"0.6.2":[1],"(2021-08-31)":[1],"Previously\nerror":[1],"Unknown":[1],"&KEY":[1],"argument:":[1],":ERROR-ON-WARNINGS":[1],"ha":[1],"happened.":[1],"0.6.1":[1],"(2021-08-28)":[1],"0.6.0":[1],"script":[1],"latest":[1],"defmain":[1],"0.5.3":[1],"(2021-05-08)":[1],"twice.":[1],"could\nhappen":[1],"where\nsom":[1],"nicknam":[1],"a\nprimari":[1],"0.5.2":[1],"(2021-04-25)":[1],"0.5.1":[1],"(2021-04-16)":[1],"ERROR-ON-WARNINGS":[1],"\nwhich":[1],"default.":[1],"flag":[1],"caus":[1],"docs-builder:documentation-has-problem":[1],"\ncontinu":[1],"error":[1],"signal":[1],"were":[1],"warnings\ndur":[1],"0.5.0":[1],"(2021-04-15)":[1],"log4cl-extra":[1],"0.4.2":[1],"(2021-04-05)":[1],"util":[1],"dump":[1],"traceback\nin":[1],"dure":[1],"build.":[1],"0.4.1":[1],"Switch":[1],"fork":[1],"original.":[1],"0.4.0":[1],"discov":[1],"build\na":[1],"doc.":[1],"0.3.0":[1],"(2021-02-22)":[1],"basic":[1],"0.2.0":[1],"(2021-02-21)":[1],"Initial":[1],"version.":[1],"0.1.0":[1],"(2021-02-04)":[1],"ChangeLog":[1]},"titles":["Common Lisp Docs Builder","ChangeLog"],"titleterms":[]}) diff --git a/searchtools.js b/searchtools.js new file mode 100644 index 0000000..c0180d7 --- /dev/null +++ b/searchtools.js @@ -0,0 +1,532 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2021 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +if (!Scorer) { + /** + * Simple result scoring code. + */ + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [filename, title, anchor, descr, score] + // and returns the new score. + /* + score: function(result) { + return result[4]; + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: {0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5}, // used to be unimportantResults + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2 + }; +} + +if (!splitQuery) { + function splitQuery(query) { + return query.split(/\s+/); + } +} + +/** + * Search Module + */ +var Search = { + + _index : null, + _queued_query : null, + _pulse_status : -1, + + htmlToText : function(htmlString) { + var virtualDocument = document.implementation.createHTMLDocument('virtual'); + var htmlElement = $(htmlString, virtualDocument); + htmlElement.find('.headerlink').remove(); + docContent = htmlElement.find('[role=main]')[0]; + if(docContent === undefined) { + console.warn("Content block not found. Sphinx search tries to obtain it " + + "via '[role=main]'. Could you check your theme or template."); + return ""; + } + return docContent.textContent || docContent.innerText; + }, + + init : function() { + var params = $.getQueryParameters(); + if (params.q) { + var query = params.q[0]; + $('input[name="q"]')[0].value = query; + this.performSearch(query); + } + }, + + loadIndex : function(url) { + $.ajax({type: "GET", url: url, data: null, + dataType: "script", cache: true, + complete: function(jqxhr, textstatus) { + if (textstatus != "success") { + document.getElementById("searchindexloader").src = url; + } + }}); + }, + + setIndex : function(index) { + var q; + this._index = index; + if ((q = this._queued_query) !== null) { + this._queued_query = null; + Search.query(q); + } + }, + + hasIndex : function() { + return this._index !== null; + }, + + deferQuery : function(query) { + this._queued_query = query; + }, + + stopPulse : function() { + this._pulse_status = 0; + }, + + startPulse : function() { + if (this._pulse_status >= 0) + return; + function pulse() { + var i; + Search._pulse_status = (Search._pulse_status + 1) % 4; + var dotString = ''; + for (i = 0; i < Search._pulse_status; i++) + dotString += '.'; + Search.dots.text(dotString); + if (Search._pulse_status > -1) + window.setTimeout(pulse, 500); + } + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch : function(query) { + // create the required interface elements + this.out = $('#search-results'); + this.title = $('

' + _('Searching') + '

').appendTo(this.out); + this.dots = $('').appendTo(this.title); + this.status = $('

 

').appendTo(this.out); + this.output = $('