47 lines
1.5 KiB
Plaintext
47 lines
1.5 KiB
Plaintext
type EmojiStatus = 'component' | 'fully-qualified' | 'minimally-qualified' | 'unqualified';
|
|
declare const componentStatus: EmojiStatus;
|
|
/**
|
|
* Base item
|
|
*/
|
|
interface BaseEmojiTestDataItem {
|
|
group: string;
|
|
subgroup: string;
|
|
version: string;
|
|
}
|
|
/**
|
|
* Test data item
|
|
*/
|
|
interface EmojiTestDataItem extends BaseEmojiTestDataItem {
|
|
sequence: number[];
|
|
emoji: string;
|
|
status: EmojiStatus;
|
|
name: string;
|
|
}
|
|
type EmojiTestData = Record<string, EmojiTestDataItem>;
|
|
/**
|
|
* Get all emoji sequences from test file
|
|
*
|
|
* Returns all emojis as UTF-32 sequences, where:
|
|
* key = unqualified sequence (without \uFE0F)
|
|
* value = qualified sequence (with \uFE0F)
|
|
*
|
|
* Duplicate items that have different versions with and without \uFE0F are
|
|
* listed only once, with unqualified sequence as key and longest possible
|
|
* qualified sequence as value
|
|
*
|
|
* Example of 3 identical entries:
|
|
* '1F441 FE0F 200D 1F5E8 FE0F'
|
|
* '1F441 200D 1F5E8 FE0F'
|
|
* '1F441 FE0F 200D 1F5E8'
|
|
* '1F441 200D 1F5E8'
|
|
*
|
|
* Out of these entries, only one item will be returned with:
|
|
* key = '1f441-200d-1f5e8' (converted to lower case, separated with dash)
|
|
* value.sequence = [0x1F441, 0xFE0F, 0x200D, 0x1F5E8, 0xFE0F]
|
|
* value.status = 'fully-qualified'
|
|
* other properties in value are identical for all versions
|
|
*/
|
|
declare function parseEmojiTestFile(data: string): EmojiTestData;
|
|
|
|
export { BaseEmojiTestDataItem, EmojiStatus, EmojiTestData, EmojiTestDataItem, componentStatus, parseEmojiTestFile };
|