UNPKG

4.37 kBJavaScriptView Raw
1
2/**
3 *
4 * @namespace faker.lorem
5 */
6var Lorem = function (faker) {
7 var self = this;
8 var Helpers = faker.helpers;
9
10 /**
11 * generates a word of a specified length
12 *
13 * @method faker.lorem.word
14 * @param {number} length length of the word that should be returned. Defaults to a random length
15 */
16 self.word = function (length) {
17 var hasRightLength = function(word) { return word.length === length; };
18 var properLengthWords;
19 if(typeof length === 'undefined') {
20 properLengthWords = faker.definitions.lorem.words;
21 } else {
22 properLengthWords = faker.definitions.lorem.words.filter(hasRightLength);
23 }
24 return faker.random.arrayElement(properLengthWords);
25 };
26
27 /**
28 * generates a space separated list of words
29 *
30 * @method faker.lorem.words
31 * @param {number} num number of words, defaults to 3
32 */
33 self.words = function (num) {
34 if (typeof num == 'undefined') { num = 3; }
35 var words = [];
36 for (var i = 0; i < num; i++) {
37 words.push(faker.lorem.word());
38 }
39 return words.join(' ');
40 };
41
42 /**
43 * sentence
44 *
45 * @method faker.lorem.sentence
46 * @param {number} wordCount defaults to a random number between 3 and 10
47 * @param {number} range
48 */
49 self.sentence = function (wordCount, range) {
50 if (typeof wordCount == 'undefined') { wordCount = faker.datatype.number({ min: 3, max: 10 }); }
51 // if (typeof range == 'undefined') { range = 7; }
52
53 // strange issue with the node_min_test failing for captialize, please fix and add faker.lorem.back
54 //return faker.lorem.words(wordCount + Helpers.randomNumber(range)).join(' ').capitalize();
55
56 var sentence = faker.lorem.words(wordCount);
57 return sentence.charAt(0).toUpperCase() + sentence.slice(1) + '.';
58 };
59
60 /**
61 * slug
62 *
63 * @method faker.lorem.slug
64 * @param {number} wordCount number of words, defaults to 3
65 */
66 self.slug = function (wordCount) {
67 var words = faker.lorem.words(wordCount);
68 return Helpers.slugify(words);
69 };
70
71 /**
72 * sentences
73 *
74 * @method faker.lorem.sentences
75 * @param {number} sentenceCount defautls to a random number between 2 and 6
76 * @param {string} separator defaults to `' '`
77 */
78 self.sentences = function (sentenceCount, separator) {
79 if (typeof sentenceCount === 'undefined') { sentenceCount = faker.datatype.number({ min: 2, max: 6 });}
80 if (typeof separator == 'undefined') { separator = " "; }
81 var sentences = [];
82 for (sentenceCount; sentenceCount > 0; sentenceCount--) {
83 sentences.push(faker.lorem.sentence());
84 }
85 return sentences.join(separator);
86 };
87
88 /**
89 * paragraph
90 *
91 * @method faker.lorem.paragraph
92 * @param {number} sentenceCount defaults to 3
93 */
94 self.paragraph = function (sentenceCount) {
95 if (typeof sentenceCount == 'undefined') { sentenceCount = 3; }
96 return faker.lorem.sentences(sentenceCount + faker.datatype.number(3));
97 };
98
99 /**
100 * paragraphs
101 *
102 * @method faker.lorem.paragraphs
103 * @param {number} paragraphCount defaults to 3
104 * @param {string} separator defaults to `'\n \r'`
105 */
106 self.paragraphs = function (paragraphCount, separator) {
107 if (typeof separator === "undefined") {
108 separator = "\n \r";
109 }
110 if (typeof paragraphCount == 'undefined') { paragraphCount = 3; }
111 var paragraphs = [];
112 for (paragraphCount; paragraphCount > 0; paragraphCount--) {
113 paragraphs.push(faker.lorem.paragraph());
114 }
115 return paragraphs.join(separator);
116 }
117
118 /**
119 * returns random text based on a random lorem method
120 *
121 * @method faker.lorem.text
122 * @param {number} times
123 */
124 self.text = function loremText (times) {
125 var loremMethods = ['lorem.word', 'lorem.words', 'lorem.sentence', 'lorem.sentences', 'lorem.paragraph', 'lorem.paragraphs', 'lorem.lines'];
126 var randomLoremMethod = faker.random.arrayElement(loremMethods);
127 return faker.fake('{{' + randomLoremMethod + '}}');
128 };
129
130 /**
131 * returns lines of lorem separated by `'\n'`
132 *
133 * @method faker.lorem.lines
134 * @param {number} lineCount defaults to a random number between 1 and 5
135 */
136 self.lines = function lines (lineCount) {
137 if (typeof lineCount === 'undefined') { lineCount = faker.datatype.number({ min: 1, max: 5 });}
138 return faker.lorem.sentences(lineCount, '\n')
139 };
140
141 return self;
142};
143
144
145module["exports"] = Lorem;