diff options
| author | alexpts <[email protected]> | 2017-02-11 09:28:15 +0300 |
|---|---|---|
| committer | alexpts <[email protected]> | 2017-02-11 09:28:15 +0300 |
| commit | 53520a79ba4623199b2e059708806aae01f482db (patch) | |
| tree | 8bed503bdee9f201a0f083d3adf63e064a60e50a /lib/finance.js | |
| parent | 434b3174b1cd3cf568c06aefbc2e8d000b397adf (diff) | |
| parent | fe2c0fd5cbdb49ec97b51b040a357ec4d6318571 (diff) | |
| download | faker-53520a79ba4623199b2e059708806aae01f482db.tar.xz faker-53520a79ba4623199b2e059708806aae01f482db.zip | |
Merge branch 'master' into patch-1
# Conflicts:
# lib/finance.js
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 56b74e8a..87a89411 100644 --- a/lib/finance.js +++ b/lib/finance.js @@ -2,6 +2,7 @@ * @namespace faker.finance */ var Finance = function (faker) { + var ibanLib = require("./iban"); var Helpers = faker.helpers, self = this; @@ -40,14 +41,14 @@ 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 = ''; @@ -56,8 +57,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; @@ -148,6 +149,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; |
