From 688f5051e67ec37c75dacf837e40526544ee5c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Paul=20O=E2=80=99Shannessy?= Date: Tue, 27 Aug 2013 14:43:46 -0700 Subject: [PATCH] Sync objMap from upstream --- src/vendor/core/objMap.js | 47 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 src/vendor/core/objMap.js diff --git a/src/vendor/core/objMap.js b/src/vendor/core/objMap.js new file mode 100644 index 0000000000..b477c9290f --- /dev/null +++ b/src/vendor/core/objMap.js @@ -0,0 +1,47 @@ +/** + * Copyright 2013 Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * @providesModule objMap + */ + +"use strict"; + +/** + * For each key/value pair, invokes callback func and constructs a resulting + * object which contains, for every key in obj, values that are the result of + * of invoking the function: + * + * func(value, key, iteration) + * + * @param {?object} obj Object to map keys over + * @param {function} func Invoked for each key/val pair. + * @param {?*} context + * @return {?object} Result of mapping or null if obj is falsey + */ +function objMap(obj, func, context) { + if (!obj) { + return null; + } + var i = 0; + var ret = {}; + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + ret[key] = func.call(context, obj[key], key, i++); + } + } + return ret; +} + +module.exports = objMap;