mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-08 09:55:32 +00:00
51 lines
1.6 KiB
TypeScript
51 lines
1.6 KiB
TypeScript
/*
|
|
Copyright: Copyright (C) 2022 SIL International.
|
|
Authors: srl295
|
|
This tool generates a .h version of the keyboardprocessor_ldml.ts file
|
|
*/
|
|
|
|
import { constants } from './keyboardprocessor_ldml';
|
|
|
|
const keys = Object.keys(constants);
|
|
keys.sort();
|
|
console.log(`
|
|
/*
|
|
Copyright: Copyright (C) 2022 SIL International.
|
|
Authors: srl295
|
|
This file provides constants for the KMX Plus (LDML support) binary format,
|
|
to be shared between TypeScript and C++ via the generator (below)
|
|
*/
|
|
|
|
//
|
|
// Generated File - do not edit
|
|
//
|
|
// This file is generated by core/tools/ldml-const-builder/build.sh
|
|
// based on core/include/ldml/keyboardprocessor_ldml.ts
|
|
//
|
|
|
|
#pragma once
|
|
`);
|
|
|
|
for (const key of keys) {
|
|
const value = constants[key];
|
|
const upkey = key.toUpperCase();
|
|
const type = typeof value;
|
|
if (type === 'number') {
|
|
console.log(`#define LDML_${upkey} 0x${value.toString(16).toUpperCase()}`);
|
|
} else if (type === 'string') {
|
|
console.log(`#define LDML_${upkey} "${value}"`);
|
|
} else if (key === 'section') {
|
|
// handle section table
|
|
const subkeys = Object.keys(value);
|
|
subkeys.sort();
|
|
for (const subkey of subkeys) {
|
|
const upsubkey = subkey.toUpperCase();
|
|
const subvalue = subkeys[subkey];
|
|
const asnum = constants.hex_section_id(subkey);
|
|
console.log(`#define LDML_${upkey}ID_${upsubkey} 0x${asnum.toString(16).toUpperCase()} /* "${subkey}" */`);
|
|
console.log(`#define LDML_${upkey}NAME_${upsubkey} "${subkey}"`);
|
|
}
|
|
} else if (type !== 'function') {
|
|
console.error(`Unrecognized key ${key}`);
|
|
}
|
|
}
|