docusaurus hero fix

This commit is contained in:
Timur Gordon
2025-10-07 17:37:53 +02:00
parent d819040d83
commit 0d1749abcf
4 changed files with 70 additions and 8 deletions

View File

@@ -1,7 +1,9 @@
module docusaurus
import freeflowuniverse.herolib.core.pathlib
import freeflowuniverse.herolib.web.site as sitemodule
import freeflowuniverse.herolib.core.base
import freeflowuniverse.herolib.core.texttools
import freeflowuniverse.herolib.web.site { Site, SiteConfig }
import freeflowuniverse.herolib.osal.core as osal
import freeflowuniverse.herolib.ui.console
@@ -15,7 +17,7 @@ pub mut:
path_build pathlib.Path
errors []SiteError
config Configuration
website sitemodule.Site
website site.Site
generated bool
}
@@ -101,13 +103,13 @@ pub mut:
cat ErrorCat
}
pub fn (mut site DocSite) error(args ErrorArgs) {
pub fn (mut s DocSite) error(args ErrorArgs) {
// path2 := pathlib.get(args.path)
e := SiteError{
path: args.path
msg: args.msg
cat: args.cat
}
site.errors << e
s.errors << e
console.print_stderr(args.msg)
}

View File

@@ -14,6 +14,9 @@ pub fn (mut docsite DocSite) generate() ! {
console.print_header(' docsite generate: ${docsite.name} on ${c.path_build.path}')
// Store Docusaurus site structure in Redis for link processing
docsite.store_site_structure()!
osal.rm('${c.path_build.path}/docs')!
cfg_path := '${c.path_build.path}/cfg'

View File

@@ -0,0 +1,40 @@
module docusaurus
import freeflowuniverse.herolib.core.base
import freeflowuniverse.herolib.core.texttools
// Store the Docusaurus site structure in Redis for link processing
// This maps collection:page to their actual Docusaurus paths
pub fn (mut docsite DocSite) store_site_structure() ! {
mut context := base.context()!
mut redis := context.redis()!
// Store mapping of collection:page to docusaurus path (without .md extension)
for page in docsite.website.pages {
parts := page.src.split(':')
if parts.len != 2 {
continue
}
collection_name := texttools.name_fix(parts[0])
page_name := texttools.name_fix(parts[1])
// Calculate the docusaurus path (without .md extension for URLs)
mut doc_path := page.path
// Handle empty or root path
if doc_path.trim_space() == '' || doc_path == '/' {
doc_path = page_name
} else if doc_path.ends_with('/') {
doc_path += page_name
}
// Remove .md extension if present for URL paths
if doc_path.ends_with('.md') {
doc_path = doc_path[..doc_path.len - 3]
}
// Store in Redis with key format: collection:page.md
key := '${collection_name}:${page_name}.md'
redis.hset('doctree_docusaurus_paths', key, doc_path)!
}
}