summary refs log tree commit diff
diff options
context:
space:
mode:
authorsternenseemann <git@lukasepple.de>2020-04-23 18:55:07 +0200
committersternenseemann <git@lukasepple.de>2020-04-23 18:55:07 +0200
commitead94115faf4ea87e1ae526c4ce4dc56c3eb8786 (patch)
tree022506e50966da99d850fceb390c10170524d183
parent4a3c7988d19b41cb78ce8668b31a0a7bf353380e (diff)
Update documentation for 0e6a41190e1f32cb1181067a0e308a69b29bfe92
-rw-r--r--doc/Log.html132
-rw-r--r--doc/highlight.pack.js2
-rw-r--r--doc/html.stamp1
-rw-r--r--doc/index.html46
-rw-r--r--doc/index_attributes.html19
-rw-r--r--doc/index_class_types.html19
-rw-r--r--doc/index_classes.html19
-rw-r--r--doc/index_exceptions.html19
-rw-r--r--doc/index_extensions.html19
-rw-r--r--doc/index_methods.html19
-rw-r--r--doc/index_module_types.html19
-rw-r--r--doc/index_modules.html26
-rw-r--r--doc/index_types.html44
-rw-r--r--doc/index_values.html50
-rw-r--r--doc/logbook/Log/.dune-keep0
-rw-r--r--doc/logbook/Log/index.html2
-rw-r--r--doc/logbook/index.html2
-rw-r--r--doc/odoc.css764
-rw-r--r--doc/style.css252
-rw-r--r--doc/type_Log.html23
20 files changed, 788 insertions, 689 deletions
diff --git a/doc/Log.html b/doc/Log.html
deleted file mode 100644
index 7cc10c3..0000000
--- a/doc/Log.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link rel="Up" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><link title="Log" rel="Section" href="#1_Log">
-<link title="Log Representation" rel="Subsection" href="#2_LogRepresentation">
-<link title="Log Parsing" rel="Subsection" href="#2_LogParsing">
-<link title="Log processing" rel="Subsection" href="#2_Logprocessing">
-<link title="Log Building" rel="Subsection" href="#2_LogBuilding">
-<title>Log</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Module <a href="type_Log.html">Log</a></h1>
-
-<pre><span class="keyword">module</span> Log: <code class="code"><span class="keyword">sig</span></code> <a href="Log.html">..</a> <code class="code"><span class="keyword">end</span></code></pre><div class="info module top">
-OCaml representation and parsing of the
-    <a href="https://gist.github.com/Profpatsch/092ff68fa267b9fa0ccbe13e98149b21">log format</a>.
-<p>
-
-    <em>5187718 — <a href="https://github.com/sternenseemann/logbook ">homepage</a></em><br>
-</div>
-<hr width="100%">
-<br>
-<h1 id="1_Log">Log</h1><br>
-<br>
-<h2 id="2_LogRepresentation">Log Representation</h2><br>
-
-<pre><code><span id="TYPEprivacy_level"><span class="keyword">type</span> <code class="type"></code>privacy_level</span> = </code></pre><table class="typetable">
-<tr>
-<td align="left" valign="top" >
-<code><span class="keyword">|</span></code></td>
-<td align="left" valign="top" >
-<code><span id="TYPEELTprivacy_level.Private"><span class="constructor">Private</span></span></code></td>
-
-</tr>
-<tr>
-<td align="left" valign="top" >
-<code><span class="keyword">|</span></code></td>
-<td align="left" valign="top" >
-<code><span id="TYPEELTprivacy_level.Semi_private"><span class="constructor">Semi_private</span></span></code></td>
-
-</tr>
-<tr>
-<td align="left" valign="top" >
-<code><span class="keyword">|</span></code></td>
-<td align="left" valign="top" >
-<code><span id="TYPEELTprivacy_level.Public"><span class="constructor">Public</span></span></code></td>
-
-</tr></table>
-
-<div class="info ">
-Describes, how private a log item is, where private means
-    “item only visible to oneself, semi-private “item visible to trusted persons”
-    and public “item visible to everyone”.<br>
-</div>
-
-
-<pre><code><span id="TYPEitem"><span class="keyword">type</span> <code class="type">'a</code> item</span> = </code></pre><table class="typetable">
-<tr>
-<td align="left" valign="top" >
-<code><span class="keyword">|</span></code></td>
-<td align="left" valign="top" >
-<code><span id="TYPEELTitem.Item"><span class="constructor">Item</span></span> <span class="keyword">of</span> <code class="type"><a href="Log.html#TYPEprivacy_level">privacy_level</a> * 'a * 'a</code></code></td>
-
-</tr></table>
-
-<div class="info ">
-A log item consisting of its privacy level, a title and a text, both in markup <code class="code"><span class="keywordsign">'</span>a</code>.<br>
-</div>
-
-
-<pre><code><span id="TYPElog_entry"><span class="keyword">type</span> <code class="type">'a</code> log_entry</span> = </code></pre><table class="typetable">
-<tr>
-<td align="left" valign="top" >
-<code><span class="keyword">|</span></code></td>
-<td align="left" valign="top" >
-<code><span id="TYPEELTlog_entry.Log_entry"><span class="constructor">Log_entry</span></span> <span class="keyword">of</span> <code class="type">Ptime.date * 'a * 'a <a href="Log.html#TYPEitem">item</a> list</code></code></td>
-
-</tr></table>
-
-<div class="info ">
-A log entry consisting of a date, a summary and items, both in markup <code class="code"><span class="keywordsign">'</span>a</code>.<br>
-</div>
-
-
-<pre><span id="TYPElog"><span class="keyword">type</span> <code class="type">'a</code> log</span> = <code class="type">'a <a href="Log.html#TYPElog_entry">log_entry</a> list</code> </pre>
-<div class="info ">
-A log file consisting of multiple log entries for multiple days using markup <code class="code"><span class="keywordsign">'</span>a</code>.<br>
-</div>
-
-
-<pre><span id="VALcompatible_privacy"><span class="keyword">val</span> compatible_privacy</span> : <code class="type"><a href="Log.html#TYPEprivacy_level">privacy_level</a> -> <a href="Log.html#TYPEprivacy_level">privacy_level</a> -> bool</code></pre><div class="info ">
-A test to check wether a privacy level of e. g. an item is
-    compatible with the (maximum) privacy level available.<br>
-</div>
-
-<pre><span id="VALprivacy_level_of_char"><span class="keyword">val</span> privacy_level_of_char</span> : <code class="type">char -> <a href="Log.html#TYPEprivacy_level">privacy_level</a> option</code></pre><div class="info ">
-Get the corresponding privacy level for a char<br>
-</div>
-
-<pre><span id="VALfilter_privacy_level"><span class="keyword">val</span> filter_privacy_level</span> : <code class="type"><a href="Log.html#TYPEprivacy_level">privacy_level</a> -> 'a <a href="Log.html#TYPEitem">item</a> list -> 'a <a href="Log.html#TYPEitem">item</a> list</code></pre><div class="info ">
-Remove all items incompatible with the given privacy level
-    from the list of items.<br>
-</div>
-<br>
-<h2 id="2_LogParsing">Log Parsing</h2> 
-<p>
-
-    log files are parsed using <a href="https://github.com/inhabitedtype/angstrom">angstrom</a>.<br>
-
-<pre><span id="VALlog_parser"><span class="keyword">val</span> log_parser</span> : <code class="type">string <a href="Log.html#TYPElog">log</a> Angstrom.t</code></pre><div class="info ">
-An angstrom parser for log files<br>
-</div>
-<br>
-<h2 id="2_Logprocessing">Log processing</h2><br>
-
-<pre><span id="VALapply_markup"><span class="keyword">val</span> apply_markup</span> : <code class="type">('a -> 'b) -> 'a <a href="Log.html#TYPElog">log</a> -> 'b <a href="Log.html#TYPElog">log</a></code></pre><div class="info ">
-Convert a log's markup. This is especially useful
-    to apply a specific markup to a freshly parsed log file.<br>
-</div>
-<br>
-<h2 id="2_LogBuilding">Log Building</h2><br>
-</body></html>
\ No newline at end of file
diff --git a/doc/highlight.pack.js b/doc/highlight.pack.js
new file mode 100644
index 0000000..2e55d49
--- /dev/null
+++ b/doc/highlight.pack.js
@@ -0,0 +1,2 @@
+/*! highlight.js v9.15.8 | BSD3 License | git.io/hljslicense */
+!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(a){var f=[],u=Object.keys,N={},c={},n=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="</span>",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function E(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function l(e){return n.test(e)}function g(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function R(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),E(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(o){function s(e){return e&&e.source||e}function c(e,n){return new RegExp(s(e),"m"+(o.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){function r(t,e){o.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})}var a={};"string"==typeof t.k?r("keyword",t.k):u(t.k).forEach(function(e){r(e,t.k[e])}),t.k=a}t.lR=c(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=c(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=c(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=c(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return function(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return g(n,{v:null},e)})),n.cached_variants||n.eW&&[g(n)]||[n]}("self"===e?t:e)})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?c(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i<e.length;i++){var o=r,c=s(e[i]);for(0<i&&(a+=n);0<c.length;){var u=t.exec(c);if(null==u){a+=c;break}a+=c.substring(0,u.index),c=c.substring(u.index+u[0].length),"\\"==u[0][0]&&u[1]?a+="\\"+String(Number(u[1])+o):(a+=u[0],"("==u[0]&&r++)}}return a}(i,"|"),!0):{exec:function(){return null}}}}(o)}function C(e,n,i,t){function c(e,n,t,r){var a='<span class="'+(r?"":h.classPrefix);return e?(a+=e+'">')+n+(t?"":b):n}function o(){E+=null!=l.sL?function(){var e="string"==typeof l.sL;if(e&&!N[l.sL])return _(g);var n=e?C(l.sL,g,!0,f[l.sL]):O(g,l.sL.length?l.sL:void 0);return 0<l.r&&(R+=n.r),e&&(f[l.sL]=n.top),c(n.language,n.value,!1,!0)}():function(){var e,n,t,r,a,i,o;if(!l.k)return _(g);for(r="",n=0,l.lR.lastIndex=0,t=l.lR.exec(g);t;)r+=_(g.substring(n,t.index)),a=l,i=t,void 0,o=s.cI?i[0].toLowerCase():i[0],(e=a.k.hasOwnProperty(o)&&a.k[o])?(R+=e[1],r+=c(e[0],_(t[0]))):r+=_(t[0]),n=l.lR.lastIndex,t=l.lR.exec(g);return r+_(g.substr(n))}(),g=""}function u(e){E+=e.cN?c(e.cN,"",!0):"",l=Object.create(e,{parent:{value:l}})}function r(e,n){if(g+=e,null==n)return o(),0;var t=function(e,n){var t,r,a;for(t=0,r=n.c.length;t<r;t++)if(v(n.c[t].bR,e))return n.c[t].endSameAsBegin&&(n.c[t].eR=(a=n.c[t].bR.exec(e)[0],new RegExp(a.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&"),"m"))),n.c[t]}(n,l);if(t)return t.skip?g+=n:(t.eB&&(g+=n),o(),t.rB||t.eB||(g=n)),u(t),t.rB?0:n.length;var r=function e(n,t){if(v(n.eR,t)){for(;n.endsParent&&n.parent;)n=n.parent;return n}if(n.eW)return e(n.parent,t)}(l,n);if(r){var a=l;for(a.skip?g+=n:(a.rE||a.eE||(g+=n),o(),a.eE&&(g=n));l.cN&&(E+=b),l.skip||l.sL||(R+=l.r),(l=l.parent)!==r.parent;);return r.starts&&(r.endSameAsBegin&&(r.starts.eR=r.eR),u(r.starts)),a.rE?0:n.length}if(function(e,n){return!i&&v(n.iR,e)}(n,l))throw new Error('Illegal lexeme "'+n+'" for mode "'+(l.cN||"<unnamed>")+'"');return g+=n,n.length||1}var s=B(e);if(!s)throw new Error('Unknown language: "'+e+'"');m(s);var a,l=t||s,f={},E="";for(a=l;a!==s;a=a.parent)a.cN&&(E=c(a.cN,"",!0)+E);var g="",R=0;try{for(var d,p,M=0;l.t.lastIndex=M,d=l.t.exec(n);)p=r(n.substring(M,d.index),d[0]),M=d.index+p;for(r(n.substr(M)),a=l;a.parent;a=a.parent)a.cN&&(E+=b);return{r:R,value:E,language:e,top:l}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(B).filter(M).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function d(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?"<br>":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function o(e){var n,t,r,a,i,o=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=s.exec(i))return B(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n<r;n++)if(l(a=i[n])||B(a))return a}(e);l(o)||(h.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=e.innerHTML.replace(/\n/g,"").replace(/<br[ \/]*>/g,"\n"):n=e,i=n.textContent,r=o?C(o,i,!0):O(i),(t=R(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset<n[0].offset?e:n:"start"===n[0].event?e:n:e.length?e:n}function c(e){a+="<"+E(e)+f.map.call(e.attributes,function(e){return" "+e.nodeName+'="'+_(e.value).replace('"',"&quot;")+'"'}).join("")+">"}function u(e){a+="</"+E(e)+">"}function s(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var l=o();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=o())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(c)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,R(a),i)),r.value=d(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?c[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,o)}}function B(e){return e=(e||"").toLowerCase(),N[e]||N[c[e]]}function M(e){var n=B(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=d,a.highlightBlock=o,a.configure=function(e){h=g(h,e)},a.initHighlighting=p,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){c[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=B,a.autoDetection=M,a.inherit=g,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{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"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*",r:0},e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\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_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("reasonml",function(r){var e="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",c="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(r){return r.split("").map(function(r){return"\\"+r}).join("")}).join("|")+"|==|===)",n="\\s+"+c+"\\s+",t={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject 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"},i="\\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_]+)?)?)",s={cN:"number",r:0,v:[{b:i},{b:"\\(\\-"+i+"\\)"}]},b={cN:"operator",r:0,b:c},o=[{cN:"identifier",r:0,b:e},b,s],l=[r.QSM,b,{cN:"module",b:"\\b"+a,rB:!0,e:".",c:[{cN:"identifier",b:a,r:0}]}],u=[{cN:"module",b:"\\b"+a,rB:!0,e:".",r:0,c:[{cN:"identifier",b:a,r:0}]}],_={cN:"function",r:0,k:t,v:[{b:"\\s(\\(\\.?.*?\\)|"+e+")\\s*=>",e:"\\s*=>",rB:!0,r:0,c:[{cN:"params",v:[{b:e},{b:"~?[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*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{b:/\(\s*\)/}]}]},{b:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",e:"\\s=>",rB:!0,r:0,c:[{cN:"params",r:0,v:[{b:e,e:"(,|\\n|\\))",r:0,c:[b,{cN:"typing",b:":",e:"(,|\\n)",rB:!0,r:0,c:u}]}]}]},{b:"\\(\\.\\s"+e+"\\)\\s*=>"}]};l.push(_);var N={cN:"constructor",b:a+"\\(",e:"\\)",i:"\\n",k:t,c:[r.QSM,b,{cN:"params",b:"\\b"+e}]},d={cN:"pattern-match",b:"\\|",rB:!0,k:t,e:"=>",r:0,c:[N,b,{r:0,cN:"constructor",b:a}]},z={cN:"module-access",k:t,rB:!0,v:[{b:"\\b("+a+"\\.)+"+e},{b:"\\b("+a+"\\.)+\\(",e:"\\)",rB:!0,c:[_,{b:"\\(",e:"\\)",skip:!0}].concat(l)},{b:"\\b("+a+"\\.)+{",e:"}"}],c:l};return u.push(z),{aliases:["re"],k:t,i:"(:\\-|:=|\\${|\\+=)",c:[r.C("/\\*","\\*/",{i:"^(\\#,\\/\\/)"}),{cN:"character",b:"'(\\\\[^']+|[^'])'",i:"\\n",r:0},r.QSM,{cN:"literal",b:"\\(\\)",r:0},{cN:"literal",b:"\\[\\|",e:"\\|\\]",r:0,c:o},{cN:"literal",b:"\\[",e:"\\]",r:0,c:o},N,{cN:"operator",b:n,i:"\\-\\->",r:0},s,r.CLCM,d,_,{cN:"module-def",b:"\\bmodule\\s+"+e+"\\s+"+a+"\\s+=\\s+{",e:"}",rB:!0,k:t,r:0,c:[{cN:"module",r:0,b:a},{b:"{",e:"}",skip:!0}].concat(l)},z]}});
\ No newline at end of file
diff --git a/doc/html.stamp b/doc/html.stamp
deleted file mode 100644
index 45bd9a2..0000000
--- a/doc/html.stamp
+++ /dev/null
@@ -1 +0,0 @@
-9db98fff676c9f7671cd36dc52af4cd7
\ No newline at end of file
diff --git a/doc/index.html b/doc/index.html
index aaeca88..01e09a0 100644
--- a/doc/index.html
+++ b/doc/index.html
@@ -1,29 +1,19 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title></title>
-</head>
-<body>
-<h1></h1>
-<ul class="indexlist">
-<li><a href="index_types.html">Index of types</a></li>
-<li><a href="index_values.html">Index of values</a></li>
-<li><a href="index_modules.html">Index of modules</a></li>
-</ul>
-<br/><br>
-<table class="indextable">
-<tr><td class="module"><a href="Log.html">Log</a></td><td><div class="info">
-OCaml representation and parsing of the
-    <a href="https://gist.github.com/Profpatsch/092ff68fa267b9fa0ccbe13e98149b21">log format</a>.
-</div>
-</td></tr>
-</table>
-</body>
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml">
+  <head>
+    <title>index</title>
+    <link rel="stylesheet" href="./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="logbook/index.html">logbook</a></li>
+      </ol>
+      </div>
+    </main>
+  </body>
 </html>
\ No newline at end of file
diff --git a/doc/index_attributes.html b/doc/index_attributes.html
deleted file mode 100644
index 2409fe6..0000000
--- a/doc/index_attributes.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of class attributes</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of class attributes</h1>
-<table>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_class_types.html b/doc/index_class_types.html
deleted file mode 100644
index 418e036..0000000
--- a/doc/index_class_types.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of class types</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of class types</h1>
-<table>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_classes.html b/doc/index_classes.html
deleted file mode 100644
index a7bfbb0..0000000
--- a/doc/index_classes.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of classes</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of classes</h1>
-<table>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_exceptions.html b/doc/index_exceptions.html
deleted file mode 100644
index 6e44d17..0000000
--- a/doc/index_exceptions.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of exceptions</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of exceptions</h1>
-<table>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_extensions.html b/doc/index_extensions.html
deleted file mode 100644
index 04c62f4..0000000
--- a/doc/index_extensions.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of extensions</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of extensions</h1>
-<table>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_methods.html b/doc/index_methods.html
deleted file mode 100644
index 3c62571..0000000
--- a/doc/index_methods.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of class methods</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of class methods</h1>
-<table>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_module_types.html b/doc/index_module_types.html
deleted file mode 100644
index 010a71a..0000000
--- a/doc/index_module_types.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of module types</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of module types</h1>
-<table>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_modules.html b/doc/index_modules.html
deleted file mode 100644
index 83fa5df..0000000
--- a/doc/index_modules.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of modules</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of modules</h1>
-<table>
-<tr><td align="left"><br>L</td></tr>
-<tr><td><a href="Log.html">Log</a> </td>
-<td><div class="info">
-OCaml representation and parsing of the
-    <a href="https://gist.github.com/Profpatsch/092ff68fa267b9fa0ccbe13e98149b21">log format</a>.
-</div>
-</td></tr>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_types.html b/doc/index_types.html
deleted file mode 100644
index adea31e..0000000
--- a/doc/index_types.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of types</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of types</h1>
-<table>
-<tr><td align="left"><br>I</td></tr>
-<tr><td><a href="Log.html#TYPEitem">item</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-A log item consisting of its privacy level, a title and a text, both in markup <code class="code"><span class="keywordsign">'</span>a</code>.
-</div>
-</td></tr>
-<tr><td align="left"><br>L</td></tr>
-<tr><td><a href="Log.html#TYPElog">log</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-A log file consisting of multiple log entries for multiple days using markup <code class="code"><span class="keywordsign">'</span>a</code>.
-</div>
-</td></tr>
-<tr><td><a href="Log.html#TYPElog_entry">log_entry</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-A log entry consisting of a date, a summary and items, both in markup <code class="code"><span class="keywordsign">'</span>a</code>.
-</div>
-</td></tr>
-<tr><td align="left"><br>P</td></tr>
-<tr><td><a href="Log.html#TYPEprivacy_level">privacy_level</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-Describes, how private a log item is, where private means
-    “item only visible to oneself, semi-private “item visible to trusted persons”
-    and public “item visible to everyone”.
-</div>
-</td></tr>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/index_values.html b/doc/index_values.html
deleted file mode 100644
index 78034cb..0000000
--- a/doc/index_values.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<html>
-<head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Index of values</title>
-</head>
-<body>
-<div class="navbar">&nbsp;<a class="up" href="index.html" title="Index">Up</a>
-&nbsp;</div>
-<h1>Index of values</h1>
-<table>
-<tr><td align="left"><br>A</td></tr>
-<tr><td><a href="Log.html#VALapply_markup">apply_markup</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-Convert a log's markup.
-</div>
-</td></tr>
-<tr><td align="left"><br>C</td></tr>
-<tr><td><a href="Log.html#VALcompatible_privacy">compatible_privacy</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-A test to check wether a privacy level of e.
-</div>
-</td></tr>
-<tr><td align="left"><br>F</td></tr>
-<tr><td><a href="Log.html#VALfilter_privacy_level">filter_privacy_level</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-Remove all items incompatible with the given privacy level
-    from the list of items.
-</div>
-</td></tr>
-<tr><td align="left"><br>L</td></tr>
-<tr><td><a href="Log.html#VALlog_parser">log_parser</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-An angstrom parser for log files
-</div>
-</td></tr>
-<tr><td align="left"><br>P</td></tr>
-<tr><td><a href="Log.html#VALprivacy_level_of_char">privacy_level_of_char</a> [<a href="Log.html">Log</a>]</td>
-<td><div class="info">
-Get the corresponding privacy level for a char
-</div>
-</td></tr>
-</table>
-</body>
-</html>
\ No newline at end of file
diff --git a/doc/logbook/Log/.dune-keep b/doc/logbook/Log/.dune-keep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/doc/logbook/Log/.dune-keep
diff --git a/doc/logbook/Log/index.html b/doc/logbook/Log/index.html
new file mode 100644
index 0000000..c97e521
--- /dev/null
+++ b/doc/logbook/Log/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Log (logbook.Log)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> – <a href="../index.html">logbook</a> &#x00BB; Log</nav><h1>Module <code>Log</code></h1><p>OCaml representation and parsing of the <a href="https://gist.github.com/Profpatsch/092ff68fa267b9fa0ccbe13e98149b21">log format</a>.</p><p><em>%%VERSION%% — <a href="%%PKG_HOMEPAGE%%">homepage</a></em></p><nav class="toc"><ul><li><a href="#log">Log</a><ul><li><a href="#log-representation">Log Representation</a></li><li><a href="#log-parsing">Log Parsing</a></li><li><a href="#log-processing">Log processing</a></li><li><a href="#log-building">Log Building</a></li></ul></li></ul></nav></header><section><header><h2 id="log"><a href="#log" class="anchor"></a>Log</h2></header><section><header><h3 id="log-representation"><a href="#log-representation" class="anchor"></a>Log Representation</h3></header><dl><dt class="spec type" id="type-privacy_level"><a href="#type-privacy_level" class="anchor"></a><code><span class="keyword">type</span> privacy_level</code><code> = </code><table class="variant"><tr id="type-privacy_level.Private" class="anchored"><td class="def constructor"><a href="#type-privacy_level.Private" class="anchor"></a><code>| </code><code><span class="constructor">Private</span></code></td></tr><tr id="type-privacy_level.Semi_private" class="anchored"><td class="def constructor"><a href="#type-privacy_level.Semi_private" class="anchor"></a><code>| </code><code><span class="constructor">Semi_private</span></code></td></tr><tr id="type-privacy_level.Public" class="anchored"><td class="def constructor"><a href="#type-privacy_level.Public" class="anchor"></a><code>| </code><code><span class="constructor">Public</span></code></td></tr></table></dt><dd><p>Describes, how private a log item is, where private means “item only visible to oneself, semi-private “item visible to trusted persons” and public “item visible to everyone”.</p></dd></dl><dl><dt class="spec type" id="type-item"><a href="#type-item" class="anchor"></a><code><span class="keyword">type</span> <span>'a item</span></code><code> = </code><table class="variant"><tr id="type-item.Item" class="anchored"><td class="def constructor"><a href="#type-item.Item" class="anchor"></a><code>| </code><code><span class="constructor">Item</span> <span class="keyword">of</span> <a href="index.html#type-privacy_level">privacy_level</a> * <span class="type-var">'a</span> * <span class="type-var">'a</span></code></td></tr></table></dt><dd><p>A log item consisting of its privacy level, a title and a text, both in markup <code>'a</code>.</p></dd></dl><dl><dt class="spec type" id="type-log_entry"><a href="#type-log_entry" class="anchor"></a><code><span class="keyword">type</span> <span>'a log_entry</span></code><code> = </code><table class="variant"><tr id="type-log_entry.Log_entry" class="anchored"><td class="def constructor"><a href="#type-log_entry.Log_entry" class="anchor"></a><code>| </code><code><span class="constructor">Log_entry</span> <span class="keyword">of</span> Ptime.date * <span class="type-var">'a</span> * <span><span><span class="type-var">'a</span> <a href="index.html#type-item">item</a></span> list</span></code></td></tr></table></dt><dd><p>A log entry consisting of a date, a summary and items, both in markup <code>'a</code>.</p></dd></dl><dl><dt class="spec type" id="type-log"><a href="#type-log" class="anchor"></a><code><span class="keyword">type</span> <span>'a log</span></code><code> = <span><span><span class="type-var">'a</span> <a href="index.html#type-log_entry">log_entry</a></span> list</span></code></dt><dd><p>A log file consisting of multiple log entries for multiple days using markup <code>'a</code>.</p></dd></dl><dl><dt class="spec value" id="val-compatible_privacy"><a href="#val-compatible_privacy" class="anchor"></a><code><span class="keyword">val</span> compatible_privacy : <a href="index.html#type-privacy_level">privacy_level</a> <span>&#45;&gt;</span> <a href="index.html#type-privacy_level">privacy_level</a> <span>&#45;&gt;</span> bool</code></dt><dd><p>A test to check wether a privacy level of e. g. an item is compatible with the (maximum) privacy level available.</p></dd></dl><dl><dt class="spec value" id="val-privacy_level_of_char"><a href="#val-privacy_level_of_char" class="anchor"></a><code><span class="keyword">val</span> privacy_level_of_char : char <span>&#45;&gt;</span> <span><a href="index.html#type-privacy_level">privacy_level</a> option</span></code></dt><dd><p>Get the corresponding privacy level for a char</p></dd></dl><dl><dt class="spec value" id="val-filter_privacy_level"><a href="#val-filter_privacy_level" class="anchor"></a><code><span class="keyword">val</span> filter_privacy_level : <a href="index.html#type-privacy_level">privacy_level</a> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> <a href="index.html#type-item">item</a></span> list</span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> <a href="index.html#type-item">item</a></span> list</span></code></dt><dd><p>Remove all items incompatible with the given privacy level from the list of items.</p></dd></dl></section><section><header><h3 id="log-parsing"><a href="#log-parsing" class="anchor"></a>Log Parsing</h3><p>log files are parsed using <a href="https://github.com/inhabitedtype/angstrom">angstrom</a>.</p></header><dl><dt class="spec value" id="val-log_parser"><a href="#val-log_parser" class="anchor"></a><code><span class="keyword">val</span> log_parser : <span><span>string <a href="index.html#type-log">log</a></span> Angstrom.t</span></code></dt><dd><p>An angstrom parser for log files</p></dd></dl></section><section><header><h3 id="log-processing"><a href="#log-processing" class="anchor"></a>Log processing</h3></header><dl><dt class="spec value" id="val-apply_markup"><a href="#val-apply_markup" class="anchor"></a><code><span class="keyword">val</span> apply_markup : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-log">log</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-log">log</a></span></code></dt><dd><p>Convert a log's markup. This is especially useful to apply a specific markup to a freshly parsed log file.</p></dd></dl></section><section><header><h3 id="log-building"><a href="#log-building" class="anchor"></a>Log Building</h3></header></section></section></div></body></html>
\ No newline at end of file
diff --git a/doc/logbook/index.html b/doc/logbook/index.html
new file mode 100644
index 0000000..bd86251
--- /dev/null
+++ b/doc/logbook/index.html
@@ -0,0 +1,2 @@
+<!DOCTYPE html>
+<html xmlns="http://www.w3.org/1999/xhtml"><head><title>index (logbook.index)</title><link rel="stylesheet" href="../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc %%VERSION%%"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><div class="content"><header><nav><a href="../index.html">Up</a> – logbook</nav><h1 id="logbook-index"><a href="#logbook-index" class="anchor"></a>logbook index</h1><nav class="toc"><ul><li><a href="#library-logbook">Library logbook</a></li></ul></nav></header><h2 id="library-logbook"><a href="#library-logbook" class="anchor"></a>Library logbook</h2><p>The entry point of this library is the module: <a href="Log/index.html"><code>Log</code></a>.</p></div></body></html>
\ No newline at end of file
diff --git a/doc/odoc.css b/doc/odoc.css
new file mode 100644
index 0000000..094e258
--- /dev/null
+++ b/doc/odoc.css
@@ -0,0 +1,764 @@
+@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.
+   %%NAME%% %%VERSION%% */
+
+/* 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');
+
+
+/* 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 {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: inherit;
+  font: inherit;
+  line-height: inherit;
+  vertical-align: baseline;
+  text-align: inherit;
+  color: inherit;
+  background: transparent;
+}
+
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
+
+*, *:before, *:after {
+  box-sizing: border-box;
+}
+
+html {
+  font-size: 15px;
+}
+
+body {
+  font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+  text-align: left;
+  color: #333;
+  background: #FFFFFF;
+}
+
+.content {
+  max-width: 90ex;
+  margin-left: calc(10vw + 20ex);
+  margin-right: 4ex;
+  margin-top: 20px;
+  margin-bottom: 50px;
+  font-family: "Noticia Text", Georgia, serif;
+  line-height: 1.5;
+}
+
+.content>header {
+  margin-bottom: 30px;
+}
+
+.content>header nav {
+  font-family: "Fira Sans", Helvetica, Arial, sans-serif;
+}
+
+/* Basic markup elements */
+
+b, strong {
+  font-weight: 500;
+}
+
+i, em {
+  font-style: italic;
+}
+
+sup {
+  vertical-align: super;
+}
+
+sub {
+  vertical-align: sub;
+}
+
+sup, sub {
+  font-size: 12px;
+  line-height: 0;
+  margin-left: 0.2ex;
+}
+
+pre {
+  margin-top: 0.8em;
+  margin-bottom: 1.2em;
+}
+
+p, ul, ol {
+  margin-top: 0.5em;
+  margin-bottom: 1em;
+}
+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: #2C5CBD;
+}
+
+a:hover {
+  box-shadow: 0 1px 0 0 #2C5CBD;
+}
+
+/* Linked highlight */
+*:target {
+  background-color: rgba(187,239,253,0.3) !important;
+  box-shadow: 0 0px 0 1px rgba(187,239,253,0.8) !important;
+  border-radius: 1px;
+}
+
+*:hover>a.anchor {
+  visibility: visible;
+}
+
+a.anchor:before {
+  content: "#"
+}
+
+a.anchor:hover {
+  box-shadow: none;
+  text-decoration: none;
+  color: #555;
+}
+
+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: #d5d5d5;
+}
+
+.spec > a.anchor {
+  margin-left: -2.3em;
+  padding-right: 0.9em;
+}
+
+.xref-unresolved {
+  color: #2C5CBD;
+}
+.xref-unresolved:hover {
+  box-shadow: 0 1px 0 0 #CC6666;
+}
+
+/* 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;
+  margin: 0.5em 0 0.5em 0;
+  padding-top: 0.1em;
+  line-height: 1.2;
+  overflow-wrap: break-word;
+}
+
+h1 {
+  font-weight: 500;
+  font-size: 2.441em;
+  margin-top: 1.214em;
+}
+
+h1 {
+  font-weight: 500;
+  font-size: 1.953em;
+  box-shadow: 0 1px 0 0 #ddd;
+}
+
+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;
+}
+
+
+/* Preformatted and code */
+
+tt, code, pre {
+  font-family: "Fira Mono", courier;
+  font-weight: 400;
+}
+
+pre {
+  padding: 0.1em;
+  border: 1px solid #eee;
+  border-radius: 5px;
+  overflow-x: auto;
+}
+
+p code, li code {
+  background-color: #f6f8fa;
+  color: #0d2b3e;
+  border-radius: 3px;
+  padding: 0 0.3ex;
+}
+
+p a > code {
+  color: #2C5CBD;
+}
+
+/* Code blocks (e.g. Examples) */
+
+pre code {
+  font-size: 0.893rem;
+}
+
+/* Code lexemes */
+
+.keyword {
+  font-weight: 500;
+}
+
+/* Module member specification */
+
+.spec:not(.include), .spec.include details summary {
+  background-color: #f6f8fa;
+  border-radius: 3px;
+  border-left: 4px solid #5c9cf5;
+  border-right: 5px solid transparent;
+  padding: 0.35em 0.5em;
+}
+
+.spec.include details summary:hover {
+  background-color: #ebeff2;
+}
+
+dl, div.spec, .doc, aside {
+  margin-bottom: 20px;
+}
+
+dl > dd {
+  padding: 0.5em;
+}
+
+dd> :first-child {
+  margin-top: 0;
+}
+
+dl:last-child, dd> :last-child, aside:last-child, article:last-child {
+  margin-bottom: 0;
+}
+
+dt+dt {
+  margin-top: 15px;
+}
+
+section+section, section > header + dl {
+  margin-top: 25px;
+}
+
+.spec.type .variant {
+  margin-left: 2ch;
+}
+.spec.type .variant p {
+  margin: 0;
+  font-style: italic;
+}
+.spec.type .record {
+  margin-left: 2ch;
+}
+.spec.type .record p {
+  margin: 0;
+  font-style: italic;
+}
+
+div.def {
+  margin-top: 0;
+  text-indent: -2ex;
+  padding-left: 2ex;
+}
+
+div.def+div.doc {
+  margin-left: 1ex;
+  margin-top: 2.5px
+}
+
+div.doc>*:first-child {
+  margin-top: 0;
+}
+
+/* The elements other than heading should be wrapped in <aside> elements. */
+/* heading, body>p, body>ul, body>ol, h3, h4, body>pre { */
+/*   margin-bottom: 30px; */
+/* } */
+
+/* Collapsible inlined include and module */
+
+.spec.include details {
+  position: relative;
+}
+
+.spec.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: rgba(0, 4, 15, 0.05);
+  box-shadow: 0 0px 0 1px rgba(204, 204, 204, 0.53);
+}
+
+.spec.include details summary {
+  position: relative;
+  margin-bottom: 20px;
+  cursor: pointer;
+  outline: none;
+}
+
+/* FIXME: Does not work in Firefox. */
+details 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-right: 2ex
+}
+
+.record td.def {
+  padding-left: 2ex;
+}
+
+td.doc *:first-child {
+  margin-top: 0em
+}
+
+/* @ tags */
+
+ul.at-tag {
+  list-style-type: none;
+  margin-left: 0;
+  padding: 0;
+}
+
+ul.at-tag li {
+  margin-left: 0;
+  padding: 0;
+}
+
+ul.at-tag li p:first-child {
+  margin-top: 0
+}
+
+/* FIXME remove */
+
+span.at-tag {
+  font-weight: bold
+}
+
+.at-tag.deprecated {
+  font-weight: normal;
+  color: crimson
+}
+
+.at-tag.raise {
+  font-weight: bold;
+}
+
+/* FIXME random other things to review. */
+
+.heading {
+  margin-top: 10px;
+  border-bottom: solid;
+  border-width: 1px;
+  border-color: #DDD;
+  text-align: right;
+  font-weight: normal;
+  font-style: italic;
+}
+
+.heading+.sig {
+  margin-top: -20px;
+}
+
+.heading+.parameters {
+  margin-top: -20px;
+}
+
+/* Odig package index */
+
+.by-name ol, .by-tag ol, .errors ol {
+  list-style-type: none;
+  margin-left: 0;
+}
+
+.by-name ol ol, .by-tag ol ol {
+  margin-top: 0;
+  margin-bottom: 0
+}
+
+.by-name li, .by-tag li, .errors li {
+  margin-left: 0;
+}
+
+.by-name .version {
+  font-size: 10px;
+  color: #AAA
+}
+
+.by-name nav {
+  margin-bottom: 10px
+}
+
+.by-name nav a {
+  text-transform: uppercase;
+  font-size: 18px;
+  margin-right: 1ex;
+  color: #222;
+  display: inline-block;
+}
+
+.by-tag nav a {
+  margin-right: 1ex;
+  color: #222;
+  display: inline-block;
+}
+
+.by-tag>ol>li {
+  margin-top: 10px;
+}
+
+.by-tag>ol>li>span, .by-tag>ol>li>ol, .by-tag>ol>li>ol>li {
+  display: inline-block;
+  margin-right: 1ex;
+}
+
+/* Odig package page */
+
+.package nav {
+  display: inline;
+  font-size: 14px;
+  font-weight: normal;
+}
+
+.package .version {
+  font-size: 14px;
+}
+
+h1+.modules, h1+.sel {
+  margin-top: 10px
+}
+
+.sel {
+  font-weight: normal;
+  font-style: italic;
+  font-size: 14px;
+  margin-top: 20px;
+}
+
+.sel+.modules {
+  margin-top: 10px;
+  margin-bottom: 20px;
+  margin-left: 1ex;
+}
+
+.modules {
+  margin: 0;
+}
+
+.modules .module {
+  min-width: 8ex;
+  padding-right: 2ex
+}
+
+.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 */
+
+.toc:before {
+  display: block;
+  content: "Contents";
+  text-transform: uppercase;
+  font-size: 1em;
+  margin: 1.414em 0 0.5em;
+  font-weight: 500;
+  color: #777;
+  line-height: 1.2;
+}
+
+.toc {
+  position: fixed;
+  top: 0px;
+  bottom: 0px;
+  left: 0px;
+  max-width: 30ex;
+  min-width: 26ex;
+  width: 20%;
+  background: #f6f8fa;
+  overflow: auto;
+  color: #1F2D3D;
+  padding-left: 2ex;
+  padding-right: 2ex;
+}
+
+.toc ul li a {
+  font-family: "Fira Sans", sans-serif;
+  font-size: 0.95em;
+  color: #333;
+  font-weight: 400;
+  line-height: 1.6em;
+  display: block;
+}
+
+.toc ul li a:hover {
+  box-shadow: none;
+  text-decoration: underline;
+}
+
+/* First level titles */
+
+.toc>ul>li>a {
+  font-weight: 500;
+}
+
+.toc li ul {
+  margin: 0px;
+}
+
+.toc ul {
+  list-style-type: none;
+}
+
+.toc ul li {
+  margin: 0;
+}
+.toc>ul>li {
+  margin-bottom: 0.3em;
+}
+
+.toc ul li li {
+  border-left: 1px solid #ccc;
+  margin-left: 5px;
+  padding-left: 12px;
+}
+
+/* Mobile adjustements. */
+
+@media only screen and (max-width: 95ex) {
+  .content {
+    margin: auto;
+    padding: 2.0em;
+  }
+  .toc {
+    position: static;
+    width: auto;
+    min-width: unset;
+    max-width: unset;
+    border: none;
+    padding: 0.2em 1em;
+    border-radius: 5px;
+  }
+}
+
+/* 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: white;
+  padding: 0.5em;
+  color: #333333;
+  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.
+  ---------------------------------------------------------------------------*/
diff --git a/doc/style.css b/doc/style.css
deleted file mode 100644
index cd01d86..0000000
--- a/doc/style.css
+++ /dev/null
@@ -1,252 +0,0 @@
-@charset "UTF-8";
-/* Copyright (c) 2016 Daniel C. Bünzli. All rights reserved.
-   Distributed under the ISC license, see terms at the end of the file.
-   odig v0.0.1-36-gabe18e1 */
-
-/* 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
-{ margin: 0; padding: 0; border: 0; outline: 0; font-size: 100%;
-  font: inherit; line-height: inherit; vertical-align: baseline;
-  text-align: inherit; color: inherit; background: transparent; }
-
-table { border-collapse: collapse; border-spacing: 0; }
-
-html { box-sizing: border-box }
-*, *:before, *:after {  box-sizing: inherit; }
-
-/* Basic page layout */
-
-body
-{ font-family: Helvetica, "DejaVu Sans", Arial, sans-serif;
-  font-weight: normal;
-  font-size: 0.875rem;
-  line-height: 1.25rem;
-  text-align: left;
-  min-width: 40ex;
-  max-width: 78ex;
-  padding: 1.25rem;
-  margin-left: 3.75rem;
-  color: #222; background: #FAFAFA;  }
-
-b { font-weight: bold }
-em { font-style: italic }
-
-.superscript { vertical-align: super; }
-.subscript { vertical-align: sub; }
-.superscript, .subscript
-{ font-size : 0.75rem; line-height: 0; margin-left: 0.2ex; }
-
-/* ocamldoc markup workaround hacks.
-   See http://caml.inria.fr/mantis/view.php?id=7351 */
-
-hr
-{ display: none } /* Would be nice to have but we cannot get that to
-                     interact well with our h1's because of br markup noise */
-
-br { display: none } /* Annoying, hide them. */
-code br { display: block } /* Except in signatures. */
-
-.codepre br + br { display: none }
-h1 + pre { margin-bottom: 0.625rem } /* Toplevel module description */
-
-/* Links and anchors */
-
-a { text-decoration:none; color:#2C5CBD; }
-a:hover { box-shadow:0 1px 0 0 #2C5CBD; }
-*:target { /* Anchor highlight */ background-color: #FFF8E5;
-           box-shadow: 0 0 0 2px #FFF8E5, 0 0 0 3px #DDDDDD; }
-
-a { text-decoration:none; color:#2C5CBD; }
-a:hover { box-shadow:0 1px 0 0 #2C5CBD; }
-*:target /* Linked highlight */
-{ background-color: #FFF8E5;
-  box-shadow: 0 0 0 2px #FFF8E5, 0 0 0 3px #DDD; }
-
-.anchored:hover a.anchor { visibility: visible; }
-
-a.anchor:before { content: "#" }
-a.anchor:hover {  box-shadow: none; text-decoration: underline }
-a.anchor
-{ visibility: hidden; position: absolute; /* top: 0px; */
-  margin-left: -3ex;
-  font-weight: normal;
-  font-style: normal;
-  padding-right: 1ex; padding-left: 1ex; /* To remain selectable */
-  color: #AAA; }
-
-/* Sections and document divisions
-
-   Many of the modules of the stdlib start at h6, we make it look like
-   h1 and the .7 div (sic) like h2. */
-
-h1, h2, h3, h6, .h7
-{ font-weight: bold; padding-top: 0.625rem; margin-top: 1.25rem }
-
-h1, h6
-{ font-size: 1.25rem;
-  line-height: 2.4375rem; /* 2.5 rem - border width */
-  border-top-style: solid;
-  border-width: 1px;
-  border-color: #DDDDDD; }
-
-h3 { margin-top: 0.625rem; }
-
-br + * { margin-top: 0.625rem; } /* Ideally this would be h1 + * */
-
-h2, .h7 { font-size: 1.125rem; }
-h1 + h2, h6 + .h7 { margin-top: 0.625rem; padding-top: 0rem; }
-
-/* Paragraphs, lists and tables */
-
-p { margin-top: 1.25rem }
-e.info p, li p { margin-top: 0.625rem }
-
-table { margin-top: 0.625rem }
-.info.module.top { margin-left: 0em } /* Toplevel module description */
-.info { margin-left: 1ex; margin-top: 0.15625rem }
-
-td .info { margin:0; padding:0; margin-left: 2em;} /* Description in indexes */
-
-ul, ol { margin-top: 0.625rem; margin-bottom: 0.625rem;
-	       list-style-position: outside }
-ul + p, ol + p { margin-top: 0em }
-ul { list-style-type: square }
-
-ul > li { margin-left: 1.375rem; }
-ol > li { margin-left: 1.7rem; }
-
-/* Preformatted and code */
-
-tt, code, pre
-{ font-family: Menlo, "DejaVu Sans Mono", "Bitstream Vera Sans Mono",
-               monospace;
-  font-weight: normal;
-  font-size: 0.75rem; }
-
-h1 tt, h1 code, h6 tt, h6 code { font-size: 1.125rem }
-h2 tt, h2 code, .h7 tt, .h7 code { font-size: 1rem }
-
-pre {  margin-top: 1.25rem; }
-
-pre.verbatim, pre.codepre
-{ padding-left: 0.25rem;
-  padding-right: 0.25rem;
-  margin-left: -0.25rem;
-  margin-right: -0.25rem;
-  padding-bottom: 0.3125rem;
-  padding-top: 0.3125rem;
-  margin-bottom: 0.265rem; /* Sometimes there's text without <p>
-                              http://caml.inria.fr/mantis/view.php?id=7353 */
-  line-height: 1.1875rem;
-  background: #F1F1F1; }
-
-pre .code { background: inherit; }
-.code {
-  /* If we can avoid it. */
-  /* background: #F1F1F1;
-     padding-top:1px; padding-bottom:1px;
-     padding-left:1px; padding-right:1px;
-     border-radius:2px; */ }
-
-.keyword { font-weight: bold }
-.comment { color: #888; font-style:italic }
-.constructor { color: #208000; }
-.string { color: brown; }
-.warning { color: crimson; }
-
-.typetable { margin-top: 0em }
-
-.paramstable code { margin-left: 1ex; margin-right: 1ex; }
-.sig_block { margin-left: 1em }
-
-/* Images */
-
-img { margin-top: 1.25rem }
-
-/* Index tables */
-
-ul.indexlist { list-style-type: none; margin-left:0; padding:0; }
-ul.indexlist li { margin-left:0; padding: 0; }
-
-/* Odig package index */
-
-.by-name ol, .by-tag ol, .errors ol { list-style-type: none; margin-left:0; }
-.by-name ol ol, .by-tag ol ol { margin-top:0; margin-bottom: 0 }
-.by-name li, .by-tag li, .errors li { margin-left:0; }
-
-.by-name .version { font-size: 0.625rem; color: #AAA }
-.by-name nav { margin-bottom: 0.625rem }
-.by-name nav a
-{ text-transform: uppercase; font-size: 1.125rem;
-  margin-right:1ex; color: #222; display: inline-block; }
-
-.by-tag nav a { margin-right:1ex; color: #222; display: inline-block; }
-.by-tag > ol > li { margin-top: 0.625rem; }
-.by-tag > ol > li > span,
-.by-tag > ol > li > ol,
-.by-tag > ol > li > ol > li { display: inline-block; margin-right: 1ex; }
-
-/* Odig package page */
-
-.package nav { display: inline; font-size: 0.875rem; font-weight: normal; }
-.package .version { font-size: 0.875rem; }
-
-/* This doesn't work in 4.03 because of spurious br's */
-h1 + .indextable, h1 + .sel { margin-top: 0.625rem }
-.sel { font-weight: normal; font-style: italic;
-       font-size:0.875rem; margin-top:1.25rem; }
-.sel + .indextable { margin-top:0.625rem;
-                     margin-bottom: 1.25rem; margin-left: 1ex; }
-
-.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; }
-
-/* Odig ocamldoc adjustements. */
-
-#info, .by-name h2, .by-tag h2, .errors h2
-{ font-size: 1.25rem;
-  line-height: 2.4375rem; /* 2.5 rem - border width */
-  border-top-style: solid;
-  border-width: 1px;
-  border-color: #DDDDDD; }
-
-#info + *, .by-name h2 + *, .by-tag h2 + *, .errors h2 { margin-top: 0.625rem; }
-
-body h1:first-child { display: none } /* package page. */
-
-/* Mobile adjustements
-  Can't really do anything we need to get a <meta> for viewport generated */
-
-@media only screen and (max-width: 78ex)
-{ body { margin: auto; } }
-
-/* Print adjustements. */
-
-@media print
-{ body { color: black; background: white; }
-  body nav:first-child { visibility: hidden; }}
-
-/*---------------------------------------------------------------------------
-   Copyright (c) 2016 Daniel C. Bünzli
-
-   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.
-  ---------------------------------------------------------------------------*/
diff --git a/doc/type_Log.html b/doc/type_Log.html
deleted file mode 100644
index d0b6980..0000000
--- a/doc/type_Log.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<html><head>
-<link rel="stylesheet" href="style.css" type="text/css">
-<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
-<meta name="viewport" content="width=device-width, initial-scale=1">
-<link rel="Start" href="index.html">
-<link title="Index of types" rel=Appendix href="index_types.html">
-<link title="Index of values" rel=Appendix href="index_values.html">
-<link title="Index of modules" rel=Appendix href="index_modules.html">
-<link title="Log" rel="Chapter" href="Log.html"><title>Log</title>
-</head>
-<body>
-<code class="code"><span class="keyword">sig</span><br>
-&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;privacy_level&nbsp;=&nbsp;<span class="constructor">Private</span>&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="constructor">Semi_private</span>&nbsp;<span class="keywordsign">|</span>&nbsp;<span class="constructor">Public</span><br>
-&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;item&nbsp;=&nbsp;<span class="constructor">Item</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Log</span>.privacy_level&nbsp;*&nbsp;<span class="keywordsign">'</span>a&nbsp;*&nbsp;<span class="keywordsign">'</span>a<br>
-&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;log_entry&nbsp;=&nbsp;<span class="constructor">Log_entry</span>&nbsp;<span class="keyword">of</span>&nbsp;<span class="constructor">Ptime</span>.date&nbsp;*&nbsp;<span class="keywordsign">'</span>a&nbsp;*&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="constructor">Log</span>.item&nbsp;list<br>
-&nbsp;&nbsp;<span class="keyword">type</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;log&nbsp;=&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="constructor">Log</span>.log_entry&nbsp;list<br>
-&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;compatible_privacy&nbsp;:&nbsp;<span class="constructor">Log</span>.privacy_level&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Log</span>.privacy_level&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;bool<br>
-&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;privacy_level_of_char&nbsp;:&nbsp;char&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="constructor">Log</span>.privacy_level&nbsp;option<br>
-&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;filter_privacy_level&nbsp;:<br>
-&nbsp;&nbsp;&nbsp;&nbsp;<span class="constructor">Log</span>.privacy_level&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="constructor">Log</span>.item&nbsp;list&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="constructor">Log</span>.item&nbsp;list<br>
-&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;log_parser&nbsp;:&nbsp;string&nbsp;<span class="constructor">Log</span>.log&nbsp;<span class="constructor">Angstrom</span>.t<br>
-&nbsp;&nbsp;<span class="keyword">val</span>&nbsp;apply_markup&nbsp;:&nbsp;(<span class="keywordsign">'</span>a&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>b)&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>a&nbsp;<span class="constructor">Log</span>.log&nbsp;<span class="keywordsign">-&gt;</span>&nbsp;<span class="keywordsign">'</span>b&nbsp;<span class="constructor">Log</span>.log<br>
-<span class="keyword">end</span></code></body></html>
\ No newline at end of file