Sentance case filter for Angular. Solution below requires Underscore.js
<p>{{ myScopeVariable | sentence_case }}</p>
myModule.filter("sentence_case", function() {
return _.memoize(function(x) {
var capitalize, fmt;
if (!angular.isString(x)) {
return;
}
x = x.toLowerCase();
capitalize = function(str) {
str += '';
return str.charAt(0).toUpperCase() + str.slice(1);
};
fmt = function(y) {
var capitalized;
return capitalized = capitalize($.trim(y));
};
x = _.map(x.split("."), function(z) {
return fmt(z);
}).join(". ");
x = _.map(x.split("!"), function(z) {
return fmt(z);
}).join("! ");
return x = _.map(x.split(","), function(z) {
return z;
}).join(", ");
});
});
myModule.filter "sentence_case", ->
_.memoize (x) ->
return unless angular.isString(x)
x = x.toLowerCase()
capitalize = (str) ->
str += ''
return str.charAt(0).toUpperCase() + str.slice(1)
fmt = (y) ->
capitalized = capitalize($.trim(y))
x = _.map(x.split("."), (z) -> fmt(z)).join(". ")
x = _.map(x.split("!"), (z) -> fmt(z)).join("! ")
x = _.map(x.split(","), (z) -> z).join(", ")