mirror of
https://github.com/gchq/CyberChef.git
synced 2025-04-22 07:46:16 -04:00
Add OperationError error type and use for errors to be printed to the output panel
This commit is contained in:
parent
a8aa1bc5e8
commit
cc20ad9567
10 changed files with 82 additions and 69 deletions
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import Operation from "../Operation";
|
||||
import OperationError from "../errors/OperationError";
|
||||
|
||||
/**
|
||||
* Set cartesian product operation
|
||||
|
@ -44,7 +45,8 @@ class CartesianProduct extends Operation {
|
|||
*/
|
||||
validateSampleNumbers(sets) {
|
||||
if (!sets || sets.length < 2) {
|
||||
throw "Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?";
|
||||
throw new OperationError("Incorrect number of sets, perhaps you" +
|
||||
" need to modify the sample delimiter or add more samples?");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,16 +56,13 @@ class CartesianProduct extends Operation {
|
|||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {string}
|
||||
* @throws {OperationError}
|
||||
*/
|
||||
run(input, args) {
|
||||
[this.sampleDelim, this.itemDelimiter] = args;
|
||||
const sets = input.split(this.sampleDelim);
|
||||
|
||||
try {
|
||||
this.validateSampleNumbers(sets);
|
||||
} catch (e) {
|
||||
return e;
|
||||
}
|
||||
this.validateSampleNumbers(sets);
|
||||
|
||||
return this.runCartesianProduct(...sets.map(s => s.split(this.itemDelimiter)));
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import Operation from "../Operation";
|
||||
import OperationError from "../errors/OperationError";
|
||||
|
||||
/**
|
||||
* Set Difference operation
|
||||
|
@ -44,7 +45,7 @@ class SetDifference extends Operation {
|
|||
*/
|
||||
validateSampleNumbers(sets) {
|
||||
if (!sets || (sets.length !== 2)) {
|
||||
throw "Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?";
|
||||
throw new OperationError("Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,16 +55,13 @@ class SetDifference extends Operation {
|
|||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {string}
|
||||
* @throws {OperationError}
|
||||
*/
|
||||
run(input, args) {
|
||||
[this.sampleDelim, this.itemDelimiter] = args;
|
||||
const sets = input.split(this.sampleDelim);
|
||||
|
||||
try {
|
||||
this.validateSampleNumbers(sets);
|
||||
} catch (e) {
|
||||
return e;
|
||||
}
|
||||
this.validateSampleNumbers(sets);
|
||||
|
||||
return this.runSetDifference(...sets.map(s => s.split(this.itemDelimiter)));
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import Operation from "../Operation";
|
||||
import OperationError from "../errors/OperationError";
|
||||
|
||||
/**
|
||||
* Set Intersection operation
|
||||
|
@ -44,7 +45,7 @@ class SetIntersection extends Operation {
|
|||
*/
|
||||
validateSampleNumbers(sets) {
|
||||
if (!sets || (sets.length !== 2)) {
|
||||
throw "Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?";
|
||||
throw new OperationError("Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,16 +55,13 @@ class SetIntersection extends Operation {
|
|||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {string}
|
||||
* @throws {OperationError}
|
||||
*/
|
||||
run(input, args) {
|
||||
[this.sampleDelim, this.itemDelimiter] = args;
|
||||
const sets = input.split(this.sampleDelim);
|
||||
|
||||
try {
|
||||
this.validateSampleNumbers(sets);
|
||||
} catch (e) {
|
||||
return e;
|
||||
}
|
||||
this.validateSampleNumbers(sets);
|
||||
|
||||
return this.runIntersect(...sets.map(s => s.split(this.itemDelimiter)));
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
import Operation from "../Operation";
|
||||
import OperationError from "../errors/OperationError";
|
||||
|
||||
/**
|
||||
* Set Union operation
|
||||
|
@ -44,7 +45,7 @@ class SetUnion extends Operation {
|
|||
*/
|
||||
validateSampleNumbers(sets) {
|
||||
if (!sets || (sets.length !== 2)) {
|
||||
throw "Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?";
|
||||
throw new OperationError("Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -54,16 +55,13 @@ class SetUnion extends Operation {
|
|||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {string}
|
||||
* @throws {OperationError}
|
||||
*/
|
||||
run(input, args) {
|
||||
[this.sampleDelim, this.itemDelimiter] = args;
|
||||
const sets = input.split(this.sampleDelim);
|
||||
|
||||
try {
|
||||
this.validateSampleNumbers(sets);
|
||||
} catch (e) {
|
||||
return e;
|
||||
}
|
||||
this.validateSampleNumbers(sets);
|
||||
|
||||
return this.runUnion(...sets.map(s => s.split(this.itemDelimiter)));
|
||||
}
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
|
||||
import Utils from "../Utils";
|
||||
import Operation from "../Operation";
|
||||
import OperationError from "../errors/OperationError";
|
||||
|
||||
/**
|
||||
* Set Symmetric Difference operation
|
||||
|
@ -45,7 +46,7 @@ class SymmetricDifference extends Operation {
|
|||
*/
|
||||
validateSampleNumbers(sets) {
|
||||
if (!sets || (sets.length !== 2)) {
|
||||
throw "Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?";
|
||||
throw new OperationError("Incorrect number of sets, perhaps you need to modify the sample delimiter or add more samples?");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,16 +56,13 @@ class SymmetricDifference extends Operation {
|
|||
* @param {string} input
|
||||
* @param {Object[]} args
|
||||
* @returns {string}
|
||||
* @throws {OperationError}
|
||||
*/
|
||||
run(input, args) {
|
||||
[this.sampleDelim, this.itemDelimiter] = args;
|
||||
const sets = input.split(this.sampleDelim);
|
||||
|
||||
try {
|
||||
this.validateSampleNumbers(sets);
|
||||
} catch (e) {
|
||||
return e;
|
||||
}
|
||||
this.validateSampleNumbers(sets);
|
||||
|
||||
return this.runSymmetricDifference(...sets.map(s => s.split(this.itemDelimiter)));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue