Documents now make use of relative paths to parse parent documents
This commit is contained in:
parent
f1fccdc2ae
commit
cc13abd8f8
@ -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,
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user