Compare commits

..

No commits in common. "c36ce7dd2055e23781b3e5c830f80f87e7ad0552" and "3ac4bc2965f3a0b8b006cd4873d4329eded53067" have entirely different histories.

15 changed files with 65 additions and 137 deletions

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
**/__pycache__/
**/__pycache__/*
html/
./.*/
[articles/**/.static/]

View File

@ -1,7 +1,7 @@
Title: Testing Firefox Wasm Tail Call
Brief: Or why assumptions are not always correct.
Date: 1708076705
Tags: Optimization, Wasm, Interpreters
Tags: Wasm, Interpreters
CSS: /style.css
### Lore ###

View File

@ -1,7 +1,7 @@
Title: Hand Optimized Simplex 2D
Brief: Results of messing around with moving and hoisting stuff around.
Date: 1688995095
Tags: Programming, GLSL, OpenGL, Optimization
Tags: Programming, GLSL, OpenGL
CSS: /style.css
![](/articles/hand-opt-simplex-2d/noise.png)

View File

@ -1,7 +1,7 @@
Title: Cached Neocities Uploads
Brief: Making uploading of directories to Neocities less painful.
Date: 1707585916
Tags: Programming, Bash
Tags: Bash
CSS: /style.css
Quick and dirty Bash-based sha256sum checksum solution to create stamps for later checking and rejection.

View File

@ -1,7 +1,7 @@
#!/usr/bin/env bash
#!/bin/sh
cd $(dirname "$0")
mkdir -p ./.dynamic
mkdir -p ./.temp
$CC -Wno-unused-result -Wno-incompatible-pointer-types waveforms.c ../../tools/gifenc/gifenc.c -I../../tools -O2 -o ./.temp/waveforms
gcc -Wno-unused-result -Wno-incompatible-pointer-types waveforms.c ../../tools/gifenc/gifenc.c -I../../tools -O2 -o ./.temp/waveforms
./.temp/waveforms

View File

