decodeText.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. "use strict";
  2. var pages_TUIKit_utils_emojiMap = require("./emojiMap.js");
  3. function decodeText(payload) {
  4. const renderDom = [];
  5. let temp = payload.text;
  6. let left = -1;
  7. let right = -1;
  8. while (temp !== "") {
  9. left = temp.indexOf("[");
  10. right = temp.indexOf("]");
  11. switch (left) {
  12. case 0:
  13. if (right === -1) {
  14. renderDom.push({
  15. name: "text",
  16. text: temp
  17. });
  18. temp = "";
  19. } else {
  20. const emojiKey = temp.slice(0, right + 1);
  21. if (pages_TUIKit_utils_emojiMap.emojiMap[emojiKey]) {
  22. renderDom.push({
  23. name: "img",
  24. src: pages_TUIKit_utils_emojiMap.emojiUrl + pages_TUIKit_utils_emojiMap.emojiMap[emojiKey]
  25. });
  26. temp = temp.substring(right + 1);
  27. } else {
  28. renderDom.push({
  29. name: "text",
  30. text: "["
  31. });
  32. temp = temp.slice(1);
  33. }
  34. }
  35. break;
  36. case -1:
  37. renderDom.push({
  38. name: "text",
  39. text: temp
  40. });
  41. temp = "";
  42. break;
  43. default:
  44. renderDom.push({
  45. name: "text",
  46. text: temp.slice(0, left)
  47. });
  48. temp = temp.substring(left);
  49. break;
  50. }
  51. }
  52. return renderDom;
  53. }
  54. exports.decodeText = decodeText;