Compare commits

...

3 commits

Author SHA1 Message Date
leafee98 7aea4d4db8 place grid sections macro to another file 2023-10-24 15:22:28 +08:00
leafee98 354a0a958a transform unhide_func from macro to included html 2023-10-24 15:10:19 +08:00
leafee98 eb13d4f4a0 transform autoreload from macro to included html 2023-10-24 15:07:23 +08:00
4 changed files with 76 additions and 82 deletions

4
template/autoreload.html Normal file
View file

@ -0,0 +1,4 @@
<script>
document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] +
':35729/livereload.js?snipver=1"></' + 'script>')
</script>

View file

@ -0,0 +1,40 @@
{% macro render_item(item) %}
{% set class_str = "item" %}
{% if item.highlight %}
{% set class_str = class_str + " " + "highlight" %}
{% endif %}
{% set href = "/#" %}
{% if item.permalink is defined and not item.hide_permalink %}
{% set href = item.permalink %}
{% endif %}
{% set misc_attr = "" %}
{% if item.hide_permalink %}
{% set misc_attr = misc_attr + " " + "hidden_permalink=\"" + item.permalink + "\"" %}
{% set misc_attr = misc_attr + " " + "seed=\"" + item.seed + "\"" %}
{% endif %}
<a class="{{ class_str }}" href="{{ href | safe }}" {{ misc_attr | safe }}>
<dl>
<dt>{{ item.name }}</dt>
{% if item.description is defined %}
<dd>{{ item.description }}</dd>
{% endif %}
</dl>
</a>
{% endmacro %}
{% macro render_section(sect) %}
<section>
<h2>{{ sect.name }}</h2>
<div class="item_container">
{% for item in sect.items %}
{{ render_item(item) }}
{% endfor %}
</div>
</section>
{% endmacro %}

28
template/hide.html Normal file
View file

@ -0,0 +1,28 @@
<script>
function unhide(seed, arr) {
seed %= 1000000007;
const str_arr = [];
for (let i = 0; i < arr.length; i++) {
str_arr.push((((arr[i] - seed) % 256) + 256) % 256)
seed = seed * seed % 1000000007;
}
const ui8_arr = new Uint8Array(str_arr);
const str = new TextDecoder().decode(ui8_arr);
return str;
}
function unhide_permalink() {
let anchors = document.querySelectorAll("a[hidden_permalink][seed]")
for (let anchor of anchors) {
let arr = new Array();
for (let n of anchor.getAttribute("hidden_permalink").split(",")) {
arr.push(Number(n));
};
let seed = Number(anchor.getAttribute("seed"))
anchor.href = unhide(seed, arr);
}
}
</script>

View file

@ -1,89 +1,11 @@
<!DOCTYPE html>
{% macro autoreload() %}
<script>
document.write('<script src="http://' + (location.host || 'localhost').split(':')[0] +
':35729/livereload.js?snipver=1"></' + 'script>')
</script>
{% endmacro %}
{% macro unhide_func() %}
<script>
function unhide(seed, arr) {
seed %= 1000000007;
const str_arr = [];
for (let i = 0; i < arr.length; i++) {
str_arr.push((((arr[i] - seed) % 256) + 256) % 256)
seed = seed * seed % 1000000007;
}
const ui8_arr = new Uint8Array(str_arr);
const str = new TextDecoder().decode(ui8_arr);
return str;
}
function unhide_permalink() {
let anchors = document.querySelectorAll("a[hidden_permalink][seed]")
for (let anchor of anchors) {
let arr = new Array();
for (let n of anchor.getAttribute("hidden_permalink").split(",")) {
arr.push(Number(n));
};
let seed = Number(anchor.getAttribute("seed"))
anchor.href = unhide(seed, arr);
}
}
</script>
{% endmacro %}
{% macro render_item(item) %}
{% set class_str = "item" %}
{% if item.highlight %}
{% set class_str = class_str + " " + "highlight" %}
{% endif %}
{% set href = "/#" %}
{% if item.permalink is defined and not item.hide_permalink %}
{% set href = item.permalink %}
{% endif %}
{% set misc_attr = "" %}
{% if item.hide_permalink %}
{% set misc_attr = misc_attr + " " + "hidden_permalink=\"" + item.permalink + "\"" %}
{% set misc_attr = misc_attr + " " + "seed=\"" + item.seed + "\"" %}
{% endif %}
<a class="{{ class_str }}" href="{{ href | safe }}" {{ misc_attr | safe }}>
<dl>
<dt>{{ item.name }}</dt>
{% if item.description is defined %}
<dd>{{ item.description }}</dd>
{% endif %}
</dl>
</a>
{% endmacro %}
{% macro render_section(sect) %}
<section>
<h2>{{ sect.name }}</h2>
<div class="item_container">
{% for item in sect.items %}
{{ render_item(item) }}
{% endfor %}
</div>
</section>
{% endmacro %}
{% import "grid_sections.html.njk" as grid_sections %}
<html>
<head>
{% if dev %}
{{ autoreload() }}
{% include "autoreload.html" %}
{% endif %}
<title>{{ name }}</title>
@ -91,7 +13,7 @@
<meta name="viewport" content="width=device-width,minimum-scale=1">
<link ref="canonical" href="{{canonical_link}}" />
{{ unhide_func() }}
{% include "hide.html" %}
</head>
<style>{% include "reset.css" %}</style>
@ -105,7 +27,7 @@
</div>
{% for s in section %}
{{ render_section(s) }}
{{ grid_sections.render_section(s) }}
{% endfor %}
</main>