macana

Static site generator for Obsidian Vault

Commits at 8766e56af51e9de3d79c70742bc7827d960db784

  1. 8766e56a Move all data type definition into single place Due to each modules owning data models, refactoring and sharing was difficult. Shota FUJI authored at Shota FUJI comitted at
  2. 140c1af0 JSONCanvas support This is not complete. Before supporting Markdown parsing inside Node, I have to redesign metadata parsing flow. Messing Content Parser first would make the redesign more difficult. Also, I believe this state of implementation is good enough to commit. The scope is HUGE. Shota FUJI authored at Shota FUJI comitted at
  3. e2412186 Add roadmap document Useful for initial development. Shota FUJI authored at Shota FUJI comitted at
  4. c91ff476 Move Markdown parsing out of page builder This makes Page Builder more lightweight. Shota FUJI authored at Shota FUJI comitted at
  5. 862b4694 Remove restriction on document name and use them as much as possible Due to the restriction, URI (path) construction has been mess. This change makes document names as a Single Source of Truth for URI. Shota FUJI authored at Shota FUJI comitted at
  6. be6f89e1 Human friendly docs directory names It's ugly. Changing directory names directly was worse due to URL becoming ugly also. Shota FUJI authored at Shota FUJI comitted at
  7. 7d07ad7f Automated docs deploy to GitHub Pages Shota FUJI authored at Shota FUJI comitted at
  8. cf7e93b6 Removed locale assumptions This is better than assuming top-level directories as a locale or entire Vault consists of single locale. Large part is flexibility: one can choose between `<lang>/<..contents..>` structure and `<..contents..>/<lang>` structure. In addition to the flexibility, directory name can be more human friendly, such as "English" rather than "en". This change eliminates the complexity of handling default language not having path prefix. Thanks to this simplification, I can focus on path/name handling more. The last notable change is replace of "locale" to "lang". I initially thought locale would be appropriate as it also covers formatting. However, as the output of this program is (mostly) public viewable website, the content SHOULD NOT specify which locale to use. Instead, UA is responsible for deciding which locale to use for formatting. Shota FUJI authored at Shota FUJI comitted at
  9. 3acf36e6 Display every locales' content on navigation tree As this page layout uses tree for site navigation, I thought this presentation has the best discoverability and usablity. Although the `en/` links does not work at the moment, I'll change path construction strategy so it's kept as-is. Shota FUJI authored at Shota FUJI comitted at
  10. 442736c0 Japanese docs To test multi locale builds. Shota FUJI authored at Shota FUJI comitted at
  11. 6411ac4b Basic page builder Although fundamental data models need improvements. Especially path related data. Shota FUJI authored at Shota FUJI comitted at
  12. c3d0fbb7 Simplify architecture further The "Asset" thing existed because initially both Tree Builder and Page Builder produced assets. However, because of architecture changes I did earlier, Tree Builder no longer produces assets. That change and this change increase the scope of Page Builder massively, but I believe this is far better abstract compared to the previous ones. For instance, if I were to create an Asset Plugin for CSS postprocessing, what I/F needed for that? Even with this simple case, the I/F would be messy because a number of the resulting artifacts could be larger than the input, such as when the source CSS file imports other files. And, more (probably) important plugin, is image optimisation. However, that task requires caller (= Page Builder) to know the result in advance: e.g. a plugin generates WebP and Avif from JPEG file and optimises the JPEG file but Page Builder can't use the former two because it needs to know the plugin produces those files and modify `<img>` tag to `<picture>` tag with corresponding `<source>` tags and `<img>` tag. Considering these, I concluded the "Asset Manager" and "Asset Plugin" system are useless at most. Again, this make Page Builder more fat. But what kind of website assets are needed and how to generate those are differs by websites, at all. Page Builder need to be fat. Shota FUJI authored at Shota FUJI comitted at
  13. f310ec87 Precompress middleware for FileSystem Writer Shota FUJI authored at Shota FUJI comitted at
  14. 28fa1e76 Unexpected overwrite guard for FileSystem Writer This is better as a middleware, because otherwise every writer implementation needs to write their own guard. Shota FUJI authored at Shota FUJI comitted at
  15. a6b0d629 Tree validator for FileSystem Writer Shota FUJI authored at Shota FUJI comitted at
  16. 6e191af6 Disable require-await lint rule The bloat and stupidity of the current JS/TS "recommended" lint ecosystem is astonishing. Shota FUJI authored at Shota FUJI comitted at
  17. 43aa0901 In-memory FileSystem Writer Necessary for testings. Shota FUJI authored at Shota FUJI comitted at
  18. 7d43e235 Deno native FileSystem Writer Shota FUJI authored at Shota FUJI comitted at
  19. d7629394 Simplify architecture data flow "Who own the control?" was not clear. Shota FUJI authored at Shota FUJI comitted at
  20. 8ade6613 Validate generated document tree If Tree Builder does not check its output, then Page Builder has to verify the document tree and abort, which is not only messing responsibility but error-prone. Shota FUJI authored at Shota FUJI comitted at
  21. e3542c60 Multi locale tree builder Shota FUJI authored at Shota FUJI comitted at
  22. 26de357b Single locale tree builder Shota FUJI authored at Shota FUJI comitted at
  23. 940c4074 Metadata parser for Obsidian Vault directory Shota FUJI authored at Shota FUJI comitted at
  24. 0ff591a1 Move filesystem_reader to project root To reflect the architecture change. Shota FUJI authored at Shota FUJI comitted at
  25. 3e52c72f Change architecture and Create glossary The previous archtecture too focused on flexibility and that makes grapsing the whole picture hard and designing interfaces very difficult. It also suffers from the absense of control/data owner: one can't determine which module has the ownership of whole generation process. Shota FUJI authored at Shota FUJI comitted at
  26. 3ac6118c In-memory filesystem reader Shota FUJI authored at Shota FUJI comitted at
  27. 34e2e20d Document for running unit tests As it requires a permission. Shota FUJI authored at Shota FUJI comitted at
  28. c860affc Rename internal document This doc is no longer guideline, but tutorial like guide. Shota FUJI authored at Shota FUJI comitted at
  29. b12244ae Basic FileSystem Reader implementation Shota FUJI authored at Shota FUJI comitted at
  30. c623c111 Remove unnecessary EditorConfig ruleset I don't think Zig is benefitical for this project. Shota FUJI authored at Shota FUJI comitted at
  31. 8d90e0ea Deno CLI application foundation Shota FUJI authored at Shota FUJI comitted at
  32. 04733780 Docs Shota FUJI authored at Shota FUJI comitted at