From 847ce26c8946b78a825663d1d8d2086982cc255c Mon Sep 17 00:00:00 2001 From: mohamedsalem401 Date: Mon, 24 Feb 2025 18:57:26 +0200 Subject: [PATCH] Rename and refactor logicalOperator to BooleanOperator --- .../operators/BooleanOperator.ts | 25 +++++++++++++++++ .../operators/LogicalOperator.ts | 28 ------------------- 2 files changed, 25 insertions(+), 28 deletions(-) create mode 100644 packages/core/src/data_sources/model/conditional_variables/operators/BooleanOperator.ts delete mode 100644 packages/core/src/data_sources/model/conditional_variables/operators/LogicalOperator.ts diff --git a/packages/core/src/data_sources/model/conditional_variables/operators/BooleanOperator.ts b/packages/core/src/data_sources/model/conditional_variables/operators/BooleanOperator.ts new file mode 100644 index 000000000..a54e00350 --- /dev/null +++ b/packages/core/src/data_sources/model/conditional_variables/operators/BooleanOperator.ts @@ -0,0 +1,25 @@ +import { Operator } from './BaseOperator'; + +export enum BooleanOperation { + and = 'and', + or = 'or', + xor = 'xor', +} + +export class BooleanOperator extends Operator { + evaluate(statements: boolean[]): boolean { + if (!statements.length) throw new Error('Expected one or more statments, got none'); + + switch (this.operation) { + case BooleanOperation.and: + return statements.every(Boolean); + case BooleanOperation.or: + return statements.some(Boolean); + case BooleanOperation.xor: + return statements.filter(Boolean).length === 1; + default: + this.em.logError(`Unsupported logical operation: ${this.operation}`); + return false; + } + } +} diff --git a/packages/core/src/data_sources/model/conditional_variables/operators/LogicalOperator.ts b/packages/core/src/data_sources/model/conditional_variables/operators/LogicalOperator.ts deleted file mode 100644 index 5c3aced38..000000000 --- a/packages/core/src/data_sources/model/conditional_variables/operators/LogicalOperator.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Operator } from '.'; - -export enum LogicalOperation { - and = 'and', - or = 'or', - xor = 'xor', -} - -export class LogicalOperator extends Operator { - constructor(private operator: LogicalOperation) { - super(); - } - - evaluate(statements: boolean[]): boolean { - if (!statements.length) throw new Error('Expected one or more statments, got none'); - - switch (this.operator) { - case LogicalOperation.and: - return statements.every(Boolean); - case LogicalOperation.or: - return statements.some(Boolean); - case LogicalOperation.xor: - return statements.filter(Boolean).length === 1; - default: - throw new Error(`Unsupported logical operator: ${this.operator}`); - } - } -}