1 // Copyright 2010 The Go 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 mime 6 7 import ( 8 "strings" 9 ) 10 11 // isTSpecial reports whether rune is in 'tspecials' as defined by RFC 12 // 1521 and RFC 2045. 13 func isTSpecial(r rune) bool { 14 return strings.ContainsRune(`()<>@,;:\"/[]?=`, r) 15 } 16 17 // isTokenChar reports whether rune is in 'token' as defined by RFC 18 // 1521 and RFC 2045. 19 func isTokenChar(r rune) bool { 20 // token := 1*<any (US-ASCII) CHAR except SPACE, CTLs, 21 // or tspecials> 22 return r > 0x20 && r < 0x7f && !isTSpecial(r) 23 } 24 25 // isToken reports whether s is a 'token' as defined by RFC 1521 26 // and RFC 2045. 27 func isToken(s string) bool { 28 if s == "" { 29 return false 30 } 31 return strings.IndexFunc(s, isNotTokenChar) < 0 32 } 33