mirror of
https://github.com/c-cube/tiny_httpd.git
synced 2025-12-06 03:05:29 -05:00
deploy: ac1c1ab502
This commit is contained in:
parent
ebb4ece5f4
commit
f8534f68f3
56 changed files with 1578 additions and 0 deletions
20
dev/index.html
Normal file
20
dev/index.html
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<title>index</title>
|
||||||
|
<link rel="stylesheet" href="./odoc.support/odoc.css"/>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<meta name="viewport" content="width=device-width,initial-scale=1.0"/>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<main class="content">
|
||||||
|
<div class="by-name">
|
||||||
|
<h2>OCaml package documentation</h2>
|
||||||
|
<ol>
|
||||||
|
<li><a href="tiny_httpd/index.html">tiny_httpd</a> <span class="version">0.14</span></li>
|
||||||
|
<li><a href="tiny_httpd_camlzip/index.html">tiny_httpd_camlzip</a> <span class="version">0.14</span></li>
|
||||||
|
</ol>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
BIN
dev/odoc.support/fonts/KaTeX_AMS-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_AMS-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Caligraphic-Bold.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Caligraphic-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Caligraphic-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Caligraphic-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Fraktur-Bold.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Fraktur-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Fraktur-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Fraktur-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Main-Bold.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Main-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Main-BoldItalic.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Main-BoldItalic.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Main-Italic.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Main-Italic.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Main-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Main-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Math-BoldItalic.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Math-BoldItalic.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Math-Italic.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Math-Italic.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_SansSerif-Bold.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_SansSerif-Bold.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_SansSerif-Italic.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_SansSerif-Italic.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_SansSerif-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_SansSerif-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Script-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Script-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Size1-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Size1-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Size2-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Size2-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Size3-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Size3-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Size4-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Size4-Regular.woff2
Normal file
Binary file not shown.
BIN
dev/odoc.support/fonts/KaTeX_Typewriter-Regular.woff2
Normal file
BIN
dev/odoc.support/fonts/KaTeX_Typewriter-Regular.woff2
Normal file
Binary file not shown.
461
dev/odoc.support/highlight.pack.js
Normal file
461
dev/odoc.support/highlight.pack.js
Normal file
|
|
@ -0,0 +1,461 @@
|
||||||
|
/*!
|
||||||
|
Highlight.js v11.7.0 (git: 82688fad18)
|
||||||
|
(c) 2006-2022 undefined and other contributors
|
||||||
|
License: BSD-3-Clause
|
||||||
|
*/
|
||||||
|
var hljs=function(){"use strict";var e={exports:{}};function t(e){
|
||||||
|
return e instanceof Map?e.clear=e.delete=e.set=()=>{
|
||||||
|
throw Error("map is read-only")}:e instanceof Set&&(e.add=e.clear=e.delete=()=>{
|
||||||
|
throw Error("set is read-only")
|
||||||
|
}),Object.freeze(e),Object.getOwnPropertyNames(e).forEach((n=>{var i=e[n]
|
||||||
|
;"object"!=typeof i||Object.isFrozen(i)||t(i)})),e}
|
||||||
|
e.exports=t,e.exports.default=t;class n{constructor(e){
|
||||||
|
void 0===e.data&&(e.data={}),this.data=e.data,this.isMatchIgnored=!1}
|
||||||
|
ignoreMatch(){this.isMatchIgnored=!0}}function i(e){
|
||||||
|
return e.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")
|
||||||
|
}function r(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||e.sublanguage&&e.language;class o{constructor(e,t){
|
||||||
|
this.buffer="",this.classPrefix=t.classPrefix,e.walk(this)}addText(e){
|
||||||
|
this.buffer+=i(e)}openNode(e){if(!s(e))return;let t=""
|
||||||
|
;t=e.sublanguage?"language-"+e.language:((e,{prefix:t})=>{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+="</span>")}value(){return this.buffer}span(e){
|
||||||
|
this.buffer+=`<span class="${e}">`}}const a=(e={})=>{const t={children:[]}
|
||||||
|
;return Object.assign(t,e),t};class c{constructor(){
|
||||||
|
this.rootNode=a(),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=a({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=>{
|
||||||
|
c._collapse(e)})))}}class l extends c{constructor(e){super(),this.options=e}
|
||||||
|
addKeyword(e,t){""!==e&&(this.openNode(t),this.addText(e),this.closeNode())}
|
||||||
|
addText(e){""!==e&&this.add(e)}addSublanguage(e,t){const n=e.root
|
||||||
|
;n.sublanguage=!0,n.language=t,this.add(n)}toHTML(){
|
||||||
|
return new o(this,this.options).value()}finalize(){return!0}}function g(e){
|
||||||
|
return e?"string"==typeof e?e:e.source:null}function d(e){return p("(?=",e,")")}
|
||||||
|
function u(e){return p("(?:",e,")*")}function h(e){return p("(?:",e,")?")}
|
||||||
|
function p(...e){return e.map((e=>g(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=>g(e))).join("|")+")"}
|
||||||
|
function b(e){return RegExp(e.toString()+"|").exec("").length-1}
|
||||||
|
const m=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./
|
||||||
|
;function E(e,{joinWith:t}){let n=0;return e.map((e=>{n+=1;const t=n
|
||||||
|
;let i=g(e),r="";for(;i.length>0;){const e=m.exec(i);if(!e){r+=i;break}
|
||||||
|
r+=i.substring(0,e.index),
|
||||||
|
i=i.substring(e.index+e[0].length),"\\"===e[0][0]&&e[1]?r+="\\"+(Number(e[1])+t):(r+=e[0],
|
||||||
|
"("===e[0]&&n++)}return r})).map((e=>`(${e})`)).join(t)}
|
||||||
|
const x="[a-zA-Z]\\w*",w="[a-zA-Z_]\\w*",y="\\b\\d+(\\.\\d+)?",_="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",O="\\b(0b[01]+)",v={
|
||||||
|
begin:"\\\\[\\s\\S]",relevance:0},N={scope:"string",begin:"'",end:"'",
|
||||||
|
illegal:"\\n",contains:[v]},k={scope:"string",begin:'"',end:'"',illegal:"\\n",
|
||||||
|
contains:[v]},M=(e,t,n={})=>{const i=r({scope:"comment",begin:e,end:t,
|
||||||
|
contains:[]},n);i.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 s=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 i.contains.push({begin:p(/[ ]+/,"(",s,/[.]?[:]?([.][ ]|[ ])/,"){3}")}),i
|
||||||
|
},S=M("//","$"),R=M("/\\*","\\*/"),j=M("#","$");var A=Object.freeze({
|
||||||
|
__proto__:null,MATCH_NOTHING_RE:/\b\B/,IDENT_RE:x,UNDERSCORE_IDENT_RE:w,
|
||||||
|
NUMBER_RE:y,C_NUMBER_RE:_,BINARY_NUMBER_RE:O,
|
||||||
|
RE_STARTERS_RE:"!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",
|
||||||
|
SHEBANG:(e={})=>{const t=/^#![ ]*\//
|
||||||
|
;return e.binary&&(e.begin=p(t,/.*\b/,e.binary,/\b.*/)),r({scope:"meta",begin:t,
|
||||||
|
end:/$/,relevance:0,"on:begin":(e,t)=>{0!==e.index&&t.ignoreMatch()}},e)},
|
||||||
|
BACKSLASH_ESCAPE:v,APOS_STRING_MODE:N,QUOTE_STRING_MODE:k,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/
|
||||||
|
},COMMENT:M,C_LINE_COMMENT_MODE:S,C_BLOCK_COMMENT_MODE:R,HASH_COMMENT_MODE:j,
|
||||||
|
NUMBER_MODE:{scope:"number",begin:y,relevance:0},C_NUMBER_MODE:{scope:"number",
|
||||||
|
begin:_,relevance:0},BINARY_NUMBER_MODE:{scope:"number",begin:O,relevance:0},
|
||||||
|
REGEXP_MODE:{begin:/(?=\/[^/\n]*\/)/,contains:[{scope:"regexp",begin:/\//,
|
||||||
|
end:/\/[gimuy]*/,illegal:/\n/,contains:[v,{begin:/\[/,end:/\]/,relevance:0,
|
||||||
|
contains:[v]}]}]},TITLE_MODE:{scope:"title",begin:x,relevance:0},
|
||||||
|
UNDERSCORE_TITLE_MODE:{scope:"title",begin:w,relevance:0},METHOD_GUARD:{
|
||||||
|
begin:"\\.\\s*[a-zA-Z_]\\w*",relevance:0},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()}})});function I(e,t){
|
||||||
|
"."===e.input[e.index-1]&&t.ignoreMatch()}function T(e,t){
|
||||||
|
void 0!==e.className&&(e.scope=e.className,delete e.className)}function L(e,t){
|
||||||
|
t&&e.beginKeywords&&(e.begin="\\b("+e.beginKeywords.split(" ").join("|")+")(?!\\.)(?=\\b|\\s)",
|
||||||
|
e.__beforeBegin=I,e.keywords=e.keywords||e.beginKeywords,delete e.beginKeywords,
|
||||||
|
void 0===e.relevance&&(e.relevance=0))}function B(e,t){
|
||||||
|
Array.isArray(e.illegal)&&(e.illegal=f(...e.illegal))}function D(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 H(e,t){
|
||||||
|
void 0===e.relevance&&(e.relevance=1)}const P=(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=p(n.beforeMatch,d(n.begin)),e.starts={
|
||||||
|
relevance:0,contains:[Object.assign(n,{endsParent:!0})]
|
||||||
|
},e.relevance=0,delete n.beforeMatch
|
||||||
|
},C=["of","and","for","in","not","or","if","then","parent","list","value"]
|
||||||
|
;function $(e,t,n="keyword"){const i=Object.create(null)
|
||||||
|
;return"string"==typeof e?r(n,e.split(" ")):Array.isArray(e)?r(n,e):Object.keys(e).forEach((n=>{
|
||||||
|
Object.assign(i,$(e[n],t,n))})),i;function r(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=>C.includes(e.toLowerCase()))(e)?0:1}const z={},K=e=>{
|
||||||
|
console.error(e)},W=(e,...t)=>{console.log("WARN: "+e,...t)},X=(e,t)=>{
|
||||||
|
z[`${e}/${t}`]||(console.log(`Deprecated as of ${e}. ${t}`),z[`${e}/${t}`]=!0)
|
||||||
|
},G=Error();function Z(e,t,{key:n}){let i=0;const r=e[n],s={},o={}
|
||||||
|
;for(let e=1;e<=t.length;e++)o[e+i]=r[e],s[e+i]=!0,i+=b(t[e-1])
|
||||||
|
;e[n]=o,e[n]._emit=s,e[n]._multi=!0}function F(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 K("skip, excludeBegin, returnBegin not compatible with beginScope: {}"),
|
||||||
|
G
|
||||||
|
;if("object"!=typeof e.beginScope||null===e.beginScope)throw K("beginScope must be object"),
|
||||||
|
G;Z(e,e.begin,{key:"beginScope"}),e.begin=E(e.begin,{joinWith:""})}})(e),(e=>{
|
||||||
|
if(Array.isArray(e.end)){
|
||||||
|
if(e.skip||e.excludeEnd||e.returnEnd)throw K("skip, excludeEnd, returnEnd not compatible with endScope: {}"),
|
||||||
|
G
|
||||||
|
;if("object"!=typeof e.endScope||null===e.endScope)throw K("endScope must be object"),
|
||||||
|
G;Z(e,e.end,{key:"endScope"}),e.end=E(e.end,{joinWith:""})}})(e)}function V(e){
|
||||||
|
function t(t,n){
|
||||||
|
return RegExp(g(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+=b(e)+1}compile(){0===this.regexes.length&&(this.exec=()=>null)
|
||||||
|
;const e=this.regexes.map((e=>e[1]));this.matcherRe=t(E(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 i{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=r(e.classNameAliases||{}),function n(s,o){const a=s
|
||||||
|
;if(s.isCompiled)return a
|
||||||
|
;[T,D,F,P].forEach((e=>e(s,o))),e.compilerExtensions.forEach((e=>e(s,o))),
|
||||||
|
s.__beforeBegin=null,[L,B,H].forEach((e=>e(s,o))),s.isCompiled=!0;let c=null
|
||||||
|
;return"object"==typeof s.keywords&&s.keywords.$pattern&&(s.keywords=Object.assign({},s.keywords),
|
||||||
|
c=s.keywords.$pattern,
|
||||||
|
delete s.keywords.$pattern),c=c||/\w+/,s.keywords&&(s.keywords=$(s.keywords,e.case_insensitive)),
|
||||||
|
a.keywordPatternRe=t(c,!0),
|
||||||
|
o&&(s.begin||(s.begin=/\B|\b/),a.beginRe=t(a.begin),s.end||s.endsWithParent||(s.end=/\B|\b/),
|
||||||
|
s.end&&(a.endRe=t(a.end)),
|
||||||
|
a.terminatorEnd=g(a.end)||"",s.endsWithParent&&o.terminatorEnd&&(a.terminatorEnd+=(s.end?"|":"")+o.terminatorEnd)),
|
||||||
|
s.illegal&&(a.illegalRe=t(s.illegal)),
|
||||||
|
s.contains||(s.contains=[]),s.contains=[].concat(...s.contains.map((e=>(e=>(e.variants&&!e.cachedVariants&&(e.cachedVariants=e.variants.map((t=>r(e,{
|
||||||
|
variants:null},t)))),e.cachedVariants?e.cachedVariants:q(e)?r(e,{
|
||||||
|
starts:e.starts?r(e.starts):null
|
||||||
|
}):Object.isFrozen(e)?r(e):e))("self"===e?s:e)))),s.contains.forEach((e=>{n(e,a)
|
||||||
|
})),s.starts&&n(s.starts,o),a.matcher=(e=>{const t=new i
|
||||||
|
;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=i,Q=r,ee=Symbol("nomatch");var te=(t=>{
|
||||||
|
const i=Object.create(null),r=Object.create(null),s=[];let o=!0
|
||||||
|
;const a="Could not find the language '{}', did you forget to load/include a language module?",c={
|
||||||
|
disableAutodetect:!0,name:"Plain text",contains:[]};let g={
|
||||||
|
ignoreUnescapedHTML:!1,throwUnescapedHTML:!1,noHighlightRe:/^(no-?highlight)$/i,
|
||||||
|
languageDetectRe:/\blang(?:uage)?-([\w-]+)\b/i,classPrefix:"hljs-",
|
||||||
|
cssSelector:"pre code",languages:null,__emitter:l};function b(e){
|
||||||
|
return g.noHighlightRe.test(e)}function m(e,t,n){let i="",r=""
|
||||||
|
;"object"==typeof t?(i=e,
|
||||||
|
n=t.ignoreIllegals,r=t.language):(X("10.7.0","highlight(lang, code, ...args) has been deprecated."),
|
||||||
|
X("10.7.0","Please use highlight(code, options) instead.\nhttps://github.com/highlightjs/highlight.js/issues/2277"),
|
||||||
|
r=e,i=t),void 0===n&&(n=!0);const s={code:i,language:r};k("before:highlight",s)
|
||||||
|
;const o=s.result?s.result:E(s.language,s.code,n)
|
||||||
|
;return o.code=s.code,k("after:highlight",o),o}function E(e,t,r,s){
|
||||||
|
const c=Object.create(null);function l(){if(!N.keywords)return void M.addText(S)
|
||||||
|
;let e=0;N.keywordPatternRe.lastIndex=0;let t=N.keywordPatternRe.exec(S),n=""
|
||||||
|
;for(;t;){n+=S.substring(e,t.index)
|
||||||
|
;const r=y.case_insensitive?t[0].toLowerCase():t[0],s=(i=r,N.keywords[i]);if(s){
|
||||||
|
const[e,i]=s
|
||||||
|
;if(M.addText(n),n="",c[r]=(c[r]||0)+1,c[r]<=7&&(R+=i),e.startsWith("_"))n+=t[0];else{
|
||||||
|
const n=y.classNameAliases[e]||e;M.addKeyword(t[0],n)}}else n+=t[0]
|
||||||
|
;e=N.keywordPatternRe.lastIndex,t=N.keywordPatternRe.exec(S)}var i
|
||||||
|
;n+=S.substring(e),M.addText(n)}function d(){null!=N.subLanguage?(()=>{
|
||||||
|
if(""===S)return;let e=null;if("string"==typeof N.subLanguage){
|
||||||
|
if(!i[N.subLanguage])return void M.addText(S)
|
||||||
|
;e=E(N.subLanguage,S,!0,k[N.subLanguage]),k[N.subLanguage]=e._top
|
||||||
|
}else e=x(S,N.subLanguage.length?N.subLanguage:null)
|
||||||
|
;N.relevance>0&&(R+=e.relevance),M.addSublanguage(e._emitter,e.language)
|
||||||
|
})():l(),S=""}function u(e,t){let n=1;const i=t.length-1;for(;n<=i;){
|
||||||
|
if(!e._emit[n]){n++;continue}const i=y.classNameAliases[e[n]]||e[n],r=t[n]
|
||||||
|
;i?M.addKeyword(r,i):(S=r,l(),S=""),n++}}function h(e,t){
|
||||||
|
return e.scope&&"string"==typeof e.scope&&M.openNode(y.classNameAliases[e.scope]||e.scope),
|
||||||
|
e.beginScope&&(e.beginScope._wrap?(M.addKeyword(S,y.classNameAliases[e.beginScope._wrap]||e.beginScope._wrap),
|
||||||
|
S=""):e.beginScope._multi&&(u(e.beginScope,t),S="")),N=Object.create(e,{parent:{
|
||||||
|
value:N}}),N}function p(e,t,i){let r=((e,t)=>{const n=e&&e.exec(t)
|
||||||
|
;return n&&0===n.index})(e.endRe,i);if(r){if(e["on:end"]){const i=new n(e)
|
||||||
|
;e["on:end"](t,i),i.isMatchIgnored&&(r=!1)}if(r){
|
||||||
|
for(;e.endsParent&&e.parent;)e=e.parent;return e}}
|
||||||
|
if(e.endsWithParent)return p(e.parent,t,i)}function f(e){
|
||||||
|
return 0===N.matcher.regexIndex?(S+=e[0],1):(I=!0,0)}function b(e){
|
||||||
|
const n=e[0],i=t.substring(e.index),r=p(N,e,i);if(!r)return ee;const s=N
|
||||||
|
;N.endScope&&N.endScope._wrap?(d(),
|
||||||
|
M.addKeyword(n,N.endScope._wrap)):N.endScope&&N.endScope._multi?(d(),
|
||||||
|
u(N.endScope,e)):s.skip?S+=n:(s.returnEnd||s.excludeEnd||(S+=n),
|
||||||
|
d(),s.excludeEnd&&(S=n));do{
|
||||||
|
N.scope&&M.closeNode(),N.skip||N.subLanguage||(R+=N.relevance),N=N.parent
|
||||||
|
}while(N!==r.parent);return r.starts&&h(r.starts,e),s.returnEnd?0:n.length}
|
||||||
|
let m={};function w(i,s){const a=s&&s[0];if(S+=i,null==a)return d(),0
|
||||||
|
;if("begin"===m.type&&"end"===s.type&&m.index===s.index&&""===a){
|
||||||
|
if(S+=t.slice(s.index,s.index+1),!o){const t=Error(`0 width match regex (${e})`)
|
||||||
|
;throw t.languageName=e,t.badRule=m.rule,t}return 1}
|
||||||
|
if(m=s,"begin"===s.type)return(e=>{
|
||||||
|
const t=e[0],i=e.rule,r=new n(i),s=[i.__beforeBegin,i["on:begin"]]
|
||||||
|
;for(const n of s)if(n&&(n(e,r),r.isMatchIgnored))return f(t)
|
||||||
|
;return i.skip?S+=t:(i.excludeBegin&&(S+=t),
|
||||||
|
d(),i.returnBegin||i.excludeBegin||(S=t)),h(i,e),i.returnBegin?0:t.length})(s)
|
||||||
|
;if("illegal"===s.type&&!r){
|
||||||
|
const e=Error('Illegal lexeme "'+a+'" for mode "'+(N.scope||"<unnamed>")+'"')
|
||||||
|
;throw e.mode=N,e}if("end"===s.type){const e=b(s);if(e!==ee)return e}
|
||||||
|
if("illegal"===s.type&&""===a)return 1
|
||||||
|
;if(A>1e5&&A>3*s.index)throw Error("potential infinite loop, way more iterations than matches")
|
||||||
|
;return S+=a,a.length}const y=O(e)
|
||||||
|
;if(!y)throw K(a.replace("{}",e)),Error('Unknown language: "'+e+'"')
|
||||||
|
;const _=V(y);let v="",N=s||_;const k={},M=new g.__emitter(g);(()=>{const e=[]
|
||||||
|
;for(let t=N;t!==y;t=t.parent)t.scope&&e.unshift(t.scope)
|
||||||
|
;e.forEach((e=>M.openNode(e)))})();let S="",R=0,j=0,A=0,I=!1;try{
|
||||||
|
for(N.matcher.considerAll();;){
|
||||||
|
A++,I?I=!1:N.matcher.considerAll(),N.matcher.lastIndex=j
|
||||||
|
;const e=N.matcher.exec(t);if(!e)break;const n=w(t.substring(j,e.index),e)
|
||||||
|
;j=e.index+n}
|
||||||
|
return w(t.substring(j)),M.closeAllNodes(),M.finalize(),v=M.toHTML(),{
|
||||||
|
language:e,value:v,relevance:R,illegal:!1,_emitter:M,_top:N}}catch(n){
|
||||||
|
if(n.message&&n.message.includes("Illegal"))return{language:e,value:Y(t),
|
||||||
|
illegal:!0,relevance:0,_illegalBy:{message:n.message,index:j,
|
||||||
|
context:t.slice(j-100,j+100),mode:n.mode,resultSoFar:v},_emitter:M};if(o)return{
|
||||||
|
language:e,value:Y(t),illegal:!1,relevance:0,errorRaised:n,_emitter:M,_top:N}
|
||||||
|
;throw n}}function x(e,t){t=t||g.languages||Object.keys(i);const n=(e=>{
|
||||||
|
const t={value:Y(e),illegal:!1,relevance:0,_top:c,_emitter:new g.__emitter(g)}
|
||||||
|
;return t._emitter.addText(e),t})(e),r=t.filter(O).filter(N).map((t=>E(t,e,!1)))
|
||||||
|
;r.unshift(n);const s=r.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})),[o,a]=s,l=o
|
||||||
|
;return l.secondBest=a,l}function w(e){let t=null;const n=(e=>{
|
||||||
|
let t=e.className+" ";t+=e.parentNode?e.parentNode.className:""
|
||||||
|
;const n=g.languageDetectRe.exec(t);if(n){const t=O(n[1])
|
||||||
|
;return t||(W(a.replace("{}",n[1])),
|
||||||
|
W("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(k("before:highlightElement",{el:e,language:n
|
||||||
|
}),e.children.length>0&&(g.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)),g.throwUnescapedHTML))throw new J("One of your code blocks includes unescaped HTML.",e.innerHTML)
|
||||||
|
;t=e;const i=t.textContent,s=n?m(i,{language:n,ignoreIllegals:!0}):x(i)
|
||||||
|
;e.innerHTML=s.value,((e,t,n)=>{const i=t&&r[t]||n
|
||||||
|
;e.classList.add("hljs"),e.classList.add("language-"+i)
|
||||||
|
})(e,n,s.language),e.result={language:s.language,re:s.relevance,
|
||||||
|
relevance:s.relevance},s.secondBest&&(e.secondBest={
|
||||||
|
language:s.secondBest.language,relevance:s.secondBest.relevance
|
||||||
|
}),k("after:highlightElement",{el:e,result:s,text:i})}let y=!1;function _(){
|
||||||
|
"loading"!==document.readyState?document.querySelectorAll(g.cssSelector).forEach(w):y=!0
|
||||||
|
}function O(e){return e=(e||"").toLowerCase(),i[e]||i[r[e]]}
|
||||||
|
function v(e,{languageName:t}){"string"==typeof e&&(e=[e]),e.forEach((e=>{
|
||||||
|
r[e.toLowerCase()]=t}))}function N(e){const t=O(e)
|
||||||
|
;return t&&!t.disableAutodetect}function k(e,t){const n=e;s.forEach((e=>{
|
||||||
|
e[n]&&e[n](t)}))}
|
||||||
|
"undefined"!=typeof window&&window.addEventListener&&window.addEventListener("DOMContentLoaded",(()=>{
|
||||||
|
y&&_()}),!1),Object.assign(t,{highlight:m,highlightAuto:x,highlightAll:_,
|
||||||
|
highlightElement:w,
|
||||||
|
highlightBlock:e=>(X("10.7.0","highlightBlock will be removed entirely in v12.0"),
|
||||||
|
X("10.7.0","Please use highlightElement now."),w(e)),configure:e=>{g=Q(g,e)},
|
||||||
|
initHighlighting:()=>{
|
||||||
|
_(),X("10.6.0","initHighlighting() deprecated. Use highlightAll() now.")},
|
||||||
|
initHighlightingOnLoad:()=>{
|
||||||
|
_(),X("10.6.0","initHighlightingOnLoad() deprecated. Use highlightAll() now.")
|
||||||
|
},registerLanguage:(e,n)=>{let r=null;try{r=n(t)}catch(t){
|
||||||
|
if(K("Language definition for '{}' could not be registered.".replace("{}",e)),
|
||||||
|
!o)throw t;K(t),r=c}
|
||||||
|
r.name||(r.name=e),i[e]=r,r.rawDefinition=n.bind(null,t),r.aliases&&v(r.aliases,{
|
||||||
|
languageName:e})},unregisterLanguage:e=>{delete i[e]
|
||||||
|
;for(const t of Object.keys(r))r[t]===e&&delete r[t]},
|
||||||
|
listLanguages:()=>Object.keys(i),getLanguage:O,registerAliases:v,
|
||||||
|
autoDetection:N,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),s.push(e)}
|
||||||
|
}),t.debugMode=()=>{o=!1},t.safeMode=()=>{o=!0
|
||||||
|
},t.versionString="11.7.0",t.regex={concat:p,lookahead:d,either:f,optional:h,
|
||||||
|
anyNumberOfTimes:u};for(const t in A)"object"==typeof A[t]&&e.exports(A[t])
|
||||||
|
;return Object.assign(t,A),t})({});return te}()
|
||||||
|
;"object"==typeof exports&&"undefined"!=typeof module&&(module.exports=hljs);/*! `xml` grammar compiled for Highlight.js 11.7.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:/</,relevance:0,contains:[{className:"attr",
|
||||||
|
begin:/[\p{L}0-9._:-]+/u,relevance:0},{begin:/=\s*/,relevance:0,contains:[{
|
||||||
|
className:"string",endsParent:!0,variants:[{begin:/"/,end:/"/,contains:[s]},{
|
||||||
|
begin:/'/,end:/'/,contains:[s]},{begin:/[^\s"'=<>`]+/}]}]}]};return{
|
||||||
|
name:"HTML, XML",
|
||||||
|
aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist","wsf","svg"],
|
||||||
|
case_insensitive:!0,unicodeRegex:!0,contains:[{className:"meta",begin:/<![a-z]/,
|
||||||
|
end:/>/,relevance:10,contains:[t,l,c,i,{begin:/\[/,end:/\]/,contains:[{
|
||||||
|
className:"meta",begin:/<![a-z]/,end:/>/,contains:[t,i,l,c]}]}]
|
||||||
|
},e.COMMENT(/<!--/,/-->/,{relevance:10}),{begin:/<!\[CDATA\[/,end:/\]\]>/,
|
||||||
|
relevance:10},s,{className:"meta",end:/\?>/,variants:[{begin:/<\?xml/,
|
||||||
|
relevance:10,contains:[l]},{begin:/<\?[a-z][a-z0-9]+/}]},{className:"tag",
|
||||||
|
begin:/<style(?=\s|>)/,end:/>/,keywords:{name:"style"},contains:[r],starts:{
|
||||||
|
end:/<\/style>/,returnEnd:!0,subLanguage:["css","xml"]}},{className:"tag",
|
||||||
|
begin:/<script(?=\s|>)/,end:/>/,keywords:{name:"script"},contains:[r],starts:{
|
||||||
|
end:/<\/script>/,returnEnd:!0,subLanguage:["javascript","handlebars","xml"]}},{
|
||||||
|
className:"tag",begin:/<>|<\/>/},{className:"tag",
|
||||||
|
begin:a.concat(/</,a.lookahead(a.concat(n,a.either(/\/>/,/>/,/\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)})();/*! `markdown` grammar compiled for Highlight.js 11.7.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.7.0 */
|
||||||
|
(()=>{var t=(()=>{"use strict";return t=>({name:"Plain text",
|
||||||
|
aliases:["text","txt"],disableAutodetect:!0})})()
|
||||||
|
;hljs.registerLanguage("plaintext",t)})();/*! `ocaml` grammar compiled for Highlight.js 11.7.0 */
|
||||||
|
(()=>{var e=(()=>{"use strict";return e=>({name:"OCaml",aliases:["ml"],
|
||||||
|
keywords:{$pattern:"[a-z_]\\w*!?",
|
||||||
|
keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",
|
||||||
|
built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",
|
||||||
|
literal:"true false"},illegal:/\/\/|>>/,contains:[{className:"literal",
|
||||||
|
begin:"\\[(\\|\\|)?\\]|\\(\\)",relevance:0},e.COMMENT("\\(\\*","\\*\\)",{
|
||||||
|
contains:["self"]}),{className:"symbol",begin:"'[A-Za-z_](?!')[\\w']*"},{
|
||||||
|
className:"type",begin:"`[A-Z][\\w']*"},{className:"type",
|
||||||
|
begin:"\\b[A-Z][\\w']*",relevance:0},{begin:"[a-z_]\\w*'[\\w']*",relevance:0
|
||||||
|
},e.inherit(e.APOS_STRING_MODE,{className:"string",relevance:0
|
||||||
|
}),e.inherit(e.QUOTE_STRING_MODE,{illegal:null}),{className:"number",
|
||||||
|
begin:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",
|
||||||
|
relevance:0},{begin:/->/}]})})();hljs.registerLanguage("ocaml",e)})();/*! `python` grammar compiled for Highlight.js 11.7.0 */
|
||||||
|
(()=>{var e=(()=>{"use strict";return e=>{
|
||||||
|
const n=e.regex,a=/[\p{XID_Start}_]\p{XID_Continue}*/u,i=["and","as","assert","async","await","break","case","class","continue","def","del","elif","else","except","finally","for","from","global","if","import","in","is","lambda","match","nonlocal|10","not","or","pass","raise","return","try","while","with","yield"],s={
|
||||||
|
$pattern:/[A-Za-z]\w+|__\w+__/,keyword:i,
|
||||||
|
built_in:["__import__","abs","all","any","ascii","bin","bool","breakpoint","bytearray","bytes","callable","chr","classmethod","compile","complex","delattr","dict","dir","divmod","enumerate","eval","exec","filter","float","format","frozenset","getattr","globals","hasattr","hash","help","hex","id","input","int","isinstance","issubclass","iter","len","list","locals","map","max","memoryview","min","next","object","oct","open","ord","pow","print","property","range","repr","reversed","round","set","setattr","slice","sorted","staticmethod","str","sum","super","tuple","type","vars","zip"],
|
||||||
|
literal:["__debug__","Ellipsis","False","None","NotImplemented","True"],
|
||||||
|
type:["Any","Callable","Coroutine","Dict","List","Literal","Generic","Optional","Sequence","Set","Tuple","Type","Union"]
|
||||||
|
},t={className:"meta",begin:/^(>>>|\.\.\.) /},r={className:"subst",begin:/\{/,
|
||||||
|
end:/\}/,keywords:s,illegal:/#/},l={begin:/\{\{/,relevance:0},b={
|
||||||
|
className:"string",contains:[e.BACKSLASH_ESCAPE],variants:[{
|
||||||
|
begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?'''/,end:/'''/,
|
||||||
|
contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{
|
||||||
|
begin:/([uU]|[bB]|[rR]|[bB][rR]|[rR][bB])?"""/,end:/"""/,
|
||||||
|
contains:[e.BACKSLASH_ESCAPE,t],relevance:10},{
|
||||||
|
begin:/([fF][rR]|[rR][fF]|[fF])'''/,end:/'''/,
|
||||||
|
contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"""/,
|
||||||
|
end:/"""/,contains:[e.BACKSLASH_ESCAPE,t,l,r]},{begin:/([uU]|[rR])'/,end:/'/,
|
||||||
|
relevance:10},{begin:/([uU]|[rR])"/,end:/"/,relevance:10},{
|
||||||
|
begin:/([bB]|[bB][rR]|[rR][bB])'/,end:/'/},{begin:/([bB]|[bB][rR]|[rR][bB])"/,
|
||||||
|
end:/"/},{begin:/([fF][rR]|[rR][fF]|[fF])'/,end:/'/,
|
||||||
|
contains:[e.BACKSLASH_ESCAPE,l,r]},{begin:/([fF][rR]|[rR][fF]|[fF])"/,end:/"/,
|
||||||
|
contains:[e.BACKSLASH_ESCAPE,l,r]},e.APOS_STRING_MODE,e.QUOTE_STRING_MODE]
|
||||||
|
},o="[0-9](_?[0-9])*",c=`(\\b(${o}))?\\.(${o})|\\b(${o})\\.`,d="\\b|"+i.join("|"),g={
|
||||||
|
className:"number",relevance:0,variants:[{
|
||||||
|
begin:`(\\b(${o})|(${c}))[eE][+-]?(${o})[jJ]?(?=${d})`},{begin:`(${c})[jJ]?`},{
|
||||||
|
begin:`\\b([1-9](_?[0-9])*|0+(_?0)*)[lLjJ]?(?=${d})`},{
|
||||||
|
begin:`\\b0[bB](_?[01])+[lL]?(?=${d})`},{begin:`\\b0[oO](_?[0-7])+[lL]?(?=${d})`
|
||||||
|
},{begin:`\\b0[xX](_?[0-9a-fA-F])+[lL]?(?=${d})`},{begin:`\\b(${o})[jJ](?=${d})`
|
||||||
|
}]},p={className:"comment",begin:n.lookahead(/# type:/),end:/$/,keywords:s,
|
||||||
|
contains:[{begin:/# type:/},{begin:/#/,end:/\b\B/,endsWithParent:!0}]},m={
|
||||||
|
className:"params",variants:[{className:"",begin:/\(\s*\)/,skip:!0},{begin:/\(/,
|
||||||
|
end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:s,
|
||||||
|
contains:["self",t,g,b,e.HASH_COMMENT_MODE]}]};return r.contains=[b,g,t],{
|
||||||
|
name:"Python",aliases:["py","gyp","ipython"],unicodeRegex:!0,keywords:s,
|
||||||
|
illegal:/(<\/|->|\?)|=>/,contains:[t,g,{begin:/\bself\b/},{beginKeywords:"if",
|
||||||
|
relevance:0},b,p,e.HASH_COMMENT_MODE,{match:[/\bdef/,/\s+/,a],scope:{
|
||||||
|
1:"keyword",3:"title.function"},contains:[m]},{variants:[{
|
||||||
|
match:[/\bclass/,/\s+/,a,/\s*/,/\(\s*/,a,/\s*\)/]},{match:[/\bclass/,/\s+/,a]}],
|
||||||
|
scope:{1:"keyword",3:"title.class",6:"title.class.inherited"}},{
|
||||||
|
className:"meta",begin:/^[\t ]*@/,end:/(?=#)|$/,contains:[g,m,b]}]}}})()
|
||||||
|
;hljs.registerLanguage("python",e)})();/*! `reasonml` grammar compiled for Highlight.js 11.7.0 */
|
||||||
|
(()=>{var e=(()=>{"use strict";return e=>{
|
||||||
|
const n="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",s="("+["||","++","**","+.","*","/","*.","/.","..."].map((e=>e.split("").map((e=>"\\"+e)).join(""))).join("|")+"|\\|>|&&|==|===)",i="\\s+"+s+"\\s+",r={
|
||||||
|
keyword:"and as asr assert begin class constraint do done downto else end exception external for fun function functor if in include inherit initializer land lazy let lor lsl lsr lxor match method mod module mutable new nonrec object of open or private rec sig struct then to try type val virtual when while with",
|
||||||
|
built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",
|
||||||
|
literal:"true false"
|
||||||
|
},l="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",t={
|
||||||
|
className:"number",relevance:0,variants:[{begin:l},{begin:"\\(-"+l+"\\)"}]},c={
|
||||||
|
className:"operator",relevance:0,begin:s},o=[{className:"identifier",
|
||||||
|
relevance:0,begin:n},c,t],g=[e.QUOTE_STRING_MODE,c,{className:"module",
|
||||||
|
begin:"\\b"+a,returnBegin:!0,relevance:0,end:".",contains:[{
|
||||||
|
className:"identifier",begin:a,relevance:0}]}],b=[{className:"module",
|
||||||
|
begin:"\\b"+a,returnBegin:!0,end:".",relevance:0,contains:[{
|
||||||
|
className:"identifier",begin:a,relevance:0}]}],m={className:"function",
|
||||||
|
relevance:0,keywords:r,variants:[{begin:"\\s(\\(\\.?.*?\\)|"+n+")\\s*=>",
|
||||||
|
end:"\\s*=>",returnBegin:!0,relevance:0,contains:[{className:"params",
|
||||||
|
variants:[{begin:n},{
|
||||||
|
begin:"~?[a-z$_][0-9a-zA-Z$_]*(\\s*:\\s*[a-z$_][0-9a-z$_]*(\\(\\s*('?[a-z$_][0-9a-z$_]*\\s*(,'?[a-z$_][0-9a-z$_]*\\s*)*)?\\))?){0,2}"
|
||||||
|
},{begin:/\(\s*\)/}]}]},{begin:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",end:"\\s=>",
|
||||||
|
returnBegin:!0,relevance:0,contains:[{className:"params",relevance:0,variants:[{
|
||||||
|
begin:n,end:"(,|\\n|\\))",relevance:0,contains:[c,{className:"typing",begin:":",
|
||||||
|
end:"(,|\\n)",returnBegin:!0,relevance:0,contains:b}]}]}]},{
|
||||||
|
begin:"\\(\\.\\s"+n+"\\)\\s*=>"}]};g.push(m);const d={className:"constructor",
|
||||||
|
begin:a+"\\(",end:"\\)",illegal:"\\n",keywords:r,
|
||||||
|
contains:[e.QUOTE_STRING_MODE,c,{className:"params",begin:"\\b"+n}]},u={
|
||||||
|
className:"pattern-match",begin:"\\|",returnBegin:!0,keywords:r,end:"=>",
|
||||||
|
relevance:0,contains:[d,c,{relevance:0,className:"constructor",begin:a}]},v={
|
||||||
|
className:"module-access",keywords:r,returnBegin:!0,variants:[{
|
||||||
|
begin:"\\b("+a+"\\.)+"+n},{begin:"\\b("+a+"\\.)+\\(",end:"\\)",returnBegin:!0,
|
||||||
|
contains:[m,{begin:"\\(",end:"\\)",relevance:0,skip:!0}].concat(g)},{
|
||||||
|
begin:"\\b("+a+"\\.)+\\{",end:/\}/}],contains:g};return b.push(v),{
|
||||||
|
name:"ReasonML",aliases:["re"],keywords:r,illegal:"(:-|:=|\\$\\{|\\+=)",
|
||||||
|
contains:[e.COMMENT("/\\*","\\*/",{illegal:"^(#,\\/\\/)"}),{
|
||||||
|
className:"character",begin:"'(\\\\[^']+|[^'])'",illegal:"\\n",relevance:0
|
||||||
|
},e.QUOTE_STRING_MODE,{className:"literal",begin:"\\(\\)",relevance:0},{
|
||||||
|
className:"literal",begin:"\\[\\|",end:"\\|\\]",relevance:0,contains:o},{
|
||||||
|
className:"literal",begin:"\\[",end:"\\]",relevance:0,contains:o},d,{
|
||||||
|
className:"operator",begin:i,illegal:"--\x3e",relevance:0
|
||||||
|
},t,e.C_LINE_COMMENT_MODE,u,m,{className:"module-def",
|
||||||
|
begin:"\\bmodule\\s+"+n+"\\s+"+a+"\\s+=\\s+\\{",end:/\}/,returnBegin:!0,
|
||||||
|
keywords:r,relevance:0,contains:[{className:"module",relevance:0,begin:a},{
|
||||||
|
begin:/\{/,end:/\}/,relevance:0,skip:!0}].concat(g)},v]}}})()
|
||||||
|
;hljs.registerLanguage("reasonml",e)})();
|
||||||
1
dev/odoc.support/katex.min.css
vendored
Normal file
1
dev/odoc.support/katex.min.css
vendored
Normal file
File diff suppressed because one or more lines are too long
1
dev/odoc.support/katex.min.js
vendored
Normal file
1
dev/odoc.support/katex.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
794
dev/odoc.support/odoc.css
Normal file
794
dev/odoc.support/odoc.css
Normal file
|
|
@ -0,0 +1,794 @@
|
||||||
|
@charset "UTF-8";
|
||||||
|
/* Copyright (c) 2016 The odoc contributors. All rights reserved.
|
||||||
|
Distributed under the ISC license, see terms at the end of the file.
|
||||||
|
odoc 2.2.0 */
|
||||||
|
|
||||||
|
/* Fonts */
|
||||||
|
@import url('https://fonts.googleapis.com/css?family=Fira+Mono:400,500');
|
||||||
|
@import url('https://fonts.googleapis.com/css?family=Noticia+Text:400,400i,700');
|
||||||
|
@import url('https://fonts.googleapis.com/css?family=Fira+Sans:400,400i,500,500i,600,600i,700,700i');
|
||||||
|
|
||||||
|
:root,
|
||||||
|
.light:root {
|
||||||
|
--main-background: #FFFFFF;
|
||||||
|
|
||||||
|
--color: #333333;
|
||||||
|
--link-color: #2C94BD;
|
||||||
|
--anchor-hover: #555;
|
||||||
|
--anchor-color: #d5d5d5;
|
||||||
|
--xref-shadow: #cc6666;
|
||||||
|
--header-shadow: #ddd;
|
||||||
|
--by-name-version-color: #aaa;
|
||||||
|
--by-name-nav-link-color: #222;
|
||||||
|
--target-background: rgba(187, 239, 253, 0.3);
|
||||||
|
--target-shadow: rgba(187, 239, 253, 0.8);
|
||||||
|
--pre-border-color: #eee;
|
||||||
|
--code-background: #f6f8fa;
|
||||||
|
|
||||||
|
--li-code-background: #f6f8fa;
|
||||||
|
--li-code-color: #0d2b3e;
|
||||||
|
--toc-color: #1F2D3D;
|
||||||
|
--toc-before-color: #777;
|
||||||
|
--toc-background: #f6f8fa;
|
||||||
|
--toc-list-border: #ccc;
|
||||||
|
|
||||||
|
--spec-summary-border-color: #5c9cf5;
|
||||||
|
--spec-summary-background: var(--code-background);
|
||||||
|
--spec-summary-hover-background: #ebeff2;
|
||||||
|
--spec-details-after-background: rgba(0, 4, 15, 0.05);
|
||||||
|
--spec-details-after-shadow: rgba(204, 204, 204, 0.53);
|
||||||
|
}
|
||||||
|
|
||||||
|
.dark:root {
|
||||||
|
--main-background: #202020;
|
||||||
|
--code-background: #222;
|
||||||
|
--line-numbers-background: rgba(0, 0, 0, 0.125);
|
||||||
|
--navbar-background: #202020;
|
||||||
|
|
||||||
|
--color: #bebebe;
|
||||||
|
--dirname-color: #666;
|
||||||
|
--underline-color: #444;
|
||||||
|
--visited-color: #002800;
|
||||||
|
--visited-number-color: #252;
|
||||||
|
--unvisited-color: #380000;
|
||||||
|
--unvisited-number-color: #622;
|
||||||
|
--somevisited-color: #303000;
|
||||||
|
--highlight-color: #303e3f;
|
||||||
|
--line-number-color: rgba(230, 230, 230, 0.3);
|
||||||
|
--unvisited-margin-color: #622;
|
||||||
|
--border: #333;
|
||||||
|
--navbar-border: #333;
|
||||||
|
--code-color: #ccc;
|
||||||
|
|
||||||
|
--li-code-background: #373737;
|
||||||
|
--li-code-color: #999;
|
||||||
|
--toc-color: #777;
|
||||||
|
--toc-background: #252525;
|
||||||
|
|
||||||
|
--hljs-link: #999;
|
||||||
|
--hljs-keyword: #cda869;
|
||||||
|
--hljs-regexp: #f9ee98;
|
||||||
|
--hljs-title: #dcdcaa;
|
||||||
|
--hljs-type: #ac885b;
|
||||||
|
--hljs-meta: #82aaff;
|
||||||
|
--hljs-variable: #cf6a4c;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
:root {
|
||||||
|
--main-background: #202020;
|
||||||
|
--code-background: #333;
|
||||||
|
--line-numbers-background: rgba(0, 0, 0, 0.125);
|
||||||
|
--navbar-background: #202020;
|
||||||
|
|
||||||
|
--meter-unvisited-color: #622;
|
||||||
|
--meter-visited-color: #252;
|
||||||
|
--meter-separator-color: black;
|
||||||
|
|
||||||
|
--color: #bebebe;
|
||||||
|
--dirname-color: #666;
|
||||||
|
--underline-color: #444;
|
||||||
|
--visited-color: #002800;
|
||||||
|
--visited-number-color: #252;
|
||||||
|
--unvisited-color: #380000;
|
||||||
|
--unvisited-number-color: #622;
|
||||||
|
--somevisited-color: #303000;
|
||||||
|
--highlight-color: #303e3f;
|
||||||
|
--line-number-color: rgba(230, 230, 230, 0.3);
|
||||||
|
--unvisited-margin-color: #622;
|
||||||
|
--border: #333;
|
||||||
|
--navbar-border: #333;
|
||||||
|
--code-color: #ccc;
|
||||||
|
--by-name-nav-link-color: var(--color);
|
||||||
|
|
||||||
|
--li-code-background: #373737;
|
||||||
|
--li-code-color: #999;
|
||||||
|
--toc-color: #777;
|
||||||
|
--toc-before-color: #777;
|
||||||
|
--toc-background: #252525;
|
||||||
|
--toc-list-border: #ccc;
|
||||||
|
--spec-summary-hover-background: #ebeff2;
|
||||||
|
--spec-details-after-background: rgba(0, 4, 15, 0.05);
|
||||||
|
--spec-details-after-shadow: rgba(204, 204, 204, 0.53);
|
||||||
|
|
||||||
|
--hljs-link: #999;
|
||||||
|
--hljs-keyword: #cda869;
|
||||||
|
--hljs-regexp: #f9ee98;
|
||||||
|
--hljs-title: #dcdcaa;
|
||||||
|
--hljs-type: #ac885b;
|
||||||
|
--hljs-meta: #82aaff;
|
||||||
|
--hljs-variable: #cf6a4c;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Reset a few things. */
|
||||||
|
|
||||||
|
html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, article, aside, canvas, details, embed, figure, figcaption, footer, header, hgroup, menu, nav, output, ruby, section, summary, time, mark, audio, video {
|
||||||
|
padding: 0;
|
||||||
|
border: 0;
|
||||||
|
font: inherit;
|
||||||
|
vertical-align: baseline;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
*, *:before, *:after {
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
html {
|
||||||
|
font-size: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
text-align: left;
|
||||||
|
background: #FFFFFF;
|
||||||
|
color: var(--color);
|
||||||
|
background-color: var(--main-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
body {
|
||||||
|
max-width: 100ex;
|
||||||
|
margin-left: calc(10vw + 20ex);
|
||||||
|
margin-right: 4ex;
|
||||||
|
margin-top: 20px;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
font-family: "Noticia Text", Georgia, serif;
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
header {
|
||||||
|
margin-bottom: 30px;
|
||||||
|
}
|
||||||
|
|
||||||
|
nav {
|
||||||
|
font-family: "Fira Sans", Helvetica, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Basic markup elements */
|
||||||
|
|
||||||
|
b, strong {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
i {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
em, i em.odd{
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
em.odd, i em {
|
||||||
|
font-style: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup {
|
||||||
|
vertical-align: super;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub {
|
||||||
|
vertical-align: sub;
|
||||||
|
}
|
||||||
|
|
||||||
|
sup, sub {
|
||||||
|
font-size: 12px;
|
||||||
|
line-height: 0;
|
||||||
|
margin-left: 0.2ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
ul, ol {
|
||||||
|
list-style-position: outside
|
||||||
|
}
|
||||||
|
|
||||||
|
ul>li {
|
||||||
|
margin-left: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
ol>li {
|
||||||
|
margin-left: 27.2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
li>*:first-child {
|
||||||
|
margin-top: 0
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text alignements, this should be forbidden. */
|
||||||
|
|
||||||
|
.left {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.right {
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.center {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Links and anchors */
|
||||||
|
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--link-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover {
|
||||||
|
box-shadow: 0 1px 0 0 var(--link-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Linked highlight */
|
||||||
|
*:target {
|
||||||
|
background-color: var(--target-background) !important;
|
||||||
|
box-shadow: 0 0px 0 1px var(--target-shadow) !important;
|
||||||
|
border-radius: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
*:hover > a.anchor {
|
||||||
|
visibility: visible;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.anchor:before {
|
||||||
|
content: "#";
|
||||||
|
}
|
||||||
|
|
||||||
|
a.anchor:hover {
|
||||||
|
box-shadow: none;
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--anchor-hover);
|
||||||
|
}
|
||||||
|
|
||||||
|
a.anchor {
|
||||||
|
visibility: hidden;
|
||||||
|
position: absolute;
|
||||||
|
/* top: 0px; */
|
||||||
|
/* margin-left: -3ex; */
|
||||||
|
margin-left: -1.3em;
|
||||||
|
font-weight: normal;
|
||||||
|
font-style: normal;
|
||||||
|
padding-right: 0.4em;
|
||||||
|
padding-left: 0.4em;
|
||||||
|
/* To remain selectable */
|
||||||
|
color: var(--anchor-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec > a.anchor {
|
||||||
|
margin-left: -2.3em;
|
||||||
|
padding-right: 0.9em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.xref-unresolved {
|
||||||
|
color: #2C94BD;
|
||||||
|
}
|
||||||
|
.xref-unresolved:hover {
|
||||||
|
box-shadow: 0 1px 0 0 var(--xref-shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Section and document divisions.
|
||||||
|
Until at least 4.03 many of the modules of the stdlib start at .h7,
|
||||||
|
we restart the sequence there like h2 */
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6, .h7, .h8, .h9, .h10 {
|
||||||
|
font-family: "Fira Sans", Helvetica, Arial, sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
padding-top: 0.1em;
|
||||||
|
line-height: 1.2;
|
||||||
|
overflow-wrap: break-word;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 2.441em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 1.953em;
|
||||||
|
box-shadow: 0 1px 0 0 var(--header-shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 1.563em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1.25em;
|
||||||
|
}
|
||||||
|
|
||||||
|
small, .font_small {
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 code, h1 tt {
|
||||||
|
font-size: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h2 code, h2 tt {
|
||||||
|
font-size: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 code, h3 tt {
|
||||||
|
font-size: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 code, h3 tt {
|
||||||
|
font-size: inherit;
|
||||||
|
font-weight: inherit;
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 1.12em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Comment delimiters, hidden but accessible to screen readers and
|
||||||
|
selected for copy/pasting */
|
||||||
|
|
||||||
|
/* Taken from bootstrap */
|
||||||
|
/* See also https://stackoverflow.com/a/27769435/4220738 */
|
||||||
|
.comment-delim {
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
height: 1px;
|
||||||
|
padding: 0;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
clip: rect(0, 0, 0, 0);
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Preformatted and code */
|
||||||
|
|
||||||
|
tt, code, pre {
|
||||||
|
font-family: "Fira Mono", courier;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre {
|
||||||
|
padding: 0.1em;
|
||||||
|
border: 1px solid var(--pre-border-color);
|
||||||
|
border-radius: 5px;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
p code,
|
||||||
|
li code {
|
||||||
|
background-color: var(--li-code-background);
|
||||||
|
color: var(--li-code-color);
|
||||||
|
border-radius: 3px;
|
||||||
|
padding: 0 0.3ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
p a > code {
|
||||||
|
color: var(--link-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
code {
|
||||||
|
white-space: pre-wrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks (e.g. Examples) */
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
font-size: 0.893rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code lexemes */
|
||||||
|
|
||||||
|
.keyword {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.arrow { white-space: nowrap }
|
||||||
|
|
||||||
|
/* Module member specification */
|
||||||
|
|
||||||
|
.spec {
|
||||||
|
background-color: var(--spec-summary-background);
|
||||||
|
border-radius: 3px;
|
||||||
|
border-left: 4px solid var(--spec-summary-border-color);
|
||||||
|
border-right: 5px solid transparent;
|
||||||
|
padding: 0.35em 0.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
li:not(:last-child) > .def-doc {
|
||||||
|
margin-bottom: 15px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Spacing between items */
|
||||||
|
div.odoc-spec,.odoc-include {
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec.type .variant p, .spec.type .record p {
|
||||||
|
margin: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec.type .variant, .spec.type .record {
|
||||||
|
margin-left: 2ch;
|
||||||
|
list-style: none;
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
row-gap: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec.type .record > code, .spec.type .variant > code {
|
||||||
|
min-width: 40%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec.type > ol {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spec.type .record > .def-doc, .spec.type .variant > .def-doc {
|
||||||
|
min-width:50%;
|
||||||
|
padding: 0.25em 0.5em;
|
||||||
|
margin-left: 10%;
|
||||||
|
border-radius: 3px;
|
||||||
|
flex-grow:1;
|
||||||
|
background: var(--main-background);
|
||||||
|
box-shadow: 2px 2px 4px lightgrey;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.def {
|
||||||
|
margin-top: 0;
|
||||||
|
text-indent: -2ex;
|
||||||
|
padding-left: 2ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
div.def-doc>*:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Collapsible inlined include and module */
|
||||||
|
|
||||||
|
.odoc-include details {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-include.shadowed-include {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-include details:after {
|
||||||
|
z-index: -100;
|
||||||
|
display: block;
|
||||||
|
content: " ";
|
||||||
|
position: absolute;
|
||||||
|
border-radius: 0 1ex 1ex 0;
|
||||||
|
right: -20px;
|
||||||
|
top: 1px;
|
||||||
|
bottom: 1px;
|
||||||
|
width: 15px;
|
||||||
|
background: var(--spec-details-after-background, rgba(0, 4, 15, 0.05));
|
||||||
|
box-shadow: 0 0px 0 1px var(--spec-details-after-shadow, rgba(204, 204, 204, 0.53));
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-include summary {
|
||||||
|
position: relative;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
cursor: pointer;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-include summary:hover {
|
||||||
|
background-color: var(--spec-summary-hover-background);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* FIXME: Does not work in Firefox. */
|
||||||
|
.odoc-include summary::-webkit-details-marker {
|
||||||
|
color: #888;
|
||||||
|
transform: scaleX(-1);
|
||||||
|
position: absolute;
|
||||||
|
top: calc(50% - 5px);
|
||||||
|
height: 11px;
|
||||||
|
right: -29px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Records and variants FIXME */
|
||||||
|
|
||||||
|
div.def table {
|
||||||
|
text-indent: 0em;
|
||||||
|
padding: 0;
|
||||||
|
margin-left: -2ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.def {
|
||||||
|
padding-left: 2ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
td.def-doc *:first-child {
|
||||||
|
margin-top: 0em;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Lists of @tags */
|
||||||
|
|
||||||
|
.at-tags { list-style-type: none; margin-left: -3ex; }
|
||||||
|
.at-tags li { padding-left: 3ex; text-indent: -3ex; }
|
||||||
|
.at-tags .at-tag { text-transform: capitalize }
|
||||||
|
|
||||||
|
/* Lists of modules */
|
||||||
|
|
||||||
|
.modules { list-style-type: none; margin-left: -3ex; }
|
||||||
|
.modules li { padding-left: 3ex; text-indent: -3ex; margin-top: 5px }
|
||||||
|
.modules .synopsis { padding-left: 1ch; }
|
||||||
|
|
||||||
|
/* Odig package index */
|
||||||
|
|
||||||
|
.packages { list-style-type: none; margin-left: -3ex; }
|
||||||
|
.packages li { padding-left: 3ex; text-indent: -3ex }
|
||||||
|
.packages li a.anchor { padding-right: 0.5ch; padding-left: 3ch; }
|
||||||
|
.packages .version { font-size: 10px; color: var(--by-name-version-color); }
|
||||||
|
.packages .synopsis { padding-left: 1ch }
|
||||||
|
|
||||||
|
.by-name nav a {
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 18px;
|
||||||
|
margin-right: 1ex;
|
||||||
|
color: var(--by-name-nav-link-color,);
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.by-tag nav a {
|
||||||
|
margin-right: 1ex;
|
||||||
|
color: var(--by-name-nav-link-color);
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.by-tag ol { list-style-type: none; }
|
||||||
|
.by-tag ol.tags li { margin-left: 1ch; display: inline-block }
|
||||||
|
.by-tag td:first-child { text-transform: uppercase; }
|
||||||
|
|
||||||
|
/* Odig package page */
|
||||||
|
|
||||||
|
.package nav {
|
||||||
|
display: inline;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.package .version {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.package.info {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.package.info td:first-child {
|
||||||
|
font-style: italic;
|
||||||
|
padding-right: 2ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.package.info ul {
|
||||||
|
list-style-type: none;
|
||||||
|
display: inline;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.package.info li {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0;
|
||||||
|
margin-right: 1ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
#info-authors li, #info-maintainers li {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Sidebar and TOC */
|
||||||
|
|
||||||
|
.odoc-toc:before {
|
||||||
|
display: block;
|
||||||
|
content: "Contents";
|
||||||
|
text-transform: uppercase;
|
||||||
|
font-size: 1em;
|
||||||
|
margin: 1.414em 0 0.5em;
|
||||||
|
font-weight: 500;
|
||||||
|
color: var(--toc-before-color);
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-toc {
|
||||||
|
position: fixed;
|
||||||
|
top: 0px;
|
||||||
|
bottom: 0px;
|
||||||
|
left: 0px;
|
||||||
|
max-width: 30ex;
|
||||||
|
min-width: 26ex;
|
||||||
|
width: 20%;
|
||||||
|
background: var(--toc-background);
|
||||||
|
overflow: auto;
|
||||||
|
color: var(--toc-color);
|
||||||
|
padding-left: 2ex;
|
||||||
|
padding-right: 2ex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-toc ul li a {
|
||||||
|
font-family: "Fira Sans", sans-serif;
|
||||||
|
font-size: 0.95em;
|
||||||
|
color: var(--color);
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.6em;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-toc ul li a:hover {
|
||||||
|
box-shadow: none;
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* First level titles */
|
||||||
|
|
||||||
|
.odoc-toc>ul>li>a {
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-toc li ul {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-toc ul {
|
||||||
|
list-style-type: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-toc ul li {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.odoc-toc>ul>li {
|
||||||
|
margin-bottom: 0.3em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.odoc-toc ul li li {
|
||||||
|
border-left: 1px solid var(--toc-list-border);
|
||||||
|
margin-left: 5px;
|
||||||
|
padding-left: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Mobile adjustements. */
|
||||||
|
|
||||||
|
@media only screen and (max-width: 95ex) {
|
||||||
|
body.odoc {
|
||||||
|
margin: 2em;
|
||||||
|
}
|
||||||
|
.odoc-toc {
|
||||||
|
position: static;
|
||||||
|
width: auto;
|
||||||
|
min-width: unset;
|
||||||
|
max-width: unset;
|
||||||
|
border: none;
|
||||||
|
padding: 0.2em 1em;
|
||||||
|
border-radius: 5px;
|
||||||
|
margin-bottom: 2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Print adjustements. */
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
body {
|
||||||
|
color: black;
|
||||||
|
background: white;
|
||||||
|
}
|
||||||
|
body nav:first-child {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Syntax highlighting (based on github-gist) */
|
||||||
|
|
||||||
|
.hljs {
|
||||||
|
display: block;
|
||||||
|
background: var(--code-background);
|
||||||
|
padding: 0.5em;
|
||||||
|
color: var(--color);
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-comment,
|
||||||
|
.hljs-meta {
|
||||||
|
color: #969896;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-string,
|
||||||
|
.hljs-variable,
|
||||||
|
.hljs-template-variable,
|
||||||
|
.hljs-strong,
|
||||||
|
.hljs-emphasis,
|
||||||
|
.hljs-quote {
|
||||||
|
color: #df5000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-keyword,
|
||||||
|
.hljs-selector-tag {
|
||||||
|
color: #a71d5d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-type,
|
||||||
|
.hljs-class .hljs-title {
|
||||||
|
color: #458;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-literal,
|
||||||
|
.hljs-symbol,
|
||||||
|
.hljs-bullet,
|
||||||
|
.hljs-attribute {
|
||||||
|
color: #0086b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-section,
|
||||||
|
.hljs-name {
|
||||||
|
color: #63a35c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-tag {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-attr,
|
||||||
|
.hljs-selector-id,
|
||||||
|
.hljs-selector-class,
|
||||||
|
.hljs-selector-attr,
|
||||||
|
.hljs-selector-pseudo {
|
||||||
|
color: #795da3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-addition {
|
||||||
|
color: #55a532;
|
||||||
|
background-color: #eaffea;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-deletion {
|
||||||
|
color: #bd2c00;
|
||||||
|
background-color: #ffecec;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-link {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*---------------------------------------------------------------------------
|
||||||
|
Copyright (c) 2016 The odoc contributors
|
||||||
|
|
||||||
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
copyright notice and this permission notice appear in all copies.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||||
|
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||||
|
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||||
|
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||||
|
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||||
|
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||||
|
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||||
|
---------------------------------------------------------------------------*/
|
||||||
98
dev/tiny_httpd/Tiny_httpd/index.html
Normal file
98
dev/tiny_httpd/Tiny_httpd/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_atomic_/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_atomic_/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tiny_httpd_atomic_ (tiny_httpd.Tiny_httpd_atomic_)</title><link rel="stylesheet" href="../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">tiny_httpd</a> » Tiny_httpd_atomic_</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_atomic_</span></code></h1></header><div class="odoc-content"><div class="odoc-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <span class="keyword">struct</span> <span class="keyword">include</span> <span class="xref-unresolved">Stdlib</span>.Atomic <span class="keyword">end</span></span></code></summary><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>!'a t</span></span><span> = <span><span class="type-var">'a</span> <span class="xref-unresolved">Stdlib__Atomic</span>.t</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-make"><a href="#val-make" class="anchor"></a><code><span><span class="keyword">val</span> make : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-exchange"><a href="#val-exchange" class="anchor"></a><code><span><span class="keyword">val</span> exchange : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-compare_and_set"><a href="#val-compare_and_set" class="anchor"></a><code><span><span class="keyword">val</span> compare_and_set : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fetch_and_add"><a href="#val-fetch_and_add" class="anchor"></a><code><span><span class="keyword">val</span> fetch_and_add : <span><span>int <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-incr"><a href="#val-incr" class="anchor"></a><code><span><span class="keyword">val</span> incr : <span><span>int <a href="#type-t">t</a></span> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-decr"><a href="#val-decr" class="anchor"></a><code><span><span class="keyword">val</span> decr : <span><span>int <a href="#type-t">t</a></span> <span class="arrow">-></span></span> unit</span></code></div></div></details></div></div></body></html>
|
||||||
2
dev/tiny_httpd/Tiny_httpd_buf/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_buf/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_dir/Embedded_fs/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_dir/Embedded_fs/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Embedded_fs (tiny_httpd.Tiny_httpd_dir.Embedded_fs)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_dir</a> » Embedded_fs</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_dir.Embedded_fs</span></code></h1><p>An embedded file system, as a list of files with (relative) paths. This is useful in combination with the "tiny-httpd-mkfs" tool, which embeds the files it's given into a OCaml module.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div><div class="spec-doc"><p>The pseudo-filesystem</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>?mtime:float <span class="arrow">-></span></span> <span>unit <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_file"><a href="#val-add_file" class="anchor"></a><code><span><span class="keyword">val</span> add_file : <span>?mtime:float <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>path:string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Add file to the virtual file system.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Invalid_argument</span> <p>if the path contains '..' or if it tries to make a directory out of an existing path that is a file.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_vfs"><a href="#val-to_vfs" class="anchor"></a><code><span><span class="keyword">val</span> to_vfs : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>(<span class="keyword">module</span> <a href="../module-type-VFS/index.html">VFS</a>)</span></span></code></div></div></div></body></html>
|
||||||
25
dev/tiny_httpd/Tiny_httpd_dir/index.html
Normal file
25
dev/tiny_httpd/Tiny_httpd_dir/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_dir/module-type-VFS/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_dir/module-type-VFS/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>VFS (tiny_httpd.Tiny_httpd_dir.VFS)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_dir</a> » VFS</nav><header class="odoc-preamble"><h1>Module type <code><span>Tiny_httpd_dir.VFS</span></code></h1><p>Virtual file system.</p><p>This is used to emulate a file system from pure OCaml functions and data, e.g. for resources bundled inside the web server.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-descr"><a href="#val-descr" class="anchor"></a><code><span><span class="keyword">val</span> descr : string</span></code></div><div class="spec-doc"><p>Description of the VFS</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_directory"><a href="#val-is_directory" class="anchor"></a><code><span><span class="keyword">val</span> is_directory : <span>string <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-contains"><a href="#val-contains" class="anchor"></a><code><span><span class="keyword">val</span> contains : <span>string <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p><code>file_exists vfs path</code> returns <code>true</code> if <code>path</code> points to a file or directory inside <code>vfs</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-list_dir"><a href="#val-list_dir" class="anchor"></a><code><span><span class="keyword">val</span> list_dir : <span>string <span class="arrow">-></span></span> <span>string array</span></span></code></div><div class="spec-doc"><p>List directory. This only returns basenames, the files need to be put in the directory path using <code>Filename</code>.concat.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-delete"><a href="#val-delete" class="anchor"></a><code><span><span class="keyword">val</span> delete : <span>string <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Delete path</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>string <span class="arrow">-></span></span> <span>(<span>bytes <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> unit)</span> * <span>(<span>unit <span class="arrow">-></span></span> unit)</span></span></code></div><div class="spec-doc"><p>Create a file and obtain a pair <code>write, close</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-read_file_content"><a href="#val-read_file_content" class="anchor"></a><code><span><span class="keyword">val</span> read_file_content : <span>string <span class="arrow">-></span></span> <a href="../../Tiny_httpd_stream/index.html#type-t">Tiny_httpd_stream.t</a></span></code></div><div class="spec-doc"><p>Read content of a file</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-file_size"><a href="#val-file_size" class="anchor"></a><code><span><span class="keyword">val</span> file_size : <span>string <span class="arrow">-></span></span> <span>int option</span></span></code></div><div class="spec-doc"><p>File size, e.g. using "stat"</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-file_mtime"><a href="#val-file_mtime" class="anchor"></a><code><span><span class="keyword">val</span> file_mtime : <span>string <span class="arrow">-></span></span> <span>float option</span></span></code></div><div class="spec-doc"><p>File modification time, e.g. using "stat"</p></div></div></div></body></html>
|
||||||
4
dev/tiny_httpd/Tiny_httpd_html/index.html
Normal file
4
dev/tiny_httpd/Tiny_httpd_html/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_html_/A/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_html_/A/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_html_/Out/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_html_/Out/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Out (tiny_httpd.Tiny_httpd_html_.Out)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_html_</a> » Out</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_html_.Out</span></code></h1><p>Output for HTML combinators.</p><p>This output type is used to produce a string reasonably efficiently from a tree of combinators.</p><p><b>NOTE</b>: this is experimental and an unstable API.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.12</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_of_buffer"><a href="#val-create_of_buffer" class="anchor"></a><code><span><span class="keyword">val</span> create_of_buffer : <span><span class="xref-unresolved">Stdlib</span>.Buffer.t <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create_of_out"><a href="#val-create_of_out" class="anchor"></a><code><span><span class="keyword">val</span> create_of_out : <span><a href="../../Tiny_httpd_io/Output/index.html#type-t">Tiny_httpd_io.Output.t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-flush"><a href="#val-flush" class="anchor"></a><code><span><span class="keyword">val</span> flush : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_char"><a href="#val-add_char" class="anchor"></a><code><span><span class="keyword">val</span> add_char : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>char <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_string"><a href="#val-add_string" class="anchor"></a><code><span><span class="keyword">val</span> add_string : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_format_nl"><a href="#val-add_format_nl" class="anchor"></a><code><span><span class="keyword">val</span> add_format_nl : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_no_format_nl"><a href="#val-with_no_format_nl" class="anchor"></a><code><span><span class="keyword">val</span> with_no_format_nl : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span><span>(<span>unit <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div></div></div></body></html>
|
||||||
4
dev/tiny_httpd/Tiny_httpd_html_/index.html
Normal file
4
dev/tiny_httpd/Tiny_httpd_html_/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_io/Input/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_io/Input/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Input (tiny_httpd.Tiny_httpd_io.Input)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_io</a> » Input</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_io.Input</span></code></h1><p>Input channel (byte source)</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span><span>{</span></code><ol><li id="type-t.input" class="def record field anchored"><a href="#type-t.input" class="anchor"></a><code><span>input : <span>bytes <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Read into the slice. Returns <code>0</code> only if the channel is closed.</p><span class="comment-delim">*)</span></div></li><li id="type-t.close" class="def record field anchored"><a href="#type-t.close" class="anchor"></a><code><span>close : <span>unit <span class="arrow">-></span></span> unit;</span></code><div class="def-doc"><span class="comment-delim">(*</span><p>Close the input. Must be idempotent.</p><span class="comment-delim">*)</span></div></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>An input channel, i.e an incoming stream of bytes.</p><p>This can be a <code>string</code>, an <code>int_channel</code>, an <code>Unix.file_descr</code>, a decompression wrapper around another input channel, etc.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_in_channel"><a href="#val-of_in_channel" class="anchor"></a><code><span><span class="keyword">val</span> of_in_channel : <span>?close_noerr:bool <span class="arrow">-></span></span> <span><span class="xref-unresolved">Stdlib</span>.in_channel <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_unix_fd"><a href="#val-of_unix_fd" class="anchor"></a><code><span><span class="keyword">val</span> of_unix_fd : <span>?close_noerr:bool <span class="arrow">-></span></span> <span><span class="xref-unresolved">Unix</span>.file_descr <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-input"><a href="#val-input" class="anchor"></a><code><span><span class="keyword">val</span> input : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>bytes <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Read into the given slice.</p><ul class="at-tags"><li class="returns"><span class="at-tag">returns</span> <p>the number of bytes read, <code>0</code> means end of input.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-close"><a href="#val-close" class="anchor"></a><code><span><span class="keyword">val</span> close : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Close the channel.</p></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd/Tiny_httpd_io/Output/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_io/Output/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_io/TCP_server/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_io/TCP_server/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_io/Writer/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_io/Writer/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Writer (tiny_httpd.Tiny_httpd_io.Writer)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_io</a> » Writer</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_io.Writer</span></code></h1><p>A writer abstraction.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span><span>{</span></code><ol><li id="type-t.write" class="def record field anchored"><a href="#type-t.write" class="anchor"></a><code><span>write : <span><a href="../Output/index.html#type-t">Output.t</a> <span class="arrow">-></span></span> unit;</span></code></li></ol><code><span>}</span></code></div><div class="spec-doc"><p>Writer.</p><p>A writer is a push-based stream of bytes. Give it an output channel and it will write the bytes in it.</p><p>This is useful for responses: an http endpoint can return a writer as its response's body, and output into it as if it were a regular <code>out_channel</code>, including controlling calls to <code>flush</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-make"><a href="#val-make" class="anchor"></a><code><span><span class="keyword">val</span> make : <span>write:<span>(<span><a href="../Output/index.html#type-t">Output.t</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span>unit <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-write"><a href="#val-write" class="anchor"></a><code><span><span class="keyword">val</span> write : <span><a href="../Output/index.html#type-t">Output.t</a> <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Write into the channel.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Empty writer, will output 0 bytes.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_string"><a href="#val-of_string" class="anchor"></a><code><span><span class="keyword">val</span> of_string : <span>string <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>A writer that just emits the bytes from the given string.</p></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd/Tiny_httpd_io/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_io/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tiny_httpd_io (tiny_httpd.Tiny_httpd_io)</title><link rel="stylesheet" href="../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">tiny_httpd</a> » Tiny_httpd_io</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_io</span></code></h1><p>IO abstraction.</p><p>We abstract IO so we can support classic unix blocking IOs with threads, and modern async IO with Eio.</p><p><b>NOTE</b>: experimental.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec module anchored" id="module-Buf"><a href="#module-Buf" class="anchor"></a><code><span><span class="keyword">module</span> Buf</span><span> = <a href="../Tiny_httpd_buf/index.html">Tiny_httpd_buf</a></span></code></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Input"><a href="#module-Input" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Input/index.html">Input</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Input channel (byte source)</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Output"><a href="#module-Output" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Output/index.html">Output</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>Output channel (byte sink)</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-Writer"><a href="#module-Writer" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Writer/index.html">Writer</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A writer abstraction.</p></div></div><div class="odoc-spec"><div class="spec module anchored" id="module-TCP_server"><a href="#module-TCP_server" class="anchor"></a><code><span><span class="keyword">module</span> <a href="TCP_server/index.html">TCP_server</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div><div class="spec-doc"><p>A TCP server abstraction.</p></div></div></div></body></html>
|
||||||
7
dev/tiny_httpd/Tiny_httpd_pool/index.html
Normal file
7
dev/tiny_httpd/Tiny_httpd_pool/index.html
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tiny_httpd_pool (tiny_httpd.Tiny_httpd_pool)</title><link rel="stylesheet" href="../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">tiny_httpd</a> » Tiny_httpd_pool</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_pool</span></code></h1><p>Resource pool.</p><p>This pool is used for buffers. It can be used for other resources but do note that it assumes resources are still reasonably cheap to produce and discard, and will never block waiting for a resource — it's not a good pool for DB connections.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.14.</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a t</span></span></code></div><div class="spec-doc"><p>Pool of values of type <code>'a</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create :
|
||||||
|
<span>?clear:<span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span>
|
||||||
|
<span>mk_item:<span>(<span>unit <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span>
|
||||||
|
<span>?max_size:int <span class="arrow">-></span></span>
|
||||||
|
<span>unit <span class="arrow">-></span></span>
|
||||||
|
<span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Create a new pool.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">mk_item</span> <p>produce a new item in case the pool is empty</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">max_size</span> <p>maximum number of item in the pool before we start dropping resources on the floor. This controls resource consumption.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">clear</span> <p>a function called on items before recycling them.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-with_resource"><a href="#val-with_resource" class="anchor"></a><code><span><span class="keyword">val</span> with_resource : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>with_resource pool f</code> runs <code>f x</code> with <code>x</code> a resource; when <code>f</code> fails or returns, <code>x</code> is returned to the pool for future reuse.</p></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd/Tiny_httpd_server/Headers/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_server/Headers/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Headers (tiny_httpd.Tiny_httpd_server.Headers)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_server</a> » Headers</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_server.Headers</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = <span><span>(string * string)</span> list</span></span></code></div><div class="spec-doc"><p>The header files of a request or response.</p><p>Neither the key nor the value can contain <code>'\r'</code> or <code>'\n'</code>. See https://tools.ietf.org/html/rfc7230#section-3.2</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Empty list of headers.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.5</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span>?f:<span>(<span>string <span class="arrow">-></span></span> string)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <span>string option</span></span></code></div><div class="spec-doc"><p><code>get k headers</code> looks for the header field with key <code>k</code>.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">f</span> <p>if provided, will transform the value before it is returned.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span>string <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p><code>set k v headers</code> sets the key <code>k</code> to value <code>v</code>. It erases any previous entry for <code>k</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-remove"><a href="#val-remove" class="anchor"></a><code><span><span class="keyword">val</span> remove : <span>string <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Remove the key from the headers, if present.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-contains"><a href="#val-contains" class="anchor"></a><code><span><span class="keyword">val</span> contains : <span>string <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>Is there a header with the given key?</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><span class="xref-unresolved">Stdlib</span>.Format.formatter <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Pretty print the headers.</p></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd/Tiny_httpd_server/Meth/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_server/Meth/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Meth (tiny_httpd.Tiny_httpd_server.Meth)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_server</a> » Meth</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_server.Meth</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = </span><span>[ </span></code><ol><li id="type-t.GET" class="def constructor anchored"><a href="#type-t.GET" class="anchor"></a><code><span>| </span></code><code><span>`GET</span></code></li><li id="type-t.PUT" class="def constructor anchored"><a href="#type-t.PUT" class="anchor"></a><code><span>| </span></code><code><span>`PUT</span></code></li><li id="type-t.POST" class="def constructor anchored"><a href="#type-t.POST" class="anchor"></a><code><span>| </span></code><code><span>`POST</span></code></li><li id="type-t.HEAD" class="def constructor anchored"><a href="#type-t.HEAD" class="anchor"></a><code><span>| </span></code><code><span>`HEAD</span></code></li><li id="type-t.DELETE" class="def constructor anchored"><a href="#type-t.DELETE" class="anchor"></a><code><span>| </span></code><code><span>`DELETE</span></code></li><li id="type-t.OPTIONS" class="def constructor anchored"><a href="#type-t.OPTIONS" class="anchor"></a><code><span>| </span></code><code><span>`OPTIONS</span></code></li></ol><code><span> ]</span></code></div><div class="spec-doc"><p>A HTTP method. For now we only handle a subset of these.</p><p>See https://tools.ietf.org/html/rfc7231#section-4</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><span class="xref-unresolved">Stdlib</span>.Format.formatter <span class="arrow">-></span></span> <span><a href="#type-t">t</a> <span class="arrow">-></span></span> unit</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_string"><a href="#val-to_string" class="anchor"></a><code><span><span class="keyword">val</span> to_string : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> string</span></code></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd/Tiny_httpd_server/Middleware/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_server/Middleware/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Middleware (tiny_httpd.Tiny_httpd_server.Middleware)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_server</a> » Middleware</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_server.Middleware</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-handler"><a href="#type-handler" class="anchor"></a><code><span><span class="keyword">type</span> handler</span><span> = <span><span><a href="../index.html#type-byte_stream">byte_stream</a> <a href="../Request/index.html#type-t">Request.t</a></span> <span class="arrow">-></span></span> <span>resp:<span>(<span><a href="../Response/index.html#type-t">Response.t</a> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Handlers are functions returning a response to a request. The response can be delayed, hence the use of a continuation as the <code>resp</code> parameter.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = <span><a href="#type-handler">handler</a> <span class="arrow">-></span></span> <a href="#type-handler">handler</a></span></code></div><div class="spec-doc"><p>A middleware is a handler transformation.</p><p>It takes the existing handler <code>h</code>, and returns a new one which, given a query, modify it or log it before passing it to <code>h</code>, or fail. It can also log or modify or drop the response.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-nil"><a href="#val-nil" class="anchor"></a><code><span><span class="keyword">val</span> nil : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>Trivial middleware that does nothing.</p></div></div></div></body></html>
|
||||||
6
dev/tiny_httpd/Tiny_httpd_server/Request/index.html
Normal file
6
dev/tiny_httpd/Tiny_httpd_server/Request/index.html
Normal file
File diff suppressed because one or more lines are too long
26
dev/tiny_httpd/Tiny_httpd_server/Response/index.html
Normal file
26
dev/tiny_httpd/Tiny_httpd_server/Response/index.html
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Response_code (tiny_httpd.Tiny_httpd_server.Response_code)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_server</a> » Response_code</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_server.Response_code</span></code></h1></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> t</span><span> = int</span></code></div><div class="spec-doc"><p>A standard HTTP code.</p><p>https://tools.ietf.org/html/rfc7231#section-6</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-ok"><a href="#val-ok" class="anchor"></a><code><span><span class="keyword">val</span> ok : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>The code <code>200</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-not_found"><a href="#val-not_found" class="anchor"></a><code><span><span class="keyword">val</span> not_found : <a href="#type-t">t</a></span></code></div><div class="spec-doc"><p>The code <code>404</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-descr"><a href="#val-descr" class="anchor"></a><code><span><span class="keyword">val</span> descr : <span><a href="#type-t">t</a> <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>A description of some of the error codes. NOTE: this is not complete (yet).</p></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd/Tiny_httpd_server/Route/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_server/Route/index.html
Normal file
File diff suppressed because one or more lines are too long
48
dev/tiny_httpd/Tiny_httpd_server/index.html
Normal file
48
dev/tiny_httpd/Tiny_httpd_server/index.html
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>IO_BACKEND (tiny_httpd.Tiny_httpd_server.IO_BACKEND)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_server</a> » IO_BACKEND</nav><header class="odoc-preamble"><h1>Module type <code><span>Tiny_httpd_server.IO_BACKEND</span></code></h1><p>A backend that provides IO operations, network operations, etc.</p><p>This is used to decouple tiny_httpd from the scheduler/IO library used to actually open a TCP server and talk to clients. The classic way is based on <code>Unix</code> and blocking IOs, but it's also possible to use an OCaml 5 library using effects and non blocking IOs.</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-init_addr"><a href="#val-init_addr" class="anchor"></a><code><span><span class="keyword">val</span> init_addr : <span>unit <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Initial TCP address</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-init_port"><a href="#val-init_port" class="anchor"></a><code><span><span class="keyword">val</span> init_port : <span>unit <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Initial port</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_time_s"><a href="#val-get_time_s" class="anchor"></a><code><span><span class="keyword">val</span> get_time_s : <span>unit <span class="arrow">-></span></span> float</span></code></div><div class="spec-doc"><p>Obtain the current timestamp in seconds.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-tcp_server"><a href="#val-tcp_server" class="anchor"></a><code><span><span class="keyword">val</span> tcp_server : <span>unit <span class="arrow">-></span></span> <a href="../../Tiny_httpd_io/TCP_server/index.html#type-builder">Tiny_httpd_io.TCP_server.builder</a></span></code></div><div class="spec-doc"><p>TCP server builder, to create servers that can listen on a port and handle clients.</p></div></div></div></body></html>
|
||||||
|
|
@ -0,0 +1,8 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>SERVER_SENT_GENERATOR (tiny_httpd.Tiny_httpd_server.SERVER_SENT_GENERATOR)</title><link rel="stylesheet" href="../../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">tiny_httpd</a> » <a href="../index.html">Tiny_httpd_server</a> » SERVER_SENT_GENERATOR</nav><header class="odoc-preamble"><h1>Module type <code><span>Tiny_httpd_server.SERVER_SENT_GENERATOR</span></code></h1><p>A server-side function to generate of Server-sent events.</p><p>See <a href="https://html.spec.whatwg.org/multipage/server-sent-events.html">the w3c page</a> and <a href="https://jvns.ca/blog/2021/01/12/day-36--server-sent-events-are-cool--and-a-fun-bug/">this blog post</a>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.9</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-set_headers"><a href="#val-set_headers" class="anchor"></a><code><span><span class="keyword">val</span> set_headers : <span><a href="../Headers/index.html#type-t">Headers.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Set headers of the response. This is not mandatory but if used at all, it must be called before any call to <a href="#val-send_event"><code>send_event</code></a> (once events are sent the response is already sent too).</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-send_event"><a href="#val-send_event" class="anchor"></a><code><span><span class="keyword">val</span> send_event :
|
||||||
|
<span>?event:string <span class="arrow">-></span></span>
|
||||||
|
<span>?id:string <span class="arrow">-></span></span>
|
||||||
|
<span>?retry:string <span class="arrow">-></span></span>
|
||||||
|
<span>data:string <span class="arrow">-></span></span>
|
||||||
|
<span>unit <span class="arrow">-></span></span>
|
||||||
|
unit</span></code></div><div class="spec-doc"><p>Send an event from the server. If data is a multiline string, it will be sent on separate "data:" lines.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-close"><a href="#val-close" class="anchor"></a><code><span><span class="keyword">val</span> close : <span>unit <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Close connection.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul></div></div></div></body></html>
|
||||||
29
dev/tiny_httpd/Tiny_httpd_stream/index.html
Normal file
29
dev/tiny_httpd/Tiny_httpd_stream/index.html
Normal file
File diff suppressed because one or more lines are too long
2
dev/tiny_httpd/Tiny_httpd_util/index.html
Normal file
2
dev/tiny_httpd/Tiny_httpd_util/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tiny_httpd_util (tiny_httpd.Tiny_httpd_util)</title><link rel="stylesheet" href="../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">tiny_httpd</a> » Tiny_httpd_util</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_util</span></code></h1></header><nav class="odoc-toc"><ul><li><a href="#some-utils-for-writing-web-servers">Some utils for writing web servers</a></li></ul></nav><div class="odoc-content"><h2 id="some-utils-for-writing-web-servers"><a href="#some-utils-for-writing-web-servers" class="anchor"></a>Some utils for writing web servers</h2><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.2</li></ul><div class="odoc-spec"><div class="spec value anchored" id="val-percent_encode"><a href="#val-percent_encode" class="anchor"></a><code><span><span class="keyword">val</span> percent_encode : <span>?skip:<span>(<span>char <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Encode the string into a valid path following https://tools.ietf.org/html/rfc3986#section-2.1</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">skip</span> <p>if provided, allows to preserve some characters, e.g. '/' in a path.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-percent_decode"><a href="#val-percent_decode" class="anchor"></a><code><span><span class="keyword">val</span> percent_decode : <span>string <span class="arrow">-></span></span> <span>string option</span></span></code></div><div class="spec-doc"><p>Inverse operation of <a href="#val-percent_encode"><code>percent_encode</code></a>. Can fail since some strings are not valid percent encodings.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-split_query"><a href="#val-split_query" class="anchor"></a><code><span><span class="keyword">val</span> split_query : <span>string <span class="arrow">-></span></span> string * string</span></code></div><div class="spec-doc"><p>Split a path between the path and the query</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.5</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-split_on_slash"><a href="#val-split_on_slash" class="anchor"></a><code><span><span class="keyword">val</span> split_on_slash : <span>string <span class="arrow">-></span></span> <span>string list</span></span></code></div><div class="spec-doc"><p>Split a string on <code>'/'</code>, remove the trailing <code>'/'</code> if any.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.6</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_non_query_path"><a href="#val-get_non_query_path" class="anchor"></a><code><span><span class="keyword">val</span> get_non_query_path : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>get the part of the path that is not the query parameters.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.5</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_query"><a href="#val-get_query" class="anchor"></a><code><span><span class="keyword">val</span> get_query : <span>string <span class="arrow">-></span></span> string</span></code></div><div class="spec-doc"><p>Obtain the query part of a path.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.4</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-parse_query"><a href="#val-parse_query" class="anchor"></a><code><span><span class="keyword">val</span> parse_query : <span>string <span class="arrow">-></span></span> <span><span>(<span><span>(string * string)</span> list</span>, string)</span> <span class="xref-unresolved">Stdlib</span>.result</span></span></code></div><div class="spec-doc"><p>Parse a query as a list of <code>'&'</code> or <code>';'</code> separated <code>key=value</code> pairs. The order might not be preserved.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.3</li></ul></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd/index.html
Normal file
2
dev/tiny_httpd/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (tiny_httpd.index)</title><link rel="stylesheet" href="../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – tiny_httpd</nav><header class="odoc-preamble"><h1 id="tiny_httpd-index"><a href="#tiny_httpd-index" class="anchor"></a>tiny_httpd index</h1></header><nav class="odoc-toc"><ul><li><a href="#library-tiny_httpd">Library tiny_httpd</a></li></ul></nav><div class="odoc-content"><h2 id="library-tiny_httpd"><a href="#library-tiny_httpd" class="anchor"></a>Library tiny_httpd</h2><p>This library exposes the following toplevel modules:</p><ul class="modules"><li><a href="Tiny_httpd/index.html"><code>Tiny_httpd</code></a> <span class="synopsis">Tiny Http Server</span></li><li><a href="Tiny_httpd_atomic_/index.html"><code>Tiny_httpd_atomic_</code></a> </li><li><a href="Tiny_httpd_buf/index.html"><code>Tiny_httpd_buf</code></a> <span class="synopsis">Simple buffer.</span></li><li><a href="Tiny_httpd_dir/index.html"><code>Tiny_httpd_dir</code></a> <span class="synopsis">Serving static content from directories</span></li><li><a href="Tiny_httpd_html/index.html"><code>Tiny_httpd_html</code></a> <span class="synopsis">HTML combinators.</span></li><li><a href="Tiny_httpd_html_/index.html"><code>Tiny_httpd_html_</code></a> </li><li><a href="Tiny_httpd_io/index.html"><code>Tiny_httpd_io</code></a> <span class="synopsis">IO abstraction.</span></li><li><a href="Tiny_httpd_pool/index.html"><code>Tiny_httpd_pool</code></a> <span class="synopsis">Resource pool.</span></li><li><a href="Tiny_httpd_server/index.html"><code>Tiny_httpd_server</code></a> <span class="synopsis">HTTP server.</span></li><li><a href="Tiny_httpd_stream/index.html"><code>Tiny_httpd_stream</code></a> <span class="synopsis">Byte streams.</span></li><li><a href="Tiny_httpd_util/index.html"><code>Tiny_httpd_util</code></a> </li></ul></div></body></html>
|
||||||
6
dev/tiny_httpd_camlzip/Tiny_httpd_camlzip/index.html
Normal file
6
dev/tiny_httpd_camlzip/Tiny_httpd_camlzip/index.html
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Tiny_httpd_camlzip (tiny_httpd_camlzip.Tiny_httpd_camlzip)</title><link rel="stylesheet" href="../../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../index.html">tiny_httpd_camlzip</a> » Tiny_httpd_camlzip</nav><header class="odoc-preamble"><h1>Module <code><span>Tiny_httpd_camlzip</span></code></h1><p>Middleware for compression.</p><p>This uses camlzip to provide deflate compression/decompression. If installed, the middleware will compress responses' bodies when they are streams or fixed-size above a given limit (but it will not compress small, fixed-size bodies).</p></header><div class="odoc-content"><div class="odoc-spec"><div class="spec value anchored" id="val-middleware"><a href="#val-middleware" class="anchor"></a><code><span><span class="keyword">val</span> middleware :
|
||||||
|
<span>?compress_above:int <span class="arrow">-></span></span>
|
||||||
|
<span>?buf_size:int <span class="arrow">-></span></span>
|
||||||
|
<span>unit <span class="arrow">-></span></span>
|
||||||
|
<a href="../../tiny_httpd/Tiny_httpd_server/Middleware/index.html#type-t">Tiny_httpd_server.Middleware.t</a></span></code></div><div class="spec-doc"><p>Middleware responsible for deflate compression/decompression.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">compress_above</span> <p>threshold, in bytes, above which a response body that has a known content-length is compressed. Stream bodies are always compressed.</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">buf_size</span> <p>size of the underlying buffer for compression/decompression</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.11</li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-setup"><a href="#val-setup" class="anchor"></a><code><span><span class="keyword">val</span> setup : <span>?compress_above:int <span class="arrow">-></span></span> <span>?buf_size:int <span class="arrow">-></span></span> <span><a href="../../tiny_httpd/Tiny_httpd_server/index.html#type-t">Tiny_httpd_server.t</a> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Install middleware for tiny_httpd to be able to encode/decode compressed streams</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">compress_above</span> <p>threshold above with string responses are compressed</p></li></ul><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">buf_size</span> <p>size of the underlying buffer for compression/decompression</p></li></ul></div></div></div></body></html>
|
||||||
2
dev/tiny_httpd_camlzip/index.html
Normal file
2
dev/tiny_httpd_camlzip/index.html
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (tiny_httpd_camlzip.index)</title><link rel="stylesheet" href="../odoc.support/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.2.1"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../odoc.support/highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – tiny_httpd_camlzip</nav><header class="odoc-preamble"><h1 id="tiny_httpd_camlzip-index"><a href="#tiny_httpd_camlzip-index" class="anchor"></a>tiny_httpd_camlzip index</h1></header><nav class="odoc-toc"><ul><li><a href="#library-tiny_httpd_camlzip">Library tiny_httpd_camlzip</a></li></ul></nav><div class="odoc-content"><h2 id="library-tiny_httpd_camlzip"><a href="#library-tiny_httpd_camlzip" class="anchor"></a>Library tiny_httpd_camlzip</h2><p>The entry point of this library is the module: <a href="Tiny_httpd_camlzip/index.html"><code>Tiny_httpd_camlzip</code></a>.</p></div></body></html>
|
||||||
Loading…
Add table
Reference in a new issue