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 1<<'}' |
68 1<<'~'
69 return ((uint64(1)<<c)&(mask&(1<<64-1)) |
70 (uint64(1)<<(c-64))&(mask>>64)) != 0
71 }
72
73
74
75 func isToken(s string) bool {
76 if s == "" {
77 return false
78 }
79 for _, c := range []byte(s) {
80 if !isTokenChar(c) {
81 return false
82 }
83 }
84 return true
85 }
86
View as plain text