add example site config and content
This commit is contained in:
parent
4c3fc25e50
commit
3f18b2a58a
9
example-site/pages.json
Normal file
9
example-site/pages.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"pages": [
|
||||
{
|
||||
"file_path": "about.md",
|
||||
"title": "About This Site",
|
||||
"url": "/about/"
|
||||
}
|
||||
]
|
||||
}
|
3
example-site/pages/about.md
Normal file
3
example-site/pages/about.md
Normal file
|
@ -0,0 +1,3 @@
|
|||
This is the so-called "about" page. Probably you'd write something to describe what this site is. I guess?
|
||||
|
||||
However, here you will only find a bunch of words to fill up space.
|
44
example-site/posts.json
Normal file
44
example-site/posts.json
Normal file
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"posts": [
|
||||
{
|
||||
"file_path": "2023-01-01-hello-world.md",
|
||||
"title": "Hello, world!",
|
||||
"date": "2023-01-01",
|
||||
"slug": "hello-world",
|
||||
"tags": ["aaa", "hello", "testing"]
|
||||
},
|
||||
{
|
||||
"file_path": "2023-02-01-commonmark-testing.md",
|
||||
"title": "CommonMark Testing",
|
||||
"date": "2023-02-01",
|
||||
"slug": "commonmark-testing",
|
||||
"tags": ["testing"]
|
||||
},
|
||||
{
|
||||
"file_path": "2023-03-20-lorem-ipsum.md",
|
||||
"title": "Lorem Ipsum",
|
||||
"date": "2023-03-20",
|
||||
"slug": "lorem-ipsum"
|
||||
},
|
||||
{
|
||||
"file_path": "2023-04-15-static-site-generators-are-boring.md",
|
||||
"title": "Static Site Generators Are Boring",
|
||||
"date": "2023-04-15",
|
||||
"slug": "static-site-generators-are-boring",
|
||||
"tags": ["aaa", "rant"]
|
||||
},
|
||||
{
|
||||
"file_path": "2023-06-27-donuts-are-pretty-great.md",
|
||||
"title": "Donuts Are Pretty Great",
|
||||
"date": "2023-06-27",
|
||||
"slug": "donuts-are-pretty-great",
|
||||
"tags": ["aaa", "donuts", "coffee"]
|
||||
}
|
||||
],
|
||||
"rss": {
|
||||
"title": "My Site",
|
||||
"description": "This is my site. There are others like it, but this one is mine.",
|
||||
"url": "http://localhost:8080/",
|
||||
"count": 10
|
||||
}
|
||||
}
|
10
example-site/posts/2023-01-01-hello-world.md
Normal file
10
example-site/posts/2023-01-01-hello-world.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
Hello, world!
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
printf("Hello, world!\n");
|
||||
return 0;
|
||||
}
|
||||
```
|
158
example-site/posts/2023-02-01-commonmark-testing.md
Normal file
158
example-site/posts/2023-02-01-commonmark-testing.md
Normal file
|
@ -0,0 +1,158 @@
|
|||
Here we test some [CommonMark](https://commonmark.org/) things, gloriously rendered via the
|
||||
[pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) crate!
|
||||
|
||||
---
|
||||
|
||||
This is a sentence rendered as a paragraph.
|
||||
|
||||
This is a sentence that is also rendered as a paragraph,
|
||||
but it has a forced line-break in the middle of it!
|
||||
|
||||
This is normal text.
|
||||
|
||||
_This is italicized text._
|
||||
|
||||
*This is also italicized text.*
|
||||
|
||||
**This is bolded text.**
|
||||
|
||||
__This is also bolded text.__
|
||||
|
||||
~~This is strikethrough text.~~
|
||||
|
||||
We can also **escape** characters to skip applying formatting like \_so_!
|
||||
|
||||
# Heading Level 1
|
||||
## Heading Level 2
|
||||
### Heading Level 3
|
||||
#### Heading Level 4
|
||||
##### Heading Level 5
|
||||
###### Heading Level 6
|
||||
|
||||
Heading Level 1 Alternate
|
||||
=========================
|
||||
|
||||
Heading Level 2 Alternate
|
||||
-------------------------
|
||||
|
||||
> This is rendered as a block quote.
|
||||
|
||||
Also ...
|
||||
|
||||
> This is rendered as a multi-line block quote.
|
||||
> This is in the same block quote.
|
||||
>
|
||||
> And finally, this is also in the same block quote!
|
||||
|
||||
But wait, there's more!
|
||||
|
||||
> Block quote again.
|
||||
> > Nested block quote action! Wow!
|
||||
|
||||
1. Number one
|
||||
2. Number two
|
||||
3. Number three
|
||||
|
||||
- First
|
||||
- Second
|
||||
- And finally, third!
|
||||
|
||||
1. One item which is multi-line.
|
||||
This is the second line of the first item.
|
||||
2. Here is item number two.
|
||||
3. And item number three.
|
||||
|
||||
* First item
|
||||
* First item, first sub-item
|
||||
* First item, second sub-item
|
||||
* Second item
|
||||
* Third item
|
||||
|
||||
1. First item
|
||||
1. First item, first sub-item
|
||||
2. First item, second sub-item
|
||||
2. Second item
|
||||
3. Third item
|
||||
|
||||
* More lists
|
||||
* Because why not?
|
||||
* It's getting a little tiresome ...
|
||||
* So this will be the last one!
|
||||
|
||||
Escaping to prevent accidental un-ordered list rendering ...
|
||||
|
||||
\* Like so
|
||||
|
||||
Task lists!
|
||||
|
||||
- [ ] Task 1
|
||||
- [x] Task 2 (completed!)
|
||||
|
||||
Here's some tables. To be honest, this syntax really sucks for anything but the very simplest of tables ...
|
||||
|
||||
| foo | bar | longer column heading |
|
||||
|-----|-----|-----------------------|
|
||||
| yes | no | hi |
|
||||
| 1 | 2 | 3 |
|
||||
|
||||
| left | right |
|
||||
|:-----|------:|
|
||||
| a | b |
|
||||
| one | two |
|
||||
|
||||
| lazy | cell | formatting |
|
||||
|------|------|------------|
|
||||
| a | b | c |
|
||||
| one | two | three |
|
||||
|
||||
Here's a code block.
|
||||
|
||||
```
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
printf("Hello, world!\n");
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Here's a code block with a language specified (which could be syntax highlighted if the right server-side parsing
|
||||
was happening ...).
|
||||
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
printf("Hello, world!\n");
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
Code blocks can also be indented like so:
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
printf("Hello, world!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
Here's some inline `code` bits that will appear `inline` within this paragraph.
|
||||
|
||||
<div class="foobar">
|
||||
We can also render <strong>html</strong> inline.
|
||||
</div>
|
||||
|
||||
And we can place horizontal rules:
|
||||
|
||||
---
|
||||
|
||||
And we can have images!
|
||||
|
||||
![An image](/images/coffee_and_donuts.jpg)
|
||||
|
||||
Images can also be links:
|
||||
|
||||
[![An image](/images/coffee_and_donuts.jpg)](/images/coffee_and_donuts.jpg)
|
||||
|
33
example-site/posts/2023-03-20-lorem-ipsum.md
Normal file
33
example-site/posts/2023-03-20-lorem-ipsum.md
Normal file
|
@ -0,0 +1,33 @@
|
|||
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
|
||||
aliqua. Vitae suscipit tellus mauris a. Ac turpis egestas maecenas pharetra convallis. Tincidunt dui ut ornare lectus
|
||||
sit amet est placerat. Nibh ipsum consequat nisl vel pretium lectus quam id leo. Sit amet consectetur adipiscing elit.
|
||||
Pretium viverra suspendisse potenti nullam ac tortor. Nisi quis eleifend quam adipiscing vitae proin sagittis nisl
|
||||
rhoncus. Etiam sit amet nisl purus in mollis nunc sed id. Mollis nunc sed id semper risus in. In hendrerit gravida
|
||||
rutrum quisque non tellus orci. Justo laoreet sit amet cursus sit amet dictum. Egestas erat imperdiet sed euismod nisi
|
||||
porta.
|
||||
|
||||
Risus commodo viverra maecenas accumsan lacus. Gravida arcu ac tortor dignissim convallis aenean et. Ornare lectus sit
|
||||
amet est placerat in egestas erat. Imperdiet nulla malesuada pellentesque elit eget. Porta lorem mollis aliquam ut.
|
||||
Ornare arcu dui vivamus arcu felis. Urna id volutpat lacus laoreet non curabitur. Donec adipiscing tristique risus nec
|
||||
feugiat in fermentum. Netus et malesuada fames ac turpis egestas. Enim nulla aliquet porttitor lacus luctus accumsan
|
||||
tortor.
|
||||
|
||||
Nulla pellentesque dignissim enim sit amet venenatis urna cursus. Nisi est sit amet facilisis magna etiam. Egestas dui
|
||||
id ornare arcu odio ut. Fusce ut placerat orci nulla pellentesque dignissim enim sit. Nec feugiat in fermentum posuere
|
||||
urna nec tincidunt praesent. Malesuada pellentesque elit eget gravida cum sociis natoque penatibus et. Duis at tellus
|
||||
at urna condimentum. Enim ut tellus elementum sagittis vitae et. Semper eget duis at tellus at urna condimentum mattis.
|
||||
Et molestie ac feugiat sed lectus vestibulum mattis ullamcorper velit. Vulputate eu scelerisque felis imperdiet proin
|
||||
fermentum leo. Dolor sed viverra ipsum nunc.
|
||||
|
||||
Vitae congue eu consequat ac felis. Fermentum dui faucibus in ornare quam viverra orci sagittis eu. Lobortis elementum
|
||||
nibh tellus molestie nunc non. Libero justo laoreet sit amet cursus sit amet dictum. Aliquam id diam maecenas ultricies
|
||||
mi. Dictum at tempor commodo ullamcorper a lacus. Sagittis purus sit amet volutpat consequat. Posuere morbi leo urna
|
||||
molestie at elementum eu facilisis. Nibh praesent tristique magna sit amet purus gravida. Porta non pulvinar neque
|
||||
laoreet. Vel elit scelerisque mauris pellentesque pulvinar pellentesque habitant morbi tristique. Tempor orci eu
|
||||
lobortis elementum nibh tellus molestie. Nulla facilisi nullam vehicula ipsum.
|
||||
|
||||
Tristique et egestas quis ipsum suspendisse. Sit amet massa vitae tortor condimentum lacinia quis vel. Eget nullam non
|
||||
nisi est sit amet facilisis magna etiam. Donec pretium vulputate sapien nec sagittis aliquam. Scelerisque viverra
|
||||
mauris in aliquam sem fringilla ut morbi tincidunt. Id aliquet lectus proin nibh nisl condimentum. Nulla facilisi
|
||||
nullam vehicula ipsum a arcu cursus vitae congue. Convallis tellus id interdum velit laoreet id donec. Porttitor
|
||||
rhoncus dolor purus non enim praesent elementum facilisis. Gravida neque convallis a cras semper auctor neque.
|
|
@ -0,0 +1,11 @@
|
|||
It's true.
|
||||
|
||||
Static site generators are boring. Sure, they can be used to generate all the files necessary for many types of
|
||||
websites and then be uploaded somewhere and served up in an incredible efficient fashion.
|
||||
|
||||
But they're boring.
|
||||
|
||||
And there's so many of them out there. And I really can't be arsed to futz about with their endless configuration
|
||||
options and templating and so forth.
|
||||
|
||||
Bleh!
|
8
example-site/posts/2023-06-27-donuts-are-pretty-great.md
Normal file
8
example-site/posts/2023-06-27-donuts-are-pretty-great.md
Normal file
|
@ -0,0 +1,8 @@
|
|||
Donuts are pretty great. Even better when you have more than one. Especially so when you have sprinkles on some or all
|
||||
of them. And this all becomes _significantly better_ when paired up with coffee. Which should always be just black,
|
||||
because why would anyone want to do something gross like dunk extra sugar, milk or cream into your coffee? What a
|
||||
horrible thing to do ...
|
||||
|
||||
![](/images/coffee_and_donuts.jpg)
|
||||
|
||||
Have a coffee and donut today! 🍩 ☕
|
8
example-site/server.json
Normal file
8
example-site/server.json
Normal file
|
@ -0,0 +1,8 @@
|
|||
{
|
||||
"bind_addr": "127.0.0.1",
|
||||
"bind_port": 8080,
|
||||
"static_files_path": "static",
|
||||
"templates_path": "templates",
|
||||
"pages_path": "pages",
|
||||
"posts_path": "posts"
|
||||
}
|
BIN
example-site/static/favicon.ico
Normal file
BIN
example-site/static/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
example-site/static/images/coffee_and_donuts.jpg
Normal file
BIN
example-site/static/images/coffee_and_donuts.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 96 KiB |
45
example-site/static/site.css
Normal file
45
example-site/static/site.css
Normal file
|
@ -0,0 +1,45 @@
|
|||
body {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
main {
|
||||
padding-bottom: 1em;
|
||||
}
|
||||
|
||||
footer {
|
||||
color: #777777;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.meta {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.tags > span {
|
||||
margin: auto 2px;
|
||||
padding: 1px;
|
||||
background-color: #eeeeee;
|
||||
}
|
||||
|
||||
.tags > span > a {
|
||||
color: #555555;
|
||||
}
|
||||
|
||||
.tags > span > a:visited {
|
||||
color: #888888;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
padding: 3px;
|
||||
background-color: #dddddd;
|
||||
border-left: 5px solid #888888;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
table td, table th {
|
||||
border: 1px solid #dddddd;
|
||||
}
|
23
example-site/templates/archive.html
Normal file
23
example-site/templates/archive.html
Normal file
|
@ -0,0 +1,23 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Posts Archive{% endblock title %}
|
||||
{% block content %}
|
||||
<header>
|
||||
<h1>Posts Archive</h1>
|
||||
</header>
|
||||
|
||||
<table>
|
||||
{% for post in posts %}
|
||||
<tr>
|
||||
<td><time>{{ post.date }}</time></td>
|
||||
<td>
|
||||
<a href="{{ post.url }}">{{ post.title }}</a>
|
||||
<span class="tags">
|
||||
{%- for tag in post.tags -%}
|
||||
<span><a href="/tag/{{ tag }}/">{{ tag }}</a></span>
|
||||
{%- endfor -%}
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock content %}
|
33
example-site/templates/base.html
Normal file
33
example-site/templates/base.html
Normal file
|
@ -0,0 +1,33 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>My Site :: {% block title %}{% endblock title %}</title>
|
||||
<link rel="stylesheet" type="text/css" href="/site.css">
|
||||
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico">
|
||||
<link rel="icon" type="image/x-icon" href="/favicon.ico">
|
||||
<link rel="alternate" type="application/rss+xml" title="My Site" href="/rss/">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="wrapper">
|
||||
<header>
|
||||
<h2>My Site</h2>
|
||||
<nav>
|
||||
<a href="/">Home</a> |
|
||||
<a href="/archive/">Archive</a> |
|
||||
<a href="/about/">About</a>
|
||||
</nav>
|
||||
</header>
|
||||
<main>
|
||||
{% block content %}{% endblock content %}
|
||||
</main>
|
||||
<footer>
|
||||
© {{ now() | date(format="%Y") }} - My Site, by Me
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
5
example-site/templates/page.html
Normal file
5
example-site/templates/page.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}{{ page.title }}{% endblock title %}
|
||||
{% block content %}
|
||||
{% include "partials/page.html" %}
|
||||
{% endblock content %}
|
6
example-site/templates/partials/page.html
Normal file
6
example-site/templates/partials/page.html
Normal file
|
@ -0,0 +1,6 @@
|
|||
<article class="page">
|
||||
<header><h1>{{ page.title }}</h1></header>
|
||||
<section>
|
||||
{{ page.content_html | safe }}
|
||||
</section>
|
||||
</article>
|
16
example-site/templates/partials/post.html
Normal file
16
example-site/templates/partials/post.html
Normal file
|
@ -0,0 +1,16 @@
|
|||
<article class="post">
|
||||
<header>
|
||||
<h1>{{ post.title }}</h1>
|
||||
<div class="meta">
|
||||
{{ post.date }} —
|
||||
<span class="tags">
|
||||
{%- for tag in post.tags -%}
|
||||
<span><a href="/tag/{{ tag }}/">{{ tag }}</a></span>
|
||||
{%- endfor -%}
|
||||
</span>
|
||||
</div>
|
||||
</header>
|
||||
<section>
|
||||
{{ post.content_html | safe }}
|
||||
</section>
|
||||
</article>
|
5
example-site/templates/post.html
Normal file
5
example-site/templates/post.html
Normal file
|
@ -0,0 +1,5 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}{{ post.title }}{% endblock title %}
|
||||
{% block content %}
|
||||
{% include "partials/post.html" %}
|
||||
{% endblock content %}
|
16
example-site/templates/tag.html
Normal file
16
example-site/templates/tag.html
Normal file
|
@ -0,0 +1,16 @@
|
|||
{% extends "base.html" %}
|
||||
{% block title %}Posts With Tag {{ tag }}{% endblock title %}
|
||||
{% block content %}
|
||||
<header>
|
||||
<h1>Posts With Tag "{{ tag }}"</h1>
|
||||
</header>
|
||||
|
||||
<table>
|
||||
{% for post in posts %}
|
||||
<tr>
|
||||
<td><time>{{ post.date }}</time></td>
|
||||
<td><a href="{{ post.url }}">{{ post.title }}</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
{% endblock content %}
|
Loading…
Reference in a new issue