Squash zola rewrite

Rewrote as a Zola static site

Do not commit session files, dammit!

Add anchor links

Fix anchor links

Reintroduce og: tags and some of ben's style

Import fork-awesome locally, make navbar without javascript

ben's patch (internal links)

Homepage is a dedicated Markdown file, and titles are fixed

Code highlighting in markdown is enabledx

Clarify submission process for RFCs

restore placeholder for RFC drafts

more relative urls

page.html does not fail when some variables are missing

Enable RSS! (only content with a date set appears in RSS feeds)

Add RSS link in HTML, fix quotes

Add drafts

Number of RFC entries can be limited in macro, introduced latest rfcs/drafts on homepage

bootstrap grid for latest content on homepage

latest entries is only on homepage

Drafts are not listed on homepage, empty drafts section is not rendered elsewhere

RFCs now have a table of contents (ToC)

base_url for personal site
This commit is contained in:
southerntofu 2019-08-02 16:10:37 +02:00
parent 3051d69ab3
commit 0d5b5cd42f
30 changed files with 5471 additions and 504 deletions

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
/vendor/
composer.phar
public/
*.sw*

View File

@ -6,6 +6,8 @@ However, unlike that attempt, this system will use YAML front-matter.
See [RFC 0](https://rfc.tildeverse.org/rfcs/0) for more info.
WARNING: On this experimental branch, that's not the case anymore. Frontmatter uses TOML formatting.
## nginx configs
```
location ~* ^/rfcs/(.+)$ {

View File

@ -1,11 +0,0 @@
{
"require": {
"tildeverse/wiki": "dev-master"
},
"repositories": [
{
"type": "vcs",
"url": "https://tildegit.org/ben/tildewiki"
}
]
}

292
composer.lock generated
View File

@ -1,292 +0,0 @@
{
"_readme": [
"This file locks the dependencies of your project to a known state",
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3ab3df15c4e40417f427b37691e83088",
"packages": [
{
"name": "erusev/parsedown",
"version": "1.7.3",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown.git",
"reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
"reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7",
"shasum": ""
},
"require": {
"ext-mbstring": "*",
"php": ">=5.3.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35"
},
"type": "library",
"autoload": {
"psr-0": {
"Parsedown": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Emanuil Rusev",
"email": "hello@erusev.com",
"homepage": "http://erusev.com"
}
],
"description": "Parser for Markdown.",
"homepage": "http://parsedown.org",
"keywords": [
"markdown",
"parser"
],
"time": "2019-03-17T18:48:37+00:00"
},
{
"name": "erusev/parsedown-extra",
"version": "0.7.1",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown-extra.git",
"reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/0db5cce7354e4b76f155d092ab5eb3981c21258c",
"reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c",
"shasum": ""
},
"require": {
"erusev/parsedown": "~1.4"
},
"type": "library",
"autoload": {
"psr-0": {
"ParsedownExtra": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Emanuil Rusev",
"email": "hello@erusev.com",
"homepage": "http://erusev.com"
}
],
"description": "An extension of Parsedown that adds support for Markdown Extra.",
"homepage": "https://github.com/erusev/parsedown-extra",
"keywords": [
"markdown",
"markdown extra",
"parsedown",
"parser"
],
"time": "2015-11-01T10:19:22+00:00"
},
{
"name": "mnapoli/front-yaml",
"version": "1.6.0",
"source": {
"type": "git",
"url": "https://github.com/mnapoli/FrontYAML.git",
"reference": "24070ace8b741247bb3161cbb38ecc541268b296"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/24070ace8b741247bb3161cbb38ecc541268b296",
"reference": "24070ace8b741247bb3161cbb38ecc541268b296",
"shasum": ""
},
"require": {
"erusev/parsedown": "~1.0",
"php": ">=5.4.0",
"symfony/yaml": "~2.1|^3.0|^4.0"
},
"require-dev": {
"league/commonmark": "~0.7",
"phpunit/phpunit": "~4.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Mni\\FrontYAML\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"time": "2017-10-29T19:29:55+00:00"
},
{
"name": "symfony/polyfill-ctype",
"version": "v1.11.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-ctype.git",
"reference": "82ebae02209c21113908c229e9883c419720738a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a",
"reference": "82ebae02209c21113908c229e9883c419720738a",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-ctype": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.11-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Ctype\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
},
{
"name": "Gert de Pagter",
"email": "BackEndTea@gmail.com"
}
],
"description": "Symfony polyfill for ctype functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"ctype",
"polyfill",
"portable"
],
"time": "2019-02-06T07:57:58+00:00"
},
{
"name": "symfony/yaml",
"version": "v4.3.2",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/c60ecf5ba842324433b46f58dc7afc4487dbab99",
"reference": "c60ecf5ba842324433b46f58dc7afc4487dbab99",
"shasum": ""
},
"require": {
"php": "^7.1.3",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
"symfony/console": "<3.4"
},
"require-dev": {
"symfony/console": "~3.4|~4.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "4.3-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony Yaml Component",
"homepage": "https://symfony.com",
"time": "2019-04-06T14:04:46+00:00"
},
{
"name": "tildeverse/wiki",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://tildegit.org/ben/tildewiki",
"reference": "751eb64c383cb7c6ec643eaf683b88aa1de351ea"
},
"require": {
"erusev/parsedown-extra": "^0.7.1",
"mnapoli/front-yaml": "^1.6"
},
"type": "library",
"autoload": {
"psr-4": {
"Tildeverse\\Wiki\\": "src/"
}
},
"license": [
"GPLv3"
],
"authors": [
{
"name": "Ben Harris",
"email": "ben@tilde.team"
}
],
"description": "parsedown extensions for tilde wikis",
"time": "2019-07-03T05:06:34+00:00"
}
],
"packages-dev": [],
"aliases": [],
"minimum-stability": "stable",
"stability-flags": {
"tildeverse/wiki": 20
},
"prefer-stable": false,
"prefer-lowest": false,
"platform": [],
"platform-dev": []
}

22
config.toml Normal file
View File

@ -0,0 +1,22 @@
# The URL the site will be built for
base_url = "https://thunix.net/~southerntofu"
# Title and description for RSS / Open Graph
title = "tildeverse RFCs"
description = "This is the homepage of the tildeverse Request For Comments. People come here to propose and debate standards across the tildeverse."
generate_rss = true
default_language = "en"
# Whether to automatically compile all Sass files in the sass directory
compile_sass = true
# Whether to do syntax highlighting
# Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola
highlight_code = true
# Whether to build a search index to be used later on by a JavaScript library
build_search_index = false
[extra]
# Number of RFCS & drafts displayed on homepage
home_entries = 5

26
content/_index.md Normal file
View File

@ -0,0 +1,26 @@
+++
title = "the tildeverse RFC system"
draft = false
+++
## Tildeverse RFC system
> ...The RFC system for tilde boxes will be hosted at https://rfc.tildeverse.org/ and on the tildeverse gitea as <a href="https://tildegit.org/tildeverse/rfcs">tildeverse/rfcs</a>...
>
> ...RFC documents are simply requests. They are for simple things like defining how something should work or how something should be done.
>
> Standards documents are like mandates. They require something. For example, this document requires a would-be submitter to follow this format for RFCs. A Standards document can be amended by RFC documents, and any RFC documents in violation of a Standards document, unless otherwise stated within the Standards document, are invalid.
>
> <footer>
> <cite>
> <a href="/rfcs/0">RFC 0: Standard 1: RFC Format and Semantics</a> by <a href="https://tilde.team/~khuxkm/">Robert Miles</a> (aka khuxkm)
> </cite>
> </footer>
This system aims to help codify some things about Tildeverse tilde servers.
### Submission guidelines ([from the standard](@/rfcs/0.md))
An RFC should be submitted as a pull request to the [git repo](https://tildegit.org/tildeverse/rfcs). It should add a single Markdown within the `content/rfcs/` folder, named according to what your RFC is supposed to achieve. For example, a draft name for an RFC to make tilde.chat allow IRC connections without SSL could be `draft-tilde-chat-without-ssl.md`.
Your RFC stays a draft until it is accepted. If or when an RFC is accepted, it will be assigned a number `n`. The draft is renamed `rfc{{n}}.md`, and in its frontmatter, the status must be changed to `Accepted` and the number tag must contain the assigned number. When you finish doing this, the PR will be merged.

5
content/drafts/_index.md Normal file
View File

@ -0,0 +1,5 @@
+++
title = "Drafts"
insert_anchor_links = "left"
+++

View File

@ -1,9 +1,11 @@
---
title: "Standard 1: RFC Format and Semantics"
number: 0
author: Robert Miles <khuxkm@tilde.team>
status: Accepted
---
+++
title = "Standard 1: RFC Format and Semantics"
date = 2018-08-09
[extra]
number = 0
author = "Robert Miles <khuxkm@tilde.team>"
status = "Accepted"
+++
## Abstract

View File

@ -1,9 +1,11 @@
---
title: Remembering A Dear Friend Forever
number: 1
author: Robert Miles <khuxkm@tilde.team>
status: Accepted
---
+++
title = "Remembering A Dear Friend Forever"
date = 2018-08-28
[extra]
number = 1
author = "Robert Miles <khuxkm@tilde.team>"
status = "Accepted"
+++
## Abstract
tilde.town member [abraxas](https://tilde.town/~abraxas/) passed away in a motorcycle

View File

@ -1,9 +1,11 @@
---
title: Standardising IRC Bot Behavior
author: Robert Miles <khuxkm@tilde.team>
status: Accepted
number: 2
---
+++
title = "Standardising IRC Bot Behavior"
date = 2018-09-26
[extra]
author = "Robert Miles <khuxkm@tilde.team>"
status = "Accepted"
number = 2
+++
## Abstract
IRC bots are programs that communicate with users through Internet Relay Chat.

View File

@ -1,9 +1,11 @@
---
title: "Tilde Center Specification"
number: 3
author: Austin Ewens <aewens@tilde.center>
status: Accepted
---
+++
title = "Tilde Center Specification"
date = 2019-02-18
[extra]
number = 3
author = "Austin Ewens <aewens@tilde.center>"
status = "Accepted"
+++
## Abstract
This document outlines the core philosophy and components that the Tilde Center

4
content/rfcs/_index.md Normal file
View File

@ -0,0 +1,4 @@
+++
title = "RFC List"
insert_anchor_links = "left"
+++

View File

@ -1,6 +0,0 @@
<br><br>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
</body>
</html>

View File

@ -1,21 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://tilde.team/css/hacker.css">
<link rel="stylesheet" href="https://tilde.team/css/fork-awesome.css">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<title>tildeverse RFCs | <?=($title ?? 'the tildeverse RFC system')?></title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<meta property="og:title" content="tildeverse RFCs | <?=($title ?? 'the tildeverse RFC system')?>">
<meta property="og:url" content="https://rfc.tildeverse.org<?=$_SERVER['REQUEST_URI']?>">
<meta property="og:description" content="<?=($desc ?? ($title ?? 'the home of the tildeverse RFC system'))?>">
<meta property="og:image" content="https://rfc.tildeverse.org/apple-icon.png">
<meta property="og:site_name" content="tildeverse RFCs">
<meta property="og:type" content="website">
</head>
<body style="padding-top: 70px;">
<div class="container">
<?php require 'navbar.php'; ?>

View File

@ -1,29 +0,0 @@
<?php include __DIR__.'/header.php'; ?>
<h2>Tildeverse RFC system</h2>
<blockquote>
<p>...The RFC system for tilde boxes will be hosted at https://rfc.tildeverse.org/ and on the tildeverse gitea as <a href="https://tildegit.org/tildeverse/rfcs">tildeverse/rfcs</a>...</p>
<p>...RFC documents are simply requests. They are for simple things like defining how something should work or how something should be done.</p>
<p>Standards documents are like mandates. They require something. For example, this document requires a would-be submitter to follow this
format for RFCs. A Standards document can be amended by RFC documents, and any RFC documents in violation of a Standards document,
unless otherwise stated within the Standards document, are invalid.</p>
<footer>
<cite>
<a href="/rfcs/0">RFC 0: Standard 1: RFC Format and Semantics</a>
by <a href="https://tilde.team/~khuxkm/">Robert Miles</a> (aka khuxkm)
</cite>
</footer>
</blockquote>
<p>This system aims to help codify some things about Tildeverse tilde servers.</p>
<h3>Submission guidelines (<a href="/rfcs/0">from the standard</a>)</h3>
<p>An RFC should be submitted as a PR to the <a href="https://tildegit.org/tildeverse/rfcs">git repo</a>.</p>
<p>Until your RFC gets assigned a number, give it a draft name. For example, a draft name for an RFC to make tilde.chat allow IRC connections without SSL could be <code>draft-tilde-chat-without-ssl</code>.</p>
<p>Your RFC stays a draft until it is accepted. If or when an RFC is accepted, it will be assigned a number. The status must be changed to <code>Accepted</code> and the number tag must contain the assigned number. When you finish doing this, the PR will be merged.</p>
<?php include __DIR__.'/footer.php'; ?>

View File

@ -1,20 +0,0 @@
<nav class="navbar navbar-default navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="/">tildeverse RFCs</a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="/"><i class="fa fa-home"></i> Home</a></li>
<li><a href="/rfcs/"><i class="fa fa-file-text"></i> RFCs</a></li>
<li><a href="https://tildegit.org/tildeverse/rfcs"><i class="fa fa-code-fork"></i> Git</a></li>
</ul>
</div>
</div>
</nav>

View File

@ -1,99 +0,0 @@
<?php
include __DIR__.'/../vendor/autoload.php';
$parser = Tildeverse\Wiki\Parser::factory();
if (isset($_GET["number"])) {
$num = $_GET["number"];
} elseif (count($_GET) == 1) {
$num = array_keys($_GET)[0];
} else {
$num = "";
}
$filename = "rfc{$num}.md";
if (file_exists($filename)) {
$document = $parser->parse(file_get_contents($filename));
$yml = $document->getYAML();
$content = $document->getContent();
$title = $yml['title'] ?? 'invalid';
$author = htmlspecialchars($yml['author']);
$description = "RFC {$yml['number']}: {$yml['title']} by {$author}";
include __DIR__.'/../header.php';
?>
<a href=".">&lt; back to list</a>
<h1>RFC <?=$yml['number']?>: <?=$yml['title']?></h1>
<p>Author: <?=$author?></p>
<p>Status: <?=$yml["status"]?></p>
<br />
<?php if (isset($yml['updates'])) { ?>
Updates:
<?php
$arr = explode(", ", $yml['updates']);
foreach ($arr as $num) {
echo "<a href='/rfcs/{$num}'>{$num}</a>";
if (next($arr)) {
echo ", ";
}
}
?>
<br />
<?php };?>
<?php if (isset($yml['updated-by'])) { ?>
Updated by:
<?php
$arr = explode(", ",$yml['updated-by']);
foreach ($arr as $num) {
echo "<a href='/rfcs/{$num}'>{$num}</a>";
if (next($arr)) {
echo ", ";
}
}?>
<br />
<?php } ?>
<?=$content?>
<?php
// we need to list the rfcs
} else {
$title="RFC List";
$description="A list of Tildeverse RFCs.";
include __DIR__.'/../header.php';
foreach (glob("*.md") as $rfc) {
$rfcs[] = [
"num" => substr(basename($rfc, ".md"), 3),
"yml" => $parser->parse(file_get_contents($rfc))->getYAML(),
];
}
?>
<h1>RFC List</h1>
<ul>
<?php foreach ($rfcs as $rfc) {
if ($rfc["yml"]["status"] !== "Accepted") continue;
?>
<li><a href="/rfcs/<?=$rfc["num"]?>">RFC <?=$rfc["num"]?>: <?=$rfc["yml"]['title']?></a></li>
<?php } ?>
</ul>
<h1>Drafts</h1>
<ul>
<?php foreach ($rfcs as $draft) {
if ($draft["yml"]["status"] === "Accepted") continue;
?>
<li><a href="/rfcs/<?=$draft["num"]?>">Draft <?=$draft["num"]?>: <?=$draft["yml"]["title"]?></a></li>
<?php } ?>
</ul>
<?php } ?>
<?php include __DIR__.'/../footer.php'; ?>

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

2470
static/css/fork-awesome.css Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 453 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
<small><a id="{{ id }}" class="text-muted" href="#{{ id }}"><i class="fa fa-link"></i></a></small>

64
templates/index.html Normal file
View File

@ -0,0 +1,64 @@
{%- import "partials/rfclist.html" as rfclist -%}
{%- import "partials/rfctoc.html" as rfctoc -%}
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="https://tilde.team/css/hacker.css">
<link rel="stylesheet" href="{{ get_url(path="css/fork-awesome.css") }}">
<link rel="icon" type="image/png" sizes="96x96" href="{{ get_url(path="favicon-96x96.png") }}">
<title>{% block title %}tildeverse RFCs | {{ title | default(value='the tildeverse RFC system') }}{% endblock %}</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
{% block og %}
<meta property="og:title" content="tildeverse RFCs | {{ title | default(value=config.title) }}">
<meta property="og:url" content="{{ url | default(value=config.base_url) }}">
<meta property="og:description" content="{{ description | default(value=config.description) }}">
<meta property="og:image" content="{{ get_url(path="apple-icon.png") }}">
<meta property="og:site_name" content="tildeverse RFCs">
<meta property="og:type" content="website">
{% endblock %}
{% if config.generate_rss %}
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path="rss.xml") }}">
{% endif %}
<style>
:target:before {
content:\"\";
display:block;
height:50px; /* fixed header height*/
margin:-50px 0 0; /* negative fixed header height */
}
.nav-menu {
font-weight: bold;
font-size: 2.5rem;
padding: 0.5rem;
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.nav-menu > a { margin: 0.2rem 1.5rem; text-decoration: none; border-bottom: 1px solid; }
</style>
</head>
<body style="padding-top: 1rem;">
<header class="container header" style="text-align: center; font-size: 2rem;">
<nav class="nav-menu">
<a href="{{ config.base_url }}"><i class="fa fa-home"></i>&nbsp;Home</a>
<a href="{{ get_url(path="@/rfcs/_index.md") }}"><i class="fa fa-file-text"></i>&nbsp;RFCs</a>
<a href="{{ get_url(path="@/drafts/_index.md") }}"><i class="fa fa-commenting"></i>&nbsp;Drafts</a>
<a href="https://tildegit.org/tildeverse/rfcs"><i class="fa fa-code-fork"></i>&nbsp;Git</a>
</nav>
</header>
<div class="container">
{% block main %}
{{ section.content | safe }}
<h1>Latest RFCs</h1>
{{ rfclist::from(name="rfcs", max=config.extra.home_entries|default(value=0)) }}
{% endblock %}
</div>
<br>
<br>
</div>
</body>
</html>

39
templates/page.html Normal file
View File

@ -0,0 +1,39 @@
{% extends "index.html" %}
{% block title %}
{% set title = page.title %}
{{ super() }}
{% endblock %}
{% block og %}
{% set title = page.title %}
{% set url = page.permalink %}
{% set description = page.summary %}
{{ super() }}
{% endblock %}
{% block main %}
<a href="{{ get_url(path="@/rfcs/_index.md") }}">&lt; back to list</a>
<h1>{% if page.extra.number %}RFC {{ page.extra.number }}: {% endif %}{{ page.title }}</h1>
{% if page.extra.author %}<p>Author: {{ page.extra.author }}</p>{% endif %}
{% if page.extra.status %}<p>Status: {{ page.extra.status }}</p>{% endif %}
{% if page.extra.updates %}
<br>
Updates:
{#{{ page.extra.updates | map(u => '<a href="#{u}">#{u}</a>') | join(', ') }} }}#}
<br>
{% endif %}
{% if page.extra.updated-by %}
Updated by:
{#{{ page.extra.updated-by | map(u => '<a href="#{u}">#{u}</a>') | join(', ') }} }}#}
<br>
{% endif %}
{{ rfctoc::new(headings=toc) }}
{{ page.content | safe }}
{% endblock %}

View File

@ -0,0 +1,21 @@
{% macro from(name, max=0) %}
{% set s = get_section(path=name ~ "/_index.md") %}
{{ self::from_section(s=s, max=max) }}
{% endmacro %}
{% macro from_pages(pages, max=0) %}
{% set list = pages|reverse %}
{% if max %}{% set list = list|slice(start=0, end=max) %}{% endif %}
<ul>
{% for rfc in list %}
{% set base_path = rfc.components | join(sep="/") %}
<li><a href="{{ get_url(path="@/" ~ base_path ~ ".md") }}">{% if rfc.extra.number is defined %}RFC {{ rfc.extra.number }}:{% else %}DRAFT:{% endif %} {{ rfc.title }}</a></li>
{% endfor %}
</ul>
{% endmacro %}
{% macro from_section(s, max=0) %}
{% if s and s.pages|length > 0 %}
{{ self::from_pages(pages=s.pages, max=max) }}
{% endif %}
{% endmacro %}

View File

@ -0,0 +1,8 @@
{% macro new(headings) %}
<ol>
{%- for h in headings -%}
<li><a href="{{ h.permalink }}">{{ h.title }}</a></li>
{% if h.children %}{{ rfctoc::new(headings=h.children) }}{% endif %}
{%- endfor -%}
</ol>
{% endmacro %}

27
templates/section.html Normal file
View File

@ -0,0 +1,27 @@
{% extends "index.html" %}
{% block title %}
{% set title = section.title %}
{{ super() }}
{% endblock %}
{% block og %}
{% set title = section.title %}
{% set url = section.permalink %}
{% endblock og %}
{% block main %}
<h1>{{ section.title }}</h1>
{% if section.pages %}
{{ rfclist::from_pages(pages=section.pages) }}
{% else %}
<p>There is no content here at the moment.</p>
{% endif %}
{% if section.path == "rfcs/" %}
{% set drafts = get_section(path="drafts/_index.md") %}
{% if draft.pages %}
<h1>{{ drafts.title }}</h1>
{{ rfclist::from_pages(pages=drafts.pages) }}
{% endif %}
{% endif %}
{% endblock %}