diff options
Diffstat (limited to 'lib/address.js')
| -rw-r--r-- | lib/address.js | 232 |
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; |
