summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander M Pickering <alex@cogarr.net>2024-11-22 23:18:20 -0600
committerAlexander M Pickering <alex@cogarr.net>2024-11-22 23:18:20 -0600
commita76dfe8beca1392db5a1d0bc74df43fb3bdc43b6 (patch)
tree87690da637f303b6e25c13d83a117213087d15ba
parent95bf14904d6e496c64466a12823e9b74f5a0b090 (diff)
downloadwebsite-a76dfe8beca1392db5a1d0bc74df43fb3bdc43b6.tar.gz
website-a76dfe8beca1392db5a1d0bc74df43fb3bdc43b6.tar.bz2
website-a76dfe8beca1392db5a1d0bc74df43fb3bdc43b6.zip
start working on webpage
-rw-r--r--html/highlight.min.js396
-rw-r--r--html/index.html143
-rw-r--r--html/milligram.min.css3
-rw-r--r--html/milligram.min.css.map1
-rw-r--r--html/tokyo-night-dark.css114
-rw-r--r--html/tokyo-night-light.css114
-rwxr-xr-xinit2
-rw-r--r--meta.lua8
8 files changed, 779 insertions, 2 deletions
diff --git a/html/highlight.min.js b/html/highlight.min.js
new file mode 100644
index 0000000..6729c11
--- /dev/null
+++ b/html/highlight.min.js
@@ -0,0 +1,396 @@
1/*!
2 Highlight.js v11.10.0 (git: 366a8bd012)
3 (c) 2006-2024 Josh Goebel <hello@joshgoebel.com> and other contributors
4 License: BSD-3-Clause
5 */
6var hljs=function(){"use strict";function e(t){
7return t instanceof Map?t.clear=t.delete=t.set=()=>{
8throw Error("map is read-only")}:t instanceof Set&&(t.add=t.clear=t.delete=()=>{
9throw Error("set is read-only")
10}),Object.freeze(t),Object.getOwnPropertyNames(t).forEach((n=>{
11const i=t[n],s=typeof i;"object"!==s&&"function"!==s||Object.isFrozen(i)||e(i)
12})),t}class t{constructor(e){
13void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
14ignoreMatch(){this.isMatchIgnored=!0}}function n(e){
15return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;")
16}function i(e,...t){const n=Object.create(null);for(const t in e)n[t]=e[t]
17;return t.forEach((e=>{for(const t in e)n[t]=e[t]})),n}const s=e=>!!e.scope
18;class o{constructor(e,t){
19this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
20this.buffer+=n(e)}openNode(e){if(!s(e))return;const t=((e,{prefix:t})=>{
21if(e.startsWith("language:"))return e.replace("language:","language-")
22;if(e.includes(".")){const n=e.split(".")
23;return[`${t}${n.shift()}`,...n.map(((e,t)=>`${e}${"_".repeat(t+1)}`))].join(" ")
24}return`${t}${e}`})(e.scope,{prefix:this.classPrefix});this.span(t)}
25closeNode(e){s(e)&&(this.buffer+="</span>")}value(){return this.buffer}span(e){
26this.buffer+=`<span class="${e}">`}}const r=(e={})=>{const t={children:[]}
27;return Object.assign(t,e),t};class a{constructor(){
28this.rootNode=r(),this.stack=[this.rootNode]}get top(){
29return this.stack[this.stack.length-1]}get root(){return this.rootNode}add(e){
30this.top.children.push(e)}openNode(e){const t=r({scope:e})
31;this.add(t),this.stack.push(t)}closeNode(){
32if(this.stack.length>1)return this.stack.pop()}closeAllNodes(){
33for(;this.closeNode(););}toJSON(){return JSON.stringify(this.rootNode,null,4)}
34walk(e){return this.constructor._walk(e,this.rootNode)}static _walk(e,t){
35return"string"==typeof t?e.addText(t):t.children&&(e.openNode(t),
36t.children.forEach((t=>this._walk(e,t))),e.closeNode(t)),e}static _collapse(e){
37"string"!=typeof e&&e.children&&(e.children.every((e=>"string"==typeof e))?e.children=[e.children.join("")]:e.children.forEach((e=>{
38a._collapse(e)})))}}class c extends a{constructor(e){super(),this.options=e}
39addText(e){""!==e&&this.add(e)}startScope(e){this.openNode(e)}endScope(){
40this.closeNode()}__addSublanguage(e,t){const n=e.root
41;t&&(n.scope="language:"+t),this.add(n)}toHTML(){
42return new o(this,this.options).value()}finalize(){
43return this.closeAllNodes(),!0}}function l(e){
44return e?"string"==typeof e?e:e.source:null}function g(e){return h("(?=",e,")")}
45function u(e){return h("(?:",e,")*")}function d(e){return h("(?:",e,")?")}
46function h(...e){return e.map((e=>l(e))).join("")}function f(...e){const t=(e=>{
47const t=e[e.length-1]
48;return"object"==typeof t&&t.constructor===Object?(e.splice(e.length-1,1),t):{}
49})(e);return"("+(t.capture?"":"?:")+e.map((e=>l(e))).join("|")+")"}
50function p(e){return RegExp(e.toString()+"|").exec("").length-1}
51const b=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
52;function m(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
53;let i=l(e),s="";for(;i.length>0;){const e=b.exec(i);if(!e){s+=i;break}
54s+=i.substring(0,e.index),
55i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?s+="\\"+(Number(e[1])+t):(s+=e[0],
56"("===e[0]&&n++)}return s})).map((e=>`(${e})`)).join(t)}
57const 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={
58begin:"\\\\[\\s\\S]",relevance:0},v={scope:"string",begin:"'",end:"'",
59illegal:"\\n",contains:[O]},k={scope:"string",begin:'"',end:'"',illegal:"\\n",
60contains:[O]},N=(e,t,n={})=>{const s=i({scope:"comment",begin:e,end:t,
61contains:[]},n);s.contains.push({scope:"doctag",
62begin:"[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)",
63end:/(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):/,excludeBegin:!0,relevance:0})
64;const o=f("I","a","is","so","us","to","at","if","in","it","on",/[A-Za-z]+['](d|ve|re|ll|t|s|n)/,/[A-Za-z]+[-][a-z]+/,/[A-Za-z][a-z]{2,}/)
65;return s.contains.push({begin:h(/[ ]+/,"(",o,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),s
66},S=N("//","$"),M=N("/\\*","\\*/"),R=N("#","$");var j=Object.freeze({
67__proto__:null,APOS_STRING_MODE:v,BACKSLASH_ESCAPE:O,BINARY_NUMBER_MODE:{
68scope:"number",begin:_,relevance:0},BINARY_NUMBER_RE:_,COMMENT:N,
69C_BLOCK_COMMENT_MODE:M,C_LINE_COMMENT_MODE:S,C_NUMBER_MODE:{scope:"number",
70begin:y,relevance:0},C_NUMBER_RE:y,END_SAME_AS_BEGIN:e=>Object.assign(e,{
71"on:begin":(e,t)=>{t.data._beginMatch=e[1]},"on:end":(e,t)=>{
72t.data._beginMatch!==e[1]&&t.ignoreMatch()}}),HASH_COMMENT_MODE:R,IDENT_RE:E,
73MATCH_NOTHING_RE:/\b\B/,METHOD_GUARD:{begin:"\\.\\s*"+x,relevance:0},
74NUMBER_MODE:{scope:"number",begin:w,relevance:0},NUMBER_RE:w,
75PHRASAL_WORDS_MODE:{
76begin:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/
77},QUOTE_STRING_MODE:k,REGEXP_MODE:{scope:"regexp",begin:/\/(?=[^/\n]*\/)/,
78end:/\/[gimuy]*/,contains:[O,{begin:/\[/,end:/\]/,relevance:0,contains:[O]}]},
79RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
80SHEBANG:(e={})=>{const t=/^#![ ]*\//
81;return e.binary&&(e.begin=h(t,/.*\b/,e.binary,/\b.*/)),i({scope:"meta",begin:t,
82end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
83TITLE_MODE:{scope:"title",begin:E,relevance:0},UNDERSCORE_IDENT_RE:x,
84UNDERSCORE_TITLE_MODE:{scope:"title",begin:x,relevance:0}});function A(e,t){
85"."===e.input[e.index-1]&&t.ignoreMatch()}function I(e,t){
86void 0!==e.className&&(e.scope=e.className,delete e.className)}function T(e,t){
87t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
88e.__beforeBegin=A,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
89void 0===e.relevance&&(e.relevance=0))}function L(e,t){
90Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function B(e,t){
91if(e.match){
92if(e.begin||e.end)throw Error("begin & end are not supported with match")
93;e.begin=e.match,delete e.match}}function P(e,t){
94void 0===e.relevance&&(e.relevance=1)}const D=(e,t)=>{if(!e.beforeMatch)return
95;if(e.starts)throw Error("beforeMatch cannot be used with starts")
96;const n=Object.assign({},e);Object.keys(e).forEach((t=>{delete e[t]
97})),e.keywords=n.keywords,e.begin=h(n.beforeMatch,g(n.begin)),e.starts={
98relevance:0,contains:[Object.assign(n,{endsParent:!0})]
99},e.relevance=0,delete n.beforeMatch
100},H=["of","and","for","in","not","or","if","then","parent","list","value"],C="keyword"
101;function $(e,t,n=C){const i=Object.create(null)
102;return"string"==typeof e?s(n,e.split(" ")):Array.isArray(e)?s(n,e):Object.keys(e).forEach((n=>{
103Object.assign(i,$(e[n],t,n))})),i;function s(e,n){
104t&&(n=n.map((e=>e.toLowerCase()))),n.forEach((t=>{const n=t.split("|")
105;i[n[0]]=[e,U(n[0],n[1])]}))}}function U(e,t){
106return t?Number(t):(e=>H.includes(e.toLowerCase()))(e)?0:1}const z={},W=e=>{
107console.error(e)},X=(e,...t)=>{console.log("WARN: "+e,...t)},G=(e,t)=>{
108z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)
109},K=Error();function F(e,t,{key:n}){let i=0;const s=e[n],o={},r={}
110;for(let e=1;e<=t.length;e++)r[e+i]=s[e],o[e+i]=!0,i+=p(t[e-1])
111;e[n]=r,e[n]._emit=o,e[n]._multi=!0}function Z(e){(e=>{
112e.scope&&"object"==typeof e.scope&&null!==e.scope&&(e.beginScope=e.scope,
113delete e.scope)})(e),"string"==typeof e.beginScope&&(e.beginScope={
114_wrap:e.beginScope}),"string"==typeof e.endScope&&(e.endScope={_wrap:e.endScope
115}),(e=>{if(Array.isArray(e.begin)){
116if(e.skip||e.excludeBegin||e.returnBegin)throw W("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
117K
118;if("object"!=typeof e.beginScope||null===e.beginScope)throw W("beginScope must be object"),
119K;F(e,e.begin,{key:"beginScope"}),e.begin=m(e.begin,{joinWith:""})}})(e),(e=>{
120if(Array.isArray(e.end)){
121if(e.skip||e.excludeEnd||e.returnEnd)throw W("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
122K
123;if("object"!=typeof e.endScope||null===e.endScope)throw W("endScope must be object"),
124K;F(e,e.end,{key:"endScope"}),e.end=m(e.end,{joinWith:""})}})(e)}function V(e){
125function t(t,n){
126return RegExp(l(t),"m"+(e.case_insensitive?"i":"")+(e.unicodeRegex?"u":"")+(n?"g":""))
127}class n{constructor(){
128this.matchIndexes={},this.regexes=[],this.matchAt=1,this.position=0}
129addRule(e,t){
130t.position=this.position++,this.matchIndexes[this.matchAt]=t,this.regexes.push([t,e]),
131this.matchAt+=p(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
132;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(m(e,{joinWith:"|"
133}),!0),this.lastIndex=0}exec(e){this.matcherRe.lastIndex=this.lastIndex
134;const t=this.matcherRe.exec(e);if(!t)return null
135;const n=t.findIndex(((e,t)=>t>0&&void 0!==e)),i=this.matchIndexes[n]
136;return t.splice(0,n),Object.assign(t,i)}}class s{constructor(){
137this.rules=[],this.multiRegexes=[],
138this.count=0,this.lastIndex=0,this.regexIndex=0}getMatcher(e){
139if(this.multiRegexes[e])return this.multiRegexes[e];const t=new n
140;return this.rules.slice(e).forEach((([e,n])=>t.addRule(e,n))),
141t.compile(),this.multiRegexes[e]=t,t}resumingScanAtSamePosition(){
142return 0!==this.regexIndex}considerAll(){this.regexIndex=0}addRule(e,t){
143this.rules.push([e,t]),"begin"===t.type&&this.count++}exec(e){
144const t=this.getMatcher(this.regexIndex);t.lastIndex=this.lastIndex
145;let n=t.exec(e)
146;if(this.resumingScanAtSamePosition())if(n&&n.index===this.lastIndex);else{
147const t=this.getMatcher(0);t.lastIndex=this.lastIndex+1,n=t.exec(e)}
148return n&&(this.regexIndex+=n.position+1,
149this.regexIndex===this.count&&this.considerAll()),n}}
150if(e.compilerExtensions||(e.compilerExtensions=[]),
151e.contains&&e.contains.includes("self"))throw Error("ERR: contains `self` is not supported at the top-level of a language. See documentation.")
152;return e.classNameAliases=i(e.classNameAliases||{}),function n(o,r){const a=o
153;if(o.isCompiled)return a
154;[I,B,Z,D].forEach((e=>e(o,r))),e.compilerExtensions.forEach((e=>e(o,r))),
155o.__beforeBegin=null,[T,L,P].forEach((e=>e(o,r))),o.isCompiled=!0;let c=null
156;return"object"==typeof o.keywords&&o.keywords.$pattern&&(o.keywords=Object.assign({},o.keywords),
157c=o.keywords.$pattern,
158delete o.keywords.$pattern),c=c||/\w+/,o.keywords&&(o.keywords=$(o.keywords,e.case_insensitive)),
159a.keywordPatternRe=t(c,!0),
160r&&(o.begin||(o.begin=/\B|\b/),a.beginRe=t(a.begin),o.end||o.endsWithParent||(o.end=/\B|\b/),
161o.end&&(a.endRe=t(a.end)),
162a.terminatorEnd=l(a.end)||"",o.endsWithParent&&r.terminatorEnd&&(a.terminatorEnd+=(o.end?"|":"")+r.terminatorEnd)),
163o.illegal&&(a.illegalRe=t(o.illegal)),
164o.contains||(o.contains=[]),o.contains=[].concat(...o.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>i(e,{
165variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?i(e,{
166starts:e.starts?i(e.starts):null
167}):Object.isFrozen(e)?i(e):e))("self"===e?o:e)))),o.contains.forEach((e=>{n(e,a)
168})),o.starts&&n(o.starts,r),a.matcher=(e=>{const t=new s
169;return e.contains.forEach((e=>t.addRule(e.begin,{rule:e,type:"begin"
170}))),e.terminatorEnd&&t.addRule(e.terminatorEnd,{type:"end"
171}),e.illegal&&t.addRule(e.illegal,{type:"illegal"}),t})(a),a}(e)}function q(e){
172return!!e&&(e.endsWithParent||q(e.starts))}class J extends Error{
173constructor(e,t){super(e),this.name="HTMLInjectionError",this.html=t}}
174const Y=n,Q=i,ee=Symbol("nomatch"),te=n=>{
175const i=Object.create(null),s=Object.create(null),o=[];let r=!0
176;const a="Could not find the language '{}', did you forget to load/include a language module?",l={
177disableAutodetect:!0,name:"Plain text",contains:[]};let p={
178ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
179languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
180cssSelector:"pre code",languages:null,__emitter:c};function b(e){
181return p.noHighlightRe.test(e)}function m(e,t,n){let i="",s=""
182;"object"==typeof t?(i=e,
183n=t.ignoreIllegals,s=t.language):(G("10.7.0","highlight(lang, code, ...args) has been deprecated."),
184G("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
185s=e,i=t),void 0===n&&(n=!0);const o={code:i,language:s};N("before:highlight",o)
186;const r=o.result?o.result:E(o.language,o.code,n)
187;return r.code=o.code,N("after:highlight",r),r}function E(e,n,s,o){
188const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(R)
189;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(R),n=""
190;for(;t;){n+=R.substring(e,t.index)
191;const s=_.case_insensitive?t[0].toLowerCase():t[0],o=(i=s,N.keywords[i]);if(o){
192const[e,i]=o
193;if(M.addText(n),n="",c[s]=(c[s]||0)+1,c[s]<=7&&(j+=i),e.startsWith("_"))n+=t[0];else{
194const n=_.classNameAliases[e]||e;u(t[0],n)}}else n+=t[0]
195;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(R)}var i
196;n+=R.substring(e),M.addText(n)}function g(){null!=N.subLanguage?(()=>{
197if(""===R)return;let e=null;if("string"==typeof N.subLanguage){
198if(!i[N.subLanguage])return void M.addText(R)
199;e=E(N.subLanguage,R,!0,S[N.subLanguage]),S[N.subLanguage]=e._top
200}else e=x(R,N.subLanguage.length?N.subLanguage:null)
201;N.relevance>0&&(j+=e.relevance),M.__addSublanguage(e._emitter,e.language)
202})():l(),R=""}function u(e,t){
203""!==e&&(M.startScope(t),M.addText(e),M.endScope())}function d(e,t){let n=1
204;const i=t.length-1;for(;n<=i;){if(!e._emit[n]){n++;continue}
205const i=_.classNameAliases[e[n]]||e[n],s=t[n];i?u(s,i):(R=s,l(),R=""),n++}}
206function h(e,t){
207return e.scope&&"string"==typeof e.scope&&M.openNode(_.classNameAliases[e.scope]||e.scope),
208e.beginScope&&(e.beginScope._wrap?(u(R,_.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
209R=""):e.beginScope._multi&&(d(e.beginScope,t),R="")),N=Object.create(e,{parent:{
210value:N}}),N}function f(e,n,i){let s=((e,t)=>{const n=e&&e.exec(t)
211;return n&&0===n.index})(e.endRe,i);if(s){if(e["on:end"]){const i=new t(e)
212;e["on:end"](n,i),i.isMatchIgnored&&(s=!1)}if(s){
213for(;e.endsParent&&e.parent;)e=e.parent;return e}}
214if(e.endsWithParent)return f(e.parent,n,i)}function b(e){
215return 0===N.matcher.regexIndex?(R+=e[0],1):(T=!0,0)}function m(e){
216const t=e[0],i=n.substring(e.index),s=f(N,e,i);if(!s)return ee;const o=N
217;N.endScope&&N.endScope._wrap?(g(),
218u(t,N.endScope._wrap)):N.endScope&&N.endScope._multi?(g(),
219d(N.endScope,e)):o.skip?R+=t:(o.returnEnd||o.excludeEnd||(R+=t),
220g(),o.excludeEnd&&(R=t));do{
221N.scope&&M.closeNode(),N.skip||N.subLanguage||(j+=N.relevance),N=N.parent
222}while(N!==s.parent);return s.starts&&h(s.starts,e),o.returnEnd?0:t.length}
223let w={};function y(i,o){const a=o&&o[0];if(R+=i,null==a)return g(),0
224;if("begin"===w.type&&"end"===o.type&&w.index===o.index&&""===a){
225if(R+=n.slice(o.index,o.index+1),!r){const t=Error(`0 width match regex (${e})`)
226;throw t.languageName=e,t.badRule=w.rule,t}return 1}
227if(w=o,"begin"===o.type)return(e=>{
228const n=e[0],i=e.rule,s=new t(i),o=[i.__beforeBegin,i["on:begin"]]
229;for(const t of o)if(t&&(t(e,s),s.isMatchIgnored))return b(n)
230;return i.skip?R+=n:(i.excludeBegin&&(R+=n),
231g(),i.returnBegin||i.excludeBegin||(R=n)),h(i,e),i.returnBegin?0:n.length})(o)
232;if("illegal"===o.type&&!s){
233const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"')
234;throw e.mode=N,e}if("end"===o.type){const e=m(o);if(e!==ee)return e}
235if("illegal"===o.type&&""===a)return 1
236;if(I>1e5&&I>3*o.index)throw Error("potential infinite loop, way more iterations than matches")
237;return R+=a,a.length}const _=O(e)
238;if(!_)throw W(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
239;const v=V(_);let k="",N=o||v;const S={},M=new p.__emitter(p);(()=>{const e=[]
240;for(let t=N;t!==_;t=t.parent)t.scope&&e.unshift(t.scope)
241;e.forEach((e=>M.openNode(e)))})();let R="",j=0,A=0,I=0,T=!1;try{
242if(_.__emitTokens)_.__emitTokens(n,M);else{for(N.matcher.considerAll();;){
243I++,T?T=!1:N.matcher.considerAll(),N.matcher.lastIndex=A
244;const e=N.matcher.exec(n);if(!e)break;const t=y(n.substring(A,e.index),e)
245;A=e.index+t}y(n.substring(A))}return M.finalize(),k=M.toHTML(),{language:e,
246value:k,relevance:j,illegal:!1,_emitter:M,_top:N}}catch(t){
247if(t.message&&t.message.includes("Illegal"))return{language:e,value:Y(n),
248illegal:!0,relevance:0,_illegalBy:{message:t.message,index:A,
249context:n.slice(A-100,A+100),mode:t.mode,resultSoFar:k},_emitter:M};if(r)return{
250language:e,value:Y(n),illegal:!1,relevance:0,errorRaised:t,_emitter:M,_top:N}
251;throw t}}function x(e,t){t=t||p.languages||Object.keys(i);const n=(e=>{
252const t={value:Y(e),illegal:!1,relevance:0,_top:l,_emitter:new p.__emitter(p)}
253;return t._emitter.addText(e),t})(e),s=t.filter(O).filter(k).map((t=>E(t,e,!1)))
254;s.unshift(n);const o=s.sort(((e,t)=>{
255if(e.relevance!==t.relevance)return t.relevance-e.relevance
256;if(e.language&&t.language){if(O(e.language).supersetOf===t.language)return 1
257;if(O(t.language).supersetOf===e.language)return-1}return 0})),[r,a]=o,c=r
258;return c.secondBest=a,c}function w(e){let t=null;const n=(e=>{
259let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
260;const n=p.languageDetectRe.exec(t);if(n){const t=O(n[1])
261;return t||(X(a.replace("{}",n[1])),
262X("Falling back to no-highlight mode for this block.",e)),t?n[1]:"no-highlight"}
263return t.split(/\s+/).find((e=>b(e)||O(e)))})(e);if(b(n))return
264;if(N("before:highlightElement",{el:e,language:n
265}),e.dataset.highlighted)return void console.log("Element previously highlighted. To highlight again, first unset `dataset.highlighted`.",e)
266;if(e.children.length>0&&(p.ignoreUnescapedHTML||(console.warn("One of your code blocks includes unescaped HTML. This is a potentially serious security risk."),
267console.warn("https://github.com/highlightjs/highlight.js/wiki/security"),
268console.warn("The element with unescaped HTML:"),
269console.warn(e)),p.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML)
270;t=e;const i=t.textContent,o=n?m(i,{language:n,ignoreIllegals:!0}):x(i)
271;e.innerHTML=o.value,e.dataset.highlighted="yes",((e,t,n)=>{const i=t&&s[t]||n
272;e.classList.add("hljs"),e.classList.add("language-"+i)
273})(e,n,o.language),e.result={language:o.language,re:o.relevance,
274relevance:o.relevance},o.secondBest&&(e.secondBest={
275language:o.secondBest.language,relevance:o.secondBest.relevance
276}),N("after:highlightElement",{el:e,result:o,text:i})}let y=!1;function _(){
277"loading"!==document.readyState?document.querySelectorAll(p.cssSelector).forEach(w):y=!0
278}function O(e){return e=(e||"").toLowerCase(),i[e]||i[s[e]]}
279function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
280s[e.toLowerCase()]=t}))}function k(e){const t=O(e)
281;return t&&!t.disableAutodetect}function N(e,t){const n=e;o.forEach((e=>{
282e[n]&&e[n](t)}))}
283"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
284y&&_()}),!1),Object.assign(n,{highlight:m,highlightAuto:x,highlightAll:_,
285highlightElement:w,
286highlightBlock:e=>(G("10.7.0","highlightBlock will be removed entirely in v12.0"),
287G("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{p=Q(p,e)},
288initHighlighting:()=>{
289_(),G("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
290initHighlightingOnLoad:()=>{
291_(),G("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
292},registerLanguage:(e,t)=>{let s=null;try{s=t(n)}catch(t){
293if(W("Language definition for '{}' could not be registered.".replace("{}",e)),
294!r)throw t;W(t),s=l}
295s.name||(s.name=e),i[e]=s,s.rawDefinition=t.bind(null,n),s.aliases&&v(s.aliases,{
296languageName:e})},unregisterLanguage:e=>{delete i[e]
297;for(const t of Object.keys(s))s[t]===e&&delete s[t]},
298listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v,
299autoDetection:k,inherit:Q,addPlugin:e=>{(e=>{
300e["before:highlightBlock"]&&!e["before:highlightElement"]&&(e["before:highlightElement"]=t=>{
301e["before:highlightBlock"](Object.assign({block:t.el},t))
302}),e["after:highlightBlock"]&&!e["after:highlightElement"]&&(e["after:highlightElement"]=t=>{
303e["after:highlightBlock"](Object.assign({block:t.el},t))})})(e),o.push(e)},
304removePlugin:e=>{const t=o.indexOf(e);-1!==t&&o.splice(t,1)}}),n.debugMode=()=>{
305r=!1},n.safeMode=()=>{r=!0},n.versionString="11.10.0",n.regex={concat:h,
306lookahead:g,either:f,optional:d,anyNumberOfTimes:u}
307;for(const t in j)"object"==typeof j[t]&&e(j[t]);return Object.assign(n,j),n
308},ne=te({});return ne.newInstance=()=>te({}),ne}()
309;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `bash` grammar compiled for Highlight.js 11.10.0 */
310(()=>{var e=(()=>{"use strict";return e=>{const s=e.regex,t={},n={begin:/\$\{/,
311end:/\}/,contains:["self",{begin:/:-/,contains:[t]}]};Object.assign(t,{
312className:"variable",variants:[{
313begin:s.concat(/\$[\w\d#@][\w\d_]*/,"(?![\\w\\d])(?![$])")},n]});const a={
314className:"subst",begin:/\$\(/,end:/\)/,contains:[e.BACKSLASH_ESCAPE]
315},i=e.inherit(e.COMMENT(),{match:[/(^|\s)/,/#.*$/],scope:{2:"comment"}}),c={
316begin:/<<-?\s*(?=\w+)/,starts:{contains:[e.END_SAME_AS_BEGIN({begin:/(\w+)/,
317end:/(\w+)/,className:"string"})]}},o={className:"string",begin:/"/,end:/"/,
318contains:[e.BACKSLASH_ESCAPE,t,a]};a.contains.push(o);const r={begin:/\$?\(\(/,
319end:/\)\)/,contains:[{begin:/\d+#[0-9a-f]+/,className:"number"},e.NUMBER_MODE,t]
320},l=e.SHEBANG({binary:"(fish|bash|zsh|sh|csh|ksh|tcsh|dash|scsh)",relevance:10
321}),m={className:"function",begin:/\w[\w\d_]*\s*\(\s*\)\s*\{/,returnBegin:!0,
322contains:[e.inherit(e.TITLE_MODE,{begin:/\w[\w\d_]*/})],relevance:0};return{
323name:"Bash",aliases:["sh","zsh"],keywords:{$pattern:/\b[a-z][a-z0-9._-]+\b/,
324keyword:["if","then","else","elif","fi","for","while","until","in","do","done","case","esac","function","select"],
325literal:["true","false"],
326built_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","sudo","type","typeset","ulimit","unalias","set","shopt","autoload","bg","bindkey","bye","cap","chdir","clone","comparguments","compcall","compctl","compdescribe","compfiles","compgroups","compquote","comptags","comptry","compvalues","dirs","disable","disown","echotc","echoti","emulate","fc","fg","float","functions","getcap","getln","history","integer","jobs","kill","limit","log","noglob","popd","print","pushd","pushln","rehash","sched","setcap","setopt","stat","suspend","ttyctl","unfunction","unhash","unlimit","unsetopt","vared","wait","whence","where","which","zcompile","zformat","zftp","zle","zmodload","zparseopts","zprof","zpty","zregexparse","zsocket","zstyle","ztcp","chcon","chgrp","chown","chmod","cp","dd","df","dir","dircolors","ln","ls","mkdir","mkfifo","mknod","mktemp","mv","realpath","rm","rmdir","shred","sync","touch","truncate","vdir","b2sum","base32","base64","cat","cksum","comm","csplit","cut","expand","fmt","fold","head","join","md5sum","nl","numfmt","od","paste","ptx","pr","sha1sum","sha224sum","sha256sum","sha384sum","sha512sum","shuf","sort","split","sum","tac","tail","tr","tsort","unexpand","uniq","wc","arch","basename","chroot","date","dirname","du","echo","env","expr","factor","groups","hostid","id","link","logname","nice","nohup","nproc","pathchk","pinky","printenv","printf","pwd","readlink","runcon","seq","sleep","stat","stdbuf","stty","tee","test","timeout","tty","uname","unlink","uptime","users","who","whoami","yes"]
327},contains:[l,e.SHEBANG(),m,r,i,c,{match:/(\/[a-z._-]+)+/},o,{match:/\\"/},{
328className:"string",begin:/'/,end:/'/},{match:/\\'/},t]}}})()
329;hljs.registerLanguage("bash",e)})();/*! `lua` grammar compiled for Highlight.js 11.10.0 */
330(()=>{var e=(()=>{"use strict";return e=>{const t="\\[=*\\[",a="\\]=*\\]",n={
331begin:t,end:a,contains:["self"]
332},o=[e.COMMENT("--(?!"+t+")","$"),e.COMMENT("--"+t,a,{contains:[n],relevance:10
333})];return{name:"Lua",keywords:{$pattern:e.UNDERSCORE_IDENT_RE,
334literal:"true false nil",
335keyword:"and break do else elseif end for goto if in local not or repeat return then until while",
336built_in:"_G _ENV _VERSION __index __newindex __mode __call __metatable __tostring __len __gc __add __sub __mul __div __mod __pow __concat __unm __eq __lt __le assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall arg self coroutine resume yield status wrap create running debug getupvalue debug sethook getmetatable gethook setmetatable setlocal traceback setfenv getinfo setupvalue getlocal getregistry getfenv io lines write close flush open output type read stderr stdin input stdout popen tmpfile math log max acos huge ldexp pi cos tanh pow deg tan cosh sinh random randomseed frexp ceil floor rad abs sqrt modf asin min mod fmod log10 atan2 exp sin atan os exit setlocale date getenv difftime remove time clock tmpname rename execute package preload loadlib loaded loaders cpath config path seeall string sub upper len gfind rep find match char dump gmatch reverse byte format gsub lower table setn insert getn foreachi maxn foreach concat sort remove"
337},contains:o.concat([{className:"function",beginKeywords:"function",end:"\\)",
338contains:[e.inherit(e.TITLE_MODE,{
339begin:"([_a-zA-Z]\\w*\\.)*([_a-zA-Z]\\w*:)?[_a-zA-Z]\\w*"}),{className:"params",
340begin:"\\(",endsWithParent:!0,contains:o}].concat(o)
341},e.C_NUMBER_MODE,e.APOS_STRING_MODE,e.QUOTE_STRING_MODE,{className:"string",
342begin:t,end:a,contains:[n],relevance:5}])}}})();hljs.registerLanguage("lua",e)
343})();/*! `markdown` grammar compiled for Highlight.js 11.10.0 */
344(()=>{var e=(()=>{"use strict";return e=>{const n={begin:/<\/?[A-Za-z_]/,
345end:">",subLanguage:"xml",relevance:0},a={variants:[{begin:/\[.+?\]\[.*?\]/,
346relevance:0},{
347begin:/\[.+?\]\(((data|javascript|mailto):|(?:http|ftp)s?:\/\/).*?\)/,
348relevance:2},{
349begin:e.regex.concat(/\[.+?\]\(/,/[A-Za-z][A-Za-z0-9+.-]*/,/:\/\/.*?\)/),
350relevance:2},{begin:/\[.+?\]\([./?&#].*?\)/,relevance:1},{
351begin:/\[.*?\]\(.*?\)/,relevance:0}],returnBegin:!0,contains:[{match:/\[(?=\])/
352},{className:"string",relevance:0,begin:"\\[",end:"\\]",excludeBegin:!0,
353returnEnd:!0},{className:"link",relevance:0,begin:"\\]\\(",end:"\\)",
354excludeBegin:!0,excludeEnd:!0},{className:"symbol",relevance:0,begin:"\\]\\[",
355end:"\\]",excludeBegin:!0,excludeEnd:!0}]},i={className:"strong",contains:[],
356variants:[{begin:/_{2}(?!\s)/,end:/_{2}/},{begin:/\*{2}(?!\s)/,end:/\*{2}/}]
357},s={className:"emphasis",contains:[],variants:[{begin:/\*(?![*\s])/,end:/\*/},{
358begin:/_(?![_\s])/,end:/_/,relevance:0}]},c=e.inherit(i,{contains:[]
359}),t=e.inherit(s,{contains:[]});i.contains.push(t),s.contains.push(c)
360;let g=[n,a];return[i,s,c,t].forEach((e=>{e.contains=e.contains.concat(g)
361})),g=g.concat(i,s),{name:"Markdown",aliases:["md","mkdown","mkd"],contains:[{
362className:"section",variants:[{begin:"^#{1,6}",end:"$",contains:g},{
363begin:"(?=^.+?\\n[=-]{2,}$)",contains:[{begin:"^[=-]*$"},{begin:"^",end:"\\n",
364contains:g}]}]},n,{className:"bullet",begin:"^[ \t]*([*+-]|(\\d+\\.))(?=\\s+)",
365end:"\\s+",excludeEnd:!0},i,s,{className:"quote",begin:"^>\\s+",contains:g,
366end:"$"},{className:"code",variants:[{begin:"(`{3,})[^`](.|\\n)*?\\1`*[ ]*"},{
367begin:"(~{3,})[^~](.|\\n)*?\\1~*[ ]*"},{begin:"```",end:"```+[ ]*$"},{
368begin:"~~~",end:"~~~+[ ]*$"},{begin:"`.+?`"},{begin:"(?=^( {4}|\\t))",
369contains:[{begin:"^( {4}|\\t)",end:"(\\n)$"}],relevance:0}]},{
370begin:"^[-\\*]{3,}",end:"$"},a,{begin:/^\[[^\n]+\]:/,returnBegin:!0,contains:[{
371className:"symbol",begin:/\[/,end:/\]/,excludeBegin:!0,excludeEnd:!0},{
372className:"link",begin:/:\s*/,end:/$/,excludeBegin:!0}]},{scope:"literal",
373match:/&([a-zA-Z0-9]+|#[0-9]{1,7}|#[Xx][0-9a-fA-F]{1,6});/}]}}})()
374;hljs.registerLanguage("markdown",e)})();/*! `moonscript` grammar compiled for Highlight.js 11.10.0 */
375(()=>{var e=(()=>{"use strict";return e=>{const n={
376keyword:"if then not for in while do return else elseif break continue switch and or unless when class extends super local import export from using",
377literal:"true false nil",
378built_in:"_G _VERSION assert collectgarbage dofile error getfenv getmetatable ipairs load loadfile loadstring module next pairs pcall print rawequal rawget rawset require select setfenv setmetatable tonumber tostring type unpack xpcall coroutine debug io math os package string table"
379},s="[A-Za-z$_][0-9A-Za-z$_]*",a={className:"subst",begin:/#\{/,end:/\}/,
380keywords:n},t=[e.inherit(e.C_NUMBER_MODE,{starts:{end:"(\\s*/)?",relevance:0}
381}),{className:"string",variants:[{begin:/'/,end:/'/,
382contains:[e.BACKSLASH_ESCAPE]},{begin:/"/,end:/"/,
383contains:[e.BACKSLASH_ESCAPE,a]}]},{className:"built_in",begin:"@__"+e.IDENT_RE
384},{begin:"@"+e.IDENT_RE},{begin:e.IDENT_RE+"\\\\"+e.IDENT_RE}];a.contains=t
385;const i=e.inherit(e.TITLE_MODE,{begin:s}),r="(\\(.*\\)\\s*)?\\B[-=]>",l={
386className:"params",begin:"\\([^\\(]",returnBegin:!0,contains:[{begin:/\(/,
387end:/\)/,keywords:n,contains:["self"].concat(t)}]};return{name:"MoonScript",
388aliases:["moon"],keywords:n,illegal:/\/\*/,
389contains:t.concat([e.COMMENT("--","$"),{className:"function",
390begin:"^\\s*"+s+"\\s*=\\s*"+r,end:"[-=]>",returnBegin:!0,contains:[i,l]},{
391begin:/[\(,:=]\s*/,relevance:0,contains:[{className:"function",begin:r,
392end:"[-=]>",returnBegin:!0,contains:[l]}]},{className:"class",
393beginKeywords:"class",end:"$",illegal:/[:="\[\]]/,contains:[{
394beginKeywords:"extends",endsWithParent:!0,illegal:/[:="\[\]]/,contains:[i]},i]
395},{className:"name",begin:s+":",end:":",returnBegin:!0,returnEnd:!0,relevance:0
396}])}}})();hljs.registerLanguage("moonscript",e)})(); \ No newline at end of file
diff --git a/html/index.html b/html/index.html
new file mode 100644
index 0000000..3e1576c
--- /dev/null
+++ b/html/index.html
@@ -0,0 +1,143 @@
1<html lang=en>
2 <head>
3 <link rel="stylesheet" href="/milligram.min.css"/>
4 <link rel="stylesheet" href="/tokyo-night-light.css"/>
5 <script src="/highlight.min.js"></script>
6 <script>hljs.highlightAll();</script>
7 </head>
8 <body><main class="wrapper">
9 <nav class="navigation">TODO</nav>
10 <header class="header"><section class="container">
11 <h1 class="title">Lua4Win</h1>
12 </section></header>
13 <section class="container">
14 <p>Lua4Win is a distribution the Lua programming language for Windows.</p>
15 <a class="button" href="https://cicd.lua4.win/archive/lua4win-dist-lua/latest/lua4win.msi">Download</a>
16 </section>
17 <section class="container">
18 <h3 class="title">Rational</h3>
19 <p>Unlike alternative distributions, Lua4Win comes with the Luarocks package manager and is a "batteries-not-included" distribution of Lua. Binary packages are built in the cloud and can be downloaded as-needed. The Lua4Win installer contains a copy of <a href="https://luajit.org">LuaJIT</a>, <a href="https://luarocks.org">Luarocks</a>, <a href="https://www.busybox.net">Busybox</a>, and <a href="https://7zip.org">7zip</a>; which allows it to come in at a slim 2MB. Updates and bugfixes can be done piecemeal instead of requireing new copies of the whole distribution every time a bug gets fixed.</p>
20 </section>
21 <section class="container">
22 <h3 class="title">Usage</h3>
23 <p>After installing, you can launch <code>cmd.exe</code> and run <code>$ lua</code> to get started.</p>
24 <pre><code class="language-none">$ lua
25LuaJIT 2.0.ROLLING -- Copyright (C) 2005-2023 Mike Pall. https://luajit.org/
26JIT: ON CMOV SSE2 SSE3 SSE4.1 AMD fold cse dce fwd dse narrow loop abc sink fuse
27> print("Hello, world!")
28Hello, world!
29></code></pre>
30 <p>You can use <code>CTRL+C</code> to escape the read-evaluate-print-loop. You can also write Lua programs with your favorite text editor and run them with <code>$ lua filename.lua</code>
31 <div class="row">
32 <div class="column">
33 note.lua
34 </div>
35 </div>
36 <div class="row">
37 <div class="column">
38 <pre><code class="language-lua">-- Create a note file with today's date in %APPDATA%
39local args = {...} -- extra arguments passed to the program
40-- Generate a filename
41local notes_folder = os.getenv("APPDATA")
42local today = os.date("%Y-%m-%d")
43local note_name = table.concat(args,"-"):gsub("[%W]","-")
44local note_filename = string.format("%s\note-%s-%s.txt",notes_folder,today,note_name)
45-- Create the file
46local fd = assert(io.open(note_filename,"w"))
47assert(fd:close())
48-- Open it in notepad
49os.execute("notepad.exe " .. note_filename)</code></pre>
50 </div>
51 <div class="column">
52 <pre><code class="language-bash">$ lua note.lua my first note</code></pre>
53 </div>
54 </div>
55 <p>Run <code>lua --help</code> for more options for the command line tool, and the <a href="https://www.lua.org/manual/5.1/manual.html">Lua Manual</a> for extensive documentation of the Lua programming language. Also note <a href="https://luajit.org/extensions.html">LuaJIT's extensions</a></p>
56 </section>
57 <section class="container">
58 <h3 class="title">Installing Superpowers</h3>
59 <p>You can use modules that implement more than the standard lua libraries by running the <code>$ luarocks install &gt;module name&lt; </code> command to download and install modules.</p>
60 <div class="row">
61 <div class="column">
62 color.lua
63 </div>
64 </div>
65 <div class="row">
66 <div class="column">
67 <pre><code class="language-lua">local eansi = require("eansi")
68eansi.enable = true
69print(eansi.toansi("green") .. "> implying you need modules" .. eansi(""))</code></pre>
70 </div>
71 <div class="column">
72 <pre><code class="language-bash">$ luarocks install eansi
73
74$ lua color.lua</code></pre>
75 </div>
76 </div>
77 <p> Run <code>luarocks --help</code> for more options on the command line tool, and the <a href="https://github.com/luarocks/luarocks/wiki/Using-LuaRocks">Luarocks wiki</a> for more extensive documentation.</p>
78 </section>
79 <section class="container">
80 <h3 class="title">Sister languages</h3>
81 <p>Lua4Win makes it easy to download other programming languages that are distributed through the <code>luarocks</code> package manager. Simply <code>luarocks install</code> them like you would any other package.</p>
82 <h4 class="title">Moonscript</h4>
83 <div class="row">
84 <div class="column column-offset-33">
85 example.moon
86 </div>
87 </div>
88 <div class="row">
89 <div class="column">
90<pre><code class="language-bash">$ luarocks install moonscript</code></pre>
91 </div>
92 <div class="column">
93<pre><code class="language-moonscript">class World
94 greet: => print("Hello, world!")
95
96with World!
97 \greet!</code></pre>
98 </div>
99 <div class="column">
100<pre><code class="language-bash">$ moonscript example.moon
101Hello, world!</code></pre>
102 </div>
103 </div>
104 <br/>
105 <h4 class="title">Teal</h4>
106 <div class="row">
107 <div class="column column-offset-33">
108 keys.tl
109 </div>
110 </div>
111 <div class="row">
112 <div class="column">
113 <pre><code class="language-bash">$ luarocks install tl</code></pre>
114 </div>
115 <div class="column">
116 <pre><code class="language-teal">local function keys<K,V>(xs: {K:V}):{K}
117 local ks = {}
118 for k, v in pairs(xs) do
119 table.insert(ks, k)
120 end
121 return ks
122end
123
124local s: {number:string} = keys({ a = 1, b = 2 })
125print(table.concat(s))
126</code></pre>
127 </div>
128 <div class="column">
129 <pre><code class="language-bash">$ tl keys.tl
130ab</code></pre>
131 </div>
132 </div>
133 </section>
134 <section class="container">
135 <h3 class="title">Advanced Usage</h3>
136 <p>Lua4Win allows you to install system-wide packages with the <pre><code>--tree system</code></pre> flag, these packages will be located at <pre><code>[INSTALLDIR]/luarocks</code></pre>. You may need to be running as an administratior to install to this location.</p>
137 <p>Lua4Win's luarocks config lives at <pre><code>[INSTALLDIR]/config/config-5.1.lua</code></pre></p>
138 <p>All of Lua4Win's binary packages are built using mingw64, if you intend to build your own modules, they must be built with mingw64 if you want them to operate with Lua4Win-distributed Lua.</p>
139 <p>Some of Lua4Win's packages needed patching or modification, source code is generally mirrored at <a href="https://git.lua4.win">git.lua4.win</a>, and packaging code is kept seperate, usually in a repo <pre><code>*-packaging</code></pre></p>
140
141 </body>
142</html>
143
diff --git a/html/milligram.min.css b/html/milligram.min.css
new file mode 100644
index 0000000..5e8955c
--- /dev/null
+++ b/html/milligram.min.css
@@ -0,0 +1,3 @@
1*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#606c76;font-family:'Roboto', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;letter-spacing:.01em;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#9b4dca;border:0.1rem solid #9b4dca;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#9b4dca;border-color:#9b4dca}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#9b4dca}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#9b4dca}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#9b4dca}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#9b4dca}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #9b4dca;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='color'],input[type='date'],input[type='datetime'],input[type='datetime-local'],input[type='email'],input[type='month'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],input[type='week'],input:not([type]),textarea,select{-webkit-appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem .7rem;width:100%}input[type='color']:focus,input[type='date']:focus,input[type='datetime']:focus,input[type='datetime-local']:focus,input[type='email']:focus,input[type='month']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,input[type='week']:focus,input:not([type]):focus,textarea:focus,select:focus{border-color:#9b4dca;outline:0}select{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%23d1d1d1" d="M0,0l6,8l6-8"/></svg>') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 30 8" width="30"><path fill="%239b4dca" d="M0,0l6,8l6-8"/></svg>')}select[multiple]{background:none;height:auto}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.container{margin:0 auto;max-width:112.0rem;padding:0 2.0rem;position:relative;width:100%}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-40{margin-left:40%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-60{margin-left:60%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#9b4dca;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;display:block;overflow-x:auto;text-align:left;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}@media (min-width: 40rem){table{display:table;overflow-x:initial}}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right}
2
3/*# sourceMappingURL=milligram.min.css.map */ \ No newline at end of file
diff --git a/html/milligram.min.css.map b/html/milligram.min.css.map
new file mode 100644
index 0000000..009da6a
--- /dev/null
+++ b/html/milligram.min.css.map
@@ -0,0 +1 @@
{"version":3,"sources":["milligram.min.css"],"names":[],"mappings":"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","file":"milligram.min.css","sourcesContent":["*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#606c76;font-family:'Roboto', 'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;letter-spacing:.01em;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#9b4dca;border:0.1rem solid #9b4dca;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#9b4dca;border-color:#9b4dca}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#9b4dca}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#9b4dca}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#9b4dca}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#9b4dca}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #9b4dca;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='color'],input[type='date'],input[type='datetime'],input[type='datetime-local'],input[type='email'],input[type='month'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],input[type='week'],input:not([type]),textarea,select{-webkit-appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem .7rem;width:100%}input[type='color']:focus,input[type='date']:focus,input[type='datetime']:focus,input[type='datetime-local']:focus,input[type='email']:focus,input[type='month']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,input[type='week']:focus,input:not([type]):focus,textarea:focus,select:focus{border-color:#9b4dca;outline:0}select{background:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 8\" width=\"30\"><path fill=\"%23d1d1d1\" d=\"M0,0l6,8l6-8\"/></svg>') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 30 8\" width=\"30\"><path fill=\"%239b4dca\" d=\"M0,0l6,8l6-8\"/></svg>')}select[multiple]{background:none;height:auto}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.container{margin:0 auto;max-width:112.0rem;padding:0 2.0rem;position:relative;width:100%}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-40{margin-left:40%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-60{margin-left:60%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#9b4dca;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;display:block;overflow-x:auto;text-align:left;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}@media (min-width: 40rem){table{display:table;overflow-x:initial}}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right}\n"]} \ No newline at end of file
diff --git a/html/tokyo-night-dark.css b/html/tokyo-night-dark.css
new file mode 100644
index 0000000..e746b50
--- /dev/null
+++ b/html/tokyo-night-dark.css
@@ -0,0 +1,114 @@
1pre code.hljs {
2 display: block;
3 overflow-x: auto;
4 padding: 1em
5}
6code.hljs {
7 padding: 3px 5px
8}
9/*!
10 Theme: Tokyo-night-Dark
11 origin: https://github.com/enkia/tokyo-night-vscode-theme
12 Description: Original highlight.js style
13 Author: (c) Henri Vandersleyen <hvandersleyen@gmail.com>
14 License: see project LICENSE
15 Touched: 2022
16*/
17/* Comment */
18.hljs-meta,
19.hljs-comment {
20 color: #565f89
21}
22/* Red */
23/*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */
24.hljs-tag,
25.hljs-doctag,
26.hljs-selector-id,
27.hljs-selector-class,
28.hljs-regexp,
29.hljs-template-tag,
30.hljs-selector-pseudo,
31.hljs-selector-attr,
32.hljs-variable.language_,
33.hljs-deletion {
34 color: #f7768e
35}
36/*Orange */
37/*INFO: Number and Boolean constants, Language support constants */
38.hljs-variable,
39.hljs-template-variable,
40.hljs-number,
41.hljs-literal,
42.hljs-type,
43.hljs-params,
44.hljs-link {
45 color: #ff9e64
46}
47/* Yellow */
48/* INFO: Function parameters, Regex character sets, Terminal Yellow */
49.hljs-built_in,
50.hljs-attribute {
51 color: #e0af68
52}
53/* cyan */
54/* INFO: Language support functions, CSS HTML elements */
55.hljs-selector-tag {
56 color: #2ac3de
57}
58/* light blue */
59/* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */
60.hljs-keyword,
61.hljs-title.function_,
62.hljs-title,
63.hljs-title.class_,
64.hljs-title.class_.inherited__,
65.hljs-subst,
66.hljs-property {
67 color: #7dcfff
68}
69/*Green*/
70/* INFO: Object literal keys, Markdown links, Terminal Green */
71.hljs-selector-tag {
72 color: #73daca
73}
74/*Green(er) */
75/* INFO: Strings, CSS class names */
76.hljs-quote,
77.hljs-string,
78.hljs-symbol,
79.hljs-bullet,
80.hljs-addition {
81 color: #9ece6a
82}
83/* Blue */
84/* INFO: Function names, CSS property names, Terminal Blue */
85.hljs-code,
86.hljs-formula,
87.hljs-section {
88 color: #7aa2f7
89}
90/* Magenta */
91/*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */
92.hljs-name,
93.hljs-keyword,
94.hljs-operator,
95.hljs-keyword,
96.hljs-char.escape_,
97.hljs-attr {
98 color: #bb9af7
99}
100/* white*/
101/* INFO: Variables, Class names, Terminal White */
102.hljs-punctuation {
103 color: #c0caf5
104}
105.hljs {
106 background: #1a1b26;
107 color: #9aa5ce
108}
109.hljs-emphasis {
110 font-style: italic
111}
112.hljs-strong {
113 font-weight: bold
114} \ No newline at end of file
diff --git a/html/tokyo-night-light.css b/html/tokyo-night-light.css
new file mode 100644
index 0000000..2c7ca12
--- /dev/null
+++ b/html/tokyo-night-light.css
@@ -0,0 +1,114 @@
1pre code.hljs {
2 display: block;
3 overflow-x: auto;
4 padding: 1em
5}
6code.hljs {
7 padding: 3px 5px
8}
9/*!
10 Theme: Tokyo-night-light
11 origin: https://github.com/enkia/tokyo-night-vscode-theme
12 Description: Original highlight.js style
13 Author: (c) Henri Vandersleyen <hvandersleyen@gmail.com>
14 License: see project LICENSE
15 Touched: 2022
16*/
17/* Comment */
18.hljs-meta,
19.hljs-comment {
20 color: #9699a3
21}
22/* Red */
23/*INFO: This keyword, HTML elements, Regex group symbol, CSS units, Terminal Red */
24.hljs-tag,
25.hljs-doctag,
26.hljs-selector-id,
27.hljs-selector-class,
28.hljs-regexp,
29.hljs-template-tag,
30.hljs-selector-pseudo,
31.hljs-selector-attr,
32.hljs-variable.language_,
33.hljs-deletion {
34 color: #8c4351
35}
36/*Orange */
37/*INFO: Number and Boolean constants, Language support constants */
38.hljs-variable,
39.hljs-template-variable,
40.hljs-number,
41.hljs-literal,
42.hljs-type,
43.hljs-params,
44.hljs-link {
45 color: #965027
46}
47/* Yellow */
48/* INFO: Function parameters, Regex character sets, Terminal Yellow */
49.hljs-built_in,
50.hljs-attribute {
51 color: #8f5e15
52}
53/* cyan */
54/* INFO: Language support functions, CSS HTML elements */
55.hljs-selector-tag {
56 color: #166775
57}
58/* light blue */
59/* INFO: Object properties, Regex quantifiers and flags, Markdown headings, Terminal Cyan, Markdown code, Import/export keywords */
60.hljs-keyword,
61.hljs-title.function_,
62.hljs-title,
63.hljs-title.class_,
64.hljs-title.class_.inherited__,
65.hljs-subst,
66.hljs-property {
67 color: #0f4b6e
68}
69/*Green*/
70/* INFO: Object literal keys, Markdown links, Terminal Green */
71.hljs-selector-tag {
72 color: #33635c
73}
74/*Green(er) */
75/* INFO: Strings, CSS class names */
76.hljs-quote,
77.hljs-string,
78.hljs-symbol,
79.hljs-bullet,
80.hljs-addition {
81 color: #485e30
82}
83/* Blue */
84/* INFO: Function names, CSS property names, Terminal Blue */
85.hljs-code,
86.hljs-formula,
87.hljs-section {
88 color: #34548a
89}
90/* Magenta */
91/*INFO: Control Keywords, Storage Types, Regex symbols and operators, HTML Attributes, Terminal Magenta */
92.hljs-name,
93.hljs-keyword,
94.hljs-operator,
95.hljs-keyword,
96.hljs-char.escape_,
97.hljs-attr {
98 color: #5a4a78
99}
100/* white*/
101/* INFO: Variables, Class names, Terminal White */
102.hljs-punctuation {
103 color: #343b58
104}
105.hljs {
106 background: #d5d6db;
107 color: #565a6e
108}
109.hljs-emphasis {
110 font-style: italic
111}
112.hljs-strong {
113 font-weight: bold
114} \ No newline at end of file
diff --git a/init b/init
index 642d265..fcff1c5 100755
--- a/init
+++ b/init
@@ -1 +1,3 @@
1#!/bin/sh -ex 1#!/bin/sh -ex
2
3tar -cz website/html
diff --git a/meta.lua b/meta.lua
index 2ebc373..9a49c81 100644
--- a/meta.lua
+++ b/meta.lua
@@ -1,6 +1,10 @@
1return { 1return {
2 ["website"] = { 2 ["website"] = {
3 requires = {}, 3 requires = {
4 produces = {}, 4 {"git", "website"}
5 },
6 produces = {
7 ["site.tar.gz"] = {"website.sh"},
8 },
5 } 9 }
6} 10}