source: node_modules/es-toolkit/dist/compat/string/words.js@ ba17441

Last change on this file since ba17441 was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 1.6 KB
Line 
1'use strict';
2
3Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
4
5const toString = require('../util/toString.js');
6
7const rNonCharLatin = '\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\xd7\\xf7';
8const rUnicodeUpper = '\\p{Lu}';
9const rUnicodeLower = '\\p{Ll}';
10const rMisc = '(?:[\\p{Lm}\\p{Lo}]\\p{M}*)';
11const rNumber = '\\d';
12const rUnicodeOptContrLower = "(?:['\u2019](?:d|ll|m|re|s|t|ve))?";
13const rUnicodeOptContrUpper = "(?:['\u2019](?:D|LL|M|RE|S|T|VE))?";
14const rUnicodeBreak = `[\\p{Z}\\p{P}${rNonCharLatin}]`;
15const rUnicodeMiscUpper = `(?:${rUnicodeUpper}|${rMisc})`;
16const rUnicodeMiscLower = `(?:${rUnicodeLower}|${rMisc})`;
17const rUnicodeWord = RegExp([
18 `${rUnicodeUpper}?${rUnicodeLower}+${rUnicodeOptContrLower}(?=${rUnicodeBreak}|${rUnicodeUpper}|$)`,
19 `${rUnicodeMiscUpper}+${rUnicodeOptContrUpper}(?=${rUnicodeBreak}|${rUnicodeUpper}${rUnicodeMiscLower}|$)`,
20 `${rUnicodeUpper}?${rUnicodeMiscLower}+${rUnicodeOptContrLower}`,
21 `${rUnicodeUpper}+${rUnicodeOptContrUpper}`,
22 `${rNumber}*(?:1ST|2ND|3RD|(?![123])${rNumber}TH)(?=\\b|[a-z_])`,
23 `${rNumber}*(?:1st|2nd|3rd|(?![123])${rNumber}th)(?=\\b|[A-Z_])`,
24 `${rNumber}+`,
25 '\\p{Emoji_Presentation}',
26 '\\p{Extended_Pictographic}',
27].join('|'), 'gu');
28function words(str, pattern = rUnicodeWord, guard) {
29 const input = toString.toString(str);
30 if (guard) {
31 pattern = rUnicodeWord;
32 }
33 if (typeof pattern === 'number') {
34 pattern = pattern.toString();
35 }
36 const words = Array.from(input.match(pattern) ?? []);
37 return words.filter(x => x !== '');
38}
39
40exports.words = words;
Note: See TracBrowser for help on using the repository browser.