truncate.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. angular.module('truncate', [])
  2. .filter('characters', function () {
  3. return function (input, chars, breakOnWord) {
  4. if (isNaN(chars)) return input;
  5. if (chars <= 0) return '';
  6. if (input && input.length > chars) {
  7. input = input.substring(0, chars);
  8. if (!breakOnWord) {
  9. var lastspace = input.lastIndexOf(' ');
  10. //get last space
  11. if (lastspace !== -1) {
  12. input = input.substr(0, lastspace);
  13. }
  14. }else{
  15. while(input.charAt(input.length-1) === ' '){
  16. input = input.substr(0, input.length -1);
  17. }
  18. }
  19. return input + '…';
  20. }
  21. return input;
  22. };
  23. })
  24. .filter('splitcharacters', function() {
  25. return function (input, chars) {
  26. if (isNaN(chars)) return input;
  27. if (chars <= 0) return '';
  28. if (input && input.length > chars) {
  29. var prefix = input.substring(0, chars/2);
  30. var postfix = input.substring(input.length-chars/2, input.length);
  31. return prefix + '...' + postfix;
  32. }
  33. return input;
  34. };
  35. })
  36. .filter('words', function () {
  37. return function (input, words) {
  38. if (isNaN(words)) return input;
  39. if (words <= 0) return '';
  40. if (input) {
  41. var inputWords = input.split(/\s+/);
  42. if (inputWords.length > words) {
  43. input = inputWords.slice(0, words).join(' ') + '…';
  44. }
  45. }
  46. return input;
  47. };
  48. });