aboutsummaryrefslogtreecommitdiff
path: root/lib/address.js
diff options
context:
space:
mode:
Diffstat (limited to 'lib/address.js')
-rw-r--r--lib/address.js232
1 files changed, 127 insertions, 105 deletions
diff --git a/lib/address.js b/lib/address.js
index 6a9e3beb..35031a63 100644
--- a/lib/address.js
+++ b/lib/address.js
@@ -1,107 +1,129 @@
-var Helpers = require('./helpers');
-var faker = require('../index');
-
-var address = {
- zipCode: function () {
- return Helpers.replaceSymbolWithNumber(faker.random.array_element(["#####", '#####-####']));
- },
-
- city: function () {
- var result;
- switch (faker.random.number(3)) {
- case 0:
- result = faker.address.cityPrefix() + " " + faker.name.firstName() + faker.address.citySuffix();
- break;
- case 1:
- result = faker.address.cityPrefix() + " " + faker.name.firstName();
- break;
- case 2:
- result = faker.name.firstName() + faker.address.citySuffix();
- break;
- case 3:
- result = faker.name.lastName() + faker.address.citySuffix();
- break;
- }
- return result;
- },
-
- cityPrefix: function () {
- return faker.random.array_element(faker.definitions.address.city_prefix);
- },
-
- citySuffix: function () {
- return faker.random.array_element(faker.definitions.address.city_suffix);
- },
-
- streetName: function () {
- var result;
- switch (faker.random.number(1)) {
- case 0:
- result = faker.name.lastName() + " " + faker.address.streetSuffix();
- break;
- case 1:
- result = faker.name.firstName() + " " + faker.address.streetSuffix();
- break;
- }
- return result;
- },
-
- //
- // TODO: change all these methods that accept a boolean to instead accept an options hash.
- //
- streetAddress: function (useFullAddress) {
- if (useFullAddress === undefined) { useFullAddress = false; }
- var address = "";
- switch (faker.random.number(2)) {
- case 0:
- address = Helpers.replaceSymbolWithNumber("#####") + " " + faker.address.streetName();
- break;
- case 1:
- address = Helpers.replaceSymbolWithNumber("####") + " " + faker.address.streetName();
- break;
- case 2:
- address = Helpers.replaceSymbolWithNumber("###") + " " + faker.address.streetName();
- break;
- }
- return useFullAddress ? (address + " " + faker.address.secondaryAddress()) : address;
- },
-
- streetSuffix: function () {
- return faker.random.array_element(faker.definitions.address.street_suffix);
- },
-
- secondaryAddress: function () {
- return Helpers.replaceSymbolWithNumber(faker.random.array_element(
- [
- 'Apt. ###',
- 'Suite ###'
- ]
- ));
- },
-
- county: function () {
- return faker.random.array_element(faker.definitions.address.county);
- },
-
- country: function () {
- return faker.random.array_element(faker.definitions.address.country);
- },
-
- state: function (useAbbr) {
- return faker.random.array_element(faker.definitions.address.state);
- },
-
- stateAbbr: function () {
- return faker.random.array_element(faker.definitions.address.state_abbr);
- },
-
- latitude: function () {
- return (faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4);
- },
-
- longitude: function () {
- return (faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4);
+function Address (faker) {
+ var f = faker.fake,
+ Helpers = faker.helpers;
+
+ this.zipCode = function(format) {
+ // if zip format is not specified, use the zip format defined for the locale
+ if (typeof format === 'undefined') {
+ var localeFormat = faker.definitions.address.postcode;
+ if (typeof localeFormat === 'string') {
+ format = localeFormat;
+ } else {
+ format = faker.random.arrayElement(localeFormat);
+ }
+ }
+ return Helpers.replaceSymbols(format);
+ }
+
+ this.city = function (format) {
+ var formats = [
+ '{{address.cityPrefix}} {{name.firstName}} {{address.citySuffix}}',
+ '{{address.cityPrefix}} {{name.firstName}}',
+ '{{name.firstName}} {{address.citySuffix}}',
+ '{{name.lastName}} {{address.citySuffix}}'
+ ];
+
+ if (typeof format !== "number") {
+ format = faker.random.number(formats.length - 1);
}
-};
-module.exports = address;
+ return f(formats[format]);
+
+ }
+
+ this.cityPrefix = function () {
+ return faker.random.arrayElement(faker.definitions.address.city_prefix);
+ }
+
+ this.citySuffix = function () {
+ return faker.random.arrayElement(faker.definitions.address.city_suffix);
+ }
+
+ this.streetName = function () {
+ var result;
+ var suffix = faker.address.streetSuffix();
+ if (suffix !== "") {
+ suffix = " " + suffix
+ }
+
+ switch (faker.random.number(1)) {
+ case 0:
+ result = faker.name.lastName() + suffix;
+ break;
+ case 1:
+ result = faker.name.firstName() + suffix;
+ break;
+ }
+ return result;
+ }
+
+ //
+ // TODO: change all these methods that accept a boolean to instead accept an options hash.
+ //
+ this.streetAddress = function (useFullAddress) {
+ if (useFullAddress === undefined) { useFullAddress = false; }
+ var address = "";
+ switch (faker.random.number(2)) {
+ case 0:
+ address = Helpers.replaceSymbolWithNumber("#####") + " " + faker.address.streetName();
+ break;
+ case 1:
+ address = Helpers.replaceSymbolWithNumber("####") + " " + faker.address.streetName();
+ break;
+ case 2:
+ address = Helpers.replaceSymbolWithNumber("###") + " " + faker.address.streetName();
+ break;
+ }
+ return useFullAddress ? (address + " " + faker.address.secondaryAddress()) : address;
+ }
+
+ this.streetSuffix = function () {
+ return faker.random.arrayElement(faker.definitions.address.street_suffix);
+ }
+
+ this.streetPrefix = function () {
+ return faker.random.arrayElement(faker.definitions.address.street_prefix);
+ }
+
+ this.secondaryAddress = function () {
+ return Helpers.replaceSymbolWithNumber(faker.random.arrayElement(
+ [
+ 'Apt. ###',
+ 'Suite ###'
+ ]
+ ));
+ }
+
+ this.county = function () {
+ return faker.random.arrayElement(faker.definitions.address.county);
+ }
+
+ this.country = function () {
+ return faker.random.arrayElement(faker.definitions.address.country);
+ }
+
+ this.countryCode = function () {
+ return faker.random.arrayElement(faker.definitions.address.country_code);
+ }
+
+ this.state = function (useAbbr) {
+ return faker.random.arrayElement(faker.definitions.address.state);
+ }
+
+ this.stateAbbr = function () {
+ return faker.random.arrayElement(faker.definitions.address.state_abbr);
+ }
+
+ this.latitude = function () {
+ return (faker.random.number(180 * 10000) / 10000.0 - 90.0).toFixed(4);
+ }
+
+ this.longitude = function () {
+ return (faker.random.number(360 * 10000) / 10000.0 - 180.0).toFixed(4);
+ }
+
+ return this;
+}
+
+
+module.exports = Address;