diff options
-rw-r--r-- | entry.go | 9 | ||||
-rw-r--r-- | main.go | 24 | ||||
-rw-r--r-- | nav.go | 16 | ||||
-rw-r--r-- | page.go | 26 | ||||
-rw-r--r-- | template.go | 12 | ||||
-rw-r--r-- | utils.go | 8 |
6 files changed, 65 insertions, 30 deletions
@@ -1,7 +1,6 @@ package main import ( - "fmt" "os" "path/filepath" "regexp" @@ -13,6 +12,7 @@ import ( */ type entry struct { name string + rawName string fullPath string } @@ -29,9 +29,10 @@ func findEntries(cfg config) (entries []Renderer, err error) { err = filepath.Walk(cfg.DocsRoot, func(p string, f os.FileInfo, e error) error { if !f.IsDir() && baseEntryRegex.MatchString(f.Name()) { - baseCaptures := baseEntryRegex.FindStringSubmatch(f.Name()) - newBaseEntry := entry{name: nameify(baseCaptures[1]), fullPath: p} - fmt.Println(newBaseEntry.name) + baseCaptures := baseEntryRegex.FindStringSubmatch(f.Name()) + newBaseEntry := entry{name: nameify(baseCaptures[1]), + rawName: baseCaptures[1], + fullPath: p} if logEntryRegex.MatchString(f.Name()) { logCaptures := logEntryRegex.FindStringSubmatch(f.Name()) @@ -5,11 +5,6 @@ import ( "os" ) -type templateData struct { - SiteTitle string - Pages map[string]page - Index int -} func main() { // show usage if config file is missing @@ -31,14 +26,15 @@ func main() { } // render all entries - var pages = make(map[string]page) - for _, e := range entries { - fmt.Println("Processing page") - e.render(pages) - fmt.Println(pages) - fmt.Println("**************") - - } - fmt.Println("----------------------------------------------------------------------------------------------") + pages := createPageMap(entries) + fmt.Println("Pages:") fmt.Println(pages) + + // create navigation item slice + navItems := createNavSlice(pages, cfg) + fmt.Println("Navigation:") + fmt.Println(navItems) + + generatePages(pages, navItems, cfg) + } @@ -0,0 +1,16 @@ +package main + +import () + +type navItem struct { + AbsoluteUrl string + Text string +} + +func createNavSlice(pages map[string]page, cfg config) (nav []navItem) { + for k, v := range pages { + newNavItem := navItem{AbsoluteUrl: cfg.BaseUrl + "/" + k, Text: v.pageName} + nav = append(nav, newNavItem) + } + return +} @@ -1,7 +1,5 @@ package main -//import "fmt" - /* * This file contains all the code related to turning entries into HTML pages */ @@ -12,8 +10,6 @@ type page struct { func (p *page) appendContent(c string) { p.content = append(p.content, c) - //fmt.Println("---------------------------------------------------------------------------------------------------------") - //fmt.Println(p) } type Renderer interface { @@ -28,7 +24,7 @@ func (e entry) render(pages map[string]page) (err error) { p := page{pageName: e.name, content: []string{md}} - pages[e.name] = p + pages[e.rawName] = p return } @@ -38,12 +34,26 @@ func (le logEntry) render(pages map[string]page) (err error) { return } - if val, ok := pages["log"]; ok { + logUrl := "log" + + if val, ok := pages[logUrl]; ok { val.appendContent(md) - pages["log"] = val + pages[logUrl] = val } else { p := page{pageName: "Log", content: []string{md}} - pages["log"] = p + pages[logUrl] = p + } + return +} + +func createPageMap(entries []Renderer) (pages map[string]page) { + pages = make(map[string]page) + for _, e := range entries { + err := e.render(pages) + if err != nil { + panic(err) + } + } return } diff --git a/template.go b/template.go new file mode 100644 index 0000000..ff69756 --- /dev/null +++ b/template.go @@ -0,0 +1,12 @@ +package main + +type templateData struct { + SiteTitle string + StylesheetUrl string + Nav []navItem + Content []string +} + +func generatePages(pages map[string]page, nav []navItem, cfg config) () { + +} @@ -20,8 +20,8 @@ func readConfig(file string) (cfg config, err error) { } func nameify(raw string) (clean string) { - clean = strings.ReplaceAll(raw, "-", " ") - clean = strings.TrimSpace(clean) - clean = strings.Title(clean) - return + clean = strings.ReplaceAll(raw, "-", " ") + clean = strings.TrimSpace(clean) + clean = strings.Title(clean) + return } |