Skip to content

Instantly share code, notes, and snippets.

@timruffles
Last active May 21, 2020 21:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timruffles/5910608 to your computer and use it in GitHub Desktop.
Save timruffles/5910608 to your computer and use it in GitHub Desktop.
snake to camel & visa-versa for JS
(function() {
var _e = {};
_e.isPlainObject = function(obj) {
return obj && obj.constructor === Object;
};
_e.camelToSnakeCase = function(string) {
return string.replace(/\B[A-Z]/g,function(word) {
return "_" + word.toLowerCase();
}).toLowerCase();
};
_e.snakeToCamelCase = function(str) {
return str.replace(/_+(\w){1}|-+(\w){1}/g, function(match, group1, group2) {
var letter = group1 || group2;
return letter.toUpperCase();
});
};
_e.objectTransform = function(fn,object) {
if(_.isArray(object)) {
return _.map(object,function(member) {
return _e.objectTransform(fn,member);
})
} else if (_.isPlainObject(object)) {
return _.reduce(object,function(transformed,v,k) {
transformed[fn(k)] = _e.objectTransform(fn,v);
return transformed;
},{});
} else {
return object;
}
};
_e.snakeToCamelCaseKeys = _.partial(_e.objectTransform,_e.snakeToCamelCase);
_e.camelToSnakeCaseKeys = _.partial(_e.objectTransform,_e.camelToSnakeCase);
_.mixin(_e);
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment