Commit Graph
47 Commits
Author SHA1 Message Date
omicron f991d3b110 Expand test Site tests 2026-09-04 11:06:39 +02:00
omicron 7297adb966 Expand tests for Site 2026-09-03 03:47:56 +02:00
omicron 1fe2bbd1db Consolidate test site fixture into a single make_site 2026-09-03 03:10:13 +02:00
omicron 2835b77146 Add tests for output.Output and output.File 2026-09-03 02:55:38 +02:00
omicron 088fc4d463 Exclude abstract methods from coverage reports 2026-09-03 02:55:20 +02:00
omicron 9d5387a40a Add Makefile with targets for common actions 2026-08-28 01:58:52 +02:00
omicron 82f60f3d75 Set up e2e testing 2026-08-28 01:44:38 +02:00
omicron 6afc8585db Set up pytest and coverage tooling 2026-08-28 01:15:28 +02:00
omicron 34df950cbd Make site building output deterministic
In order to do snapshot testing of the site output we want the output to
always be the same regardless of how the filesystem tree was created
2026-08-28 01:08:58 +02:00
omicron a0fa7d8fe2 Add Site.feed_url helper and use it in the template 2026-08-26 05:07:40 +02:00
omicron f18392c899 Add Atom feed generation 2026-08-26 05:07:15 +02:00
omicron bfb0d371c8 Move title property from Article to Content 2026-08-26 05:02:23 +02:00
omicron a5de93576a Add sitemap generation 2026-08-26 04:11:56 +02:00
omicron 728b1ee1bf Add draft content support, excluded from build by default 2026-08-26 03:21:27 +02:00
omicron 48af9665f0 Improve cli, add subcommands and flags. 2026-08-26 02:36:07 +02:00
omicron 8c6c0d318e Add referenced file handling to Content 2026-08-25 03:08:07 +02:00
omicron 015f1375ec Add source index for Content, enforce stricter Content.source checks 2026-08-25 03:08:07 +02:00
omicron 3abb6ce8fe Expose tokens in markdown api, update article rendering 2026-08-25 03:08:01 +02:00
omicron 1250ead61a Change Content and Index to create pretty urls 2026-08-24 14:45:23 +02:00
omicron 7a1926113c Track url as an absolute Path and add Site.url_for helper 2026-08-24 14:34:08 +02:00
omicron 74925f1668 Automatically create parent Directory entries for each discovery
Before this change it was possible for a file and a directory have the
same path. This change resolves that. Conflicts between files and
directories are now correctly discovered.
2026-08-15 02:37:37 +02:00
omicron ce7ba6f893 Make output validate paths are absolute and normalized
Also update the checks in Symlink to use the same functions
2026-08-15 01:58:29 +02:00
omicron b51f445ed1 Add Directory(Output) class to create and track directories 2026-08-15 01:03:00 +02:00
omicron 5660ef2974 Add Symlink(Output) class 2026-08-14 23:55:48 +02:00
omicron 1a5f3bfc67 Stop rendering canonical links when origin is missing from config 2026-08-14 17:00:07 +02:00
omicron 58eebac637 Add Site reference to Output, clean up template url handling
The following changes have been made all with template cleanup in mind:
- Make Output.url relative to the origin root
- Keep weakref to Site in all Output objects.
- Add several helpers to get urls from Site: home_url(), tag_url(tag),
  section_url(section) and tags_url().
- Add helpers to Index to get pagination urls: pagination_url(n)
- Clean up templates by making use of these new facilities
2026-08-14 16:45:16 +02:00
omicron 20dd6d9910 Split uri into url and destination, remove trailing slashes from links 2026-08-13 22:59:13 +02:00
omicron 5ca9945856 Add support for extra static file assets in templates 2026-08-13 00:59:39 +02:00
omicron 2a03332bb0 Create Tags(Output) class and move tag rendering there from Site 2026-08-12 21:59:44 +02:00
omicron f1451a17b4 Create Index(Output) class and migrate index generation from Site
Like previous Content refactor, this allows validating file collisions
in the discover/write build pipeline.
2026-08-12 21:57:57 +02:00
omicron 61bc762256 Add Memory output, change Site to use Output files in the build loop 2026-08-12 12:15:57 +02:00
omicron bfa965f399 Refactor and split up Content code, introduce overarching Output class
In order to handle static files in the content generation pipeline while
still being able to easily validate that no output overwrites any other
output without adding special cases we introduce a level above Content
that contains all Output.

The idea is that all output files derive from Output so that they can be
checked against the by_uri map. All files will then follow the discover
-> write loop.
2026-08-12 11:23:45 +02:00
omicron 881e4f1598 Add breadcrumb navigation 2026-08-07 04:05:49 +02:00
omicron bda4ce5ef2 Add all tags page rendering 2026-08-07 03:41:22 +02:00
omicron 6a4bacc5e6 link tags to their tag index 2026-08-07 02:28:44 +02:00
omicron f21e746858 Add tag index rendering 2026-08-07 02:08:54 +02:00
omicron 4bdf1b4f4e Add canonical tags to the plain template 2026-08-06 23:14:42 +02:00
omicron eeff006347 Fix article tags to be a set instead of a list 2026-08-06 04:49:21 +02:00
omicron 7e447e52d6 Add beartype for runtime type checking during development 2026-08-06 04:48:57 +02:00
omicron bfa4f8c2fa Add rendering of indices for the entire site and each section 2026-08-06 00:25:07 +02:00
omicron 1c919954e1 Add black to dev dependencies and set some defaults 2026-08-05 16:04:42 +02:00
omicron 7688a6ab18 implement a summary property on Content
Allow the user to set a summary and make Article extract its own summary
when the Article.render is called and the summary is still missing.
Extracted summaries only work when the first item of a markdown file is
a paragraph.
2026-08-05 04:37:16 +02:00
omicron 7bf5fb5d92 refactor highlighting to use module level singletons
remove the repeated instantiation of TextLexer and HtmlFormatter in
favor of a singleton
2026-08-05 00:59:01 +02:00
omicron 406ef9fd8d Set up mypy defaults and make sure codebase passes --strict 2026-08-05 00:50:34 +02:00
omicron b8a0a94ba9 populate the by_tag, by_uri and by_section maps 2026-08-04 13:20:57 +02:00
omicron cb48dc035a Implement basic article rendering 2026-08-04 04:00:25 +02:00
omicron e7c41cd68e Initial commit
Initial structure with little functionality
2026-07-27 00:11:50 +02:00