emoji_util.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. /*
  2. * vim: ts=4:sw=4:expandtab
  3. */
  4. ;(function() {
  5. 'use strict';
  6. window.emoji_util = window.emoji_util || {};
  7. // EmojiConverter overrides
  8. EmojiConvertor.prototype.init_env = function() {
  9. if (this.inits.env) {
  10. return;
  11. }
  12. this.inits.env = 1;
  13. this.include_title = true;
  14. this.img_sets.apple.path = '/images/emoji/apple/';
  15. this.replace_mode = 'img';
  16. };
  17. EmojiConvertor.prototype.replace_unified = function(str) {
  18. var self = this;
  19. self.init_unified();
  20. return str.replace(self.rx_unified, function(m, p1, p2) {
  21. var val = self.map.unified[p1];
  22. if (!val) { return m; }
  23. var idx = null;
  24. if (p2 == '\uD83C\uDFFB') { idx = '1f3fb'; }
  25. if (p2 == '\uD83C\uDFFC') { idx = '1f3fc'; }
  26. if (p2 == '\uD83C\uDFFD') { idx = '1f3fd'; }
  27. if (p2 == '\uD83C\uDFFE') { idx = '1f3fe'; }
  28. if (p2 == '\uD83C\uDFFF') { idx = '1f3ff'; }
  29. if (idx) {
  30. return self.replacement(val, null, null, {
  31. idx : idx,
  32. actual : p2,
  33. wrapper : ':'
  34. });
  35. }
  36. // wrap names in :'s
  37. return self.replacement(val, ':' + self.data[val][3][0] + ':');
  38. });
  39. };
  40. window.emoji = new EmojiConvertor();
  41. emoji.init_colons();
  42. window.emoji_util.parse = function($el) {
  43. if (!$el || !$el.length) {
  44. return;
  45. }
  46. $el.html(emoji.replace_unified($el.html()));
  47. };
  48. })();