github.com/demonoid81/moby@v0.0.0-20200517203328-62dd8e17c460/opts/quotedstring.go (about) 1 package opts // import "github.com/demonoid81/moby/opts" 2 3 // QuotedString is a string that may have extra quotes around the value. The 4 // quotes are stripped from the value. 5 type QuotedString struct { 6 value *string 7 } 8 9 // Set sets a new value 10 func (s *QuotedString) Set(val string) error { 11 *s.value = trimQuotes(val) 12 return nil 13 } 14 15 // Type returns the type of the value 16 func (s *QuotedString) Type() string { 17 return "string" 18 } 19 20 func (s *QuotedString) String() string { 21 return *s.value 22 } 23 24 func trimQuotes(value string) string { 25 lastIndex := len(value) - 1 26 for _, char := range []byte{'\'', '"'} { 27 if value[0] == char && value[lastIndex] == char { 28 return value[1:lastIndex] 29 } 30 } 31 return value 32 } 33 34 // NewQuotedString returns a new quoted string option 35 func NewQuotedString(value *string) *QuotedString { 36 return &QuotedString{value: value} 37 }