function tokenizeSubstring( substr ) {
	var prefixes = [];
	var suffixes = [];
	var match;
	var done;
	var res;

	do {
		if (
			!EMOJIS[ substr ] &&
			!ABBRS[ substr ] &&
			!CONTRACT[ substr ]
		) {
			match = substr.split( REGEXP_PREFIXES );
			if ( match.length > 1 ) {
				prefixes.push( match[ 1 ] );
				substr = match[ 2 ];
			}
			else {
				match = substr.split( REGEXP_SUFFIXES );
				if ( match.length > 1 ) {
					substr = match[ 0 ];
					suffixes.unshift( match[ 1 ] );
				} else {
					done = true;
				}
			}
		}
		else {
			done = true;
		}
	} while ( !done );

	res = prefixes;
	if ( substr ) {
		res.push( substr );
	}

	// If the last suffix is an ellipsis, move it to the front of the suffix array:
	if ( suffixes[ suffixes.length-1 ] === '...' ) {
		suffixes.pop();
		suffixes.unshift( '...' );
	}
	extend( res, suffixes );
	return res;
}
Tokenizes a substring.

@private
@param {string} substr - input string
@returns {Array} token array

@example
var str = '(never)';
var out = tokenizeSubstring( str );
// returns [ '(', 'never', ')' ]