Skip to content

Commit b73aa2b

Browse files
committed
Refactor
1 parent adbf831 commit b73aa2b

File tree

4 files changed

+41
-50
lines changed

4 files changed

+41
-50
lines changed

src/lib/encoder.spec.ts

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -4,36 +4,37 @@ import { Chars } from './chars'
44
import alphaEncoder from './encoder/alpha'
55
import alphaCaseEncoder from './encoder/alphaCase'
66
import alphaNumEncoder from './encoder/alphaNum'
7+
import alphaNumCaseEncoder from './encoder/alphaNumCase'
78
import base32Encoder from './encoder/base32'
89
import base32HexCaseEncoder from './encoder/base32HexCase'
910
import decimalEncoder from './encoder/decimal'
1011
import hexCaseEncoder from './encoder/hexCase'
1112
import safe32Encoder from './encoder/safe32'
1213
import safe64Encoder from './encoder/safe64'
1314
import safeAsciiEncoder from './encoder/safeAscii'
15+
import symbolEncoder from './encoder/symbol'
1416

1517
type PuidEncoder = (n: number) => number
16-
const encoderString = (n: number, encoder: PuidEncoder) =>
17-
String.fromCodePoint(
18-
...new Array(n)
19-
.fill(0)
20-
.map((zero, ndx) => zero + ndx)
21-
.map((v) => encoder(v))
22-
)
2318

24-
const testEncoder = (t: ExecutionContext, encoder: PuidEncoder, chars: string) =>
25-
t.is(encoderString(chars.length, encoder), chars)
19+
const encoder = (t: ExecutionContext, encoder: PuidEncoder, chars: string) => {
20+
const codes = [...Array(chars.length).keys()].map(code => encoder(code))
21+
const encoded = String.fromCharCode(...codes)
22+
t.is(encoded, chars)
23+
}
2624

27-
test('alpha() encoder', (t) => testEncoder(t, alphaEncoder(), Chars.Alpha))
28-
test('alphaCase() encoder', (t) => testEncoder(t, alphaCaseEncoder(), Chars.AlphaLower))
29-
test('alphaCase(true) encoder', (t) => testEncoder(t, alphaCaseEncoder(true), Chars.AlphaUpper))
30-
test('alphaNumEncoder() encoder', (t) => testEncoder(t, alphaNumEncoder(), Chars.AlphaNum))
31-
test('base32Encoder() encoder', (t) => testEncoder(t, base32Encoder(), Chars.Base32))
32-
test('base32HexCaseEncoder() encoder', (t) => testEncoder(t, base32HexCaseEncoder(), Chars.Base32Hex))
33-
test('base32HexCaseEncoder(true) encoder', (t) => testEncoder(t, base32HexCaseEncoder(true), Chars.Base32HexUpper))
34-
test('decimalEncoder() encoder', (t) => testEncoder(t, decimalEncoder(), Chars.Decimal))
35-
test('hexCaseEncoder() encoder', (t) => testEncoder(t, hexCaseEncoder(), Chars.Hex))
36-
test('hexCaseEncoder(true) encoder', (t) => testEncoder(t, hexCaseEncoder(true), Chars.HexUpper))
37-
test('safe32Encoder() encoder', (t) => testEncoder(t, safe32Encoder(), Chars.Safe32))
38-
test('safe64Encoder encoder', (t) => testEncoder(t, safe64Encoder(), Chars.Safe64))
39-
test('safeAsciiEncoder() encoder', (t) => testEncoder(t, safeAsciiEncoder(), Chars.SafeAscii))
25+
test('alpha() encoder chars', (t) => encoder(t, alphaEncoder(), Chars.Alpha))
26+
test('alphaCase() encoder chars', (t) => encoder(t, alphaCaseEncoder(), Chars.AlphaLower))
27+
test('alphaCase(true) encoder chars', (t) => encoder(t, alphaCaseEncoder(true), Chars.AlphaUpper))
28+
test('alphaNumEncoder() encoder chars', (t) => encoder(t, alphaNumEncoder(), Chars.AlphaNum))
29+
test('alphaNumCaseEncoder() encoder chars', (t) => encoder(t, alphaNumCaseEncoder(), Chars.AlphaNumLower))
30+
test('alphaNumCaseEncoder(true) encoder chars', (t) => encoder(t, alphaNumCaseEncoder(true), Chars.AlphaNumUpper))
31+
test('base32Encoder() encoder chars', (t) => encoder(t, base32Encoder(), Chars.Base32))
32+
test('base32HexCaseEncoder() encoder chars', (t) => encoder(t, base32HexCaseEncoder(), Chars.Base32Hex))
33+
test('base32HexCaseEncoder(true) encoder chars', (t) => encoder(t, base32HexCaseEncoder(true), Chars.Base32HexUpper))
34+
test('decimalEncoder() encoder chars', (t) => encoder(t, decimalEncoder(), Chars.Decimal))
35+
test('hexCaseEncoder() encoder chars', (t) => encoder(t, hexCaseEncoder(), Chars.Hex))
36+
test('hexCaseEncoder(true) encoder chars', (t) => encoder(t, hexCaseEncoder(true), Chars.HexUpper))
37+
test('safeAsciiEncoder() encoder chars', (t) => encoder(t, safeAsciiEncoder(), Chars.SafeAscii))
38+
test('safe32Encoder() encoder chars', (t) => encoder(t, safe32Encoder(), Chars.Safe32))
39+
test('safe64Encoder encoder chars', (t) => encoder(t, safe64Encoder(), Chars.Safe64))
40+
test('symbolEncoder() encoder chars', (t) => encoder(t, symbolEncoder(), Chars.Symbol))

