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.
		
		
		
		
		
			
		
			
				
					
					
						
							52 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							52 lines
						
					
					
						
							1.3 KiB
						
					
					
				| 'use strict';
 | |
| 
 | |
| const bitfield = require('sparse-bitfield');
 | |
| const codePoints = require('./lib/code-points');
 | |
| 
 | |
| const unassigned_code_points = bitfield();
 | |
| const commonly_mapped_to_nothing = bitfield();
 | |
| const non_ascii_space_characters = bitfield();
 | |
| const prohibited_characters = bitfield();
 | |
| const bidirectional_r_al = bitfield();
 | |
| const bidirectional_l = bitfield();
 | |
| 
 | |
| /**
 | |
|  * Iterare over code points and
 | |
|  * convert it into an buffer.
 | |
|  * @param {bitfield} bits
 | |
|  * @param {Array} src
 | |
|  * @returns {Buffer}
 | |
|  */
 | |
| function traverse(bits, src) {
 | |
|   for (const code of src.keys()) {
 | |
|     bits.set(code, true);
 | |
|   }
 | |
| 
 | |
|   const buffer = bits.toBuffer();
 | |
|   return Buffer.concat([createSize(buffer), buffer]);
 | |
| }
 | |
| 
 | |
| /**
 | |
|  * @param {Buffer} buffer
 | |
|  * @returns {Buffer}
 | |
|  */
 | |
| function createSize(buffer) {
 | |
|   const buf = Buffer.alloc(4);
 | |
|   buf.writeUInt32BE(buffer.length);
 | |
| 
 | |
|   return buf;
 | |
| }
 | |
| 
 | |
| const memory = [];
 | |
| 
 | |
| memory.push(
 | |
|   traverse(unassigned_code_points, codePoints.unassigned_code_points),
 | |
|   traverse(commonly_mapped_to_nothing, codePoints.commonly_mapped_to_nothing),
 | |
|   traverse(non_ascii_space_characters, codePoints.non_ASCII_space_characters),
 | |
|   traverse(prohibited_characters, codePoints.prohibited_characters),
 | |
|   traverse(bidirectional_r_al, codePoints.bidirectional_r_al),
 | |
|   traverse(bidirectional_l, codePoints.bidirectional_l)
 | |
| );
 | |
| 
 | |
| process.stdout.write(Buffer.concat(memory));
 |