38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			38 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| import { vs16Emoji } from "../data.js";
 | |
| import { emojiSequenceWithComponentsToString, mapEmojiTestDataComponents } from "./components.js";
 | |
| import { splitEmojiNameVariations } from "./name.js";
 | |
| 
 | |
| /**
 | |
| * Find components in item, generate CombinedEmojiTestDataItem
 | |
| */
 | |
| function findComponentsInEmojiTestItem(item, componentsData) {
 | |
| 	const name = splitEmojiNameVariations(item.name, item.sequence, componentsData);
 | |
| 	const sequence = [...item.sequence];
 | |
| 	name.variations?.forEach((item$1) => {
 | |
| 		if (typeof item$1 !== "string") sequence[item$1.index] = item$1.type;
 | |
| 	});
 | |
| 	const sequenceKey = emojiSequenceWithComponentsToString(sequence.filter((code) => code !== vs16Emoji));
 | |
| 	return {
 | |
| 		...item,
 | |
| 		name,
 | |
| 		sequenceKey,
 | |
| 		sequence
 | |
| 	};
 | |
| }
 | |
| /**
 | |
| * Combine similar items in one iteratable item
 | |
| */
 | |
| function combineSimilarEmojiTestData(data, componentsData) {
 | |
| 	const results = Object.create(null);
 | |
| 	componentsData = componentsData || mapEmojiTestDataComponents(data);
 | |
| 	for (const key in data) {
 | |
| 		const sourceItem = data[key];
 | |
| 		if (sourceItem.status !== "component") {
 | |
| 			const item = findComponentsInEmojiTestItem(sourceItem, componentsData);
 | |
| 			results[item.sequenceKey] = item;
 | |
| 		}
 | |
| 	}
 | |
| 	return results;
 | |
| }
 | |
| 
 | |
| export { combineSimilarEmojiTestData, findComponentsInEmojiTestItem }; | 
