start playing with 0.15 bundle format
|
|
@ -95,8 +95,8 @@
|
|||
}
|
||||
}}
|
||||
|
||||
html.style(get-css())
|
||||
html.script(get-js())
|
||||
get-css()
|
||||
get-js()
|
||||
context for tag in additionnal-head-tags.final() {
|
||||
tag
|
||||
}
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@
|
|||
|
||||
/// Concatenate all css found in css-list at the end of the document
|
||||
#let get-css() = context {
|
||||
css-list.final().join("\n\n")
|
||||
html.style(css-list.final().join("\n\n"))
|
||||
}
|
||||
|
||||
/// Concatenate all js found in js-list at the end of the document
|
||||
#let get-js() = context {
|
||||
js-list.final().join("\n\n")
|
||||
html.script(js-list.final().join("\n\n"))
|
||||
}
|
||||
|
||||
#let html-show(body) = {
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 934 KiB After Width: | Height: | Size: 934 KiB |
|
Before Width: | Height: | Size: 344 KiB After Width: | Height: | Size: 344 KiB |
|
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 29 KiB |
278
test_template/index.typ
Normal file
|
|
@ -0,0 +1,278 @@
|
|||
#import "@local/template-web:0.0.1": *
|
||||
|
||||
#let summ = summary(
|
||||
url: "http://test.example.com",
|
||||
title: "TeTyTe",
|
||||
preview-image: image(
|
||||
"assets/platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
),
|
||||
author: "Me!",
|
||||
tags: ("test", "html/css", "typst"),
|
||||
description: "Test of the TTT template",
|
||||
date: datetime(year: 1942, month: 4, day: 1),
|
||||
)
|
||||
|
||||
#show: webpage.with(
|
||||
..summ.template-args,
|
||||
logo: image(
|
||||
"assets/platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
height: 100pt,
|
||||
width: 100pt, // TODO 0.15 regression? in 0.14 setting the height was enough
|
||||
),
|
||||
header: [
|
||||
= Test TeTyTe
|
||||
Hello World!
|
||||
],
|
||||
footer: context [
|
||||
|
||||
#sym.copyright #document.date.display("[year]") Histausse \
|
||||
Please don't train AI on my stuff without explicit permission
|
||||
],
|
||||
nav-elements: (
|
||||
/*
|
||||
link(
|
||||
"http://test.example.com",
|
||||
image(
|
||||
"assets/platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
height: 2em,
|
||||
)
|
||||
),*/
|
||||
html.a(href: "http://test.example.com", aria-label: "Home", icons.home-icon), // /!\ aria-label is important for accessibility /!\
|
||||
html.a(href: "/feed.rss", aria-label: "RSS feed", icons.rss-icon),
|
||||
),
|
||||
menu: [
|
||||
- #link("example.com")[Hello Void!]
|
||||
- #link("example.com")[Demons]
|
||||
- #link("example.com")[Run]
|
||||
- #link("example.com")[When]
|
||||
- #link("example.com")[A]
|
||||
- #link("example.com")[Good]
|
||||
- #link("example.com")[Man]
|
||||
- #link("example.com")[Goes]
|
||||
- #link("example.com")[To]
|
||||
- #link("example.com")[War]
|
||||
],
|
||||
site-name: "TTT",
|
||||
icon: "/img/platypus.png", // TODO: use <ico> somehow? probably not supported in 0.15
|
||||
|
||||
// Pyscript:
|
||||
pyscript-data-list: (
|
||||
"remote-2026.3.1": pyscript-data(
|
||||
"https://pyscript.net/releases/2026.3.1/core.js",
|
||||
additionnal-head-tags: {
|
||||
html.elem("script", attrs: (src: "/mini-coi.js")) // TODO: use <mini-coi> somehow? probably not supported in 0.15
|
||||
html.elem("link", attrs: (rel: "stylesheet", href: "https://pyscript.net/releases/2026.3.1/core.css"))
|
||||
},
|
||||
)
|
||||
),
|
||||
pyscript-version: "remote-2026.3.1",
|
||||
)
|
||||
|
||||
|
||||
#lorem(400)
|
||||
|
||||
```python-run
|
||||
n = ""
|
||||
while not n.isnumeric():
|
||||
n = input("enter a valid number: ")
|
||||
|
||||
for i in range(1, int(n) + 1):
|
||||
if i % 3 == 0 and i % 5 == 0:
|
||||
print("plopliplop")
|
||||
elif i % 3 == 0:
|
||||
print("plop")
|
||||
elif i % 5 == 0:
|
||||
print("plip")
|
||||
else:
|
||||
print(i)
|
||||
```
|
||||
```python-run
|
||||
# /// script
|
||||
# # requires-python = ">=3.11" # not supported yet
|
||||
# dependencies = [
|
||||
# "rich",
|
||||
# ]
|
||||
#
|
||||
# [tool.pyscript]
|
||||
# repl = true
|
||||
# [tool.pyscript.files]
|
||||
# "https://peps.python.org/api/peps.json" = "./peps.json"
|
||||
# ///
|
||||
|
||||
import json
|
||||
from rich.pretty import pprint
|
||||
|
||||
with open("./peps.json") as fd:
|
||||
data = json.load(fd)
|
||||
pprint([(k, v["title"]) for k, v in data.items()][:10])
|
||||
# >>> print(data["723"]["title"])
|
||||
# Inline script metadata
|
||||
```
|
||||
|
||||
```python-run
|
||||
# /// script
|
||||
# # requires-python = ">=3.11" # not supported yet
|
||||
# dependencies = [
|
||||
# "rich",
|
||||
# ]
|
||||
#
|
||||
# [tool.pyscript]
|
||||
# repl = true
|
||||
# hide-meta = true
|
||||
# [tool.pyscript.files]
|
||||
# "https://peps.python.org/api/peps.json" = "./peps.json"
|
||||
# ///
|
||||
# setting tool.pyscript.hide-meta to true will hide the `/// script` section
|
||||
import json
|
||||
from rich.pretty import pprint
|
||||
|
||||
with open("./peps.json") as fd:
|
||||
data = json.load(fd)
|
||||
pprint([(k, v["title"]) for k, v in data.items()][:10])
|
||||
# >>> print(data["723"]["title"])
|
||||
# Inline script metadata
|
||||
```
|
||||
|
||||
```python-run
|
||||
# /// script
|
||||
# dependencies = [
|
||||
# "pygame-ce",
|
||||
# "./python-packages/isn_s_cube-0.1.0-py3-none-any.whl"
|
||||
# ]
|
||||
# [tool.pyscript]
|
||||
# pygame = true
|
||||
# ///
|
||||
from isn_s_cube import wasm
|
||||
await wasm()
|
||||
```
|
||||
|
||||
#summ.card
|
||||
|
||||
Test, `this is not a code block`, end test.
|
||||
|
||||
```python
|
||||
def plopliplop(n: int)
|
||||
for i in range(n):
|
||||
if i % 3 == 0 and i % 5 == 0:
|
||||
print("plopliplop")
|
||||
elif i % 3 == 0:
|
||||
print("plop")
|
||||
elif i % 5 == 0:
|
||||
print("plip")
|
||||
else:
|
||||
print(i)
|
||||
```
|
||||
|
||||
#raw(range(10).map(i => lorem(100)).join("\n"), block: true)
|
||||
|
||||
/*
|
||||
#figure({
|
||||
show table: set text(size: 0.80em)
|
||||
table(
|
||||
columns: 5,
|
||||
//inset: (x: 0% + 5pt, y: 0% + 2pt),
|
||||
stroke: none,
|
||||
align: center+horizon,
|
||||
table.hline(),
|
||||
table.header(
|
||||
table.cell(colspan: 5, inset: 3pt)[],
|
||||
table.cell(rowspan: 2)[*SDK version*],
|
||||
table.vline(end: 3),
|
||||
table.vline(start: 4),
|
||||
table.cell(colspan: 4)[*Number of API methods*],
|
||||
[Documented], [In emulator], [Only documented], [Only in emulator],
|
||||
),
|
||||
table.cell(colspan: 5, inset: 3pt)[],
|
||||
table.hline(),
|
||||
table.cell(colspan: 5, inset: 3pt)[],
|
||||
|
||||
[32], [495713], [499837], [1060], [5184],
|
||||
[33], [537427], [539236], [1258], [3067],
|
||||
[34], [605106], [605098], [26], [18],
|
||||
|
||||
table.cell(colspan: 4, inset: 3pt)[],
|
||||
table.hline(),
|
||||
)},
|
||||
|
||||
caption: [Comparison of API methods between documentation and emulators],
|
||||
)<tab:cl-platform_apis>
|
||||
*/
|
||||
|
||||
```raw-css
|
||||
table {
|
||||
//border: 1px solid blue;
|
||||
border-bottom: 1px solid #999999;
|
||||
border-top: 1px solid #999999;
|
||||
border-collapse: collapse;
|
||||
margin: 0.4em;
|
||||
}
|
||||
th, td {
|
||||
padding: 0.2em 0.5em;
|
||||
}
|
||||
td {
|
||||
//border: 1px solid red;
|
||||
}
|
||||
|
||||
thead {
|
||||
border-bottom: 1px solid #999999;
|
||||
}
|
||||
```
|
||||
/*
|
||||
#table(
|
||||
columns: 5,
|
||||
//inset: (x: 0% + 5pt, y: 0% + 2pt),
|
||||
//stroke: none,
|
||||
align: center+horizon,
|
||||
table.hline(),
|
||||
table.header(
|
||||
table.cell(rowspan: 2)[*SDK version*],
|
||||
table.cell(colspan: 4)[*Number of API methods*],
|
||||
table.cell(stroke: black)[Documented], [In emulator], [Only documented], [Only in emulator],
|
||||
),
|
||||
table.hline(),
|
||||
[32], [495713], [499837], [1060], [5184],
|
||||
[33], [537427], [539236], [1258], [3067],
|
||||
[34], [605106], [605098], [26], [18],
|
||||
table.hline(),
|
||||
)
|
||||
*/
|
||||
|
||||
#figure(
|
||||
image(
|
||||
"assets/smol-platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
),
|
||||
caption: [A Platypus!]
|
||||
)
|
||||
#figure(
|
||||
image(
|
||||
"assets/big-platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
),
|
||||
caption: [A Big Platypus!]
|
||||
)
|
||||
|
||||
#let perm = (17, 6, 20, 19, 15, 5, 13, 11, 14, 12, 16, 10, 2, 3, 1, 9, 7, 4, 18, 8)
|
||||
#let summaries = range(20).map(i =>
|
||||
summary(
|
||||
url: "http://test.example.com/tst/" + str(perm.at(i)),
|
||||
title: "Card " + str(perm.at(i)),
|
||||
tags: if perm.at(i) == 20 {
|
||||
("tag2", "tag5","loooooonnnnnnnnnnnnnng-tag","some-tag","some-other-tag")
|
||||
} else {
|
||||
(2, 3, 5, 7).filter(j => calc.rem(perm.at(i), j) == 0).map(j => "tag" + str(j))
|
||||
},
|
||||
preview-image: summ.preview-image,
|
||||
img-copyright: if calc.rem(i, 3) == 0 { [Histausse ] } else { none },
|
||||
author: "Me!",
|
||||
description: lorem(10 * calc.rem(i * 123, 10)),
|
||||
date: datetime(year: 2000, month: 12, day: perm.at(i)),
|
||||
)
|
||||
)
|
||||
#card-list(
|
||||
min-width: 200,
|
||||
summaries,
|
||||
)
|
||||
|
|
@ -1,289 +1,32 @@
|
|||
#import "@local/template-web:0.0.1": *
|
||||
#import "index.typ": summ, summaries
|
||||
#import "@local/template-web:0.0.1": rss
|
||||
|
||||
#let summ = summary(
|
||||
url: "http://test.example.com",
|
||||
title: "TeTyTe",
|
||||
preview-image: image(
|
||||
"./platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
),
|
||||
author: "Me!",
|
||||
tags: ("test", "html/css", "typst"),
|
||||
description: "Test of the TTT template",
|
||||
date: datetime(year: 1942, month: 4, day: 1),
|
||||
#document(
|
||||
"index.html",
|
||||
..summ.document-args,
|
||||
include "index.typ"
|
||||
)
|
||||
#asset(
|
||||
"/img/platypus.png",
|
||||
read("assets/platypus.png", encoding: none),
|
||||
) <ico>
|
||||
#asset(
|
||||
"/mini-coi.js",
|
||||
read("assets/mini-coi.js", encoding: none),
|
||||
) <mini-coi>
|
||||
#asset(
|
||||
"/python-packages/isn_s_cube-0.1.0-py3-none-any.whl",
|
||||
read("assets/isn_s_cube-0.1.0-py3-none-any.whl", encoding: none),
|
||||
)
|
||||
|
||||
#set document(
|
||||
..summ.document-args
|
||||
)
|
||||
#show: webpage.with(
|
||||
..summ.template-args,
|
||||
logo: image(
|
||||
"./platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
height: 100pt,
|
||||
),
|
||||
header: [
|
||||
= Test TeTyTe
|
||||
Hello World!
|
||||
],
|
||||
footer: context [
|
||||
|
||||
#sym.copyright #document.date.display("[year]") Histausse \
|
||||
Please don't train AI on my stuff without explicit permission
|
||||
],
|
||||
nav-elements: (
|
||||
/*
|
||||
link(
|
||||
"http://test.example.com",
|
||||
image(
|
||||
"./platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
height: 2em,
|
||||
)
|
||||
),*/
|
||||
html.a(href: "http://test.example.com", aria-label: "Home", icons.home-icon), // /!\ aria-label is important for accessibility /!\
|
||||
html.a(href: "http://test.example.com/feed.rss", aria-label: "RSS feed", icons.rss-icon),
|
||||
),
|
||||
menu: [
|
||||
- #link("example.com")[Hello Void!]
|
||||
- #link("example.com")[Demons]
|
||||
- #link("example.com")[Run]
|
||||
- #link("example.com")[When]
|
||||
- #link("example.com")[A]
|
||||
- #link("example.com")[Good]
|
||||
- #link("example.com")[Man]
|
||||
- #link("example.com")[Goes]
|
||||
- #link("example.com")[To]
|
||||
- #link("example.com")[War]
|
||||
],
|
||||
site-name: "TTT",
|
||||
icon: "https://jean-marie.mineau.eu/website_assets/platypus.png",
|
||||
|
||||
// Pyscript:
|
||||
pyscript-data-list: (
|
||||
"remote-2026.3.1": pyscript-data(
|
||||
"https://pyscript.net/releases/2026.3.1/core.js",
|
||||
additionnal-head-tags: {
|
||||
html.elem("script", attrs: (src: "./mini-coi.js"))
|
||||
html.elem("link", attrs: (rel: "stylesheet", href: "https://pyscript.net/releases/2026.3.1/core.css"))
|
||||
},
|
||||
)
|
||||
),
|
||||
pyscript-version: "remote-2026.3.1",
|
||||
)
|
||||
|
||||
|
||||
#lorem(400)
|
||||
|
||||
```python-run
|
||||
n = ""
|
||||
while not n.isnumeric():
|
||||
n = input("enter a valid number: ")
|
||||
|
||||
for i in range(1, int(n) + 1):
|
||||
if i % 3 == 0 and i % 5 == 0:
|
||||
print("plopliplop")
|
||||
elif i % 3 == 0:
|
||||
print("plop")
|
||||
elif i % 5 == 0:
|
||||
print("plip")
|
||||
else:
|
||||
print(i)
|
||||
```
|
||||
```python-run
|
||||
# /// script
|
||||
# # requires-python = ">=3.11" # not supported yet
|
||||
# dependencies = [
|
||||
# "rich",
|
||||
# ]
|
||||
#
|
||||
# [tool.pyscript]
|
||||
# repl = true
|
||||
# [tool.pyscript.files]
|
||||
# "https://peps.python.org/api/peps.json" = "./peps.json"
|
||||
# ///
|
||||
|
||||
import json
|
||||
from rich.pretty import pprint
|
||||
|
||||
with open("./peps.json") as fd:
|
||||
data = json.load(fd)
|
||||
pprint([(k, v["title"]) for k, v in data.items()][:10])
|
||||
# >>> print(data["723"]["title"])
|
||||
# Inline script metadata
|
||||
```
|
||||
|
||||
```python-run
|
||||
# /// script
|
||||
# # requires-python = ">=3.11" # not supported yet
|
||||
# dependencies = [
|
||||
# "rich",
|
||||
# ]
|
||||
#
|
||||
# [tool.pyscript]
|
||||
# repl = true
|
||||
# hide-meta = true
|
||||
# [tool.pyscript.files]
|
||||
# "https://peps.python.org/api/peps.json" = "./peps.json"
|
||||
# ///
|
||||
# setting tool.pyscript.hide-meta to true will hide the `/// script` section
|
||||
import json
|
||||
from rich.pretty import pprint
|
||||
|
||||
with open("./peps.json") as fd:
|
||||
data = json.load(fd)
|
||||
pprint([(k, v["title"]) for k, v in data.items()][:10])
|
||||
# >>> print(data["723"]["title"])
|
||||
# Inline script metadata
|
||||
```
|
||||
|
||||
```python-run
|
||||
# /// script
|
||||
# dependencies = [
|
||||
# "pygame-ce",
|
||||
# "./isn_s_cube-0.1.0-py3-none-any.whl"
|
||||
# ]
|
||||
# [tool.pyscript]
|
||||
# pygame = true
|
||||
# ///
|
||||
from isn_s_cube import wasm
|
||||
await wasm()
|
||||
```
|
||||
|
||||
#summ.card
|
||||
|
||||
Test, `this is not a code block`, end test.
|
||||
|
||||
```python
|
||||
def plopliplop(n: int)
|
||||
for i in range(n):
|
||||
if i % 3 == 0 and i % 5 == 0:
|
||||
print("plopliplop")
|
||||
elif i % 3 == 0:
|
||||
print("plop")
|
||||
elif i % 5 == 0:
|
||||
print("plip")
|
||||
else:
|
||||
print(i)
|
||||
```
|
||||
|
||||
#raw(range(10).map(i => lorem(100)).join("\n"), block: true)
|
||||
|
||||
/*
|
||||
#figure({
|
||||
show table: set text(size: 0.80em)
|
||||
table(
|
||||
columns: 5,
|
||||
//inset: (x: 0% + 5pt, y: 0% + 2pt),
|
||||
stroke: none,
|
||||
align: center+horizon,
|
||||
table.hline(),
|
||||
table.header(
|
||||
table.cell(colspan: 5, inset: 3pt)[],
|
||||
table.cell(rowspan: 2)[*SDK version*],
|
||||
table.vline(end: 3),
|
||||
table.vline(start: 4),
|
||||
table.cell(colspan: 4)[*Number of API methods*],
|
||||
[Documented], [In emulator], [Only documented], [Only in emulator],
|
||||
),
|
||||
table.cell(colspan: 5, inset: 3pt)[],
|
||||
table.hline(),
|
||||
table.cell(colspan: 5, inset: 3pt)[],
|
||||
|
||||
[32], [495713], [499837], [1060], [5184],
|
||||
[33], [537427], [539236], [1258], [3067],
|
||||
[34], [605106], [605098], [26], [18],
|
||||
|
||||
table.cell(colspan: 4, inset: 3pt)[],
|
||||
table.hline(),
|
||||
)},
|
||||
|
||||
caption: [Comparison of API methods between documentation and emulators],
|
||||
)<tab:cl-platform_apis>
|
||||
*/
|
||||
|
||||
```raw-css
|
||||
table {
|
||||
//border: 1px solid blue;
|
||||
border-bottom: 1px solid #999999;
|
||||
border-top: 1px solid #999999;
|
||||
border-collapse: collapse;
|
||||
margin: 0.4em;
|
||||
}
|
||||
th, td {
|
||||
padding: 0.2em 0.5em;
|
||||
}
|
||||
td {
|
||||
//border: 1px solid red;
|
||||
}
|
||||
|
||||
thead {
|
||||
border-bottom: 1px solid #999999;
|
||||
}
|
||||
```
|
||||
/*
|
||||
#table(
|
||||
columns: 5,
|
||||
//inset: (x: 0% + 5pt, y: 0% + 2pt),
|
||||
//stroke: none,
|
||||
align: center+horizon,
|
||||
table.hline(),
|
||||
table.header(
|
||||
table.cell(rowspan: 2)[*SDK version*],
|
||||
table.cell(colspan: 4)[*Number of API methods*],
|
||||
table.cell(stroke: black)[Documented], [In emulator], [Only documented], [Only in emulator],
|
||||
),
|
||||
table.hline(),
|
||||
[32], [495713], [499837], [1060], [5184],
|
||||
[33], [537427], [539236], [1258], [3067],
|
||||
[34], [605106], [605098], [26], [18],
|
||||
table.hline(),
|
||||
)
|
||||
*/
|
||||
|
||||
#figure(
|
||||
image(
|
||||
"./smol-platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
),
|
||||
caption: [A Platypus!]
|
||||
)
|
||||
#figure(
|
||||
image(
|
||||
"./big-platypus.png",
|
||||
alt: "A drawing of a blue-ish round-ish platypus with big eyes, holding a laptop. This platypus is quite cute, but I might be biased.",
|
||||
),
|
||||
caption: [A Big Platypus!]
|
||||
)
|
||||
|
||||
#let perm = (17, 6, 20, 19, 15, 5, 13, 11, 14, 12, 16, 10, 2, 3, 1, 9, 7, 4, 18, 8)
|
||||
#let summaries = range(20).map(i =>
|
||||
summary(
|
||||
url: "http://test.example.com/tst/" + str(perm.at(i)),
|
||||
title: "Card " + str(perm.at(i)),
|
||||
tags: if perm.at(i) == 20 {
|
||||
("tag2", "tag5","loooooonnnnnnnnnnnnnng-tag","some-tag","some-other-tag")
|
||||
} else {
|
||||
(2, 3, 5, 7).filter(j => calc.rem(perm.at(i), j) == 0).map(j => "tag" + str(j))
|
||||
},
|
||||
preview-image: summ.preview-image,
|
||||
img-copyright: if calc.rem(i, 3) == 0 { [Histausse ] } else { none },
|
||||
author: "Me!",
|
||||
description: lorem(10 * calc.rem(i * 123, 10)),
|
||||
date: datetime(year: 2000, month: 12, day: perm.at(i)),
|
||||
#asset(
|
||||
"feed.rss",
|
||||
rss(
|
||||
"TeTyTe test typst template",
|
||||
"https://test.example.com",
|
||||
"Test of the TTT template",
|
||||
"https://test.example.com/rss.rss",
|
||||
summaries,
|
||||
webmaster: "me@example.com (Me)",
|
||||
)
|
||||
)
|
||||
#card-list(
|
||||
min-width: 200,
|
||||
summaries,
|
||||
)
|
||||
|
||||
#raw(lang: "xml", block: true, rss(
|
||||
"TeTyTe test typst template",
|
||||
"https://test.example.com",
|
||||
"Test of the TTT template",
|
||||
"https://test.example.com/rss.rss",
|
||||
summaries,
|
||||
webmaster: "me@example.com (Me)",
|
||||
))
|
||||
|
|
|
|||
178
test_template/main/feed.rss
Normal file
|
|
@ -0,0 +1,178 @@
|
|||
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
|
||||
<channel>
|
||||
<title>TeTyTe test typst template</title>
|
||||
<link>https://test.example.com</link>
|
||||
<description>Test of the TTT template</description>
|
||||
<language>en-us</language>
|
||||
<lastBuildDate>16 Jun 2026 00:00:01 +0000</lastBuildDate>
|
||||
<docs>https://www.rssboard.org/rss-specification</docs>
|
||||
<generator>Some random Typst scrypt</generator>
|
||||
<atom:link href="https://test.example.com/rss.rss" rel="self" type="application/rss+xml"/>
|
||||
<webMaster>me@example.com (Me)</webMaster>
|
||||
<item>
|
||||
<title>Card 20</title>
|
||||
<link>http://test.example.com/tst/20</link>
|
||||
<guid>http://test.example.com/tst/20</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At.</description>
|
||||
<pubDate>20 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
<category>tag5</category>
|
||||
<category>loooooonnnnnnnnnnnnnng-tag</category>
|
||||
<category>some-tag</category>
|
||||
<category>some-other-tag</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 19</title>
|
||||
<link>http://test.example.com/tst/19</link>
|
||||
<guid>http://test.example.com/tst/19</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e patre audiebam facete et urbane Stoicos irridente, statua est in quo a nobis philosophia defensa et collaudata est, cum id, quod maxime placeat, facere possimus, omnis.</description>
|
||||
<pubDate>19 Dec 2000 00:00:01 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 18</title>
|
||||
<link>http://test.example.com/tst/18</link>
|
||||
<guid>http://test.example.com/tst/18</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere.</description>
|
||||
<pubDate>18 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
<category>tag3</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 17</title>
|
||||
<link>http://test.example.com/tst/17</link>
|
||||
<guid>http://test.example.com/tst/17</guid>
|
||||
<description></description>
|
||||
<pubDate>17 Dec 2000 00:00:01 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 16</title>
|
||||
<link>http://test.example.com/tst/16</link>
|
||||
<guid>http://test.example.com/tst/16</guid>
|
||||
<description></description>
|
||||
<pubDate>16 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 15</title>
|
||||
<link>http://test.example.com/tst/15</link>
|
||||
<guid>http://test.example.com/tst/15</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat.</description>
|
||||
<pubDate>15 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag3</category>
|
||||
<category>tag5</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 14</title>
|
||||
<link>http://test.example.com/tst/14</link>
|
||||
<guid>http://test.example.com/tst/14</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere.</description>
|
||||
<pubDate>14 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
<category>tag7</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 13</title>
|
||||
<link>http://test.example.com/tst/13</link>
|
||||
<guid>http://test.example.com/tst/13</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e patre audiebam facete et urbane Stoicos irridente, statua est in quo a nobis philosophia defensa et.</description>
|
||||
<pubDate>13 Dec 2000 00:00:01 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 12</title>
|
||||
<link>http://test.example.com/tst/12</link>
|
||||
<guid>http://test.example.com/tst/12</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e patre audiebam facete et urbane Stoicos.</description>
|
||||
<pubDate>12 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
<category>tag3</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 11</title>
|
||||
<link>http://test.example.com/tst/11</link>
|
||||
<guid>http://test.example.com/tst/11</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do.</description>
|
||||
<pubDate>11 Dec 2000 00:00:01 +0000</pubDate>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 10</title>
|
||||
<link>http://test.example.com/tst/10</link>
|
||||
<guid>http://test.example.com/tst/10</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri.</description>
|
||||
<pubDate>10 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
<category>tag5</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 9</title>
|
||||
<link>http://test.example.com/tst/9</link>
|
||||
<guid>http://test.example.com/tst/9</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut.</description>
|
||||
<pubDate>09 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag3</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 8</title>
|
||||
<link>http://test.example.com/tst/8</link>
|
||||
<guid>http://test.example.com/tst/8</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e patre audiebam facete et urbane Stoicos.</description>
|
||||
<pubDate>08 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 7</title>
|
||||
<link>http://test.example.com/tst/7</link>
|
||||
<guid>http://test.example.com/tst/7</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e patre audiebam facete et urbane Stoicos irridente, statua est in quo a nobis philosophia defensa et.</description>
|
||||
<pubDate>07 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag7</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 6</title>
|
||||
<link>http://test.example.com/tst/6</link>
|
||||
<guid>http://test.example.com/tst/6</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri.</description>
|
||||
<pubDate>06 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
<category>tag3</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 5</title>
|
||||
<link>http://test.example.com/tst/5</link>
|
||||
<guid>http://test.example.com/tst/5</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut.</description>
|
||||
<pubDate>05 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag5</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 4</title>
|
||||
<link>http://test.example.com/tst/4</link>
|
||||
<guid>http://test.example.com/tst/4</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do.</description>
|
||||
<pubDate>04 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 3</title>
|
||||
<link>http://test.example.com/tst/3</link>
|
||||
<guid>http://test.example.com/tst/3</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At etiam Athenis, ut e patre audiebam facete et urbane Stoicos irridente, statua est in quo a nobis philosophia defensa et collaudata est, cum id, quod maxime placeat, facere possimus, omnis.</description>
|
||||
<pubDate>03 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag3</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 2</title>
|
||||
<link>http://test.example.com/tst/2</link>
|
||||
<guid>http://test.example.com/tst/2</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim aeque doleamus animo, cum corpore dolemus, fieri tamen permagna accessio potest, si aliquod aeternum et infinitum impendere malum nobis opinemur. Quod idem licet transferre in voluptatem, ut postea variari voluptas distinguique possit, augeri amplificarique non possit. At.</description>
|
||||
<pubDate>02 Dec 2000 00:00:01 +0000</pubDate>
|
||||
<category>tag2</category>
|
||||
</item>
|
||||
<item>
|
||||
<title>Card 1</title>
|
||||
<link>http://test.example.com/tst/1</link>
|
||||
<guid>http://test.example.com/tst/1</guid>
|
||||
<description>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magnam aliquam quaerat.</description>
|
||||
<pubDate>01 Dec 2000 00:00:01 +0000</pubDate>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
||||
BIN
test_template/main/img/platypus.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
702
test_template/main/index.html
Normal file
32
test_template/main/mini-coi.js
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
/*! coi-serviceworker v0.1.7 - Guido Zuidhof and contributors, licensed under MIT */
|
||||
/*! mini-coi - Andrea Giammarchi and contributors, licensed under MIT */
|
||||
/** FEATURE DETECTION VERSION - COMPATIBLE WITH SERVERS THAT DO NOT SUPPORT COI */
|
||||
(({ document: d, navigator: { serviceWorker: s } }) => {
|
||||
if (d) {
|
||||
try { new SharedArrayBuffer(4, { maxByteLength: 8 }) }
|
||||
catch (_) {
|
||||
const { currentScript: c } = d;
|
||||
s.register(c.src, { scope: c.getAttribute('scope') || '.' }).then(r => {
|
||||
r.addEventListener('updatefound', () => location.reload());
|
||||
if (r.active && !s.controller) location.reload();
|
||||
});
|
||||
}
|
||||
}
|
||||
else {
|
||||
addEventListener('install', () => skipWaiting());
|
||||
addEventListener('activate', e => e.waitUntil(clients.claim()));
|
||||
addEventListener('fetch', e => {
|
||||
const { request: r } = e;
|
||||
if (r.cache === 'only-if-cached' && r.mode !== 'same-origin') return;
|
||||
e.respondWith(fetch(r).then(r => {
|
||||
const { body, status, statusText } = r;
|
||||
if (!status || status > 399) return r;
|
||||
const h = new Headers(r.headers);
|
||||
h.set('Cross-Origin-Opener-Policy', 'same-origin');
|
||||
h.set('Cross-Origin-Embedder-Policy', 'require-corp');
|
||||
h.set('Cross-Origin-Resource-Policy', 'cross-origin');
|
||||
return new Response(status == 204 ? null : body, { status, statusText, headers: h });
|
||||
}));
|
||||
});
|
||||
}
|
||||
})(self);
|
||||