| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- 'use strict';
- module.exports = function (obj) {
- if (typeof obj === 'string') { return camelCase(obj); }
- return walk(obj);
- };
- function walk(obj) {
- if (!obj || typeof obj !== 'object') { return obj; }
- if (isDate(obj) || isRegex(obj)) { return obj; }
- if (isArray(obj)) { return map(obj, walk); }
- return reduce(objectKeys(obj), function (acc, key) {
- var camel = camelCase(key);
- acc[camel] = walk(obj[key]);
- return acc;
- }, {});
- }
- function camelCase(str) {
- return str.replace(/[_.-](\w|$)/g, function (_, x) {
- return x.toUpperCase();
- });
- }
- var isArray = Array.isArray || function (obj) {
- return Object.prototype.toString.call(obj) === '[object Array]';
- };
- var isDate = function (obj) {
- return Object.prototype.toString.call(obj) === '[object Date]';
- };
- var isRegex = function (obj) {
- return Object.prototype.toString.call(obj) === '[object RegExp]';
- };
- var has = Object.prototype.hasOwnProperty;
- var objectKeys = Object.keys || function (obj) {
- var keys = [];
- for (var key in obj) {
- if (has.call(obj, key)) { keys.push(key); }
- }
- return keys;
- };
- function map(xs, f) {
- if (xs.map) { return xs.map(f); }
- var res = [];
- for (var i = 0; i < xs.length; i++) {
- res.push(f(xs[i], i));
- }
- return res;
- }
- function reduce(xs, f, acc) {
- if (xs.reduce) { return xs.reduce(f, acc); }
- for (var i = 0; i < xs.length; i++) {
- acc = f(acc, xs[i], i);
- }
- return acc;
- }
|