Source file
src/mime/grammar.go
1
2
3
4
5 package mime
6
7
8
9 func isTSpecial(c byte) bool {
10
11
12
13
14
15
16
17
18 const mask = 0 |
19 1<<'(' |
20 1<<')' |
21 1<<'<' |
22 1<<'>' |
23 1<<'@' |
24 1<<',' |
25 1<<';' |
26 1<<':' |
27 1<<'\\' |
28 1<<'"' |
29 1<<'/' |
30 1<<'[' |
31 1<<']' |
32 1<<'?' |
33 1<<'='
34 return ((uint64(1)<<c)&(mask&(1<<64-1)) |
35 (uint64(1)<<(c-64))&(mask>>64)) != 0
36 }
37
38
39
40 func isTokenChar(c byte) bool {
41
42
43
44
45
46
47
48 const mask = 0 |
49 (1<<(10)-1)<<'0' |
50 (1<<(26)-1)<<'a' |
51 (1<<(26)-1)<<'A' |
52 1<<'!' |
53 1<<'#' |
54 1<<'$' |
55 1<<'%' |
56 1<<'&' |
57 1<<'\'' |
58 1<<'*' |
59 1<<'+' |
60 1<<'-' |
61 1<<'.' |
62 1<<'^' |
63 1<<'_' |
64 1<<'`' |
65 1<<'|' |
66 1<<'~'
67 return ((uint64(1)<<c)&(mask&(1<<64-1)) |
68 (uint64(1)<<(c-64))&(mask>>64)) != 0
69 }
70
71
72
73 func isToken(s string) bool {
74 if s == "" {
75 return false
76 }
77 for _, c := range []byte(s) {
78 if !isTokenChar(c) {
79 return false
80 }
81 }
82 return true
83 }
84
View as plain text