code: func New(deps *deps.Deps) *Namespace {
  
  	// Since Hugo 0.38 we can have multiple content dirs. This can make it hard to
  	// reason about where the file is placed relative to the project root.
  	// To make the {{ readFile .Filename }} variant just work, we create a composite
  	// filesystem that first checks the work dir fs and then the content fs.
  	var rfs afero.Fs
  	if deps.Fs != nil {
  		rfs = deps.Fs.WorkingDir
  		if deps.PathSpec != nil && deps.PathSpec.BaseFs != nil {
  			rfs = afero.NewReadOnlyFs(afero.NewCopyOnWriteFs(deps.PathSpec.BaseFs.Content.Fs, deps.Fs.WorkingDir))
  		}
  	}
  
  	return &Namespace{
  		readFileFs: rfs,
  		deps:       deps,
  	}
  }
docs: // New returns a new instance of the os-namespaced template functions.