1
0
mirror of https://github.com/osmarks/mycorrhiza.git synced 2024-12-13 05:50:27 +00:00
mycorrhiza/shroom/view.go

54 lines
1.3 KiB
Go
Raw Normal View History

2021-02-20 14:03:54 +00:00
package shroom
2021-02-17 18:41:35 +00:00
import (
2022-02-04 17:04:39 +00:00
"errors"
2021-02-17 18:41:35 +00:00
"os"
"github.com/bouncepaw/mycorrhiza/cfg"
2021-02-20 14:03:54 +00:00
"github.com/bouncepaw/mycorrhiza/hyphae"
2021-02-17 18:41:35 +00:00
)
2022-02-19 08:26:38 +00:00
// FetchTextFile tries to read text file of the given hypha. If there is no file, empty string is returned.
func FetchTextFile(h hyphae.Hypha) (string, error) {
switch h := h.(type) {
2022-02-04 17:04:39 +00:00
case *hyphae.EmptyHypha:
return "", errors.New("empty hyphae have no text")
2022-02-19 08:26:38 +00:00
case *hyphae.MediaHypha:
if !h.HasTextFile() {
return "", nil
}
text, err := os.ReadFile(h.TextFilePath())
if os.IsNotExist(err) {
return "", nil
} else if err != nil {
return "", err
}
return string(text), nil
case *hyphae.TextualHypha:
text, err := os.ReadFile(h.TextFilePath())
if os.IsNotExist(err) {
return "", nil
} else if err != nil {
return "", err
}
return string(text), nil
2022-02-04 17:04:39 +00:00
}
2022-02-19 08:26:38 +00:00
panic("unreachable")
2021-02-17 18:41:35 +00:00
}
// SetHeaderLinks initializes header links by reading the configured hypha, if there is any, or resorting to default values.
2021-02-17 18:41:35 +00:00
func SetHeaderLinks() {
switch userLinksHypha := hyphae.ByName(cfg.HeaderLinksHypha).(type) {
case *hyphae.EmptyHypha:
2021-05-11 08:33:00 +00:00
cfg.SetDefaultHeaderLinks()
2022-02-19 08:26:38 +00:00
case hyphae.ExistingHypha:
contents, err := os.ReadFile(userLinksHypha.TextFilePath())
2021-02-17 18:41:35 +00:00
if err != nil || len(contents) == 0 {
2021-05-11 08:33:00 +00:00
cfg.SetDefaultHeaderLinks()
2021-02-17 18:41:35 +00:00
} else {
text := string(contents)
cfg.ParseHeaderLinks(text)
2021-02-17 18:41:35 +00:00
}
}
}