summary refs log tree commit diff stats
path: root/config/nimdoc.cfg
diff options
context:
space:
mode:
Diffstat (limited to 'config/nimdoc.cfg')
-rw-r--r--[-rwxr-xr-x]config/nimdoc.cfg454
1 files changed, 220 insertions, 234 deletions
diff --git a/config/nimdoc.cfg b/config/nimdoc.cfg
index 489aa0b9f..99751f79d 100755..100644
--- a/config/nimdoc.cfg
+++ b/config/nimdoc.cfg
@@ -1,278 +1,264 @@
 # This is the config file for the documentation generator.
-# (c) 2009 Andreas Rumpf
-# Feel free to edit the templates as you need.
+# (c) 2016 Andreas Rumpf
+# Feel free to edit the templates as you need. If you modify this file, it
+# might be worth updating the hardcoded values in packages/docutils/rstgen.nim
 
-split.item.toc = "20"  
+split.item.toc = "20"
 # too long entries in the table of contents wrap around
 # after this number of characters
 
 doc.section = """
 <div class="section" id="$sectionID">
-<h1><a class="toc-backref" href="#$sectionTitleID">$sectionTitle</a></h1>
-<dl class="item">
-$content
-</dl></div>
+  <h1><a class="toc-backref" href="#$sectionID">$sectionTitle</a></h1>
+  <dl class="item">
+    $content
+  </dl>
+</div>
 """
 
-doc.section.toc = """
+# Just a single item in the TOC (e.g. imports, exports)
+doc.section.toc_item = """
 <li>
-  <a class="reference" href="#$sectionID" id="$sectionTitleID">$sectionTitle</a>
-  <ul class="simple">
-    $content
-  </ul>
+  <a class="reference reference-toplevel" href="#$sectionID" id="$sectionTitleID">$sectionTitle</a>
 </li>
 """
 
-doc.item = """
-<dt id="$itemID"><pre>$header</pre></dt>
-<dd>
-$desc
-</dd>
+# This is a section (e.g. procs, types) in the TOC which gets turned into a drop down
+doc.section.toc = """
+<li>
+  <details open>
+    <summary><a class="reference reference-toplevel" href="#$sectionID" id="$sectionTitleID">$sectionTitle</a></summary>
+    <ul class="simple simple-toc-section">
+      $content
+    </ul>
+  </details>
+</li>
 """
 
-doc.item.toc = """
-  <li><a class="reference" href="#$itemID">$name</a></li>
+doc.section.toc2 = """
+<ul class="simple nested-toc-section">$plainName
+  $content
+</ul>
 """
 
-doc.toc = """
-<div class="navigation" id="navigation">
-<p class="topic-title first">Navigation</p>
-<ul class="simple">
-$content
-</ul>
-</div>"""
+# Chunk of HTML emitted for each entry in the HTML table of contents.
+# Available variables are:
+# * $desc: the actual docstring of the item.
+# * $header: the full version of name, including types, pragmas, tags, etc.
+# * $header_plain: like header but without HTML (and without pragmas, tags, etc.),
+#   for attribute embedding.
+# * $itemID: numerical unique entry of the item in the HTML.
+# * $itemSym: short symbolic name of the item for easier hyperlinking.
+# * $itemSymEnc: quoted version for URLs or attributes.
+# * $itemSymOrID: the symbolic name or the ID if that is not unique.
+# * $itemSymOrIDEnc: quoted version for URLs or attributes.
+# * $name: reduced name of the item.
+# * $uniqueName: name with parameters for routine types or $name for others.
+# * $seeSrc: generated HTML from doc.item.seesrc (if some switches are used).
 
-doc.body_toc = """
-$tableofcontents
-<div class="content" id="content">
-$moduledesc
-$content
+doc.item = """
+<div id="$itemSymOrID">
+  <dt><pre>$header</pre></dt>
+  <dd>
+    $deprecationMsg
+    $desc
+    $seeSrc
+  </dd>
 </div>
 """
 
