Commit graph

14 commits

Author SHA1 Message Date
Valentin Gagarin 771708c557 drive-by refactoring 2024-11-20 09:01:33 +01:00
Valentin Gagarin 3b002a5d2d add a desktop stylesheet
it also features a dark mode
2024-11-13 15:47:12 +01:00
Valentin Gagarin 555974a3af fix <hgroup> rendering 2024-11-13 15:47:12 +01:00
Valentin Gagarin cb8363ebb5 implement stylesheet links 2024-11-13 15:47:12 +01:00
Valentin Gagarin c60d10b355 add todo concerning palpable content 2024-11-13 15:47:12 +01:00
Valentin Gagarin d5b329ede9 implement definition lists with dl, dt, dd 2024-11-13 15:47:12 +01:00
Valentin Gagarin 9b74458a8c override page template for articles 2024-11-13 15:47:12 +01:00
Valentin Gagarin cbe10ec304 further prettify output 2024-11-13 15:47:12 +01:00
Valentin Gagarin 95f7e5e162 reiterate on mandatory headings in sections 2024-11-13 15:47:12 +01:00
Valentin Gagarin 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
Valentin Gagarin 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
Valentin Gagarin 414aeb45ba fix module for <link> and <base> 2024-11-13 15:47:12 +01:00
Valentin Gagarin 153b761c8f fix attrs printing 2024-11-13 15:47:12 +01:00
Valentin Gagarin 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