aboutsummaryrefslogtreecommitdiff
path: root/lib/finance.js
diff options
context:
space:
mode:
authorMarak <[email protected]>2017-02-09 23:43:25 -0500
committerMarak <[email protected]>2017-02-09 23:43:25 -0500
commitc4dcdfb23dda1c0ad71e16870f9caf2dc14fc034 (patch)
tree15aa126c36c5418b58e0c461fc928e47e985cb36 /lib/finance.js
parentfa99a52296fd6de8499a8bd8b429db3c21b66862 (diff)
parent94b65cbf334ea5ef1c4838711bc0945125f7c779 (diff)
downloadfaker-c4dcdfb23dda1c0ad71e16870f9caf2dc14fc034.tar.xz
faker-c4dcdfb23dda1c0ad71e16870f9caf2dc14fc034.zip
Merge remote-tracking branch 'codemanx/master'
Diffstat (limited to 'lib/finance.js')
-rw-r--r--lib/finance.js76
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;