123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- '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));
|