mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-04 07:49:35 +00:00 
			
		
		
		
	Add dedent pkg
This commit is contained in:
		
							
								
								
									
										49
									
								
								vendor/github.com/renstrom/dedent/dedent.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								vendor/github.com/renstrom/dedent/dedent.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
package dedent
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"regexp"
 | 
			
		||||
	"strings"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	whitespaceOnly    = regexp.MustCompile("(?m)^[ \t]+$")
 | 
			
		||||
	leadingWhitespace = regexp.MustCompile("(?m)(^[ \t]*)(?:[^ \t\n])")
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
// Dedent removes any common leading whitespace from every line in text.
 | 
			
		||||
//
 | 
			
		||||
// This can be used to make multiline strings to line up with the left edge of
 | 
			
		||||
// the display, while still presenting them in the source code in indented
 | 
			
		||||
// form.
 | 
			
		||||
func Dedent(text string) string {
 | 
			
		||||
	var margin string
 | 
			
		||||
 | 
			
		||||
	text = whitespaceOnly.ReplaceAllString(text, "")
 | 
			
		||||
	indents := leadingWhitespace.FindAllStringSubmatch(text, -1)
 | 
			
		||||
 | 
			
		||||
	// Look for the longest leading string of spaces and tabs common to all
 | 
			
		||||
	// lines.
 | 
			
		||||
	for i, indent := range indents {
 | 
			
		||||
		if i == 0 {
 | 
			
		||||
			margin = indent[1]
 | 
			
		||||
		} else if strings.HasPrefix(indent[1], margin) {
 | 
			
		||||
			// Current line more deeply indented than previous winner:
 | 
			
		||||
			// no change (previous winner is still on top).
 | 
			
		||||
			continue
 | 
			
		||||
		} else if strings.HasPrefix(margin, indent[1]) {
 | 
			
		||||
			// Current line consistent with and no deeper than previous winner:
 | 
			
		||||
			// it's the new winner.
 | 
			
		||||
			margin = indent[1]
 | 
			
		||||
		} else {
 | 
			
		||||
			// Current line and previous winner have no common whitespace:
 | 
			
		||||
			// there is no margin.
 | 
			
		||||
			margin = ""
 | 
			
		||||
			break
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if margin != "" {
 | 
			
		||||
		text = regexp.MustCompile("(?m)^"+margin).ReplaceAllString(text, "")
 | 
			
		||||
	}
 | 
			
		||||
	return text
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user