From f2082a0d72f9359be02182883a1e1190d8b1b215 Mon Sep 17 00:00:00 2001 From: Mitchell Riedstra Date: Sun, 18 Jul 2021 16:04:06 -0400 Subject: More changes to how the website functions --- page/checkup.go | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ page/misc.go | 31 +++++++++++++++++++++ 2 files changed, 116 insertions(+) create mode 100644 page/checkup.go create mode 100644 page/misc.go (limited to 'page') diff --git a/page/checkup.go b/page/checkup.go new file mode 100644 index 0000000..c4501c2 --- /dev/null +++ b/page/checkup.go @@ -0,0 +1,85 @@ +package page + +import ( + "fmt" + "os" + "path/filepath" + "reflect" + "strings" +) + +// Checkup will return a map[string]PageList of all the pages broken down by +// the status of their fields. For instance, whehter or not they have a date +func (p *Page) Checkup() (map[string]PageList, error) { + Logger.Println("Checking up on all files...") + + out := make(map[string]PageList) + + filepath.Walk(filepath.Dir("."), + func(path string, info os.FileInfo, err error) error { + if err != nil { + return err + } + + if !info.IsDir() && strings.HasSuffix(info.Name(), Suffix) { + + p2 := NewPage(strings.ReplaceAll(path, Suffix, "")) + err = p2.Read() + + if err != nil { + Logger.Println("Error encountered: ", err) + return err + } + + r := reflect.ValueOf(*p2) + + for i := 0; i < r.NumField(); i++ { + key := "" + f := r.Field(i) + fi := r.Type().Field(i) + + if fi.PkgPath != "" { + continue + } + + name := fi.Name + + switch f.Interface().(type) { + case string: + if f.String() == "" { + key = fmt.Sprintf("Empty \"%s\"", name) + } else { + key = fmt.Sprintf("Not Empty \"%s\"", name) + } + case bool: + if !f.Bool() { + key = fmt.Sprintf("\"%s\" is false", name) + } else { + key = fmt.Sprintf("\"%s\" is true", name) + } + case map[string]interface{}: + case *PageTime: + if f.IsNil() { + key = fmt.Sprintf("\"%s\" is empty", name) + } + } + + if key == "" { + continue + } + + if _, ok := out[key]; !ok { + out[key] = []*Page{p2} + } else { + out[key] = append(out[key], p2) + } + + } + + } + + return nil + }) + + return out, nil +} diff --git a/page/misc.go b/page/misc.go new file mode 100644 index 0000000..0dbd059 --- /dev/null +++ b/page/misc.go @@ -0,0 +1,31 @@ +package page + +import ( + "encoding/json" + + "gopkg.in/yaml.v3" +) + +func (p Page) EncodeYaml(data interface{}) string { + if data == nil { + data = p + } + + b, err := yaml.Marshal(data) + if err != nil { + Logger.Println("Encountered error in EncodeYaml: ", err) + } + return string(b) +} + +func (p Page) EncodeJson(data interface{}) string { + if data == nil { + data = p + } + + b, err := json.MarshalIndent(data, "", " ") + if err != nil { + Logger.Println("Encountered error in EncodeJson: ", err) + } + return string(b) +} -- cgit v1.2.3