54 lines
		
	
	
		
			978 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			978 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /*
 | |
| 	MIT License http://www.opensource.org/licenses/mit-license.php
 | |
| 	Author Tobias Koppers @sokra
 | |
| */
 | |
| 
 | |
| "use strict";
 | |
| 
 | |
| // \n = 10
 | |
| // ; = 59
 | |
| // { = 123
 | |
| // } = 125
 | |
| // <space> = 32
 | |
| // \r = 13
 | |
| // \t = 9
 | |
| 
 | |
| /**
 | |
|  * @param {string} str string
 | |
|  * @returns {string[] | null} array of string separated by potential tokens
 | |
|  */
 | |
| const splitIntoPotentialTokens = (str) => {
 | |
| 	const len = str.length;
 | |
| 	if (len === 0) return null;
 | |
| 	const results = [];
 | |
| 	let i = 0;
 | |
| 	while (i < len) {
 | |
| 		const start = i;
 | |
| 		block: {
 | |
| 			let cc = str.charCodeAt(i);
 | |
| 			while (cc !== 10 && cc !== 59 && cc !== 123 && cc !== 125) {
 | |
| 				if (++i >= len) break block;
 | |
| 				cc = str.charCodeAt(i);
 | |
| 			}
 | |
| 			while (
 | |
| 				cc === 59 ||
 | |
| 				cc === 32 ||
 | |
| 				cc === 123 ||
 | |
| 				cc === 125 ||
 | |
| 				cc === 13 ||
 | |
| 				cc === 9
 | |
| 			) {
 | |
| 				if (++i >= len) break block;
 | |
| 				cc = str.charCodeAt(i);
 | |
| 			}
 | |
| 			if (cc === 10) {
 | |
| 				i++;
 | |
| 			}
 | |
| 		}
 | |
| 		results.push(str.slice(start, i));
 | |
| 	}
 | |
| 	return results;
 | |
| };
 | |
| 
 | |
| module.exports = splitIntoPotentialTokens;
 |