Move Wiki Pages to MD
This commit is contained in:
@@ -22,8 +22,10 @@ import (
|
||||
const (
|
||||
defaultDeployManifestName = ".wiki_deploy_manifest.json"
|
||||
defaultEditSummary = "Auto-generated from native builder"
|
||||
managedStartMarker = "<!-- sow-topdata-wiki:managed:start -->"
|
||||
managedEndMarker = "<!-- sow-topdata-wiki:managed:end -->"
|
||||
managedStartMarker = "[//]: # (sow-topdata-wiki:managed:start)"
|
||||
managedEndMarker = "[//]: # (sow-topdata-wiki:managed:end)"
|
||||
legacyManagedStartMarker = "<!-- sow-topdata-wiki:managed:start -->"
|
||||
legacyManagedEndMarker = "<!-- sow-topdata-wiki:managed:end -->"
|
||||
)
|
||||
|
||||
var defaultManagedNamespaces = []string{"classes", "feat", "itemtypes", "races", "skills", "spells", "meta"}
|
||||
@@ -177,14 +179,15 @@ func collectLocalPages(sourceDir string, namespaces []string) (map[string]wikiDe
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if d.IsDir() || filepath.Ext(path) != ".html" {
|
||||
ext := filepath.Ext(path)
|
||||
if d.IsDir() || (ext != ".md" && ext != ".html") {
|
||||
return nil
|
||||
}
|
||||
rel, err := filepath.Rel(sourceDir, path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
pageID := strings.TrimSuffix(filepath.ToSlash(rel), ".html")
|
||||
pageID := strings.TrimSuffix(filepath.ToSlash(rel), ext)
|
||||
pageID = strings.ReplaceAll(pageID, "/", ":")
|
||||
namespace := strings.SplitN(pageID, ":", 2)[0]
|
||||
if _, ok := namespaceSet[namespace]; !ok {
|
||||
@@ -197,7 +200,7 @@ func collectLocalPages(sourceDir string, namespaces []string) (map[string]wikiDe
|
||||
content := string(raw)
|
||||
pages[pageID] = wikiDeployPage{
|
||||
PageID: pageID,
|
||||
Title: extractHTMLTitle(content, pageID),
|
||||
Title: extractPageTitle(content, pageID),
|
||||
Namespace: namespace,
|
||||
Content: content,
|
||||
Hash: computeManagedHash(content),
|
||||
@@ -310,12 +313,11 @@ func computeManagedHash(content string) string {
|
||||
}
|
||||
|
||||
func extractManagedRegion(content string) (string, bool) {
|
||||
start := strings.Index(content, managedStartMarker)
|
||||
end := strings.Index(content, managedEndMarker)
|
||||
startMarker, _, start, end := managedRegionBounds(content)
|
||||
if start < 0 || end < 0 || end < start {
|
||||
return "", false
|
||||
}
|
||||
start += len(managedStartMarker)
|
||||
start += len(startMarker)
|
||||
return strings.TrimSpace(content[start:end]), true
|
||||
}
|
||||
|
||||
@@ -324,13 +326,47 @@ func mergeManagedContent(existing, generated string) string {
|
||||
if !ok {
|
||||
return generated
|
||||
}
|
||||
start := strings.Index(existing, managedStartMarker)
|
||||
end := strings.Index(existing, managedEndMarker)
|
||||
_, endMarker, start, end := managedRegionBounds(existing)
|
||||
if start < 0 || end < 0 || end < start {
|
||||
return generated
|
||||
}
|
||||
end += len(managedEndMarker)
|
||||
return existing[:start+len(managedStartMarker)] + "\n" + generatedRegion + "\n" + existing[end:]
|
||||
end += len(endMarker)
|
||||
return existing[:start] + managedStartMarker + "\n" + generatedRegion + "\n" + managedEndMarker + existing[end:]
|
||||
}
|
||||
|
||||
func managedRegionBounds(content string) (string, string, int, int) {
|
||||
for _, markers := range [][2]string{
|
||||
{managedStartMarker, managedEndMarker},
|
||||
{legacyManagedStartMarker, legacyManagedEndMarker},
|
||||
} {
|
||||
start := strings.Index(content, markers[0])
|
||||
end := strings.Index(content, markers[1])
|
||||
if start >= 0 && end >= 0 {
|
||||
return markers[0], markers[1], start, end
|
||||
}
|
||||
}
|
||||
return "", "", -1, -1
|
||||
}
|
||||
|
||||
func extractPageTitle(content, fallback string) string {
|
||||
if title := extractMarkdownTitle(content); title != "" {
|
||||
return title
|
||||
}
|
||||
return extractHTMLTitle(content, fallback)
|
||||
}
|
||||
|
||||
func extractMarkdownTitle(content string) string {
|
||||
for _, line := range strings.Split(content, "\n") {
|
||||
trimmed := strings.TrimSpace(line)
|
||||
if !strings.HasPrefix(trimmed, "# ") {
|
||||
continue
|
||||
}
|
||||
title := strings.TrimSpace(strings.TrimPrefix(trimmed, "# "))
|
||||
if title != "" {
|
||||
return title
|
||||
}
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func extractHTMLTitle(content, fallback string) string {
|
||||
|
||||
Reference in New Issue
Block a user