Theme for twister
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

127 lines
3.6 KiB

11 years ago
/**
* 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: {
11 years ago
replacement: '<span class="emotions emo-{eId}">$2</span>',
11 years ago
map: {
"o:)": "angel",
"0:)": "angel",
"O:)": "angel",
"o:-)": "angel",
"O:-)": "angel",
"0:-)": "angel",
":beer:": "beer",
11 years ago
"o.O": "confused",
"o_O": "confused",
":'(": "cry",
11 years ago
"3:)": "devil",
":friends:": "friends",
":(": "frown",
"=(": "frown",
":-(": "frown",
":nerd:": "glasses",
":D": "grin",
":-D": "grin",
">:(": "grumpy",
11 years ago
"<3": "heart",
":*": "kiss",
"^_^": "mimi",
"^^": "mimi",
"^ ^": "mimi",
"^-^": "mimi",
11 years ago
":-)": "smile",
":]": "smile",
":)": "smile",
"=)": "smile",
"(:": "smile",
"(-:": "smile",
"[:": "smile",
"(=": "smile",
"8)": "sunglasses",
11 years ago
"8|": "sunglasses",
"B|": "sunglasses",
"B)": "sunglasses",
":p": "tongue",
":P": "tongue",
11 years ago
":/": "unsure",
":\\": "unsure",
":|": "unsure",
11 years ago
";)": "wink",
";-)": "wink",
"(;": "wink",
"(-;": "wink"
11 years ago
}
},
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
);
11 years ago
}
return text;
},
encode: function (str) {
return (str + '')
.replace(/&/g, '&amp;')
.replace(/</g, '&lt;')
.replace(/>/g, '&gt;')
11 years ago
.replace(/"/g, '&quot;')
.replace(/'/g, '&apos;');
11 years ago
},
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);