Comparing version 4.1.1 to 4.2.0
@@ -1,241 +0,243 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
/*! | ||
* XRegExp.build 4.1.1 | ||
* XRegExp.build 4.2.0 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2012-present MIT License | ||
*/ | ||
var _default = function _default(XRegExp) { | ||
var REGEX_DATA = 'xregexp'; | ||
var subParts = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g; | ||
var parts = XRegExp.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/, subParts], 'g', { | ||
conjunction: 'or' | ||
}); | ||
/** | ||
* Strips a leading `^` and trailing unescaped `$`, if both are present. | ||
* | ||
* @private | ||
* @param {String} pattern Pattern to process. | ||
* @returns {String} Pattern with edge anchors removed. | ||
*/ | ||
exports.default = function (XRegExp) { | ||
var REGEX_DATA = 'xregexp'; | ||
var subParts = /(\()(?!\?)|\\([1-9]\d*)|\\[\s\S]|\[(?:[^\\\]]|\\[\s\S])*\]/g; | ||
var parts = XRegExp.union([/\({{([\w$]+)}}\)|{{([\w$]+)}}/, subParts], 'g', { | ||
conjunction: 'or' | ||
}); | ||
function deanchor(pattern) { | ||
// Allow any number of empty noncapturing groups before/after anchors, because regexes | ||
// built/generated by XRegExp sometimes include them | ||
var leadingAnchor = /^(?:\(\?:\))*\^/; | ||
var trailingAnchor = /\$(?:\(\?:\))*$/; | ||
/** | ||
* Strips a leading `^` and trailing unescaped `$`, if both are present. | ||
* | ||
* @private | ||
* @param {String} pattern Pattern to process. | ||
* @returns {String} Pattern with edge anchors removed. | ||
*/ | ||
function deanchor(pattern) { | ||
// Allow any number of empty noncapturing groups before/after anchors, because regexes | ||
// built/generated by XRegExp sometimes include them | ||
var leadingAnchor = /^(?:\(\?:\))*\^/; | ||
var trailingAnchor = /\$(?:\(\?:\))*$/; | ||
if (leadingAnchor.test(pattern) && trailingAnchor.test(pattern) && // Ensure that the trailing `$` isn't escaped | ||
trailingAnchor.test(pattern.replace(/\\[\s\S]/g, ''))) { | ||
return pattern.replace(leadingAnchor, '').replace(trailingAnchor, ''); | ||
} | ||
if (leadingAnchor.test(pattern) && trailingAnchor.test(pattern) && | ||
// Ensure that the trailing `$` isn't escaped | ||
trailingAnchor.test(pattern.replace(/\\[\s\S]/g, ''))) { | ||
return pattern.replace(leadingAnchor, '').replace(trailingAnchor, ''); | ||
} | ||
return pattern; | ||
} | ||
/** | ||
* Converts the provided value to an XRegExp. Native RegExp flags are not preserved. | ||
* | ||
* @private | ||
* @param {String|RegExp} value Value to convert. | ||
* @param {Boolean} [addFlagX] Whether to apply the `x` flag in cases when `value` is not | ||
* already a regex generated by XRegExp | ||
* @returns {RegExp} XRegExp object with XRegExp syntax applied. | ||
*/ | ||
return pattern; | ||
} | ||
/** | ||
* Converts the provided value to an XRegExp. Native RegExp flags are not preserved. | ||
* | ||
* @private | ||
* @param {String|RegExp} value Value to convert. | ||
* @param {Boolean} [addFlagX] Whether to apply the `x` flag in cases when `value` is not | ||
* already a regex generated by XRegExp | ||
* @returns {RegExp} XRegExp object with XRegExp syntax applied. | ||
*/ | ||
function asXRegExp(value, addFlagX) { | ||
var flags = addFlagX ? 'x' : ''; | ||
return XRegExp.isRegExp(value) ? value[REGEX_DATA] && value[REGEX_DATA].captureNames ? | ||
// Don't recompile, to preserve capture names | ||
value : | ||
// Recompile as XRegExp | ||
XRegExp(value.source, flags) : | ||
// Compile string as XRegExp | ||
XRegExp(value, flags); | ||
} | ||
function asXRegExp(value, addFlagX) { | ||
var flags = addFlagX ? 'x' : ''; | ||
return XRegExp.isRegExp(value) ? value[REGEX_DATA] && value[REGEX_DATA].captureNames ? // Don't recompile, to preserve capture names | ||
value : // Recompile as XRegExp | ||
XRegExp(value.source, flags) : // Compile string as XRegExp | ||
XRegExp(value, flags); | ||
} | ||
function interpolate(substitution) { | ||
return substitution instanceof RegExp ? substitution : XRegExp.escape(substitution); | ||
} | ||
function interpolate(substitution) { | ||
return substitution instanceof RegExp ? substitution : XRegExp.escape(substitution); | ||
} | ||
function reduceToSubpatternsObject(subpatterns, interpolated, subpatternIndex) { | ||
subpatterns['subpattern' + subpatternIndex] = interpolated; | ||
return subpatterns; | ||
} | ||
function reduceToSubpatternsObject(subpatterns, interpolated, subpatternIndex) { | ||
subpatterns["subpattern".concat(subpatternIndex)] = interpolated; | ||
return subpatterns; | ||
} | ||
function embedSubpatternAfter(raw, subpatternIndex, rawLiterals) { | ||
var hasSubpattern = subpatternIndex < rawLiterals.length - 1; | ||
return raw + (hasSubpattern ? '{{subpattern' + subpatternIndex + '}}' : ''); | ||
function embedSubpatternAfter(raw, subpatternIndex, rawLiterals) { | ||
var hasSubpattern = subpatternIndex < rawLiterals.length - 1; | ||
return raw + (hasSubpattern ? "{{subpattern".concat(subpatternIndex, "}}") : ''); | ||
} | ||
/** | ||
* Provides tagged template literals that create regexes with XRegExp syntax and flags. The | ||
* provided pattern is handled as a raw string, so backslashes don't need to be escaped. | ||
* | ||
* Interpolation of strings and regexes shares the features of `XRegExp.build`. Interpolated | ||
* patterns are treated as atomic units when quantified, interpolated strings have their special | ||
* characters escaped, a leading `^` and trailing unescaped `$` are stripped from interpolated | ||
* regexes if both are present, and any backreferences within an interpolated regex are | ||
* rewritten to work within the overall pattern. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} [flags] Any combination of XRegExp flags. | ||
* @returns {Function} Handler for template literals that construct regexes with XRegExp syntax. | ||
* @example | ||
* | ||
* const h12 = /1[0-2]|0?[1-9]/; | ||
* const h24 = /2[0-3]|[01][0-9]/; | ||
* const hours = XRegExp.tag('x')`${h12} : | ${h24}`; | ||
* const minutes = /^[0-5][0-9]$/; | ||
* // Note that explicitly naming the 'minutes' group is required for named backreferences | ||
* const time = XRegExp.tag('x')`^ ${hours} (?<minutes>${minutes}) $`; | ||
* time.test('10:59'); // -> true | ||
* XRegExp.exec('10:59', time).minutes; // -> '59' | ||
*/ | ||
XRegExp.tag = function (flags) { | ||
return function (literals) { | ||
for (var _len = arguments.length, substitutions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
substitutions[_key - 1] = arguments[_key]; | ||
} | ||
var subpatterns = substitutions.map(interpolate).reduce(reduceToSubpatternsObject, {}); | ||
var pattern = literals.raw.map(embedSubpatternAfter).join(''); | ||
return XRegExp.build(pattern, subpatterns, flags); | ||
}; | ||
}; | ||
/** | ||
* Builds regexes using named subpatterns, for readability and pattern reuse. Backreferences in | ||
* the outer pattern and provided subpatterns are automatically renumbered to work correctly. | ||
* Native flags used by provided subpatterns are ignored in favor of the `flags` argument. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} pattern XRegExp pattern using `{{name}}` for embedded subpatterns. Allows | ||
* `({{name}})` as shorthand for `(?<name>{{name}})`. Patterns cannot be embedded within | ||
* character classes. | ||
* @param {Object} subs Lookup object for named subpatterns. Values can be strings or regexes. A | ||
* leading `^` and trailing unescaped `$` are stripped from subpatterns, if both are present. | ||
* @param {String} [flags] Any combination of XRegExp flags. | ||
* @returns {RegExp} Regex with interpolated subpatterns. | ||
* @example | ||
* | ||
* const time = XRegExp.build('(?x)^ {{hours}} ({{minutes}}) $', { | ||
* hours: XRegExp.build('{{h12}} : | {{h24}}', { | ||
* h12: /1[0-2]|0?[1-9]/, | ||
* h24: /2[0-3]|[01][0-9]/ | ||
* }, 'x'), | ||
* minutes: /^[0-5][0-9]$/ | ||
* }); | ||
* time.test('10:59'); // -> true | ||
* XRegExp.exec('10:59', time).minutes; // -> '59' | ||
*/ | ||
XRegExp.build = function (pattern, subs, flags) { | ||
flags = flags || ''; // Used with `asXRegExp` calls for `pattern` and subpatterns in `subs`, to work around how | ||
// some browsers convert `RegExp('\n')` to a regex that contains the literal characters `\` | ||
// and `n`. See more details at <https://github.com/slevithan/xregexp/pull/163>. | ||
var addFlagX = flags.indexOf('x') !== -1; | ||
var inlineFlags = /^\(\?([\w$]+)\)/.exec(pattern); // Add flags within a leading mode modifier to the overall pattern's flags | ||
if (inlineFlags) { | ||
flags = XRegExp._clipDuplicates(flags + inlineFlags[1]); | ||
} | ||
/** | ||
* Provides tagged template literals that create regexes with XRegExp syntax and flags. The | ||
* provided pattern is handled as a raw string, so backslashes don't need to be escaped. | ||
* | ||
* Interpolation of strings and regexes shares the features of `XRegExp.build`. Interpolated | ||
* patterns are treated as atomic units when quantified, interpolated strings have their special | ||
* characters escaped, a leading `^` and trailing unescaped `$` are stripped from interpolated | ||
* regexes if both are present, and any backreferences within an interpolated regex are | ||
* rewritten to work within the overall pattern. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} [flags] Any combination of XRegExp flags. | ||
* @returns {Function} Handler for template literals that construct regexes with XRegExp syntax. | ||
* @example | ||
* | ||
* const h12 = /1[0-2]|0?[1-9]/; | ||
* const h24 = /2[0-3]|[01][0-9]/; | ||
* const hours = XRegExp.tag('x')`${h12} : | ${h24}`; | ||
* const minutes = /^[0-5][0-9]$/; | ||
* // Note that explicitly naming the 'minutes' group is required for named backreferences | ||
* const time = XRegExp.tag('x')`^ ${hours} (?<minutes>${minutes}) $`; | ||
* time.test('10:59'); // -> true | ||
* XRegExp.exec('10:59', time).minutes; // -> '59' | ||
*/ | ||
XRegExp.tag = function (flags) { | ||
return function (literals) { | ||
for (var _len = arguments.length, substitutions = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { | ||
substitutions[_key - 1] = arguments[_key]; | ||
} | ||
var data = {}; | ||
var subpatterns = substitutions.map(interpolate).reduce(reduceToSubpatternsObject, {}); | ||
var pattern = literals.raw.map(embedSubpatternAfter).join(''); | ||
return XRegExp.build(pattern, subpatterns, flags); | ||
for (var p in subs) { | ||
if (subs.hasOwnProperty(p)) { | ||
// Passing to XRegExp enables extended syntax and ensures independent validity, | ||
// lest an unescaped `(`, `)`, `[`, or trailing `\` breaks the `(?:)` wrapper. For | ||
// subpatterns provided as native regexes, it dies on octals and adds the property | ||
// used to hold extended regex instance data, for simplicity. | ||
var sub = asXRegExp(subs[p], addFlagX); | ||
data[p] = { | ||
// Deanchoring allows embedding independently useful anchored regexes. If you | ||
// really need to keep your anchors, double them (i.e., `^^...$$`). | ||
pattern: deanchor(sub.source), | ||
names: sub[REGEX_DATA].captureNames || [] | ||
}; | ||
}; | ||
} | ||
} // Passing to XRegExp dies on octals and ensures the outer pattern is independently valid; | ||
// helps keep this simple. Named captures will be put back. | ||
/** | ||
* Builds regexes using named subpatterns, for readability and pattern reuse. Backreferences in | ||
* the outer pattern and provided subpatterns are automatically renumbered to work correctly. | ||
* Native flags used by provided subpatterns are ignored in favor of the `flags` argument. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} pattern XRegExp pattern using `{{name}}` for embedded subpatterns. Allows | ||
* `({{name}})` as shorthand for `(?<name>{{name}})`. Patterns cannot be embedded within | ||
* character classes. | ||
* @param {Object} subs Lookup object for named subpatterns. Values can be strings or regexes. A | ||
* leading `^` and trailing unescaped `$` are stripped from subpatterns, if both are present. | ||
* @param {String} [flags] Any combination of XRegExp flags. | ||
* @returns {RegExp} Regex with interpolated subpatterns. | ||
* @example | ||
* | ||
* const time = XRegExp.build('(?x)^ {{hours}} ({{minutes}}) $', { | ||
* hours: XRegExp.build('{{h12}} : | {{h24}}', { | ||
* h12: /1[0-2]|0?[1-9]/, | ||
* h24: /2[0-3]|[01][0-9]/ | ||
* }, 'x'), | ||
* minutes: /^[0-5][0-9]$/ | ||
* }); | ||
* time.test('10:59'); // -> true | ||
* XRegExp.exec('10:59', time).minutes; // -> '59' | ||
*/ | ||
XRegExp.build = function (pattern, subs, flags) { | ||
flags = flags || ''; | ||
// Used with `asXRegExp` calls for `pattern` and subpatterns in `subs`, to work around how | ||
// some browsers convert `RegExp('\n')` to a regex that contains the literal characters `\` | ||
// and `n`. See more details at <https://github.com/slevithan/xregexp/pull/163>. | ||
var addFlagX = flags.indexOf('x') !== -1; | ||
var inlineFlags = /^\(\?([\w$]+)\)/.exec(pattern); | ||
// Add flags within a leading mode modifier to the overall pattern's flags | ||
if (inlineFlags) { | ||
flags = XRegExp._clipDuplicates(flags + inlineFlags[1]); | ||
} | ||
var data = {}; | ||
for (var p in subs) { | ||
if (subs.hasOwnProperty(p)) { | ||
// Passing to XRegExp enables extended syntax and ensures independent validity, | ||
// lest an unescaped `(`, `)`, `[`, or trailing `\` breaks the `(?:)` wrapper. For | ||
// subpatterns provided as native regexes, it dies on octals and adds the property | ||
// used to hold extended regex instance data, for simplicity. | ||
var sub = asXRegExp(subs[p], addFlagX); | ||
data[p] = { | ||
// Deanchoring allows embedding independently useful anchored regexes. If you | ||
// really need to keep your anchors, double them (i.e., `^^...$$`). | ||
pattern: deanchor(sub.source), | ||
names: sub[REGEX_DATA].captureNames || [] | ||
}; | ||
} | ||
var patternAsRegex = asXRegExp(pattern, addFlagX); // 'Caps' is short for 'captures' | ||
var numCaps = 0; | ||
var numPriorCaps; | ||
var numOuterCaps = 0; | ||
var outerCapsMap = [0]; | ||
var outerCapNames = patternAsRegex[REGEX_DATA].captureNames || []; | ||
var output = patternAsRegex.source.replace(parts, function ($0, $1, $2, $3, $4) { | ||
var subName = $1 || $2; | ||
var capName; | ||
var intro; | ||
var localCapIndex; // Named subpattern | ||
if (subName) { | ||
if (!data.hasOwnProperty(subName)) { | ||
throw new ReferenceError("Undefined property ".concat($0)); | ||
} // Named subpattern was wrapped in a capturing group | ||
if ($1) { | ||
capName = outerCapNames[numOuterCaps]; | ||
outerCapsMap[++numOuterCaps] = ++numCaps; // If it's a named group, preserve the name. Otherwise, use the subpattern name | ||
// as the capture name | ||
intro = "(?<".concat(capName || subName, ">"); | ||
} else { | ||
intro = '(?:'; | ||
} | ||
// Passing to XRegExp dies on octals and ensures the outer pattern is independently valid; | ||
// helps keep this simple. Named captures will be put back. | ||
var patternAsRegex = asXRegExp(pattern, addFlagX); | ||
numPriorCaps = numCaps; | ||
var rewrittenSubpattern = data[subName].pattern.replace(subParts, function (match, paren, backref) { | ||
// Capturing group | ||
if (paren) { | ||
capName = data[subName].names[numCaps - numPriorCaps]; | ||
++numCaps; // If the current capture has a name, preserve the name | ||
// 'Caps' is short for 'captures' | ||
var numCaps = 0; | ||
var numPriorCaps = void 0; | ||
var numOuterCaps = 0; | ||
var outerCapsMap = [0]; | ||
var outerCapNames = patternAsRegex[REGEX_DATA].captureNames || []; | ||
var output = patternAsRegex.source.replace(parts, function ($0, $1, $2, $3, $4) { | ||
var subName = $1 || $2; | ||
var capName = void 0; | ||
var intro = void 0; | ||
var localCapIndex = void 0; | ||
// Named subpattern | ||
if (subName) { | ||
if (!data.hasOwnProperty(subName)) { | ||
throw new ReferenceError('Undefined property ' + $0); | ||
} | ||
// Named subpattern was wrapped in a capturing group | ||
if ($1) { | ||
capName = outerCapNames[numOuterCaps]; | ||
outerCapsMap[++numOuterCaps] = ++numCaps; | ||
// If it's a named group, preserve the name. Otherwise, use the subpattern name | ||
// as the capture name | ||
intro = '(?<' + (capName || subName) + '>'; | ||
} else { | ||
intro = '(?:'; | ||
} | ||
numPriorCaps = numCaps; | ||
var rewrittenSubpattern = data[subName].pattern.replace(subParts, function (match, paren, backref) { | ||
// Capturing group | ||
if (paren) { | ||
capName = data[subName].names[numCaps - numPriorCaps]; | ||
++numCaps; | ||
// If the current capture has a name, preserve the name | ||
if (capName) { | ||
return '(?<' + capName + '>'; | ||
} | ||
// Backreference | ||
} else if (backref) { | ||
localCapIndex = +backref - 1; | ||
// Rewrite the backreference | ||
return data[subName].names[localCapIndex] ? | ||
// Need to preserve the backreference name in case using flag `n` | ||
'\\k<' + data[subName].names[localCapIndex] + '>' : '\\' + (+backref + numPriorCaps); | ||
} | ||
return match; | ||
}); | ||
return '' + intro + rewrittenSubpattern + ')'; | ||
} | ||
// Capturing group | ||
if ($3) { | ||
capName = outerCapNames[numOuterCaps]; | ||
outerCapsMap[++numOuterCaps] = ++numCaps; | ||
// If the current capture has a name, preserve the name | ||
if (capName) { | ||
return '(?<' + capName + '>'; | ||
} | ||
// Backreference | ||
} else if ($4) { | ||
localCapIndex = +$4 - 1; | ||
// Rewrite the backreference | ||
return outerCapNames[localCapIndex] ? | ||
// Need to preserve the backreference name in case using flag `n` | ||
'\\k<' + outerCapNames[localCapIndex] + '>' : '\\' + outerCapsMap[+$4]; | ||
} | ||
return $0; | ||
if (capName) { | ||
return "(?<".concat(capName, ">"); | ||
} // Backreference | ||
} else if (backref) { | ||
localCapIndex = +backref - 1; // Rewrite the backreference | ||
return data[subName].names[localCapIndex] ? // Need to preserve the backreference name in case using flag `n` | ||
"\\k<".concat(data[subName].names[localCapIndex], ">") : "\\".concat(+backref + numPriorCaps); | ||
} | ||
return match; | ||
}); | ||
return "".concat(intro).concat(rewrittenSubpattern, ")"); | ||
} // Capturing group | ||
return XRegExp(output, flags); | ||
}; | ||
if ($3) { | ||
capName = outerCapNames[numOuterCaps]; | ||
outerCapsMap[++numOuterCaps] = ++numCaps; // If the current capture has a name, preserve the name | ||
if (capName) { | ||
return "(?<".concat(capName, ">"); | ||
} // Backreference | ||
} else if ($4) { | ||
localCapIndex = +$4 - 1; // Rewrite the backreference | ||
return outerCapNames[localCapIndex] ? // Need to preserve the backreference name in case using flag `n` | ||
"\\k<".concat(outerCapNames[localCapIndex], ">") : "\\".concat(outerCapsMap[+$4]); | ||
} | ||
return $0; | ||
}); | ||
return XRegExp(output, flags); | ||
}; | ||
}; | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
@@ -1,202 +0,216 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
/*! | ||
* XRegExp.matchRecursive 4.1.1 | ||
* XRegExp.matchRecursive 4.2.0 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2009-present MIT License | ||
*/ | ||
var _default = function _default(XRegExp) { | ||
/** | ||
* Returns a match detail object composed of the provided values. | ||
* | ||
* @private | ||
*/ | ||
function row(name, value, start, end) { | ||
return { | ||
name: name, | ||
value: value, | ||
start: start, | ||
end: end | ||
}; | ||
} | ||
/** | ||
* Returns an array of match strings between outermost left and right delimiters, or an array of | ||
* objects with detailed match parts and position data. An error is thrown if delimiters are | ||
* unbalanced within the data. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} str String to search. | ||
* @param {String} left Left delimiter as an XRegExp pattern. | ||
* @param {String} right Right delimiter as an XRegExp pattern. | ||
* @param {String} [flags] Any native or XRegExp flags, used for the left and right delimiters. | ||
* @param {Object} [options] Lets you specify `valueNames` and `escapeChar` options. | ||
* @returns {Array} Array of matches, or an empty array. | ||
* @example | ||
* | ||
* // Basic usage | ||
* let str = '(t((e))s)t()(ing)'; | ||
* XRegExp.matchRecursive(str, '\\(', '\\)', 'g'); | ||
* // -> ['t((e))s', '', 'ing'] | ||
* | ||
* // Extended information mode with valueNames | ||
* str = 'Here is <div> <div>an</div></div> example'; | ||
* XRegExp.matchRecursive(str, '<div\\s*>', '</div>', 'gi', { | ||
* valueNames: ['between', 'left', 'match', 'right'] | ||
* }); | ||
* // -> [ | ||
* // {name: 'between', value: 'Here is ', start: 0, end: 8}, | ||
* // {name: 'left', value: '<div>', start: 8, end: 13}, | ||
* // {name: 'match', value: ' <div>an</div>', start: 13, end: 27}, | ||
* // {name: 'right', value: '</div>', start: 27, end: 33}, | ||
* // {name: 'between', value: ' example', start: 33, end: 41} | ||
* // ] | ||
* | ||
* // Omitting unneeded parts with null valueNames, and using escapeChar | ||
* str = '...{1}.\\{{function(x,y){return {y:x}}}'; | ||
* XRegExp.matchRecursive(str, '{', '}', 'g', { | ||
* valueNames: ['literal', null, 'value', null], | ||
* escapeChar: '\\' | ||
* }); | ||
* // -> [ | ||
* // {name: 'literal', value: '...', start: 0, end: 3}, | ||
* // {name: 'value', value: '1', start: 4, end: 5}, | ||
* // {name: 'literal', value: '.\\{', start: 6, end: 9}, | ||
* // {name: 'value', value: 'function(x,y){return {y:x}}', start: 10, end: 37} | ||
* // ] | ||
* | ||
* // Sticky mode via flag y | ||
* str = '<1><<<2>>><3>4<5>'; | ||
* XRegExp.matchRecursive(str, '<', '>', 'gy'); | ||
* // -> ['1', '<<2>>', '3'] | ||
*/ | ||
exports.default = function (XRegExp) { | ||
/** | ||
* Returns a match detail object composed of the provided values. | ||
* | ||
* @private | ||
*/ | ||
function row(name, value, start, end) { | ||
return { | ||
name: name, | ||
value: value, | ||
start: start, | ||
end: end | ||
}; | ||
XRegExp.matchRecursive = function (str, left, right, flags, options) { | ||
flags = flags || ''; | ||
options = options || {}; | ||
var global = flags.indexOf('g') !== -1; | ||
var sticky = flags.indexOf('y') !== -1; // Flag `y` is controlled internally | ||
var basicFlags = flags.replace(/y/g, ''); | ||
var _options = options, | ||
escapeChar = _options.escapeChar; | ||
var vN = options.valueNames; | ||
var output = []; | ||
var openTokens = 0; | ||
var delimStart = 0; | ||
var delimEnd = 0; | ||
var lastOuterEnd = 0; | ||
var outerStart; | ||
var innerStart; | ||
var leftMatch; | ||
var rightMatch; | ||
var esc; | ||
left = XRegExp(left, basicFlags); | ||
right = XRegExp(right, basicFlags); | ||
if (escapeChar) { | ||
if (escapeChar.length > 1) { | ||
throw new Error('Cannot use more than one escape character'); | ||
} | ||
escapeChar = XRegExp.escape(escapeChar); // Example of concatenated `esc` regex: | ||
// `escapeChar`: '%' | ||
// `left`: '<' | ||
// `right`: '>' | ||
// Regex is: /(?:%[\S\s]|(?:(?!<|>)[^%])+)+/ | ||
esc = new RegExp("(?:".concat(escapeChar, "[\\S\\s]|(?:(?!").concat( // Using `XRegExp.union` safely rewrites backreferences in `left` and `right`. | ||
// Intentionally not passing `basicFlags` to `XRegExp.union` since any syntax | ||
// transformation resulting from those flags was already applied to `left` and | ||
// `right` when they were passed through the XRegExp constructor above. | ||
XRegExp.union([left, right], '', { | ||
conjunction: 'or' | ||
}).source, ")[^").concat(escapeChar, "])+)+"), // Flags `gy` not needed here | ||
flags.replace(/[^imu]+/g, '')); | ||
} | ||
/** | ||
* Returns an array of match strings between outermost left and right delimiters, or an array of | ||
* objects with detailed match parts and position data. An error is thrown if delimiters are | ||
* unbalanced within the data. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} str String to search. | ||
* @param {String} left Left delimiter as an XRegExp pattern. | ||
* @param {String} right Right delimiter as an XRegExp pattern. | ||
* @param {String} [flags] Any native or XRegExp flags, used for the left and right delimiters. | ||
* @param {Object} [options] Lets you specify `valueNames` and `escapeChar` options. | ||
* @returns {Array} Array of matches, or an empty array. | ||
* @example | ||
* | ||
* // Basic usage | ||
* let str = '(t((e))s)t()(ing)'; | ||
* XRegExp.matchRecursive(str, '\\(', '\\)', 'g'); | ||
* // -> ['t((e))s', '', 'ing'] | ||
* | ||
* // Extended information mode with valueNames | ||
* str = 'Here is <div> <div>an</div></div> example'; | ||
* XRegExp.matchRecursive(str, '<div\\s*>', '</div>', 'gi', { | ||
* valueNames: ['between', 'left', 'match', 'right'] | ||
* }); | ||
* // -> [ | ||
* // {name: 'between', value: 'Here is ', start: 0, end: 8}, | ||
* // {name: 'left', value: '<div>', start: 8, end: 13}, | ||
* // {name: 'match', value: ' <div>an</div>', start: 13, end: 27}, | ||
* // {name: 'right', value: '</div>', start: 27, end: 33}, | ||
* // {name: 'between', value: ' example', start: 33, end: 41} | ||
* // ] | ||
* | ||
* // Omitting unneeded parts with null valueNames, and using escapeChar | ||
* str = '...{1}.\\{{function(x,y){return {y:x}}}'; | ||
* XRegExp.matchRecursive(str, '{', '}', 'g', { | ||
* valueNames: ['literal', null, 'value', null], | ||
* escapeChar: '\\' | ||
* }); | ||
* // -> [ | ||
* // {name: 'literal', value: '...', start: 0, end: 3}, | ||
* // {name: 'value', value: '1', start: 4, end: 5}, | ||
* // {name: 'literal', value: '.\\{', start: 6, end: 9}, | ||
* // {name: 'value', value: 'function(x,y){return {y:x}}', start: 10, end: 37} | ||
* // ] | ||
* | ||
* // Sticky mode via flag y | ||
* str = '<1><<<2>>><3>4<5>'; | ||
* XRegExp.matchRecursive(str, '<', '>', 'gy'); | ||
* // -> ['1', '<<2>>', '3'] | ||
*/ | ||
XRegExp.matchRecursive = function (str, left, right, flags, options) { | ||
flags = flags || ''; | ||
options = options || {}; | ||
var global = flags.indexOf('g') !== -1; | ||
var sticky = flags.indexOf('y') !== -1; | ||
// Flag `y` is controlled internally | ||
var basicFlags = flags.replace(/y/g, ''); | ||
var escapeChar = options.escapeChar; | ||
var vN = options.valueNames; | ||
var output = []; | ||
var openTokens = 0; | ||
var delimStart = 0; | ||
var delimEnd = 0; | ||
var lastOuterEnd = 0; | ||
var outerStart = void 0; | ||
var innerStart = void 0; | ||
var leftMatch = void 0; | ||
var rightMatch = void 0; | ||
var esc = void 0; | ||
left = XRegExp(left, basicFlags); | ||
right = XRegExp(right, basicFlags); | ||
while (true) { | ||
// If using an escape character, advance to the delimiter's next starting position, | ||
// skipping any escaped characters in between | ||
if (escapeChar) { | ||
delimEnd += (XRegExp.exec(str, esc, delimEnd, 'sticky') || [''])[0].length; | ||
} | ||
if (escapeChar) { | ||
if (escapeChar.length > 1) { | ||
throw new Error('Cannot use more than one escape character'); | ||
} | ||
escapeChar = XRegExp.escape(escapeChar); | ||
// Example of concatenated `esc` regex: | ||
// `escapeChar`: '%' | ||
// `left`: '<' | ||
// `right`: '>' | ||
// Regex is: /(?:%[\S\s]|(?:(?!<|>)[^%])+)+/ | ||
esc = new RegExp('(?:' + escapeChar + '[\\S\\s]|(?:(?!' + | ||
// Using `XRegExp.union` safely rewrites backreferences in `left` and `right`. | ||
// Intentionally not passing `basicFlags` to `XRegExp.union` since any syntax | ||
// transformation resulting from those flags was already applied to `left` and | ||
// `right` when they were passed through the XRegExp constructor above. | ||
XRegExp.union([left, right], '', { conjunction: 'or' }).source + ')[^' + escapeChar + '])+)+', | ||
// Flags `gy` not needed here | ||
flags.replace(/[^imu]+/g, '')); | ||
leftMatch = XRegExp.exec(str, left, delimEnd); | ||
rightMatch = XRegExp.exec(str, right, delimEnd); // Keep the leftmost match only | ||
if (leftMatch && rightMatch) { | ||
if (leftMatch.index <= rightMatch.index) { | ||
rightMatch = null; | ||
} else { | ||
leftMatch = null; | ||
} | ||
} // Paths (LM: leftMatch, RM: rightMatch, OT: openTokens): | ||
// LM | RM | OT | Result | ||
// 1 | 0 | 1 | loop | ||
// 1 | 0 | 0 | loop | ||
// 0 | 1 | 1 | loop | ||
// 0 | 1 | 0 | throw | ||
// 0 | 0 | 1 | throw | ||
// 0 | 0 | 0 | break | ||
// The paths above don't include the sticky mode special case. The loop ends after the | ||
// first completed match if not `global`. | ||
while (true) { | ||
// If using an escape character, advance to the delimiter's next starting position, | ||
// skipping any escaped characters in between | ||
if (escapeChar) { | ||
delimEnd += (XRegExp.exec(str, esc, delimEnd, 'sticky') || [''])[0].length; | ||
if (leftMatch || rightMatch) { | ||
delimStart = (leftMatch || rightMatch).index; | ||
delimEnd = delimStart + (leftMatch || rightMatch)[0].length; | ||
} else if (!openTokens) { | ||
break; | ||
} | ||
if (sticky && !openTokens && delimStart > lastOuterEnd) { | ||
break; | ||
} | ||
if (leftMatch) { | ||
if (!openTokens) { | ||
outerStart = delimStart; | ||
innerStart = delimEnd; | ||
} | ||
++openTokens; | ||
} else if (rightMatch && openTokens) { | ||
if (! --openTokens) { | ||
if (vN) { | ||
if (vN[0] && outerStart > lastOuterEnd) { | ||
output.push(row(vN[0], str.slice(lastOuterEnd, outerStart), lastOuterEnd, outerStart)); | ||
} | ||
leftMatch = XRegExp.exec(str, left, delimEnd); | ||
rightMatch = XRegExp.exec(str, right, delimEnd); | ||
// Keep the leftmost match only | ||
if (leftMatch && rightMatch) { | ||
if (leftMatch.index <= rightMatch.index) { | ||
rightMatch = null; | ||
} else { | ||
leftMatch = null; | ||
} | ||
if (vN[1]) { | ||
output.push(row(vN[1], str.slice(outerStart, innerStart), outerStart, innerStart)); | ||
} | ||
// Paths (LM: leftMatch, RM: rightMatch, OT: openTokens): | ||
// LM | RM | OT | Result | ||
// 1 | 0 | 1 | loop | ||
// 1 | 0 | 0 | loop | ||
// 0 | 1 | 1 | loop | ||
// 0 | 1 | 0 | throw | ||
// 0 | 0 | 1 | throw | ||
// 0 | 0 | 0 | break | ||
// The paths above don't include the sticky mode special case. The loop ends after the | ||
// first completed match if not `global`. | ||
if (leftMatch || rightMatch) { | ||
delimStart = (leftMatch || rightMatch).index; | ||
delimEnd = delimStart + (leftMatch || rightMatch)[0].length; | ||
} else if (!openTokens) { | ||
break; | ||
if (vN[2]) { | ||
output.push(row(vN[2], str.slice(innerStart, delimStart), innerStart, delimStart)); | ||
} | ||
if (sticky && !openTokens && delimStart > lastOuterEnd) { | ||
break; | ||
if (vN[3]) { | ||
output.push(row(vN[3], str.slice(delimStart, delimEnd), delimStart, delimEnd)); | ||
} | ||
if (leftMatch) { | ||
if (!openTokens) { | ||
outerStart = delimStart; | ||
innerStart = delimEnd; | ||
} | ||
++openTokens; | ||
} else if (rightMatch && openTokens) { | ||
if (! --openTokens) { | ||
if (vN) { | ||
if (vN[0] && outerStart > lastOuterEnd) { | ||
output.push(row(vN[0], str.slice(lastOuterEnd, outerStart), lastOuterEnd, outerStart)); | ||
} | ||
if (vN[1]) { | ||
output.push(row(vN[1], str.slice(outerStart, innerStart), outerStart, innerStart)); | ||
} | ||
if (vN[2]) { | ||
output.push(row(vN[2], str.slice(innerStart, delimStart), innerStart, delimStart)); | ||
} | ||
if (vN[3]) { | ||
output.push(row(vN[3], str.slice(delimStart, delimEnd), delimStart, delimEnd)); | ||
} | ||
} else { | ||
output.push(str.slice(innerStart, delimStart)); | ||
} | ||
lastOuterEnd = delimEnd; | ||
if (!global) { | ||
break; | ||
} | ||
} | ||
} else { | ||
throw new Error('Unbalanced delimiter found in string'); | ||
} | ||
// If the delimiter matched an empty string, avoid an infinite loop | ||
if (delimStart === delimEnd) { | ||
++delimEnd; | ||
} | ||
} | ||
} else { | ||
output.push(str.slice(innerStart, delimStart)); | ||
} | ||
if (global && !sticky && vN && vN[0] && str.length > lastOuterEnd) { | ||
output.push(row(vN[0], str.slice(lastOuterEnd), lastOuterEnd, str.length)); | ||
lastOuterEnd = delimEnd; | ||
if (!global) { | ||
break; | ||
} | ||
} | ||
} else { | ||
throw new Error('Unbalanced delimiter found in string'); | ||
} // If the delimiter matched an empty string, avoid an infinite loop | ||
return output; | ||
}; | ||
if (delimStart === delimEnd) { | ||
++delimEnd; | ||
} | ||
} | ||
if (global && !sticky && vN && vN[0] && str.length > lastOuterEnd) { | ||
output.push(row(vN[0], str.slice(lastOuterEnd), lastOuterEnd, str.length)); | ||
} | ||
return output; | ||
}; | ||
}; | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
@@ -1,247 +0,273 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
/*! | ||
* XRegExp Unicode Base 4.1.1 | ||
* XRegExp Unicode Base 4.2.0 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2008-present MIT License | ||
*/ | ||
var _default = function _default(XRegExp) { | ||
/** | ||
* Adds base support for Unicode matching: | ||
* - Adds syntax `\p{..}` for matching Unicode tokens. Tokens can be inverted using `\P{..}` or | ||
* `\p{^..}`. Token names ignore case, spaces, hyphens, and underscores. You can omit the | ||
* braces for token names that are a single letter (e.g. `\pL` or `PL`). | ||
* - Adds flag A (astral), which enables 21-bit Unicode support. | ||
* - Adds the `XRegExp.addUnicodeData` method used by other addons to provide character data. | ||
* | ||
* Unicode Base relies on externally provided Unicode character data. Official addons are | ||
* available to provide data for Unicode categories, scripts, blocks, and properties. | ||
* | ||
* @requires XRegExp | ||
*/ | ||
// ==--------------------------== | ||
// Private stuff | ||
// ==--------------------------== | ||
// Storage for Unicode data | ||
var unicode = {}; // Reuse utils | ||
exports.default = function (XRegExp) { | ||
var dec = XRegExp._dec; | ||
var hex = XRegExp._hex; | ||
var pad4 = XRegExp._pad4; // Generates a token lookup name: lowercase, with hyphens, spaces, and underscores removed | ||
/** | ||
* Adds base support for Unicode matching: | ||
* - Adds syntax `\p{..}` for matching Unicode tokens. Tokens can be inverted using `\P{..}` or | ||
* `\p{^..}`. Token names ignore case, spaces, hyphens, and underscores. You can omit the | ||
* braces for token names that are a single letter (e.g. `\pL` or `PL`). | ||
* - Adds flag A (astral), which enables 21-bit Unicode support. | ||
* - Adds the `XRegExp.addUnicodeData` method used by other addons to provide character data. | ||
* | ||
* Unicode Base relies on externally provided Unicode character data. Official addons are | ||
* available to provide data for Unicode categories, scripts, blocks, and properties. | ||
* | ||
* @requires XRegExp | ||
*/ | ||
function normalize(name) { | ||
return name.replace(/[- _]+/g, '').toLowerCase(); | ||
} // Gets the decimal code of a literal code unit, \xHH, \uHHHH, or a backslash-escaped literal | ||
// ==--------------------------== | ||
// Private stuff | ||
// ==--------------------------== | ||
// Storage for Unicode data | ||
var unicode = {}; | ||
function charCode(chr) { | ||
var esc = /^\\[xu](.+)/.exec(chr); | ||
return esc ? dec(esc[1]) : chr.charCodeAt(chr[0] === '\\' ? 1 : 0); | ||
} // Inverts a list of ordered BMP characters and ranges | ||
// Reuse utils | ||
var dec = XRegExp._dec; | ||
var hex = XRegExp._hex; | ||
var pad4 = XRegExp._pad4; | ||
// Generates a token lookup name: lowercase, with hyphens, spaces, and underscores removed | ||
function normalize(name) { | ||
return name.replace(/[- _]+/g, '').toLowerCase(); | ||
} | ||
function invertBmp(range) { | ||
var output = ''; | ||
var lastEnd = -1; | ||
XRegExp.forEach(range, /(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/, function (m) { | ||
var start = charCode(m[1]); | ||
// Gets the decimal code of a literal code unit, \xHH, \uHHHH, or a backslash-escaped literal | ||
function charCode(chr) { | ||
var esc = /^\\[xu](.+)/.exec(chr); | ||
return esc ? dec(esc[1]) : chr.charCodeAt(chr[0] === '\\' ? 1 : 0); | ||
if (start > lastEnd + 1) { | ||
output += "\\u".concat(pad4(hex(lastEnd + 1))); | ||
if (start > lastEnd + 2) { | ||
output += "-\\u".concat(pad4(hex(start - 1))); | ||
} | ||
} | ||
lastEnd = charCode(m[2] || m[1]); | ||
}); | ||
if (lastEnd < 0xFFFF) { | ||
output += "\\u".concat(pad4(hex(lastEnd + 1))); | ||
if (lastEnd < 0xFFFE) { | ||
output += '-\\uFFFF'; | ||
} | ||
} | ||
// Inverts a list of ordered BMP characters and ranges | ||
function invertBmp(range) { | ||
var output = ''; | ||
var lastEnd = -1; | ||
return output; | ||
} // Generates an inverted BMP range on first use | ||
XRegExp.forEach(range, /(\\x..|\\u....|\\?[\s\S])(?:-(\\x..|\\u....|\\?[\s\S]))?/, function (m) { | ||
var start = charCode(m[1]); | ||
if (start > lastEnd + 1) { | ||
output += '\\u' + pad4(hex(lastEnd + 1)); | ||
if (start > lastEnd + 2) { | ||
output += '-\\u' + pad4(hex(start - 1)); | ||
} | ||
} | ||
lastEnd = charCode(m[2] || m[1]); | ||
}); | ||
if (lastEnd < 0xFFFF) { | ||
output += '\\u' + pad4(hex(lastEnd + 1)); | ||
if (lastEnd < 0xFFFE) { | ||
output += '-\\uFFFF'; | ||
} | ||
} | ||
function cacheInvertedBmp(slug) { | ||
var prop = 'b!'; | ||
return unicode[slug][prop] || (unicode[slug][prop] = invertBmp(unicode[slug].bmp)); | ||
} // Combines and optionally negates BMP and astral data | ||
return output; | ||
function buildAstral(slug, isNegated) { | ||
var item = unicode[slug]; | ||
var combined = ''; | ||
if (item.bmp && !item.isBmpLast) { | ||
combined = "[".concat(item.bmp, "]").concat(item.astral ? '|' : ''); | ||
} | ||
// Generates an inverted BMP range on first use | ||
function cacheInvertedBmp(slug) { | ||
var prop = 'b!'; | ||
return unicode[slug][prop] || (unicode[slug][prop] = invertBmp(unicode[slug].bmp)); | ||
if (item.astral) { | ||
combined += item.astral; | ||
} | ||
// Combines and optionally negates BMP and astral data | ||
function buildAstral(slug, isNegated) { | ||
var item = unicode[slug]; | ||
var combined = ''; | ||
if (item.isBmpLast && item.bmp) { | ||
combined += "".concat(item.astral ? '|' : '', "[").concat(item.bmp, "]"); | ||
} // Astral Unicode tokens always match a code point, never a code unit | ||
if (item.bmp && !item.isBmpLast) { | ||
combined = '[' + item.bmp + ']' + (item.astral ? '|' : ''); | ||
} | ||
if (item.astral) { | ||
combined += item.astral; | ||
} | ||
if (item.isBmpLast && item.bmp) { | ||
combined += (item.astral ? '|' : '') + '[' + item.bmp + ']'; | ||
} | ||
// Astral Unicode tokens always match a code point, never a code unit | ||
return isNegated ? '(?:(?!' + combined + ')(?:[\uD800-\uDBFF][\uDC00-\uDFFF]|[\0-\uFFFF]))' : '(?:' + combined + ')'; | ||
return isNegated ? "(?:(?!".concat(combined, ")(?:[\uD800-\uDBFF][\uDC00-\uDFFF]|[\0-\uFFFF]))") : "(?:".concat(combined, ")"); | ||
} // Builds a complete astral pattern on first use | ||
function cacheAstral(slug, isNegated) { | ||
var prop = isNegated ? 'a!' : 'a='; | ||
return unicode[slug][prop] || (unicode[slug][prop] = buildAstral(slug, isNegated)); | ||
} // ==--------------------------== | ||
// Core functionality | ||
// ==--------------------------== | ||
/* | ||
* Add astral mode (flag A) and Unicode token syntax: `\p{..}`, `\P{..}`, `\p{^..}`, `\pC`. | ||
*/ | ||
XRegExp.addToken( // Use `*` instead of `+` to avoid capturing `^` as the token name in `\p{^}` | ||
/\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/, function (match, scope, flags) { | ||
var ERR_DOUBLE_NEG = 'Invalid double negation '; | ||
var ERR_UNKNOWN_NAME = 'Unknown Unicode token '; | ||
var ERR_UNKNOWN_REF = 'Unicode token missing data '; | ||
var ERR_ASTRAL_ONLY = 'Astral mode required for Unicode token '; | ||
var ERR_ASTRAL_IN_CLASS = 'Astral mode does not support Unicode tokens within character classes'; // Negated via \P{..} or \p{^..} | ||
var isNegated = match[1] === 'P' || !!match[2]; // Switch from BMP (0-FFFF) to astral (0-10FFFF) mode via flag A | ||
var isAstralMode = flags.indexOf('A') !== -1; // Token lookup name. Check `[4]` first to avoid passing `undefined` via `\p{}` | ||
var slug = normalize(match[4] || match[3]); // Token data object | ||
var item = unicode[slug]; | ||
if (match[1] === 'P' && match[2]) { | ||
throw new SyntaxError(ERR_DOUBLE_NEG + match[0]); | ||
} | ||
// Builds a complete astral pattern on first use | ||
function cacheAstral(slug, isNegated) { | ||
var prop = isNegated ? 'a!' : 'a='; | ||
return unicode[slug][prop] || (unicode[slug][prop] = buildAstral(slug, isNegated)); | ||
if (!unicode.hasOwnProperty(slug)) { | ||
throw new SyntaxError(ERR_UNKNOWN_NAME + match[0]); | ||
} // Switch to the negated form of the referenced Unicode token | ||
if (item.inverseOf) { | ||
slug = normalize(item.inverseOf); | ||
if (!unicode.hasOwnProperty(slug)) { | ||
throw new ReferenceError("".concat(ERR_UNKNOWN_REF + match[0], " -> ").concat(item.inverseOf)); | ||
} | ||
item = unicode[slug]; | ||
isNegated = !isNegated; | ||
} | ||
// ==--------------------------== | ||
// Core functionality | ||
// ==--------------------------== | ||
if (!(item.bmp || isAstralMode)) { | ||
throw new SyntaxError(ERR_ASTRAL_ONLY + match[0]); | ||
} | ||
/* | ||
* Add astral mode (flag A) and Unicode token syntax: `\p{..}`, `\P{..}`, `\p{^..}`, `\pC`. | ||
*/ | ||
XRegExp.addToken( | ||
// Use `*` instead of `+` to avoid capturing `^` as the token name in `\p{^}` | ||
/\\([pP])(?:{(\^?)([^}]*)}|([A-Za-z]))/, function (match, scope, flags) { | ||
var ERR_DOUBLE_NEG = 'Invalid double negation '; | ||
var ERR_UNKNOWN_NAME = 'Unknown Unicode token '; | ||
var ERR_UNKNOWN_REF = 'Unicode token missing data '; | ||
var ERR_ASTRAL_ONLY = 'Astral mode required for Unicode token '; | ||
var ERR_ASTRAL_IN_CLASS = 'Astral mode does not support Unicode tokens within character classes'; | ||
// Negated via \P{..} or \p{^..} | ||
var isNegated = match[1] === 'P' || !!match[2]; | ||
// Switch from BMP (0-FFFF) to astral (0-10FFFF) mode via flag A | ||
var isAstralMode = flags.indexOf('A') !== -1; | ||
// Token lookup name. Check `[4]` first to avoid passing `undefined` via `\p{}` | ||
var slug = normalize(match[4] || match[3]); | ||
// Token data object | ||
var item = unicode[slug]; | ||
if (isAstralMode) { | ||
if (scope === 'class') { | ||
throw new SyntaxError(ERR_ASTRAL_IN_CLASS); | ||
} | ||
if (match[1] === 'P' && match[2]) { | ||
throw new SyntaxError(ERR_DOUBLE_NEG + match[0]); | ||
} | ||
if (!unicode.hasOwnProperty(slug)) { | ||
throw new SyntaxError(ERR_UNKNOWN_NAME + match[0]); | ||
} | ||
return cacheAstral(slug, isNegated); | ||
} | ||
// Switch to the negated form of the referenced Unicode token | ||
if (item.inverseOf) { | ||
slug = normalize(item.inverseOf); | ||
if (!unicode.hasOwnProperty(slug)) { | ||
throw new ReferenceError(ERR_UNKNOWN_REF + match[0] + ' -> ' + item.inverseOf); | ||
} | ||
item = unicode[slug]; | ||
isNegated = !isNegated; | ||
} | ||
return scope === 'class' ? isNegated ? cacheInvertedBmp(slug) : item.bmp : "".concat((isNegated ? '[^' : '[') + item.bmp, "]"); | ||
}, { | ||
scope: 'all', | ||
optionalFlags: 'A', | ||
leadChar: '\\' | ||
}); | ||
/** | ||
* Adds to the list of Unicode tokens that XRegExp regexes can match via `\p` or `\P`. | ||
* | ||
* @memberOf XRegExp | ||
* @param {Array} data Objects with named character ranges. Each object may have properties | ||
* `name`, `alias`, `isBmpLast`, `inverseOf`, `bmp`, and `astral`. All but `name` are | ||
* optional, although one of `bmp` or `astral` is required (unless `inverseOf` is set). If | ||
* `astral` is absent, the `bmp` data is used for BMP and astral modes. If `bmp` is absent, | ||
* the name errors in BMP mode but works in astral mode. If both `bmp` and `astral` are | ||
* provided, the `bmp` data only is used in BMP mode, and the combination of `bmp` and | ||
* `astral` data is used in astral mode. `isBmpLast` is needed when a token matches orphan | ||
* high surrogates *and* uses surrogate pairs to match astral code points. The `bmp` and | ||
* `astral` data should be a combination of literal characters and `\xHH` or `\uHHHH` escape | ||
* sequences, with hyphens to create ranges. Any regex metacharacters in the data should be | ||
* escaped, apart from range-creating hyphens. The `astral` data can additionally use | ||
* character classes and alternation, and should use surrogate pairs to represent astral code | ||
* points. `inverseOf` can be used to avoid duplicating character data if a Unicode token is | ||
* defined as the exact inverse of another token. | ||
* @example | ||
* | ||
* // Basic use | ||
* XRegExp.addUnicodeData([{ | ||
* name: 'XDigit', | ||
* alias: 'Hexadecimal', | ||
* bmp: '0-9A-Fa-f' | ||
* }]); | ||
* XRegExp('\\p{XDigit}:\\p{Hexadecimal}+').test('0:3D'); // -> true | ||
*/ | ||
if (!(item.bmp || isAstralMode)) { | ||
throw new SyntaxError(ERR_ASTRAL_ONLY + match[0]); | ||
XRegExp.addUnicodeData = function (data) { | ||
var ERR_NO_NAME = 'Unicode token requires name'; | ||
var ERR_NO_DATA = 'Unicode token has no character data '; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = data[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var item = _step.value; | ||
if (!item.name) { | ||
throw new Error(ERR_NO_NAME); | ||
} | ||
if (isAstralMode) { | ||
if (scope === 'class') { | ||
throw new SyntaxError(ERR_ASTRAL_IN_CLASS); | ||
} | ||
return cacheAstral(slug, isNegated); | ||
if (!(item.inverseOf || item.bmp || item.astral)) { | ||
throw new Error(ERR_NO_DATA + item.name); | ||
} | ||
return scope === 'class' ? isNegated ? cacheInvertedBmp(slug) : item.bmp : (isNegated ? '[^' : '[') + item.bmp + ']'; | ||
}, { | ||
scope: 'all', | ||
optionalFlags: 'A', | ||
leadChar: '\\' | ||
}); | ||
unicode[normalize(item.name)] = item; | ||
/** | ||
* Adds to the list of Unicode tokens that XRegExp regexes can match via `\p` or `\P`. | ||
* | ||
* @memberOf XRegExp | ||
* @param {Array} data Objects with named character ranges. Each object may have properties | ||
* `name`, `alias`, `isBmpLast`, `inverseOf`, `bmp`, and `astral`. All but `name` are | ||
* optional, although one of `bmp` or `astral` is required (unless `inverseOf` is set). If | ||
* `astral` is absent, the `bmp` data is used for BMP and astral modes. If `bmp` is absent, | ||
* the name errors in BMP mode but works in astral mode. If both `bmp` and `astral` are | ||
* provided, the `bmp` data only is used in BMP mode, and the combination of `bmp` and | ||
* `astral` data is used in astral mode. `isBmpLast` is needed when a token matches orphan | ||
* high surrogates *and* uses surrogate pairs to match astral code points. The `bmp` and | ||
* `astral` data should be a combination of literal characters and `\xHH` or `\uHHHH` escape | ||
* sequences, with hyphens to create ranges. Any regex metacharacters in the data should be | ||
* escaped, apart from range-creating hyphens. The `astral` data can additionally use | ||
* character classes and alternation, and should use surrogate pairs to represent astral code | ||
* points. `inverseOf` can be used to avoid duplicating character data if a Unicode token is | ||
* defined as the exact inverse of another token. | ||
* @example | ||
* | ||
* // Basic use | ||
* XRegExp.addUnicodeData([{ | ||
* name: 'XDigit', | ||
* alias: 'Hexadecimal', | ||
* bmp: '0-9A-Fa-f' | ||
* }]); | ||
* XRegExp('\\p{XDigit}:\\p{Hexadecimal}+').test('0:3D'); // -> true | ||
*/ | ||
XRegExp.addUnicodeData = function (data) { | ||
var ERR_NO_NAME = 'Unicode token requires name'; | ||
var ERR_NO_DATA = 'Unicode token has no character data '; | ||
var item = void 0; | ||
if (item.alias) { | ||
unicode[normalize(item.alias)] = item; | ||
} | ||
} // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and | ||
// flags might now produce different results | ||
for (var i = 0; i < data.length; ++i) { | ||
item = data[i]; | ||
if (!item.name) { | ||
throw new Error(ERR_NO_NAME); | ||
} | ||
if (!(item.inverseOf || item.bmp || item.astral)) { | ||
throw new Error(ERR_NO_DATA + item.name); | ||
} | ||
unicode[normalize(item.name)] = item; | ||
if (item.alias) { | ||
unicode[normalize(item.alias)] = item; | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return != null) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
// Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and | ||
// flags might now produce different results | ||
XRegExp.cache.flush('patterns'); | ||
}; | ||
XRegExp.cache.flush('patterns'); | ||
}; | ||
/** | ||
* @ignore | ||
* | ||
* Return a reference to the internal Unicode definition structure for the given Unicode | ||
* Property if the given name is a legal Unicode Property for use in XRegExp `\p` or `\P` regex | ||
* constructs. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} name Name by which the Unicode Property may be recognized (case-insensitive), | ||
* e.g. `'N'` or `'Number'`. The given name is matched against all registered Unicode | ||
* Properties and Property Aliases. | ||
* @returns {Object} Reference to definition structure when the name matches a Unicode Property. | ||
* | ||
* @note | ||
* For more info on Unicode Properties, see also http://unicode.org/reports/tr18/#Categories. | ||
* | ||
* @note | ||
* This method is *not* part of the officially documented API and may change or be removed in | ||
* the future. It is meant for userland code that wishes to reuse the (large) internal Unicode | ||
* structures set up by XRegExp. | ||
*/ | ||
/** | ||
* @ignore | ||
* | ||
* Return a reference to the internal Unicode definition structure for the given Unicode | ||
* Property if the given name is a legal Unicode Property for use in XRegExp `\p` or `\P` regex | ||
* constructs. | ||
* | ||
* @memberOf XRegExp | ||
* @param {String} name Name by which the Unicode Property may be recognized (case-insensitive), | ||
* e.g. `'N'` or `'Number'`. The given name is matched against all registered Unicode | ||
* Properties and Property Aliases. | ||
* @returns {Object} Reference to definition structure when the name matches a Unicode Property. | ||
* | ||
* @note | ||
* For more info on Unicode Properties, see also http://unicode.org/reports/tr18/#Categories. | ||
* | ||
* @note | ||
* This method is *not* part of the officially documented API and may change or be removed in | ||
* the future. It is meant for userland code that wishes to reuse the (large) internal Unicode | ||
* structures set up by XRegExp. | ||
*/ | ||
XRegExp._getUnicodeProperty = function (name) { | ||
var slug = normalize(name); | ||
return unicode[slug]; | ||
}; | ||
XRegExp._getUnicodeProperty = function (name) { | ||
var slug = normalize(name); | ||
return unicode[slug]; | ||
}; | ||
}; | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -6,11 +6,15 @@ Object.defineProperty(exports, "__esModule", { | ||
}); | ||
exports.default = void 0; | ||
var _blocks = require('../../tools/output/blocks'); | ||
var _blocks = _interopRequireDefault(require("../../tools/output/blocks")); | ||
var _blocks2 = _interopRequireDefault(_blocks); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = function (XRegExp) { | ||
/*! | ||
* XRegExp Unicode Blocks 4.2.0 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2010-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
var _default = function _default(XRegExp) { | ||
/** | ||
@@ -21,7 +25,6 @@ * Adds support for all Unicode blocks. Block names use the prefix 'In'. E.g., | ||
* | ||
* Uses Unicode 10.0.0. | ||
* Uses Unicode 11.0.0. | ||
* | ||
* @requires XRegExp, Unicode Base | ||
*/ | ||
if (!XRegExp.addUnicodeData) { | ||
@@ -31,10 +34,6 @@ throw new ReferenceError('Unicode Base must be loaded before Unicode Blocks'); | ||
XRegExp.addUnicodeData(_blocks2.default); | ||
}; /*! | ||
* XRegExp Unicode Blocks 4.1.1 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2010-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
XRegExp.addUnicodeData(_blocks.default); | ||
}; | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -6,11 +6,15 @@ Object.defineProperty(exports, "__esModule", { | ||
}); | ||
exports.default = void 0; | ||
var _categories = require('../../tools/output/categories'); | ||
var _categories = _interopRequireDefault(require("../../tools/output/categories")); | ||
var _categories2 = _interopRequireDefault(_categories); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = function (XRegExp) { | ||
/*! | ||
* XRegExp Unicode Categories 4.2.0 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2010-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
var _default = function _default(XRegExp) { | ||
/** | ||
@@ -21,7 +25,6 @@ * Adds support for Unicode's general categories. E.g., `\p{Lu}` or `\p{Uppercase Letter}`. See | ||
* | ||
* Uses Unicode 10.0.0. | ||
* Uses Unicode 11.0.0. | ||
* | ||
* @requires XRegExp, Unicode Base | ||
*/ | ||
if (!XRegExp.addUnicodeData) { | ||
@@ -31,10 +34,6 @@ throw new ReferenceError('Unicode Base must be loaded before Unicode Categories'); | ||
XRegExp.addUnicodeData(_categories2.default); | ||
}; /*! | ||
* XRegExp Unicode Categories 4.1.1 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2010-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
XRegExp.addUnicodeData(_categories.default); | ||
}; | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
@@ -1,76 +0,73 @@ | ||
'use strict'; | ||
"use strict"; | ||
Object.defineProperty(exports, "__esModule", { | ||
value: true | ||
value: true | ||
}); | ||
exports.default = void 0; | ||
var _properties = require('../../tools/output/properties'); | ||
var _properties = _interopRequireDefault(require("../../tools/output/properties")); | ||
var _properties2 = _interopRequireDefault(_properties); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = function (XRegExp) { | ||
/*! | ||
* XRegExp Unicode Properties 4.2.0 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2012-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
var _default = function _default(XRegExp) { | ||
/** | ||
* Adds properties to meet the UTS #18 Level 1 RL1.2 requirements for Unicode regex support. See | ||
* <http://unicode.org/reports/tr18/#RL1.2>. Following are definitions of these properties from | ||
* UAX #44 <http://unicode.org/reports/tr44/>: | ||
* | ||
* - Alphabetic | ||
* Characters with the Alphabetic property. Generated from: Lowercase + Uppercase + Lt + Lm + | ||
* Lo + Nl + Other_Alphabetic. | ||
* | ||
* - Default_Ignorable_Code_Point | ||
* For programmatic determination of default ignorable code points. New characters that should | ||
* be ignored in rendering (unless explicitly supported) will be assigned in these ranges, | ||
* permitting programs to correctly handle the default rendering of such characters when not | ||
* otherwise supported. | ||
* | ||
* - Lowercase | ||
* Characters with the Lowercase property. Generated from: Ll + Other_Lowercase. | ||
* | ||
* - Noncharacter_Code_Point | ||
* Code points permanently reserved for internal use. | ||
* | ||
* - Uppercase | ||
* Characters with the Uppercase property. Generated from: Lu + Other_Uppercase. | ||
* | ||
* - White_Space | ||
* Spaces, separator characters and other control characters which should be treated by | ||
* programming languages as "white space" for the purpose of parsing elements. | ||
* | ||
* The properties ASCII, Any, and Assigned are also included but are not defined in UAX #44. UTS | ||
* #18 RL1.2 additionally requires support for Unicode scripts and general categories. These are | ||
* included in XRegExp's Unicode Categories and Unicode Scripts addons. | ||
* | ||
* Token names are case insensitive, and any spaces, hyphens, and underscores are ignored. | ||
* | ||
* Uses Unicode 11.0.0. | ||
* | ||
* @requires XRegExp, Unicode Base | ||
*/ | ||
if (!XRegExp.addUnicodeData) { | ||
throw new ReferenceError('Unicode Base must be loaded before Unicode Properties'); | ||
} | ||
/** | ||
* Adds properties to meet the UTS #18 Level 1 RL1.2 requirements for Unicode regex support. See | ||
* <http://unicode.org/reports/tr18/#RL1.2>. Following are definitions of these properties from | ||
* UAX #44 <http://unicode.org/reports/tr44/>: | ||
* | ||
* - Alphabetic | ||
* Characters with the Alphabetic property. Generated from: Lowercase + Uppercase + Lt + Lm + | ||
* Lo + Nl + Other_Alphabetic. | ||
* | ||
* - Default_Ignorable_Code_Point | ||
* For programmatic determination of default ignorable code points. New characters that should | ||
* be ignored in rendering (unless explicitly supported) will be assigned in these ranges, | ||
* permitting programs to correctly handle the default rendering of such characters when not | ||
* otherwise supported. | ||
* | ||
* - Lowercase | ||
* Characters with the Lowercase property. Generated from: Ll + Other_Lowercase. | ||
* | ||
* - Noncharacter_Code_Point | ||
* Code points permanently reserved for internal use. | ||
* | ||
* - Uppercase | ||
* Characters with the Uppercase property. Generated from: Lu + Other_Uppercase. | ||
* | ||
* - White_Space | ||
* Spaces, separator characters and other control characters which should be treated by | ||
* programming languages as "white space" for the purpose of parsing elements. | ||
* | ||
* The properties ASCII, Any, and Assigned are also included but are not defined in UAX #44. UTS | ||
* #18 RL1.2 additionally requires support for Unicode scripts and general categories. These are | ||
* included in XRegExp's Unicode Categories and Unicode Scripts addons. | ||
* | ||
* Token names are case insensitive, and any spaces, hyphens, and underscores are ignored. | ||
* | ||
* Uses Unicode 10.0.0. | ||
* | ||
* @requires XRegExp, Unicode Base | ||
*/ | ||
var unicodeData = _properties.default; // Add non-generated data | ||
if (!XRegExp.addUnicodeData) { | ||
throw new ReferenceError('Unicode Base must be loaded before Unicode Properties'); | ||
} | ||
unicodeData.push({ | ||
name: 'Assigned', | ||
// Since this is defined as the inverse of Unicode category Cn (Unassigned), the Unicode | ||
// Categories addon is required to use this property | ||
inverseOf: 'Cn' | ||
}); | ||
XRegExp.addUnicodeData(unicodeData); | ||
}; | ||
var unicodeData = _properties2.default; | ||
// Add non-generated data | ||
unicodeData.push({ | ||
name: 'Assigned', | ||
// Since this is defined as the inverse of Unicode category Cn (Unassigned), the Unicode | ||
// Categories addon is required to use this property | ||
inverseOf: 'Cn' | ||
}); | ||
XRegExp.addUnicodeData(unicodeData); | ||
}; /*! | ||
* XRegExp Unicode Properties 4.1.1 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2012-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -6,11 +6,15 @@ Object.defineProperty(exports, "__esModule", { | ||
}); | ||
exports.default = void 0; | ||
var _scripts = require('../../tools/output/scripts'); | ||
var _scripts = _interopRequireDefault(require("../../tools/output/scripts")); | ||
var _scripts2 = _interopRequireDefault(_scripts); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
exports.default = function (XRegExp) { | ||
/*! | ||
* XRegExp Unicode Scripts 4.2.0 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2010-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
var _default = function _default(XRegExp) { | ||
/** | ||
@@ -20,7 +24,6 @@ * Adds support for all Unicode scripts. E.g., `\p{Latin}`. Token names are case insensitive, | ||
* | ||
* Uses Unicode 10.0.0. | ||
* Uses Unicode 11.0.0. | ||
* | ||
* @requires XRegExp, Unicode Base | ||
*/ | ||
if (!XRegExp.addUnicodeData) { | ||
@@ -30,10 +33,6 @@ throw new ReferenceError('Unicode Base must be loaded before Unicode Scripts'); | ||
XRegExp.addUnicodeData(_scripts2.default); | ||
}; /*! | ||
* XRegExp Unicode Scripts 4.1.1 | ||
* <xregexp.com> | ||
* Steven Levithan (c) 2010-present MIT License | ||
* Unicode data by Mathias Bynens <mathiasbynens.be> | ||
*/ | ||
XRegExp.addUnicodeData(_scripts.default); | ||
}; | ||
module.exports = exports['default']; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
@@ -1,2 +0,2 @@ | ||
'use strict'; | ||
"use strict"; | ||
@@ -6,46 +6,31 @@ Object.defineProperty(exports, "__esModule", { | ||
}); | ||
exports.default = void 0; | ||
var _xregexp = require('./xregexp'); | ||
var _xregexp = _interopRequireDefault(require("./xregexp")); | ||
var _xregexp2 = _interopRequireDefault(_xregexp); | ||
var _build = _interopRequireDefault(require("./addons/build")); | ||
var _build = require('./addons/build'); | ||
var _matchrecursive = _interopRequireDefault(require("./addons/matchrecursive")); | ||
var _build2 = _interopRequireDefault(_build); | ||
var _unicodeBase = _interopRequireDefault(require("./addons/unicode-base")); | ||
var _matchrecursive = require('./addons/matchrecursive'); | ||
var _unicodeBlocks = _interopRequireDefault(require("./addons/unicode-blocks")); | ||
var _matchrecursive2 = _interopRequireDefault(_matchrecursive); | ||
var _unicodeCategories = _interopRequireDefault(require("./addons/unicode-categories")); | ||
var _unicodeBase = require('./addons/unicode-base'); | ||
var _unicodeProperties = _interopRequireDefault(require("./addons/unicode-properties")); | ||
var _unicodeBase2 = _interopRequireDefault(_unicodeBase); | ||
var _unicodeScripts = _interopRequireDefault(require("./addons/unicode-scripts")); | ||
var _unicodeBlocks = require('./addons/unicode-blocks'); | ||
var _unicodeBlocks2 = _interopRequireDefault(_unicodeBlocks); | ||
var _unicodeCategories = require('./addons/unicode-categories'); | ||
var _unicodeCategories2 = _interopRequireDefault(_unicodeCategories); | ||
var _unicodeProperties = require('./addons/unicode-properties'); | ||
var _unicodeProperties2 = _interopRequireDefault(_unicodeProperties); | ||
var _unicodeScripts = require('./addons/unicode-scripts'); | ||
var _unicodeScripts2 = _interopRequireDefault(_unicodeScripts); | ||
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } | ||
(0, _build2.default)(_xregexp2.default); | ||
(0, _matchrecursive2.default)(_xregexp2.default); | ||
(0, _unicodeBase2.default)(_xregexp2.default); | ||
(0, _unicodeBlocks2.default)(_xregexp2.default); | ||
(0, _unicodeCategories2.default)(_xregexp2.default); | ||
(0, _unicodeProperties2.default)(_xregexp2.default); | ||
(0, _unicodeScripts2.default)(_xregexp2.default); | ||
exports.default = _xregexp2.default; | ||
module.exports = exports['default']; | ||
(0, _build.default)(_xregexp.default); | ||
(0, _matchrecursive.default)(_xregexp.default); | ||
(0, _unicodeBase.default)(_xregexp.default); | ||
(0, _unicodeBlocks.default)(_xregexp.default); | ||
(0, _unicodeCategories.default)(_xregexp.default); | ||
(0, _unicodeProperties.default)(_xregexp.default); | ||
(0, _unicodeScripts.default)(_xregexp.default); | ||
var _default = _xregexp.default; | ||
exports.default = _default; | ||
module.exports = exports["default"]; |
{ | ||
"name": "xregexp", | ||
"version": "4.1.1", | ||
"version": "4.2.0", | ||
"description": "Extended regular expressions", | ||
@@ -22,3 +22,3 @@ "homepage": "http://xregexp.com/", | ||
"lib", | ||
"tools", | ||
"tools/output", | ||
"xregexp-all.js" | ||
@@ -39,12 +39,13 @@ ], | ||
"devDependencies": { | ||
"babel-cli": "^6.24.1", | ||
"@babel/cli": "^7.0.0-beta.47", | ||
"@babel/core": "^7.0.0-beta.47", | ||
"@babel/preset-env": "^7.0.0-beta.47", | ||
"babel-plugin-add-module-exports": "^0.2.1", | ||
"babel-plugin-array-includes": "^2.0.3", | ||
"babel-plugin-transform-xregexp": "^0.0.4", | ||
"babel-preset-env": "^1.4.0", | ||
"browserify": "^12.0.1", | ||
"eslint": "^3.19.0", | ||
"jasmine": "^2.5.3", | ||
"babel-plugin-transform-xregexp": "^0.0.6", | ||
"browserify": "^16.2.0", | ||
"eslint": "^4.19.1", | ||
"jasmine": "^3.1.0", | ||
"jsesc": "^2.5.1", | ||
"unicode-10.0.0": "^0.7.5", | ||
"unicode-11.0.0": "^0.7.7", | ||
"unicode-property-value-aliases": "^3.0.0", | ||
@@ -51,0 +52,0 @@ "zuul": "^3.11.1" |
@@ -1,2 +0,2 @@ | ||
# XRegExp 4.1.1 | ||
# XRegExp 4.2.0 | ||
@@ -122,3 +122,3 @@ [![Build Status](https://travis-ci.org/slevithan/xregexp.svg?branch=master)](https://travis-ci.org/slevithan/xregexp) | ||
XRegExp uses Unicode 10.0.0. | ||
XRegExp uses Unicode 11.0.0. | ||
@@ -125,0 +125,0 @@ ### XRegExp.build |
/*! | ||
* XRegExp.build 4.1.1 | ||
* XRegExp.build 4.2.0 | ||
* <xregexp.com> | ||
@@ -4,0 +4,0 @@ * Steven Levithan (c) 2012-present MIT License |
/*! | ||
* XRegExp.matchRecursive 4.1.1 | ||
* XRegExp.matchRecursive 4.2.0 | ||
* <xregexp.com> | ||
@@ -80,3 +80,3 @@ * Steven Levithan (c) 2009-present MIT License | ||
const basicFlags = flags.replace(/y/g, ''); | ||
let escapeChar = options.escapeChar; | ||
let {escapeChar} = options; | ||
const vN = options.valueNames; | ||
@@ -83,0 +83,0 @@ const output = []; |
/*! | ||
* XRegExp Unicode Base 4.1.1 | ||
* XRegExp Unicode Base 4.2.0 | ||
* <xregexp.com> | ||
@@ -212,6 +212,4 @@ * Steven Levithan (c) 2008-present MIT License | ||
const ERR_NO_DATA = 'Unicode token has no character data '; | ||
let item; | ||
for (let i = 0; i < data.length; ++i) { | ||
item = data[i]; | ||
for (const item of data) { | ||
if (!item.name) { | ||
@@ -218,0 +216,0 @@ throw new Error(ERR_NO_NAME); |
/*! | ||
* XRegExp Unicode Blocks 4.1.1 | ||
* XRegExp Unicode Blocks 4.2.0 | ||
* <xregexp.com> | ||
@@ -17,3 +17,3 @@ * Steven Levithan (c) 2010-present MIT License | ||
* | ||
* Uses Unicode 10.0.0. | ||
* Uses Unicode 11.0.0. | ||
* | ||
@@ -20,0 +20,0 @@ * @requires XRegExp, Unicode Base |
/*! | ||
* XRegExp Unicode Categories 4.1.1 | ||
* XRegExp Unicode Categories 4.2.0 | ||
* <xregexp.com> | ||
@@ -17,3 +17,3 @@ * Steven Levithan (c) 2010-present MIT License | ||
* | ||
* Uses Unicode 10.0.0. | ||
* Uses Unicode 11.0.0. | ||
* | ||
@@ -20,0 +20,0 @@ * @requires XRegExp, Unicode Base |
/*! | ||
* XRegExp Unicode Properties 4.1.1 | ||
* XRegExp Unicode Properties 4.2.0 | ||
* <xregexp.com> | ||
@@ -46,3 +46,3 @@ * Steven Levithan (c) 2012-present MIT License | ||
* | ||
* Uses Unicode 10.0.0. | ||
* Uses Unicode 11.0.0. | ||
* | ||
@@ -49,0 +49,0 @@ * @requires XRegExp, Unicode Base |
/*! | ||
* XRegExp Unicode Scripts 4.1.1 | ||
* XRegExp Unicode Scripts 4.2.0 | ||
* <xregexp.com> | ||
@@ -16,3 +16,3 @@ * Steven Levithan (c) 2010-present MIT License | ||
* | ||
* Uses Unicode 10.0.0. | ||
* Uses Unicode 11.0.0. | ||
* | ||
@@ -19,0 +19,0 @@ * @requires XRegExp, Unicode Base |
@@ -223,2 +223,6 @@ module.exports = [ | ||
{ | ||
'name': 'InChess_Symbols', | ||
'astral': '\uD83E[\uDE00-\uDE6F]' | ||
}, | ||
{ | ||
'name': 'InCombining_Diacritical_Marks', | ||
@@ -316,2 +320,6 @@ 'bmp': '\u0300-\u036F' | ||
{ | ||
'name': 'InDogra', | ||
'astral': '\uD806[\uDC00-\uDC4F]' | ||
}, | ||
{ | ||
'name': 'InDomino_Tiles', | ||
@@ -389,2 +397,6 @@ 'astral': '\uD83C[\uDC30-\uDC9F]' | ||
{ | ||
'name': 'InGeorgian_Extended', | ||
'bmp': '\u1C90-\u1CBF' | ||
}, | ||
{ | ||
'name': 'InGeorgian_Supplement', | ||
@@ -422,2 +434,6 @@ 'bmp': '\u2D00-\u2D2F' | ||
{ | ||
'name': 'InGunjala_Gondi', | ||
'astral': '\uD807[\uDD60-\uDDAF]' | ||
}, | ||
{ | ||
'name': 'InGurmukhi', | ||
@@ -451,2 +467,6 @@ 'bmp': '\u0A00-\u0A7F' | ||
{ | ||
'name': 'InHanifi_Rohingya', | ||
'astral': '\uD803[\uDD00-\uDD3F]' | ||
}, | ||
{ | ||
'name': 'InHanunoo', | ||
@@ -492,2 +512,6 @@ 'bmp': '\u1720-\u173F' | ||
{ | ||
'name': 'InIndic_Siyaq_Numbers', | ||
'astral': '\uD83B[\uDC70-\uDCBF]' | ||
}, | ||
{ | ||
'name': 'InInscriptional_Pahlavi', | ||
@@ -641,2 +665,6 @@ 'astral': '\uD802[\uDF60-\uDF7F]' | ||
{ | ||
'name': 'InMakasar', | ||
'astral': '\uD807[\uDEE0-\uDEFF]' | ||
}, | ||
{ | ||
'name': 'InMalayalam', | ||
@@ -670,2 +698,10 @@ 'bmp': '\u0D00-\u0D7F' | ||
{ | ||
'name': 'InMayan_Numerals', | ||
'astral': '\uD834[\uDEE0-\uDEFF]' | ||
}, | ||
{ | ||
'name': 'InMedefaidrin', | ||
'astral': '\uD81B[\uDE40-\uDE9F]' | ||
}, | ||
{ | ||
'name': 'InMeetei_Mayek', | ||
@@ -811,2 +847,6 @@ 'bmp': '\uABC0-\uABFF' | ||
{ | ||
'name': 'InOld_Sogdian', | ||
'astral': '\uD803[\uDF00-\uDF2F]' | ||
}, | ||
{ | ||
'name': 'InOld_South_Arabian', | ||
@@ -932,2 +972,6 @@ 'astral': '\uD802[\uDE60-\uDE7F]' | ||
{ | ||
'name': 'InSogdian', | ||
'astral': '\uD803[\uDF30-\uDF6F]' | ||
}, | ||
{ | ||
'name': 'InSora_Sompeng', | ||
@@ -934,0 +978,0 @@ 'astral': '\uD804[\uDCD0-\uDCFF]' |
@@ -8,4 +8,4 @@ module.exports = [ | ||
'name': 'Alphabetic', | ||
'bmp': 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0345\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05B0-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0657\u0659-\u065F\u066E-\u06D3\u06D5-\u06DC\u06E1-\u06E8\u06ED-\u06EF\u06FA-\u06FC\u06FF\u0710-\u073F\u074D-\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0817\u081A-\u082C\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08DF\u08E3-\u08E9\u08F0-\u093B\u093D-\u094C\u094E-\u0950\u0955-\u0963\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C4\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09F0\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B\u0A4C\u0A51\u0A59-\u0A5C\u0A5E\u0A70-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC5\u0AC7-\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0-\u0AE3\u0AF9-\u0AFC\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D-\u0B44\u0B47\u0B48\u0B4B\u0B4C\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4C\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCC\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E46\u0E4D\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0ECD\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F71-\u0F81\u0F88-\u0F97\u0F99-\u0FBC\u1000-\u1036\u1038\u103B-\u103F\u1050-\u1062\u1065-\u1068\u106E-\u1086\u108E\u109C\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1713\u1720-\u1733\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17C8\u17D7\u17DC\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u1938\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A1B\u1A20-\u1A5E\u1A61-\u1A74\u1AA7\u1B00-\u1B33\u1B35-\u1B43\u1B45-\u1B4B\u1B80-\u1BA9\u1BAC-\u1BAF\u1BBA-\u1BE5\u1BE7-\u1BF1\u1C00-\u1C35\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1D00-\u1DBF\u1DE7-\u1DF4\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u24B6-\u24E9\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312E\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEA\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA674-\uA67B\uA67F-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA827\uA840-\uA873\uA880-\uA8C3\uA8C5\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA92A\uA930-\uA952\uA960-\uA97C\uA980-\uA9B2\uA9B4-\uA9BF\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA60-\uAA76\uAA7A\uAA7E-\uAABE\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', | ||
'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC45\uDC82-\uDCB8\uDCD0-\uDCE8\uDD00-\uDD32\uDD50-\uDD72\uDD76\uDD80-\uDDBF\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE34\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEE8\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D-\uDF44\uDF47\uDF48\uDF4B\uDF4C\uDF50\uDF57\uDF5D-\uDF63]|\uD805[\uDC00-\uDC41\uDC43-\uDC45\uDC47-\uDC4A\uDC80-\uDCC1\uDCC4\uDCC5\uDCC7\uDD80-\uDDB5\uDDB8-\uDDBE\uDDD8-\uDDDD\uDE00-\uDE3E\uDE40\uDE44\uDE80-\uDEB5\uDF00-\uDF19\uDF1D-\uDF2A]|\uD806[\uDCA0-\uDCDF\uDCFF\uDE00-\uDE32\uDE35-\uDE3E\uDE50-\uDE83\uDE86-\uDE97\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC3E\uDC40\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD41\uDD43\uDD46\uDD47]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF36\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9E]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD47]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]' | ||
'bmp': 'A-Za-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0345\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05B0-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05EF-\u05F2\u0610-\u061A\u0620-\u0657\u0659-\u065F\u066E-\u06D3\u06D5-\u06DC\u06E1-\u06E8\u06ED-\u06EF\u06FA-\u06FC\u06FF\u0710-\u073F\u074D-\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0817\u081A-\u082C\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08DF\u08E3-\u08E9\u08F0-\u093B\u093D-\u094C\u094E-\u0950\u0955-\u0963\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD-\u09C4\u09C7\u09C8\u09CB\u09CC\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09F0\u09F1\u09FC\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3E-\u0A42\u0A47\u0A48\u0A4B\u0A4C\u0A51\u0A59-\u0A5C\u0A5E\u0A70-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD-\u0AC5\u0AC7-\u0AC9\u0ACB\u0ACC\u0AD0\u0AE0-\u0AE3\u0AF9-\u0AFC\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D-\u0B44\u0B47\u0B48\u0B4B\u0B4C\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCC\u0BD0\u0BD7\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4C\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCC\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CF1\u0CF2\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4C\u0D4E\u0D54-\u0D57\u0D5F-\u0D63\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E46\u0E4D\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0ECD\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F71-\u0F81\u0F88-\u0F97\u0F99-\u0FBC\u1000-\u1036\u1038\u103B-\u103F\u1050-\u1062\u1065-\u1068\u106E-\u1086\u108E\u109C\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135F\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1713\u1720-\u1733\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17B3\u17B6-\u17C8\u17D7\u17DC\u1820-\u1878\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u1938\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A1B\u1A20-\u1A5E\u1A61-\u1A74\u1AA7\u1B00-\u1B33\u1B35-\u1B43\u1B45-\u1B4B\u1B80-\u1BA9\u1BAC-\u1BAF\u1BBA-\u1BE5\u1BE7-\u1BF1\u1C00-\u1C35\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1D00-\u1DBF\u1DE7-\u1DF4\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u24B6-\u24E9\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA674-\uA67B\uA67F-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA827\uA840-\uA873\uA880-\uA8C3\uA8C5\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA92A\uA930-\uA952\uA960-\uA97C\uA980-\uA9B2\uA9B4-\uA9BF\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA60-\uAA76\uAA7A\uAA7E-\uAABE\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF5\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC', | ||
'astral': '\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD27\uDF00-\uDF1C\uDF27\uDF30-\uDF45]|\uD804[\uDC00-\uDC45\uDC82-\uDCB8\uDCD0-\uDCE8\uDD00-\uDD32\uDD44-\uDD46\uDD50-\uDD72\uDD76\uDD80-\uDDBF\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE34\uDE37\uDE3E\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEE8\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D-\uDF44\uDF47\uDF48\uDF4B\uDF4C\uDF50\uDF57\uDF5D-\uDF63]|\uD805[\uDC00-\uDC41\uDC43-\uDC45\uDC47-\uDC4A\uDC80-\uDCC1\uDCC4\uDCC5\uDCC7\uDD80-\uDDB5\uDDB8-\uDDBE\uDDD8-\uDDDD\uDE00-\uDE3E\uDE40\uDE44\uDE80-\uDEB5\uDF00-\uDF1A\uDF1D-\uDF2A]|\uD806[\uDC00-\uDC38\uDCA0-\uDCDF\uDCFF\uDE00-\uDE32\uDE35-\uDE3E\uDE50-\uDE83\uDE86-\uDE97\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC36\uDC38-\uDC3E\uDC40\uDC72-\uDC8F\uDC92-\uDCA7\uDCA9-\uDCB6\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD41\uDD43\uDD46\uDD47\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD96\uDD98\uDEE0-\uDEF6]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF36\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF44\uDF50-\uDF7E\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFF1]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9E]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43\uDD47]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]' | ||
}, | ||
@@ -25,4 +25,4 @@ { | ||
'name': 'Lowercase', | ||
'bmp': 'a-z\xAA\xB5\xBA\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02B8\u02C0\u02C1\u02E0-\u02E4\u0345\u0371\u0373\u0377\u037A-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0561-\u0587\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1DBF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u2071\u207F\u2090-\u209C\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2170-\u217F\u2184\u24D0-\u24E9\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7D\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B-\uA69D\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7B5\uA7B7\uA7F8-\uA7FA\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A', | ||
'astral': '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]' | ||
'bmp': 'a-z\xAA\xB5\xBA\xDF-\xF6\xF8-\xFF\u0101\u0103\u0105\u0107\u0109\u010B\u010D\u010F\u0111\u0113\u0115\u0117\u0119\u011B\u011D\u011F\u0121\u0123\u0125\u0127\u0129\u012B\u012D\u012F\u0131\u0133\u0135\u0137\u0138\u013A\u013C\u013E\u0140\u0142\u0144\u0146\u0148\u0149\u014B\u014D\u014F\u0151\u0153\u0155\u0157\u0159\u015B\u015D\u015F\u0161\u0163\u0165\u0167\u0169\u016B\u016D\u016F\u0171\u0173\u0175\u0177\u017A\u017C\u017E-\u0180\u0183\u0185\u0188\u018C\u018D\u0192\u0195\u0199-\u019B\u019E\u01A1\u01A3\u01A5\u01A8\u01AA\u01AB\u01AD\u01B0\u01B4\u01B6\u01B9\u01BA\u01BD-\u01BF\u01C6\u01C9\u01CC\u01CE\u01D0\u01D2\u01D4\u01D6\u01D8\u01DA\u01DC\u01DD\u01DF\u01E1\u01E3\u01E5\u01E7\u01E9\u01EB\u01ED\u01EF\u01F0\u01F3\u01F5\u01F9\u01FB\u01FD\u01FF\u0201\u0203\u0205\u0207\u0209\u020B\u020D\u020F\u0211\u0213\u0215\u0217\u0219\u021B\u021D\u021F\u0221\u0223\u0225\u0227\u0229\u022B\u022D\u022F\u0231\u0233-\u0239\u023C\u023F\u0240\u0242\u0247\u0249\u024B\u024D\u024F-\u0293\u0295-\u02B8\u02C0\u02C1\u02E0-\u02E4\u0345\u0371\u0373\u0377\u037A-\u037D\u0390\u03AC-\u03CE\u03D0\u03D1\u03D5-\u03D7\u03D9\u03DB\u03DD\u03DF\u03E1\u03E3\u03E5\u03E7\u03E9\u03EB\u03ED\u03EF-\u03F3\u03F5\u03F8\u03FB\u03FC\u0430-\u045F\u0461\u0463\u0465\u0467\u0469\u046B\u046D\u046F\u0471\u0473\u0475\u0477\u0479\u047B\u047D\u047F\u0481\u048B\u048D\u048F\u0491\u0493\u0495\u0497\u0499\u049B\u049D\u049F\u04A1\u04A3\u04A5\u04A7\u04A9\u04AB\u04AD\u04AF\u04B1\u04B3\u04B5\u04B7\u04B9\u04BB\u04BD\u04BF\u04C2\u04C4\u04C6\u04C8\u04CA\u04CC\u04CE\u04CF\u04D1\u04D3\u04D5\u04D7\u04D9\u04DB\u04DD\u04DF\u04E1\u04E3\u04E5\u04E7\u04E9\u04EB\u04ED\u04EF\u04F1\u04F3\u04F5\u04F7\u04F9\u04FB\u04FD\u04FF\u0501\u0503\u0505\u0507\u0509\u050B\u050D\u050F\u0511\u0513\u0515\u0517\u0519\u051B\u051D\u051F\u0521\u0523\u0525\u0527\u0529\u052B\u052D\u052F\u0560-\u0588\u10D0-\u10FA\u10FD-\u10FF\u13F8-\u13FD\u1C80-\u1C88\u1D00-\u1DBF\u1E01\u1E03\u1E05\u1E07\u1E09\u1E0B\u1E0D\u1E0F\u1E11\u1E13\u1E15\u1E17\u1E19\u1E1B\u1E1D\u1E1F\u1E21\u1E23\u1E25\u1E27\u1E29\u1E2B\u1E2D\u1E2F\u1E31\u1E33\u1E35\u1E37\u1E39\u1E3B\u1E3D\u1E3F\u1E41\u1E43\u1E45\u1E47\u1E49\u1E4B\u1E4D\u1E4F\u1E51\u1E53\u1E55\u1E57\u1E59\u1E5B\u1E5D\u1E5F\u1E61\u1E63\u1E65\u1E67\u1E69\u1E6B\u1E6D\u1E6F\u1E71\u1E73\u1E75\u1E77\u1E79\u1E7B\u1E7D\u1E7F\u1E81\u1E83\u1E85\u1E87\u1E89\u1E8B\u1E8D\u1E8F\u1E91\u1E93\u1E95-\u1E9D\u1E9F\u1EA1\u1EA3\u1EA5\u1EA7\u1EA9\u1EAB\u1EAD\u1EAF\u1EB1\u1EB3\u1EB5\u1EB7\u1EB9\u1EBB\u1EBD\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1EC9\u1ECB\u1ECD\u1ECF\u1ED1\u1ED3\u1ED5\u1ED7\u1ED9\u1EDB\u1EDD\u1EDF\u1EE1\u1EE3\u1EE5\u1EE7\u1EE9\u1EEB\u1EED\u1EEF\u1EF1\u1EF3\u1EF5\u1EF7\u1EF9\u1EFB\u1EFD\u1EFF-\u1F07\u1F10-\u1F15\u1F20-\u1F27\u1F30-\u1F37\u1F40-\u1F45\u1F50-\u1F57\u1F60-\u1F67\u1F70-\u1F7D\u1F80-\u1F87\u1F90-\u1F97\u1FA0-\u1FA7\u1FB0-\u1FB4\u1FB6\u1FB7\u1FBE\u1FC2-\u1FC4\u1FC6\u1FC7\u1FD0-\u1FD3\u1FD6\u1FD7\u1FE0-\u1FE7\u1FF2-\u1FF4\u1FF6\u1FF7\u2071\u207F\u2090-\u209C\u210A\u210E\u210F\u2113\u212F\u2134\u2139\u213C\u213D\u2146-\u2149\u214E\u2170-\u217F\u2184\u24D0-\u24E9\u2C30-\u2C5E\u2C61\u2C65\u2C66\u2C68\u2C6A\u2C6C\u2C71\u2C73\u2C74\u2C76-\u2C7D\u2C81\u2C83\u2C85\u2C87\u2C89\u2C8B\u2C8D\u2C8F\u2C91\u2C93\u2C95\u2C97\u2C99\u2C9B\u2C9D\u2C9F\u2CA1\u2CA3\u2CA5\u2CA7\u2CA9\u2CAB\u2CAD\u2CAF\u2CB1\u2CB3\u2CB5\u2CB7\u2CB9\u2CBB\u2CBD\u2CBF\u2CC1\u2CC3\u2CC5\u2CC7\u2CC9\u2CCB\u2CCD\u2CCF\u2CD1\u2CD3\u2CD5\u2CD7\u2CD9\u2CDB\u2CDD\u2CDF\u2CE1\u2CE3\u2CE4\u2CEC\u2CEE\u2CF3\u2D00-\u2D25\u2D27\u2D2D\uA641\uA643\uA645\uA647\uA649\uA64B\uA64D\uA64F\uA651\uA653\uA655\uA657\uA659\uA65B\uA65D\uA65F\uA661\uA663\uA665\uA667\uA669\uA66B\uA66D\uA681\uA683\uA685\uA687\uA689\uA68B\uA68D\uA68F\uA691\uA693\uA695\uA697\uA699\uA69B-\uA69D\uA723\uA725\uA727\uA729\uA72B\uA72D\uA72F-\uA731\uA733\uA735\uA737\uA739\uA73B\uA73D\uA73F\uA741\uA743\uA745\uA747\uA749\uA74B\uA74D\uA74F\uA751\uA753\uA755\uA757\uA759\uA75B\uA75D\uA75F\uA761\uA763\uA765\uA767\uA769\uA76B\uA76D\uA76F-\uA778\uA77A\uA77C\uA77F\uA781\uA783\uA785\uA787\uA78C\uA78E\uA791\uA793-\uA795\uA797\uA799\uA79B\uA79D\uA79F\uA7A1\uA7A3\uA7A5\uA7A7\uA7A9\uA7AF\uA7B5\uA7B7\uA7B9\uA7F8-\uA7FA\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABBF\uFB00-\uFB06\uFB13-\uFB17\uFF41-\uFF5A', | ||
'astral': '\uD801[\uDC28-\uDC4F\uDCD8-\uDCFB]|\uD803[\uDCC0-\uDCF2]|\uD806[\uDCC0-\uDCDF]|\uD81B[\uDE60-\uDE7F]|\uD835[\uDC1A-\uDC33\uDC4E-\uDC54\uDC56-\uDC67\uDC82-\uDC9B\uDCB6-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDCCF\uDCEA-\uDD03\uDD1E-\uDD37\uDD52-\uDD6B\uDD86-\uDD9F\uDDBA-\uDDD3\uDDEE-\uDE07\uDE22-\uDE3B\uDE56-\uDE6F\uDE8A-\uDEA5\uDEC2-\uDEDA\uDEDC-\uDEE1\uDEFC-\uDF14\uDF16-\uDF1B\uDF36-\uDF4E\uDF50-\uDF55\uDF70-\uDF88\uDF8A-\uDF8F\uDFAA-\uDFC2\uDFC4-\uDFC9\uDFCB]|\uD83A[\uDD22-\uDD43]' | ||
}, | ||
@@ -36,4 +36,4 @@ { | ||
'name': 'Uppercase', | ||
'bmp': 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2160-\u216F\u2183\u24B6-\u24CF\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uFF21-\uFF3A', | ||
'astral': '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]' | ||
'bmp': 'A-Z\xC0-\xD6\xD8-\xDE\u0100\u0102\u0104\u0106\u0108\u010A\u010C\u010E\u0110\u0112\u0114\u0116\u0118\u011A\u011C\u011E\u0120\u0122\u0124\u0126\u0128\u012A\u012C\u012E\u0130\u0132\u0134\u0136\u0139\u013B\u013D\u013F\u0141\u0143\u0145\u0147\u014A\u014C\u014E\u0150\u0152\u0154\u0156\u0158\u015A\u015C\u015E\u0160\u0162\u0164\u0166\u0168\u016A\u016C\u016E\u0170\u0172\u0174\u0176\u0178\u0179\u017B\u017D\u0181\u0182\u0184\u0186\u0187\u0189-\u018B\u018E-\u0191\u0193\u0194\u0196-\u0198\u019C\u019D\u019F\u01A0\u01A2\u01A4\u01A6\u01A7\u01A9\u01AC\u01AE\u01AF\u01B1-\u01B3\u01B5\u01B7\u01B8\u01BC\u01C4\u01C7\u01CA\u01CD\u01CF\u01D1\u01D3\u01D5\u01D7\u01D9\u01DB\u01DE\u01E0\u01E2\u01E4\u01E6\u01E8\u01EA\u01EC\u01EE\u01F1\u01F4\u01F6-\u01F8\u01FA\u01FC\u01FE\u0200\u0202\u0204\u0206\u0208\u020A\u020C\u020E\u0210\u0212\u0214\u0216\u0218\u021A\u021C\u021E\u0220\u0222\u0224\u0226\u0228\u022A\u022C\u022E\u0230\u0232\u023A\u023B\u023D\u023E\u0241\u0243-\u0246\u0248\u024A\u024C\u024E\u0370\u0372\u0376\u037F\u0386\u0388-\u038A\u038C\u038E\u038F\u0391-\u03A1\u03A3-\u03AB\u03CF\u03D2-\u03D4\u03D8\u03DA\u03DC\u03DE\u03E0\u03E2\u03E4\u03E6\u03E8\u03EA\u03EC\u03EE\u03F4\u03F7\u03F9\u03FA\u03FD-\u042F\u0460\u0462\u0464\u0466\u0468\u046A\u046C\u046E\u0470\u0472\u0474\u0476\u0478\u047A\u047C\u047E\u0480\u048A\u048C\u048E\u0490\u0492\u0494\u0496\u0498\u049A\u049C\u049E\u04A0\u04A2\u04A4\u04A6\u04A8\u04AA\u04AC\u04AE\u04B0\u04B2\u04B4\u04B6\u04B8\u04BA\u04BC\u04BE\u04C0\u04C1\u04C3\u04C5\u04C7\u04C9\u04CB\u04CD\u04D0\u04D2\u04D4\u04D6\u04D8\u04DA\u04DC\u04DE\u04E0\u04E2\u04E4\u04E6\u04E8\u04EA\u04EC\u04EE\u04F0\u04F2\u04F4\u04F6\u04F8\u04FA\u04FC\u04FE\u0500\u0502\u0504\u0506\u0508\u050A\u050C\u050E\u0510\u0512\u0514\u0516\u0518\u051A\u051C\u051E\u0520\u0522\u0524\u0526\u0528\u052A\u052C\u052E\u0531-\u0556\u10A0-\u10C5\u10C7\u10CD\u13A0-\u13F5\u1C90-\u1CBA\u1CBD-\u1CBF\u1E00\u1E02\u1E04\u1E06\u1E08\u1E0A\u1E0C\u1E0E\u1E10\u1E12\u1E14\u1E16\u1E18\u1E1A\u1E1C\u1E1E\u1E20\u1E22\u1E24\u1E26\u1E28\u1E2A\u1E2C\u1E2E\u1E30\u1E32\u1E34\u1E36\u1E38\u1E3A\u1E3C\u1E3E\u1E40\u1E42\u1E44\u1E46\u1E48\u1E4A\u1E4C\u1E4E\u1E50\u1E52\u1E54\u1E56\u1E58\u1E5A\u1E5C\u1E5E\u1E60\u1E62\u1E64\u1E66\u1E68\u1E6A\u1E6C\u1E6E\u1E70\u1E72\u1E74\u1E76\u1E78\u1E7A\u1E7C\u1E7E\u1E80\u1E82\u1E84\u1E86\u1E88\u1E8A\u1E8C\u1E8E\u1E90\u1E92\u1E94\u1E9E\u1EA0\u1EA2\u1EA4\u1EA6\u1EA8\u1EAA\u1EAC\u1EAE\u1EB0\u1EB2\u1EB4\u1EB6\u1EB8\u1EBA\u1EBC\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1EC8\u1ECA\u1ECC\u1ECE\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EDA\u1EDC\u1EDE\u1EE0\u1EE2\u1EE4\u1EE6\u1EE8\u1EEA\u1EEC\u1EEE\u1EF0\u1EF2\u1EF4\u1EF6\u1EF8\u1EFA\u1EFC\u1EFE\u1F08-\u1F0F\u1F18-\u1F1D\u1F28-\u1F2F\u1F38-\u1F3F\u1F48-\u1F4D\u1F59\u1F5B\u1F5D\u1F5F\u1F68-\u1F6F\u1FB8-\u1FBB\u1FC8-\u1FCB\u1FD8-\u1FDB\u1FE8-\u1FEC\u1FF8-\u1FFB\u2102\u2107\u210B-\u210D\u2110-\u2112\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u2130-\u2133\u213E\u213F\u2145\u2160-\u216F\u2183\u24B6-\u24CF\u2C00-\u2C2E\u2C60\u2C62-\u2C64\u2C67\u2C69\u2C6B\u2C6D-\u2C70\u2C72\u2C75\u2C7E-\u2C80\u2C82\u2C84\u2C86\u2C88\u2C8A\u2C8C\u2C8E\u2C90\u2C92\u2C94\u2C96\u2C98\u2C9A\u2C9C\u2C9E\u2CA0\u2CA2\u2CA4\u2CA6\u2CA8\u2CAA\u2CAC\u2CAE\u2CB0\u2CB2\u2CB4\u2CB6\u2CB8\u2CBA\u2CBC\u2CBE\u2CC0\u2CC2\u2CC4\u2CC6\u2CC8\u2CCA\u2CCC\u2CCE\u2CD0\u2CD2\u2CD4\u2CD6\u2CD8\u2CDA\u2CDC\u2CDE\u2CE0\u2CE2\u2CEB\u2CED\u2CF2\uA640\uA642\uA644\uA646\uA648\uA64A\uA64C\uA64E\uA650\uA652\uA654\uA656\uA658\uA65A\uA65C\uA65E\uA660\uA662\uA664\uA666\uA668\uA66A\uA66C\uA680\uA682\uA684\uA686\uA688\uA68A\uA68C\uA68E\uA690\uA692\uA694\uA696\uA698\uA69A\uA722\uA724\uA726\uA728\uA72A\uA72C\uA72E\uA732\uA734\uA736\uA738\uA73A\uA73C\uA73E\uA740\uA742\uA744\uA746\uA748\uA74A\uA74C\uA74E\uA750\uA752\uA754\uA756\uA758\uA75A\uA75C\uA75E\uA760\uA762\uA764\uA766\uA768\uA76A\uA76C\uA76E\uA779\uA77B\uA77D\uA77E\uA780\uA782\uA784\uA786\uA78B\uA78D\uA790\uA792\uA796\uA798\uA79A\uA79C\uA79E\uA7A0\uA7A2\uA7A4\uA7A6\uA7A8\uA7AA-\uA7AE\uA7B0-\uA7B4\uA7B6\uA7B8\uFF21-\uFF3A', | ||
'astral': '\uD801[\uDC00-\uDC27\uDCB0-\uDCD3]|\uD803[\uDC80-\uDCB2]|\uD806[\uDCA0-\uDCBF]|\uD81B[\uDE40-\uDE5F]|\uD835[\uDC00-\uDC19\uDC34-\uDC4D\uDC68-\uDC81\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB5\uDCD0-\uDCE9\uDD04\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD38\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD6C-\uDD85\uDDA0-\uDDB9\uDDD4-\uDDED\uDE08-\uDE21\uDE3C-\uDE55\uDE70-\uDE89\uDEA8-\uDEC0\uDEE2-\uDEFA\uDF1C-\uDF34\uDF56-\uDF6E\uDF90-\uDFA8\uDFCA]|\uD83A[\uDD00-\uDD21]|\uD83C[\uDD30-\uDD49\uDD50-\uDD69\uDD70-\uDD89]' | ||
}, | ||
@@ -40,0 +40,0 @@ { |
@@ -8,3 +8,3 @@ module.exports = [ | ||
'name': 'Ahom', | ||
'astral': '\uD805[\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF3F]' | ||
'astral': '\uD805[\uDF00-\uDF1A\uDF1D-\uDF2B\uDF30-\uDF3F]' | ||
}, | ||
@@ -17,3 +17,3 @@ { | ||
'name': 'Arabic', | ||
'bmp': '\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061C\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u06FF\u0750-\u077F\u08A0-\u08B4\u08B6-\u08BD\u08D4-\u08E1\u08E3-\u08FF\uFB50-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFD\uFE70-\uFE74\uFE76-\uFEFC', | ||
'bmp': '\u0600-\u0604\u0606-\u060B\u060D-\u061A\u061C\u061E\u0620-\u063F\u0641-\u064A\u0656-\u066F\u0671-\u06DC\u06DE-\u06FF\u0750-\u077F\u08A0-\u08B4\u08B6-\u08BD\u08D3-\u08E1\u08E3-\u08FF\uFB50-\uFBC1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFD\uFE70-\uFE74\uFE76-\uFEFC', | ||
'astral': '\uD803[\uDE60-\uDE7E]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB\uDEF0\uDEF1]' | ||
@@ -23,3 +23,3 @@ }, | ||
'name': 'Armenian', | ||
'bmp': '\u0531-\u0556\u0559-\u055F\u0561-\u0587\u058A\u058D-\u058F\uFB13-\uFB17' | ||
'bmp': '\u0531-\u0556\u0559-\u0588\u058A\u058D-\u058F\uFB13-\uFB17' | ||
}, | ||
@@ -49,3 +49,3 @@ { | ||
'name': 'Bengali', | ||
'bmp': '\u0980-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FD' | ||
'bmp': '\u0980-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09FE' | ||
}, | ||
@@ -58,3 +58,3 @@ { | ||
'name': 'Bopomofo', | ||
'bmp': '\u02EA\u02EB\u3105-\u312E\u31A0-\u31BA' | ||
'bmp': '\u02EA\u02EB\u3105-\u312F\u31A0-\u31BA' | ||
}, | ||
@@ -91,3 +91,3 @@ { | ||
'name': 'Chakma', | ||
'astral': '\uD804[\uDD00-\uDD34\uDD36-\uDD43]' | ||
'astral': '\uD804[\uDD00-\uDD34\uDD36-\uDD46]' | ||
}, | ||
@@ -104,4 +104,4 @@ { | ||
'name': 'Common', | ||
'bmp': '\0-@\\[-`\\{-\xA9\xAB-\xB9\xBB-\xBF\xD7\xF7\u02B9-\u02DF\u02E5-\u02E9\u02EC-\u02FF\u0374\u037E\u0385\u0387\u0589\u0605\u060C\u061B\u061F\u0640\u06DD\u08E2\u0964\u0965\u0E3F\u0FD5-\u0FD8\u10FB\u16EB-\u16ED\u1735\u1736\u1802\u1803\u1805\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u2000-\u200B\u200E-\u2064\u2066-\u2070\u2074-\u207E\u2080-\u208E\u20A0-\u20BF\u2100-\u2125\u2127-\u2129\u212C-\u2131\u2133-\u214D\u214F-\u215F\u2189-\u218B\u2190-\u2426\u2440-\u244A\u2460-\u27FF\u2900-\u2B73\u2B76-\u2B95\u2B98-\u2BB9\u2BBD-\u2BC8\u2BCA-\u2BD2\u2BEC-\u2BEF\u2E00-\u2E49\u2FF0-\u2FFB\u3000-\u3004\u3006\u3008-\u3020\u3030-\u3037\u303C-\u303F\u309B\u309C\u30A0\u30FB\u30FC\u3190-\u319F\u31C0-\u31E3\u3220-\u325F\u327F-\u32CF\u3358-\u33FF\u4DC0-\u4DFF\uA700-\uA721\uA788-\uA78A\uA830-\uA839\uA92E\uA9CF\uAB5B\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFF70\uFF9E\uFF9F\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD', | ||
'astral': '\uD800[\uDD00-\uDD02\uDD07-\uDD33\uDD37-\uDD3F\uDD90-\uDD9B\uDDD0-\uDDFC\uDEE1-\uDEFB]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD66\uDD6A-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDF00-\uDF56\uDF60-\uDF71]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDFCB\uDFCE-\uDFFF]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD00-\uDD0C\uDD10-\uDD2E\uDD30-\uDD6B\uDD70-\uDDAC\uDDE6-\uDDFF\uDE01\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED4\uDEE0-\uDEEC\uDEF0-\uDEF8\uDF00-\uDF73\uDF80-\uDFD4]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDD00-\uDD0B\uDD10-\uDD3E\uDD40-\uDD4C\uDD50-\uDD6B\uDD80-\uDD97\uDDC0\uDDD0-\uDDE6]|\uDB40[\uDC01\uDC20-\uDC7F]' | ||
'bmp': '\0-@\\[-`\\{-\xA9\xAB-\xB9\xBB-\xBF\xD7\xF7\u02B9-\u02DF\u02E5-\u02E9\u02EC-\u02FF\u0374\u037E\u0385\u0387\u0589\u0605\u060C\u061B\u061F\u0640\u06DD\u08E2\u0964\u0965\u0E3F\u0FD5-\u0FD8\u10FB\u16EB-\u16ED\u1735\u1736\u1802\u1803\u1805\u1CD3\u1CE1\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5-\u1CF7\u2000-\u200B\u200E-\u2064\u2066-\u2070\u2074-\u207E\u2080-\u208E\u20A0-\u20BF\u2100-\u2125\u2127-\u2129\u212C-\u2131\u2133-\u214D\u214F-\u215F\u2189-\u218B\u2190-\u2426\u2440-\u244A\u2460-\u27FF\u2900-\u2B73\u2B76-\u2B95\u2B98-\u2BC8\u2BCA-\u2BFE\u2E00-\u2E4E\u2FF0-\u2FFB\u3000-\u3004\u3006\u3008-\u3020\u3030-\u3037\u303C-\u303F\u309B\u309C\u30A0\u30FB\u30FC\u3190-\u319F\u31C0-\u31E3\u3220-\u325F\u327F-\u32CF\u3358-\u33FF\u4DC0-\u4DFF\uA700-\uA721\uA788-\uA78A\uA830-\uA839\uA92E\uA9CF\uAB5B\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFEFF\uFF01-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFF70\uFF9E\uFF9F\uFFE0-\uFFE6\uFFE8-\uFFEE\uFFF9-\uFFFD', | ||
'astral': '\uD800[\uDD00-\uDD02\uDD07-\uDD33\uDD37-\uDD3F\uDD90-\uDD9B\uDDD0-\uDDFC\uDEE1-\uDEFB]|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDC00-\uDCF5\uDD00-\uDD26\uDD29-\uDD66\uDD6A-\uDD7A\uDD83\uDD84\uDD8C-\uDDA9\uDDAE-\uDDE8\uDEE0-\uDEF3\uDF00-\uDF56\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDFCB\uDFCE-\uDFFF]|\uD83B[\uDC71-\uDCB4]|\uD83C[\uDC00-\uDC2B\uDC30-\uDC93\uDCA0-\uDCAE\uDCB1-\uDCBF\uDCC1-\uDCCF\uDCD1-\uDCF5\uDD00-\uDD0C\uDD10-\uDD6B\uDD70-\uDDAC\uDDE6-\uDDFF\uDE01\uDE02\uDE10-\uDE3B\uDE40-\uDE48\uDE50\uDE51\uDE60-\uDE65\uDF00-\uDFFF]|\uD83D[\uDC00-\uDED4\uDEE0-\uDEEC\uDEF0-\uDEF9\uDF00-\uDF73\uDF80-\uDFD8]|\uD83E[\uDC00-\uDC0B\uDC10-\uDC47\uDC50-\uDC59\uDC60-\uDC87\uDC90-\uDCAD\uDD00-\uDD0B\uDD10-\uDD3E\uDD40-\uDD70\uDD73-\uDD76\uDD7A\uDD7C-\uDDA2\uDDB0-\uDDB9\uDDC0-\uDDC2\uDDD0-\uDDFF\uDE60-\uDE6D]|\uDB40[\uDC01\uDC20-\uDC7F]' | ||
}, | ||
@@ -130,5 +130,9 @@ { | ||
'name': 'Devanagari', | ||
'bmp': '\u0900-\u0950\u0953-\u0963\u0966-\u097F\uA8E0-\uA8FD' | ||
'bmp': '\u0900-\u0950\u0953-\u0963\u0966-\u097F\uA8E0-\uA8FF' | ||
}, | ||
{ | ||
'name': 'Dogra', | ||
'astral': '\uD806[\uDC00-\uDC3B]' | ||
}, | ||
{ | ||
'name': 'Duployan', | ||
@@ -151,3 +155,3 @@ 'astral': '\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9C-\uDC9F]' | ||
'name': 'Georgian', | ||
'bmp': '\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u10FF\u2D00-\u2D25\u2D27\u2D2D' | ||
'bmp': '\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u10FF\u1C90-\u1CBA\u1CBD-\u1CBF\u2D00-\u2D25\u2D27\u2D2D' | ||
}, | ||
@@ -177,8 +181,12 @@ { | ||
{ | ||
'name': 'Gunjala_Gondi', | ||
'astral': '\uD807[\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD8E\uDD90\uDD91\uDD93-\uDD98\uDDA0-\uDDA9]' | ||
}, | ||
{ | ||
'name': 'Gurmukhi', | ||
'bmp': '\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75' | ||
'bmp': '\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A76' | ||
}, | ||
{ | ||
'name': 'Han', | ||
'bmp': '\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FEA\uF900-\uFA6D\uFA70-\uFAD9', | ||
'bmp': '\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u3005\u3007\u3021-\u3029\u3038-\u303B\u3400-\u4DB5\u4E00-\u9FEF\uF900-\uFA6D\uFA70-\uFAD9', | ||
'astral': '[\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]' | ||
@@ -191,2 +199,6 @@ }, | ||
{ | ||
'name': 'Hanifi_Rohingya', | ||
'astral': '\uD803[\uDD00-\uDD27\uDD30-\uDD39]' | ||
}, | ||
{ | ||
'name': 'Hanunoo', | ||
@@ -201,3 +213,3 @@ 'bmp': '\u1720-\u1734' | ||
'name': 'Hebrew', | ||
'bmp': '\u0591-\u05C7\u05D0-\u05EA\u05F0-\u05F4\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFB4F' | ||
'bmp': '\u0591-\u05C7\u05D0-\u05EA\u05EF-\u05F4\uFB1D-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFB4F' | ||
}, | ||
@@ -216,3 +228,3 @@ { | ||
'bmp': '\u0300-\u036F\u0485\u0486\u064B-\u0655\u0670\u0951\u0952\u1AB0-\u1ABE\u1CD0-\u1CD2\u1CD4-\u1CE0\u1CE2-\u1CE8\u1CED\u1CF4\u1CF8\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200C\u200D\u20D0-\u20F0\u302A-\u302D\u3099\u309A\uFE00-\uFE0F\uFE20-\uFE2D', | ||
'astral': '\uD800[\uDDFD\uDEE0]|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD]|\uDB40[\uDD00-\uDDEF]' | ||
'astral': '\uD800[\uDDFD\uDEE0]|\uD804\uDF3B|\uD834[\uDD67-\uDD69\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD]|\uDB40[\uDD00-\uDDEF]' | ||
}, | ||
@@ -233,7 +245,7 @@ { | ||
'name': 'Kaithi', | ||
'astral': '\uD804[\uDC80-\uDCC1]' | ||
'astral': '\uD804[\uDC80-\uDCC1\uDCCD]' | ||
}, | ||
{ | ||
'name': 'Kannada', | ||
'bmp': '\u0C80-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2' | ||
'bmp': '\u0C80-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2' | ||
}, | ||
@@ -251,3 +263,3 @@ { | ||
'name': 'Kharoshthi', | ||
'astral': '\uD802[\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F-\uDE47\uDE50-\uDE58]' | ||
'astral': '\uD802[\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE38-\uDE3A\uDE3F-\uDE48\uDE50-\uDE58]' | ||
}, | ||
@@ -272,3 +284,3 @@ { | ||
'name': 'Latin', | ||
'bmp': 'A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7AE\uA7B0-\uA7B7\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A' | ||
'bmp': 'A-Za-z\xAA\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02B8\u02E0-\u02E4\u1D00-\u1D25\u1D2C-\u1D5C\u1D62-\u1D65\u1D6B-\u1D77\u1D79-\u1DBE\u1E00-\u1EFF\u2071\u207F\u2090-\u209C\u212A\u212B\u2132\u214E\u2160-\u2188\u2C60-\u2C7F\uA722-\uA787\uA78B-\uA7B9\uA7F7-\uA7FF\uAB30-\uAB5A\uAB5C-\uAB64\uFB00-\uFB06\uFF21-\uFF3A\uFF41-\uFF5A' | ||
}, | ||
@@ -308,2 +320,6 @@ { | ||
{ | ||
'name': 'Makasar', | ||
'astral': '\uD807[\uDEE0-\uDEF8]' | ||
}, | ||
{ | ||
'name': 'Malayalam', | ||
@@ -329,2 +345,6 @@ 'bmp': '\u0D00-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D44\u0D46-\u0D48\u0D4A-\u0D4F\u0D54-\u0D63\u0D66-\u0D7F' | ||
{ | ||
'name': 'Medefaidrin', | ||
'astral': '\uD81B[\uDE40-\uDE9A]' | ||
}, | ||
{ | ||
'name': 'Meetei_Mayek', | ||
@@ -355,3 +375,3 @@ 'bmp': '\uAAE0-\uAAF6\uABC0-\uABED\uABF0-\uABF9' | ||
'name': 'Mongolian', | ||
'bmp': '\u1800\u1801\u1804\u1806-\u180E\u1810-\u1819\u1820-\u1877\u1880-\u18AA', | ||
'bmp': '\u1800\u1801\u1804\u1806-\u180E\u1810-\u1819\u1820-\u1878\u1880-\u18AA', | ||
'astral': '\uD805[\uDE60-\uDE6C]' | ||
@@ -381,7 +401,7 @@ }, | ||
'name': 'Newa', | ||
'astral': '\uD805[\uDC00-\uDC59\uDC5B\uDC5D]' | ||
'astral': '\uD805[\uDC00-\uDC59\uDC5B\uDC5D\uDC5E]' | ||
}, | ||
{ | ||
'name': 'Nko', | ||
'bmp': '\u07C0-\u07FA' | ||
'bmp': '\u07C0-\u07FA\u07FD-\u07FF' | ||
}, | ||
@@ -421,2 +441,6 @@ { | ||
{ | ||
'name': 'Old_Sogdian', | ||
'astral': '\uD803[\uDF00-\uDF27]' | ||
}, | ||
{ | ||
'name': 'Old_South_Arabian', | ||
@@ -503,2 +527,6 @@ 'astral': '\uD802[\uDE60-\uDE7F]' | ||
{ | ||
'name': 'Sogdian', | ||
'astral': '\uD803[\uDF30-\uDF59]' | ||
}, | ||
{ | ||
'name': 'Sora_Sompeng', | ||
@@ -509,3 +537,3 @@ 'astral': '\uD804[\uDCD0-\uDCE8\uDCF0-\uDCF9]' | ||
'name': 'Soyombo', | ||
'astral': '\uD806[\uDE50-\uDE83\uDE86-\uDE9C\uDE9E-\uDEA2]' | ||
'astral': '\uD806[\uDE50-\uDE83\uDE86-\uDEA2]' | ||
}, | ||
@@ -554,7 +582,7 @@ { | ||
'name': 'Tangut', | ||
'astral': '\uD81B\uDFE0|[\uD81C-\uD820][\uDC00-\uDFFF]|\uD821[\uDC00-\uDFEC]|\uD822[\uDC00-\uDEF2]' | ||
'astral': '\uD81B\uDFE0|[\uD81C-\uD820][\uDC00-\uDFFF]|\uD821[\uDC00-\uDFF1]|\uD822[\uDC00-\uDEF2]' | ||
}, | ||
{ | ||
'name': 'Telugu', | ||
'bmp': '\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C78-\u0C7F' | ||
'bmp': '\u0C00-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C78-\u0C7F' | ||
}, | ||
@@ -561,0 +589,0 @@ { |
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
Sorry, the diff of this file is too big to display
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
High entropy strings
Supply chain riskContains high entropy strings. This could be a sign of encrypted data, leaked secrets or obfuscated code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
High entropy strings
Supply chain riskContains high entropy strings. This could be a sign of encrypted data, leaked secrets or obfuscated code.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
13
590354
13
26
12182