format.cjs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. 'use strict';
  2. const emoji_convert = require('./convert.cjs');
  3. require('./data.cjs');
  4. const defaultUnicodeOptions = {
  5. prefix: "",
  6. separator: "",
  7. case: "lower",
  8. format: "utf-32",
  9. add0: false,
  10. throwOnError: true
  11. };
  12. function convert(sequence, options) {
  13. const prefix = options.prefix;
  14. const func = options.case === "upper" ? "toUpperCase" : "toLowerCase";
  15. const cleanSequence = options.format === "utf-16" ? emoji_convert.convertEmojiSequenceToUTF16(sequence) : emoji_convert.convertEmojiSequenceToUTF32(sequence, options.throwOnError);
  16. return cleanSequence.map((code) => {
  17. let str = code.toString(16);
  18. if (options.add0 && str.length < 4) {
  19. str = "0".repeat(4 - str.length) + str;
  20. }
  21. return prefix + str[func]();
  22. }).join(options.separator);
  23. }
  24. function getEmojiUnicodeString(code, options = {}) {
  25. return convert([code], {
  26. ...defaultUnicodeOptions,
  27. ...options
  28. });
  29. }
  30. const defaultSequenceOptions = {
  31. ...defaultUnicodeOptions,
  32. separator: "-"
  33. };
  34. function getEmojiSequenceString(sequence, options = {}) {
  35. return convert(sequence, {
  36. ...defaultSequenceOptions,
  37. ...options
  38. });
  39. }
  40. function getEmojiSequenceKeyword(sequence) {
  41. return sequence.map((code) => code.toString(16)).join("-");
  42. }
  43. exports.getEmojiSequenceKeyword = getEmojiSequenceKeyword;
  44. exports.getEmojiSequenceString = getEmojiSequenceString;
  45. exports.getEmojiUnicodeString = getEmojiUnicodeString;