Commit graph

23 commits

Author SHA1 Message Date
00e3cfcb52 make page templates granularly overridable 2024-11-13 15:47:12 +01:00
f71bc89921 move things to more appropriate places 2024-11-13 15:47:12 +01:00
6f90db7193 unify template parameters 2024-11-13 15:47:12 +01:00
cbe10ec304 further prettify output 2024-11-13 15:47:12 +01:00
d4aa88f759 fix indentation in output 2024-11-13 15:47:12 +01:00
95f7e5e162 reiterate on mandatory headings in sections 2024-11-13 15:47:12 +01:00
661158223a ensure the section hierarchy is spec-compliant
- automatically assign heading levels
- check that the maximum nesting depth is not exceeded
2024-11-13 15:47:12 +01:00
4aeb9579d6 separate DOM mapping and generic templating
the templates collection will soon only be there for reusable snippets,
while the HTML representation of document types will be attached to
those types directly.
2024-11-13 15:47:12 +01:00
5ee1c8b006 implement sectioning semantics
this was quite a beast to tame, but it now allows putting sections anywhere
in the tree without having to redundantly specify heading levels, which
will be computed automatically from the nesting depth.

the whole thing will also blow up if the maximum section nesting depth
is exceeded, just as the spec requires - albeit with an absolutely
impenetrable error message. this could in principle be improved with
lots of additional machinery, but this is by far not low-hanging fruit.

just don't nest your sections too much.
2024-11-13 15:47:12 +01:00
414aeb45ba fix module for <link> and <base> 2024-11-13 15:47:12 +01:00
153b761c8f fix attrs printing 2024-11-13 15:47:12 +01:00
5bef87be1f render content via structured DOM representation 2024-11-13 15:47:12 +01:00
2595511a38 implement a slice of the DOM spec as modules
this is roughly sufficient to recreate the website as it currently is

- elements:
  - document
  - html
  - head
  - title
  - base
  - link (variants that must be unique nested under `head` directly)
    - canonical
  - meta (same as for link):
    - charset
    - viewport
    - author (can be multiple, but still unique in aggregate for a document)
    - description

- global attributes:
  - class
  - hidden
  - id
  - lang
  - style
  - title

- element-specific attributes:
  - href
  - target

there's still a lot to do for a reasonably complete implementation, most
importantly everything concerning
- navigation
- top-level flow content (`div`, `article`, headings, `p`, ...)
- stylesheets

there's also some infrastructure to be arranged for easy but somewhat
safe switching between literal HTML and structured representations.
2024-11-13 15:47:12 +01:00
c7a13f04c9 don't use outPath any more
- links are constructed explicitly, relative to the current page's
location
- templates are called explicitly by output type
2024-11-13 15:47:12 +01:00
e2691f8469 let navigation have its own template 2024-11-13 15:47:12 +01:00
059ebc2291 set a default location for documents
it turns out that setting a value appends to that.
the default only needs to be overridden when the symbolic name of the
document changes. while there's a chance people will inadvertently break
links that way, it's requires less up-front knowledge to work with.
2024-11-13 15:47:12 +01:00
7efd5b8317 allow prefixing output paths of collection items 2024-11-13 15:47:12 +01:00
e38960661c stricter type for articles 2024-11-13 15:47:12 +01:00
829a796f16 separate templating from file system outputs 2024-11-13 15:47:12 +01:00
822ff6c1b4 add note 2024-11-13 15:47:12 +01:00
ad8b758cee implement navigation 2024-11-13 15:47:12 +01:00
3a36a6cf29 split out template library 2024-11-13 15:47:12 +01:00
130222db57 extract presentation module 2024-11-13 15:47:12 +01:00