src/lib/encoder.ts

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,11 @@ import safe32Encoder from './encoder/safe32'
3131
import safe64Encoder from './encoder/safe64'
3232
import safeAsciiEncoder from './encoder/safeAscii'
3333

34-
// const predefinedEncoding = (encoder: PuidEncoder) => (puidValues: PuidValues) => puidFromValues(puidValues, encoder)
35-
36-
// const customEncoding = (chars: string): PuidEncoding => {
37-
// const encoder = customCharsEncoder(chars)
38-
// return (puidValues: PuidValues) => puidFromValues(puidValues, encoder)
39-
// }
40-
4134
export const customCharsEncoder = (chars: string): PuidEncoder => {
4235
const charCodes = chars.split('').map((c) => c.charCodeAt(0))
4336
return (n: number) => charCodes[n]
4437
}
4538

46-
// export const puidFromValues = (values: PuidValues, encoder: PuidEncoder): string =>
47-
// String.fromCharCode(...values.map((v) => encoder(v)))
48-
4939
export default (chars: string): PuidEncoder => {
5040
if (chars === Chars.Alpha) return alphaEncoder()
5141
if (chars === Chars.AlphaLower) return alphaCaseEncoder()

src/lib/encoder/safe64.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ export default (): PuidEncoder => {
2424
const decimal = '0'.charCodeAt(0)
2525
const upper = 'A'.charCodeAt(0) - 10
2626
const lower = 'a'.charCodeAt(0) - 36
27-
const hyphen = '-'.charCodeAt(0) - 62
28-
const underscore = '_'.charCodeAt(0) - 63
27+
const hyphen = '-'.charCodeAt(0)
28+
const underscore = '_'.charCodeAt(0)
2929

3030
return (n: number) => {
3131
if (n < 10) return n + decimal
3232
if (n < 36) return n + upper
3333
if (n < 62) return n + lower
34-
if (n === 62) return n + hyphen
35-
return n + underscore
34+
if (n === 62) return hyphen
35+
return underscore
3636
}
3737
}

src/lib/encoder/symbol.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,21 +21,21 @@
2121
// SOFTWARE.
2222

2323
export default (): PuidEncoder => {
24-
const s1 = '!'.charCodeAt(0)
25-
const s2 = '#'.charCodeAt(0) - 1
26-
const s3 = '('.charCodeAt(0) - 5
27-
const s4 = ':'.charCodeAt(0) - 13
28-
const s5 = '['.charCodeAt(0)
29-
const s6 = ']'.charCodeAt(0) - 21
30-
const s7 = '{'.charCodeAt(0) - 24
24+
const bang = '!'.charCodeAt(0)
25+
const hash = '#'.charCodeAt(0) - 1
26+
const openParen = '('.charCodeAt(0) - 5
27+
const colon = ':'.charCodeAt(0) - 13
28+
const openSquareBracket = '['.charCodeAt(0)
29+
const closeSquareBracket = ']'.charCodeAt(0) - 21
30+
const openCurlyBracket = '{'.charCodeAt(0) - 24
3131

3232
return (n: number) => {
33-
if (n === 0) return s1
34-
if (n < 5) return n + s2
35-
if (n < 13) return n + s3
36-
if (n < 20) return n + s4
37-
if (n === 20) return s5
38-
if (n < 24) return n + s6
39-
return n + s7
33+
if (n === 0) return bang
34+
if (n < 5) return n + hash
35+
if (n < 13) return n + openParen
36+
if (n < 20) return n + colon
37+
if (n === 20) return openSquareBracket
38+
if (n < 24) return n + closeSquareBracket
39+
return n + openCurlyBracket
4040
}
4141
}

0 commit comments

Comments
 (0)