UNPKG

luhn-generator

Version:

A generator of numbers that passes the validation of Luhn algorithm or Luhn formula, also known as the 'modulus 10' or 'mod 10' algorithm

63 lines (56 loc) 1.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.program = exports.expression = exports.statement = exports.statements = exports.smart = void 0; function makeStatementFormatter(fn) { return { code: str => `/* @babel/template */;\n${str}`, validate: () => {}, unwrap: ast => { return fn(ast.program.body.slice(1)); } }; } const smart = makeStatementFormatter(body => { if (body.length > 1) { return body; } else { return body[0]; } }); exports.smart = smart; const statements = makeStatementFormatter(body => body); exports.statements = statements; const statement = makeStatementFormatter(body => { if (body.length === 0) { throw new Error("Found nothing to return."); } if (body.length > 1) { throw new Error("Found multiple statements but wanted one"); } return body[0]; }); exports.statement = statement; const expression = { code: str => `(\n${str}\n)`, validate: ({ program }) => { if (program.body.length > 1) { throw new Error("Found multiple statements but wanted one"); } const expression = program.body[0].expression; if (expression.start === 0) { throw new Error("Parse result included parens."); } }, unwrap: ast => ast.program.body[0].expression }; exports.expression = expression; const program = { code: str => str, validate: () => {}, unwrap: ast => ast.program }; exports.program = program;