Commit 9df6fdcc authored by Brad Fitzpatrick's avatar Brad Fitzpatrick

mime: unexport some internal details

Fixes #2941

R=golang-dev, rsc, adg
CC=golang-dev
https://golang.org/cl/5663046
parent e8d30eb4
...@@ -14,25 +14,25 @@ func isTSpecial(r rune) bool { ...@@ -14,25 +14,25 @@ func isTSpecial(r rune) bool {
return strings.IndexRune(`()<>@,;:\"/[]?=`, r) != -1 return strings.IndexRune(`()<>@,;:\"/[]?=`, r) != -1
} }
// IsTokenChar returns true if rune is in 'token' as defined by RFC // isTokenChar returns true if rune is in 'token' as defined by RFC
// 1521 and RFC 2045. // 1521 and RFC 2045.
func IsTokenChar(r rune) bool { func isTokenChar(r rune) bool {
// token := 1*<any (US-ASCII) CHAR except SPACE, CTLs, // token := 1*<any (US-ASCII) CHAR except SPACE, CTLs,
// or tspecials> // or tspecials>
return r > 0x20 && r < 0x7f && !isTSpecial(r) return r > 0x20 && r < 0x7f && !isTSpecial(r)
} }
// IsToken returns true if s is a 'token' as as defined by RFC 1521 // isToken returns true if s is a 'token' as as defined by RFC 1521
// and RFC 2045. // and RFC 2045.
func IsToken(s string) bool { func isToken(s string) bool {
if s == "" { if s == "" {
return false return false
} }
return strings.IndexFunc(s, isNotTokenChar) < 0 return strings.IndexFunc(s, isNotTokenChar) < 0
} }
// IsQText returns true if rune is in 'qtext' as defined by RFC 822. // isQText returns true if rune is in 'qtext' as defined by RFC 822.
func IsQText(r int) bool { func isQText(r int) bool {
// CHAR = <any ASCII character> ; ( 0-177, 0.-127.) // CHAR = <any ASCII character> ; ( 0-177, 0.-127.)
// qtext = <any CHAR excepting <">, ; => may be folded // qtext = <any CHAR excepting <">, ; => may be folded
// "\" & CR, and including // "\" & CR, and including
......
...@@ -23,7 +23,7 @@ func FormatMediaType(t string, param map[string]string) string { ...@@ -23,7 +23,7 @@ func FormatMediaType(t string, param map[string]string) string {
return "" return ""
} }
major, sub := t[:slash], t[slash+1:] major, sub := t[:slash], t[slash+1:]
if !IsToken(major) || !IsToken(sub) { if !isToken(major) || !isToken(sub) {
return "" return ""
} }
var b bytes.Buffer var b bytes.Buffer
...@@ -34,12 +34,12 @@ func FormatMediaType(t string, param map[string]string) string { ...@@ -34,12 +34,12 @@ func FormatMediaType(t string, param map[string]string) string {
for attribute, value := range param { for attribute, value := range param {
b.WriteByte(';') b.WriteByte(';')
b.WriteByte(' ') b.WriteByte(' ')
if !IsToken(attribute) { if !isToken(attribute) {
return "" return ""
} }
b.WriteString(strings.ToLower(attribute)) b.WriteString(strings.ToLower(attribute))
b.WriteByte('=') b.WriteByte('=')
if IsToken(value) { if isToken(value) {
b.WriteString(value) b.WriteString(value)
continue continue
} }
...@@ -205,7 +205,7 @@ func decode2231Enc(v string) string { ...@@ -205,7 +205,7 @@ func decode2231Enc(v string) string {
} }
func isNotTokenChar(r rune) bool { func isNotTokenChar(r rune) bool {
return !IsTokenChar(r) return !isTokenChar(r)
} }
// consumeToken consumes a token from the beginning of provided // consumeToken consumes a token from the beginning of provided
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment