🐛 Update: Added support for the 'find' command in settings.local.json. Enhanced logging for various modules, including initialization and performance metrics. Improved SQLite database optimization and ensured better tracking of user interactions and system processes. 📚
This commit is contained in:
43
network-visualization/node_modules/safe-regex/index.js
generated
vendored
Normal file
43
network-visualization/node_modules/safe-regex/index.js
generated
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
var parse = require('ret');
|
||||
var types = parse.types;
|
||||
|
||||
module.exports = function (re, opts) {
|
||||
if (!opts) opts = {};
|
||||
var replimit = opts.limit === undefined ? 25 : opts.limit;
|
||||
|
||||
if (isRegExp(re)) re = re.source;
|
||||
else if (typeof re !== 'string') re = String(re);
|
||||
|
||||
try { re = parse(re) }
|
||||
catch (err) { return false }
|
||||
|
||||
var reps = 0;
|
||||
return (function walk (node, starHeight) {
|
||||
if (node.type === types.REPETITION) {
|
||||
starHeight ++;
|
||||
reps ++;
|
||||
if (starHeight > 1) return false;
|
||||
if (reps > replimit) return false;
|
||||
}
|
||||
|
||||
if (node.options) {
|
||||
for (var i = 0, len = node.options.length; i < len; i++) {
|
||||
var ok = walk({ stack: node.options[i] }, starHeight);
|
||||
if (!ok) return false;
|
||||
}
|
||||
}
|
||||
var stack = node.stack || (node.value && node.value.stack);
|
||||
if (!stack) return true;
|
||||
|
||||
for (var i = 0; i < stack.length; i++) {
|
||||
var ok = walk(stack[i], starHeight);
|
||||
if (!ok) return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
})(re, 0);
|
||||
};
|
||||
|
||||
function isRegExp (x) {
|
||||
return {}.toString.call(x) === '[object RegExp]';
|
||||
}
|
Reference in New Issue
Block a user