Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
72 changes: 36 additions & 36 deletions index.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import fs from 'node:fs/promises';
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import jsesc from 'jsesc';
Expand Down Expand Up @@ -28,11 +28,11 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url));

const templatePath = path.resolve(__dirname, 'templates');
const staticPath = path.resolve(__dirname, 'static');
const compileReadMe = template(await fs.readFile(
const compileReadMe = template(fs.readFileSync(
path.resolve(templatePath, 'README.md'),
'utf-8'
));
const compilePackage = template(await fs.readFile(
const compilePackage = template(fs.readFileSync(
path.resolve(templatePath, 'package.json'),
'utf-8'
));
Expand All @@ -42,7 +42,7 @@ const generateData = async (version) => {
const dirMap = {};
console.log('Generating data for Unicode v%s…', version);
console.log('Parsing Unicode v%s categories…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parsers.parseDerivedGeneralCategory(version),
'type': (category) => {
Expand All @@ -53,162 +53,162 @@ const generateData = async (version) => {
},
}));
console.log('Parsing Unicode v%s `Bidi_Class`', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseBidiClass(version),
'type': 'Bidi_Class',
}));
console.log('Parsing Unicode v%s `Script`…', version);
const scriptsMap = await parsers.parseScripts(version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': scriptsMap,
'type': 'Script',
}));
console.log('Parsing Unicode v%s `Script_Extensions`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseScriptExtensions(version, scriptsMap),
'type': 'Script_Extensions',
}));
console.log('Parsing Unicode v%s properties…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parsers.parseProperties(version),
'type': 'Binary_Property',
}));
console.log('Parsing Unicode v%s derived core properties…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parsers.parseDerivedCoreProperties(version),
'type': 'Binary_Property',
}));
console.log('Parsing Unicode v%s derived binary properties…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parsers.parseDerivedBinaryProperties(version),
'type': 'Binary_Property',
}));
console.log('Parsing Unicode v%s derived normalization properties…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parsers.parseDerivedNormalizationProperties(version),
'type': 'Binary_Property',
}));
console.log('Parsing Unicode v%s composition exclusions…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseCompositionExclusions(version),
'type': 'Binary_Property',
}));
console.log('Parsing Unicode v%s `Case_Folding`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseCaseFolding(version),
'type': 'Case_Folding',
}));
console.log('Parsing Unicode v%s `Block`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parsers.parseBlocks(version),
'type': 'Block',
}));
console.log('Parsing Unicode v%s `Bidi_Mirroring_Glyph`', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parsers.parseMirroring(version),
'type': 'Bidi_Mirroring_Glyph',
}));
console.log('Parsing Unicode v%s bidi brackets…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseBidiBrackets(version),
'type': 'Bidi_Paired_Bracket_Type',
}));
{
const InPCName = +version.split('.')[0] >= 8 ? 'Indic_Positional_Category' : 'Indic_Matra_Category';
console.log('Parsing Unicode v%s `%s`…', version, InPCName);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseIndicPositionalCategory(version),
'type': InPCName,
}));
}
console.log('Parsing Unicode v%s `Indic_Syllabic_Category`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseIndicSyllabicCategory(version),
'type': 'Indic_Syllabic_Category',
}));
console.log('Parsing Unicode v%s `Line_Break`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseLineBreak(version),
'type': 'Line_Break',
}));
console.log('Parsing Unicode v%s `Grapheme_Cluster_Break`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseGraphemeWordSentenceBreak(version, 'grapheme-cluster-break'),
'type': 'Grapheme_Cluster_Break',
}));
console.log('Parsing Unicode v%s `Word_Break`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseGraphemeWordSentenceBreak(version, 'word-break'),
'type': 'Word_Break',
}));
console.log('Parsing Unicode v%s `Sentence_Break`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseGraphemeWordSentenceBreak(version, 'sentence-break'),
'type': 'Sentence_Break',
}));
console.log('Parsing Unicode v%s `Vertical_Orientation`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseVerticalOrientation(version),
'type': 'Vertical_Orientation',
}));
console.log('Parsing Unicode v%s `Joining_Type`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseArabicShaping(version),
'type': 'Joining_Type',
}));
console.log('Parsing Unicode v%s binary emoji properties…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseEmoji(version),
'type': 'Binary_Property',
}));
console.log('Parsing Unicode v%s emoji sequence properties…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseEmojiSequences(version),
'type': 'Sequence_Property',
}));
console.log('Parsing Unicode v%s `Names`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseNames(version),
'type': 'Names',
}));
console.log('Parsing Unicode v%s Aliases…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseNameAliases(version),
'type': 'Names',
'subType': 'name-aliases',
}));
console.log('Parsing Unicode v%s simple case mappings…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseSimpleCaseMapping(version),
'type': 'Simple_Case_Mapping',
}));
console.log('Parsing Unicode v%s `Special_Casing`…', version);
utils.extend(dirMap, await utils.writeFiles({
utils.extend(dirMap, utils.writeFiles({
'version': version,
'map': await parseSpecialCasing(version),
'type': 'Special_Casing',
Expand All @@ -219,29 +219,29 @@ const generateData = async (version) => {
dirMap[property] = dirMap[property].sort();
}
}
await fs.writeFile(
fs.writeFileSync(
path.resolve(__dirname, `output/unicode-${version}/README.md`),
compileReadMe({
'version': version,
'dirs': dirMap,
'regenerateExample': '<%= set.toString() %>',
})
);
await fs.writeFile(
fs.writeFileSync(
path.resolve(__dirname, `output/unicode-${version}/index.mjs`),
compileIndex({ 'version': version, 'data': jsesc(dirMap) })
);
await fs.writeFile(
fs.writeFileSync(
path.resolve(__dirname, `output/unicode-${version}/index.d.mts`),
Object.keys(dirMap)
.map((key) => `export const ${key}: string[];`)
.join('\n')
);
await fs.writeFile(
fs.writeFileSync(
path.resolve(__dirname, `output/unicode-${version}/package.json`),
compilePackage({ 'version': version })
);
await fs.mkdir(
fs.mkdirSync(
path.resolve(__dirname, `output/unicode-${version}/.github/workflows`),
{
recursive: true,
Expand All @@ -258,7 +258,7 @@ const generateData = async (version) => {
'decode-ranges.d.mts',
];
for (const file of staticFiles) {
await fs.copyFile(
fs.copyFileSync(
path.resolve(staticPath, file),
path.resolve(__dirname, `output/unicode-${version}/${file}`)
);
Expand Down
4 changes: 2 additions & 2 deletions scripts/download.mjs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import fs from 'node:fs/promises';
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
import resources from '../data/resources.mjs';
Expand All @@ -17,7 +17,7 @@ const download = async (url, version, type) => {
if (!res.ok) {
throw new Error(`Failed to download ${url}: ${res.status} ${res.statusText}`);
}
await fs.writeFile(file, Buffer.from(await res.arrayBuffer()));
fs.writeFileSync(file, Buffer.from(await res.arrayBuffer()));
};

const parallelLimit = async (tasks, limit) => {
Expand Down
2 changes: 1 addition & 1 deletion scripts/parse-arabic-shaping.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const findCanonicalName = (shortName) => {
};

const parseArabicShaping = async (version) => {
const source = await utils.readDataFile(version, 'arabic-shaping');
const source = utils.readDataFile(version, 'arabic-shaping');
if (!source) {
return;
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/parse-bidi-brackets.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ const parseBidiBrackets = async (version) => {
'Close': regenerate(),
'None': regenerate().addRange(0, 0x10FFFF),
};
const source = await utils.readDataFile(version, 'bidi-brackets');
const source = utils.readDataFile(version, 'bidi-brackets');
if (!source) {
return;
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/parse-bidi-class.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import regenerate from 'regenerate';
const bidiAliases = valueAliases.get('Bidi_Class');

const parseBidiClass = async (version) => {
const source = await utils.readDataFile(version, 'database');
const source = utils.readDataFile(version, 'database');
if (!source) {
return;
}
Expand Down
10 changes: 5 additions & 5 deletions scripts/parse-blocks-scripts-properties.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ const initialMapForType = (type) => {
*/
const parseBlocksScriptsProperties = async (type, version) => {
const map = initialMapForType(type);
const source = await utils.readDataFile(version, type);
const source = utils.readDataFile(version, type);
if (!source) {
return;
}
Expand Down Expand Up @@ -106,7 +106,7 @@ const parseDerivedBinaryProperties = async (version) => {
if (version === '3.1.1' || version === '3.1.0' || version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3) {
// Unicode <= 3.1.1 does not provide derived-binary-properties,
// so we should derive Bidi_Mirrored from the UnicodeData.
const source = await utils.readDataFile(version, 'database');
const source = utils.readDataFile(version, 'database');
if (!source) {
return;
}
Expand Down Expand Up @@ -137,7 +137,7 @@ const parseDerivedGeneralCategory = async (version) => {
) {
// Unicode <= 3.0.1 does not provide derived-general-category,
// so we should derive General_Category from the UnicodeData.
const source = await utils.readDataFile(version, 'database');
const source = utils.readDataFile(version, 'database');
if (!source) {
return;
}
Expand Down Expand Up @@ -257,7 +257,7 @@ const parseDerivedGeneralCategory = async (version) => {

const parseBlocks = async (version) => {
if (version === '3.0.1' || version === '3.0.0' || parseInt(version.split('.')[0], 10) < 3) {
const source = await utils.readDataFile(version, 'blocks');
const source = utils.readDataFile(version, 'blocks');
if (!source) {
return;
}
Expand Down Expand Up @@ -285,7 +285,7 @@ const parseProperties = async (version) => {
version === '3.0.0' ||
parseInt(version.split('.')[0], 10) < 3
) {
const source = await utils.readDataFile(version, 'properties');
const source = utils.readDataFile(version, 'properties');
if (!source) {
return;
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/parse-case-folding.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import utils from './utils.mjs';

const parseCaseFolding = async (version) => {
const caseFoldingMap = {};
const source = await utils.readDataFile(version, 'case-folding');
const source = utils.readDataFile(version, 'case-folding');
if (!source) {
return;
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/parse-composition-exclusions.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import regenerate from 'regenerate';
import utils from './utils.mjs';

const parseCompositionExclusions = async (version) => {
const source = await utils.readDataFile(version, 'composition-exclusions');
const source = utils.readDataFile(version, 'composition-exclusions');
if (!source) {
return;
}
Expand Down
4 changes: 2 additions & 2 deletions scripts/parse-emoji-sequences.mjs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import utils from './utils.mjs';

const parseEmojiSequencesWithId = async ({ version, id }) => {
const source = await utils.readDataFile(version, id);
const source = utils.readDataFile(version, id);
if (!source) {
return;
}
Expand Down Expand Up @@ -47,7 +47,7 @@ const parseEmojiSequencesWithId = async ({ version, id }) => {
};

const parseEmojiTestData = async ({ version }) => {
const source = await utils.readDataFile(version, 'emoji-test');
const source = utils.readDataFile(version, 'emoji-test');
if (!source) {
return;
}
Expand Down
2 changes: 1 addition & 1 deletion scripts/parse-emoji.mjs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import utils from './utils.mjs';

const parseEmoji = async (version) => {
const source = await utils.readDataFile(version, 'emoji');
const source = utils.readDataFile(version, 'emoji');
if (!source) {
return;
}
Expand Down
Loading
Loading