Add ParseRelative to Environment
This commit is contained in:
parent
3c9f91a2c9
commit
f1fccdc2ae
@ -46,8 +46,25 @@ func (this *Environment) Init (ctx context.Context) error {
|
||||
// environment once parsed, and are returned on subsequent calls that have the
|
||||
// same name.
|
||||
func (this *Environment) Parse (name string) (*Document, error) {
|
||||
name = filepath.Clean(name)
|
||||
input, err := this.GetFS().Open(name)
|
||||
return this.ParseRelative(name, nil)
|
||||
}
|
||||
|
||||
// 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)
|
||||
} else {
|
||||
nam, err := document.Abs(name)
|
||||
if err != nil { return nil, err }
|
||||
fileName = nam
|
||||
nam, err = document.Rel(name)
|
||||
if err != nil { return nil, err }
|
||||
name = nam
|
||||
}
|
||||
|
||||
input, err := this.GetFS().Open(fileName)
|
||||
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