mirror of
https://github.com/abrendan/MicDropMessages.git
synced 2025-08-25 22:12:02 +02:00
Initial commit
This commit is contained in:
75
node_modules/dasherize/index.js
generated
vendored
Normal file
75
node_modules/dasherize/index.js
generated
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
'use strict';
|
||||
|
||||
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 dashCase(str) {
|
||||
return str.replace(/[A-Z](?:(?=[^A-Z])|[A-Z]*(?=[A-Z][^A-Z]|$))/g, function (s, i) {
|
||||
return (i > 0 ? '-' : '') + s.toLowerCase();
|
||||
});
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
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 = dashCase(key);
|
||||
acc[camel] = walk(obj[key]);
|
||||
return acc;
|
||||
}, {});
|
||||
}
|
||||
|
||||
module.exports = function (obj) {
|
||||
if (typeof obj === 'string') {
|
||||
return dashCase(obj);
|
||||
}
|
||||
return walk(obj);
|
||||
};
|
Reference in New Issue
Block a user