aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohnny Reina <[email protected]>2017-10-02 04:44:33 -0500
committerJohnny Reina <[email protected]>2017-10-02 04:44:33 -0500
commitf490bacd55501ce33de068e3044c1f0d8d3e149c (patch)
tree694204e726722ab170e07031bd94939f0b2fe41d
parentf5fc455a8fa2203970199fcc364acd32ab657106 (diff)
parentef5d2e145cac62afe61f64d6afa1ff212425f327 (diff)
downloadfaker-f490bacd55501ce33de068e3044c1f0d8d3e149c.tar.xz
faker-f490bacd55501ce33de068e3044c1f0d8d3e149c.zip
Merge branch 'master' of https://github.com/Marak/faker.js
-rw-r--r--.gitignore4
-rwxr-xr-x.travis.yml2
-rw-r--r--Readme.md9
-rw-r--r--examples/browser/index.html10
-rw-r--r--examples/node/generateSet.js4
-rw-r--r--examples/node/unique-values.js29
-rw-r--r--lib/address.js16
-rw-r--r--lib/commerce.js2
-rw-r--r--lib/date.js22
-rw-r--r--lib/finance.js57
-rw-r--r--lib/hacker.js14
-rw-r--r--lib/helpers.js114
-rw-r--r--lib/index.js14
-rw-r--r--lib/locales/cz/lorem/index.js1
-rw-r--r--lib/locales/cz/lorem/supplemental.js842
-rw-r--r--lib/locales/de_AT/address/city_name.js1
-rw-r--r--lib/locales/el/lorem/index.js1
-rw-r--r--lib/locales/el/lorem/supplemental.js842
-rw-r--r--lib/locales/en/credit_card/american_express.js4
-rw-r--r--lib/locales/en/credit_card/diners_club.js4
-rw-r--r--lib/locales/en/credit_card/discover.js8
-rw-r--r--lib/locales/en/credit_card/jcb.js5
-rw-r--r--lib/locales/en/credit_card/laser.js10
-rw-r--r--lib/locales/en/credit_card/maestro.js5
-rw-r--r--lib/locales/en/credit_card/mastercard.js4
-rw-r--r--lib/locales/en/credit_card/solo.js5
-rw-r--r--lib/locales/en/credit_card/switch.js5
-rw-r--r--lib/locales/en/credit_card/visa.js4
-rw-r--r--lib/locales/en/finance/credit_card/american_express.js4
-rw-r--r--lib/locales/en/finance/credit_card/diners_club.js5
-rw-r--r--lib/locales/en/finance/credit_card/discover.js8
-rw-r--r--lib/locales/en/finance/credit_card/index.js (renamed from lib/locales/en/credit_card/index.js)1
-rw-r--r--lib/locales/en/finance/credit_card/instapayment.js3
-rw-r--r--lib/locales/en/finance/credit_card/jcb.js5
-rw-r--r--lib/locales/en/finance/credit_card/laser.js10
-rw-r--r--lib/locales/en/finance/credit_card/maestro.js18
-rw-r--r--lib/locales/en/finance/credit_card/mastercard.js4
-rw-r--r--lib/locales/en/finance/credit_card/solo.js5
-rw-r--r--lib/locales/en/finance/credit_card/switch.js5
-rw-r--r--lib/locales/en/finance/credit_card/visa.js4
-rw-r--r--lib/locales/en/finance/index.js1
-rw-r--r--lib/locales/en/hacker/index.js1
-rw-r--r--lib/locales/en/hacker/phrase.js10
-rw-r--r--lib/locales/en/index.js1
-rw-r--r--lib/locales/en/name/gender.js73
-rw-r--r--lib/locales/en/name/index.js3
-rw-r--r--lib/locales/en/phone_number/formats.js40
-rw-r--r--lib/locales/en/system/directoryPaths.js62
-rw-r--r--lib/locales/en/system/index.js3
-rw-r--r--lib/locales/en_AU/address/postcode.js8
-rw-r--r--lib/locales/en_CA/phone_number/formats.js32
-rw-r--r--lib/locales/en_IND/address/postcode.js2
-rw-r--r--lib/locales/es_MX/lorem/index.js1
-rw-r--r--lib/locales/es_MX/lorem/supplemental.js842
-rw-r--r--lib/locales/fr/address/street_prefix.js3
-rw-r--r--lib/locales/fr/lorem/index.js1
-rw-r--r--lib/locales/fr/lorem/supplemental.js842
-rw-r--r--lib/locales/nl/lorem/index.js1
-rw-r--r--lib/locales/nl/lorem/supplemental.js842
-rw-r--r--lib/locales/pl/lorem/index.js1
-rw-r--r--lib/locales/pl/lorem/supplemental.js842
-rw-r--r--lib/locales/pl/name/first_name.js1
-rw-r--r--lib/locales/ru/hacker/abbreviation.js31
-rw-r--r--lib/locales/ru/hacker/adjective.js5
-rw-r--r--lib/locales/ru/hacker/index.js2
-rw-r--r--lib/locales/ru/hacker/noun.js24
-rw-r--r--lib/locales/ru/hacker/phrase.js10
-rw-r--r--lib/locales/ru/hacker/verb.js24
-rw-r--r--lib/locales/sk/lorem/index.js1
-rw-r--r--lib/locales/sk/lorem/supplemental.js842
-rw-r--r--lib/name.js10
-rw-r--r--lib/random.js47
-rw-r--r--lib/system.js9
-rw-r--r--lib/unique.js16
-rw-r--r--package.json29
-rw-r--r--test/address.unit.js26
-rw-r--r--test/commerce.unit.js2
-rw-r--r--test/date.unit.js10
-rw-r--r--test/finance.unit.js84
-rw-r--r--test/helpers.unit.js60
-rw-r--r--test/locales.unit.js13
-rw-r--r--test/phone_number.unit.js21
-rw-r--r--test/random.unit.js54
-rw-r--r--test/support/luhnCheck.js18
-rw-r--r--test/unique.unit.js54
-rw-r--r--vendor/unique.js85
86 files changed, 1130 insertions, 6069 deletions
diff --git a/.gitignore b/.gitignore
index 4727aaee..7edb33a7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,7 +14,9 @@ lib-cov
node_modules/
/npm-debug.log
/coverage
+/.npm
+
# meteor specific
.build*
-versions.json \ No newline at end of file
+versions.json
diff --git a/.travis.yml b/.travis.yml
index db29bd46..f9bfca44 100755
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,6 +2,8 @@
sudo: false
language: node_js
node_js:
+ - "6"
+ - "6.1"
- "5"
- "5.1"
- "4"
diff --git a/Readme.md b/Readme.md
index fc23abe5..5e7201ba 100644
--- a/Readme.md
+++ b/Readme.md
@@ -2,7 +2,7 @@
![Faker.js](https://raw.githubusercontent.com/Marak/faker.js/master/logo.png)
-[![Build Status](https://travis-ci.org/Marak/faker.js.svg?branch=master)](https://travis-ci.org/Marak/faker.js)
+[![Build Status](https://travis-ci.org/Marak/faker.js.svg?branch=master)](https://travis-ci.org/Marak/faker.js) [![Coverage Status](https://coveralls.io/repos/github/Marak/faker.js/badge.svg?branch=master)](https://coveralls.io/github/Marak/faker.js?branch=master)
[![npm version](https://badge.fury.io/js/faker.svg)](http://badge.fury.io/js/faker)
@@ -11,7 +11,7 @@
## Demo
-[https://cdn.rawgit.com/Marak/faker.js/master/examples/browser/index.html](https://cdn.rawgit.com/Marak/faker.js/master/examples/browser/index.html)
+[https://rawgit.com/Marak/faker.js/master/examples/browser/index.html](https://rawgit.com/Marak/faker.js/master/examples/browser/index.html)
## Hosted API Microservice
@@ -112,6 +112,7 @@ This will interpolate the format string with the value of methods `name.lastName
* future
* between
* recent
+ * soon
* month
* weekday
* fake
@@ -125,6 +126,7 @@ This will interpolate the format string with the value of methods `name.lastName
* currencyName
* currencySymbol
* bitcoinAddress
+ * ethereumAddress
* iban
* bic
* hacker
@@ -215,6 +217,7 @@ This will interpolate the format string with the value of methods `name.lastName
* image
* locale
* alphaNumeric
+ * hexaDecimal
* system
* fileName
* commonFileName
@@ -238,6 +241,8 @@ Setting a new locale is simple:
```js
// sets locale to de
+faker.setLocale("de");
+// or
faker.locale = "de";
```
diff --git a/examples/browser/index.html b/examples/browser/index.html
index 99a961dd..d5842bd2 100644
--- a/examples/browser/index.html
+++ b/examples/browser/index.html
@@ -121,6 +121,7 @@
var dob = faker.date.past(50, new Date("Sat Sep 20 1992 21:35:02 GMT+0200 (CEST)"));
dob = dob.getFullYear() + "-" + (dob.getMonth()+1) + "-" + dob.getDate(); // First month is "1"
$('#inputName').attr("value", faker.name.findName(firstName, lastName));
+ // $('#inputGender').attr("value", faker.name.gender());
$('#inputDob').attr("value", dob);
$('#inputStreetAddress').attr("value", faker.address.streetAddress());
$('#inputCityStateZip').attr("value", faker.address.city() + ", " + faker.address.stateAbbr() + " " + faker.address.zipCode());
@@ -189,7 +190,6 @@
<button id="generateName" type="button" class="btn btn-primary">Generate New</button>
</div>
</div>
-
<div class="form-group">
<label for="inputName" class="col-lg-2 control-label">Name:</label>
<div class="col-lg-10">
@@ -259,6 +259,14 @@
<img class="" id="imageAvatar"/>
</div>
</div>
+ <!--
+ <div class="form-group">
+ <label for="inputGender" class="col-lg-2 control-label">Gender:</label>
+ <div class="col-lg-10">
+ <input type="text" class="form-control" id="inputGender" placeholder="Gender">
+ </div>
+ </div>
+ -->
</fieldset>
</form>
diff --git a/examples/node/generateSet.js b/examples/node/generateSet.js
index 3bcd42ad..bd0be031 100644
--- a/examples/node/generateSet.js
+++ b/examples/node/generateSet.js
@@ -1,6 +1,6 @@
var fs = require('fs');
-var faker= require('../../index');
+var faker = require('../../index');
// generate dataSet as example
@@ -10,7 +10,7 @@ fs.writeFile(__dirname + '/dataSet.json', JSON.stringify(faker.helpers.userCard
// generate bigDataSet as example
var bigSet = [];
-for(i = 20; i >= 0; i--){
+for(var i = 20; i >= 0; i--){
bigSet.push(faker.helpers.userCard());
};
diff --git a/examples/node/unique-values.js b/examples/node/unique-values.js
new file mode 100644
index 00000000..3c346612
--- /dev/null
+++ b/examples/node/unique-values.js
@@ -0,0 +1,29 @@
+var faker = require('../../index');
+
+var emails = {};
+var conflicts = 0;
+// emails estimated: 1,055,881
+// full names estimated: 1,185,139
+for (var i = 0; i < 100000; i++) {
+
+ // call function with no arguments
+ var email = faker.unique(faker.internet.email);
+
+ // or with function arguments as argument array
+ // var email = faker.unique(faker.internet.email, [null, null, 'marak.com']);
+
+ // or with custom options for maxTime as milliseconds or maxRetries
+ // var email = faker.unique(faker.internet.email, [null, null, 'marak.com'], { maxRetries: 1, maxTime: 50 });
+
+ if (typeof emails[email] === 'undefined') {
+ // found a unique new item
+ emails[email] = true;
+ } else {
+ // found a conflicting item ( should not happen using faker.unique() )
+ conflicts++;
+ }
+}
+console.log('total conflicts', conflicts); // should be zero using faker.unique()
+console.log('total uniques generated', Object.keys(emails).length);
+
+// console.log(emails); \ No newline at end of file
diff --git a/lib/address.js b/lib/address.js
index cf37d2e8..0a6f0c5b 100644
--- a/lib/address.js
+++ b/lib/address.js
@@ -205,18 +205,26 @@ function Address (faker) {
* latitude
*
* @method faker.address.latitude
+ * @param {Double} max default is 90
+ * @param {Double} min default is -90
*/
- this.latitude = function () {
- return (faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4);
+ this.latitude = function (max, min) {
+ max = max || 90
+ min = min || -90
+ return faker.random.number({max: max, min:min, precision:0.0001}).toFixed(4);
}
/**
* longitude
*
* @method faker.address.longitude
+ * @param {Double} max default is 180
+ * @param {Double} min default is -180
*/
- this.longitude = function () {
- return (faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4);
+ this.longitude = function (max, min) {
+ max = max || 180
+ min = min || -180
+ return faker.random.number({max: max, min:min, precision:0.0001}).toFixed(4);
}
return this;
diff --git a/lib/commerce.js b/lib/commerce.js
index 56e63dba..79316256 100644
--- a/lib/commerce.js
+++ b/lib/commerce.js
@@ -46,7 +46,7 @@ var Commerce = function (faker) {
* @return {string}
*/
self.price = function(min, max, dec, symbol) {
- min = min || 0;
+ min = min || 1;
max = max || 1000;
dec = dec === undefined ? 2 : dec;
symbol = symbol || '';
diff --git a/lib/date.js b/lib/date.js
index e1ce7a48..1977137b 100644
--- a/lib/date.js
+++ b/lib/date.js
@@ -83,6 +83,26 @@ var _Date = function (faker) {
};
/**
+ * soon
+ *
+ * @method faker.date.soon
+ * @param {number} days
+ */
+ self.soon = function (days) {
+ var date = new Date();
+ var range = {
+ min: 1000,
+ max: (days || 1) * 24 * 3600 * 1000
+ };
+
+ var future = date.getTime();
+ future += faker.random.number(range); // some time from now to N days later, in milliseconds
+ date.setTime(future);
+
+ return date;
+ };
+
+ /**
* month
*
* @method faker.date.month
@@ -130,4 +150,4 @@ var _Date = function (faker) {
};
-module['exports'] = _Date; \ No newline at end of file
+module['exports'] = _Date;
diff --git a/lib/finance.js b/lib/finance.js
index 87a89411..88a992f3 100644
--- a/lib/finance.js
+++ b/lib/finance.js
@@ -148,6 +148,63 @@ var Finance = function (faker) {
address += faker.random.alphaNumeric().toUpperCase();
return address;
+ }
+
+ /**
+ * Credit card number
+ * @method faker.finance.creditCardNumber
+ * @param {string} provider | scheme
+ */
+ self.creditCardNumber = function(provider){
+ provider = provider || "";
+ var format, formats;
+ var localeFormat = faker.definitions.finance.credit_card;
+ if (provider in localeFormat) {
+ formats = localeFormat[provider]; // there chould be multiple formats
+ if (typeof formats === "string") {
+ format = formats;
+ } else {
+ format = faker.random.arrayElement(formats);
+ }
+ } else if (provider.match(/#/)) { // The user chose an optional scheme
+ format = provider;
+ } else { // Choose a random provider
+ if (typeof localeFormat === 'string') {
+ format = localeFormat;
+ } else if( typeof localeFormat === "object") {
+ // Credit cards are in a object structure
+ formats = faker.random.objectElement(localeFormat, "value"); // There chould be multiple formats
+ if (typeof formats === "string") {
+ format = formats;
+ } else {
+ format = faker.random.arrayElement(formats);
+ }
+ }
+ }
+ format = format.replace(/\//g,"")
+ return Helpers.replaceCreditCardSymbols(format);
+ };
+ /**
+ * Credit card CVV
+ * @method faker.finance.creditCardNumber
+ */
+ self.creditCardCVV = function() {
+ var cvv = "";
+ for (var i = 0; i < 3; i++) {
+ cvv += faker.random.number({max:9}).toString();
+ }
+ return cvv;
+ };
+
+ /**
+ * ethereumAddress
+ *
+ * @method faker.finance.ethereumAddress
+ */
+ self.ethereumAddress = function () {
+ var address = faker.random.hexaDecimal(40);
+
+ return address;
};
/**
diff --git a/lib/hacker.js b/lib/hacker.js
index 18fe7de5..9f32ee43 100644
--- a/lib/hacker.js
+++ b/lib/hacker.js
@@ -65,18 +65,8 @@ var Hacker = function (faker) {
verb: self.verb
};
- var phrase = faker.random.arrayElement([ "If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!",
- "We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!",
- "Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!",
- "You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!",
- "Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!",
- "The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!",
- "{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!",
- "I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!"
- ]);
-
- return faker.helpers.mustache(phrase, data);
-
+ var phrase = faker.random.arrayElement(faker.definitions.hacker.phrase);
+ return faker.helpers.mustache(phrase, data);
};
return self;
diff --git a/lib/helpers.js b/lib/helpers.js
index 635c4ecc..9bb78267 100644
--- a/lib/helpers.js
+++ b/lib/helpers.js
@@ -46,6 +46,8 @@ var Helpers = function (faker) {
for (var i = 0; i < string.length; i++) {
if (string.charAt(i) == symbol) {
str += faker.random.number(9);
+ } else if (string.charAt(i) == "!"){
+ str += faker.random.number({min: 2, max: 9});
} else {
str += string.charAt(i);
}
@@ -69,6 +71,8 @@ var Helpers = function (faker) {
str += faker.random.number(9);
} else if (string.charAt(i) == "?") {
str += faker.random.arrayElement(alpha);
+ } else if (string.charAt(i) == "*") {
+ str += faker.random.boolean() ? faker.random.arrayElement(alpha) : faker.random.number(9);
} else {
str += string.charAt(i);
}
@@ -77,6 +81,116 @@ var Helpers = function (faker) {
};
/**
+ * replace symbols in a credit card schems including Luhn checksum
+ *
+ * @method faker.helpers.replaceCreditCardSymbols
+ * @param {string} string
+ * @param {string} symbol
+ */
+
+ self.replaceCreditCardSymbols = function(string, symbol) {
+ symbol = symbol || "#";
+
+ // Function calculating the Luhn checksum of a number string
+ var getCheckBit = function(number) {
+ number.reverse();
+ number = number.map(function(num, index){
+ if(index%2 === 0) {
+ num *= 2;
+ if(num>9) {
+ num -= 9;
+ }
+ }
+ return num;
+ });
+ var sum = number.reduce(function(prev,curr){return prev + curr;});
+ return sum % 10;
+ };
+
+ string = string || "";
+ string = faker.helpers.regexpStyleStringParse(string); // replace [4-9] with a random number in range etc...
+ string = faker.helpers.replaceSymbolWithNumber(string, symbol); // replace ### with random numbers
+
+ var numberList = string.replace(/\D/g,"").split("").map(function(num){return parseInt(num);});
+ var checkNum = getCheckBit(numberList);
+ return string.replace("L",checkNum);
+ };
+
+ /** string repeat helper, alternative to String.prototype.repeat.... See PR #382
+ *
+ * @method faker.helpers.repeatString
+ * @param {string} string
+ * @param {number} num
+ */
+ self.repeatString = function(string,num) {
+ if(typeof num ==="undefined") {
+ num = 0;
+ }
+ var text = "";
+ for(var i = 0; i < num; i++){
+ text += string.toString();
+ }
+ return text;
+ };
+
+ /**
+ * parse string paterns in a similar way to RegExp
+ *
+ * e.g. "#{3}test[1-5]" -> "###test4"
+ *
+ * @method faker.helpers.regexpStyleStringParse
+ * @param {string} string
+ */
+ self.regexpStyleStringParse = function(string){
+ string = string || "";
+ // Deal with range repeat `{min,max}`
+ var RANGE_REP_REG = /(.)\{(\d+)\,(\d+)\}/;
+ var REP_REG = /(.)\{(\d+)\}/;
+ var RANGE_REG = /\[(\d+)\-(\d+)\]/;
+ var min, max, tmp, repetitions;
+ var token = string.match(RANGE_REP_REG);
+ while(token !== null){
+ min = parseInt(token[2]);
+ max = parseInt(token[3]);
+ // switch min and max
+ if(min>max) {
+ tmp = max;
+ max = min;
+ min = tmp;
+ }
+ repetitions = faker.random.number({min:min,max:max});
+ string = string.slice(0,token.index) + faker.helpers.repeatString(token[1], repetitions) + string.slice(token.index+token[0].length);
+ token = string.match(RANGE_REP_REG);
+ }
+ // Deal with repeat `{num}`
+ token = string.match(REP_REG);
+ while(token !== null){
+ repetitions = parseInt(token[2]);
+ string = string.slice(0,token.index)+ faker.helpers.repeatString(token[1], repetitions) + string.slice(token.index+token[0].length);
+ token = string.match(REP_REG);
+ }
+ // Deal with range `[min-max]` (only works with numbers for now)
+ //TODO: implement for letters e.g. [0-9a-zA-Z] etc.
+
+ token = string.match(RANGE_REG);
+ while(token !== null){
+ min = parseInt(token[1]); // This time we are not capturing the char befor `[]`
+ max = parseInt(token[2]);
+ // switch min and max
+ if(min>max) {
+ tmp = max;
+ max = min;
+ min = tmp;
+ }
+ string = string.slice(0,token.index) +
+ faker.random.number({min:min, max:max}).toString() +
+ string.slice(token.index+token[0].length);
+ token = string.match(RANGE_REG);
+ }
+ return string;
+ };
+
+ /**
* takes an array and returns it randomized
*
* @method faker.helpers.shuffle
diff --git a/lib/index.js b/lib/index.js
index 17f93bfc..58f0012e 100644
--- a/lib/index.js
+++ b/lib/index.js
@@ -50,12 +50,16 @@ function Faker (opts) {
var Fake = require('./fake');
self.fake = new Fake(self).fake;
+ var Unique = require('./unique');
+ self.unique = bindAll(new Unique(self).unique);
+
var Random = require('./random');
self.random = bindAll(new Random(self));
var Helpers = require('./helpers');
self.helpers = new Helpers(self);
+
var Name = require('./name');
self.name = bindAll(new Name(self));
@@ -96,13 +100,13 @@ function Faker (opts) {
self.system = bindAll(new System(self));
var _definitions = {
- "name": ["first_name", "last_name", "prefix", "suffix", "title", "male_first_name", "female_first_name", "male_middle_name", "female_middle_name", "male_last_name", "female_last_name"],
+ "name": ["first_name", "last_name", "prefix", "suffix", "gender", "title", "male_first_name", "female_first_name", "male_middle_name", "female_middle_name", "male_last_name", "female_last_name"],
"address": ["city_prefix", "city_suffix", "street_suffix", "county", "country", "country_code", "state", "state_abbr", "street_prefix", "postcode"],
"company": ["adjective", "noun", "descriptor", "bs_adjective", "bs_noun", "bs_verb", "suffix"],
"lorem": ["words"],
- "hacker": ["abbreviation", "adjective", "noun", "verb", "ingverb"],
+ "hacker": ["abbreviation", "adjective", "noun", "verb", "ingverb", "phrase"],
"phone_number": ["formats"],
- "finance": ["account_type", "transaction_type", "currency", "iban"],
+ "finance": ["account_type", "transaction_type", "currency", "iban", "credit_card"],
"internet": ["avatar_uri", "domain_suffix", "free_email", "example_email", "password"],
"commerce": ["color", "department", "product_name", "price", "categories"],
"database": ["collation", "column", "engine", "type"],
@@ -142,6 +146,10 @@ function Faker (opts) {
};
+Faker.prototype.setLocale = function (locale) {
+ this.locale = locale;
+}
+
Faker.prototype.seed = function(value) {
var Random = require('./random');
this.seedValue = value;
diff --git a/lib/locales/cz/lorem/index.js b/lib/locales/cz/lorem/index.js
index feb6eff8..a53a23d0 100644
--- a/lib/locales/cz/lorem/index.js
+++ b/lib/locales/cz/lorem/index.js
@@ -1,4 +1,3 @@
var lorem = {};
module['exports'] = lorem;
lorem.words = require("./words");
-lorem.supplemental = require("./supplemental");
diff --git a/lib/locales/cz/lorem/supplemental.js b/lib/locales/cz/lorem/supplemental.js
deleted file mode 100644
index 8fdc2c3e..00000000
--- a/lib/locales/cz/lorem/supplemental.js
+++ /dev/null
@@ -1,842 +0,0 @@
-module["exports"] = [
- "abbas",
- "abduco",
- "abeo",
- "abscido",
- "absconditus",
- "absens",
- "absorbeo",
- "absque",
- "abstergo",
- "absum",
- "abundans",
- "abutor",
- "accedo",
- "accendo",
- "acceptus",
- "accipio",
- "accommodo",
- "accusator",
- "acer",
- "acerbitas",
- "acervus",
- "acidus",
- "acies",
- "acquiro",
- "acsi",
- "adamo",
- "adaugeo",
- "addo",
- "adduco",
- "ademptio",
- "adeo",
- "adeptio",
- "adfectus",
- "adfero",
- "adficio",
- "adflicto",
- "adhaero",
- "adhuc",
- "adicio",
- "adimpleo",
- "adinventitias",
- "adipiscor",
- "adiuvo",
- "administratio",
- "admiratio",
- "admitto",
- "admoneo",
- "admoveo",
- "adnuo",
- "adopto",
- "adsidue",
- "adstringo",
- "adsuesco",
- "adsum",
- "adulatio",
- "adulescens",
- "adultus",
- "aduro",
- "advenio",
- "adversus",
- "advoco",
- "aedificium",
- "aeger",
- "aegre",
- "aegrotatio",
- "aegrus",
- "aeneus",
- "aequitas",
- "aequus",
- "aer",
- "aestas",
- "aestivus",
- "aestus",
- "aetas",
- "aeternus",
- "ager",
- "aggero",
- "aggredior",
- "agnitio",
- "agnosco",
- "ago",
- "ait",
- "aiunt",
- "alienus",
- "alii",
- "alioqui",
- "aliqua",
- "alius",
- "allatus",
- "alo",
- "alter",
- "altus",
- "alveus",
- "amaritudo",
- "ambitus",
- "ambulo",
- "amicitia",
- "amiculum",
- "amissio",
- "amita",
- "amitto",
- "amo",
- "amor",
- "amoveo",
- "amplexus",
- "amplitudo",
- "amplus",
- "ancilla",
- "angelus",
- "angulus",
- "angustus",
- "animadverto",
- "animi",
- "animus",
- "annus",
- "anser",
- "ante",
- "antea",
- "antepono",
- "antiquus",
- "aperio",
- "aperte",
- "apostolus",
- "apparatus",
- "appello",
- "appono",
- "appositus",
- "approbo",
- "apto",
- "aptus",
- "apud",
- "aqua",
- "ara",
- "aranea",
- "arbitro",
- "arbor",
- "arbustum",
- "arca",
- "arceo",
- "arcesso",
- "arcus",
- "argentum",
- "argumentum",
- "arguo",
- "arma",
- "armarium",
- "armo",
- "aro",
- "ars",
- "articulus",
- "artificiose",
- "arto",
- "arx",
- "ascisco",
- "ascit",
- "asper",
- "aspicio",
- "asporto",
- "assentator",
- "astrum",
- "atavus",
- "ater",
- "atqui",
- "atrocitas",
- "atrox",
- "attero",
- "attollo",
- "attonbitus",
- "auctor",
- "auctus",
- "audacia",
- "audax",
- "audentia",
- "audeo",
- "audio",
- "auditor",
- "aufero",
- "aureus",
- "auris",
- "aurum",
- "aut",
- "autem",
- "autus",
- "auxilium",
- "avaritia",
- "avarus",
- "aveho",
- "averto",
- "avoco",
- "baiulus",
- "balbus",
- "barba",
- "bardus",
- "basium",
- "beatus",
- "bellicus",
- "bellum",
- "bene",
- "beneficium",
- "benevolentia",
- "benigne",
- "bestia",
- "bibo",
- "bis",
- "blandior",
- "bonus",
- "bos",
- "brevis",
- "cado",
- "caecus",
- "caelestis",
- "caelum",
- "calamitas",
- "calcar",
- "calco",
- "calculus",
- "callide",
- "campana",
- "candidus",
- "canis",
- "canonicus",
- "canto",
- "capillus",
- "capio",
- "capitulus",
- "capto",
- "caput",
- "carbo",
- "carcer",
- "careo",
- "caries",
- "cariosus",
- "caritas",
- "carmen",
- "carpo",
- "carus",
- "casso",
- "caste",
- "casus",
- "catena",
- "caterva",
- "cattus",
- "cauda",
- "causa",
- "caute",
- "caveo",
- "cavus",
- "cedo",
- "celebrer",
- "celer",
- "celo",
- "cena",
- "cenaculum",
- "ceno",
- "censura",
- "centum",
- "cerno",
- "cernuus",
- "certe",
- "certo",
- "certus",
- "cervus",
- "cetera",
- "charisma",
- "chirographum",
- "cibo",
- "cibus",
- "cicuta",
- "cilicium",
- "cimentarius",
- "ciminatio",
- "cinis",
- "circumvenio",
- "cito",
- "civis",
- "civitas",
- "clam",
- "clamo",
- "claro",
- "clarus",
- "claudeo",
- "claustrum",
- "clementia",
- "clibanus",
- "coadunatio",
- "coaegresco",
- "coepi",
- "coerceo",
- "cogito",
- "cognatus",
- "cognomen",
- "cogo",
- "cohaero",
- "cohibeo",
- "cohors",
- "colligo",
- "colloco",
- "collum",
- "colo",
- "color",
- "coma",
- "combibo",
- "comburo",
- "comedo",
- "comes",
- "cometes",
- "comis",
- "comitatus",
- "commemoro",
- "comminor",
- "commodo",
- "communis",
- "comparo",
- "compello",
- "complectus",
- "compono",
- "comprehendo",
- "comptus",
- "conatus",
- "concedo",
- "concido",
- "conculco",
- "condico",
- "conduco",
- "confero",
- "confido",
- "conforto",
- "confugo",
- "congregatio",
- "conicio",
- "coniecto",
- "conitor",
- "coniuratio",
- "conor",
- "conqueror",
- "conscendo",
- "conservo",
- "considero",
- "conspergo",
- "constans",
- "consuasor",
- "contabesco",
- "contego",
- "contigo",
- "contra",
- "conturbo",
- "conventus",
- "convoco",
- "copia",
- "copiose",
- "cornu",
- "corona",
- "corpus",
- "correptius",
- "corrigo",
- "corroboro",
- "corrumpo",
- "coruscus",
- "cotidie",
- "crapula",
- "cras",
- "crastinus",
- "creator",
- "creber",
- "crebro",
- "credo",
- "creo",
- "creptio",
- "crepusculum",
- "cresco",
- "creta",
- "cribro",
- "crinis",
- "cruciamentum",
- "crudelis",
- "cruentus",
- "crur",
- "crustulum",
- "crux",
- "cubicularis",
- "cubitum",
- "cubo",
- "cui",
- "cuius",
- "culpa",
- "culpo",
- "cultellus",
- "cultura",
- "cum",
- "cunabula",
- "cunae",
- "cunctatio",
- "cupiditas",
- "cupio",
- "cuppedia",
- "cupressus",
- "cur",
- "cura",
- "curatio",
- "curia",
- "curiositas",
- "curis",
- "curo",
- "curriculum",
- "currus",
- "cursim",
- "curso",
- "cursus",
- "curto",
- "curtus",
- "curvo",
- "curvus",
- "custodia",
- "damnatio",
- "damno",
- "dapifer",
- "debeo",
- "debilito",
- "decens",
- "decerno",
- "decet",
- "decimus",
- "decipio",
- "decor",
- "decretum",
- "decumbo",
- "dedecor",
- "dedico",
- "deduco",
- "defaeco",
- "defendo",
- "defero",
- "defessus",
- "defetiscor",
- "deficio",
- "defigo",
- "defleo",
- "defluo",
- "defungo",
- "degenero",
- "degero",
- "degusto",
- "deinde",
- "delectatio",
- "delego",
- "deleo",
- "delibero",
- "delicate",
- "delinquo",
- "deludo",
- "demens",
- "demergo",
- "demitto",
- "demo",
- "demonstro",
- "demoror",
- "demulceo",
- "demum",
- "denego",
- "denique",
- "dens",
- "denuncio",
- "denuo",
- "deorsum",
- "depereo",
- "depono",
- "depopulo",
- "deporto",
- "depraedor",
- "deprecator",
- "deprimo",
- "depromo",
- "depulso",
- "deputo",
- "derelinquo",
- "derideo",
- "deripio",
- "desidero",
- "desino",
- "desipio",
- "desolo",
- "desparatus",
- "despecto",
- "despirmatio",
- "infit",
- "inflammatio",
- "paens",
- "patior",
- "patria",
- "patrocinor",
- "patruus",
- "pauci",
- "paulatim",
- "pauper",
- "pax",
- "peccatus",
- "pecco",
- "pecto",
- "pectus",
- "pecunia",
- "pecus",
- "peior",
- "pel",
- "ocer",
- "socius",
- "sodalitas",
- "sol",
- "soleo",
- "solio",
- "solitudo",
- "solium",
- "sollers",
- "sollicito",
- "solum",
- "solus",
- "solutio",
- "solvo",
- "somniculosus",
- "somnus",
- "sonitus",
- "sono",
- "sophismata",
- "sopor",
- "sordeo",
- "sortitus",
- "spargo",
- "speciosus",
- "spectaculum",
- "speculum",
- "sperno",
- "spero",
- "spes",
- "spiculum",
- "spiritus",
- "spoliatio",
- "sponte",
- "stabilis",
- "statim",
- "statua",
- "stella",
- "stillicidium",
- "stipes",
- "stips",
- "sto",
- "strenuus",
- "strues",
- "studio",
- "stultus",
- "suadeo",
- "suasoria",
- "sub",
- "subito",
- "subiungo",
- "sublime",
- "subnecto",
- "subseco",
- "substantia",
- "subvenio",
- "succedo",
- "succurro",
- "sufficio",
- "suffoco",
- "suffragium",
- "suggero",
- "sui",
- "sulum",
- "sum",
- "summa",
- "summisse",
- "summopere",
- "sumo",
- "sumptus",
- "supellex",
- "super",
- "suppellex",
- "supplanto",
- "suppono",
- "supra",
- "surculus",
- "surgo",
- "sursum",
- "suscipio",
- "suspendo",
- "sustineo",
- "suus",
- "synagoga",
- "tabella",
- "tabernus",
- "tabesco",
- "tabgo",
- "tabula",
- "taceo",
- "tactus",
- "taedium",
- "talio",
- "talis",
- "talus",
- "tam",
- "tamdiu",
- "tamen",
- "tametsi",
- "tamisium",
- "tamquam",
- "tandem",
- "tantillus",
- "tantum",
- "tardus",
- "tego",
- "temeritas",
- "temperantia",
- "templum",
- "temptatio",
- "tempus",
- "tenax",
- "tendo",
- "teneo",
- "tener",
- "tenuis",
- "tenus",
- "tepesco",
- "tepidus",
- "ter",
- "terebro",
- "teres",
- "terga",
- "tergeo",
- "tergiversatio",
- "tergo",
- "tergum",
- "termes",
- "terminatio",
- "tero",
- "terra",
- "terreo",
- "territo",
- "terror",
- "tersus",
- "tertius",
- "testimonium",
- "texo",
- "textilis",
- "textor",
- "textus",
- "thalassinus",
- "theatrum",
- "theca",
- "thema",
- "theologus",
- "thermae",
- "thesaurus",
- "thesis",
- "thorax",
- "thymbra",
- "thymum",
- "tibi",
- "timidus",
- "timor",
- "titulus",
- "tolero",
- "tollo",
- "tondeo",
- "tonsor",
- "torqueo",
- "torrens",
- "tot",
- "totidem",
- "toties",
- "totus",
- "tracto",
- "trado",
- "traho",
- "trans",
- "tredecim",
- "tremo",
- "trepide",
- "tres",
- "tribuo",
- "tricesimus",
- "triduana",
- "triginta",
- "tripudio",
- "tristis",
- "triumphus",
- "trucido",
- "truculenter",
- "tubineus",
- "tui",
- "tum",
- "tumultus",
- "tunc",
- "turba",
- "turbo",
- "turpe",
- "turpis",
- "tutamen",
- "tutis",
- "tyrannus",
- "uberrime",
- "ubi",
- "ulciscor",
- "ullus",
- "ulterius",
- "ultio",
- "ultra",
- "umbra",
- "umerus",
- "umquam",
- "una",
- "unde",
- "undique",
- "universe",
- "unus",
- "urbanus",
- "urbs",
- "uredo",
- "usitas",
- "usque",
- "ustilo",
- "ustulo",
- "usus",
- "uter",
- "uterque",
- "utilis",
- "utique",
- "utor",
- "utpote",
- "utrimque",
- "utroque",
- "utrum",
- "uxor",
- "vaco",
- "vacuus",
- "vado",
- "vae",
- "valde",
- "valens",
- "valeo",
- "valetudo",
- "validus",
- "vallum",
- "vapulus",
- "varietas",
- "varius",
- "vehemens",
- "vel",
- "velociter",
- "velum",
- "velut",
- "venia",
- "venio",
- "ventito",
- "ventosus",
- "ventus",
- "venustas",
- "ver",
- "verbera",
- "verbum",
- "vere",
- "verecundia",
- "vereor",
- "vergo",
- "veritas",
- "vero",
- "versus",
- "verto",
- "verumtamen",
- "verus",
- "vesco",
- "vesica",
- "vesper",
- "vespillo",
- "vester",
- "vestigium",
- "vestrum",
- "vetus",
- "via",
- "vicinus",
- "vicissitudo",
- "victoria",
- "victus",
- "videlicet",
- "video",
- "viduata",
- "viduo",
- "vigilo",
- "vigor",
- "vilicus",
- "vilis",
- "vilitas",
- "villa",
- "vinco",
- "vinculum",
- "vindico",
- "vinitor",
- "vinum",
- "vir",
- "virga",
- "virgo",
- "viridis",
- "viriliter",
- "virtus",
- "vis",
- "viscus",
- "vita",
- "vitiosus",
- "vitium",
- "vito",
- "vivo",
- "vix",
- "vobis",
- "vociferor",
- "voco",
- "volaticus",
- "volo",
- "volubilis",
- "voluntarius",
- "volup",
- "volutabrum",
- "volva",
- "vomer",
- "vomica",
- "vomito",
- "vorago",
- "vorax",
- "voro",
- "vos",
- "votum",
- "voveo",
- "vox",
- "vulariter",
- "vulgaris",
- "vulgivagus",
- "vulgo",
- "vulgus",
- "vulnero",
- "vulnus",
- "vulpes",
- "vulticulus",
- "vultuosus",
- "xiphias"
-];
diff --git a/lib/locales/de_AT/address/city_name.js b/lib/locales/de_AT/address/city_name.js
index 771f9b42..e69b1e4b 100644
--- a/lib/locales/de_AT/address/city_name.js
+++ b/lib/locales/de_AT/address/city_name.js
@@ -44,6 +44,7 @@ module["exports"] = [
"Johnsbach",
"Johnsdorf-Brunn",
"Jungholz",
+ "Kindberg",
"Kirchdorf am Inn",
"Klagenfurt",
"Kottes-Purk",
diff --git a/lib/locales/el/lorem/index.js b/lib/locales/el/lorem/index.js
index feb6eff8..a53a23d0 100644
--- a/lib/locales/el/lorem/index.js
+++ b/lib/locales/el/lorem/index.js
@@ -1,4 +1,3 @@
var lorem = {};
module['exports'] = lorem;
lorem.words = require("./words");
-lorem.supplemental = require("./supplemental");
diff --git a/lib/locales/el/lorem/supplemental.js b/lib/locales/el/lorem/supplemental.js
deleted file mode 100644
index 8fdc2c3e..00000000
--- a/lib/locales/el/lorem/supplemental.js
+++ /dev/null
@@ -1,842 +0,0 @@
-module["exports"] = [
- "abbas",
- "abduco",
- "abeo",
- "abscido",
- "absconditus",
- "absens",
- "absorbeo",
- "absque",
- "abstergo",
- "absum",
- "abundans",
- "abutor",
- "accedo",
- "accendo",
- "acceptus",
- "accipio",
- "accommodo",
- "accusator",
- "acer",
- "acerbitas",
- "acervus",
- "acidus",
- "acies",
- "acquiro",
- "acsi",
- "adamo",
- "adaugeo",
- "addo",
- "adduco",
- "ademptio",
- "adeo",
- "adeptio",
- "adfectus",
- "adfero",
- "adficio",
- "adflicto",
- "adhaero",
- "adhuc",
- "adicio",
- "adimpleo",
- "adinventitias",
- "adipiscor",
- "adiuvo",
- "administratio",
- "admiratio",
- "admitto",
- "admoneo",
- "admoveo",
- "adnuo",
- "adopto",
- "adsidue",
- "adstringo",
- "adsuesco",
- "adsum",
- "adulatio",
- "adulescens",
- "adultus",
- "aduro",
- "advenio",
- "adversus",
- "advoco",
- "aedificium",
- "aeger",
- "aegre",
- "aegrotatio",
- "aegrus",
- "aeneus",
- "aequitas",
- "aequus",
- "aer",
- "aestas",
- "aestivus",
- "aestus",
- "aetas",
- "aeternus",
- "ager",
- "aggero",
- "aggredior",
- "agnitio",
- "agnosco",
- "ago",
- "ait",
- "aiunt",
- "alienus",
- "alii",
- "alioqui",
- "aliqua",
- "alius",
- "allatus",
- "alo",
- "alter",
- "altus",
- "alveus",
- "amaritudo",
- "ambitus",
- "ambulo",
- "amicitia",
- "amiculum",
- "amissio",
- "amita",
- "amitto",
- "amo",
- "amor",
- "amoveo",
- "amplexus",
- "amplitudo",
- "amplus",
- "ancilla",
- "angelus",
- "angulus",
- "angustus",
- "animadverto",
- "animi",
- "animus",
- "annus",
- "anser",
- "ante",
- "antea",
- "antepono",
- "antiquus",
- "aperio",
- "aperte",
- "apostolus",
- "apparatus",
- "appello",
- "appono",
- "appositus",
- "approbo",
- "apto",
- "aptus",
- "apud",
- "aqua",
- "ara",
- "aranea",
- "arbitro",
- "arbor",
- "arbustum",
- "arca",
- "arceo",
- "arcesso",
- "arcus",
- "argentum",
- "argumentum",
- "arguo",
- "arma",
- "armarium",
- "armo",
- "aro",
- "ars",
- "articulus",
- "artificiose",
- "arto",
- "arx",
- "ascisco",
- "ascit",
- "asper",
- "aspicio",
- "asporto",
- "assentator",
- "astrum",
- "atavus",
- "ater",
- "atqui",
- "atrocitas",
- "atrox",
- "attero",
- "attollo",
- "attonbitus",
- "auctor",
- "auctus",
- "audacia",
- "audax",
- "audentia",
- "audeo",
- "audio",
- "auditor",
- "aufero",
- "aureus",
- "auris",
- "aurum",
- "aut",
- "autem",
- "autus",
- "auxilium",
- "avaritia",
- "avarus",
- "aveho",
- "averto",
- "avoco",
- "baiulus",
- "balbus",
- "barba",
- "bardus",
- "basium",
- "beatus",
- "bellicus",
- "bellum",
- "bene",
- "beneficium",
- "benevolentia",
- "benigne",
- "bestia",
- "bibo",
- "bis",
- "blandior",
- "bonus",
- "bos",
- "brevis",
- "cado",
- "caecus",
- "caelestis",
- "caelum",
- "calamitas",
- "calcar",
- "calco",
- "calculus",
- "callide",
- "campana",
- "candidus",
- "canis",
- "canonicus",
- "canto",
- "capillus",
- "capio",
- "capitulus",
- "capto",
- "caput",
- "carbo",
- "carcer",
- "careo",
- "caries",
- "cariosus",
- "caritas",
- "carmen",
- "carpo",
- "carus",
- "casso",
- "caste",
- "casus",
- "catena",
- "caterva",
- "cattus",
- "cauda",
- "causa",
- "caute",
- "caveo",
- "cavus",
- "cedo",
- "celebrer",
- "celer",
- "celo",
- "cena",
- "cenaculum",
- "ceno",
- "censura",
- "centum",
- "cerno",
- "cernuus",
- "certe",
- "certo",
- "certus",
- "cervus",
- "cetera",
- "charisma",
- "chirographum",
- "cibo",
- "cibus",
- "cicuta",
- "cilicium",
- "cimentarius",
- "ciminatio",
- "cinis",
- "circumvenio",
- "cito",
- "civis",
- "civitas",
- "clam",
- "clamo",
- "claro",
- "clarus",
- "claudeo",
- "claustrum",
- "clementia",
- "clibanus",
- "coadunatio",
- "coaegresco",
- "coepi",
- "coerceo",
- "cogito",
- "cognatus",
- "cognomen",
- "cogo",
- "cohaero",
- "cohibeo",
- "cohors",
- "colligo",
- "colloco",
- "collum",
- "colo",
- "color",
- "coma",
- "combibo",
- "comburo",
- "comedo",
- "comes",
- "cometes",
- "comis",
- "comitatus",
- "commemoro",
- "comminor",
- "commodo",
- "communis",
- "comparo",
- "compello",
- "complectus",
- "compono",
- "comprehendo",
- "comptus",
- "conatus",
- "concedo",
- "concido",
- "conculco",
- "condico",
- "conduco",
- "confero",
- "confido",
- "conforto",
- "confugo",
- "congregatio",
- "conicio",
- "coniecto",
- "conitor",
- "coniuratio",
- "conor",
- "conqueror",
- "conscendo",
- "conservo",
- "considero",
- "conspergo",
- "constans",
- "consuasor",
- "contabesco",
- "contego",
- "contigo",
- "contra",
- "conturbo",
- "conventus",
- "convoco",
- "copia",
- "copiose",
- "cornu",
- "corona",
- "corpus",
- "correptius",
- "corrigo",
- "corroboro",
- "corrumpo",
- "coruscus",
- "cotidie",
- "crapula",
- "cras",
- "crastinus",
- "creator",
- "creber",
- "crebro",
- "credo",
- "creo",
- "creptio",
- "crepusculum",
- "cresco",
- "creta",
- "cribro",
- "crinis",
- "cruciamentum",
- "crudelis",
- "cruentus",
- "crur",
- "crustulum",
- "crux",
- "cubicularis",
- "cubitum",
- "cubo",
- "cui",
- "cuius",
- "culpa",
- "culpo",
- "cultellus",
- "cultura",
- "cum",
- "cunabula",
- "cunae",
- "cunctatio",
- "cupiditas",
- "cupio",
- "cuppedia",
- "cupressus",
- "cur",
- "cura",
- "curatio",
- "curia",
- "curiositas",
- "curis",
- "curo",
- "curriculum",
- "currus",
- "cursim",
- "curso",
- "cursus",
- "curto",
- "curtus",
- "curvo",
- "curvus",
- "custodia",
- "damnatio",
- "damno",
- "dapifer",
- "debeo",
- "debilito",
- "decens",
- "decerno",
- "decet",
- "decimus",
- "decipio",
- "decor",
- "decretum",
- "decumbo",
- "dedecor",
- "dedico",
- "deduco",
- "defaeco",
- "defendo",
- "defero",
- "defessus",
- "defetiscor",
- "deficio",
- "defigo",
- "defleo",
- "defluo",
- "defungo",
- "degenero",
- "degero",
- "degusto",
- "deinde",
- "delectatio",
- "delego",
- "deleo",
- "delibero",
- "delicate",
- "delinquo",
- "deludo",
- "demens",
- "demergo",
- "demitto",
- "demo",
- "demonstro",
- "demoror",
- "demulceo",
- "demum",
- "denego",
- "denique",
- "dens",
- "denuncio",
- "denuo",
- "deorsum",
- "depereo",
- "depono",
- "depopulo",
- "deporto",
- "depraedor",
- "deprecator",
- "deprimo",
- "depromo",
- "depulso",
- "deputo",
- "derelinquo",
- "derideo",
- "deripio",
- "desidero",
- "desino",
- "desipio",
- "desolo",
- "desparatus",
- "despecto",
- "despirmatio",
- "infit",
- "inflammatio",
- "paens",
- "patior",
- "patria",
- "patrocinor",
- "patruus",
- "pauci",
- "paulatim",
- "pauper",
- "pax",
- "peccatus",
- "pecco",
- "pecto",
- "pectus",
- "pecunia",
- "pecus",
- "peior",
- "pel",
- "ocer",
- "socius",
- "sodalitas",
- "sol",
- "soleo",
- "solio",
- "solitudo",
- "solium",
- "sollers",
- "sollicito",
- "solum",
- "solus",
- "solutio",
- "solvo",
- "somniculosus",
- "somnus",
- "sonitus",
- "sono",
- "sophismata",
- "sopor",
- "sordeo",
- "sortitus",
- "spargo",
- "speciosus",
- "spectaculum",
- "speculum",
- "sperno",
- "spero",
- "spes",
- "spiculum",
- "spiritus",
- "spoliatio",
- "sponte",
- "stabilis",
- "statim",
- "statua",
- "stella",
- "stillicidium",
- "stipes",
- "stips",
- "sto",
- "strenuus",
- "strues",
- "studio",
- "stultus",
- "suadeo",
- "suasoria",
- "sub",
- "subito",
- "subiungo",
- "sublime",
- "subnecto",
- "subseco",
- "substantia",
- "subvenio",
- "succedo",
- "succurro",
- "sufficio",
- "suffoco",
- "suffragium",
- "suggero",
- "sui",
- "sulum",
- "sum",
- "summa",
- "summisse",
- "summopere",
- "sumo",
- "sumptus",
- "supellex",
- "super",
- "suppellex",
- "supplanto",
- "suppono",
- "supra",
- "surculus",
- "surgo",
- "sursum",
- "suscipio",
- "suspendo",
- "sustineo",
- "suus",
- "synagoga",
- "tabella",
- "tabernus",
- "tabesco",
- "tabgo",
- "tabula",
- "taceo",
- "tactus",
- "taedium",
- "talio",
- "talis",
- "talus",
- "tam",
- "tamdiu",
- "tamen",
- "tametsi",
- "tamisium",
- "tamquam",
- "tandem",
- "tantillus",
- "tantum",
- "tardus",
- "tego",
- "temeritas",
- "temperantia",
- "templum",
- "temptatio",
- "tempus",
- "tenax",
- "tendo",
- "teneo",
- "tener",
- "tenuis",
- "tenus",
- "tepesco",
- "tepidus",
- "ter",
- "terebro",
- "teres",
- "terga",
- "tergeo",
- "tergiversatio",
- "tergo",
- "tergum",
- "termes",
- "terminatio",
- "tero",
- "terra",
- "terreo",
- "territo",
- "terror",
- "tersus",
- "tertius",
- "testimonium",
- "texo",
- "textilis",
- "textor",
- "textus",
- "thalassinus",
- "theatrum",
- "theca",
- "thema",
- "theologus",
- "thermae",
- "thesaurus",
- "thesis",
- "thorax",
- "thymbra",
- "thymum",
- "tibi",
- "timidus",
- "timor",
- "titulus",
- "tolero",
- "tollo",
- "tondeo",
- "tonsor",
- "torqueo",
- "torrens",
- "tot",
- "totidem",
- "toties",
- "totus",
- "tracto",
- "trado",
- "traho",
- "trans",
- "tredecim",
- "tremo",
- "trepide",
- "tres",
- "tribuo",
- "tricesimus",
- "triduana",
- "triginta",
- "tripudio",
- "tristis",
- "triumphus",
- "trucido",
- "truculenter",
- "tubineus",
- "tui",
- "tum",
- "tumultus",
- "tunc",
- "turba",
- "turbo",
- "turpe",
- "turpis",
- "tutamen",
- "tutis",
- "tyrannus",
- "uberrime",
- "ubi",
- "ulciscor",
- "ullus",
- "ulterius",
- "ultio",
- "ultra",
- "umbra",
- "umerus",
- "umquam",
- "una",
- "unde",
- "undique",
- "universe",
- "unus",
- "urbanus",
- "urbs",
- "uredo",
- "usitas",
- "usque",
- "ustilo",
- "ustulo",
- "usus",
- "uter",
- "uterque",
- "utilis",
- "utique",
- "utor",
- "utpote",
- "utrimque",
- "utroque",
- "utrum",
- "uxor",
- "vaco",
- "vacuus",
- "vado",
- "vae",
- "valde",
- "valens",
- "valeo",
- "valetudo",
- "validus",
- "vallum",
- "vapulus",
- "varietas",
- "varius",
- "vehemens",
- "vel",
- "velociter",
- "velum",
- "velut",
- "venia",
- "venio",
- "ventito",
- "ventosus",
- "ventus",
- "venustas",
- "ver",
- "verbera",
- "verbum",
- "vere",
- "verecundia",
- "vereor",
- "vergo",
- "veritas",
- "vero",
- "versus",
- "verto",
- "verumtamen",
- "verus",
- "vesco",
- "vesica",
- "vesper",
- "vespillo",
- "vester",
- "vestigium",
- "vestrum",
- "vetus",
- "via",
- "vicinus",
- "vicissitudo",
- "victoria",
- "victus",
- "videlicet",
- "video",
- "viduata",
- "viduo",
- "vigilo",
- "vigor",
- "vilicus",
- "vilis",
- "vilitas",
- "villa",
- "vinco",
- "vinculum",
- "vindico",
- "vinitor",
- "vinum",
- "vir",
- "virga",
- "virgo",
- "viridis",
- "viriliter",
- "virtus",
- "vis",
- "viscus",
- "vita",
- "vitiosus",
- "vitium",
- "vito",
- "vivo",
- "vix",
- "vobis",
- "vociferor",
- "voco",
- "volaticus",
- "volo",
- "volubilis",
- "voluntarius",
- "volup",
- "volutabrum",
- "volva",
- "vomer",
- "vomica",
- "vomito",
- "vorago",
- "vorax",
- "voro",
- "vos",
- "votum",
- "voveo",
- "vox",
- "vulariter",
- "vulgaris",
- "vulgivagus",
- "vulgo",
- "vulgus",
- "vulnero",
- "vulnus",
- "vulpes",
- "vulticulus",
- "vultuosus",
- "xiphias"
-];
diff --git a/lib/locales/en/credit_card/american_express.js b/lib/locales/en/credit_card/american_express.js
deleted file mode 100644
index 2a3d782b..00000000
--- a/lib/locales/en/credit_card/american_express.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module["exports"] = [
- "/34##-######-####L/",
- "/37##-######-####L/"
-];
diff --git a/lib/locales/en/credit_card/diners_club.js b/lib/locales/en/credit_card/diners_club.js
deleted file mode 100644
index ddc7eb35..00000000
--- a/lib/locales/en/credit_card/diners_club.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module["exports"] = [
- "/30[0-5]#-######-###L/",
- "/368#-######-###L/"
-];
diff --git a/lib/locales/en/credit_card/discover.js b/lib/locales/en/credit_card/discover.js
deleted file mode 100644
index d51aa159..00000000
--- a/lib/locales/en/credit_card/discover.js
+++ /dev/null
@@ -1,8 +0,0 @@
-module["exports"] = [
- "/6011-####-####-###L/",
- "/65##-####-####-###L/",
- "/64[4-9]#-####-####-###L/",
- "/6011-62##-####-####-###L/",
- "/65##-62##-####-####-###L/",
- "/64[4-9]#-62##-####-####-###L/"
-];
diff --git a/lib/locales/en/credit_card/jcb.js b/lib/locales/en/credit_card/jcb.js
deleted file mode 100644
index 03d83398..00000000
--- a/lib/locales/en/credit_card/jcb.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module["exports"] = [
- "/3528-####-####-###L/",
- "/3529-####-####-###L/",
- "/35[3-8]#-####-####-###L/"
-];
diff --git a/lib/locales/en/credit_card/laser.js b/lib/locales/en/credit_card/laser.js
deleted file mode 100644
index 922da719..00000000
--- a/lib/locales/en/credit_card/laser.js
+++ /dev/null
@@ -1,10 +0,0 @@
-module["exports"] = [
- "/6304###########L/",
- "/6706###########L/",
- "/6771###########L/",
- "/6709###########L/",
- "/6304#########{5,6}L/",
- "/6706#########{5,6}L/",
- "/6771#########{5,6}L/",
- "/6709#########{5,6}L/"
-];
diff --git a/lib/locales/en/credit_card/maestro.js b/lib/locales/en/credit_card/maestro.js
deleted file mode 100644
index da575f88..00000000
--- a/lib/locales/en/credit_card/maestro.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module["exports"] = [
- "/50#{9,16}L/",
- "/5[6-8]#{9,16}L/",
- "/56##{9,16}L/"
-];
diff --git a/lib/locales/en/credit_card/mastercard.js b/lib/locales/en/credit_card/mastercard.js
deleted file mode 100644
index f6525eb8..00000000
--- a/lib/locales/en/credit_card/mastercard.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module["exports"] = [
- "/5[1-5]##-####-####-###L/",
- "/6771-89##-####-###L/"
-];
diff --git a/lib/locales/en/credit_card/solo.js b/lib/locales/en/credit_card/solo.js
deleted file mode 100644
index a577fb43..00000000
--- a/lib/locales/en/credit_card/solo.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module["exports"] = [
- "/6767-####-####-###L/",
- "/6767-####-####-####-#L/",
- "/6767-####-####-####-##L/"
-];
diff --git a/lib/locales/en/credit_card/switch.js b/lib/locales/en/credit_card/switch.js
deleted file mode 100644
index b12a4d07..00000000
--- a/lib/locales/en/credit_card/switch.js
+++ /dev/null
@@ -1,5 +0,0 @@
-module["exports"] = [
- "/6759-####-####-###L/",
- "/6759-####-####-####-#L/",
- "/6759-####-####-####-##L/"
-];
diff --git a/lib/locales/en/credit_card/visa.js b/lib/locales/en/credit_card/visa.js
deleted file mode 100644
index 972eba8f..00000000
--- a/lib/locales/en/credit_card/visa.js
+++ /dev/null
@@ -1,4 +0,0 @@
-module["exports"] = [
- "/4###########L/",
- "/4###-####-####-###L/"
-];
diff --git a/lib/locales/en/finance/credit_card/american_express.js b/lib/locales/en/finance/credit_card/american_express.js
new file mode 100644
index 00000000..c63363ab
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/american_express.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "34##-######-####L",
+ "37##-######-####L"
+];
diff --git a/lib/locales/en/finance/credit_card/diners_club.js b/lib/locales/en/finance/credit_card/diners_club.js
new file mode 100644
index 00000000..4fb5d7ca
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/diners_club.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "30[0-5]#-######-###L",
+ "36##-######-###L",
+ "54##-####-####-###L"
+];
diff --git a/lib/locales/en/finance/credit_card/discover.js b/lib/locales/en/finance/credit_card/discover.js
new file mode 100644
index 00000000..cd84e840
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/discover.js
@@ -0,0 +1,8 @@
+module["exports"] = [
+ "6011-####-####-###L",
+ "65##-####-####-###L",
+ "64[4-9]#-####-####-###L",
+ "6011-62##-####-####-###L",
+ "65##-62##-####-####-###L",
+ "64[4-9]#-62##-####-####-###L"
+];
diff --git a/lib/locales/en/credit_card/index.js b/lib/locales/en/finance/credit_card/index.js
index b083e967..3afd843e 100644
--- a/lib/locales/en/credit_card/index.js
+++ b/lib/locales/en/finance/credit_card/index.js
@@ -10,3 +10,4 @@ credit_card.switch = require("./switch");
credit_card.solo = require("./solo");
credit_card.maestro = require("./maestro");
credit_card.laser = require("./laser");
+credit_card.instapayment = require("./instapayment.js")
diff --git a/lib/locales/en/finance/credit_card/instapayment.js b/lib/locales/en/finance/credit_card/instapayment.js
new file mode 100644
index 00000000..545c5380
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/instapayment.js
@@ -0,0 +1,3 @@
+module["exports"] = [
+ "63[7-9]#-####-####-###L"
+];
diff --git a/lib/locales/en/finance/credit_card/jcb.js b/lib/locales/en/finance/credit_card/jcb.js
new file mode 100644
index 00000000..da396ebd
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/jcb.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "3528-####-####-###L",
+ "3529-####-####-###L",
+ "35[3-8]#-####-####-###L"
+];
diff --git a/lib/locales/en/finance/credit_card/laser.js b/lib/locales/en/finance/credit_card/laser.js
new file mode 100644
index 00000000..822c7b35
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/laser.js
@@ -0,0 +1,10 @@
+module["exports"] = [
+ "6304###########L",
+ "6706###########L",
+ "6771###########L",
+ "6709###########L",
+ "6304#########{5,6}L",
+ "6706#########{5,6}L",
+ "6771#########{5,6}L",
+ "6709#########{5,6}L"
+];
diff --git a/lib/locales/en/finance/credit_card/maestro.js b/lib/locales/en/finance/credit_card/maestro.js
new file mode 100644
index 00000000..f652dd76
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/maestro.js
@@ -0,0 +1,18 @@
+module["exports"] = [
+ "5018-#{4}-#{4}-#{3}L",
+ "5020-#{4}-#{4}-#{3}L",
+ "5038-#{4}-#{4}-#{3}L",
+ "5893-#{4}-#{4}-#{3}L",
+ "6304-#{4}-#{4}-#{3}L",
+ "6759-#{4}-#{4}-#{3}L",
+ "676[1-3]-####-####-###L",
+ "5018#{11,15}L",
+ "5020#{11,15}L",
+ "5038#{11,15}L",
+ "5893#{11,15}L",
+ "6304#{11,15}L",
+ "6759#{11,15}L",
+ "676[1-3]#{11,15}L",
+];
+
+// 5018 xxxx xxxx xxxx xxL
diff --git a/lib/locales/en/finance/credit_card/mastercard.js b/lib/locales/en/finance/credit_card/mastercard.js
new file mode 100644
index 00000000..81502c01
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/mastercard.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "5[1-5]##-####-####-###L",
+ "6771-89##-####-###L"
+];
diff --git a/lib/locales/en/finance/credit_card/solo.js b/lib/locales/en/finance/credit_card/solo.js
new file mode 100644
index 00000000..47d0d119
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/solo.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "6767-####-####-###L",
+ "6767-####-####-####-#L",
+ "6767-####-####-####-##L"
+];
diff --git a/lib/locales/en/finance/credit_card/switch.js b/lib/locales/en/finance/credit_card/switch.js
new file mode 100644
index 00000000..1bae8278
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/switch.js
@@ -0,0 +1,5 @@
+module["exports"] = [
+ "6759-####-####-###L",
+ "6759-####-####-####-#L",
+ "6759-####-####-####-##L"
+];
diff --git a/lib/locales/en/finance/credit_card/visa.js b/lib/locales/en/finance/credit_card/visa.js
new file mode 100644
index 00000000..760f921d
--- /dev/null
+++ b/lib/locales/en/finance/credit_card/visa.js
@@ -0,0 +1,4 @@
+module["exports"] = [
+ "4###########L",
+ "4###-####-####-###L"
+];
diff --git a/lib/locales/en/finance/index.js b/lib/locales/en/finance/index.js
index 4020b1d0..9a5b00d9 100644
--- a/lib/locales/en/finance/index.js
+++ b/lib/locales/en/finance/index.js
@@ -3,3 +3,4 @@ module['exports'] = finance;
finance.account_type = require("./account_type");
finance.transaction_type = require("./transaction_type");
finance.currency = require("./currency");
+finance.credit_card = require("./credit_card");
diff --git a/lib/locales/en/hacker/index.js b/lib/locales/en/hacker/index.js
index 4b7087c6..91673a19 100644
--- a/lib/locales/en/hacker/index.js
+++ b/lib/locales/en/hacker/index.js
@@ -5,3 +5,4 @@ hacker.adjective = require("./adjective");
hacker.noun = require("./noun");
hacker.verb = require("./verb");
hacker.ingverb = require("./ingverb");
+hacker.phrase = require("./phrase");
diff --git a/lib/locales/en/hacker/phrase.js b/lib/locales/en/hacker/phrase.js
new file mode 100644
index 00000000..60599f4e
--- /dev/null
+++ b/lib/locales/en/hacker/phrase.js
@@ -0,0 +1,10 @@
+module["exports"] = [
+ "If we {{verb}} the {{noun}}, we can get to the {{abbreviation}} {{noun}} through the {{adjective}} {{abbreviation}} {{noun}}!",
+ "We need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!",
+ "Try to {{verb}} the {{abbreviation}} {{noun}}, maybe it will {{verb}} the {{adjective}} {{noun}}!",
+ "You can't {{verb}} the {{noun}} without {{ingverb}} the {{adjective}} {{abbreviation}} {{noun}}!",
+ "Use the {{adjective}} {{abbreviation}} {{noun}}, then you can {{verb}} the {{adjective}} {{noun}}!",
+ "The {{abbreviation}} {{noun}} is down, {{verb}} the {{adjective}} {{noun}} so we can {{verb}} the {{abbreviation}} {{noun}}!",
+ "{{ingverb}} the {{noun}} won't do anything, we need to {{verb}} the {{adjective}} {{abbreviation}} {{noun}}!",
+ "I'll {{verb}} the {{adjective}} {{abbreviation}} {{noun}}, that should {{noun}} the {{abbreviation}} {{noun}}!"
+]; \ No newline at end of file
diff --git a/lib/locales/en/index.js b/lib/locales/en/index.js
index 5cc575f9..04ce4e49 100644
--- a/lib/locales/en/index.js
+++ b/lib/locales/en/index.js
@@ -3,7 +3,6 @@ module['exports'] = en;
en.title = "English";
en.separator = " & ";
en.address = require("./address");
-en.credit_card = require("./credit_card");
en.company = require("./company");
en.internet = require("./internet");
en.database = require("./database");
diff --git a/lib/locales/en/name/gender.js b/lib/locales/en/name/gender.js
new file mode 100644
index 00000000..4a61e0cd
--- /dev/null
+++ b/lib/locales/en/name/gender.js
@@ -0,0 +1,73 @@
+module["exports"] = [
+"Asexual",
+"Female to male trans man",
+"Female to male transgender man",
+"Female to male transsexual man",
+"F2M",
+"Gender neutral",
+"Hermaphrodite",
+"Intersex man",
+"Intersex person",
+"Intersex woman",
+"Male to female trans woman",
+"Male to female transgender woman",
+"Male to female transsexual woman",
+"Man",
+"M2F",
+"Polygender",
+"T* man",
+"T* woman",
+"Two* person",
+"Two-spirit person",
+"Woman",
+"Agender",
+"Androgyne",
+"Androgynes",
+"Androgynous",
+"Bigender",
+"Cis",
+"Cis Female",
+"Cis Male",
+"Cis Man",
+"Cis Woman",
+"Cisgender",
+"Cisgender Female",
+"Cisgender Male",
+"Cisgender Man",
+"Cisgender Woman",
+"Female to Male",
+"FTM",
+"Gender Fluid",
+"Gender Nonconforming",
+"Gender Questioning",
+"Gender Variant",
+"Genderqueer",
+"Intersex",
+"Male to Female",
+"MTF",
+"Neither",
+"Neutrois",
+"Non-binary",
+"Other",
+"Pangender",
+"Trans",
+"Trans Female",
+"Trans Male",
+"Trans Man",
+"Trans Person",
+"Trans*Female",
+"Trans*Male",
+"Trans*Man",
+"Trans*Person",
+"Trans*Woman",
+"Transexual",
+"Transexual Female",
+"Transexual Male",
+"Transexual Man",
+"Transexual Person",
+"Transexual Woman",
+"Transgender Female",
+"Transgender Person",
+"Transmasculine",
+"Two-spirit"
+];
diff --git a/lib/locales/en/name/index.js b/lib/locales/en/name/index.js
index 936de2ff..b91aedc7 100644
--- a/lib/locales/en/name/index.js
+++ b/lib/locales/en/name/index.js
@@ -2,7 +2,8 @@ var name = {};
module['exports'] = name;
name.first_name = require("./first_name");
name.last_name = require("./last_name");
+name.gender = require("./gender");
name.prefix = require("./prefix");
name.suffix = require("./suffix");
name.title = require("./title");
-name.name = require("./name");
+name.name = require("./name"); \ No newline at end of file
diff --git a/lib/locales/en/phone_number/formats.js b/lib/locales/en/phone_number/formats.js
index ad3b2a47..d3eec219 100644
--- a/lib/locales/en/phone_number/formats.js
+++ b/lib/locales/en/phone_number/formats.js
@@ -1,22 +1,22 @@
module["exports"] = [
- "###-###-####",
- "(###) ###-####",
- "1-###-###-####",
- "###.###.####",
- "###-###-####",
- "(###) ###-####",
- "1-###-###-####",
- "###.###.####",
- "###-###-#### x###",
- "(###) ###-#### x###",
- "1-###-###-#### x###",
- "###.###.#### x###",
- "###-###-#### x####",
- "(###) ###-#### x####",
- "1-###-###-#### x####",
- "###.###.#### x####",
- "###-###-#### x#####",
- "(###) ###-#### x#####",
- "1-###-###-#### x#####",
- "###.###.#### x#####"
+ "!##-!##-####",
+ "(!##) !##-####",
+ "1-!##-!##-####",
+ "!##.!##.####",
+ "!##-!##-####",
+ "(!##) !##-####",
+ "1-!##-!##-####",
+ "!##.!##.####",
+ "!##-!##-#### x###",
+ "(!##) !##-#### x###",
+ "1-!##-!##-#### x###",
+ "!##.!##.#### x###",
+ "!##-!##-#### x####",
+ "(!##) !##-#### x####",
+ "1-!##-!##-#### x####",
+ "!##.!##.#### x####",
+ "!##-!##-#### x#####",
+ "(!##) !##-#### x#####",
+ "1-!##-!##-#### x#####",
+ "!##.!##.#### x#####"
];
diff --git a/lib/locales/en/system/directoryPaths.js b/lib/locales/en/system/directoryPaths.js
new file mode 100644
index 00000000..509cd107
--- /dev/null
+++ b/lib/locales/en/system/directoryPaths.js
@@ -0,0 +1,62 @@
+module['exports'] = [
+ "/Applications",
+ "/bin",
+ "/boot",
+ "/boot/defaults",
+ "/dev",
+ "/etc",
+ "/etc/defaults",
+ "/etc/mail",
+ "/etc/namedb",
+ "/etc/periodic",
+ "/etc/ppp",
+ "/home",
+ "/home/user",
+ "/home/user/dir",
+ "/lib",
+ "/Library",
+ "/lost+found",
+ "/media",
+ "/mnt",
+ "/net",
+ "/Network",
+ "/opt",
+ "/opt/bin",
+ "/opt/include",
+ "/opt/lib",
+ "/opt/sbin",
+ "/opt/share",
+ "/private",
+ "/private/tmp",
+ "/private/var",
+ "/proc",
+ "/rescue",
+ "/root",
+ "/sbin",
+ "/selinux",
+ "/srv",
+ "/sys",
+ "/System",
+ "/tmp",
+ "/Users",
+ "/usr",
+ "/usr/X11R6",
+ "/usr/bin",
+ "/usr/include",
+ "/usr/lib",
+ "/usr/libdata",
+ "/usr/libexec",
+ "/usr/local/bin",
+ "/usr/local/src",
+ "/usr/obj",
+ "/usr/ports",
+ "/usr/sbin",
+ "/usr/share",
+ "/usr/src",
+ "/var",
+ "/var/log",
+ "/var/mail",
+ "/var/spool",
+ "/var/tmp",
+ "/var/yp"
+];
diff --git a/lib/locales/en/system/index.js b/lib/locales/en/system/index.js
index 4dcd9955..f13c92d3 100644
--- a/lib/locales/en/system/index.js
+++ b/lib/locales/en/system/index.js
@@ -1,3 +1,4 @@
var system = {};
module['exports'] = system;
-system.mimeTypes = require("./mimeTypes"); \ No newline at end of file
+system.directoryPaths = require("./directoryPaths");
+system.mimeTypes = require("./mimeTypes");
diff --git a/lib/locales/en_AU/address/postcode.js b/lib/locales/en_AU/address/postcode.js
index 548bbd8a..5053d539 100644
--- a/lib/locales/en_AU/address/postcode.js
+++ b/lib/locales/en_AU/address/postcode.js
@@ -1,9 +1,3 @@
module["exports"] = [
- "0###",
- "2###",
- "3###",
- "4###",
- "5###",
- "6###",
- "7###"
+ "####"
];
diff --git a/lib/locales/en_CA/phone_number/formats.js b/lib/locales/en_CA/phone_number/formats.js
index 44dce1a2..c5b85ebe 100644
--- a/lib/locales/en_CA/phone_number/formats.js
+++ b/lib/locales/en_CA/phone_number/formats.js
@@ -1,18 +1,18 @@
module["exports"] = [
- "###-###-####",
- "(###)###-####",
- "###.###.####",
- "1-###-###-####",
- "###-###-#### x###",
- "(###)###-#### x###",
- "1-###-###-#### x###",
- "###.###.#### x###",
- "###-###-#### x####",
- "(###)###-#### x####",
- "1-###-###-#### x####",
- "###.###.#### x####",
- "###-###-#### x#####",
- "(###)###-#### x#####",
- "1-###-###-#### x#####",
- "###.###.#### x#####"
+ "!##-!##-####",
+ "(!##)!##-####",
+ "!##.!##.####",
+ "1-!##-###-####",
+ "!##-!##-#### x###",
+ "(!##)!##-#### x###",
+ "1-!##-!##-#### x###",
+ "!##.!##.#### x###",
+ "!##-!##-#### x####",
+ "(!##)!##-#### x####",
+ "1-!##-!##-#### x####",
+ "!##.!##.#### x####",
+ "!##-!##-#### x#####",
+ "(!##)!##-#### x#####",
+ "1-!##-!##-#### x#####",
+ "!##.!##.#### x#####"
];
diff --git a/lib/locales/en_IND/address/postcode.js b/lib/locales/en_IND/address/postcode.js
index cd73ce97..26b9b99f 100644
--- a/lib/locales/en_IND/address/postcode.js
+++ b/lib/locales/en_IND/address/postcode.js
@@ -1,3 +1,3 @@
module["exports"] = [
- "?#? #?#"
+ "### ###"
];
diff --git a/lib/locales/es_MX/lorem/index.js b/lib/locales/es_MX/lorem/index.js
index feb6eff8..a53a23d0 100644
--- a/lib/locales/es_MX/lorem/index.js
+++ b/lib/locales/es_MX/lorem/index.js
@@ -1,4 +1,3 @@
var lorem = {};
module['exports'] = lorem;
lorem.words = require("./words");
-lorem.supplemental = require("./supplemental");
diff --git a/lib/locales/es_MX/lorem/supplemental.js b/lib/locales/es_MX/lorem/supplemental.js
deleted file mode 100644
index 8fdc2c3e..00000000
--- a/lib/locales/es_MX/lorem/supplemental.js
+++ /dev/null
@@ -1,842 +0,0 @@
-module["exports"] = [
- "abbas",
- "abduco",
- "abeo",
- "abscido",
- "absconditus",
- "absens",
- "absorbeo",
- "absque",
- "abstergo",
- "absum",
- "abundans",
- "abutor",
- "accedo",
- "accendo",
- "acceptus",
- "accipio",
- "accommodo",
- "accusator",
- "acer",
- "acerbitas",
- "acervus",
- "acidus",
- "acies",
- "acquiro",
- "acsi",
- "adamo",
- "adaugeo",
- "addo",
- "adduco",
- "ademptio",
- "adeo",
- "adeptio",
- "adfectus",
- "adfero",
- "adficio",
- "adflicto",
- "adhaero",
- "adhuc",
- "adicio",
- "adimpleo",
- "adinventitias",
- "adipiscor",
- "adiuvo",
- "administratio",
- "admiratio",
- "admitto",
- "admoneo",
- "admoveo",
- "adnuo",
- "adopto",
- "adsidue",
- "adstringo",
- "adsuesco",
- "adsum",
- "adulatio",
- "adulescens",
- "adultus",
- "aduro",
- "advenio",
- "adversus",
- "advoco",
- "aedificium",
- "aeger",
- "aegre",
- "aegrotatio",
- "aegrus",
- "aeneus",
- "aequitas",
- "aequus",
- "aer",
- "aestas",
- "aestivus",
- "aestus",
- "aetas",
- "aeternus",
- "ager",
- "aggero",
- "aggredior",
- "agnitio",
- "agnosco",
- "ago",
- "ait",
- "aiunt",
- "alienus",
- "alii",
- "alioqui",
- "aliqua",
- "alius",
- "allatus",
- "alo",
- "alter",
- "altus",
- "alveus",
- "amaritudo",
- "ambitus",
- "ambulo",
- "amicitia",
- "amiculum",
- "amissio",
- "amita",
- "amitto",
- "amo",
- "amor",
- "amoveo",
- "amplexus",
- "amplitudo",
- "amplus",
- "ancilla",
- "angelus",
- "angulus",
- "angustus",
- "animadverto",
- "animi",
- "animus",
- "annus",
- "anser",
- "ante",
- "antea",
- "antepono",
- "antiquus",
- "aperio",
- "aperte",
- "apostolus",
- "apparatus",
- "appello",
- "appono",
- "appositus",
- "approbo",
- "apto",
- "aptus",
- "apud",
- "aqua",
- "ara",
- "aranea",
- "arbitro",
- "arbor",
- "arbustum",
- "arca",
- "arceo",
- "arcesso",
- "arcus",
- "argentum",
- "argumentum",
- "arguo",
- "arma",
- "armarium",
- "armo",
- "aro",
- "ars",
- "articulus",
- "artificiose",
- "arto",
- "arx",
- "ascisco",
- "ascit",
- "asper",
- "aspicio",
- "asporto",
- "assentator",
- "astrum",
- "atavus",
- "ater",
- "atqui",
- "atrocitas",
- "atrox",
- "attero",
- "attollo",
- "attonbitus",
- "auctor",
- "auctus",
- "audacia",
- "audax",
- "audentia",
- "audeo",
- "audio",
- "auditor",
- "aufero",
- "aureus",
- "auris",
- "aurum",
- "aut",
- "autem",
- "autus",
- "auxilium",
- "avaritia",
- "avarus",
- "aveho",
- "averto",
- "avoco",
- "baiulus",
- "balbus",
- "barba",
- "bardus",
- "basium",
- "beatus",
- "bellicus",
- "bellum",
- "bene",
- "beneficium",
- "benevolentia",
- "benigne",
- "bestia",
- "bibo",
- "bis",
- "blandior",
- "bonus",
- "bos",
- "brevis",
- "cado",
- "caecus",
- "caelestis",
- "caelum",
- "calamitas",
- "calcar",
- "calco",
- "calculus",
- "callide",
- "campana",
- "candidus",
- "canis",
- "canonicus",
- "canto",
- "capillus",
- "capio",
- "capitulus",
- "capto",
- "caput",
- "carbo",
- "carcer",
- "careo",
- "caries",
- "cariosus",
- "caritas",
- "carmen",
- "carpo",
- "carus",
- "casso",
- "caste",
- "casus",
- "catena",
- "caterva",
- "cattus",
- "cauda",
- "causa",
- "caute",
- "caveo",
- "cavus",
- "cedo",
- "celebrer",
- "celer",
- "celo",
- "cena",
- "cenaculum",
- "ceno",
- "censura",
- "centum",
- "cerno",
- "cernuus",
- "certe",
- "certo",
- "certus",
- "cervus",
- "cetera",
- "charisma",
- "chirographum",
- "cibo",
- "cibus",
- "cicuta",
- "cilicium",
- "cimentarius",
- "ciminatio",
- "cinis",
- "circumvenio",
- "cito",
- "civis",
- "civitas",
- "clam",
- "clamo",
- "claro",
- "clarus",
- "claudeo",
- "claustrum",
- "clementia",
- "clibanus",
- "coadunatio",
- "coaegresco",
- "coepi",
- "coerceo",
- "cogito",
- "cognatus",
- "cognomen",
- "cogo",
- "cohaero",
- "cohibeo",
- "cohors",
- "colligo",
- "colloco",
- "collum",
- "colo",
- "color",
- "coma",
- "combibo",
- "comburo",
- "comedo",
- "comes",
- "cometes",
- "comis",
- "comitatus",
- "commemoro",
- "comminor",
- "commodo",
- "communis",
- "comparo",
- "compello",
- "complectus",
- "compono",
- "comprehendo",
- "comptus",
- "conatus",
- "concedo",
- "concido",
- "conculco",
- "condico",
- "conduco",
- "confero",
- "confido",
- "conforto",
- "confugo",
- "congregatio",
- "conicio",
- "coniecto",
- "conitor",
- "coniuratio",
- "conor",
- "conqueror",
- "conscendo",
- "conservo",
- "considero",
- "conspergo",
- "constans",
- "consuasor",
- "contabesco",
- "contego",
- "contigo",
- "contra",
- "conturbo",
- "conventus",
- "convoco",
- "copia",
- "copiose",
- "cornu",
- "corona",
- "corpus",
- "correptius",
- "corrigo",
- "corroboro",
- "corrumpo",
- "coruscus",
- "cotidie",
- "crapula",
- "cras",
- "crastinus",
- "creator",
- "creber",
- "crebro",
- "credo",
- "creo",
- "creptio",
- "crepusculum",
- "cresco",
- "creta",
- "cribro",
- "crinis",
- "cruciamentum",
- "crudelis",
- "cruentus",
- "crur",
- "crustulum",
- "crux",
- "cubicularis",
- "cubitum",
- "cubo",
- "cui",
- "cuius",
- "culpa",
- "culpo",
- "cultellus",
- "cultura",
- "cum",
- "cunabula",
- "cunae",
- "cunctatio",
- "cupiditas",
- "cupio",
- "cuppedia",
- "cupressus",
- "cur",
- "cura",
- "curatio",
- "curia",
- "curiositas",
- "curis",
- "curo",
- "curriculum",
- "currus",
- "cursim",
- "curso",
- "cursus",
- "curto",
- "curtus",
- "curvo",
- "curvus",
- "custodia",
- "damnatio",
- "damno",
- "dapifer",
- "debeo",
- "debilito",
- "decens",
- "decerno",
- "decet",
- "decimus",
- "decipio",
- "decor",
- "decretum",
- "decumbo",
- "dedecor",
- "dedico",
- "deduco",
- "defaeco",
- "defendo",
- "defero",
- "defessus",
- "defetiscor",
- "deficio",
- "defigo",
- "defleo",
- "defluo",
- "defungo",
- "degenero",
- "degero",
- "degusto",
- "deinde",
- "delectatio",
- "delego",
- "deleo",
- "delibero",
- "delicate",
- "delinquo",
- "deludo",
- "demens",
- "demergo",
- "demitto",
- "demo",
- "demonstro",
- "demoror",
- "demulceo",
- "demum",
- "denego",
- "denique",
- "dens",
- "denuncio",
- "denuo",
- "deorsum",
- "depereo",
- "depono",
- "depopulo",
- "deporto",
- "depraedor",
- "deprecator",
- "deprimo",
- "depromo",
- "depulso",
- "deputo",
- "derelinquo",
- "derideo",
- "deripio",
- "desidero",
- "desino",
- "desipio",
- "desolo",
- "desparatus",
- "despecto",
- "despirmatio",
- "infit",
- "inflammatio",
- "paens",
- "patior",
- "patria",
- "patrocinor",
- "patruus",
- "pauci",
- "paulatim",
- "pauper",
- "pax",
- "peccatus",
- "pecco",
- "pecto",
- "pectus",
- "pecunia",
- "pecus",
- "peior",
- "pel",
- "ocer",
- "socius",
- "sodalitas",
- "sol",
- "soleo",
- "solio",
- "solitudo",
- "solium",
- "sollers",
- "sollicito",
- "solum",
- "solus",
- "solutio",
- "solvo",
- "somniculosus",
- "somnus",
- "sonitus",
- "sono",
- "sophismata",
- "sopor",
- "sordeo",
- "sortitus",
- "spargo",
- "speciosus",
- "spectaculum",
- "speculum",
- "sperno",
- "spero",
- "spes",
- "spiculum",
- "spiritus",
- "spoliatio",
- "sponte",
- "stabilis",
- "statim",
- "statua",
- "stella",
- "stillicidium",
- "stipes",
- "stips",
- "sto",
- "strenuus",
- "strues",
- "studio",
- "stultus",
- "suadeo",
- "suasoria",
- "sub",
- "subito",
- "subiungo",
- "sublime",
- "subnecto",
- "subseco",
- "substantia",
- "subvenio",
- "succedo",
- "succurro",
- "sufficio",
- "suffoco",
- "suffragium",
- "suggero",
- "sui",
- "sulum",
- "sum",
- "summa",
- "summisse",
- "summopere",
- "sumo",
- "sumptus",
- "supellex",
- "super",
- "suppellex",
- "supplanto",
- "suppono",
- "supra",
- "surculus",
- "surgo",
- "sursum",
- "suscipio",
- "suspendo",
- "sustineo",
- "suus",
- "synagoga",
- "tabella",
- "tabernus",
- "tabesco",
- "tabgo",
- "tabula",
- "taceo",
- "tactus",
- "taedium",
- "talio",
- "talis",
- "talus",
- "tam",
- "tamdiu",
- "tamen",
- "tametsi",
- "tamisium",
- "tamquam",
- "tandem",
- "tantillus",
- "tantum",
- "tardus",
- "tego",
- "temeritas",
- "temperantia",
- "templum",
- "temptatio",
- "tempus",
- "tenax",
- "tendo",
- "teneo",
- "tener",
- "tenuis",
- "tenus",
- "tepesco",
- "tepidus",
- "ter",
- "terebro",
- "teres",
- "terga",
- "tergeo",
- "tergiversatio",
- "tergo",
- "tergum",
- "termes",
- "terminatio",
- "tero",
- "terra",
- "terreo",
- "territo",
- "terror",
- "tersus",
- "tertius",
- "testimonium",
- "texo",
- "textilis",
- "textor",
- "textus",
- "thalassinus",
- "theatrum",
- "theca",
- "thema",
- "theologus",
- "thermae",
- "thesaurus",
- "thesis",
- "thorax",
- "thymbra",
- "thymum",
- "tibi",
- "timidus",
- "timor",
- "titulus",
- "tolero",
- "tollo",
- "tondeo",
- "tonsor",
- "torqueo",
- "torrens",
- "tot",
- "totidem",
- "toties",
- "totus",
- "tracto",
- "trado",
- "traho",
- "trans",
- "tredecim",
- "tremo",
- "trepide",
- "tres",
- "tribuo",
- "tricesimus",
- "triduana",
- "triginta",
- "tripudio",
- "tristis",
- "triumphus",
- "trucido",
- "truculenter",
- "tubineus",
- "tui",
- "tum",
- "tumultus",
- "tunc",
- "turba",
- "turbo",
- "turpe",
- "turpis",
- "tutamen",
- "tutis",
- "tyrannus",
- "uberrime",
- "ubi",
- "ulciscor",
- "ullus",
- "ulterius",
- "ultio",
- "ultra",
- "umbra",
- "umerus",
- "umquam",
- "una",
- "unde",
- "undique",
- "universe",
- "unus",
- "urbanus",
- "urbs",
- "uredo",
- "usitas",
- "usque",
- "ustilo",
- "ustulo",
- "usus",
- "uter",
- "uterque",
- "utilis",
- "utique",
- "utor",
- "utpote",
- "utrimque",
- "utroque",
- "utrum",
- "uxor",
- "vaco",
- "vacuus",
- "vado",
- "vae",
- "valde",
- "valens",
- "valeo",
- "valetudo",
- "validus",
- "vallum",
- "vapulus",
- "varietas",
- "varius",
- "vehemens",
- "vel",
- "velociter",
- "velum",
- "velut",
- "venia",
- "venio",
- "ventito",
- "ventosus",
- "ventus",
- "venustas",
- "ver",
- "verbera",
- "verbum",
- "vere",
- "verecundia",
- "vereor",
- "vergo",
- "veritas",
- "vero",
- "versus",
- "verto",
- "verumtamen",
- "verus",
- "vesco",
- "vesica",
- "vesper",
- "vespillo",
- "vester",
- "vestigium",
- "vestrum",
- "vetus",
- "via",
- "vicinus",
- "vicissitudo",
- "victoria",
- "victus",
- "videlicet",
- "video",
- "viduata",
- "viduo",
- "vigilo",
- "vigor",
- "vilicus",
- "vilis",
- "vilitas",
- "villa",
- "vinco",
- "vinculum",
- "vindico",
- "vinitor",
- "vinum",
- "vir",
- "virga",
- "virgo",
- "viridis",
- "viriliter",
- "virtus",
- "vis",
- "viscus",
- "vita",
- "vitiosus",
- "vitium",
- "vito",
- "vivo",
- "vix",
- "vobis",
- "vociferor",
- "voco",
- "volaticus",
- "volo",
- "volubilis",
- "voluntarius",
- "volup",
- "volutabrum",
- "volva",
- "vomer",
- "vomica",
- "vomito",
- "vorago",
- "vorax",
- "voro",
- "vos",
- "votum",
- "voveo",
- "vox",
- "vulariter",
- "vulgaris",
- "vulgivagus",
- "vulgo",
- "vulgus",
- "vulnero",
- "vulnus",
- "vulpes",
- "vulticulus",
- "vultuosus",
- "xiphias"
-];
diff --git a/lib/locales/fr/address/street_prefix.js b/lib/locales/fr/address/street_prefix.js
index 059b9317..7076b8e1 100644
--- a/lib/locales/fr/address/street_prefix.js
+++ b/lib/locales/fr/address/street_prefix.js
@@ -1,5 +1,6 @@
module["exports"] = [
- "Allée, Voie",
+ "Allée",
+ "Voie",
"Rue",
"Avenue",
"Boulevard",
diff --git a/lib/locales/fr/lorem/index.js b/lib/locales/fr/lorem/index.js
index feb6eff8..a53a23d0 100644
--- a/lib/locales/fr/lorem/index.js
+++ b/lib/locales/fr/lorem/index.js
@@ -1,4 +1,3 @@
var lorem = {};
module['exports'] = lorem;
lorem.words = require("./words");
-lorem.supplemental = require("./supplemental");
diff --git a/lib/locales/fr/lorem/supplemental.js b/lib/locales/fr/lorem/supplemental.js
deleted file mode 100644
index 8fdc2c3e..00000000
--- a/lib/locales/fr/lorem/supplemental.js
+++ /dev/null
@@ -1,842 +0,0 @@
-module["exports"] = [
- "abbas",
- "abduco",
- "abeo",
- "abscido",
- "absconditus",
- "absens",
- "absorbeo",
- "absque",
- "abstergo",
- "absum",
- "abundans",
- "abutor",
- "accedo",
- "accendo",
- "acceptus",
- "accipio",
- "accommodo",
- "accusator",
- "acer",
- "acerbitas",
- "acervus",
- "acidus",
- "acies",
- "acquiro",
- "acsi",
- "adamo",
- "adaugeo",
- "addo",
- "adduco",
- "ademptio",
- "adeo",
- "adeptio",
- "adfectus",
- "adfero",
- "adficio",
- "adflicto",
- "adhaero",
- "adhuc",
- "adicio",
- "adimpleo",
- "adinventitias",
- "adipiscor",
- "adiuvo",
- "administratio",
- "admiratio",
- "admitto",
- "admoneo",
- "admoveo",
- "adnuo",
- "adopto",
- "adsidue",
- "adstringo",
- "adsuesco",
- "adsum",
- "adulatio",
- "adulescens",
- "adultus",
- "aduro",
- "advenio",
- "adversus",
- "advoco",
- "aedificium",
- "aeger",
- "aegre",
- "aegrotatio",
- "aegrus",
- "aeneus",
- "aequitas",
- "aequus",
- "aer",
- "aestas",
- "aestivus",
- "aestus",
- "aetas",
- "aeternus",
- "ager",
- "aggero",
- "aggredior",
- "agnitio",
- "agnosco",
- "ago",
- "ait",
- "aiunt",
- "alienus",
- "alii",
- "alioqui",
- "aliqua",
- "alius",
- "allatus",
- "alo",
- "alter",
- "altus",
- "alveus",
- "amaritudo",
- "ambitus",
- "ambulo",
- "amicitia",
- "amiculum",
- "amissio",
- "amita",
- "amitto",
- "amo",
- "amor",
- "amoveo",
- "amplexus",
- "amplitudo",
- "amplus",
- "ancilla",
- "angelus",
- "angulus",
- "angustus",
- "animadverto",
- "animi",
- "animus",
- "annus",
- "anser",
- "ante",
- "antea",
- "antepono",
- "antiquus",
- "aperio",
- "aperte",
- "apostolus",
- "apparatus",
- "appello",
- "appono",
- "appositus",
- "approbo",
- "apto",
- "aptus",
- "apud",
- "aqua",
- "ara",
- "aranea",
- "arbitro",
- "arbor",
- "arbustum",
- "arca",
- "arceo",
- "arcesso",
- "arcus",
- "argentum",
- "argumentum",
- "arguo",
- "arma",
- "armarium",
- "armo",
- "aro",
- "ars",
- "articulus",
- "artificiose",
- "arto",
- "arx",
- "ascisco",
- "ascit",
- "asper",
- "aspicio",
- "asporto",
- "assentator",
- "astrum",
- "atavus",
- "ater",
- "atqui",
- "atrocitas",
- "atrox",
- "attero",
- "attollo",
- "attonbitus",
- "auctor",
- "auctus",
- "audacia",
- "audax",
- "audentia",
- "audeo",
- "audio",
- "auditor",
- "aufero",
- "aureus",
- "auris",
- "aurum",
- "aut",
- "autem",
- "autus",
- "auxilium",
- "avaritia",
- "avarus",
- "aveho",
- "averto",
- "avoco",
- "baiulus",
- "balbus",
- "barba",
- "bardus",
- "basium",
- "beatus",
- "bellicus",
- "bellum",
- "bene",
- "beneficium",
- "benevolentia",
- "benigne",
- "bestia",
- "bibo",
- "bis",
- "blandior",
- "bonus",
- "bos",
- "brevis",
- "cado",
- "caecus",
- "caelestis",
- "caelum",
- "calamitas",
- "calcar",
- "calco",
- "calculus",
- "callide",
- "campana",
- "candidus",
- "canis",
- "canonicus",
- "canto",
- "capillus",
- "capio",
- "capitulus",
- "capto",
- "caput",
- "carbo",
- "carcer",
- "careo",
- "caries",
- "cariosus",
- "caritas",
- "carmen",
- "carpo",
- "carus",
- "casso",
- "caste",
- "casus",
- "catena",
- "caterva",
- "cattus",
- "cauda",
- "causa",
- "caute",
- "caveo",
- "cavus",
- "cedo",
- "celebrer",
- "celer",
- "celo",
- "cena",
- "cenaculum",
- "ceno",
- "censura",
- "centum",
- "cerno",
- "cernuus",
- "certe",
- "certo",
- "certus",
- "cervus",
- "cetera",
- "charisma",
- "chirographum",
- "cibo",
- "cibus",
- "cicuta",
- "cilicium",
- "cimentarius",
- "ciminatio",
- "cinis",
- "circumvenio",
- "cito",
- "civis",
- "civitas",
- "clam",
- "clamo",
- "claro",
- "clarus",
- "claudeo",
- "claustrum",
- "clementia",
- "clibanus",
- "coadunatio",
- "coaegresco",
- "coepi",
- "coerceo",
- "cogito",
- "cognatus",
- "cognomen",
- "cogo",
- "cohaero",
- "cohibeo",
- "cohors",
- "colligo",
- "colloco",
- "collum",
- "colo",
- "color",
- "coma",
- "combibo",
- "comburo",
- "comedo",
- "comes",
- "cometes",
- "comis",
- "comitatus",
- "commemoro",
- "comminor",
- "commodo",
- "communis",
- "comparo",
- "compello",
- "complectus",
- "compono",
- "comprehendo",
- "comptus",
- "conatus",
- "concedo",
- "concido",
- "conculco",
- "condico",
- "conduco",
- "confero",
- "confido",
- "conforto",
- "confugo",
- "congregatio",
- "conicio",
- "coniecto",
- "conitor",
- "coniuratio",
- "conor",
- "conqueror",
- "conscendo",
- "conservo",
- "considero",
- "conspergo",
- "constans",
- "consuasor",
- "contabesco",
- "contego",
- "contigo",
- "contra",
- "conturbo",
- "conventus",
- "convoco",
- "copia",
- "copiose",
- "cornu",
- "corona",
- "corpus",
- "correptius",
- "corrigo",
- "corroboro",
- "corrumpo",
- "coruscus",
- "cotidie",
- "crapula",
- "cras",
- "crastinus",
- "creator",
- "creber",
- "crebro",
- "credo",
- "creo",
- "creptio",
- "crepusculum",
- "cresco",
- "creta",
- "cribro",
- "crinis",
- "cruciamentum",
- "crudelis",
- "cruentus",
- "crur",
- "crustulum",
- "crux",
- "cubicularis",
- "cubitum",
- "cubo",
- "cui",
- "cuius",
- "culpa",
- "culpo",
- "cultellus",
- "cultura",
- "cum",
- "cunabula",
- "cunae",
- "cunctatio",
- "cupiditas",
- "cupio",
- "cuppedia",
- "cupressus",
- "cur",
- "cura",
- "curatio",
- "curia",
- "curiositas",
- "curis",
- "curo",
- "curriculum",
- "currus",
- "cursim",
- "curso",
- "cursus",
- "curto",
- "curtus",
- "curvo",
- "curvus",
- "custodia",
- "damnatio",
- "damno",
- "dapifer",
- "debeo",
- "debilito",
- "decens",
- "decerno",
- "decet",
- "decimus",
- "decipio",
- "decor",
- "decretum",
- "decumbo",
- "dedecor",
- "dedico",
- "deduco",
- "defaeco",
- "defendo",
- "defero",
- "defessus",
- "defetiscor",
- "deficio",
- "defigo",
- "defleo",
- "defluo",
- "defungo",
- "degenero",
- "degero",
- "degusto",
- "deinde",
- "delectatio",
- "delego",
- "deleo",
- "delibero",
- "delicate",
- "delinquo",
- "deludo",
- "demens",
- "demergo",
- "demitto",
- "demo",
- "demonstro",
- "demoror",
- "demulceo",
- "demum",
- "denego",
- "denique",
- "dens",
- "denuncio",
- "denuo",
- "deorsum",
- "depereo",
- "depono",
- "depopulo",
- "deporto",
- "depraedor",
- "deprecator",
- "deprimo",
- "depromo",
- "depulso",
- "deputo",
- "derelinquo",
- "derideo",
- "deripio",
- "desidero",
- "desino",
- "desipio",
- "desolo",
- "desparatus",
- "despecto",
- "despirmatio",
- "infit",
- "inflammatio",
- "paens",
- "patior",
- "patria",
- "patrocinor",
- "patruus",
- "pauci",
- "paulatim",
- "pauper",
- "pax",
- "peccatus",
- "pecco",
- "pecto",
- "pectus",
- "pecunia",
- "pecus",
- "peior",
- "pel",
- "ocer",
- "socius",
- "sodalitas",
- "sol",
- "soleo",
- "solio",
- "solitudo",
- "solium",
- "sollers",
- "sollicito",
- "solum",
- "solus",
- "solutio",
- "solvo",
- "somniculosus",
- "somnus",
- "sonitus",
- "sono",
- "sophismata",
- "sopor",
- "sordeo",
- "sortitus",
- "spargo",
- "speciosus",
- "spectaculum",
- "speculum",
- "sperno",
- "spero",
- "spes",
- "spiculum",
- "spiritus",
- "spoliatio",
- "sponte",
- "stabilis",
- "statim",
- "statua",
- "stella",
- "stillicidium",
- "stipes",
- "stips",
- "sto",
- "strenuus",
- "strues",
- "studio",
- "stultus",
- "suadeo",
- "suasoria",
- "sub",
- "subito",
- "subiungo",
- "sublime",
- "subnecto",
- "subseco",
- "substantia",
- "subvenio",
- "succedo",
- "succurro",
- "sufficio",
- "suffoco",
- "suffragium",
- "suggero",
- "sui",
- "sulum",
- "sum",
- "summa",
- "summisse",
- "summopere",
- "sumo",
- "sumptus",
- "supellex",
- "super",
- "suppellex",
- "supplanto",
- "suppono",
- "supra",
- "surculus",
- "surgo",
- "sursum",
- "suscipio",
- "suspendo",
- "sustineo",
- "suus",
- "synagoga",
- "tabella",
- "tabernus",
- "tabesco",
- "tabgo",
- "tabula",
- "taceo",
- "tactus",
- "taedium",
- "talio",
- "talis",
- "talus",
- "tam",
- "tamdiu",
- "tamen",
- "tametsi",
- "tamisium",
- "tamquam",
- "tandem",
- "tantillus",
- "tantum",
- "tardus",
- "tego",
- "temeritas",
- "temperantia",
- "templum",
- "temptatio",
- "tempus",
- "tenax",
- "tendo",
- "teneo",
- "tener",
- "tenuis",
- "tenus",
- "tepesco",
- "tepidus",
- "ter",
- "terebro",
- "teres",
- "terga",
- "tergeo",
- "tergiversatio",
- "tergo",
- "tergum",
- "termes",
- "terminatio",
- "tero",
- "terra",
- "terreo",
- "territo",
- "terror",
- "tersus",
- "tertius",
- "testimonium",
- "texo",
- "textilis",
- "textor",
- "textus",
- "thalassinus",
- "theatrum",
- "theca",
- "thema",
- "theologus",
- "thermae",
- "thesaurus",
- "thesis",
- "thorax",
- "thymbra",
- "thymum",
- "tibi",
- "timidus",
- "timor",
- "titulus",
- "tolero",
- "tollo",
- "tondeo",
- "tonsor",
- "torqueo",
- "torrens",
- "tot",
- "totidem",
- "toties",
- "totus",
- "tracto",
- "trado",
- "traho",
- "trans",
- "tredecim",
- "tremo",
- "trepide",
- "tres",
- "tribuo",
- "tricesimus",
- "triduana",
- "triginta",
- "tripudio",
- "tristis",
- "triumphus",
- "trucido",
- "truculenter",
- "tubineus",
- "tui",
- "tum",
- "tumultus",
- "tunc",
- "turba",
- "turbo",
- "turpe",
- "turpis",
- "tutamen",
- "tutis",
- "tyrannus",
- "uberrime",
- "ubi",
- "ulciscor",
- "ullus",
- "ulterius",
- "ultio",
- "ultra",
- "umbra",
- "umerus",
- "umquam",
- "una",
- "unde",
- "undique",
- "universe",
- "unus",
- "urbanus",
- "urbs",
- "uredo",
- "usitas",
- "usque",
- "ustilo",
- "ustulo",
- "usus",
- "uter",
- "uterque",
- "utilis",
- "utique",
- "utor",
- "utpote",
- "utrimque",
- "utroque",
- "utrum",
- "uxor",
- "vaco",
- "vacuus",
- "vado",
- "vae",
- "valde",
- "valens",
- "valeo",
- "valetudo",
- "validus",
- "vallum",
- "vapulus",
- "varietas",
- "varius",
- "vehemens",
- "vel",
- "velociter",
- "velum",
- "velut",
- "venia",
- "venio",
- "ventito",
- "ventosus",
- "ventus",
- "venustas",
- "ver",
- "verbera",
- "verbum",
- "vere",
- "verecundia",
- "vereor",
- "vergo",
- "veritas",
- "vero",
- "versus",
- "verto",
- "verumtamen",
- "verus",
- "vesco",
- "vesica",
- "vesper",
- "vespillo",
- "vester",
- "vestigium",
- "vestrum",
- "vetus",
- "via",
- "vicinus",
- "vicissitudo",
- "victoria",
- "victus",
- "videlicet",
- "video",
- "viduata",
- "viduo",
- "vigilo",
- "vigor",
- "vilicus",
- "vilis",
- "vilitas",
- "villa",
- "vinco",
- "vinculum",
- "vindico",
- "vinitor",
- "vinum",
- "vir",
- "virga",
- "virgo",
- "viridis",
- "viriliter",
- "virtus",
- "vis",
- "viscus",
- "vita",
- "vitiosus",
- "vitium",
- "vito",
- "vivo",
- "vix",
- "vobis",
- "vociferor",
- "voco",
- "volaticus",
- "volo",
- "volubilis",
- "voluntarius",
- "volup",
- "volutabrum",
- "volva",
- "vomer",
- "vomica",
- "vomito",
- "vorago",
- "vorax",
- "voro",
- "vos",
- "votum",
- "voveo",
- "vox",
- "vulariter",
- "vulgaris",
- "vulgivagus",
- "vulgo",
- "vulgus",
- "vulnero",
- "vulnus",
- "vulpes",
- "vulticulus",
- "vultuosus",
- "xiphias"
-];
diff --git a/lib/locales/nl/lorem/index.js b/lib/locales/nl/lorem/index.js
index feb6eff8..a53a23d0 100644
--- a/lib/locales/nl/lorem/index.js
+++ b/lib/locales/nl/lorem/index.js
@@ -1,4 +1,3 @@
var lorem = {};
module['exports'] = lorem;
lorem.words = require("./words");
-lorem.supplemental = require("./supplemental");
diff --git a/lib/locales/nl/lorem/supplemental.js b/lib/locales/nl/lorem/supplemental.js
deleted file mode 100644
index 8fdc2c3e..00000000
--- a/lib/locales/nl/lorem/supplemental.js
+++ /dev/null
@@ -1,842 +0,0 @@
-module["exports"] = [
- "abbas",
- "abduco",
- "abeo",
- "abscido",
- "absconditus",
- "absens",
- "absorbeo",
- "absque",
- "abstergo",
- "absum",
- "abundans",
- "abutor",
- "accedo",
- "accendo",
- "acceptus",
- "accipio",
- "accommodo",
- "accusator",
- "acer",
- "acerbitas",
- "acervus",
- "acidus",
- "acies",
- "acquiro",
- "acsi",
- "adamo",
- "adaugeo",
- "addo",
- "adduco",
- "ademptio",
- "adeo",
- "adeptio",
- "adfectus",
- "adfero",
- "adficio",
- "adflicto",
- "adhaero",
- "adhuc",
- "adicio",
- "adimpleo",
- "adinventitias",
- "adipiscor",
- "adiuvo",
- "administratio",
- "admiratio",
- "admitto",
- "admoneo",
- "admoveo",
- "adnuo",
- "adopto",
- "adsidue",
- "adstringo",
- "adsuesco",
- "adsum",
- "adulatio",
- "adulescens",
- "adultus",
- "aduro",
- "advenio",
- "adversus",
- "advoco",
- "aedificium",
- "aeger",
- "aegre",
- "aegrotatio",
- "aegrus",
- "aeneus",
- "aequitas",
- "aequus",
- "aer",
- "aestas",
- "aestivus",
- "aestus",
- "aetas",
- "aeternus",
- "ager",
- "aggero",
- "aggredior",
- "agnitio",
- "agnosco",
- "ago",
- "ait",
- "aiunt",
- "alienus",
- "alii",
- "alioqui",
- "aliqua",
- "alius",
- "allatus",
- "alo",
- "alter",
- "altus",
- "alveus",
- "amaritudo",
- "ambitus",
- "ambulo",
- "amicitia",
- "amiculum",
- "amissio",
- "amita",
- "amitto",
- "amo",
- "amor",
- "amoveo",
- "amplexus",
- "amplitudo",
- "amplus",
- "ancilla",
- "angelus",
- "angulus",
- "angustus",
- "animadverto",
- "animi",
- "animus",
- "annus",
- "anser",
- "ante",
- "antea",
- "antepono",
- "antiquus",
- "aperio",
- "aperte",
- "apostolus",
- "apparatus",
- "appello",
- "appono",
- "appositus",
- "approbo",
- "apto",
- "aptus",
- "apud",
- "aqua",
- "ara",
- "aranea",
- "arbitro",
- "arbor",
- "arbustum",
- "arca",
- "arceo",
- "arcesso",
- "arcus",
- "argentum",
- "argumentum",
- "arguo",
- "arma",
- "armarium",
- "armo",
- "aro",
- "ars",
- "articulus",
- "artificiose",
- "arto",
- "arx",
- "ascisco",
- "ascit",
- "asper",
- "aspicio",
- "asporto",
- "assentator",
- "astrum",
- "atavus",
- "ater",
- "atqui",
- "atrocitas",
- "atrox",
- "attero",
- "attollo",
- "attonbitus",
- "auctor",
- "auctus",
- "audacia",
- "audax",
- "audentia",
- "audeo",
- "audio",
- "auditor",
- "aufero",
- "aureus",
- "auris",
- "aurum",
- "aut",
- "autem",
- "autus",
- "auxilium",
- "avaritia",
- "avarus",
- "aveho",
- "averto",
- "avoco",
- "baiulus",
- "balbus",
- "barba",
- "bardus",
- "basium",
- "beatus",
- "bellicus",
- "bellum",
- "bene",
- "beneficium",
- "benevolentia",
- "benigne",
- "bestia",
- "bibo",
- "bis",
- "blandior",
- "bonus",
- "bos",
- "brevis",
- "cado",
- "caecus",
- "caelestis",
- "caelum",
- "calamitas",
- "calcar",
- "calco",
- "calculus",
- "callide",
- "campana",
- "candidus",
- "canis",
- "canonicus",
- "canto",
- "capillus",
- "capio",
- "capitulus",
- "capto",
- "caput",
- "carbo",
- "carcer",
- "careo",
- "caries",
- "cariosus",
- "caritas",
- "carmen",
- "carpo",
- "carus",
- "casso",
- "caste",
- "casus",
- "catena",
- "caterva",
- "cattus",
- "cauda",
- "causa",
- "caute",
- "caveo",
- "cavus",
- "cedo",
- "celebrer",
- "celer",
- "celo",
- "cena",
- "cenaculum",
- "ceno",
- "censura",
- "centum",
- "cerno",
- "cernuus",
- "certe",
- "certo",
- "certus",
- "cervus",
- "cetera",
- "charisma",
- "chirographum",
- "cibo",
- "cibus",
- "cicuta",
- "cilicium",
- "cimentarius",
- "ciminatio",
- "cinis",
- "circumvenio",
- "cito",
- "civis",
- "civitas",
- "clam",
- "clamo",
- "claro",
- "clarus",
- "claudeo",
- "claustrum",
- "clementia",
- "clibanus",
- "coadunatio",
- "coaegresco",
- "coepi",
- "coerceo",
- "cogito",
- "cognatus",
- "cognomen",
- "cogo",
- "cohaero",
- "cohibeo",
- "cohors",
- "colligo",
- "colloco",
- "collum",
- "colo",
- "color",
- "coma",
- "combibo",
- "comburo",
- "comedo",
- "comes",
- "cometes",
- "comis",
- "comitatus",
- "commemoro",
- "comminor",
- "commodo",
- "communis",
- "comparo",
- "compello",
- "complectus",
- "compono",
- "comprehendo",
- "comptus",
- "conatus",
- "concedo",
- "concido",
- "conculco",
- "condico",
- "conduco",
- "confero",
- "confido",
- "conforto",
- "confugo",
- "congregatio",
- "conicio",
- "coniecto",
- "conitor",
- "coniuratio",
- "conor",
- "conqueror",
- "conscendo",
- "conservo",
- "considero",
- "conspergo",
- "constans",
- "consuasor",
- "contabesco",
- "contego",
- "contigo",
- "contra",
- "conturbo",
- "conventus",
- "convoco",
- "copia",
- "copiose",
- "cornu",
- "corona",
- "corpus",
- "correptius",
- "corrigo",
- "corroboro",
- "corrumpo",
- "coruscus",
- "cotidie",
- "crapula",
- "cras",
- "crastinus",
- "creator",
- "creber",
- "crebro",
- "credo",
- "creo",
- "creptio",
- "crepusculum",
- "cresco",
- "creta",
- "cribro",
- "crinis",
- "cruciamentum",
- "crudelis",
- "cruentus",
- "crur",
- "crustulum",
- "crux",
- "cubicularis",
- "cubitum",
- "cubo",
- "cui",
- "cuius",
- "culpa",
- "culpo",
- "cultellus",
- "cultura",
- "cum",
- "cunabula",
- "cunae",
- "cunctatio",
- "cupiditas",
- "cupio",
- "cuppedia",
- "cupressus",
- "cur",
- "cura",
- "curatio",
- "curia",
- "curiositas",
- "curis",
- "curo",
- "curriculum",
- "currus",
- "cursim",
- "curso",
- "cursus",
- "curto",
- "curtus",
- "curvo",
- "curvus",
- "custodia",
- "damnatio",
- "damno",
- "dapifer",
- "debeo",
- "debilito",
- "decens",
- "decerno",
- "decet",
- "decimus",
- "decipio",
- "decor",
- "decretum",
- "decumbo",
- "dedecor",
- "dedico",
- "deduco",
- "defaeco",
- "defendo",
- "defero",
- "defessus",
- "defetiscor",
- "deficio",
- "defigo",
- "defleo",
- "defluo",
- "defungo",
- "degenero",
- "degero",
- "degusto",
- "deinde",
- "delectatio",
- "delego",
- "deleo",
- "delibero",
- "delicate",
- "delinquo",
- "deludo",
- "demens",
- "demergo",
- "demitto",
- "demo",
- "demonstro",
- "demoror",
- "demulceo",
- "demum",
- "denego",
- "denique",
- "dens",
- "denuncio",
- "denuo",
- "deorsum",
- "depereo",
- "depono",
- "depopulo",
- "deporto",
- "depraedor",
- "deprecator",
- "deprimo",
- "depromo",
- "depulso",
- "deputo",
- "derelinquo",
- "derideo",
- "deripio",
- "desidero",
- "desino",
- "desipio",
- "desolo",
- "desparatus",
- "despecto",
- "despirmatio",
- "infit",
- "inflammatio",
- "paens",
- "patior",
- "patria",
- "patrocinor",
- "patruus",
- "pauci",
- "paulatim",
- "pauper",
- "pax",
- "peccatus",
- "pecco",
- "pecto",
- "pectus",
- "pecunia",
- "pecus",
- "peior",
- "pel",
- "ocer",
- "socius",
- "sodalitas",
- "sol",
- "soleo",
- "solio",
- "solitudo",
- "solium",
- "sollers",
- "sollicito",
- "solum",
- "solus",
- "solutio",
- "solvo",
- "somniculosus",
- "somnus",
- "sonitus",
- "sono",
- "sophismata",
- "sopor",
- "sordeo",
- "sortitus",
- "spargo",
- "speciosus",
- "spectaculum",
- "speculum",
- "sperno",
- "spero",
- "spes",
- "spiculum",
- "spiritus",
- "spoliatio",
- "sponte",
- "stabilis",
- "statim",
- "statua",
- "stella",
- "stillicidium",
- "stipes",
- "stips",
- "sto",
- "strenuus",
- "strues",
- "studio",
- "stultus",
- "suadeo",
- "suasoria",
- "sub",
- "subito",
- "subiungo",
- "sublime",
- "subnecto",
- "subseco",
- "substantia",
- "subvenio",
- "succedo",
- "succurro",
- "sufficio",
- "suffoco",
- "suffragium",
- "suggero",
- "sui",
- "sulum",
- "sum",
- "summa",
- "summisse",
- "summopere",
- "sumo",
- "sumptus",
- "supellex",
- "super",
- "suppellex",
- "supplanto",
- "suppono",
- "supra",
- "surculus",
- "surgo",
- "sursum",
- "suscipio",
- "suspendo",
- "sustineo",
- "suus",
- "synagoga",
- "tabella",
- "tabernus",
- "tabesco",
- "tabgo",
- "tabula",
- "taceo",
- "tactus",
- "taedium",
- "talio",
- "talis",
- "talus",
- "tam",
- "tamdiu",
- "tamen",
- "tametsi",
- "tamisium",
- "tamquam",
- "tandem",
- "tantillus",
- "tantum",
- "tardus",
- "tego",
- "temeritas",
- "temperantia",
- "templum",
- "temptatio",
- "tempus",
- "tenax",
- "tendo",
- "teneo",
- "tener",
- "tenuis",
- "tenus",
- "tepesco",
- "tepidus",
- "ter",
- "terebro",
- "teres",
- "terga",
- "tergeo",
- "tergiversatio",
- "tergo",
- "tergum",
- "termes",
- "terminatio",
- "tero",
- "terra",
- "terreo",
- "territo",
- "terror",
- "tersus",
- "tertius",
- "testimonium",
- "texo",
- "textilis",
- "textor",
- "textus",
- "thalassinus",
- "theatrum",
- "theca",
- "thema",
- "theologus",
- "thermae",
- "thesaurus",
- "thesis",
- "thorax",
- "thymbra",
- "thymum",
- "tibi",
- "timidus",
- "timor",
- "titulus",
- "tolero",
- "tollo",
- "tondeo",
- "tonsor",
- "torqueo",
- "torrens",
- "tot",
- "totidem",
- "toties",
- "totus",
- "tracto",
- "trado",
- "traho",
- "trans",
- "tredecim",
- "tremo",
- "trepide",
- "tres",
- "tribuo",
- "tricesimus",
- "triduana",
- "triginta",
- "tripudio",
- "tristis",
- "triumphus",
- "trucido",
- "truculenter",
- "tubineus",
- "tui",
- "tum",
- "tumultus",
- "tunc",
- "turba",
- "turbo",
- "turpe",
- "turpis",
- "tutamen",
- "tutis",
- "tyrannus",
- "uberrime",
- "ubi",
- "ulciscor",
- "ullus",
- "ulterius",
- "ultio",
- "ultra",
- "umbra",
- "umerus",
- "umquam",
- "una",
- "unde",
- "undique",
- "universe",
- "unus",
- "urbanus",
- "urbs",
- "uredo",
- "usitas",
- "usque",
- "ustilo",
- "ustulo",
- "usus",
- "uter",
- "uterque",
- "utilis",
- "utique",
- "utor",
- "utpote",
- "utrimque",
- "utroque",
- "utrum",
- "uxor",
- "vaco",
- "vacuus",
- "vado",
- "vae",
- "valde",
- "valens",
- "valeo",
- "valetudo",
- "validus",
- "vallum",
- "vapulus",
- "varietas",
- "varius",
- "vehemens",
- "vel",
- "velociter",
- "velum",
- "velut",
- "venia",
- "venio",
- "ventito",
- "ventosus",
- "ventus",
- "venustas",
- "ver",
- "verbera",
- "verbum",
- "vere",
- "verecundia",
- "vereor",
- "vergo",
- "veritas",
- "vero",
- "versus",
- "verto",
- "verumtamen",
- "verus",
- "vesco",
- "vesica",
- "vesper",
- "vespillo",
- "vester",
- "vestigium",
- "vestrum",
- "vetus",
- "via",
- "vicinus",
- "vicissitudo",
- "victoria",
- "victus",
- "videlicet",
- "video",
- "viduata",
- "viduo",
- "vigilo",
- "vigor",
- "vilicus",
- "vilis",
- "vilitas",
- "villa",
- "vinco",
- "vinculum",
- "vindico",
- "vinitor",
- "vinum",
- "vir",
- "virga",
- "virgo",
- "viridis",
- "viriliter",
- "virtus",
- "vis",
- "viscus",
- "vita",
- "vitiosus",
- "vitium",
- "vito",
- "vivo",
- "vix",
- "vobis",
- "vociferor",
- "voco",
- "volaticus",
- "volo",
- "volubilis",
- "voluntarius",
- "volup",
- "volutabrum",
- "volva",
- "vomer",
- "vomica",
- "vomito",
- "vorago",
- "vorax",
- "voro",
- "vos",
- "votum",
- "voveo",
- "vox",
- "vulariter",
- "vulgaris",
- "vulgivagus",
- "vulgo",
- "vulgus",
- "vulnero",
- "vulnus",
- "vulpes",
- "vulticulus",
- "vultuosus",
- "xiphias"
-];
diff --git a/lib/locales/pl/lorem/index.js b/lib/locales/pl/lorem/index.js
index feb6eff8..a53a23d0 100644
--- a/lib/locales/pl/lorem/index.js
+++ b/lib/locales/pl/lorem/index.js
@@ -1,4 +1,3 @@
var lorem = {};
module['exports'] = lorem;
lorem.words = require("./words");
-lorem.supplemental = require("./supplemental");
diff --git a/lib/locales/pl/lorem/supplemental.js b/lib/locales/pl/lorem/supplemental.js
deleted file mode 100644
index 8fdc2c3e..00000000
--- a/lib/locales/pl/lorem/supplemental.js
+++ /dev/null
@@ -1,842 +0,0 @@
-module["exports"] = [
- "abbas",
- "abduco",
- "abeo",
- "abscido",
- "absconditus",
- "absens",
- "absorbeo",
- "absque",
- "abstergo",
- "absum",
- "abundans",
- "abutor",
- "accedo",
- "accendo",
- "acceptus",
- "accipio",
- "accommodo",
- "accusator",
- "acer",
- "acerbitas",
- "acervus",
- "acidus",
- "acies",
- "acquiro",
- "acsi",
- "adamo",
- "adaugeo",
- "addo",
- "adduco",
- "ademptio",
- "adeo",
- "adeptio",
- "adfectus",
- "adfero",
- "adficio",
- "adflicto",
- "adhaero",
- "adhuc",
- "adicio",
- "adimpleo",
- "adinventitias",
- "adipiscor",
- "adiuvo",
- "administratio",
- "admiratio",
- "admitto",
- "admoneo",
- "admoveo",
- "adnuo",
- "adopto",
- "adsidue",
- "adstringo",
- "adsuesco",
- "adsum",
- "adulatio",
- "adulescens",
- "adultus",
- "aduro",
- "advenio",
- "adversus",
- "advoco",
- "aedificium",
- "aeger",
- "aegre",
- "aegrotatio",
- "aegrus",
- "aeneus",
- "aequitas",
- "aequus",
- "aer",
- "aestas",
- "aestivus",
- "aestus",
- "aetas",
- "aeternus",
- "ager",
- "aggero",
- "aggredior",
- "agnitio",
- "agnosco",
- "ago",
- "ait",
- "aiunt",
- "alienus",
- "alii",
- "alioqui",
- "aliqua",
- "alius",
- "allatus",
- "alo",
- "alter",
- "altus",
- "alveus",
- "amaritudo",
- "ambitus",
- "ambulo",
- "amicitia",
- "amiculum",
- "amissio",
- "amita",
- "amitto",
- "amo",
- "amor",
- "amoveo",
- "amplexus",
- "amplitudo",
- "amplus",
- "ancilla",
- "angelus",
- "angulus",
- "angustus",
- "animadverto",
- "animi",
- "animus",
- "annus",
- "anser",
- "ante",
- "antea",
- "antepono",
- "antiquus",
- "aperio",
- "aperte",
- "apostolus",
- "apparatus",
- "appello",
- "appono",
- "appositus",
- "approbo",
- "apto",
- "aptus",
- "apud",
- "aqua",
- "ara",
- "aranea",
- "arbitro",
- "arbor",
- "arbustum",
- "arca",
- "arceo",
- "arcesso",
- "arcus",
- "argentum",
- "argumentum",
- "arguo",
- "arma",
- "armarium",
- "armo",
- "aro",
- "ars",
- "articulus",
- "artificiose",
- "arto",
- "arx",
- "ascisco",
- "ascit",
- "asper",
- "aspicio",
- "asporto",
- "assentator",
- "astrum",
- "atavus",
- "ater",
- "atqui",
- "atrocitas",
- "atrox",
- "attero",
- "attollo",
- "attonbitus",
- "auctor",
- "auctus",
- "audacia",
- "audax",
- "audentia",
- "audeo",
- "audio",
- "auditor",
- "aufero",
- "aureus",
- "auris",
- "aurum",
- "aut",
- "autem",
- "autus",
- "auxilium",
- "avaritia",
- "avarus",
- "aveho",
- "averto",
- "avoco",
- "baiulus",
- "balbus",
- "barba",
- "bardus",
- "basium",
- "beatus",
- "bellicus",
- "bellum",
- "bene",
- "beneficium",
- "benevolentia",
- "benigne",
- "bestia",
- "bibo",
- "bis",
- "blandior",
- "bonus",
- "bos",
- "brevis",
- "cado",
- "caecus",
- "caelestis",
- "caelum",
- "calamitas",
- "calcar",
- "calco",
- "calculus",
- "callide",
- "campana",
- "candidus",
- "canis",
- "canonicus",
- "canto",
- "capillus",
- "capio",
- "capitulus",
- "capto",
- "caput",
- "carbo",
- "carcer",
- "careo",
- "caries",
- "cariosus",
- "caritas",
- "carmen",
- "carpo",
- "carus",
- "casso",
- "caste",
- "casus",
- "catena",
- "caterva",
- "cattus",
- "cauda",
- "causa",
- "caute",
- "caveo",
- "cavus",
- "cedo",
- "celebrer",
- "celer",
- "celo",
- "cena",
- "cenaculum",
- "ceno",
- "censura",
- "centum",
- "cerno",
- "cernuus",
- "certe",
- "certo",
- "certus",
- "cervus",
- "cetera",
- "charisma",
- "chirographum",
- "cibo",
- "cibus",
- "cicuta",
- "cilicium",
- "cimentarius",
- "ciminatio",
- "cinis",
- "circumvenio",
- "cito",
- "civis",
- "civitas",
- "clam",
- "clamo",
- "claro",
- "clarus",
- "claudeo",
- "claustrum",
- "clementia",
- "clibanus",
- "coadunatio",
- "coaegresco",
- "coepi",
- "coerceo",
- "cogito",
- "cognatus",
- "cognomen",
- "cogo",
- "cohaero",
- "cohibeo",
- "cohors",
- "colligo",
- "colloco",
- "collum",
- "colo",
- "color",
- "coma",
- "combibo",
- "comburo",
- "comedo",
- "comes",
- "cometes",
- "comis",
- "comitatus",
- "commemoro",
- "comminor",
- "commodo",
- "communis",
- "comparo",
- "compello",
- "complectus",
- "compono",
- "comprehendo",
- "comptus",
- "conatus",
- "concedo",
- "concido",
- "conculco",
- "condico",
- "conduco",
- "confero",
- "confido",
- "conforto",
- "confugo",
- "congregatio",
- "conicio",
- "coniecto",
- "conitor",
- "coniuratio",
- "conor",
- "conqueror",
- "conscendo",
- "conservo",
- "considero",
- "conspergo",
- "constans",
- "consuasor",
- "contabesco",
- "contego",
- "contigo",
- "contra",
- "conturbo",
- "conventus",
- "convoco",
- "copia",
- "copiose",
- "cornu",
- "corona",
- "corpus",
- "correptius",
- "corrigo",
- "corroboro",
- "corrumpo",
- "coruscus",
- "cotidie",
- "crapula",
- "cras",
- "crastinus",
- "creator",
- "creber",
- "crebro",
- "credo",
- "creo",
- "creptio",
- "crepusculum",
- "cresco",
- "creta",
- "cribro",
- "crinis",
- "cruciamentum",
- "crudelis",
- "cruentus",
- "crur",
- "crustulum",
- "crux",
- "cubicularis",
- "cubitum",
- "cubo",
- "cui",
- "cuius",
- "culpa",
- "culpo",
- "cultellus",
- "cultura",
- "cum",
- "cunabula",
- "cunae",
- "cunctatio",
- "cupiditas",
- "cupio",
- "cuppedia",
- "cupressus",
- "cur",
- "cura",
- "curatio",
- "curia",
- "curiositas",
- "curis",
- "curo",
- "curriculum",
- "currus",
- "cursim",
- "curso",
- "cursus",
- "curto",
- "curtus",
- "curvo",
- "curvus",
- "custodia",
- "damnatio",
- "damno",
- "dapifer",
- "debeo",
- "debilito",
- "decens",
- "decerno",
- "decet",
- "decimus",
- "decipio",
- "decor",
- "decretum",
- "decumbo",
- "dedecor",
- "dedico",
- "deduco",
- "defaeco",
- "defendo",
- "defero",
- "defessus",
- "defetiscor",
- "deficio",
- "defigo",
- "defleo",
- "defluo",
- "defungo",
- "degenero",
- "degero",
- "degusto",
- "deinde",
- "delectatio",
- "delego",
- "deleo",
- "delibero",
- "delicate",
- "delinquo",
- "deludo",
- "demens",
- "demergo",
- "demitto",
- "demo",
- "demonstro",
- "demoror",
- "demulceo",
- "demum",
- "denego",
- "denique",
- "dens",
- "denuncio",
- "denuo",
- "deorsum",
- "depereo",
- "depono",
- "depopulo",
- "deporto",
- "depraedor",
- "deprecator",
- "deprimo",
- "depromo",
- "depulso",
- "deputo",
- "derelinquo",
- "derideo",
- "deripio",
- "desidero",
- "desino",
- "desipio",
- "desolo",
- "desparatus",
- "despecto",
- "despirmatio",
- "infit",
- "inflammatio",
- "paens",
- "patior",
- "patria",
- "patrocinor",
- "patruus",
- "pauci",
- "paulatim",
- "pauper",
- "pax",
- "peccatus",
- "pecco",
- "pecto",
- "pectus",
- "pecunia",
- "pecus",
- "peior",
- "pel",
- "ocer",
- "socius",
- "sodalitas",
- "sol",
- "soleo",
- "solio",
- "solitudo",
- "solium",
- "sollers",
- "sollicito",
- "solum",
- "solus",
- "solutio",
- "solvo",
- "somniculosus",
- "somnus",
- "sonitus",
- "sono",
- "sophismata",
- "sopor",
- "sordeo",
- "sortitus",
- "spargo",
- "speciosus",
- "spectaculum",
- "speculum",
- "sperno",
- "spero",
- "spes",
- "spiculum",
- "spiritus",
- "spoliatio",
- "sponte",
- "stabilis",
- "statim",
- "statua",
- "stella",
- "stillicidium",
- "stipes",
- "stips",
- "sto",
- "strenuus",
- "strues",
- "studio",
- "stultus",
- "suadeo",
- "suasoria",
- "sub",
- "subito",
- "subiungo",
- "sublime",
- "subnecto",
- "subseco",
- "substantia",
- "subvenio",
- "succedo",
- "succurro",
- "sufficio",
- "suffoco",
- "suffragium",
- "suggero",
- "sui",
- "sulum",
- "sum",
- "summa",
- "summisse",
- "summopere",
- "sumo",
- "sumptus",
- "supellex",
- "super",
- "suppellex",
- "supplanto",
- "suppono",
- "supra",
- "surculus",
- "surgo",
- "sursum",
- "suscipio",
- "suspendo",
- "sustineo",
- "suus",
- "synagoga",
- "tabella",
- "tabernus",
- "tabesco",
- "tabgo",
- "tabula",
- "taceo",
- "tactus",
- "taedium",
- "talio",
- "talis",
- "talus",
- "tam",
- "tamdiu",
- "tamen",
- "tametsi",
- "tamisium",
- "tamquam",
- "tandem",
- "tantillus",
- "tantum",
- "tardus",
- "tego",
- "temeritas",
- "temperantia",
- "templum",
- "temptatio",
- "tempus",
- "tenax",
- "tendo",
- "teneo",
- "tener",
- "tenuis",
- "tenus",
- "tepesco",
- "tepidus",
- "ter",
- "terebro",
- "teres",
- "terga",
- "tergeo",
- "tergiversatio",
- "tergo",
- "tergum",
- "termes",
- "terminatio",
- "tero",
- "terra",
- "terreo",
- "territo",
- "terror",
- "tersus",
- "tertius",
- "testimonium",
- "texo",
- "textilis",
- "textor",
- "textus",
- "thalassinus",
- "theatrum",
- "theca",
- "thema",
- "theologus",
- "thermae",
- "thesaurus",
- "thesis",
- "thorax",
- "thymbra",
- "thymum",
- "tibi",
- "timidus",
- "timor",
- "titulus",
- "tolero",
- "tollo",
- "tondeo",
- "tonsor",
- "torqueo",
- "torrens",
- "tot",
- "totidem",
- "toties",
- "totus",
- "tracto",
- "trado",
- "traho",
- "trans",
- "tredecim",
- "tremo",
- "trepide",
- "tres",
- "tribuo",
- "tricesimus",
- "triduana",
- "triginta",
- "tripudio",
- "tristis",
- "triumphus",
- "trucido",
- "truculenter",
- "tubineus",
- "tui",
- "tum",
- "tumultus",
- "tunc",
- "turba",
- "turbo",
- "turpe",
- "turpis",
- "tutamen",
- "tutis",
- "tyrannus",
- "uberrime",
- "ubi",
- "ulciscor",
- "ullus",
- "ulterius",
- "ultio",
- "ultra",
- "umbra",
- "umerus",
- "umquam",
- "una",
- "unde",
- "undique",
- "universe",
- "unus",
- "urbanus",
- "urbs",
- "uredo",
- "usitas",
- "usque",
- "ustilo",
- "ustulo",
- "usus",
- "uter",
- "uterque",
- "utilis",
- "utique",
- "utor",
- "utpote",
- "utrimque",
- "utroque",
- "utrum",
- "uxor",
- "vaco",
- "vacuus",
- "vado",
- "vae",
- "valde",
- "valens",
- "valeo",
- "valetudo",
- "validus",
- "vallum",
- "vapulus",
- "varietas",
- "varius",
- "vehemens",
- "vel",
- "velociter",
- "velum",
- "velut",
- "venia",
- "venio",
- "ventito",
- "ventosus",
- "ventus",
- "venustas",
- "ver",
- "verbera",
- "verbum",
- "vere",
- "verecundia",
- "vereor",
- "vergo",
- "veritas",
- "vero",
- "versus",
- "verto",
- "verumtamen",
- "verus",
- "vesco",
- "vesica",
- "vesper",
- "vespillo",
- "vester",
- "vestigium",
- "vestrum",
- "vetus",
- "via",
- "vicinus",
- "vicissitudo",
- "victoria",
- "victus",
- "videlicet",
- "video",
- "viduata",
- "viduo",
- "vigilo",
- "vigor",
- "vilicus",
- "vilis",
- "vilitas",
- "villa",
- "vinco",
- "vinculum",
- "vindico",
- "vinitor",
- "vinum",
- "vir",
- "virga",
- "virgo",
- "viridis",
- "viriliter",
- "virtus",
- "vis",
- "viscus",
- "vita",
- "vitiosus",
- "vitium",
- "vito",
- "vivo",
- "vix",
- "vobis",
- "vociferor",
- "voco",
- "volaticus",
- "volo",
- "volubilis",
- "voluntarius",
- "volup",
- "volutabrum",
- "volva",
- "vomer",
- "vomica",
- "vomito",
- "vorago",
- "vorax",
- "voro",
- "vos",
- "votum",
- "voveo",
- "vox",
- "vulariter",
- "vulgaris",
- "vulgivagus",
- "vulgo",
- "vulgus",
- "vulnero",
- "vulnus",
- "vulpes",
- "vulticulus",
- "vultuosus",
- "xiphias"
-];
diff --git a/lib/locales/pl/name/first_name.js b/lib/locales/pl/name/first_name.js
index f2a14cc4..0fbbf0c3 100644
--- a/lib/locales/pl/name/first_name.js
+++ b/lib/locales/pl/name/first_name.js
@@ -249,7 +249,6 @@ module["exports"] = [
"Angelina",
"Anna",
"Hanna",
- "—",
"Antonina",
"Ariadna",
"Aurora",
diff --git a/lib/locales/ru/hacker/abbreviation.js b/lib/locales/ru/hacker/abbreviation.js
new file mode 100644
index 00000000..05609fe9
--- /dev/null
+++ b/lib/locales/ru/hacker/abbreviation.js
@@ -0,0 +1,31 @@
+module["exports"] = [
+ "БИОС",
+ "Гб",
+ "ИИ",
+ "ОС",
+ "ОЗУ",
+ "ПО",
+ "СУБД",
+ "ХЗ",
+ "ЭВМ",
+ "HTTP",
+ "SDD",
+ "CSS",
+ "SSL",
+ "AGP",
+ "FTP",
+ "PCI",
+ "ADP",
+ "RSS",
+ "XML",
+ "EXE",
+ "COM",
+ "HDD",
+ "SMTP",
+ "SMS",
+ "USB",
+ "PNG",
+ "SAS",
+ "JSON",
+ "XSS"
+];
diff --git a/lib/locales/ru/hacker/adjective.js b/lib/locales/ru/hacker/adjective.js
index c3b16769..a179ef45 100644
--- a/lib/locales/ru/hacker/adjective.js
+++ b/lib/locales/ru/hacker/adjective.js
@@ -3,16 +3,15 @@ module["exports"] = [
"основной",
"внутренний",
"цифровой",
- "open-source",
+ "свободно-распростроняемый",
"виртуальный",
"кросс-платформенный",
"излишний",
"онлайн",
"сенсорный",
"многобайтный",
- "bluetooth",
"беспроводной",
- "1080p",
+ "1080-пиксельный",
"нейронный",
"оптический",
"твердотельный",
diff --git a/lib/locales/ru/hacker/index.js b/lib/locales/ru/hacker/index.js
index bae5ec9f..91673a19 100644
--- a/lib/locales/ru/hacker/index.js
+++ b/lib/locales/ru/hacker/index.js
@@ -1,6 +1,8 @@
var hacker = {};
module['exports'] = hacker;
+hacker.abbreviation = require("./abbreviation");
hacker.adjective = require("./adjective");
hacker.noun = require("./noun");
hacker.verb = require("./verb");
hacker.ingverb = require("./ingverb");
+hacker.phrase = require("./phrase");
diff --git a/lib/locales/ru/hacker/noun.js b/lib/locales/ru/hacker/noun.js
index 89312370..ca899b35 100644
--- a/lib/locales/ru/hacker/noun.js
+++ b/lib/locales/ru/hacker/noun.js
@@ -1,26 +1,26 @@
module["exports"] = [
"драйвер",
"протокол",
- "пропускная способность",
- "панель",
+ "ограничитель",
+ "интерфейс",
"микрочип",
- "программа",
+ "код",
"порт",
- "карта",
+ "ключ",
"массив",
"интерфейс",
- "система",
+ "объект",
"сенсор",
"брандмауэр",
- "жесткий диск",
+ "винчестер",
"пиксель",
- "тревога",
- "устройство подачи",
+ "механизм сигнализации",
+ "поглотитель",
"монитор",
- "приложение",
+ "продукт",
"передатчик",
- "материнская плата",
- "схема",
+ "блок разведения",
+ "канал",
"конденсатор",
- "матрица"
+ "оператор"
];
diff --git a/lib/locales/ru/hacker/phrase.js b/lib/locales/ru/hacker/phrase.js
new file mode 100644
index 00000000..e49365ce
--- /dev/null
+++ b/lib/locales/ru/hacker/phrase.js
@@ -0,0 +1,10 @@
+module["exports"] = [
+ "Чтобы {{verb}} {{noun}}, мы можем получить {{abbreviation}} {{noun}} через {{adjective}} {{abbreviation}} {{noun}}!",
+ "Необходимо {{verb}} {{adjective}} {{abbreviation}} {{noun}}!",
+ "Попробуйте {{verb}} {{abbreviation}} {{noun}}, возможно это позволит {{verb}} {{adjective}} {{noun}}!",
+ "Вы не можете {{verb}} {{noun}}, требуется {{ingverb}} или {{ingverb}}!",
+ "Используйте {{adjective}} {{abbreviation}} {{noun}}, для того чтобы {{verb}} {{adjective}} {{noun}}!",
+ "{{abbreviation}} {{noun}} недоступен, требуется {{verb}} {{adjective}} {{noun}}, чтобы мы могли {{verb}} {{abbreviation}} {{noun}}!",
+ "{{ingverb}} не работает, попробуйте {{verb}} {{adjective}} {{abbreviation}} {{noun}}!",
+ "Я планирую {{verb}} {{adjective}} {{abbreviation}} {{noun}}, это должно помочь {{verb}} {{abbreviation}} {{noun}}!"
+]; \ No newline at end of file
diff --git a/lib/locales/ru/hacker/verb.js b/lib/locales/ru/hacker/verb.js
index 37e161b4..86606699 100644
--- a/lib/locales/ru/hacker/verb.js
+++ b/lib/locales/ru/hacker/verb.js
@@ -1,20 +1,20 @@
module["exports"] = [
- "осуществлять резервное копирование",
- "обходить",
+ "сохранить",
+ "обойти",
"взломать",
"переопределить",
- "сжимать",
+ "сжать",
"копировать",
- "осуществлять навигацию",
+ "навигировать",
"индексировать",
- "соединять",
+ "соединить",
"генерировать",
- "определять количество",
- "вычислять",
+ "квантифицировать",
+ "вычислить",
"синтезировать",
- "вводить",
- "передавать",
- "программировать",
- "перезагружать",
- "разбирать"
+ "ввести",
+ "передать",
+ "запрограммировать",
+ "перезагрузить",
+ "разобрать"
];
diff --git a/lib/locales/sk/lorem/index.js b/lib/locales/sk/lorem/index.js
index feb6eff8..a53a23d0 100644
--- a/lib/locales/sk/lorem/index.js
+++ b/lib/locales/sk/lorem/index.js
@@ -1,4 +1,3 @@
var lorem = {};
module['exports'] = lorem;
lorem.words = require("./words");
-lorem.supplemental = require("./supplemental");
diff --git a/lib/locales/sk/lorem/supplemental.js b/lib/locales/sk/lorem/supplemental.js
deleted file mode 100644
index 8fdc2c3e..00000000
--- a/lib/locales/sk/lorem/supplemental.js
+++ /dev/null
@@ -1,842 +0,0 @@
-module["exports"] = [
- "abbas",
- "abduco",
- "abeo",
- "abscido",
- "absconditus",
- "absens",
- "absorbeo",
- "absque",
- "abstergo",
- "absum",
- "abundans",
- "abutor",
- "accedo",
- "accendo",
- "acceptus",
- "accipio",
- "accommodo",
- "accusator",
- "acer",
- "acerbitas",
- "acervus",
- "acidus",
- "acies",
- "acquiro",
- "acsi",
- "adamo",
- "adaugeo",
- "addo",
- "adduco",
- "ademptio",
- "adeo",
- "adeptio",
- "adfectus",
- "adfero",
- "adficio",
- "adflicto",
- "adhaero",
- "adhuc",
- "adicio",
- "adimpleo",
- "adinventitias",
- "adipiscor",
- "adiuvo",
- "administratio",
- "admiratio",
- "admitto",
- "admoneo",
- "admoveo",
- "adnuo",
- "adopto",
- "adsidue",
- "adstringo",
- "adsuesco",
- "adsum",
- "adulatio",
- "adulescens",
- "adultus",
- "aduro",
- "advenio",
- "adversus",
- "advoco",
- "aedificium",
- "aeger",
- "aegre",
- "aegrotatio",
- "aegrus",
- "aeneus",
- "aequitas",
- "aequus",
- "aer",
- "aestas",
- "aestivus",
- "aestus",
- "aetas",
- "aeternus",
- "ager",
- "aggero",
- "aggredior",
- "agnitio",
- "agnosco",
- "ago",
- "ait",
- "aiunt",
- "alienus",
- "alii",
- "alioqui",
- "aliqua",
- "alius",
- "allatus",
- "alo",
- "alter",
- "altus",
- "alveus",
- "amaritudo",
- "ambitus",
- "ambulo",
- "amicitia",
- "amiculum",
- "amissio",
- "amita",
- "amitto",
- "amo",
- "amor",
- "amoveo",
- "amplexus",
- "amplitudo",
- "amplus",
- "ancilla",
- "angelus",
- "angulus",
- "angustus",
- "animadverto",
- "animi",
- "animus",
- "annus",
- "anser",
- "ante",
- "antea",
- "antepono",
- "antiquus",
- "aperio",
- "aperte",
- "apostolus",
- "apparatus",
- "appello",
- "appono",
- "appositus",
- "approbo",
- "apto",
- "aptus",
- "apud",
- "aqua",
- "ara",
- "aranea",
- "arbitro",
- "arbor",
- "arbustum",
- "arca",
- "arceo",
- "arcesso",
- "arcus",
- "argentum",
- "argumentum",
- "arguo",
- "arma",
- "armarium",
- "armo",
- "aro",
- "ars",
- "articulus",
- "artificiose",
- "arto",
- "arx",
- "ascisco",
- "ascit",
- "asper",
- "aspicio",
- "asporto",
- "assentator",
- "astrum",
- "atavus",
- "ater",
- "atqui",
- "atrocitas",
- "atrox",
- "attero",
- "attollo",
- "attonbitus",
- "auctor",
- "auctus",
- "audacia",
- "audax",
- "audentia",
- "audeo",
- "audio",
- "auditor",
- "aufero",
- "aureus",
- "auris",
- "aurum",
- "aut",
- "autem",
- "autus",
- "auxilium",
- "avaritia",
- "avarus",
- "aveho",
- "averto",
- "avoco",
- "baiulus",
- "balbus",
- "barba",
- "bardus",
- "basium",
- "beatus",
- "bellicus",
- "bellum",
- "bene",
- "beneficium",
- "benevolentia",
- "benigne",
- "bestia",
- "bibo",
- "bis",
- "blandior",
- "bonus",
- "bos",
- "brevis",
- "cado",
- "caecus",
- "caelestis",
- "caelum",
- "calamitas",
- "calcar",
- "calco",
- "calculus",
- "callide",
- "campana",
- "candidus",
- "canis",
- "canonicus",
- "canto",
- "capillus",
- "capio",
- "capitulus",
- "capto",
- "caput",
- "carbo",
- "carcer",
- "careo",
- "caries",
- "cariosus",
- "caritas",
- "carmen",
- "carpo",
- "carus",
- "casso",
- "caste",
- "casus",
- "catena",
- "caterva",
- "cattus",
- "cauda",
- "causa",
- "caute",
- "caveo",
- "cavus",
- "cedo",
- "celebrer",
- "celer",
- "celo",
- "cena",
- "cenaculum",
- "ceno",
- "censura",
- "centum",
- "cerno",
- "cernuus",
- "certe",
- "certo",
- "certus",
- "cervus",
- "cetera",
- "charisma",
- "chirographum",
- "cibo",
- "cibus",
- "cicuta",
- "cilicium",
- "cimentarius",
- "ciminatio",
- "cinis",
- "circumvenio",
- "cito",
- "civis",
- "civitas",
- "clam",
- "clamo",
- "claro",
- "clarus",
- "claudeo",
- "claustrum",
- "clementia",
- "clibanus",
- "coadunatio",
- "coaegresco",
- "coepi",
- "coerceo",
- "cogito",
- "cognatus",
- "cognomen",
- "cogo",
- "cohaero",
- "cohibeo",
- "cohors",
- "colligo",
- "colloco",
- "collum",
- "colo",
- "color",
- "coma",
- "combibo",
- "comburo",
- "comedo",
- "comes",
- "cometes",
- "comis",
- "comitatus",
- "commemoro",
- "comminor",
- "commodo",
- "communis",
- "comparo",
- "compello",
- "complectus",
- "compono",
- "comprehendo",
- "comptus",
- "conatus",
- "concedo",
- "concido",
- "conculco",
- "condico",
- "conduco",
- "confero",
- "confido",
- "conforto",
- "confugo",
- "congregatio",
- "conicio",
- "coniecto",
- "conitor",
- "coniuratio",
- "conor",
- "conqueror",
- "conscendo",
- "conservo",
- "considero",
- "conspergo",
- "constans",
- "consuasor",
- "contabesco",
- "contego",
- "contigo",
- "contra",
- "conturbo",
- "conventus",
- "convoco",
- "copia",
- "copiose",
- "cornu",
- "corona",
- "corpus",
- "correptius",
- "corrigo",
- "corroboro",
- "corrumpo",
- "coruscus",
- "cotidie",
- "crapula",
- "cras",
- "crastinus",
- "creator",
- "creber",
- "crebro",
- "credo",
- "creo",
- "creptio",
- "crepusculum",
- "cresco",
- "creta",
- "cribro",
- "crinis",
- "cruciamentum",
- "crudelis",
- "cruentus",
- "crur",
- "crustulum",
- "crux",
- "cubicularis",
- "cubitum",
- "cubo",
- "cui",
- "cuius",
- "culpa",
- "culpo",
- "cultellus",
- "cultura",
- "cum",
- "cunabula",
- "cunae",
- "cunctatio",
- "cupiditas",
- "cupio",
- "cuppedia",
- "cupressus",
- "cur",
- "cura",
- "curatio",
- "curia",
- "curiositas",
- "curis",
- "curo",
- "curriculum",
- "currus",
- "cursim",
- "curso",
- "cursus",
- "curto",
- "curtus",
- "curvo",
- "curvus",
- "custodia",
- "damnatio",
- "damno",
- "dapifer",
- "debeo",
- "debilito",
- "decens",
- "decerno",
- "decet",
- "decimus",
- "decipio",
- "decor",
- "decretum",
- "decumbo",
- "dedecor",
- "dedico",
- "deduco",
- "defaeco",
- "defendo",
- "defero",
- "defessus",
- "defetiscor",
- "deficio",
- "defigo",
- "defleo",
- "defluo",
- "defungo",
- "degenero",
- "degero",
- "degusto",
- "deinde",
- "delectatio",
- "delego",
- "deleo",
- "delibero",
- "delicate",
- "delinquo",
- "deludo",
- "demens",
- "demergo",
- "demitto",
- "demo",
- "demonstro",
- "demoror",
- "demulceo",
- "demum",
- "denego",
- "denique",
- "dens",
- "denuncio",
- "denuo",
- "deorsum",
- "depereo",
- "depono",
- "depopulo",
- "deporto",
- "depraedor",
- "deprecator",
- "deprimo",
- "depromo",
- "depulso",
- "deputo",
- "derelinquo",
- "derideo",
- "deripio",
- "desidero",
- "desino",
- "desipio",
- "desolo",
- "desparatus",
- "despecto",
- "despirmatio",
- "infit",
- "inflammatio",
- "paens",
- "patior",
- "patria",
- "patrocinor",
- "patruus",
- "pauci",
- "paulatim",
- "pauper",
- "pax",
- "peccatus",
- "pecco",
- "pecto",
- "pectus",
- "pecunia",
- "pecus",
- "peior",
- "pel",
- "ocer",
- "socius",
- "sodalitas",
- "sol",
- "soleo",
- "solio",
- "solitudo",
- "solium",
- "sollers",
- "sollicito",
- "solum",
- "solus",
- "solutio",
- "solvo",
- "somniculosus",
- "somnus",
- "sonitus",
- "sono",
- "sophismata",
- "sopor",
- "sordeo",
- "sortitus",
- "spargo",
- "speciosus",
- "spectaculum",
- "speculum",
- "sperno",
- "spero",
- "spes",
- "spiculum",
- "spiritus",
- "spoliatio",
- "sponte",
- "stabilis",
- "statim",
- "statua",
- "stella",
- "stillicidium",
- "stipes",
- "stips",
- "sto",
- "strenuus",
- "strues",
- "studio",
- "stultus",
- "suadeo",
- "suasoria",
- "sub",
- "subito",
- "subiungo",
- "sublime",
- "subnecto",
- "subseco",
- "substantia",
- "subvenio",
- "succedo",
- "succurro",
- "sufficio",
- "suffoco",
- "suffragium",
- "suggero",
- "sui",
- "sulum",
- "sum",
- "summa",
- "summisse",
- "summopere",
- "sumo",
- "sumptus",
- "supellex",
- "super",
- "suppellex",
- "supplanto",
- "suppono",
- "supra",
- "surculus",
- "surgo",
- "sursum",
- "suscipio",
- "suspendo",
- "sustineo",
- "suus",
- "synagoga",
- "tabella",
- "tabernus",
- "tabesco",
- "tabgo",
- "tabula",
- "taceo",
- "tactus",
- "taedium",
- "talio",
- "talis",
- "talus",
- "tam",
- "tamdiu",
- "tamen",
- "tametsi",
- "tamisium",
- "tamquam",
- "tandem",
- "tantillus",
- "tantum",
- "tardus",
- "tego",
- "temeritas",
- "temperantia",
- "templum",
- "temptatio",
- "tempus",
- "tenax",
- "tendo",
- "teneo",
- "tener",
- "tenuis",
- "tenus",
- "tepesco",
- "tepidus",
- "ter",
- "terebro",
- "teres",
- "terga",
- "tergeo",
- "tergiversatio",
- "tergo",
- "tergum",
- "termes",
- "terminatio",
- "tero",
- "terra",
- "terreo",
- "territo",
- "terror",
- "tersus",
- "tertius",
- "testimonium",
- "texo",
- "textilis",
- "textor",
- "textus",
- "thalassinus",
- "theatrum",
- "theca",
- "thema",
- "theologus",
- "thermae",
- "thesaurus",
- "thesis",
- "thorax",
- "thymbra",
- "thymum",
- "tibi",
- "timidus",
- "timor",
- "titulus",
- "tolero",
- "tollo",
- "tondeo",
- "tonsor",
- "torqueo",
- "torrens",
- "tot",
- "totidem",
- "toties",
- "totus",
- "tracto",
- "trado",
- "traho",
- "trans",
- "tredecim",
- "tremo",
- "trepide",
- "tres",
- "tribuo",
- "tricesimus",
- "triduana",
- "triginta",
- "tripudio",
- "tristis",
- "triumphus",
- "trucido",
- "truculenter",
- "tubineus",
- "tui",
- "tum",
- "tumultus",
- "tunc",
- "turba",
- "turbo",
- "turpe",
- "turpis",
- "tutamen",
- "tutis",
- "tyrannus",
- "uberrime",
- "ubi",
- "ulciscor",
- "ullus",
- "ulterius",
- "ultio",
- "ultra",
- "umbra",
- "umerus",
- "umquam",
- "una",
- "unde",
- "undique",
- "universe",
- "unus",
- "urbanus",
- "urbs",
- "uredo",
- "usitas",
- "usque",
- "ustilo",
- "ustulo",
- "usus",
- "uter",
- "uterque",
- "utilis",
- "utique",
- "utor",
- "utpote",
- "utrimque",
- "utroque",
- "utrum",
- "uxor",
- "vaco",
- "vacuus",
- "vado",
- "vae",
- "valde",
- "valens",
- "valeo",
- "valetudo",
- "validus",
- "vallum",
- "vapulus",
- "varietas",
- "varius",
- "vehemens",
- "vel",
- "velociter",
- "velum",
- "velut",
- "venia",
- "venio",
- "ventito",
- "ventosus",
- "ventus",
- "venustas",
- "ver",
- "verbera",
- "verbum",
- "vere",
- "verecundia",
- "vereor",
- "vergo",
- "veritas",
- "vero",
- "versus",
- "verto",
- "verumtamen",
- "verus",
- "vesco",
- "vesica",
- "vesper",
- "vespillo",
- "vester",
- "vestigium",
- "vestrum",
- "vetus",
- "via",
- "vicinus",
- "vicissitudo",
- "victoria",
- "victus",
- "videlicet",
- "video",
- "viduata",
- "viduo",
- "vigilo",
- "vigor",
- "vilicus",
- "vilis",
- "vilitas",
- "villa",
- "vinco",
- "vinculum",
- "vindico",
- "vinitor",
- "vinum",
- "vir",
- "virga",
- "virgo",
- "viridis",
- "viriliter",
- "virtus",
- "vis",
- "viscus",
- "vita",
- "vitiosus",
- "vitium",
- "vito",
- "vivo",
- "vix",
- "vobis",
- "vociferor",
- "voco",
- "volaticus",
- "volo",
- "volubilis",
- "voluntarius",
- "volup",
- "volutabrum",
- "volva",
- "vomer",
- "vomica",
- "vomito",
- "vorago",
- "vorax",
- "voro",
- "vos",
- "votum",
- "voveo",
- "vox",
- "vulariter",
- "vulgaris",
- "vulgivagus",
- "vulgo",
- "vulgus",
- "vulnero",
- "vulnus",
- "vulpes",
- "vulticulus",
- "vultuosus",
- "xiphias"
-];
diff --git a/lib/name.js b/lib/name.js
index ae02e867..1d2bf5e6 100644
--- a/lib/name.js
+++ b/lib/name.js
@@ -96,6 +96,16 @@ function Name (faker) {
faker.name.jobArea() + " " +
faker.name.jobType();
};
+
+ /**
+ * gender
+ *
+ * @method gender
+ * @memberof faker.name
+ */
+ this.gender = function () {
+ return faker.random.arrayElement(faker.definitions.name.gender);
+ }
/**
* prefix
diff --git a/lib/random.js b/lib/random.js
index 17b74f64..8dccf376 100644
--- a/lib/random.js
+++ b/lib/random.js
@@ -69,6 +69,34 @@ function Random (faker, seed) {
}
/**
+ * takes an array and returns a subset with random elements of the array
+ *
+ * @method faker.random.arrayElements
+ * @param {array} array
+ * @param {number} count number of elements to pick
+ */
+ this.arrayElements = function (array, count) {
+ array = array || ["a", "b", "c"];
+
+ if (typeof count !== 'number') {
+ count = faker.random.number({ min: 1, max: array.length });
+ } else if (count > array.length) {
+ count = array.length;
+ } else if (count < 0) {
+ count = 0;
+ }
+
+ var arrayCopy = array.slice();
+ var countToRemove = arrayCopy.length - count;
+ for (var i = 0; i < countToRemove; i++) {
+ var indexToRemove = faker.random.number({ max: arrayCopy.length - 1 });
+ arrayCopy.splice(indexToRemove, 1);
+ }
+
+ return arrayCopy;
+ }
+
+ /**
* takes an object and returns the randomly key or value
*
* @method faker.random.objectElement
@@ -210,6 +238,25 @@ function Random (faker, seed) {
return wholeString;
};
+ /**
+ * hexaDecimal
+ *
+ * @method faker.random.hexaDecimal
+ * @param {number} count defaults to 1
+ */
+ this.hexaDecimal = function hexaDecimal(count) {
+ if (typeof count === "undefined") {
+ count = 1;
+ }
+
+ var wholeString = "";
+ for(var i = 0; i < count; i++) {
+ wholeString += faker.random.arrayElement(["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "A", "B", "C", "D", "E", "F"]);
+ }
+
+ return "0x"+wholeString;
+ };
+
return this;
}
diff --git a/lib/system.js b/lib/system.js
index 9ef713c8..1bfe1bfb 100644
--- a/lib/system.js
+++ b/lib/system.js
@@ -127,21 +127,22 @@ function System (faker) {
};
/**
- * not yet implemented
+ * returns directory path
*
* @method faker.system.directoryPath
*/
this.directoryPath = function () {
- // TODO
+ var paths = faker.definitions.system.directoryPaths
+ return faker.random.arrayElement(paths);
};
/**
- * not yet implemented
+ * returns file path
*
* @method faker.system.filePath
*/
this.filePath = function () {
- // TODO
+ return faker.fake("{{system.directoryPath}}/{{system.fileName}}");
};
/**
diff --git a/lib/unique.js b/lib/unique.js
new file mode 100644
index 00000000..4422a942
--- /dev/null
+++ b/lib/unique.js
@@ -0,0 +1,16 @@
+var uniqueExec = require('../vendor/unique');
+/**
+ *
+ * @namespace faker.unique
+ */
+function Unique (faker) {
+
+ /**
+ * unique
+ *
+ * @method unique
+ */
+ this.unique = uniqueExec.exec;
+}
+
+module['exports'] = Unique;
diff --git a/package.json b/package.json
index eb392c10..47bd0cfe 100644
--- a/package.json
+++ b/package.json
@@ -13,10 +13,37 @@
"lint": "node_modules/.bin/jshint ./lib --config ./.jshintrc",
"test": "node_modules/.bin/mocha test/*.*.js",
"build": "cd build && ../node_modules/.bin/gulp && cd ../",
- "doc": "jsdoc -c conf.json -t ./node_modules/ink-docstrap/template -R README.md lib"
+ "doc": "jsdoc -c conf.json -t ./node_modules/ink-docstrap/template -R README.md lib",
+ "coverage": "nyc report --reporter=text-lcov | coveralls"
+ },
+ "nyc": {
+ "all": false,
+ "include": [
+ "lib/**/*.js",
+ "vendor/*.js"
+ ],
+ "exclude": [
+ "coverage",
+ "locales",
+ "modules",
+ "white",
+ "docs",
+ "docker",
+ "public",
+ "reports",
+ "tests",
+ "node_modules"
+ ],
+ "reporter": [
+ "html",
+ "lcov",
+ "clover"
+ ],
+ "report-dir": "./reports/coverage"
},
"devDependencies": {
"browserify": "5.11.1",
+ "coveralls": "^2.13.1",
"gulp": "^3.9.1",
"gulp-gh-pages": "^0.5.4",
"gulp-jsdoc3": "^0.2.1",
diff --git a/test/address.unit.js b/test/address.unit.js
index b5df1d24..5aba2c36 100644
--- a/test/address.unit.js
+++ b/test/address.unit.js
@@ -265,6 +265,19 @@ describe("address.js", function () {
faker.random.number.restore();
}
});
+
+ it("returns latitude with min and max", function () {
+ for (var i = 0; i < 100; i++) {
+ sinon.spy(faker.random, 'number');
+ var latitude = faker.address.latitude(-5, 5);
+ assert.ok(typeof latitude === 'string');
+ var latitude_float = parseFloat(latitude);
+ assert.ok(latitude_float >= -5);
+ assert.ok(latitude_float <= 5);
+ assert.ok(faker.random.number.called);
+ faker.random.number.restore();
+ }
+ });
});
describe("longitude()", function () {
@@ -280,6 +293,19 @@ describe("address.js", function () {
faker.random.number.restore();
}
});
+
+ it("returns random longitude with min and max", function () {
+ for (var i = 0; i < 100; i++) {
+ sinon.spy(faker.random, 'number');
+ var longitude = faker.address.longitude(100, -30);
+ assert.ok(typeof longitude === 'string');
+ var longitude_float = parseFloat(longitude);
+ assert.ok(longitude_float >= -30);
+ assert.ok(longitude_float <= 100);
+ assert.ok(faker.random.number.called);
+ faker.random.number.restore();
+ }
+ });
});
});
diff --git a/test/commerce.unit.js b/test/commerce.unit.js
index 1b5c5bdd..a0336c47 100644
--- a/test/commerce.unit.js
+++ b/test/commerce.unit.js
@@ -129,4 +129,4 @@ describe("commerce.js", function() {
});
-}); \ No newline at end of file
+});
diff --git a/test/date.unit.js b/test/date.unit.js
index ffbc3201..bd283d07 100644
--- a/test/date.unit.js
+++ b/test/date.unit.js
@@ -67,6 +67,16 @@ describe("date.js", function () {
});
+ describe("soon()", function () {
+ it("returns a date N days into the future", function () {
+
+ var date = faker.date.soon(30);
+
+ assert.ok(date >= new Date());
+ });
+
+ });
+
describe("between()", function () {
it("returns a random date between the dates given", function () {
diff --git a/test/finance.unit.js b/test/finance.unit.js
index 3593ce72..a879d584 100644
--- a/test/finance.unit.js
+++ b/test/finance.unit.js
@@ -222,11 +222,91 @@ describe('finance.js', function () {
describe("bitcoinAddress()", function(){
it("returns a random bitcoin address", function(){
var bitcoinAddress = faker.finance.bitcoinAddress();
-
+
assert.ok(bitcoinAddress.match(/^[A-Z0-9.]{27,34}$/));
});
});
+ describe("ethereumAddress()", function(){
+ it("returns a random ethereum address", function(){
+ var ethereumAddress = faker.finance.ethereumAddress();
+ assert.ok(ethereumAddress.match(/^(0x)[0-9a-f]{40}$/i));
+ });
+ });
+
+ describe("creditCardNumber()", function(){
+ var luhnFormula = require("./support/luhnCheck.js");
+
+ it("returns a random credit card number", function(){
+ var number = faker.finance.creditCardNumber();
+ number = number.replace(/\D/g,""); // remove formating
+ console.log("version:", process.version, number, number.length);
+ assert.ok(number.length >= 13 && number.length <= 20);
+ assert.ok(number.match(/^[0-9]{13,20}$/));
+ assert.ok(luhnFormula(number));
+ });
+
+ it("returns a valid credit card number", function(){
+ assert.ok(luhnFormula(faker.finance.creditCardNumber("")));
+ assert.ok(luhnFormula(faker.finance.creditCardNumber()));
+ assert.ok(luhnFormula(faker.finance.creditCardNumber()));
+ assert.ok(luhnFormula(faker.finance.creditCardNumber("visa")));
+ assert.ok(luhnFormula(faker.finance.creditCardNumber("mastercard")));
+ assert.ok(luhnFormula(faker.finance.creditCardNumber("discover")));
+ assert.ok(luhnFormula(faker.finance.creditCardNumber()));
+ assert.ok(luhnFormula(faker.finance.creditCardNumber()));
+ });
+ it("returns a correct credit card number when issuer provided", function(){
+ //TODO: implement checks for each format with regexp
+ var visa = faker.finance.creditCardNumber("visa");
+ assert.ok(visa.match(/^4(([0-9]){12}|([0-9]){3}(\-([0-9]){4}){3})$/));
+ assert.ok(luhnFormula(visa));
+
+
+ var mastercard = faker.finance.creditCardNumber("mastercard");
+ assert.ok(mastercard.match(/^(5[1-5]\d{2}|6771)(\-\d{4}){3}$/));
+ assert.ok(luhnFormula(mastercard));
+
+ var discover = faker.finance.creditCardNumber("discover");
+
+ assert.ok(luhnFormula(discover));
+
+ var american_express = faker.finance.creditCardNumber("american_express");
+ assert.ok(luhnFormula(american_express));
+ var diners_club = faker.finance.creditCardNumber("diners_club");
+ assert.ok(luhnFormula(diners_club));
+ var jcb = faker.finance.creditCardNumber("jcb");
+ assert.ok(luhnFormula(jcb));
+ var switchC = faker.finance.creditCardNumber("mastercard");
+ assert.ok(luhnFormula(switchC));
+ var solo = faker.finance.creditCardNumber("solo");
+ assert.ok(luhnFormula(solo));
+ var maestro = faker.finance.creditCardNumber("maestro");
+ assert.ok(luhnFormula(maestro));
+ var laser = faker.finance.creditCardNumber("laser");
+ assert.ok(luhnFormula(laser));
+ var instapayment = faker.finance.creditCardNumber("instapayment");
+ assert.ok(luhnFormula(instapayment));
+ });
+ it("returns custom formated strings",function(){
+ var number = faker.finance.creditCardNumber("###-###-##L");
+ assert.ok(number.match(/^\d{3}\-\d{3}\-\d{3}$/));
+ assert.ok(luhnFormula(number));
+ number =faker.finance.creditCardNumber("234[5-9]#{999}L");
+ assert.ok(number.match(/^234[5-9]\d{1000}$/));
+ assert.ok(luhnFormula(number));
+ });
+ });
+
+ describe("creditCardCVV()", function(){
+ it("returns a random credit card CVV", function(){
+ var cvv = faker.finance.creditCardCVV();
+ assert.ok(cvv.length === 3);
+ assert.ok(cvv.match(/^[0-9]{3}$/));
+ });
+ });
+
+
describe("iban()", function () {
var ibanLib = require('../lib/iban');
it("returns a random yet formally correct IBAN number", function () {
@@ -246,4 +326,4 @@ describe('finance.js', function () {
assert.ok(bic.match(expr));
});
});
-}); \ No newline at end of file
+});
diff --git a/test/helpers.unit.js b/test/helpers.unit.js
index 707575ff..b9d559dd 100644
--- a/test/helpers.unit.js
+++ b/test/helpers.unit.js
@@ -21,6 +21,15 @@ describe("helpers.js", function () {
});
});
+ describe("replaceSymbols()", function () {
+ context("when '*' passed", function () {
+ it("replaces it with alphanumeric", function(){
+ var num = faker.helpers.replaceSymbols('*AB');
+ assert.ok(num.match(/\wAB/));
+ });
+ });
+ });
+
describe("shuffle()", function () {
it("the output is the same length as the input", function () {
sinon.spy(faker.random, 'number');
@@ -67,6 +76,57 @@ describe("helpers.js", function () {
});
});
+ describe("replaceCreditCardSymbols()", function () {
+ var luhnCheck = require("./support/luhnCheck.js");
+ it("returns a credit card number given a schema", function () {
+ var number = faker.helpers.replaceCreditCardSymbols("6453-####-####-####-###L");
+ assert.ok(number.match(/^6453\-([0-9]){4}\-([0-9]){4}\-([0-9]){4}\-([0-9]){4}$/));
+ assert.ok(luhnCheck(number));
+ });
+ it("supports different symbols", function () {
+ var number = faker.helpers.replaceCreditCardSymbols("6453-****-****-****-***L","*");
+ assert.ok(number.match(/^6453\-([0-9]){4}\-([0-9]){4}\-([0-9]){4}\-([0-9]){4}$/));
+ assert.ok(luhnCheck(number));
+ });
+ it("handles regexp style input", function () {
+ var number = faker.helpers.replaceCreditCardSymbols("6453-*{4}-*{4}-*{4}-*{3}L","*");
+ assert.ok(number.match(/^6453\-([0-9]){4}\-([0-9]){4}\-([0-9]){4}\-([0-9]){4}$/));
+ assert.ok(luhnCheck(number));
+ number = faker.helpers.replaceCreditCardSymbols("645[5-9]-#{4,6}-#{1,2}-#{4,6}-#{3}L");
+ assert.ok(number.match(/^645[5-9]\-([0-9]){4,6}\-([0-9]){1,2}\-([0-9]){4,6}\-([0-9]){4}$/));
+ assert.ok(luhnCheck(number));
+ });
+ });
+
+ describe("regexpStyleStringParse()", function () {
+ it("returns an empty string when called without param", function () {
+ assert.ok(faker.helpers.regexpStyleStringParse() === "");
+ });
+ it("deals with range repeat", function () {
+ var string = faker.helpers.regexpStyleStringParse("#{5,10}");
+ assert.ok(string.length <= 10 && string.length >= 5);
+ assert.ok(string.match(/^\#{5,10}$/));
+ });
+ it("flips the range when min > max", function () {
+ var string = faker.helpers.regexpStyleStringParse("#{10,5}");
+ assert.ok(string.length <= 10 && string.length >= 5);
+ assert.ok(string.match(/^\#{5,10}$/));
+ });
+ it("repeats string {n} number of times", function () {
+ assert.ok(faker.helpers.regexpStyleStringParse("%{10}") === faker.helpers.repeatString("%",10));
+ assert.ok(faker.helpers.regexpStyleStringParse("%{30}") === faker.helpers.repeatString("%",30));
+ assert.ok(faker.helpers.regexpStyleStringParse("%{5}") === faker.helpers.repeatString("%",5));
+ });
+ it("creates a numerical range", function () {
+ var string = faker.helpers.regexpStyleStringParse("Hello[0-9]");
+ assert.ok(string.match(/^Hello[0-9]$/));
+ });
+ it("deals with multiple tokens in one string", function () {
+ var string = faker.helpers.regexpStyleStringParse("Test#{5}%{2,5}Testing**[1-5]**{10}END");
+ assert.ok(string.match(/^Test\#{5}%{2,5}Testing\*\*[1-5]\*\*{10}END$/));
+ });
+ });
+
describe("createTransaction()", function() {
it("should create a random transaction", function() {
var transaction = faker.helpers.createTransaction();
diff --git a/test/locales.unit.js b/test/locales.unit.js
index 0b2d4175..932369f4 100644
--- a/test/locales.unit.js
+++ b/test/locales.unit.js
@@ -6,4 +6,15 @@ if (typeof module !== 'undefined') {
// TODO: make some tests for getting / setting locales
-// Remark: actual use of locales functionality is currently tested in all.functional.js test \ No newline at end of file
+// Remark: actual use of locales functionality is currently tested in all.functional.js test
+
+describe("locale", function () {
+ describe("setLocale()", function () {
+ it("setLocale() changes faker.locale", function () {
+ for(var locale in faker.locales) {
+ faker.setLocale(locale)
+ assert.equal(faker.locale, locale);
+ }
+ });
+ });
+});
diff --git a/test/phone_number.unit.js b/test/phone_number.unit.js
index b49ad9cf..442a602a 100644
--- a/test/phone_number.unit.js
+++ b/test/phone_number.unit.js
@@ -18,14 +18,31 @@ describe("phone_number.js", function () {
});
describe("phoneNumberFormat()", function () {
- faker.locale = "en";
it("returns phone number with requested format (Array index)", function () {
+ faker.locale = "en";
for (var i = 0; i < 10; i++) {
var phone_number = faker.phone.phoneNumberFormat(1);
assert.ok(phone_number.match(/\(\d\d\d\) \d\d\d-\d\d\d\d/));
}
});
- });
+ it("returns phone number with proper format US (Array index)", function () {
+ faker.locale = "en";
+ for (var i = 0; i < 25; i++) {
+ var phone_number = faker.phone.phoneNumberFormat(1);
+ console.log(phone_number)
+ assert.ok(phone_number.match(/\([2-9]\d\d\) [2-9]\d\d-\d\d\d\d/));
+ }
+ });
+
+ it("returns phone number with proper format CA (Array index)", function () {
+ faker.locale = "en_CA";
+ for (var i = 0; i < 25; i++) {
+ var phone_number = faker.phone.phoneNumberFormat(1);
+ assert.ok(phone_number.match(/\([2-9]\d\d\)[2-9]\d\d-\d\d\d\d/));
+ }
+ });
+
+ });
});
diff --git a/test/random.unit.js b/test/random.unit.js
index 133fd887..e10d36be 100644
--- a/test/random.unit.js
+++ b/test/random.unit.js
@@ -97,6 +97,46 @@ describe("random.js", function () {
});
});
+ describe('arrayElements', function() {
+ it('returns a subset with random elements in the array', function() {
+ var testArray = ['hello', 'to', 'you', 'my', 'friend'];
+ var subset = faker.random.arrayElements(testArray);
+
+ // Check length
+ assert.ok(subset.length >= 1 && subset.length <= testArray.length);
+
+ // Check elements
+ subset.forEach(function(element) {
+ assert.ok(testArray.indexOf(element) > -1);
+ });
+
+ // Check uniqueness
+ subset.forEach(function(element) {
+ assert.ok(!this.hasOwnProperty(element));
+ this[element] = true;
+ }, {});
+ });
+
+ it('returns a subset of fixed length with random elements in the array', function() {
+ var testArray = ['hello', 'to', 'you', 'my', 'friend'];
+ var subset = faker.random.arrayElements(testArray, 3);
+
+ // Check length
+ assert.ok(subset.length === 3);
+
+ // Check elements
+ subset.forEach(function(element) {
+ assert.ok(testArray.indexOf(element) > -1);
+ });
+
+ // Check uniqueness
+ subset.forEach(function(element) {
+ assert.ok(!this.hasOwnProperty(element));
+ this[element] = true;
+ }, {});
+ });
+ });
+
describe('UUID', function() {
it('should generate a valid UUID', function() {
var UUID = faker.random.uuid();
@@ -135,4 +175,18 @@ describe("random.js", function () {
assert.ok(alphaNumeric(5).length === 5);
})
})
+
+ describe('hexaDecimal', function() {
+ var hexaDecimal = faker.random.hexaDecimal;
+
+ it('should generate single hex character when no additional argument was provided', function() {
+ var hex = hexaDecimal();
+ assert.ok(hex.match(/^(0x)[0-9a-f]{1}$/i));
+ })
+
+ it('should generate a random hex string', function() {
+ var hex = hexaDecimal(5);
+ assert.ok(hex.match(/^(0x)[0-9a-f]+$/i));
+ })
+ })
});
diff --git a/test/support/luhnCheck.js b/test/support/luhnCheck.js
new file mode 100644
index 00000000..1e195544
--- /dev/null
+++ b/test/support/luhnCheck.js
@@ -0,0 +1,18 @@
+module.exports = function (number) {
+ number = number.replace(/\D/g,"");
+ var split = number.split("");
+ split = split.map(function(num){return parseInt(num);});
+ var check = split.pop();
+ split.reverse();
+ split = split.map(function(num, index){
+ if(index%2 === 0) {
+ num *= 2;
+ if(num>9) {
+ num -= 9;
+ }
+ }
+ return num;
+ });
+ var sum = split.reduce(function(prev,curr){return prev + curr;});
+ return (sum%10 === check);
+};
diff --git a/test/unique.unit.js b/test/unique.unit.js
new file mode 100644
index 00000000..4edb8220
--- /dev/null
+++ b/test/unique.unit.js
@@ -0,0 +1,54 @@
+if (typeof module !== 'undefined') {
+ var assert = require('assert');
+ var sinon = require('sinon');
+ var faker = require('../index');
+}
+
+describe("unique.js", function () {
+ describe("unique()", function () {
+
+ it("is able to call a function with no arguments and return a result", function () {
+ var result = faker.unique(faker.internet.email);
+ assert.equal(typeof result, 'string');
+ });
+
+ it("is able to call a function with arguments and return a result", function () {
+ var result = faker.unique(faker.internet.email, ['a', 'b', 'c']); // third argument is provider, or domain for email
+ assert.ok(result.match(/\@c/));
+ });
+
+ it("is able to call a function with arguments and return a result", function () {
+ var result = faker.unique(faker.internet.email, ['a', 'b', 'c']); // third argument is provider, or domain for email
+ assert.ok(result.match(/\@c/));
+ });
+
+ it("is able to exclude results as array", function () {
+ var result = faker.unique(faker.internet.protocol, [], { exclude: ['https'] });
+ assert.equal(result, 'http');
+ });
+
+ it("is able to limit unique call by maxTime in ms", function () {
+ var result;
+ try {
+ result = faker.unique(faker.internet.protocol, [], { maxTime: 1, maxRetries: 9999, exclude: ['https', 'http'] });
+ } catch (err) {
+ assert.equal(err.message.substr(0, 16), 'exceeded maxTime');
+ }
+ });
+
+ it("is able to limit unique call by maxRetries", function () {
+ var result;
+ try {
+ result = faker.unique(faker.internet.protocol, [], { maxTime: 5000, maxRetries: 5, exclude: ['https', 'http'] });
+ } catch (err) {
+ assert.equal(err.message.substr(0, 19), 'exceeded maxRetries');
+ }
+ });
+
+ it("is able to call a function with arguments and return a result", function () {
+ var result = faker.unique(faker.internet.email, ['a', 'b', 'c']); // third argument is provider, or domain for email
+ assert.ok(result.match(/\@c/));
+ });
+
+ });
+});
diff --git a/vendor/unique.js b/vendor/unique.js
new file mode 100644
index 00000000..f1f7425c
--- /dev/null
+++ b/vendor/unique.js
@@ -0,0 +1,85 @@
+// the `unique` module
+var unique = {};
+
+// global results store
+// currently uniqueness is global to entire faker instance
+// this means that faker should currently *never* return duplicate values across all API methods when using `Faker.unique`
+// it's possible in the future that some users may want to scope found per function call instead of faker instance
+var found = {};
+
+// global exclude list of results
+// defaults to nothing excluded
+var exclude = [];
+
+// maximum time unique.exec will attempt to run before aborting
+var maxTime = 5000;
+
+// maximum retries unique.exec will recurse before abortings ( max loop depth )
+var maxRetries = 50;
+
+// time the script started
+var startTime = new Date().getTime();
+
+// current iteration or retries of unique.exec ( current loop depth )
+var currentIterations = 0;
+
+// uniqueness compare function
+// default behavior is to check value as key against object hash
+var defaultCompare = function(obj, key) {
+ if (typeof obj[key] === 'undefined') {
+ return -1;
+ }
+ return 0;
+};
+
+// common error handler for messages
+unique.errorMessage = function (now, code) {
+ console.error('error', code);
+ console.log('found', Object.keys(found).length, 'unique entries before throwing error. \nretried:', currentIterations, '\ntotal time:', now - startTime, 'ms');
+ throw new Error(code + ' for uniquness check. may not be able to generate any more unique values with current settings. try adjusting maxTime or maxRetries parameters for faker.unique()')
+};
+
+unique.exec = function (method, args, opts) {
+
+ var now = new Date().getTime();
+
+ opts = opts || {};
+ opts.maxTime = opts.maxTime || maxTime;
+ opts.maxRetries = opts.maxRetries || maxRetries;
+ opts.exclude = opts.exclude || exclude;
+ opts.compare = opts.compare || defaultCompare;
+
+ // support single exclude argument as string
+ if (typeof opts.exclude === 'string') {
+ opts.exclude = [opts.exclude];
+ }
+
+ if (currentIterations > 0) {
+ // console.log('iterating', currentIterations)
+ }
+
+ // console.log(now - startTime)
+ if (now - startTime >= opts.maxTime) {
+ return unique.errorMessage(now, 'exceeded maxTime');
+ }
+
+ if (currentIterations >= opts.maxRetries) {
+ return unique.errorMessage(now, 'exceeded maxRetries');
+ }
+
+ // execute the provided method to find a potential satifised value
+ var result = method.apply(this, args);
+
+ // if the result has not been previously found, add it to the found array and return the value as it's unique
+ if (opts.compare(found, result) === -1 && opts.exclude.indexOf(result) === -1) {
+ found[result] = result;
+ currentIterations = 0;
+ return result;
+ } else {
+ // console.log('conflict', result);
+ currentIterations++;
+ return unique.exec(method, args, opts);
+ }
+};
+
+module.exports = unique; \ No newline at end of file