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

66 lines (52 loc) 1.43 kB
'use strict' var stringWidth = require('string-width') exports.center = alignCenter exports.left = alignLeft exports.right = alignRight // lodash's way of generating pad characters. function createPadding (width) { var result = '' var string = ' ' var n = width do { if (n % 2) { result += string; } n = Math.floor(n / 2); string += string; } while (n); return result; } function alignLeft (str, width) { var trimmed = str.trimRight() if (trimmed.length === 0 && str.length >= width) return str var padding = '' var strWidth = stringWidth(trimmed) if (strWidth < width) { padding = createPadding(width - strWidth) } return trimmed + padding } function alignRight (str, width) { var trimmed = str.trimLeft() if (trimmed.length === 0 && str.length >= width) return str var padding = '' var strWidth = stringWidth(trimmed) if (strWidth < width) { padding = createPadding(width - strWidth) } return padding + trimmed } function alignCenter (str, width) { var trimmed = str.trim() if (trimmed.length === 0 && str.length >= width) return str var padLeft = '' var padRight = '' var strWidth = stringWidth(trimmed) if (strWidth < width) { var padLeftBy = parseInt((width - strWidth) / 2, 10) padLeft = createPadding(padLeftBy) padRight = createPadding(width - (strWidth + padLeftBy)) } return padLeft + trimmed + padRight }