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.
		
		
		
		
		
			
		
			
				
					40 lines
				
				969 B
			
		
		
			
		
	
	
					40 lines
				
				969 B
			| 
								 
											3 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const fs = require('fs');
							 | 
						||
| 
								 | 
							
								const path = require('path');
							 | 
						||
| 
								 | 
							
								const bitfield = require('sparse-bitfield');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* eslint-disable-next-line security/detect-non-literal-fs-filename */
							 | 
						||
| 
								 | 
							
								const memory = fs.readFileSync(path.resolve(__dirname, '../code-points.mem'));
							 | 
						||
| 
								 | 
							
								let offset = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Loads each code points sequence from buffer.
							 | 
						||
| 
								 | 
							
								 * @returns {bitfield}
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								function read() {
							 | 
						||
| 
								 | 
							
								  const size = memory.readUInt32BE(offset);
							 | 
						||
| 
								 | 
							
								  offset += 4;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  const codepoints = memory.slice(offset, offset + size);
							 | 
						||
| 
								 | 
							
								  offset += size;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return bitfield({ buffer: codepoints });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const unassigned_code_points = read();
							 | 
						||
| 
								 | 
							
								const commonly_mapped_to_nothing = read();
							 | 
						||
| 
								 | 
							
								const non_ASCII_space_characters = read();
							 | 
						||
| 
								 | 
							
								const prohibited_characters = read();
							 | 
						||
| 
								 | 
							
								const bidirectional_r_al = read();
							 | 
						||
| 
								 | 
							
								const bidirectional_l = read();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								module.exports = {
							 | 
						||
| 
								 | 
							
								  unassigned_code_points,
							 | 
						||
| 
								 | 
							
								  commonly_mapped_to_nothing,
							 | 
						||
| 
								 | 
							
								  non_ASCII_space_characters,
							 | 
						||
| 
								 | 
							
								  prohibited_characters,
							 | 
						||
| 
								 | 
							
								  bidirectional_r_al,
							 | 
						||
| 
								 | 
							
								  bidirectional_l,
							 | 
						||
| 
								 | 
							
								};
							 |