faker 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/.jshintignore +3 -0
  2. package/.jshintrc +87 -0
  3. package/.npmignore +16 -0
  4. package/.travis.yml +5 -0
  5. package/BUILD/BUILD.js +139 -0
  6. package/BUILD/Mustache.js +296 -0
  7. package/BUILD/docs.js +62 -0
  8. package/BUILD/main.js +60 -0
  9. package/MIT-LICENSE.txt +20 -0
  10. package/Makefile +26 -0
  11. package/Readme.md +46 -0
  12. package/examples/bigDataSet.json +1 -0
  13. package/examples/browser_test.html +40 -0
  14. package/examples/dataSet.json +1 -0
  15. package/examples/index.html +77 -0
  16. package/examples/js/faker.js +730 -0
  17. package/examples/js/jquery.js +154 -0
  18. package/examples/js/prettyPrint.js +712 -0
  19. package/examples/library_test.js +9 -0
  20. package/examples/node_generateSet.js +20 -0
  21. package/examples/node_min_test.js +9 -0
  22. package/faker.js +730 -0
  23. package/index.js +31 -0
  24. package/lib/address.js +100 -0
  25. package/lib/company.js +36 -0
  26. package/lib/date.js +42 -0
  27. package/lib/definitions.js +1398 -0
  28. package/lib/helpers.js +124 -0
  29. package/lib/image.js +58 -0
  30. package/lib/internet.js +53 -0
  31. package/lib/lorem.js +45 -0
  32. package/lib/name.js +34 -0
  33. package/lib/phone_number.js +16 -0
  34. package/lib/random.js +106 -0
  35. package/lib/tree.js +69 -0
  36. package/lib/version.js +0 -0
  37. package/logo.png +0 -0
  38. package/minfaker.js +35 -0
  39. package/package.json +25 -0
  40. package/test/address.unit.js +293 -0
  41. package/test/all.functional.js +47 -0
  42. package/test/browser.unit.html +28 -0
  43. package/test/company.unit.js +110 -0
  44. package/test/date.unit.js +65 -0
  45. package/test/helpers.unit.js +62 -0
  46. package/test/image.unit.js +108 -0
  47. package/test/internet.unit.js +92 -0
  48. package/test/lorem.unit.js +178 -0
  49. package/test/mocha.opts +5 -0
  50. package/test/name.unit.js +87 -0
  51. package/test/phone_number.unit.js +29 -0
  52. package/test/run.js +68 -0
  53. package/test/support/chai.js +3403 -0
  54. package/test/support/sinon-1.5.2.js +4153 -0
  55. package/test/support/walk_dir.js +43 -0
  56. package/test/tree.unit.js +108 -0