@ -1,12 +1,7 @@
#!/usr/bin/env bash
#!/bin/sh
set +e
# Settings:
# =========
export CC=cc
export URL=https://mjestecko.neocities.org
mkdir -p ./html/articles
./tools/main_page_generator.py ./articles | ./tools/mmd/build/multimarkdown > ./html/index.html
@ -14,7 +9,7 @@ mkdir -p ./html/articles
for d in ./articles/*/; do
if [ -d "$d" ]; then
if test -f "$d/make"; then
("$d/make")
"$d/make"
fi
if test -d "$d/.dynamic"; then
mkdir -p "./html/articles/$(basename -- $d)"
@ -24,15 +19,8 @@ for d in ./articles/*/; do
mkdir -p "./html/articles/$(basename -- $d)"
cp -r "$d/.static/." "./html/articles/$(basename -- $d)/"
fi
./tools/article_wrapper.py "$d/page.mmd" $URL | ./tools/mmd/build/multimarkdown > "./html/articles/$(basename -- $d).html"
./tools/article_wrapper.py "$d/page.mmd" https://mjestecko.neocities.org | ./tools/mmd/build/multimarkdown > "./html/articles/$(basename -- $d).html"
fi
done
mkdir -p "./html/tags/"
./tools/tag_listing_generator.py ./articles/ ./html/ | ./tools/mmd/build/multimarkdown > "./html/tags.html"
for f in ./html/tags/*.html; do
echo $(cat "$f" | ./tools/mmd/build/multimarkdown) > "$f"
done
./tools/feed_generator.py ./articles/ $URL > ./html/feed.xml
./tools/feed_generator.py ./articles/ https://mjestecko.neocities.org > ./html/feed.xml

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/bash
set +e
shopt -s extglob

View File

@ -1,3 +0,0 @@
#!/usr/bin/env bash
python3 -m http.server --directory ./html/

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/bin/sh
git submodule init
git submodule update

View File

@ -18,7 +18,7 @@ def parse_metadata(filepath: str) -> {}:
if key == "Date":
result["Date"] = time.gmtime(int(val))
elif key == "Tags":
result["Tags"] = [v.strip() for v in val.split(",")]
result["Tags"] = val.split(",")
else:
result[key] = val
result["Last Edit"] = time.gmtime(int(subprocess.getoutput(r"stat -c %Y " + filepath)))

View File

@ -24,7 +24,7 @@ with open(argv[1], "r") as f:
metadata = parse_metadata(argv[1])
directory = path.split(path.dirname(path.abspath(argv[1])))[-1]
title = metadata["Title"]
title = metadata.get("Title", "Oopsie, somebody forgot to name the article!")
article_head = "\n# " + title + "\n"
brief = metadata.get("Brief")
@ -41,12 +41,10 @@ if not last_edit is None:
last_edit.tm_mday != date.tm_mday or last_edit.tm_year != date.tm_year:
article_head += f"-- Edited: *{MONTHS[last_edit.tm_mon]} {last_edit.tm_mday}, {last_edit.tm_year} UTC*\n\n"
# todo: Hyperlinks to appropriate tag pages.
tags = metadata.get("Tags")
if tags:
tag_links = []
for tag in tags:
tag_links.append(f"[{tag}](/tags/{urllib.parse.quote(tag.lower())}.html)")
article_head += f"""-- Tags: *{", ".join(tag_links)}*\n\n"""
article_head += f"""-- Tags: *{",".join(tags)}*\n\n"""
article_head += "---\n\n"

View File

@ -10,7 +10,6 @@ HEAD_EMBED = """
<li><a href="/articles/mjestečko.html">about</a></li>
<li><a href="https://modarchive.org/index.php?request=view_artist_modules&query=96070">tracks</a></li>
<li><a rel="me" href="https://poto.cafe/@veclavtalica">mastodon</a></li>
<li><a href="/tags.html">tags</a></li>
</ul>
</nav>
@ -18,7 +17,7 @@ HEAD_EMBED = """
NOTICE = """
<footer>
<a href="#top">^ Return</a>
<a href="#top">Take me home </a>
</footer>
"""

View File

@ -1,54 +0,0 @@
#!/usr/bin/env python3
# todo: Problems might arise with casing if there are overlaps such as 'Tag' and 'tag'.
from sys import argv, exit
import time, urllib.parse, re
from os import walk
import os.path as path
from article_utils import the_line_after_metadata, parse_metadata
from page_shares import wrap_page
tag_listing_header = "CSS: /style.css\n\n"
main_listing_header = "CSS: /style.css\n\n"
if len(argv) <= 1:
print("No article directory was supplied")
exit(-1)
if len(argv) <= 2:
print("No tag listing output directory was supplied")
exit(-1)
tag_to_tag_page = {}
tag_to_articles = {}
tag_counts = {}
article_to_title = {}
for root, dirs, _ in walk(argv[1]):
for d in dirs:
metadata = parse_metadata(path.abspath(root + '/' + d + "/page.mmd"))
article = "/articles/" + urllib.parse.quote(d) + ".html"
for tag in metadata.get('Tags', []):
tag_to_articles[tag] = tag_to_articles.get(tag, []) + [article]
tag_counts[tag] = tag_counts.get(tag, 0) + 1
article_to_title[article] = metadata['Title']
break
for tag in tag_to_articles:
tag_page = f"/tags/{urllib.parse.quote(tag.lower())}.html"
tag_to_tag_page[tag] = tag_page
with open(argv[2] + tag_page, 'w') as f:
tagged_article_listing = f"\n# Tagged {tag} #\n---\n" + \
'\n'.join(f"- [{article_to_title[article]}]({article})" \
for article in tag_to_articles[tag])
f.write(tag_listing_header + wrap_page(tagged_article_listing))
main_listing = "\n# Tag Listing #\n---\n" + \
', '.join(f"[{tag}]({tag_to_tag_page[tag]}) ({tag_counts[tag]})" \
for tag in sorted(tag_counts.keys(), key=lambda x: tag_counts[x], reverse=True)) + \
'\n\n'
print(main_listing_header + wrap_page(main_listing))

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash
#!/usr/bin/bash
for cur in ./html/{*,*/*,*/*/*}; do
if [ -f "$cur" ] && [[ ! "$cur" == *.upload-checksum ]]; then