@calcit/ternary-tree 0.0.17 → 0.0.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/utils.ts DELETED
@@ -1,124 +0,0 @@
1
- /** by default, it compares by reference
2
- * supposed to be overwritten by user
3
- */
4
-
5
- export let dataEqual = (x: any, y: any): boolean => {
6
- return x === y;
7
- };
8
-
9
- export let overwriteComparator = (f: (x: any, y: any) => boolean) => {
10
- dataEqual = f;
11
- };
12
-
13
- export let roughIntPow = (x: number, times: number): number => {
14
- if (times < 1) {
15
- return x;
16
- }
17
-
18
- let result = 1;
19
- for (let idx = 0; idx < times; idx++) {
20
- result = result * x;
21
- }
22
- return result;
23
- };
24
-
25
- export let divideTernarySizes = (size: number): { left: number; middle: number; right: number } => {
26
- if (size < 0) {
27
- throw new Error("Unexpected negative size");
28
- }
29
- let extra = size % 3;
30
- let groupSize = Math.floor(size / 3);
31
- var leftSize = groupSize;
32
- var middleSize = groupSize;
33
- var rightSize = groupSize;
34
-
35
- switch (extra) {
36
- case 0:
37
- break;
38
- case 1:
39
- middleSize = middleSize + 1;
40
- break;
41
- case 2:
42
- leftSize = leftSize + 1;
43
- rightSize = rightSize + 1;
44
- break;
45
- default:
46
- throw new Error(`Unexpected mod result ${extra}`);
47
- }
48
-
49
- return { left: leftSize, middle: middleSize, right: rightSize };
50
- };
51
-
52
- export function shallowCloneArray<T>(xs: Array<T>): Array<T> {
53
- let ys: Array<T> = new Array(xs.length);
54
- for (let i = 0; i < xs.length; i++) {
55
- ys[i] = xs[i];
56
- }
57
- return ys;
58
- }
59
-
60
- export let test = (name: string, cb: () => void): void => {
61
- console.log("Test:", name);
62
- cb();
63
- };
64
-
65
- export let check = (x: boolean): void => {
66
- if (!x) {
67
- throw new Error("Test failed");
68
- }
69
- };
70
-
71
- /** compare by reference */
72
- export let checkEqual = (x: any, y: any): void => {
73
- if (x !== y) {
74
- console.log("Left: ", x);
75
- console.log("Right: ", y);
76
- throw new Error("Test failed");
77
- }
78
- };
79
-
80
- export let justDisplay = (x: any, y: any): void => {
81
- console.group("Compare:");
82
- console.log(x);
83
- console.log(y);
84
- console.groupEnd();
85
- };
86
-
87
- export let cmp = (x: any, y: any) => {
88
- if (x < y) {
89
- return -1;
90
- }
91
- if (x > y) {
92
- return 1;
93
- }
94
- return 0;
95
- };
96
-
97
- // https://stackoverflow.com/a/25456134/883571
98
- export let deepEqual = function (x: any, y: any) {
99
- if (x === y) {
100
- return true;
101
- } else if (typeof x === "object" && x != null && typeof y === "object" && y != null) {
102
- if (Object.keys(x).length != Object.keys(y).length) return false;
103
-
104
- for (var prop in x) {
105
- if (y.hasOwnProperty(prop)) {
106
- if (!deepEqual(x[prop], y[prop])) return false;
107
- } else return false;
108
- }
109
-
110
- return true;
111
- } else return false;
112
- };
113
-
114
- export let arrayEqual = <T>(xs: Array<T>, ys: Array<T>): boolean => {
115
- if (xs.length != ys.length) {
116
- return false;
117
- }
118
- for (let idx = 0; idx < xs.length; idx++) {
119
- if (xs[idx] !== ys[idx]) {
120
- return false;
121
- }
122
- }
123
- return true;
124
- };