UNPKG

5.61 kBJavaScriptView Raw
1/**
2 *
3 * @namespace faker.address
4 */
5function Address (faker) {
6 var f = faker.fake,
7 Helpers = faker.helpers;
8
9 /**
10 * Generates random zipcode from format. If format is not specified, the
11 * locale's zip format is used.
12 *
13 * @method faker.address.zipCode
14 * @param {String} format
15 */
16 this.zipCode = function(format) {
17 // if zip format is not specified, use the zip format defined for the locale
18 if (typeof format === 'undefined') {
19 var localeFormat = faker.definitions.address.postcode;
20 if (typeof localeFormat === 'string') {
21 format = localeFormat;
22 } else {
23 format = faker.random.arrayElement(localeFormat);
24 }
25 }
26 return Helpers.replaceSymbols(format);
27 }
28
29 /**
30 * Generates a random localized city name. The format string can contain any
31 * method provided by faker wrapped in `{{}}`, e.g. `{{name.firstName}}` in
32 * order to build the city name.
33 *
34 * If no format string is provided one of the following is randomly used:
35 *
36 * * `{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}`
37 * * `{{address.cityPrefix}} {{name.firstName}}`
38 * * `{{name.firstName}}{{address.citySuffix}}`
39 * * `{{name.lastName}}{{address.citySuffix}}`
40 *
41 * @method faker.address.city
42 * @param {String} format
43 */
44 this.city = function (format) {
45 var formats = [
46 '{{address.cityPrefix}} {{name.firstName}}{{address.citySuffix}}',
47 '{{address.cityPrefix}} {{name.firstName}}',
48 '{{name.firstName}}{{address.citySuffix}}',
49 '{{name.lastName}}{{address.citySuffix}}'
50 ];
51
52 if (typeof format !== "number") {
53 format = faker.random.number(formats.length - 1);
54 }
55
56 return f(formats[format]);
57
58 }
59
60 /**
61 * Return a random localized city prefix
62 * @method faker.address.cityPrefix
63 */
64 this.cityPrefix = function () {
65 return faker.random.arrayElement(faker.definitions.address.city_prefix);
66 }
67
68 /**
69 * Return a random localized city suffix
70 *
71 * @method faker.address.citySuffix
72 */
73 this.citySuffix = function () {
74 return faker.random.arrayElement(faker.definitions.address.city_suffix);
75 }
76
77 /**
78 * Returns a random localized street name
79 *
80 * @method faker.address.streetName
81 */
82 this.streetName = function () {
83 var result;
84 var suffix = faker.address.streetSuffix();
85 if (suffix !== "") {
86 suffix = " " + suffix
87 }
88
89 switch (faker.random.number(1)) {
90 case 0:
91 result = faker.name.lastName() + suffix;
92 break;
93 case 1:
94 result = faker.name.firstName() + suffix;
95 break;
96 }
97 return result;
98 }
99
100 //
101 // TODO: change all these methods that accept a boolean to instead accept an options hash.
102 //
103 /**
104 * Returns a random localized street address
105 *
106 * @method faker.address.streetAddress
107 * @param {Boolean} useFullAddress
108 */
109 this.streetAddress = function (useFullAddress) {
110 if (useFullAddress === undefined) { useFullAddress = false; }
111 var address = "";
112 switch (faker.random.number(2)) {
113 case 0:
114 address = Helpers.replaceSymbolWithNumber("#####") + " " + faker.address.streetName();
115 break;
116 case 1:
117 address = Helpers.replaceSymbolWithNumber("####") + " " + faker.address.streetName();
118 break;
119 case 2:
120 address = Helpers.replaceSymbolWithNumber("###") + " " + faker.address.streetName();
121 break;
122 }
123 return useFullAddress ? (address + " " + faker.address.secondaryAddress()) : address;
124 }
125
126 /**
127 * streetSuffix
128 *
129 * @method faker.address.streetSuffix
130 */
131 this.streetSuffix = function () {
132 return faker.random.arrayElement(faker.definitions.address.street_suffix);
133 }
134
135 /**
136 * streetPrefix
137 *
138 * @method faker.address.streetPrefix
139 */
140 this.streetPrefix = function () {
141 return faker.random.arrayElement(faker.definitions.address.street_prefix);
142 }
143
144 /**
145 * secondaryAddress
146 *
147 * @method faker.address.secondaryAddress
148 */
149 this.secondaryAddress = function () {
150 return Helpers.replaceSymbolWithNumber(faker.random.arrayElement(
151 [
152 'Apt. ###',
153 'Suite ###'
154 ]
155 ));
156 }
157
158 /**
159 * county
160 *
161 * @method faker.address.county
162 */
163 this.county = function () {
164 return faker.random.arrayElement(faker.definitions.address.county);
165 }
166
167 /**
168 * country
169 *
170 * @method faker.address.country
171 */
172 this.country = function () {
173 return faker.random.arrayElement(faker.definitions.address.country);
174 }
175
176 /**
177 * countryCode
178 *
179 * @method faker.address.countryCode
180 */
181 this.countryCode = function () {
182 return faker.random.arrayElement(faker.definitions.address.country_code);
183 }
184
185 /**
186 * state
187 *
188 * @method faker.address.state
189 * @param {Boolean} useAbbr
190 */
191 this.state = function (useAbbr) {
192 return faker.random.arrayElement(faker.definitions.address.state);
193 }
194
195 /**
196 * stateAbbr
197 *
198 * @method faker.address.stateAbbr
199 */
200 this.stateAbbr = function () {
201 return faker.random.arrayElement(faker.definitions.address.state_abbr);
202 }
203
204 /**
205 * latitude
206 *
207 * @method faker.address.latitude
208 */
209 this.latitude = function () {
210 return (faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4);
211 }
212
213 /**
214 * longitude
215 *
216 * @method faker.address.longitude
217 */
218 this.longitude = function () {
219 return (faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4);
220 }
221
222 return this;
223}
224
225
226module.exports = Address;