package ui import "io" var _ Resources = &fallbackResources{} type fallbackResources struct { resources Resources fallback Resources } // NewFallbackResources creates a Resources that first will try to access resources and on failure will try to access the fallback resources. Will take ownership of both resources (Destroy). func NewFallbackResources(resources, fallback Resources) Resources { return &fallbackResources{resources, fallback} } func (r *fallbackResources) OpenResource(name string) (io.ReadCloser, error) { if reader, err := r.resources.OpenResource(name); err == nil { return reader, nil } return r.fallback.OpenResource(name) } func (r *fallbackResources) Destroy() error { errResources := r.resources.Destroy() errFallback := r.fallback.Destroy() if errResources != nil { return errResources } if errFallback != nil { return errFallback } return nil }