Skip to content

Instantly share code, notes, and snippets.

@krabello
Created October 19, 2017 04:00
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 krabello/56a836517a46218ca1e4dbe1603dc081 to your computer and use it in GitHub Desktop.
Save krabello/56a836517a46218ca1e4dbe1603dc081 to your computer and use it in GitHub Desktop.
Titlecase Angular Pipe
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({
name: 'titlecase'
})
export class TitlecasePipe implements PipeTransform {
transform(value: any): any {
if (!value) {
return null;
}
// short list
const prepositions = [
'a', 'an', 'and', 'as', 'at', 'but', 'by', 'en', 'for', 'if', 'in', 'nor', 'of', 'on', 'or', 'per', 'the', 'to', 'via'
];
const words = value.split(' ');
for (let i = 0; i < words.length; i++) {
if (i > 0 && prepositions.includes(words[i].toLowerCase())) {
words[i] = words[i].toLowerCase();
} else {
words[i] = words[i].substr(0, 1).toUpperCase() + words[i].substr(1).toLowerCase();
}
}
return words.join(' ');
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment