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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user