50 lines
1.7 KiB
JavaScript
Executable File
50 lines
1.7 KiB
JavaScript
Executable File
angular.module('truncate', [])
|
|
.filter('characters', function () {
|
|
return function (input, chars, breakOnWord) {
|
|
if (isNaN(chars)) return input;
|
|
if (chars <= 0) return '';
|
|
if (input && input.length > chars) {
|
|
input = input.substring(0, chars);
|
|
|
|
if (!breakOnWord) {
|
|
var lastspace = input.lastIndexOf(' ');
|
|
//get last space
|
|
if (lastspace !== -1) {
|
|
input = input.substr(0, lastspace);
|
|
}
|
|
}else{
|
|
while(input.charAt(input.length-1) === ' '){
|
|
input = input.substr(0, input.length -1);
|
|
}
|
|
}
|
|
return input + '…';
|
|
}
|
|
return input;
|
|
};
|
|
})
|
|
.filter('splitcharacters', function() {
|
|
return function (input, chars) {
|
|
if (isNaN(chars)) return input;
|
|
if (chars <= 0) return '';
|
|
if (input && input.length > chars) {
|
|
var prefix = input.substring(0, chars/2);
|
|
var postfix = input.substring(input.length-chars/2, input.length);
|
|
return prefix + '...' + postfix;
|
|
}
|
|
return input;
|
|
};
|
|
})
|
|
.filter('words', function () {
|
|
return function (input, words) {
|
|
if (isNaN(words)) return input;
|
|
if (words <= 0) return '';
|
|
if (input) {
|
|
var inputWords = input.split(/\s+/);
|
|
if (inputWords.length > words) {
|
|
input = inputWords.slice(0, words).join(' ') + '…';
|
|
}
|
|
}
|
|
return input;
|
|
};
|
|
});
|