vue-carousel-3d
Version:
Beautiful, flexible and touch supported 3D Carousel for Vue.js
51 lines (39 loc) • 1.01 kB
JavaScript
;
var camelCase = require('camel-case');
var rPrefixUnderscore = /^(_+)/;
function getter(key) {
return function() {
return this[key];
};
}
function setter(key) {
return function(value) {
this[key] = value;
};
}
function camelCaseKeys(obj) {
if (typeof obj !== 'object') throw new TypeError('obj must be an object!');
var keys = Object.keys(obj);
var result = {};
for (var i = 0, len = keys.length; i < len; i++) {
var key = keys[i];
var value = obj[key];
var match = key.match(rPrefixUnderscore);
var newKey;
if (match) {
var underscore = match[1];
newKey = underscore + camelCase(key.substring(underscore.length));
} else {
newKey = camelCase(key);
}
if (newKey === key) {
result[key] = value;
} else {
result[newKey] = value;
result.__defineGetter__(key, getter(newKey));
result.__defineSetter__(key, setter(newKey));
}
}
return result;
}
module.exports = camelCaseKeys;