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 }
|
if err != nil { return err }
|
||||||
|
|
||||||
// execute parent with this document's result
|
// 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 }
|
if err != nil { return err }
|
||||||
return parent.Execute(output, ExecutionData {
|
return parent.Execute(output, ExecutionData {
|
||||||
Data: data.Data,
|
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
|
// ParseRelative is like Parse, but treats the name as a path relative to the
|
||||||
// given document.
|
// given document.
|
||||||
func (this *Environment) ParseRelative (name string, document *Document) (*Document, error) {
|
func (this *Environment) ParseRelative (name string, document *Document) (*Document, error) {
|
||||||
var fileName string
|
|
||||||
if document == nil {
|
if document == nil {
|
||||||
fileName = filepath.Clean(name)
|
name = filepath.Clean(name)
|
||||||
} else {
|
} else {
|
||||||
nam, err := document.Abs(name)
|
nam, err := document.Rel(name)
|
||||||
if err != nil { return nil, err }
|
|
||||||
fileName = nam
|
|
||||||
nam, err = document.Rel(name)
|
|
||||||
if err != nil { return nil, err }
|
if err != nil { return nil, err }
|
||||||
name = nam
|
name = nam
|
||||||
}
|
}
|
||||||
|
|
||||||
input, err := this.GetFS().Open(fileName)
|
input, err := this.GetFS().Open(name)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// if the file couldn't be opened, delete from cache in case the
|
// if the file couldn't be opened, delete from cache in case the
|
||||||
// file was deleted
|
// file was deleted
|
||||||
|
Loading…
Reference in New Issue
Block a user