similar.mjs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { vs16Emoji } from '../data.mjs';
  2. import { emojiSequenceWithComponentsToString, mapEmojiTestDataComponents } from './components.mjs';
  3. import { splitEmojiNameVariations } from './name.mjs';
  4. import '../format.mjs';
  5. import '../convert.mjs';
  6. function findComponentsInEmojiTestItem(item, componentsData) {
  7. const name = splitEmojiNameVariations(
  8. item.name,
  9. item.sequence,
  10. componentsData
  11. );
  12. const sequence = [...item.sequence];
  13. name.variations?.forEach((item2) => {
  14. if (typeof item2 !== "string") {
  15. sequence[item2.index] = item2.type;
  16. }
  17. });
  18. const sequenceKey = emojiSequenceWithComponentsToString(
  19. sequence.filter((code) => code !== vs16Emoji)
  20. );
  21. return {
  22. ...item,
  23. name,
  24. sequenceKey,
  25. sequence
  26. };
  27. }
  28. function combineSimilarEmojiTestData(data, componentsData) {
  29. const results = /* @__PURE__ */ Object.create(null);
  30. componentsData = componentsData || mapEmojiTestDataComponents(data);
  31. for (const key in data) {
  32. const sourceItem = data[key];
  33. if (sourceItem.status !== "component") {
  34. const item = findComponentsInEmojiTestItem(
  35. sourceItem,
  36. componentsData
  37. );
  38. results[item.sequenceKey] = item;
  39. }
  40. }
  41. return results;
  42. }
  43. export { combineSimilarEmojiTestData, findComponentsInEmojiTestItem };