benjamincharity
2/28/2014 - 5:46 PM

Sentance case filter for Angular. Solution below requires Underscore.js

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(", ")