You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
bonzai/z/esc.go

27 lines
735 B
Go

package Z
import "github.com/rwxrob/fn"
// EscThese is set to the default UNIX shell characters which require
// escaping to be used safely on the terminal. It can be changed to suit
// the needs of different host shell environments.
var EscThese = " \r\t\n|&;()<>![]"
// Esc returns a shell-escaped version of the string s. The returned value
// is a string that can safely be used as one token in a shell command line.
func Esc(s string) string {
var buf []rune
for _, r := range s {
for _, esc := range EscThese {
if r == esc {
buf = append(buf, '\\')
}
}
buf = append(buf, r)
}
return string(buf)
}
// EscAll calls Esc on all passed strings.
func EscAll(args []string) []string { return fn.Map(args, Esc) }