Documents now make use of relative paths to parse parent documents

This commit is contained in:
Sasha Koshka 2024-12-08 02:57:49 -05:00
parent f1fccdc2ae
commit cc13abd8f8
2 changed files with 4 additions and 8 deletions

View File

@ -37,7 +37,7 @@ func (this *Document) Execute (output io.Writer, data ExecutionData) error {
if err != nil { return err }
// execute parent with this document's result
parent, err := this.environment.Parse(this.Extends)
parent, err := this.environment.ParseRelative(this.Extends, this)
if err != nil { return err }
return parent.Execute(output, ExecutionData {
Data: data.Data,

View File

@ -52,19 +52,15 @@ func (this *Environment) Parse (name string) (*Document, error) {
// ParseRelative is like Parse, but treats the name as a path relative to the
// given document.
func (this *Environment) ParseRelative (name string, document *Document) (*Document, error) {
var fileName string
if document == nil {
fileName = filepath.Clean(name)
name = filepath.Clean(name)
} else {
nam, err := document.Abs(name)
if err != nil { return nil, err }
fileName = nam
nam, err = document.Rel(name)
nam, err := document.Rel(name)
if err != nil { return nil, err }
name = nam
}
input, err := this.GetFS().Open(fileName)
input, err := this.GetFS().Open(name)
if err != nil {
// if the file couldn't be opened, delete from cache in case the
// file was deleted