Major development update.

* Updated LICENSE, READMES/METADATA.md and TODO.md
* Added example blog to examples/
* Added preliminary Pygments support for embedding code in pages.
* Add preliminary Wordpress dump importer
* Expansions to template_tools and metadata to support Blog use case.
main
Cas Rusnov 6 years ago
parent 81532f3462
commit a0c4381c99
  1. 2
      LICENSE
  2. 10
      READMES/METADATA.md
  3. 1
      TODO.md
  4. 7
      demo/.meta
  5. 5
      demo/atom.xml.meta
  6. 0
      demo/bar/baz/quux/quuux
  7. 5
      demo/blog_posts/anotherpost.cont
  8. 4
      demo/blog_posts/anotherpost.cont.meta
  9. 1
      demo/blog_posts/test.cont
  10. 4
      demo/blog_posts/test.cont.meta
  11. 1
      demo/foo.cont
  12. 5
      demo/foo.cont.meta
  13. 19
      demo/index.cont
  14. 0
      demo/mapping.json
  15. 9
      demo/passthrough.md
  16. 3
      demo/passthrough.md.meta
  17. 9
      demo/readme.md
  18. 3
      demo/readme.md.meta
  19. 32
      demo/templates/debug.jinja2
  20. 6
      demo/templates/default-fs.jinja2
  21. 13
      demo/templates/default.jinja2
  22. 2
      examples/pixywerk.com/Makefile
  23. 0
      examples/pixywerk.com/foo
  24. 31
      examples/pixywerk.com/publish/2019-04-15.html
  25. 14
      examples/pixywerk.com/publish/atom.xml
  26. BIN
      examples/pixywerk.com/publish/css/fonts/Bungee-Regular.woff
  27. BIN
      examples/pixywerk.com/publish/css/fonts/Bungee-Regular.woff2
  28. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Bold.ttf
  29. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Bold.woff
  30. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Bold.woff2
  31. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-BoldItalic.ttf
  32. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-BoldItalic.woff
  33. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-BoldItalic.woff2
  34. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Italic.ttf
  35. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Italic.woff
  36. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Italic.woff2
  37. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Medium.ttf
  38. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Medium.woff
  39. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Medium.woff2
  40. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-MediumItalic.ttf
  41. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-MediumItalic.woff
  42. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-MediumItalic.woff2
  43. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Regular.ttf
  44. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Regular.woff
  45. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-Regular.woff2
  46. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-SemiBold.ttf
  47. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-SemiBold.woff
  48. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-SemiBold.woff2
  49. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-SemiBoldItalic.ttf
  50. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-SemiBoldItalic.woff
  51. BIN
      examples/pixywerk.com/publish/css/fonts/ExpletusSans-SemiBoldItalic.woff2
  52. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Bold.woff
  53. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Bold.woff2
  54. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Light.woff
  55. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Light.woff2
  56. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Medium.woff
  57. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Medium.woff2
  58. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Regular.woff
  59. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-Regular.woff2
  60. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-SemiBold.woff
  61. BIN
      examples/pixywerk.com/publish/css/fonts/Teko-SemiBold.woff2
  62. 1
      examples/pixywerk.com/publish/css/icono.min.css
  63. 343
      examples/pixywerk.com/publish/css/main.css
  64. BIN
      examples/pixywerk.com/publish/images/2019-05-16.png
  65. BIN
      examples/pixywerk.com/publish/images/2019-05-19.png
  66. 1
      examples/pixywerk.com/publish/images/link-box-variant.svg
  67. 1
      examples/pixywerk.com/publish/images/pipe-leak.svg
  68. 53
      examples/pixywerk.com/publish/index.html
  69. 44
      examples/pixywerk.com/publish/post-2019-04-15.html
  70. 43
      examples/pixywerk.com/publish/post-2019-05-16.another-post.html
  71. 15
      examples/pixywerk.com/publish/posts/2019-04-15.html
  72. 46
      examples/pixywerk.com/publish/posts/post-2019-04-15.html
  73. 45
      examples/pixywerk.com/publish/posts/post-2019-05-16.another-post.html
  74. 111
      examples/pixywerk.com/publish/posts/post-2019-05-19.html
  75. 59
      examples/pixywerk.com/publish/setup.py
  76. 25
      examples/pixywerk.com/publish/templates/default.jinja2
  77. 23
      examples/pixywerk.com/publish/templates/post.jinja2
  78. 31
      examples/pixywerk.com/publish/test/test.html
  79. 5
      examples/pixywerk.com/src/.meta
  80. 2
      examples/pixywerk.com/src/atom.xml
  81. 4
      examples/pixywerk.com/src/atom.xml.meta
  82. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Bold.ttf
  83. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Bold.woff
  84. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Bold.woff2
  85. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-BoldItalic.ttf
  86. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-BoldItalic.woff
  87. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-BoldItalic.woff2
  88. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Italic.ttf
  89. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Italic.woff
  90. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Italic.woff2
  91. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Medium.ttf
  92. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Medium.woff
  93. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Medium.woff2
  94. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-MediumItalic.ttf
  95. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-MediumItalic.woff
  96. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-MediumItalic.woff2
  97. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Regular.ttf
  98. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Regular.woff
  99. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-Regular.woff2
  100. BIN
      examples/pixywerk.com/src/css/fonts/ExpletusSans-SemiBold.ttf
  101. Some files were not shown because too many files have changed in this diff Show More

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2018 Cas Rusnov Copyright (c) 2018,2019 Cas Rusnov
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

