1 | "use strict";
|
2 | var lang_1 = require('./lang');
|
3 | exports.Map = lang_1.global.Map;
|
4 | exports.Set = lang_1.global.Set;
|
5 |
|
6 |
|
7 | var createMapFromPairs = (function () {
|
8 | try {
|
9 | if (new exports.Map([[1, 2]]).size === 1) {
|
10 | return function createMapFromPairs(pairs) { return new exports.Map(pairs); };
|
11 | }
|
12 | }
|
13 | catch (e) {
|
14 | }
|
15 | return function createMapAndPopulateFromPairs(pairs) {
|
16 | var map = new exports.Map();
|
17 | for (var i = 0; i < pairs.length; i++) {
|
18 | var pair = pairs[i];
|
19 | map.set(pair[0], pair[1]);
|
20 | }
|
21 | return map;
|
22 | };
|
23 | })();
|
24 | var createMapFromMap = (function () {
|
25 | try {
|
26 | if (new exports.Map(new exports.Map())) {
|
27 | return function createMapFromMap(m) { return new exports.Map(m); };
|
28 | }
|
29 | }
|
30 | catch (e) {
|
31 | }
|
32 | return function createMapAndPopulateFromMap(m) {
|
33 | var map = new exports.Map();
|
34 | m.forEach(function (v, k) { map.set(k, v); });
|
35 | return map;
|
36 | };
|
37 | })();
|
38 | var _clearValues = (function () {
|
39 | if ((new exports.Map()).keys().next) {
|
40 | return function _clearValues(m) {
|
41 | var keyIterator = m.keys();
|
42 | var k;
|
43 | while (!((k = keyIterator.next()).done)) {
|
44 | m.set(k.value, null);
|
45 | }
|
46 | };
|
47 | }
|
48 | else {
|
49 | return function _clearValuesWithForeEach(m) {
|
50 | m.forEach(function (v, k) { m.set(k, null); });
|
51 | };
|
52 | }
|
53 | })();
|
54 |
|
55 |
|
56 | var _arrayFromMap = (function () {
|
57 | try {
|
58 | if ((new exports.Map()).values().next) {
|
59 | return function createArrayFromMap(m, getValues) {
|
60 | return getValues ? Array.from(m.values()) : Array.from(m.keys());
|
61 | };
|
62 | }
|
63 | }
|
64 | catch (e) {
|
65 | }
|
66 | return function createArrayFromMapWithForeach(m, getValues) {
|
67 | var res = ListWrapper.createFixedSize(m.size), i = 0;
|
68 | m.forEach(function (v, k) {
|
69 | res[i] = getValues ? v : k;
|
70 | i++;
|
71 | });
|
72 | return res;
|
73 | };
|
74 | })();
|
75 | var MapWrapper = (function () {
|
76 | function MapWrapper() {
|
77 | }
|
78 | MapWrapper.clone = function (m) { return createMapFromMap(m); };
|
79 | MapWrapper.createFromStringMap = function (stringMap) {
|
80 | var result = new exports.Map();
|
81 | for (var prop in stringMap) {
|
82 | result.set(prop, stringMap[prop]);
|
83 | }
|
84 | return result;
|
85 | };
|
86 | MapWrapper.toStringMap = function (m) {
|
87 | var r = {};
|
88 | m.forEach(function (v, k) { return r[k] = v; });
|
89 | return r;
|
90 | };
|
91 | MapWrapper.createFromPairs = function (pairs) { return createMapFromPairs(pairs); };
|
92 | MapWrapper.clearValues = function (m) { _clearValues(m); };
|
93 | MapWrapper.iterable = function (m) { return m; };
|
94 | MapWrapper.keys = function (m) { return _arrayFromMap(m, false); };
|
95 | MapWrapper.values = function (m) { return _arrayFromMap(m, true); };
|
96 | return MapWrapper;
|
97 | }());
|
98 | exports.MapWrapper = MapWrapper;
|
99 |
|
100 |
|
101 |
|
102 | var StringMapWrapper = (function () {
|
103 | function StringMapWrapper() {
|
104 | }
|
105 | StringMapWrapper.create = function () {
|
106 |
|
107 |
|
108 |
|
109 | return {};
|
110 | };
|
111 | StringMapWrapper.contains = function (map, key) {
|
112 | return map.hasOwnProperty(key);
|
113 | };
|
114 | StringMapWrapper.get = function (map, key) {
|
115 | return map.hasOwnProperty(key) ? map[key] : undefined;
|
116 | };
|
117 | StringMapWrapper.set = function (map, key, value) { map[key] = value; };
|
118 | StringMapWrapper.keys = function (map) { return Object.keys(map); };
|
119 | StringMapWrapper.values = function (map) {
|
120 | return Object.keys(map).reduce(function (r, a) {
|
121 | r.push(map[a]);
|
122 | return r;
|
123 | }, []);
|
124 | };
|
125 | StringMapWrapper.isEmpty = function (map) {
|
126 | for (var prop in map) {
|
127 | return false;
|
128 | }
|
129 | return true;
|
130 | };
|
131 | StringMapWrapper.delete = function (map, key) { delete map[key]; };
|
132 | StringMapWrapper.forEach = function (map, callback) {
|
133 | for (var prop in map) {
|
134 | if (map.hasOwnProperty(prop)) {
|
135 | callback(map[prop], prop);
|
136 | }
|
137 | }
|
138 | };
|
139 | StringMapWrapper.merge = function (m1, m2) {
|
140 | var m = {};
|
141 | for (var attr in m1) {
|
142 | if (m1.hasOwnProperty(attr)) {
|
143 | m[attr] = m1[attr];
|
144 | }
|
145 | }
|
146 | for (var attr in m2) {
|
147 | if (m2.hasOwnProperty(attr)) {
|
148 | m[attr] = m2[attr];
|
149 | }
|
150 | }
|
151 | return m;
|
152 | };
|
153 | StringMapWrapper.equals = function (m1, m2) {
|
154 | var k1 = Object.keys(m1);
|
155 | var k2 = Object.keys(m2);
|
156 | if (k1.length != k2.length) {
|
157 | return false;
|
158 | }
|
159 | var key;
|
160 | for (var i = 0; i < k1.length; i++) {
|
161 | key = k1[i];
|
162 | if (m1[key] !== m2[key]) {
|
163 | return false;
|
164 | }
|
165 | }
|
166 | return true;
|
167 | };
|
168 | return StringMapWrapper;
|
169 | }());
|
170 | exports.StringMapWrapper = StringMapWrapper;
|
171 | var ListWrapper = (function () {
|
172 | function ListWrapper() {
|
173 | }
|
174 |
|
175 |
|
176 | ListWrapper.createFixedSize = function (size) { return new Array(size); };
|
177 | ListWrapper.createGrowableSize = function (size) { return new Array(size); };
|
178 | ListWrapper.clone = function (array) { return array.slice(0); };
|
179 | ListWrapper.forEachWithIndex = function (array, fn) {
|
180 | for (var i = 0; i < array.length; i++) {
|
181 | fn(array[i], i);
|
182 | }
|
183 | };
|
184 | ListWrapper.first = function (array) {
|
185 | if (!array)
|
186 | return null;
|
187 | return array[0];
|
188 | };
|
189 | ListWrapper.last = function (array) {
|
190 | if (!array || array.length == 0)
|
191 | return null;
|
192 | return array[array.length - 1];
|
193 | };
|
194 | ListWrapper.indexOf = function (array, value, startIndex) {
|
195 | if (startIndex === void 0) { startIndex = 0; }
|
196 | return array.indexOf(value, startIndex);
|
197 | };
|
198 | ListWrapper.contains = function (list, el) { return list.indexOf(el) !== -1; };
|
199 | ListWrapper.reversed = function (array) {
|
200 | var a = ListWrapper.clone(array);
|
201 | return a.reverse();
|
202 | };
|
203 | ListWrapper.concat = function (a, b) { return a.concat(b); };
|
204 | ListWrapper.insert = function (list, index, value) { list.splice(index, 0, value); };
|
205 | ListWrapper.removeAt = function (list, index) {
|
206 | var res = list[index];
|
207 | list.splice(index, 1);
|
208 | return res;
|
209 | };
|
210 | ListWrapper.removeAll = function (list, items) {
|
211 | for (var i = 0; i < items.length; ++i) {
|
212 | var index = list.indexOf(items[i]);
|
213 | list.splice(index, 1);
|
214 | }
|
215 | };
|
216 | ListWrapper.remove = function (list, el) {
|
217 | var index = list.indexOf(el);
|
218 | if (index > -1) {
|
219 | list.splice(index, 1);
|
220 | return true;
|
221 | }
|
222 | return false;
|
223 | };
|
224 | ListWrapper.clear = function (list) { list.length = 0; };
|
225 | ListWrapper.isEmpty = function (list) { return list.length == 0; };
|
226 | ListWrapper.fill = function (list, value, start, end) {
|
227 | if (start === void 0) { start = 0; }
|
228 | if (end === void 0) { end = null; }
|
229 | list.fill(value, start, end === null ? list.length : end);
|
230 | };
|
231 | ListWrapper.equals = function (a, b) {
|
232 | if (a.length != b.length)
|
233 | return false;
|
234 | for (var i = 0; i < a.length; ++i) {
|
235 | if (a[i] !== b[i])
|
236 | return false;
|
237 | }
|
238 | return true;
|
239 | };
|
240 | ListWrapper.slice = function (l, from, to) {
|
241 | if (from === void 0) { from = 0; }
|
242 | if (to === void 0) { to = null; }
|
243 | return l.slice(from, to === null ? undefined : to);
|
244 | };
|
245 | ListWrapper.splice = function (l, from, length) { return l.splice(from, length); };
|
246 | ListWrapper.sort = function (l, compareFn) {
|
247 | if (lang_1.isPresent(compareFn)) {
|
248 | l.sort(compareFn);
|
249 | }
|
250 | else {
|
251 | l.sort();
|
252 | }
|
253 | };
|
254 | ListWrapper.toString = function (l) { return l.toString(); };
|
255 | ListWrapper.toJSON = function (l) { return JSON.stringify(l); };
|
256 | ListWrapper.maximum = function (list, predicate) {
|
257 | if (list.length == 0) {
|
258 | return null;
|
259 | }
|
260 | var solution = null;
|
261 | var maxValue = -Infinity;
|
262 | for (var index = 0; index < list.length; index++) {
|
263 | var candidate = list[index];
|
264 | if (lang_1.isBlank(candidate)) {
|
265 | continue;
|
266 | }
|
267 | var candidateValue = predicate(candidate);
|
268 | if (candidateValue > maxValue) {
|
269 | solution = candidate;
|
270 | maxValue = candidateValue;
|
271 | }
|
272 | }
|
273 | return solution;
|
274 | };
|
275 | ListWrapper.flatten = function (list) {
|
276 | var target = [];
|
277 | _flattenArray(list, target);
|
278 | return target;
|
279 | };
|
280 | ListWrapper.addAll = function (list, source) {
|
281 | for (var i = 0; i < source.length; i++) {
|
282 | list.push(source[i]);
|
283 | }
|
284 | };
|
285 | return ListWrapper;
|
286 | }());
|
287 | exports.ListWrapper = ListWrapper;
|
288 | function _flattenArray(source, target) {
|
289 | if (lang_1.isPresent(source)) {
|
290 | for (var i = 0; i < source.length; i++) {
|
291 | var item = source[i];
|
292 | if (lang_1.isArray(item)) {
|
293 | _flattenArray(item, target);
|
294 | }
|
295 | else {
|
296 | target.push(item);
|
297 | }
|
298 | }
|
299 | }
|
300 | return target;
|
301 | }
|
302 | function isListLikeIterable(obj) {
|
303 | if (!lang_1.isJsObject(obj))
|
304 | return false;
|
305 | return lang_1.isArray(obj) ||
|
306 | (!(obj instanceof exports.Map) &&
|
307 | lang_1.getSymbolIterator() in obj);
|
308 | }
|
309 | exports.isListLikeIterable = isListLikeIterable;
|
310 | function areIterablesEqual(a, b, comparator) {
|
311 | var iterator1 = a[lang_1.getSymbolIterator()]();
|
312 | var iterator2 = b[lang_1.getSymbolIterator()]();
|
313 | while (true) {
|
314 | var item1 = iterator1.next();
|
315 | var item2 = iterator2.next();
|
316 | if (item1.done && item2.done)
|
317 | return true;
|
318 | if (item1.done || item2.done)
|
319 | return false;
|
320 | if (!comparator(item1.value, item2.value))
|
321 | return false;
|
322 | }
|
323 | }
|
324 | exports.areIterablesEqual = areIterablesEqual;
|
325 | function iterateListLike(obj, fn) {
|
326 | if (lang_1.isArray(obj)) {
|
327 | for (var i = 0; i < obj.length; i++) {
|
328 | fn(obj[i]);
|
329 | }
|
330 | }
|
331 | else {
|
332 | var iterator = obj[lang_1.getSymbolIterator()]();
|
333 | var item;
|
334 | while (!((item = iterator.next()).done)) {
|
335 | fn(item.value);
|
336 | }
|
337 | }
|
338 | }
|
339 | exports.iterateListLike = iterateListLike;
|
340 |
|
341 |
|
342 | var createSetFromList = (function () {
|
343 | var test = new exports.Set([1, 2, 3]);
|
344 | if (test.size === 3) {
|
345 | return function createSetFromList(lst) { return new exports.Set(lst); };
|
346 | }
|
347 | else {
|
348 | return function createSetAndPopulateFromList(lst) {
|
349 | var res = new exports.Set(lst);
|
350 | if (res.size !== lst.length) {
|
351 | for (var i = 0; i < lst.length; i++) {
|
352 | res.add(lst[i]);
|
353 | }
|
354 | }
|
355 | return res;
|
356 | };
|
357 | }
|
358 | })();
|
359 | var SetWrapper = (function () {
|
360 | function SetWrapper() {
|
361 | }
|
362 | SetWrapper.createFromList = function (lst) { return createSetFromList(lst); };
|
363 | SetWrapper.has = function (s, key) { return s.has(key); };
|
364 | SetWrapper.delete = function (m, k) { m.delete(k); };
|
365 | return SetWrapper;
|
366 | }());
|
367 | exports.SetWrapper = SetWrapper;
|
368 |
|
\ | No newline at end of file |