github.com/2lambda123/git-lfs@v2.5.2+incompatible/config/map_fetcher.go (about)

     1  package config
     2  
     3  // mapFetcher provides an implementation of the Fetcher interface by wrapping
     4  // the `map[string]string` type.
     5  type mapFetcher map[string][]string
     6  
     7  func UniqMapFetcher(m map[string]string) Fetcher {
     8  	multi := make(map[string][]string, len(m))
     9  	for k, v := range m {
    10  		multi[k] = []string{v}
    11  	}
    12  
    13  	return MapFetcher(multi)
    14  }
    15  
    16  func MapFetcher(m map[string][]string) Fetcher {
    17  	return mapFetcher(m)
    18  }
    19  
    20  // Get implements the func `Fetcher.Get`.
    21  func (m mapFetcher) Get(key string) (val string, ok bool) {
    22  	all := m.GetAll(key)
    23  
    24  	if len(all) == 0 {
    25  		return "", false
    26  	}
    27  	return all[len(all)-1], true
    28  }
    29  
    30  // Get implements the func `Fetcher.GetAll`.
    31  func (m mapFetcher) GetAll(key string) []string {
    32  	return m[key]
    33  }
    34  
    35  func (m mapFetcher) All() map[string][]string {
    36  	newmap := make(map[string][]string)
    37  	for key, values := range m {
    38  		for _, value := range values {
    39  			newmap[key] = append(newmap[key], value)
    40  		}
    41  	}
    42  	return newmap
    43  }