|
187 | 187 | rsBreakRange = rsMathOpRange + rsNonCharRange + rsQuoteRange + rsSpaceRange;
|
188 | 188 |
|
189 | 189 | /** Used to compose unicode capture groups. */
|
190 |
| - var rsAstral = '[' + rsAstralRange + ']', |
| 190 | + var rsApos = "['\u2019]", |
| 191 | + rsAstral = '[' + rsAstralRange + ']', |
191 | 192 | rsBreak = '[' + rsBreakRange + ']',
|
192 | 193 | rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',
|
193 | 194 | rsDigits = '\\d+',
|
|
205 | 206 | /** Used to compose unicode regexes. */
|
206 | 207 | var rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',
|
207 | 208 | rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',
|
| 209 | + rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?', |
| 210 | + rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?', |
208 | 211 | reOptMod = rsModifier + '?',
|
209 | 212 | rsOptVar = '[' + rsVarRange + ']?',
|
210 | 213 | rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',
|
211 | 214 | rsSeq = rsOptVar + reOptMod + rsOptJoin,
|
212 | 215 | rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,
|
213 | 216 | rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';
|
214 | 217 |
|
| 218 | + /** Used to match apostrophes. */ |
| 219 | + var reApos = RegExp(rsApos, 'g'); |
| 220 | + |
215 | 221 | /**
|
216 | 222 | * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and
|
217 | 223 | * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).
|
|
223 | 229 |
|
224 | 230 | /** Used to match complex or compound words. */
|
225 | 231 | var reComplexWord = RegExp([
|
226 |
| - rsUpper + '?' + rsLower + '+(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', |
227 |
| - rsUpperMisc + '+(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')', |
228 |
| - rsUpper + '?' + rsLowerMisc + '+', |
229 |
| - rsUpper + '+', |
| 232 | + rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')', |
| 233 | + rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') +
8000
span> ')', |
| 234 | + rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr, |
| 235 | + rsUpper + '+' + rsOptUpperContr, |
230 | 236 | rsDigits,
|
231 | 237 | rsEmoji
|
232 | 238 | ].join('|'), 'g');
|
|
4388 | 4394 | */
|
4389 | 4395 | function createCompounder(callback) {
|
4390 | 4396 | return function(string) {
|
4391 |
| - return arrayReduce(words(deburr(string)), callback, ''); |
| 4397 | + return arrayReduce(words(deburr(string).replace(reApos, '')), callback, ''); |
4392 | 4398 | };
|
4393 | 4399 | }
|
4394 | 4400 |
|
|
0 commit comments