Skip to content

Instantly share code, notes, and snippets.

@roylory
Last active October 12, 2015 01:58
Show Gist options
  • Save roylory/ad50488e35c51402b88e to your computer and use it in GitHub Desktop.
Save roylory/ad50488e35c51402b88e to your computer and use it in GitHub Desktop.
ANGULAR_APP
.filter('toNoCase', function () {
var hasSpace = /\s/;
var hasSeparator = /[\W_]/;
var separatorSplitter = /[\W_]+(.|$)/g;
var camelSplitter = /(.)([A-Z]+)/g;
function unseparate(string) {
return string.replace(separatorSplitter, function (m, next) {
return next ? ' ' + next : '';
});
}
function uncamelize(string) {
return string.replace(camelSplitter, function (m, previous, uppers) {
return previous + ' ' + uppers.toLowerCase().split('').join(' ');
});
}
return function (str) {
if (typeof str !== 'string') return '';
if (hasSpace.test(str)) return str.toLowerCase();
if (hasSeparator.test(str)) return (unseparate(str) || str).toLowerCase();
return uncamelize(str).toLowerCase();
}
})
.filter('toSpaceCase', function (toNoCaseFilter) {
return function (str) {
return toNoCaseFilter(str).replace(/[\W_]+(.|$)/g, function (matches, match) {
return match ? ' ' + match : '';
});
}
})
.filter('toSnakeCase', function (toSpaceCaseFilter) {
return function (str) {
return toSpaceCaseFilter(str).replace(/\s/g, '-');
}
})
.filter('toCamelCase', function (toSpaceCaseFilter) {
return function (str) {
return toSpaceCaseFilter(str).replace(/\s(\w)/g, function (matches, letter) {
return letter.toUpperCase();
});
}
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment