diff --git a/src/core/operations/LuhnChecksum.mjs b/src/core/operations/LuhnChecksum.mjs index 24549072..e6d5fe2b 100644 --- a/src/core/operations/LuhnChecksum.mjs +++ b/src/core/operations/LuhnChecksum.mjs @@ -23,18 +23,19 @@ class LuhnChecksum extends Operation { this.description = "The Luhn algorithm, also known as the modulus 10 or mod 10 algorithm, is a simple checksum formula used to validate a variety of identification numbers, such as credit card numbers, IMEI numbers, Canadian Social Insurance Numbers."; this.infoURL = "https://wikipedia.org/wiki/Luhn_algorithm"; this.inputType = "string"; - this.outputType = "number"; + this.outputType = "string"; this.args = []; } /** - * @param {string} input - * @param {Object[]} args + * Generates the Luhn Checksum from the input. + * + * @param {string} inputStr * @returns {number} */ - run(input, args) { + checksum(inputStr) { let even = false; - return input.split("").reverse().reduce((acc, elem) => { + return inputStr.split("").reverse().reduce((acc, elem) => { // Convert element to integer. let temp = parseInt(elem, 10); @@ -57,6 +58,18 @@ class LuhnChecksum extends Operation { }, 0) % 10; } + /** + * @param {string} input + * @param {Object[]} args + * @returns {string} + */ + run(input, args) { + const checkSum = this.checksum(input).toString(); + let checkDigit = this.checksum(input+"0"); + checkDigit = (checkDigit === 0 ? 0 : (10-checkDigit)).toString(); + return "Checksum: " + checkSum + "\n\nCheckdigit: " + checkDigit + "\n\nLuhn Validated String: "+ input + checkDigit; + } + } export default LuhnChecksum;