/** * Emotions is a jQuery plugin that makes it easy to convert some emotion text to images (e.g 8) ) * * @name emotions * @version 0.0.1 * @requires jQuery v1.2.3+ * @license MIT License - http://www.opensource.org/licenses/mit-license.php * * For usage and examples, visit: * https://github.com/itlessons/jquery-emotions * http://www.itlessons.info/javascript/facebook-or-icq-jquery-emotions-plugin/ * * Copyright (c) 2013, www.itlessons.info */ (function ($) { $.emotions = function (text) { return $.emotions.parse(text); }; var $t = $.emotions; $.extend($.emotions, { settings: { replacement: '$2', map: { "o:)": "angel", "0:)": "angel", "O:)": "angel", "o:-)": "angel", "O:-)": "angel", "0:-)": "angel", ":beer:": "beer", "o.O": "confused", "o_O": "confused", ":'(": "cry", "3:)": "devil", ":friends:": "friends", ":(": "frown", "=(": "frown", ":-(": "frown", ":nerd:": "glasses", ":D": "grin", ":-D": "grin", ">:(": "grumpy", "<3": "heart", ":*": "kiss", "^_^": "mimi", "^^": "mimi", "^ ^": "mimi", "^-^": "mimi", ":-)": "smile", ":]": "smile", ":)": "smile", "=)": "smile", "(:": "smile", "(-:": "smile", "[:": "smile", "(=": "smile", "8)": "sunglasses", "8|": "sunglasses", "B|": "sunglasses", "B)": "sunglasses", ":p": "tongue", ":P": "tongue", ":/": "unsure", ":\\": "unsure", ":|": "unsure", ";)": "wink", ";-)": "wink", "(;": "wink", "(-;": "wink" } }, shortcode: function(eId){ var $s = $t.settings; for (var pattern in $s.map) { if($s.map[pattern] == eId) return pattern; } return ""; }, parse: function (text) { var $s = $t.settings; for (var pattern in $s.map) { var encPattent = $t.encode(pattern); if (text.indexOf(pattern) < 0 && text.indexOf(encPattent) < 0) { continue; } var rep = $s.replacement .replace(/\{eId\}/g, $s.map[pattern]); text = text.replace( new RegExp("(^|\\s)(" + $t.quote(pattern) + "|" + $t.quote(encPattent) + ")(?=\\s|$)", "g"), "$1" + rep ); } return text; }, encode: function (str) { return (str + '') .replace(/&/g, '&') .replace(//g, '>') .replace(/"/g, '"') .replace(/'/g, '''); }, quote: function (str) { return (str + '').replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1"); } }); $.fn.emotions = function (action, options) { this.each(function () { var el = $(this); el.html($.emotions(el.html())); }); }; })(jQuery);