Initial commit
[yaffs-website] / node_modules / grunt-contrib-watch / node_modules / globule / node_modules / lodash / _unicodeWords.js
1 /** Used to compose unicode character classes. */
2 var rsAstralRange = '\\ud800-\\udfff',
3     rsComboMarksRange = '\\u0300-\\u036f\\ufe20-\\ufe23',
4     rsComboSymbolsRange = '\\u20d0-\\u20f0',
5     rsDingbatRange = '\\u2700-\\u27bf',
6     rsLowerRange = 'a-z\\xdf-\\xf6\\xf8-\\xff',
7     rsMathOpRange = '\\xac\\xb1\\xd7\\xf7',
8     rsNonCharRange = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf',
9     rsPunctuationRange = '\\u2000-\\u206f',
10     rsSpaceRange = ' \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000',
11     rsUpperRange = 'A-Z\\xc0-\\xd6\\xd8-\\xde',
12     rsVarRange = '\\ufe0e\\ufe0f',
13     rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;
14
15 /** Used to compose unicode capture groups. */
16 var rsApos = "['\u2019]",
17     rsBreak = '[' + rsBreakRange + ']',
18     rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',
19     rsDigits = '\\d+',
20     rsDingbat = '[' + rsDingbatRange + ']',
21     rsLower = '[' + rsLowerRange + ']',
22     rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',
23     rsFitz = '\\ud83c[\\udffb-\\udfff]',
24     rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',
25     rsNonAstral = '[^' + rsAstralRange + ']',
26     rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}',
27     rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]',
28     rsUpper = '[' + rsUpperRange + ']',
29     rsZWJ = '\\u200d';
30
31 /** Used to compose unicode regexes. */
32 var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',
33     rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',
34     rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',
35     rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',
36     reOptMod = rsModifier + '?',
37     rsOptVar = '[' + rsVarRange + ']?',
38     rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
39     rsOrdLower = '\\d*(?:(?:1st|2nd|3rd|(?![123])\\dth)\\b)',
40     rsOrdUpper = '\\d*(?:(?:1ST|2ND|3RD|(?![123])\\dTH)\\b)',
41     rsSeq = rsOptVar + reOptMod + rsOptJoin,
42     rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;
43
44 /** Used to match complex or compound words. */
45 var reUnicodeWord = RegExp([
46   rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',
47   rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',
48   rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,
49   rsUpper + '+' + rsOptContrUpper,
50   rsOrdUpper,
51   rsOrdLower,
52   rsDigits,
53   rsEmoji
54 ].join('|'), 'g');
55
56 /**
57  * Splits a Unicode `string` into an array of its words.
58  *
59  * @private
60  * @param {string} The string to inspect.
61  * @returns {Array} Returns the words of `string`.
62  */
63 function unicodeWords(string) {
64   return string.match(reUnicodeWord) || [];
65 }
66
67 module.exports = unicodeWords;