Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Unified Diff: tracing/tracing/base/iteration_helpers.html

Issue 2995843002: Merge iteration_helpers into utils.html. (Closed)
Patch Set: rebase Created 3 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tracing/tracing/base/extension_registry.html ('k') | tracing/tracing/base/iteration_helpers_test.html » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tracing/tracing/base/iteration_helpers.html
diff --git a/tracing/tracing/base/iteration_helpers.html b/tracing/tracing/base/iteration_helpers.html
deleted file mode 100644
index 83f58f28d4d2a9ae1031f2dae3de5a0ca0a234cd..0000000000000000000000000000000000000000
--- a/tracing/tracing/base/iteration_helpers.html
+++ /dev/null
@@ -1,173 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (c) 2014 The Chromium Authors. All rights reserved.
-Use of this source code is governed by a BSD-style license that can be
-found in the LICENSE file.
--->
-
-<link rel="import" href="/tracing/base/base.html">
-
-<script>
-'use strict';
-
-tr.exportTo('tr.b', function() {
- /**
- * Returns the only element in the iterable. If the iterable is empty or has
- * more than one element, an error is thrown.
- */
- function getOnlyElement(iterable) {
- const iterator = iterable[Symbol.iterator]();
-
- const firstIteration = iterator.next();
- if (firstIteration.done) {
- throw new Error('getOnlyElement was passed an empty iterable.');
- }
-
- const secondIteration = iterator.next();
- if (!secondIteration.done) {
- throw new Error(
- 'getOnlyElement was passed an iterable with multiple elements.');
- }
-
- return firstIteration.value;
- }
-
- /**
- * Returns the first element in the iterable. If the iterable is empty, an
- * error is thrown.
- */
- function getFirstElement(iterable) {
- const iterator = iterable[Symbol.iterator]();
- const result = iterator.next();
- if (result.done) {
- throw new Error('getFirstElement was passed an empty iterable.');
- }
-
- return result.value;
- }
-
- function compareArrays(x, y, elementCmp) {
- const minLength = Math.min(x.length, y.length);
- let i;
- for (i = 0; i < minLength; i++) {
- const tmp = elementCmp(x[i], y[i]);
- if (tmp) return tmp;
- }
- if (x.length === y.length) return 0;
-
- if (x[i] === undefined) return -1;
-
- return 1;
- }
-
- /**
- * Returns a new Map with items grouped by the return value of the
- * specified function being called on each item.
- * @param {!Array.<!*>} ary The array being iterated through
- * @param {!function(!*):!*} callback The mapping function between the array
- * value and the map key.
- * @param {*=} opt_this
- */
- function groupIntoMap(ary, callback, opt_this, opt_arrayConstructor) {
- const arrayConstructor = opt_arrayConstructor || Array;
- const results = new Map();
- for (const element of ary) {
- const key = callback.call(opt_this, element);
- let items = results.get(key);
- if (items === undefined) {
- items = new arrayConstructor();
- results.set(key, items);
- }
- items.push(element);
- }
- return results;
- }
-
- function inPlaceFilter(array, predicate, opt_this) {
- opt_this = opt_this || this;
- let nextPosition = 0;
- for (let i = 0; i < array.length; i++) {
- if (!predicate.call(opt_this, array[i], i)) continue;
- if (nextPosition < i) {
- array[nextPosition] = array[i]; // Move elements only if necessary.
- }
- nextPosition++;
- }
-
- if (nextPosition < array.length) {
- array.length = nextPosition; // Truncate the array only if necessary.
- }
- }
-
- /**
- * Convert an array of dictionaries to a dictionary of arrays.
- *
- * The keys of the resulting dictionary are a union of the keys of all
- * dictionaries in the provided array. Each array in the resulting dictionary
- * has the same length as the provided array and contains the values of its
- * key in the dictionaries in the provided array. Example:
- *
- * INPUT:
- *
- * [
- * {a: 6, b: 5 },
- * undefined,
- * {a: 4, b: 3, c: 2},
- * { b: 1, c: 0}
- * ]
- *
- * OUTPUT:
- *
- * {
- * a: [6, undefined, 4, undefined],
- * b: [5, undefined, 3, 1 ],
- * c: [undefined, undefined, 2, 0 ]
- * }
- *
- * @param {!Array} array Array of items to be inverted. If opt_dictGetter
- * is not provided, all elements of the array must be either undefined,
- * or dictionaries.
- * @param {?(function(*): (!Object|undefined))=} opt_dictGetter Optional
- * function mapping defined elements of array to dictionaries.
- * @param {*=} opt_this Optional 'this' context for opt_dictGetter.
- */
- function invertArrayOfDicts(array, opt_dictGetter, opt_this) {
- opt_this = opt_this || this;
- const result = {};
- for (let i = 0; i < array.length; i++) {
- const item = array[i];
- if (item === undefined) continue;
- const dict = opt_dictGetter ? opt_dictGetter.call(opt_this, item) : item;
- if (dict === undefined) continue;
- for (const key in dict) {
- let valueList = result[key];
- if (valueList === undefined) {
- result[key] = valueList = new Array(array.length);
- }
- valueList[i] = dict[key];
- }
- }
- return result;
- }
-
- function setsEqual(a, b) {
- if (!(a instanceof Set) || !(b instanceof Set)) return false;
- if (a.size !== b.size) return false;
- // Avoid Array.from() here -- it creates garbage.
- for (const x of a) {
- if (!b.has(x)) return false;
- }
- return true;
- }
-
- return {
- compareArrays,
- getOnlyElement,
- getFirstElement,
- groupIntoMap,
- inPlaceFilter,
- invertArrayOfDicts,
- setsEqual,
- };
-});
-</script>
« no previous file with comments | « tracing/tracing/base/extension_registry.html ('k') | tracing/tracing/base/iteration_helpers_test.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698