regexp-range
Version:
create regex class range string `[一-十]` `[⓪-㊿]` ...
118 lines (113 loc) • 3.56 kB
JavaScript
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@bluelovers/fill-range'), require('@lazy-cjk/regexp-range-table'), require('array-hyper-unique')) :
typeof define === 'function' && define.amd ? define(['exports', '@bluelovers/fill-range', '@lazy-cjk/regexp-range-table', 'array-hyper-unique'], factory) :
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.RegexpRange = {}, global.fillRange$1, global.regexpRangeTable, global.arrayHyperUnique));
})(this, (function (exports, fillRange$1, regexpRangeTable, arrayHyperUnique) { 'use strict';
function matchRange(from, to, options = {}) {
options = getOptions(options);
let s = from;
let e = to;
let ret = [];
let findFirstOne = !!options.findFirstOne;
Object.keys(options.dataTables)
// @ts-ignore
.some(function (key) {
let bool;
options.dataTables[key].some(function (arr) {
let i = arr.indexOf(s);
let j = arr.indexOf(e, i);
if (i !== -1 && j !== -1) {
ret.push(...arr.slice(i, j + 1));
bool = true;
return findFirstOne;
}
});
if (bool) {
return true;
}
});
if (!ret || !ret.length) {
return null;
}
arrayHyperUnique.array_unique_overwrite(ret);
if (options.createRegExpString) {
return toRegExpString(ret, options.createRegExpClass);
}
return ret;
}
function toRegExpString(arr, warpClass) {
if (arr.length === 1) {
return arr[0];
}
let s = arr.join('');
return warpClass ? '[' + s + ']' : s;
}
function fillRange(from, to, options = {}) {
options = getOptions(options);
let s = from;
let e = to;
let ret = null;
ret = matchRange(from, to, options);
if (!ret && (options.arrayMode || String(s).length === 1 && String(e).length === 1)) {
var _ret;
let _ok;
if (typeof s === 'string' && typeof e === 'string') {
let a = s.charCodeAt(0);
let b = e.charCodeAt(0);
_ok = a <= b;
} else {
_ok = true;
}
if (_ok) {
ret = fillRange$1.fill(s, e);
}
if (!((_ret = ret) !== null && _ret !== void 0 && _ret.length)) {
ret = null;
}
}
if (Array.isArray(ret)) {
ret = ret.map(v => String(v));
}
return ret;
}
function getOptions(options) {
let opts = Object.assign({}, options);
opts.dataTables = opts.dataTables || regexpRangeTable.TABLE_RANGE;
return opts;
}
// @ts-ignore
{
Object.defineProperty(matchRange, "__esModule", {
value: true
});
Object.defineProperty(matchRange, 'matchRange', {
value: matchRange
});
Object.defineProperty(matchRange, 'default', {
value: matchRange
});
Object.defineProperty(matchRange, 'getOptions', {
value: getOptions
});
Object.defineProperty(matchRange, 'toRegExpString', {
value: toRegExpString
});
Object.defineProperty(matchRange, 'TABLE_RANGE', {
value: regexpRangeTable.TABLE_RANGE
});
Object.defineProperty(matchRange, 'fillRange', {
value: fillRange
});
}
Object.defineProperty(exports, 'TABLE_RANGE', {
enumerable: true,
get: function () { return regexpRangeTable.TABLE_RANGE; }
});
exports.default = matchRange;
exports.fillRange = fillRange;
exports.getOptions = getOptions;
exports.matchRange = matchRange;
exports.toRegExpString = toRegExpString;
Object.defineProperty(exports, '__esModule', { value: true });
}));
//# sourceMappingURL=index.umd.development.cjs.map