Code coverage report for src/helpers/string.coffee

Statements: 95% (19 / 20)      Branches: 76.47% (13 / 17)      Functions: 100% (4 / 4)      Lines: 95% (19 / 20)      Ignored: none     

All files » src/helpers/ » string.coffee
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38         56× 56× 56×   56× 56×     36× 36× 36× 10×   26×       19×   16×     16×          
var SMALL_WORDS, _;
 
_ = require('underscore');
 
SMALL_WORDS = /^(a|an|and|as|at|but|by|en|for|if|in|nor|of|on|or|per|the|to|vs?\.?|via)$/i;
 
module.exports = {
  capitalize: function(string, lowerOthers) {
    var other;
    Eif (lowerOthers == null) {
      lowerOthers = true;
    }
    other = lowerOthers ? string.substring(1).toLowerCase() : string.substring(1);
    return string.charAt(0).toUpperCase() + other;
  },
  getNumberAndStringOrder: function(string) {
    var parsedInt;
    parsedInt = parseFloat(string);
    if (_.isNaN(parsedInt)) {
      return string.toLowerCase();
    } else {
      return parsedInt;
    }
  },
  titleize: function(string) {
    return string.replace(/_/g, ' ').replace(/[A-Za-z0-9\u00C0-\u00FF]+[^\s-]*/g, function(match, index, title) {
      if (index > 0 && index + match.length !== title.length && match.search(SMALL_WORDS) > -1 && title.charAt(index - 2) !== ":" && (title.charAt(index + match.length) !== '-' || title.charAt(index - 1) === '-') && title.charAt(index - 1).search(/[^\s-]/) < 0) {
        return match.toLowerCase();
      }
      Iif (match.substr(1).search(/[A-Z]|\../) > -1) {
        return match;
      }
      return match.charAt(0).toUpperCase() + match.substr(1);
    });
  }
};