-doc.body_no_toc = """
-$moduledesc
-$content
+# A wrapper of a few overloaded `doc.item`s with the same basic name
+# * $header_plain - see above
+# * $overloadGroupName - the anchor for this whole group
+# * $content - string containing `doc.item`s themselves
+doc.item2 = """
+<div id="$overloadGroupName">
+  $content
+</div>
 """
 
-doc.file = """<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<!--  This file is generated by Nimrod. -->
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<title>$title</title>
-<style type="text/css">
-
-span.DecNumber {color: blue}
-span.BinNumber {color: blue}
-span.HexNumber {color: blue}
-span.OctNumber {color: blue}
-span.FloatNumber {color: blue}
-span.Identifier  {color: black}
-span.Keyword {font-weight: bold}
-span.StringLit {color: blue}
-span.LongStringLit {color: blue}
-span.CharLit {color: blue}
-span.EscapeSequence {color: black}
-span.Operator {color: black}
-span.Punctation {color: black}
-span.Comment, span.LongComment {font-style:italic; color: green}
-span.RegularExpression  {color: pink}
-span.TagStart {color: yellow}
-span.TagEnd {color: yellow}
-span.Key  {color: blue}
-span.Value  {color: black}
-span.RawData {color: blue}
-span.Assembler  {color: blue}
-span.Preprocessor {color: yellow}
-span.Directive  {color: yellow}
-span.Command, span.Rule, span.Hyperlink, span.Label, span.Reference, 
-span.Other  {color: black}
-
-div.navigation {
-  float: left; 
-  width: 30%;
-  margin: 0; padding: 0;
-  border: 3px outset #7F7F7F;
-  background-color: #7F7F7F;
-  -moz-border-radius-bottomleft:5px;
-  -moz-border-radius-bottomright:5px;
-  -moz-border-radius-topleft:5px;
-  -moz-border-radius-topright:5px; 
-}
-
-div.navigation ul {
-  list-style-type: none;
-  padding-left: 1em;
-}
-div.navigation ul li a, div.navigation ul li a:visited {
-  font-weight: bold;
-  color: #FFFFFF;
-  text-decoration: none;
-}
-div.navigation ul li a:hover {
-  font-weight: bold;
-  text-decoration: none;
-  color: gold;
-}
-
-div.content {
-  margin-left: 30%;
-  padding: 0 1em;
-  border-left: 4em;
-}
-
-dl.item dd, dl.item dd p {
-  margin-top:3px;
-}
-dl.item dd pre {
-  margin-left: 15pt;
-  border: 0px;
-}
-dl.item dt, dl.item dt pre {
-  margin:  20pt 0 0 0;
-}
+# Chunk of HTML emitted for each entry in the HTML table of contents.
+# See doc.item for available substitution variables.
 
-pre, span.tok {
-  background-color:#F9F9F9;
-  border:1px dotted #2F6FAB;
-  color:black;
-}
-
-span.red {
-  color: #A80000;
-}
+# This is used for TOC items which are not overloadable (e.g. types).
+# `$header_plain` would be too verbose here, so we use $name.
+doc.item.toc = """
+<li><a class="reference" href="#$itemSymOrIDEnc" title="$header_plain">$name</a></li>
+"""
 
-/*
-:Author: David Goodger
-:Contact: goodger@python.org
-:Date: Date: 2006-05-21 22:44:42 +0200 (Sun, 21 May 2006)
-:Revision: Revision: 4564
-:Copyright: This stylesheet has been placed in the public domain.
+# This is used for TOC items which are grouped by the same name (e.g. procs).
+doc.item.tocTable = """
+<li><a class="reference" href="#$itemSymOrIDEnc" title="$header_plain">$header_plain</a></li>
+"""
 
-Default cascading style sheet for the HTML output of Docutils.
+# HTML rendered for doc.item's seeSrc variable. Note that this will render to
+# the empty string if you don't pass anything through --git.url. Available
+# substitutaion variables here are:
+# * $commit: branch/commit to use in source link.
+# * $devel: branch to use in edit link.
+# * $path: relative path to the file being processed.
+# * $line: line of the item in the original source file.
+# * $url: whatever you did pass through the --git.url switch (which also
+#   gets variables path/line replaced!)
+doc.item.seesrc = """
+<a href="${url}/tree/${commit}/${path}#L${line}" class="link-seesrc" target="_blank">Source</a>&nbsp;&nbsp;
+<a href="${url}/edit/${devel}/${path}#L${line}" class="link-seesrc" target="_blank" >Edit</a>&nbsp;&nbsp;
+"""
 
-See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
-customize this style sheet.
-*/
-/* used to remove borders from tables and images */
-.borderless, table.borderless td, table.borderless th { border: 0 }
+doc.deprecationmsg = """
+<div class="deprecation-message">
+  <b>$label</b> $message
+</div>
+"""
 
-table.borderless td, table.borderless th {
-  /* Override padding for "table.docutils td" with "! important".
-     The right padding separates the table cells. */
-  padding: 0 0.5em 0 0 ! important }
+doc.toc = """
+<ul class="simple simple-toc" id="toc-list">
+  $content
+</ul>
+"""
 
