Skip to content

Instantly share code, notes, and snippets.

@dcsg
Created April 24, 2012 10:31
Show Gist options
  • Select an option

  • Save dcsg/2478654 to your computer and use it in GitHub Desktop.

Select an option

Save dcsg/2478654 to your computer and use it in GitHub Desktop.
Truncate Filter for AngularJS v1.0
// add the filter to your application module
angular.module('yourAppName', ['filters']);
/**
* Truncate Filter
* @Param string
* @Param int, default = 10
* @Param string, default = "..."
* @return string
*/
angular.module('filters', []).
filter('truncate', function () {
return function (text, length, end) {
if (isNaN(length))
length = 10;
if (end === undefined)
end = "...";
if (text.length <= length || text.length - end.length <= length) {
return text;
}
else {
return String(text).substring(0, length-end.length) + end;
}
};
});
/**
* Example - see the jsfiddle: http://jsfiddle.net/tUyyx/
*
* var myText = "This is an example.";
*
* {{myText|truncate}}
* {{myText|truncate:5}}
* {{myText|truncate:25:" ->"}}
*
* Output
* "This is..."
* "Th..."
* "This is an e ->"
*
*/
@scottywakefield
Copy link
Copy Markdown

Brilliant!

I also added a check for strings as I might be passing numeric as well. I just used angular.isString(text):

if (!angular.isString(text))
  return text;

@isRuslan
Copy link
Copy Markdown

You could probably use:

length = length || 10;
end = end || '...';

instead of:

if (isNaN(length))
  length = 10;

if (end === undefined)
  end = "...";

@mohsen1
Copy link
Copy Markdown

mohsen1 commented Jul 29, 2014

Use unicode character() for ellipsis instead of dot-dot-dot(...). This helps accessibility. VoiceOver will not read "dot dot dot" and handles it better.

@SilviaIenciu
Copy link
Copy Markdown

Thanks for your work. Did you also licensed this?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment