diff options
| author | Marak <[email protected]> | 2017-02-09 23:43:25 -0500 |
|---|---|---|
| committer | Marak <[email protected]> | 2017-02-09 23:43:25 -0500 |
| commit | c4dcdfb23dda1c0ad71e16870f9caf2dc14fc034 (patch) | |
| tree | 15aa126c36c5418b58e0c461fc928e47e985cb36 /lib/finance.js | |
| parent | fa99a52296fd6de8499a8bd8b429db3c21b66862 (diff) | |
| parent | 94b65cbf334ea5ef1c4838711bc0945125f7c779 (diff) | |
| download | faker-c4dcdfb23dda1c0ad71e16870f9caf2dc14fc034.tar.xz faker-c4dcdfb23dda1c0ad71e16870f9caf2dc14fc034.zip | |
Merge remote-tracking branch 'codemanx/master'
Diffstat (limited to 'lib/finance.js')
| -rw-r--r-- | lib/finance.js | 76 |
1 files changed, 71 insertions, 5 deletions
diff --git a/lib/finance.js b/lib/finance.js index 7c2053ab..17140b50 100644 --- a/lib/finance.js +++ b/lib/finance.js @@ -3,6 +3,7 @@ * @namespace faker.finance */ var Finance = function (faker) { + var ibanLib = require("./iban"); var Helpers = faker.helpers, self = this; @@ -41,15 +42,15 @@ var Finance = function (faker) { * @method faker.finance.mask * @param {number} length * @param {boolean} parens - * @param {boolean} elipsis + * @param {boolean} ellipsis */ - self.mask = function (length, parens, elipsis) { + self.mask = function (length, parens, ellipsis) { //set defaults length = (length == 0 || !length || typeof length == 'undefined') ? 4 : length; parens = (parens === null) ? true : parens; - elipsis = (elipsis === null) ? true : elipsis; + ellipsis = (ellipsis === null) ? true : ellipsis; //create a template for length var template = ''; @@ -58,8 +59,8 @@ var Finance = function (faker) { template = template + '#'; } - //prefix with elipsis - template = (elipsis) ? ['...', template].join('') : template; + //prefix with ellipsis + template = (ellipsis) ? ['...', template].join('') : template; template = (parens) ? ['(', template, ')'].join('') : template; @@ -150,6 +151,71 @@ var Finance = function (faker) { return address; } + + /** + * iban + * + * @method faker.finance.iban + */ + self.iban = function (formatted) { + var ibanFormat = faker.random.arrayElement(ibanLib.formats); + var s = ""; + var count = 0; + for (var b = 0; b < ibanFormat.bban.length; b++) { + var bban = ibanFormat.bban[b]; + var c = bban.count; + count += bban.count; + while (c > 0) { + if (bban.type == "a") { + s += faker.random.arrayElement(ibanLib.alpha); + } else if (bban.type == "c") { + if (faker.random.number(100) < 80) { + s += faker.random.number(9); + } else { + s += faker.random.arrayElement(ibanLib.alpha); + } + } else { + if (c >= 3 && faker.random.number(100) < 30) { + if (faker.random.boolean()) { + s += faker.random.arrayElement(ibanLib.pattern100); + c -= 2; + } else { + s += faker.random.arrayElement(ibanLib.pattern10); + c--; + } + } else { + s += faker.random.number(9); + } + } + c--; + } + s = s.substring(0, count); + } + var checksum = 98 - ibanLib.mod97(ibanLib.toDigitString(s + ibanFormat.country + "00")); + if (checksum < 10) { + checksum = "0" + checksum; + } + var iban = ibanFormat.country + checksum + s; + return formatted ? iban.match(/.{1,4}/g).join(" ") : iban; + } + + /** + * bic + * + * @method faker.finance.bic + */ + self.bic = function () { + var vowels = ["A", "E", "I", "O", "U"]; + var prob = faker.random.number(100); + return Helpers.replaceSymbols("???") + + faker.random.arrayElement(vowels) + + faker.random.arrayElement(ibanLib.iso3166) + + Helpers.replaceSymbols("?") + "1" + + (prob < 10 ? + Helpers.replaceSymbols("?" + faker.random.arrayElement(vowels) + "?") : + prob < 40 ? + Helpers.replaceSymbols("###") : ""); + } } module['exports'] = Finance; |