-.first { margin-top: 0 ! important }
-.last, .with-subtitle { margin-bottom: 0 ! important }
-.hidden { display: none }
-a.toc-backref { text-decoration: none ; color: black }
-blockquote.epigraph { margin: 2em 5em ; }
-dl.docutils dd { margin-bottom: 0.5em }
-div.abstract { margin: 2em 5em }
-div.abstract p.topic-title { font-weight: bold ; text-align: center }
-div.admonition, div.attention, div.caution, div.danger, div.error,
-div.hint, div.important, div.note, div.tip, div.warning {
-  margin: 2em ; border: medium outset ; padding: 1em }
-div.admonition p.admonition-title, div.hint p.admonition-title,
-div.important p.admonition-title, div.note p.admonition-title,
-div.tip p.admonition-title { font-weight: bold ; font-family: sans-serif }
+doc.body_toc_groupsection = """
+<div class="search-groupby">
+  Group by:
+  <select onchange="groupBy(this.value)">
+    <option value="section">Section</option>
+    <option value="type">Type</option>
+  </select>
+</div>
+"""
 
-div.attention p.admonition-title, div.caution p.admonition-title,
-div.danger p.admonition-title, div.error p.admonition-title,
-div.warning p.admonition-title { color: red ; font-weight: bold ;
-  font-family: sans-serif }
+@if boot:
+# This is enabled with the "boot" directive to generate
+# the compiler documentation.
+# As a user, tweak the block below instead.
+# You can add your own global-links entries
+doc.body_toc_group = """
+<div class="row">
+  <div class="three columns">
+    <div class="theme-select-wrapper">
+      <label for="theme-select">Theme:&nbsp;</label>
+      <select id="theme-select" onchange="setTheme(this.value)">
+        <option value="auto">🌗 Match OS</option>
+        <option value="dark">🌑 Dark</option>
+        <option value="light">🌕 Light</option>
+      </select>
+    </div>
+    <div id="global-links">
+      <ul class="simple-boot">
+        <li><a href="manual.html">Manual</a></li>
+        <li><a href="lib.html">Standard library</a></li>
+        <li> <a id="indexLink" href="$theindexhref">Index</a></li>
+        <li><a href="compiler/$theindexhref">Compiler docs</a></li>
+        <li><a href="https://nim-lang.github.io/fusion/theindex.html">Fusion docs</a></li>
+        <li><a href="https://nim-lang.github.io/Nim/">devel</a>, <a href="https://nim-lang.org/documentation.html">stable</a></li>
+      </ul>
+    </div>
+    <div id="searchInputDiv">
+      Search: <input type="search" id="searchInput"
+        oninput="search()" />
+    </div>
+    $body_toc_groupsection
+    $tableofcontents
+  </div>
+  <div class="nine columns" id="content">
+    $seeSrc
+    <div id="tocRoot"></div>
+    $deprecationMsg
+    <p class="module-desc">$moduledesc</p>
+    $content
+  </div>
+</div>
+"""
 
-/* Uncomment (and remove this text!) to get reduced vertical space in
-   compound paragraphs.
-div.compound .compound-first, div.compound .compound-middle {
-  margin-bottom: 0.5em }
+@else
+# keep in sink with other `doc.body_toc_group` or better, refactor
+doc.body_toc_group = """
+<div class="row">
+  <div class="three columns">
+    <div class="theme-select-wrapper">
+      <label for="theme-select">Theme:&nbsp;</label>
+      <select id="theme-select" onchange="setTheme(this.value)">
+        <option value="auto">🌗 Match OS</option>
+        <option value="dark">🌑 Dark</option>
+        <option value="light">🌕 Light</option>
+      </select>
+    </div>
+    <div id="global-links">
+      <ul class="simple">
+        <li><a id="indexLink" href="$theindexhref">Index</a></li>
+      </ul>
+    </div>
+    <div id="searchInputDiv">
+      Search: <input type="search" id="searchInput" oninput="search()"/>
+    </div>
+    <div>
+      Group by:
+      <select onchange="groupBy(this.value)">
+        <option value="section">Section</option>
+        <option value="type">Type</option>
+      </select>
+    </div>
+    $tableofcontents
+  </div>
+  <div class="nine columns" id="content">
+    $seeSrc
+    <div id="tocRoot"></div>
+    $deprecationMsg
+    <p class="module-desc">$moduledesc</p>
+    $content
+  </div>
+</div>
+"""
+@end
 
-div.compound .compound-last, div.compound .compound-middle {
-  margin-top: 0.5em }
-*/
+doc.body_toc %= "${doc.body_toc_group}" # should only be used for boot
 
