Website Structure
This commit is contained in:
parent
62812f2090
commit
71f0676a62
22365 changed files with 4265753 additions and 791 deletions
88
Frontend-Learner/node_modules/regexp-tree/dist/transform/utils.js
generated
vendored
Normal file
88
Frontend-Learner/node_modules/regexp-tree/dist/transform/utils.js
generated
vendored
Normal file
|
|
@ -0,0 +1,88 @@
|
|||
/**
|
||||
* The MIT License (MIT)
|
||||
* Copyright (c) 2017-present Dmitry Soshnikov <dmitry.soshnikov@gmail.com>
|
||||
*/
|
||||
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* Flattens a nested disjunction node to a list.
|
||||
*
|
||||
* /a|b|c|d/
|
||||
*
|
||||
* {{{a, b}, c}, d} -> [a, b, c, d]
|
||||
*/
|
||||
|
||||
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
|
||||
|
||||
function disjunctionToList(node) {
|
||||
if (node.type !== 'Disjunction') {
|
||||
throw new TypeError('Expected "Disjunction" node, got "' + node.type + '"');
|
||||
}
|
||||
|
||||
var list = [];
|
||||
|
||||
if (node.left && node.left.type === 'Disjunction') {
|
||||
list.push.apply(list, _toConsumableArray(disjunctionToList(node.left)).concat([node.right]));
|
||||
} else {
|
||||
list.push(node.left, node.right);
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds a nested disjunction node from a list.
|
||||
*
|
||||
* /a|b|c|d/
|
||||
*
|
||||
* [a, b, c, d] -> {{{a, b}, c}, d}
|
||||
*/
|
||||
function listToDisjunction(list) {
|
||||
return list.reduce(function (left, right) {
|
||||
return {
|
||||
type: 'Disjunction',
|
||||
left: left,
|
||||
right: right
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Increases a quantifier by one.
|
||||
* Does not change greediness.
|
||||
* * -> +
|
||||
* + -> {2,}
|
||||
* ? -> {1,2}
|
||||
* {2} -> {3}
|
||||
* {2,} -> {3,}
|
||||
* {2,3} -> {3,4}
|
||||
*/
|
||||
function increaseQuantifierByOne(quantifier) {
|
||||
if (quantifier.kind === '*') {
|
||||
|
||||
quantifier.kind = '+';
|
||||
} else if (quantifier.kind === '+') {
|
||||
|
||||
quantifier.kind = 'Range';
|
||||
quantifier.from = 2;
|
||||
delete quantifier.to;
|
||||
} else if (quantifier.kind === '?') {
|
||||
|
||||
quantifier.kind = 'Range';
|
||||
quantifier.from = 1;
|
||||
quantifier.to = 2;
|
||||
} else if (quantifier.kind === 'Range') {
|
||||
|
||||
quantifier.from += 1;
|
||||
if (quantifier.to) {
|
||||
quantifier.to += 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
disjunctionToList: disjunctionToList,
|
||||
listToDisjunction: listToDisjunction,
|
||||
increaseQuantifierByOne: increaseQuantifierByOne
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue