From 9de93022d603a92c2a64767c3074cab5b5bcb3c7 Mon Sep 17 00:00:00 2001 From: d98762625 Date: Tue, 15 May 2018 10:33:58 +0100 Subject: [PATCH] port divide operation --- src/core/lib/Arithmetic.mjs | 4 ++- src/core/operations/Divide.mjs | 49 ++++++++++++++++++++++++++++++++ src/core/operations/Multiply.mjs | 1 + src/core/operations/Subtract.mjs | 1 + 4 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 src/core/operations/Divide.mjs diff --git a/src/core/lib/Arithmetic.mjs b/src/core/lib/Arithmetic.mjs index 7171c184..199e89bc 100644 --- a/src/core/lib/Arithmetic.mjs +++ b/src/core/lib/Arithmetic.mjs @@ -1,4 +1,5 @@ /** + * @author bwhitn [brian.m.whitney@outlook.com] * @author d98762625 [d98762625@gmailcom] * @copyright Crown Copyright 2018 * @license Apache-2.0 @@ -8,7 +9,8 @@ import Utils from "../Utils"; import BigNumber from "bignumber.js"; /** - * + * Arithmetic functions used by Sum, Multiply, Divide, Subtract (etc) + * functions. */ class Arithmetic { diff --git a/src/core/operations/Divide.mjs b/src/core/operations/Divide.mjs new file mode 100644 index 00000000..e3402b2a --- /dev/null +++ b/src/core/operations/Divide.mjs @@ -0,0 +1,49 @@ +/** + * @author bwhitn [brian.m.whitney@outlook.com] + * @author d98762625 [d98762625@gmail.com] + * @copyright Crown Copyright 2018 + * @license Apache-2.0 + */ + +import Operation from "../Operation"; +import Arithmetic from "../lib/Arithmetic"; +import BigNumber from "bignumber.js"; + +/** + * Divide operation + */ +class Divide extends Operation { + + /** + * Divide constructor + */ + constructor() { + super(); + + this.name = "Divide"; + this.module = "Default"; + this.description = "Divides a list of numbers. If an item in the string is not a number it is excluded from the list.

e.g. 0x0a 8 .5 becomes 2.5"; + this.inputType = "string"; + this.outputType = "BigNumber"; + this.args = [ + { + "name": "Delimiter", + "type": "option", + "value": Arithmetic.DELIM_OPTIONS, + } + ]; + } + + /** + * @param {string} input + * @param {Object[]} args + * @returns {BigNumber} + */ + run(input, args) { + const val = Arithmetic._div(Arithmetic._createNumArray(input, args[0])); + return val instanceof BigNumber ? val : new BigNumber(NaN); + } + +} + +export default Divide; diff --git a/src/core/operations/Multiply.mjs b/src/core/operations/Multiply.mjs index 701beb43..f903010a 100644 --- a/src/core/operations/Multiply.mjs +++ b/src/core/operations/Multiply.mjs @@ -1,4 +1,5 @@ /** + * @author bwhitn [brian.m.whitney@outlook.com] * @author d98762625 [d98762625@gmail.com] * @copyright Crown Copyright 2018 * @license Apache-2.0 diff --git a/src/core/operations/Subtract.mjs b/src/core/operations/Subtract.mjs index f0b24ee5..e6ac32ac 100644 --- a/src/core/operations/Subtract.mjs +++ b/src/core/operations/Subtract.mjs @@ -1,4 +1,5 @@ /** + * @author bwhitn [brian.m.whitney@outlook.com] * @author d98762625 [d98762625@gmail.com] * @copyright Crown Copyright 2018 * @license Apache-2.0