UNPKG

findemo

Version:

library to find emoji from string and Convert Emoji to UTF and UTF to emoji

73 lines (64 loc) 2.68 kB
let emoRegexString = "(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023\u002a\u0030-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|[\ud83c\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|[\ud83c\ude32-\ude3a]|[\ud83c\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])"; let emoRegex = new RegExp(emoRegexString); function findEmoji(str) { let emoArr = []; for (let i = 0; i < str.length; i++) { let charPair = str.substring(i, i + 2); if (charPair.charAt(0) === " ") continue; let result = RegExp(emoRegex).test(charPair); if (result) { // to remove � unwanted emoji. start and end value of � emoji let strtCode = 55296; let endCode = 57343; let charCodeValue = charPair.codePointAt(0); if (!((charCodeValue >= strtCode) && (charCodeValue <= endCode))) { let emoLength = String.fromCodePoint(charCodeValue).length; let emo = { position: [], emoChar: null }; if (emoLength > 1) { emo.position.push(i); emo.position.push(i + 1); emo.emoChar = charPair; emo.utf = emoToUtf(charPair); } else { let reResult = RegExp(emoRegex).test(charPair.charAt(0)); if (reResult === false) { continue; } else { emo.position.push(i); emo.emoChar = charPair.charAt(0); emo.utf = emoToUtf(charPair.charAt(0)); } } emoArr.push(emo) } } } let jsonObj = new Object(); jsonObj.emos = emoArr; return jsonObj; } function emoToUtf(emo) { var comp; if (emo.length === 1) { comp = emo.charCodeAt(0); } comp = ( (emo.charCodeAt(0) - 0xD800) * 0x400 + (emo.charCodeAt(1) - 0xDC00) + 0x10000 ); if (comp < 0) { comp = emo.charCodeAt(0); } return comp.toString("16"); } function utfToEmo(utfChar) { return String.fromCodePoint(parseInt (utfChar, 16)) } module.exports ={ findEmoji, emoToUtf, utfToEmo }