Commit c4889d92 authored by ak's avatar ak
Browse files

update docs

parent 38a1af52
Pipeline #2580 failed with stage
in 11 seconds
......@@ -2,18 +2,26 @@
*Effortless generation of documentation for Your Python project sensation.* 🙄
Supporting [poetry](), recommending [pre-commit-hooks]() and generating a fully hackable mini web site from a project README.md and project code comments using [pdoc](). All while combining them and [other tools](https://git.c3pb.de/ak/pykyll/-/blob/master/requirements.txt) with a glue code Python class and making them into an opinionated work flow to make your project: *Go, document yourself!"
Supporting [poetry](https://python-poetry.org/), recommending [pre-commit-hooks](https://pre-commit.com/) and generating a fully hackable mini web site from a project README.md and project code comments using [pdoc3](https://pdoc3.github.io/pdoc/). All while combining them and [other tools](https://git.c3pb.de/ak/pykyll/-/blob/master/requirements.txt) with a glue code Python class and making them into an opinionated work flow to make your project: *Go, document itself!*
![y is missing](https://pykyll.harmlos.info/pykyll_logo.png)
This software is highly adapted to a particular workflow and not for everyone, though you may find it usefull. You can start from a web page like this in an instant
This software is highly adapted to a particular workflow and not for everyone. It is currently *in a state*, namely a state of being rewritten.
<figure>
<a href="https://pykyll.harmlos.info">
<img class="icon" src="https://pykyll.harmlos.info/pykyll_logo.png">
</a>
<figcaption><a href="https://git.c3pb.de/ak/pykyll/-/tree/master/docs">pykyll self doc demo site</a></figcaption>
</figure>
[unziped](https://pykyll.harmlos.info/html_out.zip) into your projects `docs/html_out` subfolder. This document is getting ahead of itself. Read the friendly
## Documentation
- [Web Site](https://pykyll.harmlos.info/pykyll) in HTML
- [Git Repository](https://git.c3pb.de/ak/pykyll) in Markdown Text
- [Web Site](https://pykyll.harmlos.info/pykyll) generated from `"""docstrings"""` by pdoc3
- [Markdown](https://git.c3pb.de/ak/pykyll) docs.
- This web site generated from the repository [`README.md`](https://git.c3pb.de/ak/pykyll/-/blob/master/README.md)
Pykyll */pik:l/* is a friendly tool that aims to be useful and by no means *intended* to be a foot gun. Its aim is to ease maintaining documentation of software projects.
`pykyll`s aim is to ease maintaining documentation of software projects.
### Install
......@@ -21,12 +29,12 @@ Download the [latest wheel](https://git.c3pb.de/ak/pykyll/-/tree/master/dist) an
Tip: Don't forget the `./` in `pipx install ./pykyll-SEMANTIC-VERSION-STRING.whl`
[![](https://harmlos.info/ak.png)](https://ak.harmlos.info#software)
### Worflow
Starting out from any git repository generated by [poetry]().
### Initialise and Check your already existing git repository
:::shell
......@@ -35,12 +43,29 @@ Starting out from any git repository generated by [poetry]().
In case you are not developing with poetry, you may ignore the suggestions from the output and instead handle the virtual environment yourself.
### Build docs subfrolder
### Build docs sub folder
and put the mini web site into `docs/html_out`.
:::shell
pykyll build
Will turn your projects README.md into a mini site in `docs/html_out` and generate a description from your code comments. Check out pykylls own web site at is has *Gone and documented itself!*
Will turn your projects README.md into a mini site in `docs/html_out` and generate a description from your code comments using `pdoc`. Check out pykylls own web site at is has *Gone and documented itself!*
### Lokal development web server
Using Pythons `http.server`
:::shell
pykyll serve
As all commands on this page intended to be executed from within your projects `poetry shell` or virtual environment manages by other means and by no means intended for production use. This is simply checked by calling
:::python
try:
os.environ["VIRTUAL_ENV"]
except KeyError:
foo()
#### SFTP Upload
......@@ -52,25 +77,53 @@ Make yourself a `settings.py` following [this example](https://git.c3pb.de/ak/py
Please consider the importance of line 1.
# Pygments Test
## Self Test
### H3
#### H4
##### H5
###### H6
> This is a quote
### Pygments
As the name of the code style sheet is simply hard coded, you may change the source code or you may generate a style sheet as recommended in the official pygments docs like so:
:::shell
pygmentize -S monokai -f html -a .codehilite > styles.css
Which naturally goes into your html_out as this is just a mini site to get something like this:
:::python
def serve(self, work_dir=os.getcwd(), htmlout="htmlout"):
"""
Serve current docs version on localhost.
"""
PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
os.chdir("docs/html_out")
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("Serving on http://0.0.0.0:8000")
print("\n[bold]<CTL> + <c> to quit[/bold]")
self.display_header()
def serve(self):
"""Serve current docs version on localhost."""
self.base_check() # make sure we are in the right directory
PORT = 8000
Handler = http.server.SimpleHTTPRequestHandler
os.chdir("docs/html_out") # Contens of the docu mini site
self.display_header()
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("\nServing on http://0.0.0.0:8000\n[bold]<Ctrl> + <c> to quit[/bold]")
with self.cons.status("cya on port 8000", spinner="hearts"):
try:
httpd.serve_forever()
except KeyboardInterrupt:
sys.exit()
self.cons.print("Bye") # with status: Use rich console print
sys.exit(0)
---
<figure>
<a href="https://ak.harmlos.info/#software">
<img class="icon" src="https://harmlos.info/ak.png">
</a>
<figcaption>2021</figcaption>
</figure>
[TOC]
No preview for this file type
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pykyll" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>Pykyll Documentation</title>
<link rel="stylesheet" href="pykyll.css" />
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<h1 id="pykyll-documentation">Pykyll Documentation</h1>
<p><em>Effortless generation of documentation for Your Python project sensation.</em> 🙄</p>
<p>Supporting <a href="">poetry</a>, recommending <a href="">pre-commit-hooks</a> and generating a fully hackable mini web site from a project README.md and project code comments using <a href="">pdoc</a>. All while combining them and <a href="https://git.c3pb.de/ak/pykyll/-/blob/master/requirements.txt">other tools</a> with a glue code Python class and making them into an opinionated work flow to make your project: *Go, document yourself!"</p>
<p><img alt="y is missing" src="https://pykyll.harmlos.info/pykyll_logo.png" /></p>
<p>This software is highly adapted to a particular workflow and not for everyone. It is currently <em>in a state</em>, namely a state of being rewritten.</p>
<h2 id="documentation">Documentation</h2>
<ul>
<li><a href="https://pykyll.harmlos.info/pykyll">Web Site</a> in HTML</li>
<li><a href="https://git.c3pb.de/ak/pykyll">Git Repository</a> in Markdown Text</li>
</ul>
<p>Pykyll <em>/pik:l/</em> is a friendly tool that aims to be useful and by no means <em>intended</em> to be a foot gun. Its aim is to ease maintaining documentation of software projects.</p>
<h3 id="install">Install</h3>
<p>Download the <a href="https://git.c3pb.de/ak/pykyll/-/tree/master/dist">latest wheel</a> and install to an ephemeral virtual environment handled by pipx.</p>
<p>Tip: Don't forget the <code>./</code> in <code>pipx install ./pykyll-SEMANTIC-VERSION-STRING.whl</code></p>
<p><a href="https://ak.harmlos.info#software"><img alt="" src="https://harmlos.info/ak.png" /></a></p>
<h3 id="worflow">Worflow</h3>
<p>Starting out from any git repository generated by <a href="">poetry</a>.</p>
<h3 id="initialise-and-check-your-already-existing-git-repository">Initialise and Check your already existing git repository</h3>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="codehilite"><pre><span></span><code>poetry shell
pykyll init
</code></pre></div>
</td></tr></table>
<p>In case you are not developing with poetry, you may ignore the suggestions from the output and instead handle the virtual environment yourself. </p>
<h3 id="build-docs-subfrolder">Build docs subfrolder</h3>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span></pre></div></td><td class="code"><div class="codehilite"><pre><span></span><code>pykyll build
</code></pre></div>
</td></tr></table>
<p>Will turn your projects README.md into a mini site in <code>docs/html_out</code> and generate a description from your code comments. Check out pykylls own web site at is has <em>Gone and documented itself!</em> </p>
<h4 id="sftp-upload">SFTP Upload</h4>
<p>Make yourself a <code>settings.py</code> following <a href="https://git.c3pb.de/ak/pykyll/-/blob/master/TEMPLATE_settings.py">this example</a>.</p>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal">1</span>
<span class="normal">2</span></pre></div></td><td class="code"><div class="codehilite"><pre><span></span><code><span class="n">echo</span> <span class="s2">&quot;settings.py&quot;</span> <span class="o">&gt;&gt;</span> <span class="o">.</span><span class="n">gitignore</span>
<span class="n">pykyll</span> <span class="n">export</span>
</code></pre></div>
</td></tr></table>
<p>Please consider the importance of line 1.</p>
<h1 id="pygments-test">Pygments Test</h1>
<table class="codehilitetable"><tr><td class="linenos"><div class="linenodiv"><pre><span class="normal"> 1</span>
<span class="normal"> 2</span>
<span class="normal"> 3</span>
<span class="normal"> 4</span>
<span class="normal"> 5</span>
<span class="normal"> 6</span>
<span class="normal"> 7</span>
<span class="normal"> 8</span>
<span class="normal"> 9</span>
<span class="normal">10</span>
<span class="normal">11</span>
<span class="normal">12</span>
<span class="normal">13</span>
<span class="normal">14</span>
<span class="normal">15</span></pre></div></td><td class="code"><div class="codehilite"><pre><span></span><code><span class="k">def</span> <span class="nf">serve</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">work_dir</span><span class="o">=</span><span class="n">os</span><span class="o">.</span><span class="n">getcwd</span><span class="p">(),</span> <span class="n">htmlout</span><span class="o">=</span><span class="s2">&quot;htmlout&quot;</span><span class="p">):</span>
<span class="sd">&quot;&quot;&quot;</span>
<span class="sd"> Serve current docs version on localhost.</span>
<span class="sd"> &quot;&quot;&quot;</span>
<span class="n">PORT</span> <span class="o">=</span> <span class="mi">8000</span>
<span class="n">Handler</span> <span class="o">=</span> <span class="n">http</span><span class="o">.</span><span class="n">server</span><span class="o">.</span><span class="n">SimpleHTTPRequestHandler</span>
<span class="n">os</span><span class="o">.</span><span class="n">chdir</span><span class="p">(</span><span class="s2">&quot;docs/html_out&quot;</span><span class="p">)</span>
<span class="k">with</span> <span class="n">socketserver</span><span class="o">.</span><span class="n">TCPServer</span><span class="p">((</span><span class="s2">&quot;&quot;</span><span class="p">,</span> <span class="n">PORT</span><span class="p">),</span> <span class="n">Handler</span><span class="p">)</span> <span class="k">as</span> <span class="n">httpd</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Serving on http://0.0.0.0:8000&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">[bold]&lt;CTL&gt; + &lt;c&gt; to quit[/bold]&quot;</span><span class="p">)</span>
<span class="bp">self</span><span class="o">.</span><span class="n">display_header</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">httpd</span><span class="o">.</span><span class="n">serve_forever</span><span class="p">()</span>
<span class="k">except</span> <span class="ne">KeyboardInterrupt</span><span class="p">:</span>
<span class="n">sys</span><span class="o">.</span><span class="n">exit</span><span class="p">()</span>
</code></pre></div>
</td></tr></table>
<hr />
<div class="toc">
<ul>
<li><a href="#pykyll-documentation">Pykyll Documentation</a><ul>
<li><a href="#documentation">Documentation</a><ul>
<li><a href="#install">Install</a></li>
<li><a href="#worflow">Worflow</a></li>
<li><a href="#initialise-and-check-your-already-existing-git-repository">Initialise and Check your already existing git repository</a></li>
<li><a href="#build-docs-subfrolder">Build docs subfrolder</a><ul>
<li><a href="#sftp-upload">SFTP Upload</a></li>
</ul>
</li>
</ul>
</li>
</ul>
</li>
<li><a href="#pygments-test">Pygments Test</a></li>
</ul>
</div>
</body>
</html>
/* Monospace NF */
@font-face {
font-family: 'Monospace';
font-style: normal;
font-weight: 400;
src: url('../fonts/nf/MesloLGS_NF_Regular.ttf');
}
@font-face {
font-family: 'Texturina';
font-style: normal;
font-weight: 400;
src: local('Texturina'), local('Texturina'),
url('../fonts/Texturina/Texturina-VariableFont_opsz\,wght.ttf') format('truetype');
}
/* ubuntu-300 - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: normal;
font-weight: 300;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Light'), local('Ubuntu-Light'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
/* ubuntu-regular - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: normal;
font-weight: 400;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-regular.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Regular'), local('Ubuntu-Regular'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-regular.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-regular.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-regular.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-regular.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-regular.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
/* ubuntu-300italic - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: italic;
font-weight: 300;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300italic.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Light Italic'), local('Ubuntu-LightItalic'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300italic.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300italic.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300italic.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300italic.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-300italic.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
/* ubuntu-italic - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: italic;
font-weight: 400;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-italic.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Italic'), local('Ubuntu-Italic'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-italic.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-italic.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-italic.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-italic.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-italic.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
/* ubuntu-500 - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: normal;
font-weight: 500;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Medium'), local('Ubuntu-Medium'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
/* ubuntu-500italic - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: italic;
font-weight: 500;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500italic.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Medium Italic'), local('Ubuntu-MediumItalic'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500italic.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500italic.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500italic.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500italic.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-500italic.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
/* ubuntu-700italic - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: italic;
font-weight: 700;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700italic.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Bold Italic'), local('Ubuntu-BoldItalic'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700italic.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700italic.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700italic.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700italic.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700italic.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
/* ubuntu-700 - latin_greek-ext_latin-ext_cyrillic-ext */
@font-face {
font-family: 'Ubuntu';
font-style: normal;
font-weight: 700;
src: url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700.eot');
/* IE9 Compat Modes */
src: local('Ubuntu Bold'), local('Ubuntu-Bold'),
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700.eot?#iefix') format('embedded-opentype'),
/* IE6-IE8 */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700.woff2') format('woff2'),
/* Super Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700.woff') format('woff'),
/* Modern Browsers */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700.ttf') format('truetype'),
/* Safari, Android, iOS */
url('../fonts/ubuntu-v13-latin_greek-ext_latin-ext_cyrillic-ext-700.svg#Ubuntu') format('svg');
/* Legacy iOS */
}
html{
padding: 0;
margin: 0;
scroll-behavior: smooth;
line-height: 1.4;
/* background-color: ghostwhite;
color: black; */
font-family: 'Ubuntu';
background-color: #101700;
color: green;
}
body {
padding: 0;
margin: 0;
padding-left: 3vw;
padding-right: 3vw;
}
a{
text-decoration: none;
font-weight: bolder;
color: darkslategray;
}
a:hover{
color: red;
}
img{
max-width: 95vw;
}
/* img:hover, img:focus{
max-width: 100%;
max-height: 85vh;
transition: 1s ease;
transition-delay: 1s;
} */
h1,
h2,
h3,
h4,
h5,
h6{
font-family: 'Texturina';
}
/* p {
padding-bottom: 1em;
} */
/*
* A better looking default horizontal rule
*/
hr {
display: block;
height: 1vh;
min-width: 15vw;
border: 0;
border-top: 0.05em solid black;
margin: 0 auto;
padding: 0;
padding-top: 1vh;
padding-bottom: 1vh;
width: 33%;
text-align: center;
}
blockquote {
padding: 1.2em;
border-radius: 1em;
background-color: lightgray;
color: black;
}
header h1{
font-size: 3em;
font-family: 'Texturina';
}
header p{
font-weight: bolder;
display: inline;
}
code{
font-family: 'Monospace';
line-height: 0.8;
}
.small{
font-size: 0.5em;
}
.ellipsis{
width: 99%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.texturina{
font-family: 'Texturina';
}
.description{
font-weight: lighter;
}
.author::before{
content: 'by ';
}
.author {
font-weight: lighter;
display: inline;
}
.date {
display: block;
}
.date::before{
content: '⏱️ ';
}
.author, .date{
font-size: smaller;
}
figure figcaption{
visibility: hidden;
font-size: 0;
}
figure img{
max-width: 25vh;
}
figure:hover figcaption, figure:focus figcaption{
visibility: visible;
font-weight: bolder;
font-size: 1.2em;
}
figure:hover img:hover, figure:focus img:focus{
max-width: 100%;
max-height: 85vh;
transition: 1s ease;
transition-delay: 1s;
}
.toc::before{
font-size: 1rem;
font-family: 'Texturina';
color: goldenrod;
content: 'ToC \A ';
white-space: pre-wrap;
}
.toc{
margin: 0;
padding: 0;
font-size: 0;
min-height: 5vh;
width: 100%;
background-color: darkslategray;
position: fixed;
bottom: 0;
left: 0;
transition: 0.5s ease-in;
}
.toc:hover, .toc:focus{
padding: 1em;
font-size: 1.2em;
transition-delay: 0s;
bottom: 0;
left: 0;
background-color: goldenrod;
transition: 0.5s ease-out;
transition-delay: 0.3s;
z-index: +2;
margin-right: 1em;
}
.toc ul {
margin: 0;