diff options
| author | CoDEmanX <[email protected]> | 2016-04-07 11:31:33 +0200 |
|---|---|---|
| committer | CoDEmanX <[email protected]> | 2016-04-07 14:14:46 +0200 |
| commit | 94b65cbf334ea5ef1c4838711bc0945125f7c779 (patch) | |
| tree | 020ce2b1eec3e949ce8658ebe85bf83255453ae8 /lib/finance.js | |
| parent | 38e890eeced869b41cf0047ef28740bfb79d1c01 (diff) | |
| download | faker-94b65cbf334ea5ef1c4838711bc0945125f7c779.tar.xz faker-94b65cbf334ea5ef1c4838711bc0945125f7c779.zip | |
Add IBAN and BIC generator functions
Diffstat (limited to 'lib/finance.js')
| -rw-r--r-- | lib/finance.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/lib/finance.js b/lib/finance.js index 07eaa98b..68bb674b 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; @@ -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; |
