Files
2025-11-25 20:21:31 +08:00

32 lines
531 B
Go

package replace
import (
"net/http"
)
type Replace func(name string, file http.File) (http.File, error)
func FS(fs http.FileSystem, replace Replace) http.FileSystem {
return &replacerFS{
FileSystem: fs,
Replace: replace,
}
}
type replacerFS struct {
http.FileSystem
Replace
}
func (f *replacerFS) Open(name string) (http.File, error) {
file, err := f.FileSystem.Open(name)
if err != nil {
return nil, err
}
replaced, err := f.Replace(name, file)
if err != nil {
return nil, err
}
return replaced, nil
}