package/lib/helpers.js ADDED
@@ -0,0 +1,124 @@
1
+ var faker = require('../index');
2
+
3
+ // backword-compatibility
4
+ exports.randomNumber = function (range) {
5
+ return faker.random.number(range);
6
+ };
7
+
8
+ // backword-compatibility
9
+ exports.randomize = function (array) {
10
+ return faker.random.array_element(array);
11
+ };
12
+
13
+ // slugifies string
14
+ exports.slugify = function (string) {
15
+ return string.replace(/ /g, '-').replace(/[^\w\.\-]+/g, '');
16
+ };
17
+
18
+ // parses string for a symbol and replace it with a random number from 1-10
19
+ exports.replaceSymbolWithNumber = function (string, symbol) {
20
+ // default symbol is '#'
21
+ if (symbol === undefined) {
22
+ symbol = '#';
23
+ }
24
+
25
+ var str = '';
26
+ for (var i = 0; i < string.length; i++) {
27
+ if (string[i] == symbol) {
28
+ str += Math.floor(Math.random() * 10);
29
+ } else {
30
+ str += string[i];
31
+ }
32
+ }
33
+ return str;
34
+ };
35
+
36
+ // takes an array and returns it randomized
37
+ exports.shuffle = function (o) {
38
+ for (var j, x, i = o.length; i; j = parseInt(Math.random() * i, 10), x = o[--i], o[i] = o[j], o[j] = x);
39
+ return o;
40
+ };
41
+
42
+ exports.createCard = function () {
43
+ return {
44
+ "name": faker.Name.findName(),
45
+ "username": faker.Internet.userName(),
46
+ "email": faker.Internet.email(),
47
+ "address": {
48
+ "streetA": faker.Address.streetName(),
49
+ "streetB": faker.Address.streetAddress(),
50
+ "streetC": faker.Address.streetAddress(true),
51
+ "streetD": faker.Address.secondaryAddress(),
52
+ "city": faker.Address.city(),
53
+ "ukCounty": faker.Address.ukCounty(),
54
+ "ukCountry": faker.Address.ukCountry(),
55
+ "zipcode": faker.Address.zipCode(),
56
+ "geo": {
57
+ "lat": faker.Address.latitude(),
58
+ "lng": faker.Address.longitude()
59
+ }
60
+ },
61
+ "phone": faker.PhoneNumber.phoneNumber(),
62
+ "website": faker.Internet.domainName(),
63
+ "company": {
64
+ "name": faker.Company.companyName(),
65
+ "catchPhrase": faker.Company.catchPhrase(),
66
+ "bs": faker.Company.bs()
67
+ },
68
+ "posts": [
69
+ {
70
+ "words": faker.Lorem.words(),
71
+ "sentence": faker.Lorem.sentence(),
72
+ "sentences": faker.Lorem.sentences(),
73
+ "paragraph": faker.Lorem.paragraph()
74
+ },
75
+ {
76
+ "words": faker.Lorem.words(),
77
+ "sentence": faker.Lorem.sentence(),
78
+ "sentences": faker.Lorem.sentences(),
79
+ "paragraph": faker.Lorem.paragraph()
80
+ },
81
+ {
82
+ "words": faker.Lorem.words(),
83
+ "sentence": faker.Lorem.sentence(),
84
+ "sentences": faker.Lorem.sentences(),
85
+ "paragraph": faker.Lorem.paragraph()
86
+ }
87
+ ]
88
+ };
89
+ };
90
+
91
+
92
+ exports.userCard = function () {
93
+ return {
94
+ "name": faker.Name.findName(),
95
+ "username": faker.Internet.userName(),
96
+ "email": faker.Internet.email(),
97
+ "address": {
98
+ "street": faker.Address.streetName(true),
99
+ "suite": faker.Address.secondaryAddress(),
100
+ "city": faker.Address.city(),
101
+ "zipcode": faker.Address.zipCode(),
102
+ "geo": {
103
+ "lat": faker.Address.latitude(),
104
+ "lng": faker.Address.longitude()
105
+ }
106
+ },
107
+ "phone": faker.PhoneNumber.phoneNumber(),
108
+ "website": faker.Internet.domainName(),
109
+ "company": {
110
+ "name": faker.Company.companyName(),
111
+ "catchPhrase": faker.Company.catchPhrase(),
112
+ "bs": faker.Company.bs()
113
+ }
114
+ };
115
+ };
116
+
117
+
118
+ /*
119
+ String.prototype.capitalize = function () { //v1.0
120
+ return this.replace(/\w+/g, function (a) {
121
+ return a.charAt(0).toUpperCase() + a.substr(1).toLowerCase();
122
+ });
123
+ };
124
+ */
package/lib/image.js ADDED
@@ -0,0 +1,58 @@
1
+ var faker = require('../index');
2
+
3
+ var image = {
4
+ avatar: function () {
5
+ return faker.random.avatar_uri();
6
+ },
7
+ imageUrl: function (width, height, category) {
8
+ var width = width || 640;
9
+ var height = height || 480;
10
+
11
+ var url ='http://lorempixel.com/' + width + '/' + height;
12
+ if (typeof category !== 'undefined') {
13
+ url += '/' + category;
14
+ }
15
+ return url;
16
+ },
17
+ abstractImage: function (width, height) {
18
+ return this.imageUrl(width, height, 'abstract');
19
+ },
20
+ animals: function (width, height) {
21
+ return this.imageUrl(width, height, 'animals');
22
+ },
23
+ business: function (width, height) {
24
+ return this.imageUrl(width, height, 'business');
25
+ },
26
+ cats: function (width, height) {
27
+ return this.imageUrl(width, height, 'cats');
28
+ },
29
+ city: function (width, height) {
30
+ return this.imageUrl(width, height, 'city');
31
+ },
32
+ food: function (width, height) {
33
+ return this.imageUrl(width, height, 'food');
34
+ },
35
+ nightlife: function (width, height) {
36
+ return this.imageUrl(width, height, 'nightlife');
37
+ },
38
+ fashion: function (width, height) {
39
+ return this.imageUrl(width, height, 'fashion');
40
+ },
41
+ people: function (width, height) {
42
+ return this.imageUrl(width, height, 'people');
43
+ },
44
+ nature: function (width, height) {
45
+ return this.imageUrl(width, height, 'nature');
46
+ },
47
+ sports: function (width, height) {
48
+ return this.imageUrl(width, height, 'sports');
49
+ },
50
+ technics: function (width, height) {
51
+ return this.imageUrl(width, height, 'technics');
52
+ },
53
+ transport: function (width, height) {
54
+ return this.imageUrl(width, height, 'transport');
55
+ }
56
+ };
57
+
58
+ module.exports = image;
@@ -0,0 +1,53 @@
1
+ var faker = require('../index');
2
+
3
+ var internet = {
4
+ email: function () {
5
+ return faker.Helpers.slugify(this.userName()) + "@" + faker.Helpers.slugify(this.domainName());
6
+ },
7
+
8
+ userName: function () {
9
+ var result;
10
+ switch (faker.random.number(2)) {
11
+ case 0:
12
+ result = faker.random.first_name();
13
+ break;
14
+ case 1:
15
+ result = faker.random.first_name() + faker.random.array_element([".", "_"]) + faker.random.last_name();
16
+ break;
17
+ }
18
+ return result;
19
+ },
20
+
21
+ domainName: function () {
22
+ return this.domainWord() + "." + faker.random.domain_suffix();
23
+ },
24
+
25
+ domainWord: function () {
26
+ return faker.random.first_name().toLowerCase();
27
+ },
28
+
29
+ ip: function () {
30
+ var randNum = function () {
31
+ return (Math.random() * 254 + 1).toFixed(0);
32
+ };
33
+
34
+ var result = [];
35
+ for (var i = 0; i < 4; i++) {
36
+ result[i] = randNum();
37
+ }
38
+
39
+ return result.join(".");
40
+ },
41
+
42
+ color: function (baseRed255, baseGreen255, baseBlue255) {
43
+
44
+ // based on awesome response : http://stackoverflow.com/questions/43044/algorithm-to-randomly-generate-an-aesthetically-pleasing-color-palette
45
+ var red = Math.floor((faker.random.number(256) + baseRed255) / 2);
46
+ var green = Math.floor((faker.random.number(256) + baseRed255) / 2);
47
+ var blue = Math.floor((faker.random.number(256) + baseRed255) / 2);
48
+
49
+ return '#' + red.toString(16) + green.toString(16) + blue.toString(16);
50
+ }
51
+ };
52
+
53
+ module.exports = internet;
package/lib/lorem.js ADDED
@@ -0,0 +1,45 @@
1
+ var faker = require('../index');
2
+ var Helpers = require('./helpers');
3
+ var definitions = require('../lib/definitions');
4
+
5
+ var lorem = {
6
+ words: function (num) {
7
+ if (typeof num == 'undefined') { num = 3; }
8
+ return Helpers.shuffle(definitions.lorem).slice(0, num);
9
+ },
10
+
11
+ sentence: function (wordCount, range) {
12
+ if (typeof wordCount == 'undefined') { wordCount = 3; }
13
+ if (typeof range == 'undefined') { range = 7; }
14
+
15
+ // strange issue with the node_min_test failing for captialize, please fix and add this back
16
+ //return this.words(wordCount + Helpers.randomNumber(range)).join(' ').capitalize();
17
+
18
+ return this.words(wordCount + faker.random.number(7)).join(' ');
19
+ },
20
+
21
+ sentences: function (sentenceCount) {
22
+ if (typeof sentenceCount == 'undefined') { sentenceCount = 3; }
23
+ var sentences = [];
24
+ for (sentenceCount; sentenceCount > 0; sentenceCount--) {
25
+ sentences.push(this.sentence());
26
+ }
27
+ return sentences.join("\n");
28
+ },
29
+
30
+ paragraph: function (sentenceCount) {
31
+ if (typeof sentenceCount == 'undefined') { sentenceCount = 3; }
32
+ return this.sentences(sentenceCount + faker.random.number(3));
33
+ },
34
+
35
+ paragraphs: function (paragraphCount) {
36
+ if (typeof paragraphCount == 'undefined') { paragraphCount = 3; }
37
+ var paragraphs = [];
38
+ for (paragraphCount; paragraphCount > 0; paragraphCount--) {
39
+ paragraphs.push(this.paragraph());
40
+ }
41
+ return paragraphs.join("\n \r\t");
42
+ }
43
+ };
44
+
45
+ module.exports = lorem;
package/lib/name.js ADDED
@@ -0,0 +1,34 @@
1
+ var faker = require('../index');
2
+
3
+ var _name = {
4
+ firstName: function () {
5
+ return faker.random.first_name();
6
+ },
7
+
8
+ //Working as intended
9
+ firstNameFemale: function () {
10
+ return faker.random.first_name();
11
+ },
12
+ //Working as intended
13
+ firstNameMale: function () {
14
+ return faker.random.first_name();
15
+ },
16
+
17
+ lastName: function () {
18
+ return faker.random.last_name();
19
+ },
20
+
21
+ findName: function () {
22
+ var r = faker.random.number(8);
23
+ switch (r) {
24
+ case 0:
25
+ return faker.random.name_prefix() + " " + this.firstName() + " " + this.lastName();
26
+ case 1:
27
+ return this.firstName() + " " + this.lastName() + " " + faker.random.name_suffix();
28
+ }
29
+
30
+ return this.firstName() + " " + this.lastName();
31
+ }
32
+ };
33
+
34
+ module.exports = _name;
@@ -0,0 +1,16 @@
1
+ var faker = require('../index');
2
+ var Helpers = require('./helpers');
3
+ var definitions = require('./definitions');
4
+
5
+ var phone = {
6
+ phoneNumber: function () {
7
+ return Helpers.replaceSymbolWithNumber(faker.random.phone_formats());
8
+ },
9
+
10
+ // FIXME: this is strange passing in an array index.
11
+ phoneNumberFormat: function (phoneFormatsArrayIndex) {
12
+ return Helpers.replaceSymbolWithNumber(definitions.phone_formats[phoneFormatsArrayIndex]);
13
+ }
14
+ };
15
+
16
+ module.exports = phone;
package/lib/random.js ADDED
@@ -0,0 +1,106 @@
1
+ var definitions = require('./definitions');
2
+
3
+ var random = {
4
+ // returns a single random number based on a range
5
+ number: function (range) {
6
+ return Math.floor(Math.random() * range);
7
+ },
8
+
9
+ // takes an array and returns the array randomly sorted
10
+ array_element: function (array) {
11
+ var r = Math.floor(Math.random() * array.length);
12
+ return array[r];
13
+ },
14
+
15
+ city_prefix: function () {
16
+ return this.array_element(definitions.city_prefix);
17
+ },
18
+
19
+ city_suffix: function () {
20
+ return this.array_element(definitions.city_suffix);
21
+ },
22
+
23
+ street_suffix: function () {
24
+ return this.array_element(definitions.street_suffix);
25
+ },
26
+
27
+ br_state: function () {
28
+ return this.array_element(definitions.br_state);
29
+ },
30
+
31
+ br_state_abbr: function () {
32
+ return this.array_element(definitions.br_state_abbr);
33
+ },
34
+
35
+ us_state: function () {
36
+ return this.array_element(definitions.us_state);
37
+ },
38
+
39
+ us_state_abbr: function () {
40
+ return this.array_element(definitions.us_state_abbr);
41
+ },
42
+
43
+ uk_county: function () {
44
+ return this.array_element(definitions.uk_county);
45
+ },
46
+
47
+ uk_country: function () {
48
+ return this.array_element(definitions.uk_country);
49
+ },
50
+
51
+ first_name: function () {
52
+ return this.array_element(definitions.first_name);
53
+ },
54
+
55
+ last_name: function () {
56
+ return this.array_element(definitions.last_name);
57
+ },
58
+
59
+ name_prefix: function () {
60
+ return this.array_element(definitions.name_prefix);
61
+ },
62
+
63
+ name_suffix: function () {
64
+ return this.array_element(definitions.name_suffix);
65
+ },
66
+
67
+ catch_phrase_adjective: function () {
68
+ return this.array_element(definitions.catch_phrase_adjective);
69
+ },
70
+
71
+ catch_phrase_descriptor: function () {
72
+ return this.array_element(definitions.catch_phrase_descriptor);
73
+ },
74
+
75
+ catch_phrase_noun: function () {
76
+ return this.array_element(definitions.catch_phrase_noun);
77
+ },
78
+
79
+ bs_adjective: function () {
80
+ return this.array_element(definitions.bs_adjective);
81
+ },
82
+
83
+ bs_buzz: function () {
84
+ return this.array_element(definitions.bs_buzz);
85
+ },
86
+
87
+ bs_noun: function () {
88
+ return this.array_element(definitions.bs_noun);
89
+ },
90
+
91
+ phone_formats: function () {
92
+ return this.array_element(definitions.phone_formats);
93
+ },
94
+
95
+ domain_suffix: function () {
96
+ return this.array_element(definitions.domain_suffix);
97
+ },
98
+
99
+ avatar_uri: function () {
100
+ return this.array_element(definitions.avatar_uri);
101
+ }
102
+
103
+
104
+ };
105
+
106
+ module.exports = random;
package/lib/tree.js ADDED
@@ -0,0 +1,69 @@
1
+ var faker = require('../index');
2
+
3
+ var tree = {
4
+
5
+ clone: function clone(obj) {
6
+ if (obj == null || typeof(obj) != 'object')
7
+ return obj;
8
+
9
+ var temp = obj.constructor(); // changed
10
+
11
+ for (var key in obj) {
12
+ temp[key] = this.clone(obj[key]);
13
+ }
14
+ return temp;
15
+ },
16
+
17
+ createTree: function (depth, width, obj) {
18
+ if (!obj) {
19
+ throw {
20
+ name: "ObjectError",
21
+ message: "there needs to be an object passed in"
22
+ };
23
+ }
24
+
25
+
26
+ if (width <= 0) {
27
+ throw {
28
+ name: "TreeParamError",
29
+ message: "width must be greater than zero"
30
+ };
31
+ }
32
+
33
+ var newObj = this.clone(obj);
34
+
35
+ for (var prop in newObj) {
36
+ if (newObj.hasOwnProperty(prop)) {
37
+ var value = null;
38
+ if (newObj[prop] !== "__RECURSE__") {
39
+ value = eval(newObj[prop]);
40
+ }
41
+ else {
42
+ if (depth !== 0) {
43
+ value = [];
44
+ var evalWidth = 1;
45
+
46
+ if (typeof(width) == "function") {
47
+ evalWidth = width();
48
+ }
49
+ else {
50
+ evalWidth = width;
51
+ }
52
+
53
+ for (var i = 0; i < evalWidth; i++) {
54
+ value.push(this.createTree(depth - 1, width, obj));
55
+ }
56
+
57
+ }
58
+ }
59
+
60
+ newObj[prop] = value;
61
+ }
62
+ }
63
+
64
+ return newObj;
65
+ }
66
+
67
+ };
68
+
69
+ module.exports = tree;
package/lib/version.js ADDED
File without changes
package/logo.png ADDED
Binary file