// Copyright 2013 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview Some utility functions that don't belong anywhere else in the
* code.
*/
/**
* Calls a function for each element in an object/map/hash.
*
* @param obj The object to iterate over.
* @param f The function to call on every value in the object. F should have
* the following arguments: f(value, key, object) where value is the value
* of the property, key is the corresponding key, and obj is the object that
* was passed in originally.
* @param optObj The object use as 'this' within f.
*/
export function objectForEach(obj, f, optObj) {
let key;
for (key in obj) {
if (obj.hasOwnProperty(key)) {
f.call(optObj, obj[key], key, obj);
}
}
}
export function millisecondsToString(timeMillis) {
function pad(num, len) {
num = num.toString();
while (num.length < len) {
num = '0' + num;
}
return num;
}
const date = new Date(timeMillis);
return pad(date.getUTCHours(), 2) + ':' + pad(date.getUTCMinutes(), 2) + ':' +
pad(date.getUTCSeconds(), 2) + '.' +
pad((date.getMilliseconds()) % 1000, 3);
}