feat: better basic templating

This commit is contained in:
dusk 2021-05-15 21:29:30 +03:00
parent 7ad6f49f1f
commit 715723adf9
Signed by: dusk
GPG Key ID: 1D8F8FAF2294D6EA
6 changed files with 52 additions and 18 deletions

View File

@ -5,7 +5,7 @@ let
html [
(body [
(p "Hello world!")
(link "./ex.html" "say bye")
(mkLink "./ex.html" "say bye")
])
];
@ -13,7 +13,7 @@ let
html [
(body [
(p "Bye world!")
(link "./index.html" "go back")
(mkLink "./index.html" "go back")
])
];

View File

@ -1 +1,2 @@
title = "test site"
title = "test site"
about = "Simple test site"

View File

@ -1,3 +1,3 @@
#### another document
###### another document
Woo hoo!
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur condimentum felis risus, ac tempor eros mollis ac. Curabitur dictum justo magna, a tristique nibh euismod at. Nullam at laoreet quam, a facilisis massa. Vestibulum iaculis euismod lorem non consequat. Quisque elementum pharetra egestas. Mauris in enim facilisis, pretium lacus vitae, accumsan diam. Praesent ut finibus mauris, eget iaculis lorem. Cras pharetra lectus varius, volutpat odio sit amet, pulvinar lectus. Aliquam malesuada erat a enim rutrum viverra. Nullam blandit nec enim eu egestas. Duis venenatis aliquet cursus. Phasellus non posuere lectus, sed rhoncus mi. Quisque ut ornare dui. Ut eget elit ac leo aliquam aliquam.

View File

@ -1,8 +1,5 @@
Welcome!
Donec vestibulum convallis odio sit amet gravida. Morbi mauris risus, accumsan nec elit id, tincidunt aliquam neque. Nam consectetur ligula eget odio efficitur, nec vulputate felis fermentum. Nam non vulputate dolor. Vestibulum nibh velit, mattis at augue ut, suscipit maximus orci. Proin bibendum, libero vel lobortis laoreet, mauris mi placerat turpis, eu gravida arcu erat sit amet augue. Curabitur tincidunt libero ut velit bibendum tempor. Mauris interdum ultrices nibh, ac laoreet purus dapibus quis. Sed sed ante consequat, finibus eros sed, mollis sapien. Duis a urna est. Sed id velit sed augue tristique vehicula. In eu eros finibus, sollicitudin nulla eget, tempus felis.
### This is a test document
Curabitur porta justo nec sapien consectetur vehicula. Integer venenatis lorem non pulvinar eleifend. Nulla ultricies lacinia purus, eleifend placerat dui gravida nec. Sed auctor scelerisque nisl, ut maximus nunc volutpat nec. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Cras pretium, ex eu dapibus maximus, ex erat dapibus enim, sit amet maximus metus velit quis sem. Integer erat odio, feugiat quis velit ut, euismod elementum orci. Quisque fermentum leo quis odio facilisis interdum. Nullam posuere vestibulum odio, scelerisque interdum ante cursus non. Praesent congue neque nec auctor mollis. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum vestibulum consectetur ipsum.
```
echo "some code!"
echo "more!"
```
Proin orci eros, malesuada ut justo ut, luctus ultrices neque. Vestibulum sed magna vel ligula gravida tempor ut sit amet nulla. Maecenas accumsan tincidunt gravida. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras in lectus vitae tellus interdum porttitor. Phasellus sed erat ut ex sagittis cursus. Pellentesque rhoncus interdum placerat.

View File

@ -9,10 +9,11 @@ let
then (children: "<${name}${evalAttrs maybeAttrs}>\n ${evalChildren children}\n</${name}>\n")
else tag name { } maybeAttrs;
tagsToGen = [ "html" "head" "body" "div" "p" "a" "title" "meta" "code" "pre" ] ++ (map (n: "h${toString n}") (range 1 6));
tagsToGen = [ "html" "head" "body" "div" "p" "a" "title" "meta" "code" "pre" "link" ] ++ (map (n: "h${toString n}") (range 1 6));
tags = genAttrs tag tagsToGen;
in
tags // {
inherit tag;
link = url: tags.a { href = url; };
mkLink = url: tags.a { href = url; };
mkStylesheet = url: "<link rel=\"stylesheet\" href=\"${url}\">";
}

View File

@ -1,21 +1,56 @@
{ utils, posts, pkgs, config, ... }@context:
let
inherit (utils) readFile mapAttrsToList;
inherit (utils) readFile mapAttrsToList tags fetchGit;
inherit (pkgs.lib) flatten;
renderPost = name: value: with utils.tags; [
(h2 ("# " + name))
skeleton = fetchGit {
url = "https://github.com/dhg/Skeleton.git";
rev = "88f03612b05f093e3f235ced77cf89d3a8fcf846";
};
renderPost = name: value: with tags; [
(a { href = "#${name}"; class = "postheader"; } (h4 { id = name; } ("## " + name)))
(readFile value)
];
allPosts = flatten (mapAttrsToList renderPost posts);
in
{
"index.html" = with utils.tags;
"index.html" = with tags;
html [
(head [
(title config.title)
(mkStylesheet "css/normalize.css")
(mkStylesheet "css/skeleton.css")
(mkStylesheet "css/mine.css")
])
(body [
(div { class = "container"; style = "margin-top: 5%; margin-bottom: 5%;"; } [
(div { class = "column"; } [
(div { class = "twelve columns"; } [
(a { href = "#About"; class = "postheader"; } (h1 "# About"))
(p config.about)
])
(div { class = "twelve columns"; } ([
(a { href = "#Posts"; class = "postheader"; } (h1 "# Posts"))
] ++ allPosts))
])
])
])
(body allPosts)
];
css = {
"normalize.css" = readFile "${skeleton}/css/normalize.css";
"skeleton.css" = readFile "${skeleton}/css/skeleton.css";
"mine.css" = ''
a.postheader {
color: inherit;
text-decoration: underline;
}
a.postheader:hover {
color: inherit;
text-decoration: underline;
}
'';
};
}