-div.dedication { margin: 2em 5em ; text-align: center ; font-style: italic }
-div.dedication p.topic-title { font-weight: bold ; font-style: normal }
-div.figure { margin-left: 2em ; margin-right: 2em }
-div.footer, div.header { clear: both; font-size: smaller }
-div.line-block { display: block ; margin-top: 1em ; margin-bottom: 1em }
-div.line-block div.line-block { margin-top: 0 ; margin-bottom: 0 ;
-  margin-left: 1.5em }
-div.sidebar { margin-left: 1em ; border: medium outset ;
-  padding: 1em ; background-color: #ffffee ; /*width: 40% ;*/ float: right ;
-  clear: right }
+doc.body_no_toc = """
+$moduledesc
+$content
+"""
 
-div.sidebar p.rubric { font-family: sans-serif ; font-size: medium }
-div.system-messages { margin: 5em }
-div.system-messages h1 { color: red }
-div.system-message { border: medium outset ; padding: 1em }
-div.system-message p.system-message-title { color: red ; font-weight: bold }
-div.topic { margin: 2em;}
-h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
-h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
-  margin-top: 0.4em }
-h1.title { text-align: center }
-h2.subtitle { text-align: center }
-/* hr.docutils { width: 75% } */
-img.align-left { clear: left }
-img.align-right { clear: right }
-ol.simple, ul.simple { margin-bottom: 1em }
-ol.arabic { list-style: decimal }
-ol.loweralpha { list-style: lower-alpha }
-ol.upperalpha { list-style: upper-alpha }
-ol.lowerroman { list-style: lower-roman }
-ol.upperroman { list-style: upper-roman }
-p.attribution { text-align: right ; margin-left: 50% }
-p.caption { font-style: italic }
-p.credits { font-style: italic ; font-size: smaller }
-p.label { white-space: nowrap }
-p.rubric { font-weight:bold;font-size:larger;color:maroon;text-align:center}
-p.sidebar-title {font-family: sans-serif ;font-weight: bold ;font-size: larger }
-p.sidebar-subtitle {font-family: sans-serif ; font-weight: bold }
-p.topic-title { font-weight: bold }
-pre.address { margin-bottom: 0;margin-top:0;font-family:serif;font-size:100% }
-pre.literal-block, pre.doctest-block {margin-left: 2em ;margin-right: 2em }
-span.classifier {font-family: sans-serif;font-style: oblique }
-span.classifier-delimiter {font-family: sans-serif;font-weight: bold }
-span.interpreted {font-family: sans-serif }
-span.option {white-space: nowrap }
-span.pre {white-space: pre }
-span.problematic {color: red }
-span.section-subtitle {
-  /* font-size relative to parent (h1..h6 element) */
-  font-size: 80% }
+# $1 - number of listing in document, $2 - language (e.g. langNim), $3 - anchor
+doc.listing_start = "<pre$3 class=\"listing\">"
+doc.listing_end = "</pre>"
 
-table.citation { border-left: solid 1px gray; margin-left: 1px }
-table.docinfo {margin: 2em 4em }
-table.docutils {margin-top: 0.5em;margin-bottom: 0.5em }
-table.footnote {border-left: solid 1px black;margin-left: 1px }
+# * $analytics: Google analytics location, includes <script> tags
+doc.file = """<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--  This file is generated by Nim. -->
+<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<title>$title</title>
 
-table.docutils td, table.docutils th,
-table.docinfo td, table.docinfo th {padding-left: 0.5em;padding-right: 0.5em;
-  vertical-align: top}
+<!-- Google fonts -->
+<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/>
+<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/>
 
-table.docutils th.field-name, table.docinfo th.docinfo-name {
-  font-weight: bold;text-align: left;white-space: nowrap;padding-left: 0 }
-h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
-h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {font-size: 100% }
-ul.auto-toc { list-style-type: none }
-/*a.reference { color: #E00000; font-weight:bold;}
-a.reference:hover {color: #E00000;background-color: #ffff00;display: margin;
-  font-weight:bold;}*/
+<!-- Favicon -->
+<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/>
+<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII=">
 
-</style>
+<!-- CSS -->
+<link rel="stylesheet" type="text/css" href="${nimdoccss}?v=$nimVersion">
 
+<!-- JS -->
+<script type="text/javascript" src="${dochackjs}?v=$nimVersion"></script>
 </head>
 <body>
-<div class="document" id="documentId">
-<h1 class="title">$title</h1>
-$content
-<small>Generated: $date $time UTC</small>
-</div>
+  <div class="document" id="documentId">
+    <div class="container">
+      <h1 class="title">$title</h1>$subtitle
+      $content
+      <div class="twelve-columns footer">
+        <span class="nim-sprite"></span>
+        <br>
+        <small style="color: var(--hint);">Made with Nim. Generated: $date $time UTC</small>
+      </div>
+    </div>
+  </div>
+  $analytics
 </body>
 </html>
 """
-