-
-
Notifications
You must be signed in to change notification settings - Fork 7
/
index.d.ts
89 lines (64 loc) · 2.39 KB
/
index.d.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
export type StringComparator = (left: string, right: string) => number;
export type Options = {
/**
Whether or not to sort in descending order.
@default false
*/
readonly descending?: boolean;
/**
Whether or not to sort case-insensitively.
Note: If two elements are considered equal in the case-insensitive comparison, the tie-break will be a standard (case-sensitive) comparison.
@default false
@example
```
import alphaSort from 'alpha-sort';
['bar', 'baz', 'Baz'].sort(alphaSort({caseInsensitive: true}));
//=> ['bar', 'Baz', 'baz']
```
*/
readonly caseInsensitive?: boolean;
/**
Whether or not to sort using natural sort order (such as sorting `10` after `2`).
Note: If two elements are considered equal in the natural sort order comparison, the tie-break will be a standard (non-natural) comparison.
@default false
@example
```
import alphaSort from 'alpha-sort';
['file10.txt', 'file05.txt', 'file0010.txt'].sort(alphaSort({natural: true}));
//=> ['file05.txt', 'file0010.txt', 'file10.txt']
```
*/
readonly natural?: boolean;
/**
A custom function that you can provide to manipulate the elements before sorting. This does not modify the values of the array; it only interferes in the sorting order.
This can be used, for example, if you are sorting book titles in English and want to ignore common articles such as `the`, `a` or `an`.
Note: If two elements are considered equal when sorting with a custom preprocessor, the tie-break will be a comparison without the custom preprocessor.
@default undefined
@example
```
import alphaSort from 'alpha-sort';
['The Foo', 'Bar'].sort(alphaSort({
preprocessor: title => title.replace(/^(?:the|a|an) /i, '')
}));
//=> ['Bar', 'The Foo']
```
*/
readonly preprocessor?: (string: string) => string;
};
/**
Get a comparator function to be used as argument for `Array#sort`.
@param options - Choose ascending/descending, case sensitivity, and number natural ordering.
@example
```
import alphaSort from 'alpha-sort';
['b', 'a', 'c'].sort(alphaSort());
//=> ['a', 'b', 'c']
['b', 'a', 'c'].sort(alphaSort({descending: true}));
//=> ['c', 'b', 'a']
['B', 'a', 'C'].sort(alphaSort({caseInsensitive: true}));
//=> ['a', 'B', 'C']
['file10.txt', 'file2.txt', 'file03.txt'].sort(alphaSort({natural: true}));
//=> ['file2.txt', 'file03.txt', 'file10.txt']
```
*/
export default function alphaSort(options?: Options): StringComparator;