c91ff476Move Markdown parsing out of page builder
This makes Page Builder more lightweight.
Shota FUJI
authored at
Shota FUJI
comitted at
862b4694Remove 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
be6f89e1Human 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
cf7e93b6Removed 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
3acf36e6Display 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
6411ac4bBasic page builder
Although fundamental data models need improvements. Especially path related data.
Shota FUJI
authored at
Shota FUJI
comitted at
c3d0fbb7Simplify 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
28fa1e76Unexpected 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
6e191af6Disable 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
d7629394Simplify architecture data flow
"Who own the control?" was not clear.
Shota FUJI
authored at
Shota FUJI
comitted at
8ade6613Validate 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
0ff591a1Move filesystem_reader to project root
To reflect the architecture change.
Shota FUJI
authored at
Shota FUJI
comitted at
3e52c72fChange 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