replace.cjs 967 B

123456789101112131415161718192021222324252627282930313233343536
  1. 'use strict';
  2. const emoji_replace_find = require('./find.cjs');
  3. require('../convert.cjs');
  4. require('../data.cjs');
  5. require('../format.cjs');
  6. function findAndReplaceEmojisInText(regexp, content, callback) {
  7. const matches = emoji_replace_find.getEmojiMatchesInText(regexp, content);
  8. if (!matches.length) {
  9. return null;
  10. }
  11. const sortedMatches = emoji_replace_find.sortEmojiMatchesInText(content, matches);
  12. let result = "";
  13. let replaced = false;
  14. for (let i = 0; i < sortedMatches.length; i++) {
  15. const item = sortedMatches[i];
  16. result += item.prev;
  17. const replacement = callback(
  18. {
  19. ...item.match
  20. },
  21. result
  22. );
  23. if (replacement === void 0) {
  24. result += item.match.match;
  25. } else {
  26. result += replacement;
  27. replaced = true;
  28. }
  29. }
  30. result += sortedMatches[sortedMatches.length - 1].next;
  31. return replaced ? result : null;
  32. }
  33. exports.findAndReplaceEmojisInText = findAndReplaceEmojisInText;