grammar-well 1.1.3 → 1.1.4
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/build/utility/general.d.ts +1 -1
- package/build/utility/general.js +28 -18
- package/build/utility/general.js.map +1 -1
- package/package.json +1 -1
- package/src/utility/general.ts +31 -19
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Dictionary, GrammarRuleSymbol } from "../typings";
|
|
2
2
|
export declare class Collection<T> {
|
|
3
3
|
categorized: Dictionary<Dictionary<number>>;
|
|
4
|
-
|
|
4
|
+
uncategorized: Map<T, number>;
|
|
5
5
|
items: T[];
|
|
6
6
|
constructor(ref?: T[]);
|
|
7
7
|
encode(ref: T): number;
|
package/build/utility/general.js
CHANGED
|
@@ -120,26 +120,32 @@ class Matrix {
|
|
|
120
120
|
exports.Matrix = Matrix;
|
|
121
121
|
function Flatten(obj) {
|
|
122
122
|
const collection = new Collection();
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
123
|
+
const $null = Symbol();
|
|
124
|
+
function Traverse(src) {
|
|
125
|
+
if (src == null) {
|
|
126
|
+
src = $null;
|
|
126
127
|
}
|
|
127
|
-
if (
|
|
128
|
-
collection.
|
|
128
|
+
if (collection.has(src)) {
|
|
129
|
+
return collection.encode(src);
|
|
129
130
|
}
|
|
130
|
-
|
|
131
|
+
collection.encode(src);
|
|
132
|
+
if (Array.isArray(src)) {
|
|
133
|
+
collection.redirect(src, src.map(v => Traverse(v)));
|
|
134
|
+
}
|
|
135
|
+
else if (typeof src === 'object') {
|
|
131
136
|
const o = {};
|
|
132
|
-
for (const k in
|
|
133
|
-
o[k] = Traverse(
|
|
137
|
+
for (const k in src) {
|
|
138
|
+
o[k] = Traverse(src[k]);
|
|
134
139
|
}
|
|
135
|
-
collection.redirect(
|
|
140
|
+
collection.redirect(src, o);
|
|
136
141
|
}
|
|
137
|
-
else if (typeof
|
|
138
|
-
return collection.
|
|
142
|
+
else if (typeof src === 'function') {
|
|
143
|
+
return collection.redirect(src, src.toString());
|
|
139
144
|
}
|
|
140
|
-
return collection.encode(
|
|
145
|
+
return collection.encode(src);
|
|
141
146
|
}
|
|
142
147
|
Traverse(obj);
|
|
148
|
+
collection.redirect($null, null);
|
|
143
149
|
return collection.items;
|
|
144
150
|
}
|
|
145
151
|
exports.Flatten = Flatten;
|
|
@@ -150,15 +156,19 @@ function Unflatten(items) {
|
|
|
150
156
|
return items[id];
|
|
151
157
|
}
|
|
152
158
|
visited.add(id);
|
|
153
|
-
|
|
154
|
-
|
|
159
|
+
const obj = items[id];
|
|
160
|
+
if (Array.isArray(obj)) {
|
|
161
|
+
for (let i = 0; i < obj.length; i++) {
|
|
162
|
+
const ii = obj[i];
|
|
163
|
+
obj[i] = Traverse(ii);
|
|
164
|
+
}
|
|
155
165
|
}
|
|
156
|
-
else if (typeof
|
|
157
|
-
for (const k in
|
|
158
|
-
|
|
166
|
+
else if (typeof obj === 'object') {
|
|
167
|
+
for (const k in obj) {
|
|
168
|
+
obj[k] = Traverse(obj[k]);
|
|
159
169
|
}
|
|
160
170
|
}
|
|
161
|
-
return
|
|
171
|
+
return obj;
|
|
162
172
|
}
|
|
163
173
|
return Traverse(0);
|
|
164
174
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/utility/general.ts"],"names":[],"mappings":";;;AAGA,MAAa,UAAU;IACnB,WAAW,GAAmC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"general.js","sourceRoot":"","sources":["../../src/utility/general.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/utility/general.ts
CHANGED
|
@@ -3,7 +3,7 @@ import { Dictionary, GrammarRuleSymbol } from "../typings";
|
|
|
3
3
|
|
|
4
4
|
export class Collection<T> {
|
|
5
5
|
categorized: Dictionary<Dictionary<number>> = {};
|
|
6
|
-
|
|
6
|
+
uncategorized = new Map<T, number>();
|
|
7
7
|
items: T[] = [];
|
|
8
8
|
|
|
9
9
|
constructor(ref: T[] = []) {
|
|
@@ -128,26 +128,33 @@ export class Matrix<T> {
|
|
|
128
128
|
}
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
+
|
|
131
132
|
export function Flatten(obj: any[] | { [key: string]: any }): FlatObject {
|
|
132
133
|
const collection = new Collection();
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
const $null = Symbol();
|
|
135
|
+
function Traverse(src: any) {
|
|
136
|
+
if (src == null) {
|
|
137
|
+
src = $null;
|
|
138
|
+
}
|
|
139
|
+
if (collection.has(src)) {
|
|
140
|
+
return collection.encode(src)
|
|
136
141
|
}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
142
|
+
collection.encode(src);
|
|
143
|
+
if (Array.isArray(src)) {
|
|
144
|
+
collection.redirect(src, src.map(v => Traverse(v)));
|
|
145
|
+
} else if (typeof src === 'object') {
|
|
140
146
|
const o = {};
|
|
141
|
-
for (const k in
|
|
142
|
-
o[k] = Traverse(
|
|
147
|
+
for (const k in src) {
|
|
148
|
+
o[k] = Traverse(src[k])
|
|
143
149
|
}
|
|
144
|
-
collection.redirect(
|
|
145
|
-
} else if (typeof
|
|
146
|
-
return collection.
|
|
150
|
+
collection.redirect(src, o);
|
|
151
|
+
} else if (typeof src === 'function') {
|
|
152
|
+
return collection.redirect(src, src.toString());
|
|
147
153
|
}
|
|
148
|
-
return collection.encode(
|
|
154
|
+
return collection.encode(src);
|
|
149
155
|
}
|
|
150
156
|
Traverse(obj);
|
|
157
|
+
collection.redirect($null, null);
|
|
151
158
|
return collection.items as any;
|
|
152
159
|
}
|
|
153
160
|
|
|
@@ -158,14 +165,19 @@ export function Unflatten(items: FlatObject) {
|
|
|
158
165
|
return items[id];
|
|
159
166
|
}
|
|
160
167
|
visited.add(id);
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
168
|
+
const obj: any = items[id];
|
|
169
|
+
if (Array.isArray(obj)) {
|
|
170
|
+
for (let i = 0; i < obj.length; i++) {
|
|
171
|
+
const ii = obj[i];
|
|
172
|
+
obj[i] = Traverse(ii);
|
|
173
|
+
|
|
174
|
+
}
|
|
175
|
+
} else if (typeof obj === 'object') {
|
|
176
|
+
for (const k in obj as { [key: string]: any }) {
|
|
177
|
+
obj[k] = Traverse(obj[k])
|
|
166
178
|
}
|
|
167
179
|
}
|
|
168
|
-
return
|
|
180
|
+
return obj;
|
|
169
181
|
}
|
|
170
182
|
return Traverse(0);
|
|
171
183
|
}
|