From 715723adf9dd54a8de69e232bca735a1278dbc72 Mon Sep 17 00:00:00 2001 From: Yusuf Bera Ertan Date: Sat, 15 May 2021 21:29:30 +0300 Subject: [PATCH] feat: better basic templating --- examples/serve.nix | 4 +-- examples/site/config.toml | 3 +- examples/site/posts/Testing more.md | 4 +-- examples/site/posts/test.md | 9 ++---- tags.nix | 5 ++-- templaters/basic.nix | 45 +++++++++++++++++++++++++---- 6 files changed, 52 insertions(+), 18 deletions(-) diff --git a/examples/serve.nix b/examples/serve.nix index f514117..7816206 100644 --- a/examples/serve.nix +++ b/examples/serve.nix @@ -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") ]) ]; diff --git a/examples/site/config.toml b/examples/site/config.toml index 1481ae6..fd1d483 100644 --- a/examples/site/config.toml +++ b/examples/site/config.toml @@ -1 +1,2 @@ -title = "test site" \ No newline at end of file +title = "test site" +about = "Simple test site" \ No newline at end of file diff --git a/examples/site/posts/Testing more.md b/examples/site/posts/Testing more.md index 2554e2a..78dfa6a 100644 --- a/examples/site/posts/Testing more.md +++ b/examples/site/posts/Testing more.md @@ -1,3 +1,3 @@ -#### another document +###### another document -Woo hoo! \ No newline at end of file +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. \ No newline at end of file diff --git a/examples/site/posts/test.md b/examples/site/posts/test.md index 99c431c..34e89ed 100644 --- a/examples/site/posts/test.md +++ b/examples/site/posts/test.md @@ -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!" -``` \ No newline at end of file +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. \ No newline at end of file diff --git a/tags.nix b/tags.nix index 4d90f2e..fb556a8 100644 --- a/tags.nix +++ b/tags.nix @@ -9,10 +9,11 @@ let then (children: "<${name}${evalAttrs maybeAttrs}>\n ${evalChildren children}\n\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: ""; } diff --git a/templaters/basic.nix b/templaters/basic.nix index 093d5f6..9332a84 100644 --- a/templaters/basic.nix +++ b/templaters/basic.nix @@ -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; + } + ''; + }; }