code: func NewRepositoryWithFile(base, file string) (GitIgnore, error) {
  	// define an error handler to catch any file access errors
  	//		- record the first encountered error
  	var _error Error
  	_errors := func(e Error) bool {
  		if _error == nil {
  			_error = e
  		}
  		return true
  	}
  
  	// attempt to retrieve the repository represented by this file
  	_repository := NewRepositoryWithErrors(base, file, _errors)
  
  	// did we encounter an error?
  	//		- if the error has a zero Position then it was encountered
  	//		  before parsing was attempted, so we return that error
  	if _error != nil {
  		if _error.Position().Zero() {
  			return nil, _error.Underlying()
  		}
  	}
  
  	// otherwise, we ignore the parser errors
  	return _repository, nil
  }
docs: // NewRepositoryWithFile returns a GitIgnore instance representing a git
  // repository with root directory base. The repository will use file as
  // the name of the files within the repository from which to load the
  // .gitignore patterns. If file is the empty string, NewRepositoryWithFile
  // uses ".gitignore". If the ignore file name is ".gitignore", the returned
  // GitIgnore instance will also consider patterns listed in
  // $GIT_DIR/info/exclude when performing repository matching.
  //
  // Internally, NewRepositoryWithFile uses NewRepositoryWithErrors.