@ -15,6 +15,8 @@ On-disk meatdata is stored as a file along side the non-metadata file with the e
All files define the following keys by default: All files define the following keys by default:
relpath
: The relative path to the root of the site, useful for prepending to image `src=` and other resource paths such as CSS files and fonts in order to maintain locally viewable output.
file_name file_name
: The local path of the file : The local path of the file
file_path file_path
@ -60,6 +62,14 @@ author_email
site_root site_root
: The full URL for the root of this web site used for links and whatnot, with ending slash. : The full URL for the root of this web site used for links and whatnot, with ending slash.
Special Keys that can be defined, these change the processing in predictable ways:
type
: Define that the file that this metadata is applied to as a specific type from the type mapping table. Useful values are `passthrough` and `templatable` with obvious outcomes.
wildcard_metadata
: Define a dictionary of file globs (patterns which match files such as `*.txt`), with the value being a dictionary of additional metadata to apply to the matched files. This is generally
defined at the top level of the project to make certain file patterns treated as special without having to give them their own metadata.
## CACHING STRATEGY ## ## CACHING STRATEGY ##

@ -2,6 +2,7 @@
* Pygments pretty printing of source code et al. including exposing that to the template API (`pygment_format(get_file_content('whatever.py'))`). * Pygments pretty printing of source code et al. including exposing that to the template API (`pygment_format(get_file_content('whatever.py'))`).
* Smart CSS things (fill in the processors) * Smart CSS things (fill in the processors)
* Project global defines, parameters.
# Maybe # # Maybe #

@ -1,7 +0,0 @@
{
"site_root":"https://example.com",
"title":"Test Metadata",
"author": "Test User",
"author_email": "test_user@example.com",
"uuid_oid_root": "pixywerk-demo"
}

@ -1,5 +0,0 @@
{
"type": "templatable",
"title": "Test RSS Feed",
"subtitle": "Some Subtitle"
}

@ -1,5 +0,0 @@
Some more post
la la la

@ -1,4 +0,0 @@
{
"title":"Another Post(tm)",
"summary":"Yet another post"
}

@ -1 +0,0 @@
Some content.

@ -1,4 +0,0 @@
{
"title":"Test.cont",
"summary":"Some empty test content"
}

@ -1 +0,0 @@
yo fresh

@ -1,5 +0,0 @@
{
"foo":"bar",
"title":"A title",
"summary":"Just a post."
}

@ -1,19 +0,0 @@
<h1>Index of all content</h1>
{% for f in get_file_list('*', sort_order='file_name') %}
<a href="{{ get_file_name(f['file_name']) }}">{{get_file_name(f['file_name'])}}</a>
{% endfor %}
<p>Including foo.cont.meta:
<pre>
{{ get_file_content('foo.cont.meta') }}
</pre>
</p>
<h1>Metadata</h1>
<table class="metadata">
<tr><th>key</th><th>value</th></tr>
{% set metadata = get_file_metadata('foo.cont') %}
{% for k in metadata.keys() %}
<tr><td>{{k}}</td><td>{{metadata[k]}}</td></tr>
{% endfor %}
</table>

@ -1,9 +0,0 @@
# README #
This is a test of the emergency compiled HTML system. This is only a *test*.
[Foo!](foo.html)
{% for i in range(100) %}
* {{ i }}
{% endfor %}

@ -1,3 +0,0 @@
{
"pragma":["no-proc"]
}

@ -1,9 +0,0 @@
# README #
This is a test of the emergency compiled HTML system. This is only a *test*.
[Foo!](foo.html)
{% for i in range(100) %}
* {{ i }}
{% endfor %}

@ -1,3 +0,0 @@
{
"title":"Yo, markdown"
}

@ -1,32 +0,0 @@
<!DOCTYPE html>
<head>
<title>Debug for {{path}}</title>
<style type="text/css">
table { border: 1px solid black; }
div { border: 1px solid black; }
td { border: 1px solid black; }
</style>
</head>
<body>
<p>{{path}}</p>
<h1>Content</h1>
<div class="content">
{{content}}
</div>
<h1>Environment</h1>
<table class="environment">
<tr><th>key</th><th>value</th></tr>
{% for k in environ.keys() %}
<tr><td>{{k}}</td><td>{{environ[k]}}</td></tr>
{% endfor %}
</table>
<h1>Metadata</h1>
<table class="metadata">
<tr><th>key</th><th>value</th></tr>
{% for k in metadata.keys() %}
<tr><td>{{k}}</td><td>{{metadata[k]}}</td></tr>
{% endfor %}
</table>
</body>

@ -1,6 +0,0 @@
<table class="werk-file-list">
<tr class="werk-file-list-head"><th>file</th><th>type</th><th>size</th><th>last change</th></tr>
{% for f in files.keys() %}
<tr class="werk-file-list-item"><td><a href="/{{files[f].relpath}}">{{f}}</a></td><td>{{files[f].type}}</td><td>{{files[f].size}}</td><td>{{files[f].ctime | date}}</td></tr>
{% endfor %}
</table>

