Teasertext mit JS

Um aus einem langen Text einen Teasertext zu extrahieren, hilft diese Funktion. Optional kann die Länge (default 120), das Trennzeichen und die Zeichenfolge angegeben werden, welche hinter dem Teasertext erscheinen soll.

/**
 * @param {string} text 
 * Necessary
 * @param {int} length 
 * Optional. If not specified, 120 is used
 * @param {string} seperator 
 * Optional. If not specified, the next character after the separator that is in the array seperators is used
 * @param {string} dotDotDot 
 * Optional. If nothing is used, three dots are attached to the teaser text
 * @returns the Teasertext
 */
 const getTeaser = function(text, length, seperator, dotDotDot) {
	let newText = [];
	let slicerCounts = [];
	let seperators = ['. ', ', ', ': ', '; ', '- '];
	let slicerCount = 0;
	seperator = (typeof seperator !== 'undefined') ? seperator : seperators;
	dotDotDot = (typeof dotDotDot !== 'undefined') ? dotDotDot : '...';
	length = (typeof length !== 'undefined') ? length : 120;
	newText[0] = text.substr(0, length);
	newText[1] = text.substr(length);
	if (Array.isArray(seperator)) {
		for (let index in seperator) {
			if (newText[1].indexOf(seperator[index])!==-1) {
				slicerCounts[index] = newText[1].indexOf(seperator[index]);
			}
		}
		if(slicerCounts.length!==0){
			slicerCount = Math.min.apply(Math, slicerCounts);
		}
		
	} else {
		slicerCount = newText[1].indexOf(seperator);
	}
	if(slicerCount===0){
		return newText[0] + dotDotDot;
	}
	return newText[0] + newText[1].substr(0, slicerCount) + dotDotDot;
}