45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| 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 }; | 
