You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					50 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					50 lines
				
				1.6 KiB
			| 
								 
											3 years ago
										 
									 | 
							
								const types = require('./types');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const INTS = () => [{ type: types.RANGE , from: 48, to: 57 }];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const WORDS = () => {
							 | 
						||
| 
								 | 
							
								  return [
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 95 },
							 | 
						||
| 
								 | 
							
								    { type: types.RANGE, from: 97, to: 122 },
							 | 
						||
| 
								 | 
							
								    { type: types.RANGE, from: 65, to: 90 }
							 | 
						||
| 
								 | 
							
								  ].concat(INTS());
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const WHITESPACE = () => {
							 | 
						||
| 
								 | 
							
								  return [
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 9 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 10 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 11 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 12 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 13 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 32 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 160 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 5760 },
							 | 
						||
| 
								 | 
							
								    { type: types.RANGE, from: 8192, to: 8202 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 8232 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 8233 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 8239 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 8287 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 12288 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 65279 }
							 | 
						||
| 
								 | 
							
								  ];
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const NOTANYCHAR = () => {
							 | 
						||
| 
								 | 
							
								  return [
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 10 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 13 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 8232 },
							 | 
						||
| 
								 | 
							
								    { type: types.CHAR, value: 8233 },
							 | 
						||
| 
								 | 
							
								  ];
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Predefined class objects.
							 | 
						||
| 
								 | 
							
								exports.words = () => ({ type: types.SET, set: WORDS(), not: false });
							 | 
						||
| 
								 | 
							
								exports.notWords = () => ({ type: types.SET, set: WORDS(), not: true });
							 | 
						||
| 
								 | 
							
								exports.ints = () => ({ type: types.SET, set: INTS(), not: false });
							 | 
						||
| 
								 | 
							
								exports.notInts = () => ({ type: types.SET, set: INTS(), not: true });
							 | 
						||
| 
								 | 
							
								exports.whitespace = () => ({ type: types.SET, set: WHITESPACE(), not: false });
							 | 
						||
| 
								 | 
							
								exports.notWhitespace = () => ({ type: types.SET, set: WHITESPACE(), not: true });
							 | 
						||
| 
								 | 
							
								exports.anyChar = () => ({ type: types.SET, set: NOTANYCHAR(), not: true });
							 |