From f029d7c943912307b7953c8c296737f80f75fbbb Mon Sep 17 00:00:00 2001 From: John-David Dalton Date: Sat, 19 Sep 2015 01:42:19 -0700 Subject: [PATCH] Add support for variation selectors. --- lodash.js | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lodash.js b/lodash.js index 978b93601..7af716456 100644 --- a/lodash.js +++ b/lodash.js @@ -151,22 +151,24 @@ rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', rsUpper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]', + rsVS = '\\ufe0e\\ufe0f', rsZWJ = '\\u200d', - rsJoiner = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + '))*', + rsOptVS = '[' + rsVS + ']?', + rsJoiner = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVS + ')*', rsSymbol = '(?:' + [rsNonAstral, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; /** Used to match [zero-width joiners and code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ - var reAdvSymbol = RegExp('[' + rsZWJ + rsAstralRange + ']'); + var reAdvSymbol = RegExp('[' + rsZWJ + rsVS + rsAstralRange + ']'); /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ - var reStrSymbol = RegExp(rsSymbol + rsJoiner, 'g'); + var reStrSymbol = RegExp(rsSymbol + rsOptVS + rsJoiner, 'g'); /** Used to match words to create compound words. */ var reWord = RegExp([ rsUpper + '+(?=' + rsUpper + rsLowers + ')', rsUpper + '?' + rsLowers, rsUpper + '+', - '(?:' + rsRegional + '|' + rsSurrPair + ')' + rsJoiner, + '(?:' + rsRegional + '|' + rsSurrPair + ')' + rsOptVS + rsJoiner, rsDigits ].join('|'), 'g');