name.cjs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. 'use strict';
  2. const emoji_data = require('../data.cjs');
  3. const nameSplit = ": ";
  4. const variationSplit = ", ";
  5. const ignoredVariations = /* @__PURE__ */ new Set(["person"]);
  6. function splitEmojiNameVariations(name, sequence, componentsData) {
  7. const parts = name.split(nameSplit);
  8. const base = parts.shift();
  9. if (!parts.length) {
  10. return {
  11. base,
  12. key: base
  13. };
  14. }
  15. const variations = parts.join(nameSplit).split(variationSplit).filter((text) => {
  16. const type = componentsData.types[text];
  17. if (!type) {
  18. return !ignoredVariations.has(text);
  19. }
  20. return false;
  21. });
  22. const key = base + (variations.length ? nameSplit + variations.join(variationSplit) : "");
  23. const result = {
  24. base,
  25. key
  26. };
  27. let components = 0;
  28. for (let index = 0; index < sequence.length; index++) {
  29. const num = sequence[index];
  30. for (const key2 in emoji_data.emojiComponents) {
  31. const type = key2;
  32. const range = emoji_data.emojiComponents[type];
  33. if (num >= range[0] && num < range[1]) {
  34. variations.push({
  35. index,
  36. type
  37. });
  38. components++;
  39. }
  40. }
  41. }
  42. if (variations.length) {
  43. result.variations = variations;
  44. }
  45. if (components) {
  46. result.components = components;
  47. }
  48. return result;
  49. }
  50. exports.splitEmojiNameVariations = splitEmojiNameVariations;