github.com/u-root/u-root@v7.0.1-0.20200915234505-ad7babab0a8e+incompatible/pkg/complete/prefix.go (about)

     1  // Copyright 2012-2020 the u-root Authors. All rights reserved
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package complete
     6  
     7  import "strings"
     8  
     9  // Prefix finds the longest common prefix string
    10  // from a []string.
    11  func Prefix(s []string) string {
    12  	if len(s) == 0 {
    13  		return ""
    14  	}
    15  	var a = s[0]
    16  	for _, h := range s {
    17  		if len(h) < len(a) {
    18  			a = h
    19  		}
    20  	}
    21  	var done bool
    22  	for !done && len(a) > 0 {
    23  		done = true
    24  		for _, h := range s {
    25  			if !strings.HasPrefix(h, a) {
    26  				a = a[:len(a)-1]
    27  				done = false
    28  				break
    29  			}
    30  
    31  		}
    32  	}
    33  	return a
    34  }