From e8bd1f4036857a78ba08fe2db9f62c3f71d5ed06 Mon Sep 17 00:00:00 2001 From: sibidharan Date: Sun, 9 Oct 2016 12:00:30 +0530 Subject: [PATCH] Added length function Javascript length for cannot give perfect length. So a length function will be mandatory. This method will fix it by calculating a perfect length as emojis. Explaining this actual fix here: https://jsfiddle.net/sibidharan/9kk1h4zh/6/ --- lib/js/emojione.js | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/js/emojione.js b/lib/js/emojione.js index 83499f252..b2b24e9aa 100644 --- a/lib/js/emojione.js +++ b/lib/js/emojione.js @@ -488,6 +488,15 @@ return tmp_obj; }; + + //get correct length as emojis + ns.length = function(str){ + var astralRange = /\ud83c[\udffb-\udfff](?=\ud83c[\udffb-\udfff])|(?:[^\ud800-\udfff][\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]?|[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?(?:\u200d(?:[^\ud800-\udfff]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff])[\ufe0e\ufe0f]?(?:[\u0300-\u036f\ufe20-\ufe23\u20d0-\u20f0]|\ud83c[\udffb-\udfff])?)*/g; + if (typeof str !== "string") { + throw new Error("Input must be a string"); + } + return str.match(astralRange).length; + } ns.escapeRegExp = function(string) { return string.replace(/[-[\]{}()*+?.,;:&\\^$#\s]/g, "\\$&");