Skip to content

Commit abcb9b0

Browse files
authored
Easier to read lookup table for encoding using UInt8(ascii: "A") (#4)
As proposed in by @weissi in apple/swift-nio#1322 replacing the encode lookup table with uses of `UInt8(ascii: “A”)` instead of `65` for better to read code.
1 parent b6d3427 commit abcb9b0

File tree

1 file changed

+32
-16
lines changed

1 file changed

+32
-16
lines changed

Sources/Base64Kit/Base64.swift

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,26 +62,42 @@ extension Base64 {
6262
// The base64 unicode table.
6363
@usableFromInline
6464
static let encodeBase64: [UInt8] = [
65-
65, 66, 67, 68, 69, 70, 71, 72,
66-
73, 74, 75, 76, 77, 78, 79, 80,
67-
81, 82, 83, 84, 85, 86, 87, 88,
68-
89, 90, 97, 98, 99, 100, 101, 102,
69-
103, 104, 105, 106, 107, 108, 109, 110,
70-
111, 112, 113, 114, 115, 116, 117, 118,
71-
119, 120, 121, 122, 48, 49, 50, 51,
72-
52, 53, 54, 55, 56, 57, 43, 47,
65+
UInt8(ascii: "A"), UInt8(ascii: "B"), UInt8(ascii: "C"), UInt8(ascii: "D"),
66+
UInt8(ascii: "E"), UInt8(ascii: "F"), UInt8(ascii: "G"), UInt8(ascii: "H"),
67+
UInt8(ascii: "I"), UInt8(ascii: "J"), UInt8(ascii: "K"), UInt8(ascii: "L"),
68+
UInt8(ascii: "M"), UInt8(ascii: "N"), UInt8(ascii: "O"), UInt8(ascii: "P"),
69+
UInt8(ascii: "Q"), UInt8(ascii: "R"), UInt8(ascii: "S"), UInt8(ascii: "T"),
70+
UInt8(ascii: "U"), UInt8(ascii: "V"), UInt8(ascii: "W"), UInt8(ascii: "X"),
71+
UInt8(ascii: "Y"), UInt8(ascii: "Z"), UInt8(ascii: "a"), UInt8(ascii: "b"),
72+
UInt8(ascii: "c"), UInt8(ascii: "d"), UInt8(ascii: "e"), UInt8(ascii: "f"),
73+
UInt8(ascii: "g"), UInt8(ascii: "h"), UInt8(ascii: "i"), UInt8(ascii: "j"),
74+
UInt8(ascii: "k"), UInt8(ascii: "l"), UInt8(ascii: "m"), UInt8(ascii: "n"),
75+
UInt8(ascii: "o"), UInt8(ascii: "p"), UInt8(ascii: "q"), UInt8(ascii: "r"),
76+
UInt8(ascii: "s"), UInt8(ascii: "t"), UInt8(ascii: "u"), UInt8(ascii: "v"),
77+
UInt8(ascii: "w"), UInt8(ascii: "x"), UInt8(ascii: "y"), UInt8(ascii: "z"),
78+
UInt8(ascii: "0"), UInt8(ascii: "1"), UInt8(ascii: "2"), UInt8(ascii: "3"),
79+
UInt8(ascii: "4"), UInt8(ascii: "5"), UInt8(ascii: "6"), UInt8(ascii: "7"),
80+
UInt8(ascii: "8"), UInt8(ascii: "9"), UInt8(ascii: "+"), UInt8(ascii: "/"),
7381
]
7482

7583
@usableFromInline
7684
static let encodeBase64Url: [UInt8] = [
77-
65, 66, 67, 68, 69, 70, 71, 72,
78-
73, 74, 75, 76, 77, 78, 79, 80,
79-
81, 82, 83, 84, 85, 86, 87, 88,
80-
89, 90, 97, 98, 99, 100, 101, 102,
81-
103, 104, 105, 106, 107, 108, 109, 110,
82-
111, 112, 113, 114, 115, 116, 117, 118,
83-
119, 120, 121, 122, 48, 49, 50, 51,
84-
52, 53, 54, 55, 56, 57, 45, 95,
85+
UInt8(ascii: "A"), UInt8(ascii: "B"), UInt8(ascii: "C"), UInt8(ascii: "D"),
86+
UInt8(ascii: "E"), UInt8(ascii: "F"), UInt8(ascii: "G"), UInt8(ascii: "H"),
87+
UInt8(ascii: "I"), UInt8(ascii: "J"), UInt8(ascii: "K"), UInt8(ascii: "L"),
88+
UInt8(ascii: "M"), UInt8(ascii: "N"), UInt8(ascii: "O"), UInt8(ascii: "P"),
89+
UInt8(ascii: "Q"), UInt8(ascii: "R"), UInt8(ascii: "S"), UInt8(ascii: "T"),
90+
UInt8(ascii: "U"), UInt8(ascii: "V"), UInt8(ascii: "W"), UInt8(ascii: "X"),
91+
UInt8(ascii: "Y"), UInt8(ascii: "Z"), UInt8(ascii: "a"), UInt8(ascii: "b"),
92+
UInt8(ascii: "c"), UInt8(ascii: "d"), UInt8(ascii: "e"), UInt8(ascii: "f"),
93+
UInt8(ascii: "g"), UInt8(ascii: "h"), UInt8(ascii: "i"), UInt8(ascii: "j"),
94+
UInt8(ascii: "k"), UInt8(ascii: "l"), UInt8(ascii: "m"), UInt8(ascii: "n"),
95+
UInt8(ascii: "o"), UInt8(ascii: "p"), UInt8(ascii: "q"), UInt8(ascii: "r"),
96+
UInt8(ascii: "s"), UInt8(ascii: "t"), UInt8(ascii: "u"), UInt8(ascii: "v"),
97+
UInt8(ascii: "w"), UInt8(ascii: "x"), UInt8(ascii: "y"), UInt8(ascii: "z"),
98+
UInt8(ascii: "0"), UInt8(ascii: "1"), UInt8(ascii: "2"), UInt8(ascii: "3"),
99+
UInt8(ascii: "4"), UInt8(ascii: "5"), UInt8(ascii: "6"), UInt8(ascii: "7"),
100+
UInt8(ascii: "8"), UInt8(ascii: "9"), UInt8(ascii: "-"), UInt8(ascii: "_"),
85101
]
86102

87103
@usableFromInline

0 commit comments

Comments
 (0)