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/ html/
./.*/ ./.*/
[articles/**/.static/] [articles/**/.static/]

View File

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

View File

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

View File

@ -1,7 +1,7 @@
Title: Cached Neocities Uploads Title: Cached Neocities Uploads
Brief: Making uploading of directories to Neocities less painful. Brief: Making uploading of directories to Neocities less painful.
Date: 1707585916 Date: 1707585916
Tags: Programming, Bash Tags: Bash
CSS: /style.css CSS: /style.css
Quick and dirty Bash-based sha256sum checksum solution to create stamps for later checking and rejection. 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") cd $(dirname "$0")
mkdir -p ./.dynamic mkdir -p ./.dynamic
mkdir -p ./.temp 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 ./.temp/waveforms

View File

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

View File

@ -1,4 +1,4 @@
#!/usr/bin/env bash #!/usr/bin/bash
set +e set +e
shopt -s extglob 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 init
git submodule update git submodule update

View File

@ -18,7 +18,7 @@ def parse_metadata(filepath: str) -> {}:
if key == "Date": if key == "Date":
result["Date"] = time.gmtime(int(val)) result["Date"] = time.gmtime(int(val))
elif key == "Tags": elif key == "Tags":
result["Tags"] = [v.strip() for v in val.split(",")] result["Tags"] = val.split(",")
else: else:
result[key] = val result[key] = val
result["Last Edit"] = time.gmtime(int(subprocess.getoutput(r"stat -c %Y " + filepath))) 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]) metadata = parse_metadata(argv[1])
directory = path.split(path.dirname(path.abspath(argv[1])))[-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" article_head = "\n# " + title + "\n"
brief = metadata.get("Brief") 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: 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" 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") tags = metadata.get("Tags")
if tags: if tags:
tag_links = [] article_head += f"""-- Tags: *{",".join(tags)}*\n\n"""
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 += "---\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="/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 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 rel="me" href="https://poto.cafe/@veclavtalica">mastodon</a></li>
<li><a href="/tags.html">tags</a></li>
</ul> </ul>
</nav> </nav>
@ -18,7 +17,7 @@ HEAD_EMBED = """
NOTICE = """ NOTICE = """
<footer> <footer>
<a href="#top">^ Return</a> <a href="#top">Take me home </a>
</footer> </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 for cur in ./html/{*,*/*,*/*/*}; do
if [ -f "$cur" ] && [[ ! "$cur" == *.upload-checksum ]]; then if [ -f "$cur" ] && [[ ! "$cur" == *.upload-checksum ]]; then