通用评论

helper.js 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { REGEXP } from "./constant";
  2. import emoji, { prefixUrl, ext } from "./emoji";
  3. export function isFunction(functionToCheck) {
  4. return (
  5. functionToCheck && {}.toString.call(functionToCheck) === "[object Function]"
  6. );
  7. }
  8. export function isUrl(userInput) {
  9. const regexp = /(http(s)?:\/\/.)?(www\.)?[-a-zA-Z0-9@:%._+~#=]{2,256}\.[a-z]{2,6}\b([-a-zA-Z0-9@:%_+.~#?&//=]*)/g;
  10. var res = userInput.match(regexp);
  11. if (res === null) return false;
  12. else return true;
  13. }
  14. /**
  15. * 将对象数组转换为对象
  16. * @param {array} array Array of Objects
  17. * @param {string} keyField string
  18. */
  19. export function arrayToObject(array, keyField) {
  20. return array.reduce((obj, item) => {
  21. obj[item[keyField]] = item;
  22. return obj;
  23. }, {});
  24. }
  25. /**
  26. * 渲染编辑器
  27. * [x] => <img src="x" />
  28. * @param {strig} content
  29. */
  30. export function renderContent(content, onClick) {
  31. return content.replace(REGEXP, function(a, b) {
  32. const src = a.slice(1, -1);
  33. if (isUrl(src)) {
  34. return `<img src="${src}" alt="${src}" style="max-width: 300px" />`;
  35. }
  36. const emojiObejct = arrayToObject(emoji, "title");
  37. const value = emojiObejct[src].value;
  38. return `<img src="${prefixUrl}${value}.${ext}" alt="${value}" />`;
  39. });
  40. }