...

Source file src/oss.terrastruct.com/util-go/xmain/flag_helpers.go

Documentation: oss.terrastruct.com/util-go/xmain

     1  // flag_helpers.go are private functions from pflag/flag.go
     2  package xmain
     3  
     4  import "strings"
     5  
     6  func wrap(i, w int, s string) string {
     7  	if w == 0 {
     8  		return strings.Replace(s, "\n", "\n"+strings.Repeat(" ", i), -1)
     9  	}
    10  	wrap := w - i
    11  	var r, l string
    12  	if wrap < 24 {
    13  		i = 16
    14  		wrap = w - i
    15  		r += "\n" + strings.Repeat(" ", i)
    16  	}
    17  	if wrap < 24 {
    18  		return strings.Replace(s, "\n", r, -1)
    19  	}
    20  	slop := 5
    21  	wrap = wrap - slop
    22  	l, s = wrapN(wrap, slop, s)
    23  	r = r + strings.Replace(l, "\n", "\n"+strings.Repeat(" ", i), -1)
    24  	for s != "" {
    25  		var t string
    26  		t, s = wrapN(wrap, slop, s)
    27  		r = r + "\n" + strings.Repeat(" ", i) + strings.Replace(t, "\n", "\n"+strings.Repeat(" ", i), -1)
    28  	}
    29  	return r
    30  }
    31  
    32  func wrapN(i, slop int, s string) (string, string) {
    33  	if i+slop > len(s) {
    34  		return s, ""
    35  	}
    36  	w := strings.LastIndexAny(s[:i], " \t\n")
    37  	if w <= 0 {
    38  		return s, ""
    39  	}
    40  	nlPos := strings.LastIndex(s[:i], "\n")
    41  	if nlPos > 0 && nlPos < w {
    42  		return s[:nlPos], s[nlPos+1:]
    43  	}
    44  	return s[:w], s[w+1:]
    45  }
    46  

View as plain text