@ -1,13 +0,0 @@
<!DOCTYPE html>
<head>
<title>{{metadata.title}}</title>
<style type="text/css">
table { border: 1px solid black; }
div { border: 1px solid black; }
td { border: 1px solid black; }
</style>
</head>
<body>
{{content}}
</body>
</html>

@ -1,2 +1,2 @@
build: src/templates/* src/* src/images/* src/posts/* build: src/templates/* src/* src/images/*
python -mpixywerk2 src publish python -mpixywerk2 src publish

@ -0,0 +1,31 @@
<html>
<head>
<title>Pixywerk2 My first post</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
<div class="container">
<header><img src="images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>Pixywerk2 My first post</h1></header>
<article>
<img src="../images/20190415-0.jpg" class="featured">
<div class="byline">
<p>Author: Cas Rusnov</p>
<p>Published: 2019-05-14T06:44:41.240513+00:00
</p>
</div>
<p>This is an example post!</p>
<p>yo fresh</p>
<p>There are many posts like it but this one is mine.</p>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog </li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="images/link-box-variant.svg"></a></li>
<li>Github<img src="images/link-box-variant.svg"></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body>
</html>

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Pixywerk2 RSS Feed</title>
<subtitle>Website Compiler</subtitle>
<link href="https://pixywerk.com//atom.xml" rel="self" />
<link href="https://pixywerk.com/" />
<id>urn:uuid:2cbb1961-b1ca-3b73-a6ce-d2e2feae9ab4</id>
<updated>2019-05-20T06:32:27.357672+00:00</updated>
</feed>

File diff suppressed because one or more lines are too long

@ -1,3 +1,344 @@
@font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-Bold.woff2') format('woff2'),
url('fonts/ExpletusSans-Bold.woff') format('woff');
font-style: regular;
font-weight: 700;
}
body { margin: 10% 10% 0 10% } @font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-BoldItalic.woff2') format('woff2'),
url('fonts/ExpletusSans-BoldItalic.woff') format('woff');
font-style: italic;
font-weight: 700;
}
@font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-Italic.woff2') format('woff2'),
url('fonts/ExpletusSans-Italic.woff') format('woff');
font-style: italic;
font-weight: 400;
}
@font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-Medium.woff2') format('woff2'),
url('fonts/ExpletusSans-Medium.woff') format('woff');
font-style: regular;
font-weight: 500;
}
@font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-MediumItalic.woff2') format('woff2'),
url('fonts/ExpletusSans-MediumItalic.woff') format('woff');
font-style: italic;
font-weight: 500;
}
@font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-Regular.woff2') format('woff2'),
url('fonts/ExpletusSans-Regular.woff') format('woff');
font-style: regular;
font-weight: 400;
}
@font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-SemiBold.woff2') format('woff2'),
url('fonts/ExpletusSans-SemiBold.woff') format('woff');
font-style: regular;
font-weight: 600;
}
@font-face {
font-family: 'Expletus Sans';
src: url('fonts/ExpletusSans-SemiBoldItalic.woff2') format('woff2'),
url('fonts/ExpletusSans-SemiBoldItalic.woff') format('woff');
font-style: italic;
font-weight: 600;
}
@font-face {
font-family: 'Teko';
src: url('fonts/Teko-Bold.woff2') format('woff2'),
url('fonts/Teko-Bold.woff') format('woff');
font-style: regular;
font-weight: 700;
}
@font-face {
font-family: 'Teko Light';
src: url('fonts/Teko-Light.woff2') format('woff2'),
url('fonts/Teko-Light.woff') format('woff');
font-style: regular;
font-weight: 300;
}
@font-face {
font-family: 'Teko Medium';
src: url('fonts/Teko-Medium.woff2') format('woff2'),
url('fonts/Teko-Medium.woff') format('woff');
font-style: regular;
font-weight: 500;
}
@font-face {
font-family: 'Teko';
src: url('fonts/Teko-Regular.woff2') format('woff2'),
url('fonts/Teko-Regular.woff') format('woff');
font-style: regular;
font-weight: 400;
}
@font-face {
font-family: 'Teko SemiBold';
src: url('fonts/Teko-SemiBold.woff2') format('woff2'),
url('fonts/Teko-SemiBold.woff') format('woff');
font-style: regular;
font-weight: 600;
}
body { margin: 0; font-family: Teko; font-size: 24pt; }
h1, h2, h3, h4 { font-family: 'Expletus Sans'; font-weight: 700 }
h1 { font-size: 150%; border-bottom: solid 1px black; }
h2 { font-size: 125%; }
h3 { font-size: 115%; }
h4 { font-size: 100%; }
.container {
height: 100%;
width: 100%;
display: grid;
grid-template-columns: 220px auto auto;
grid-template-rows: auto auto auto auto;
}
header {
border: 0;
padding-left: 20px;
height: 60px;
grid-column: 1 / 4;
background: black;
color: white;
}
header h1 { font-size: 18pt; border: none}
nav {
grid-row: 2 / 5;
grid-column: 1;
}
nav ul {
padding: 0;
}
nav ul li {
list-style-type: none;
padding: 1px 20px 1px 20px;
}
nav ul li:hover {
background: black;
color: white;
}
nav ul li:hover img {
filter: invert(1);
}
nav ul li a {
color: black;
text-decoration: none;
}
nav ul li:hover a:hover {
color: white;
text-decoration: underline;
}
nav ul li a:visited {
color: inherit;
}
article {
grid-row: 2 / 5;
grid-column: 2 / 4;
margin: 0 20px 0 20px;
}
footer {
font-size: 12pt;
grid-column: 1 / 4;
grid-row: 5;
background: black;
color: white;
padding-top: 10px;
padding-left: 20px;
}
.post div.featured {
max-height: 250px;
max-width: 100%;
overflow: hidden;
position: relative;
padding: 0;
}
.post div.featured img.featured {
max-width: initial;
width: 100%;
}
.post div.featured h1 {
position: absolute;
bottom: 0px;
left: 0;
color: white;
border: 0;
padding: 10px 30px 10px 30px;
background: rgba(0,0,0,0.5);
margin-top: 0.5em;
margin-bottom: 0.5em;
font-variant: small-caps;
}
.post div.byline {
margin-left: 30px;
font-size: 0.75em;
line-height: 0.75em;
}
.post div.article {
margin-left: 30Px;
}
.post div.article p {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.postgrid {
display: grid;
grid-template-columns: minmax(300px, 33%) minmax(300px, 33%) minmax(300px, 33%);
margin-bottom: 30px;
column-gap: 10px;
row-gap: 10px;
}
.postgrid-item {
height: 200px;
max-height: 200px;
max-width: 100%;
overflow: hidden;
position: relative;
}
.postgrid-item a img.featured {
max-width: 100%;
}
.postgrid-item a div {
position: absolute;
left: 0;
bottom: 0;
color: white;
border: 0;
padding: 10px 30px 10px 30px;
background: rgba(0,0,0,0.5);
margin-top: 0.5em;
margin-bottom: 0.5em;
font-variant: small-caps;
}
.hll { background-color: #ffffcc }
.c { color: #008800; font-style: italic } /* Comment */
.err { border: 1px solid #FF0000 } /* Error */
.k { color: #AA22FF; font-weight: bold } /* Keyword */
.o { color: #666666 } /* Operator */
.ch { color: #008800; font-style: italic } /* Comment.Hashbang */
.cm { color: #008800; font-style: italic } /* Comment.Multiline */
.cp { color: #008800 } /* Comment.Preproc */
.cpf { color: #008800; font-style: italic } /* Comment.PreprocFile */
.c1 { color: #008800; font-style: italic } /* Comment.Single */
.cs { color: #008800; font-weight: bold } /* Comment.Special */
.gd { color: #A00000 } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gr { color: #FF0000 } /* Generic.Error */
.gh { color: #000080; font-weight: bold } /* Generic.Heading */
.gi { color: #00A000 } /* Generic.Inserted */
.go { color: #888888 } /* Generic.Output */
.gp { color: #000080; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.gt { color: #0044DD } /* Generic.Traceback */
.kc { color: #AA22FF; font-weight: bold } /* Keyword.Constant */
.kd { color: #AA22FF; font-weight: bold } /* Keyword.Declaration */
.kn { color: #AA22FF; font-weight: bold } /* Keyword.Namespace */
.kp { color: #AA22FF } /* Keyword.Pseudo */
.kr { color: #AA22FF; font-weight: bold } /* Keyword.Reserved */
.kt { color: #00BB00; font-weight: bold } /* Keyword.Type */
.m { color: #666666 } /* Literal.Number */
.s { color: #BB4444 } /* Literal.String */
.na { color: #BB4444 } /* Name.Attribute */
.nb { color: #AA22FF } /* Name.Builtin */
.nc { color: #0000FF } /* Name.Class */
.no { color: #880000 } /* Name.Constant */
.nd { color: #AA22FF } /* Name.Decorator */
.ni { color: #999999; font-weight: bold } /* Name.Entity */
.ne { color: #D2413A; font-weight: bold } /* Name.Exception */
.nf { color: #00A000 } /* Name.Function */
.nl { color: #A0A000 } /* Name.Label */
.nn { color: #0000FF; font-weight: bold } /* Name.Namespace */
.nt { color: #008000; font-weight: bold } /* Name.Tag */
.nv { color: #B8860B } /* Name.Variable */
.ow { color: #AA22FF; font-weight: bold } /* Operator.Word */
.w { color: #bbbbbb } /* Text.Whitespace */
.mb { color: #666666 } /* Literal.Number.Bin */
.mf { color: #666666 } /* Literal.Number.Float */
.mh { color: #666666 } /* Literal.Number.Hex */
.mi { color: #666666 } /* Literal.Number.Integer */
.mo { color: #666666 } /* Literal.Number.Oct */
.sa { color: #BB4444 } /* Literal.String.Affix */
.sb { color: #BB4444 } /* Literal.String.Backtick */
.sc { color: #BB4444 } /* Literal.String.Char */
.dl { color: #BB4444 } /* Literal.String.Delimiter */
.sd { color: #BB4444; font-style: italic } /* Literal.String.Doc */
.s2 { color: #BB4444 } /* Literal.String.Double */
.se { color: #BB6622; font-weight: bold } /* Literal.String.Escape */
.sh { color: #BB4444 } /* Literal.String.Heredoc */
.si { color: #BB6688; font-weight: bold } /* Literal.String.Interpol */
.sx { color: #008000 } /* Literal.String.Other */
.sr { color: #BB6688 } /* Literal.String.Regex */
.s1 { color: #BB4444 } /* Literal.String.Single */
.ss { color: #B8860B } /* Literal.String.Symbol */
.bp { color: #AA22FF } /* Name.Builtin.Pseudo */
.fm { color: #00A000 } /* Name.Function.Magic */
.vc { color: #B8860B } /* Name.Variable.Class */
.vg { color: #B8860B } /* Name.Variable.Global */
.vi { color: #B8860B } /* Name.Variable.Instance */
.vm { color: #B8860B } /* Name.Variable.Magic */
.il { color: #666666 } /* Literal.Number.Integer.Long */
div.code {
font-size: 0.5em;
border: 1px black solid;
padding: 1em;
margin: 0 1em 0 1em;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 133 KiB

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M19,3H5A2,2 0 0,0 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5A2,2 0 0,0 19,3M13.94,14.81L11.73,17C11.08,17.67 10.22,18 9.36,18C8.5,18 7.64,17.67 7,17C5.67,15.71 5.67,13.58 7,12.26L8.35,10.9L8.34,11.5C8.33,12 8.41,12.5 8.57,12.94L8.62,13.09L8.22,13.5C7.91,13.8 7.74,14.21 7.74,14.64C7.74,15.07 7.91,15.47 8.22,15.78C8.83,16.4 9.89,16.4 10.5,15.78L12.7,13.59C13,13.28 13.18,12.87 13.18,12.44C13.18,12 13,11.61 12.7,11.3C12.53,11.14 12.44,10.92 12.44,10.68C12.44,10.45 12.53,10.23 12.7,10.06C13.03,9.73 13.61,9.74 13.94,10.06C14.57,10.7 14.92,11.54 14.92,12.44C14.92,13.34 14.57,14.18 13.94,14.81M17,11.74L15.66,13.1V12.5C15.67,12 15.59,11.5 15.43,11.06L15.38,10.92L15.78,10.5C16.09,10.2 16.26,9.79 16.26,9.36C16.26,8.93 16.09,8.53 15.78,8.22C15.17,7.6 14.1,7.61 13.5,8.22L11.3,10.42C11,10.72 10.82,11.13 10.82,11.56C10.82,12 11,12.39 11.3,12.7C11.47,12.86 11.56,13.08 11.56,13.32C11.56,13.56 11.47,13.78 11.3,13.94C11.13,14.11 10.91,14.19 10.68,14.19C10.46,14.19 10.23,14.11 10.06,13.94C8.75,12.63 8.75,10.5 10.06,9.19L12.27,7C13.58,5.67 15.71,5.68 17,7C17.65,7.62 18,8.46 18,9.36C18,10.26 17.65,11.1 17,11.74Z" /></svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M2,5V13H4V11H10L12,9L10,7H4V5H2M20,5V7H12L14,9L12,11H20V13H22V5H20M12,13C12,13 10,15.17 10,16.5A2,2 0 0,0 12,18.5A2,2 0 0,0 14,16.5C14,15.17 12,13 12,13Z" /></svg>

After

Width:  |  Height:  |  Size: 448 B

@ -1,13 +1,56 @@
<html> <html>
<head> <head>
<title></title> <title>Pixywerk2 Home</title>
<link rel="stylesheet" type="text/css" href="css/main.css"> <link rel="stylesheet" type="text/css" href="./css/main.css">
</head> </head>
<body> <body>
<p>This is my index!!</p> <div class="container">
for i in posts[:5]: <header><img src="./images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>Pixywerk2 Home</h1></header>
get metadata, fill in post image/text summary with link
<article>
<h1>Pixywerk 2</h1>
<p>Pixywerk 2 is a simple static website compiler. It is primarily oriented around applying a tree-oriented metadata to each file, and complicated operations within the page templates.</p>
<h2>Latest blog posts</h2>
<div class="postgrid">
<div class="postgrid-item">
<a href="posts/post-2019-05-19.html">
<img src="images/2019-05-19.png" class="featured">
<div>Code Test Post</div></a>
</div>
<div class="postgrid-item">
<a href="posts/post-2019-05-16.another-post.html">
<img src="images/2019-05-16.png" class="featured">
<div>Another example post!</div></a>
</div>
<div class="postgrid-item">
<a href="posts/post-2019-04-15.html">
<img src="images/20190415-0.jpg" class="featured">
<div>My first post</div></a>
</div>
</div>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="./images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="./images/link-box-variant.svg"></a></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body> </body>
</html> </html>

@ -0,0 +1,44 @@
<html>
<head>
<title>Pixywerk2 My first post</title>
<link rel="stylesheet" type="text/css" href="./css/main.css">
</head>
<body>
<div class="container">
<header><img src="./images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>
Pixywerk
</h1></header>
<article class="post">
<div class="featured">
<h1>My first post</h1>
<img src="images/20190415-0.jpg" class="featured">
</div>
<div class="byline">
<p>Author: Cas Rusnov<br>
Published: 2019-05-16T05:37:20.372795+00:00
</p>
</div>
<div class="article">
<p>This is an example post!</p>
<p>yo fresh</p>
<p>There are many posts like it but this one is mine.</p>
</div>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="./images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="./images/link-box-variant.svg"></a></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body>
</html>

@ -0,0 +1,43 @@
<html>
<head>
<title>Pixywerk2 Another example post!</title>
<link rel="stylesheet" type="text/css" href="./css/main.css">
</head>
<body>
<div class="container">
<header><img src="./images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>
Pixywerk
</h1></header>
<article class="post">
<div class="featured">
<h1>Another example post!</h1>
<img src="images/2019-05-16.png" class="featured">
</div>
<div class="byline">
<p>Author: Cas Rusnov<br>
Published: 2019-05-17T01:36:35.179351+00:00
</p>
</div>
<div class="article">
<h1>Greetings humans!</h1>
<p>This is yet another example post! halelujah!</p>
</div>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="./images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="./images/link-box-variant.svg"></a></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body>
</html>

@ -1,9 +1,12 @@
<html> <html>
<head> <head>
<title>My first post</title> <title>Pixywerk2 My first post</title>
<link rel="stylesheet" type="text/css" href="css/main.css"> <link rel="stylesheet" type="text/css" href="css/main.css">
</head> </head>
<body> <body>
<div class="container">
<header><h1>Pixywerk2 My first post</h1></header>
<article>
<img src="../images/20190415-0.jpg" class="featured"> <img src="../images/20190415-0.jpg" class="featured">
<div class="byline"> <div class="byline">
<p>Author: Cas Rusnov</p> <p>Author: Cas Rusnov</p>
@ -14,5 +17,15 @@
<p>This is an example post!</p> <p>This is an example post!</p>
<p>yo fresh</p> <p>yo fresh</p>
<p>There are many posts like it but this one is mine.</p> <p>There are many posts like it but this one is mine.</p>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog </li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="images/link-box-variant.svg"></a></li>
<li>Github<img src="images/link-box-variant.svg"></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body> </body>
</html> </html>

@ -0,0 +1,46 @@
<html>
<head>
<title>Pixywerk2 My first post</title>
<link rel="stylesheet" type="text/css" href="../css/main.css">
</head>
<body>
<div class="container">
<header><img src="../images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>
Pixywerk
</h1></header>
<article class="post">
<div class="featured">
<h1>My first post</h1>
<img src="../images/20190415-0.jpg" class="featured">
</div>
<div class="byline">
<p>Author: Cas Rusnov<br>
Published: 2019-05-20T01:56:41.720834+00:00
</p>
</div>
<div class="article">
<p>This is an example post!</p>
<p>yo fresh</p>
<p>There are many posts like it but this one is mine.</p>
</div>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="../images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="../images/link-box-variant.svg"></a></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body>
</html>

@ -0,0 +1,45 @@
<html>
<head>
<title>Pixywerk2 Another example post!</title>
<link rel="stylesheet" type="text/css" href="../css/main.css">
</head>
<body>
<div class="container">
<header><img src="../images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>
Pixywerk
</h1></header>
<article class="post">
<div class="featured">
<h1>Another example post!</h1>
<img src="../images/2019-05-16.png" class="featured">
</div>
<div class="byline">
<p>Author: Cas Rusnov<br>
Published: 2019-05-20T02:09:55.805659+00:00
</p>
</div>
<div class="article">
<h1>Greetings humans!</h1>
<p>This is yet another example post! halelujah!</p>
</div>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="../images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="../images/link-box-variant.svg"></a></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body>
</html>

@ -0,0 +1,111 @@
<html>
<head>
<title>Pixywerk2 Code Test Post</title>
<link rel="stylesheet" type="text/css" href="../css/main.css">
</head>
<body>
<div class="container">
<header><img src="../images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>
Pixywerk
</h1></header>
<article class="post">
<div class="featured">
<h1>Code Test Post</h1>
<img src="../images/2019-05-19.png" class="featured">
</div>
<div class="byline">
<p>Author: Cas Rusnov<br>
Published: 2019-05-20T06:31:37.352443+00:00
</p>
</div>
<div class="article">
<p>This is a code test post! Let's format some code!!</p>
<div class="code">
Some python code:
<div class="highlight"><pre><span></span><span class="sd">&quot;&quot;&quot;Package configuration.&quot;&quot;&quot;</span>
<span class="kn">from</span> <span class="nn">setuptools</span> <span class="kn">import</span> <span class="n">find_packages</span><span class="p">,</span> <span class="n">setup</span>
<span class="n">LONG_DESCRIPTION</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;Pixywerk 2 is a filesystem based static site generator.&quot;&quot;&quot;</span>
<span class="n">INSTALL_REQUIRES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;yaml-1.3&quot;</span><span class="p">,</span> <span class="s2">&quot;markdown&quot;</span><span class="p">,</span> <span class="s2">&quot;jstyleson&quot;</span><span class="p">,</span> <span class="s2">&quot;jinja2&quot;</span><span class="p">,</span> <span class="s2">&quot;pygments&quot;</span><span class="p">]</span>
<span class="c1"># Extra dependencies</span>
<span class="n">EXTRAS_REQUIRE</span> <span class="o">=</span> <span class="p">{</span>
<span class="c1"># Test dependencies</span>
<span class="s2">&quot;tests&quot;</span><span class="p">:</span> <span class="p">[</span>
<span class="s2">&quot;black&quot;</span><span class="p">,</span>
<span class="s2">&quot;bandit&gt;=1.1.0&quot;</span><span class="p">,</span>
<span class="s2">&quot;flake8&gt;=3.2.1&quot;</span><span class="p">,</span>
<span class="s2">&quot;mypy&gt;=0.470&quot;</span><span class="p">,</span>
<span class="s2">&quot;prospector[with_everything]&gt;=0.12.4&quot;</span><span class="p">,</span>
<span class="s2">&quot;pytest-cov&gt;=1.8.0&quot;</span><span class="p">,</span>
<span class="s2">&quot;pytest-xdist&gt;=1.15.0&quot;</span><span class="p">,</span>
<span class="s2">&quot;pytest&gt;=3.0.3&quot;</span><span class="p">,</span>
<span class="s2">&quot;sphinx_rtd_theme&gt;=0.1.6&quot;</span><span class="p">,</span>
<span class="s2">&quot;sphinx-argparse&gt;=0.1.15&quot;</span><span class="p">,</span>
<span class="s2">&quot;Sphinx&gt;=1.4.9&quot;</span><span class="p">,</span>
<span class="p">]</span>
<span class="p">}</span>
<span class="n">SETUP_REQUIRES</span> <span class="o">=</span> <span class="p">[</span><span class="s2">&quot;pytest-runner&gt;=2.7.1&quot;</span><span class="p">,</span> <span class="s2">&quot;setuptools_scm&gt;=1.15.0&quot;</span><span class="p">]</span>
<span class="n">setup</span><span class="p">(</span>
<span class="n">author</span><span class="o">=</span><span class="s2">&quot;Cassowary Rusnov&quot;</span><span class="p">,</span>
<span class="n">author_email</span><span class="o">=</span><span class="s2">&quot;rusnovn@gmail.com&quot;</span><span class="p">,</span>
<span class="n">classifiers</span><span class="o">=</span><span class="p">[</span>
<span class="s2">&quot;Development Status :: 1 - Pre-alpha&quot;</span><span class="p">,</span>
<span class="s2">&quot;Environment :: Console&quot;</span><span class="p">,</span>
<span class="s2">&quot;License :: OSI Approved :: MIT&quot;</span><span class="p">,</span>
<span class="s2">&quot;Operating System :: POSIX :: Linux&quot;</span><span class="p">,</span>
<span class="s2">&quot;Programming Language :: Python :: 3.6&quot;</span><span class="p">,</span>
<span class="s2">&quot;Programming Language :: Python :: 3.7&quot;</span><span class="p">,</span>
<span class="s2">&quot;Programming Language :: Python :: 3 :: Only&quot;</span><span class="p">,</span>
<span class="s2">&quot;Topic :: Software Development :: Libraries :: Python Modules&quot;</span><span class="p">,</span>
<span class="p">],</span>
<span class="n">description</span><span class="o">=</span><span class="s2">&quot;A filesystem-based website generator / CMS&quot;</span><span class="p">,</span>
<span class="c1"># entry_points={</span>
<span class="c1"># &#39;console_scripts&#39;: [</span>
<span class="c1"># &#39;cookbook = spicerack.cookbook:main&#39;,</span>
<span class="c1"># ],</span>
<span class="c1"># },</span>
<span class="n">include_package_data</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
<span class="n">extras_require</span><span class="o">=</span><span class="n">EXTRAS_REQUIRE</span><span class="p">,</span>
<span class="n">install_requires</span><span class="o">=</span><span class="n">INSTALL_REQUIRES</span><span class="p">,</span>
<span class="n">keywords</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;cms&quot;</span><span class="p">,</span> <span class="s2">&quot;website&quot;</span><span class="p">,</span> <span class="s2">&quot;compiler&quot;</span><span class="p">],</span>
<span class="n">license</span><span class="o">=</span><span class="s2">&quot;MIT&quot;</span><span class="p">,</span>
<span class="n">long_description</span><span class="o">=</span><span class="n">LONG_DESCRIPTION</span><span class="p">,</span>
<span class="n">name</span><span class="o">=</span><span class="s2">&quot;pixywerk2&quot;</span><span class="p">,</span>
<span class="n">packages</span><span class="o">=</span><span class="n">find_packages</span><span class="p">(</span><span class="n">exclude</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;*.tests&quot;</span><span class="p">,</span> <span class="s2">&quot;*.tests.*&quot;</span><span class="p">]),</span>
<span class="n">platforms</span><span class="o">=</span><span class="p">[</span><span class="s2">&quot;GNU/Linux&quot;</span><span class="p">],</span>
<span class="n">setup_requires</span><span class="o">=</span><span class="n">SETUP_REQUIRES</span><span class="p">,</span>
<span class="n">use_scm_version</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span>
<span class="n">url</span><span class="o">=</span><span class="s2">&quot;https://git.antpanethon.com/cas/pixywerk2&quot;</span><span class="p">,</span>
<span class="n">zip_safe</span><span class="o">=</span><span class="bp">False</span><span class="p">,</span>
<span class="p">)</span>
</pre></div>
</div>
</div>
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="../images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="../images/link-box-variant.svg"></a></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body>
</html>

@ -0,0 +1,59 @@
"""Package configuration."""
from setuptools import find_packages, setup
LONG_DESCRIPTION = """Pixywerk 2 is a filesystem based static site generator."""
INSTALL_REQUIRES = ["yaml-1.3", "markdown", "jstyleson", "jinja2", "pygments"]
# Extra dependencies
EXTRAS_REQUIRE = {
# Test dependencies
"tests": [
"black",
"bandit>=1.1.0",
"flake8>=3.2.1",
"mypy>=0.470",
"prospector[with_everything]>=0.12.4",
"pytest-cov>=1.8.0",
"pytest-xdist>=1.15.0",
"pytest>=3.0.3",
"sphinx_rtd_theme>=0.1.6",
"sphinx-argparse>=0.1.15",
"Sphinx>=1.4.9",
]
}
SETUP_REQUIRES = ["pytest-runner>=2.7.1", "setuptools_scm>=1.15.0"]
setup(
author="Cassowary Rusnov",
author_email="rusnovn@gmail.com",
classifiers=[
"Development Status :: 1 - Pre-alpha",
"Environment :: Console",
"License :: OSI Approved :: MIT",
"Operating System :: POSIX :: Linux",
"Programming Language :: Python :: 3.6",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3 :: Only",
"Topic :: Software Development :: Libraries :: Python Modules",
],
description="A filesystem-based website generator / CMS",
# entry_points={
# 'console_scripts': [
# 'cookbook = spicerack.cookbook:main',
# ],
# },
include_package_data=True,
extras_require=EXTRAS_REQUIRE,
install_requires=INSTALL_REQUIRES,
keywords=["cms", "website", "compiler"],
license="MIT",
long_description=LONG_DESCRIPTION,
name="pixywerk2",
packages=find_packages(exclude=["*.tests", "*.tests.*"]),
platforms=["GNU/Linux"],
setup_requires=SETUP_REQUIRES,
use_scm_version=True,
url="https://git.antpanethon.com/cas/pixywerk2",
zip_safe=False,
)

@ -1,9 +1,30 @@
<html> <html>
<head> <head>
<title>{{ metadata.title }}</title> <title>Pixywerk2 {{ metadata.title }}</title>
<link rel="stylesheet" type="text/css" href="css/main.css"> <link rel="stylesheet" type="text/css" href="{{metadata.relpath}}/css/main.css">
</head> </head>
<body> <body>
<div class="container">
{% block header %}
<header><img src="{{metadata.relpath}}/images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>{% block headertitle %}Pixywerk2 {{ metadata.title }}{% endblock %}</h1></header>
{% endblock %}
{% block content %}
<article>
{{ content }} {{ content }}
</article>
{% endblock %}
{% block nav %}
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="{{metadata.relpath}}/images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="{{metadata.relpath}}/images/link-box-variant.svg"></a></li>
</ul></nav>
{% endblock %}
{% block footer %}
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
{% endblock %}
</div>
</body> </body>
</html> </html>

@ -0,0 +1,23 @@
{% extends "default.jinja2" %}
{% block headertitle %}
Pixywerk
{% endblock %}
{% block content %}
<article class="post">
<div class="featured">
<h1>{{ metadata.title }}</h1>
<img src="{{metadata.relpath}}/{{metadata.featured}}" class="featured">
</div>
<div class="byline">
<p>Author: {{ metadata.author }}<br>
Published: {{ get_time_iso8601(metadata.stat.ctime) }}
{% if metadata.stat.mtime-metadata.stat.ctime > 512 %}
Updated: {{ get_time_iso8601(metadata.stat.mtime) }}
{% endif %}
</p>
</div>
<div class="article">
{{content}}
</div>
</article>
{% endblock %}

@ -0,0 +1,31 @@
<html>
<head>
<title>Pixywerk2 </title>
<link rel="stylesheet" type="text/css" href="../css/main.css">
</head>
<body>
<div class="container">
<header><img src="../images/pipe-leak.svg" style="filter: invert(1); height: 2em; float: left; margin: 2px; padding: 0"><h1>Pixywerk2 </h1></header>
<article>
test test/test.thtml
<img src="../images/pipe-leak.svg">
</article>
<nav><ul>
<li>Documentation</li>
<li>Blog</li>
<li><a href="https://git.antpantheon.com/cas/pixywerk2">Gitea<img src="../images/link-box-variant.svg"></a></li>
<li><a href="https://www.github.com/chaomodus/pixywerk2">Github<img src="../images/link-box-variant.svg"></a></li>
</ul></nav>
<footer>Copyright &copy; 2019 by Cas Rusnov <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/80x15.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
</footer>
</div>
</body>
</html>

@ -1,6 +1,7 @@
{ {
"author": "Cas Rusnov", "author": "Cas Rusnov",
"author_email": "rusnovn@gmail.com", "author_email": "pixywerk2@gmail.com",
"uuid-oid-root": "pixywerk.com/", "uuid-oid-root": "pixywerk.com/",
"site_root": "https://pixywerk.com/" "site_root": "https://pixywerk.com/",
"subtitle": "Website Compiler"
} }

@ -9,7 +9,7 @@
<id>urn:uuid:{{ metadata.uuid }}</id> <id>urn:uuid:{{ metadata.uuid }}</id>
<updated>{{ get_time_iso8601(metadata['build-time']) }}</updated> <updated>{{ get_time_iso8601(metadata['build-time']) }}</updated>
{% set posts = get_file_list('blog_posts/*.cont') %} {% set posts = get_file_list('post-*.thtml', sort_order='file_name', reverse=True) %}
{% for post in posts %} {% for post in posts %}
{% set post_meta = get_file_metadata(post['file_path']) %} {% set post_meta = get_file_metadata(post['file_path']) %}
<entry> <entry>

@ -0,0 +1,4 @@
{
"type": "templatable",
"title": "Pixywerk2 RSS Feed"
}

Some files were not shown because too many files have changed in this diff Show More