# encoding: utf-8 require 'ffakerer/address' module Faker # Author wiseleyb module AddressAU include Faker::Address extend ModuleUtils extend self def postcode(st_abbr = nil) st_abbr ||= state_abbr POSTCODE[st_abbr][rand(POSTCODE[st_abbr].size)] end def state STATE.rand end def state_abbr STATE_ABBR.rand end def suburb(st_abbr = nil, p_code = nil) st_abbr ||= state_abbr p_code ||= postcode(st_abbr) SUBURB[st_abbr][p_code] end def full_address(st_abbr = nil) st_abbr ||= state_abbr "#{Faker::Address.street_address}, #{suburb(st_abbr)} #{st_abbr} #{postcode}" end # based on areas labeled state (+act) here: http://en.wikipedia.org/wiki/States_and_territories_of_Australia STATE = k [ 'Australian Capital Territory', 'New South Wales', 'Queensland', 'South Australia', 'Tasmania', 'Victoria', 'Western Australia' ] STATE_ABBR = k %w(ACT NSW NT QLD SA TAS VIC WA) # based on http://en.wikipedia.org/wiki/List_of_cities_in_Australia SUBURB = { "ACT"=>{ "2600" => "Canberra", "2601"=>"Canberra", "2602"=>"O'Connor", "2612"=>"Braddon"}, "NT" => {"0800"=>"Darwin", "0830"=>"Palmerston"}, "SA" => { "5000"=>"Adelaide", "5015"=>"Port Adelaide", "5211"=>"Victor Harbor", "5251"=>"Mount Barker", "5253"=>"Murray Bridge", "5254"=>"Murray Bridge", "5290"=>"Mount Gambier", "5291"=>"Mount Gambier", "5540"=>"Port Pirie", "5600"=>"Whyalla", "5606"=>"Port Lincoln", "5607"=>"Port Lincoln", "5700"=>"Port Augusta", "5710"=>"Port Augusta" }, "WA" => { "6000"=>"Perth", "6008"=>"Subiaco", "6009"=>"Nedlands", "6021"=>"Stirling", "6027"=>"Joondalup", "6053"=>"Bayswater", "6065"=>"Wanneroo", "6110"=>"Gosnells", "6112"=>"Armadale", "6151"=>"South Perth", "6156"=>"Melville", "6160"=>"Fremantle", "6168"=>"Rockingham", "6210"=>"Mandurah", "6230"=>"Bunbury", "6330"=>"Albany", "6430"=>"Kalgoorlie", "6530"=>"Geraldton" }, "NSW" => { "2000"=>"Sydney", "2031"=>"Randwick", "2046"=>"Canada Bay", "2068"=>"Willoughby", "2112"=>"Ryde", "2142"=>"Holroyd", "2148"=>"Blacktown", "2150"=>"Parramatta", "2165"=>"Fairfield", "2170"=>"Liverpool", "2193"=>"Canterbury", "2200"=>"Bankstown", "2216"=>"Rockdale", "2220"=>"Hurstville", "2250"=>"Gosford", "2300"=>"Newcastle", "2320"=>"Maitland", "2325"=>"Cessnock", "2340"=>"Tamworth", "2350"=>"Armidale", "2450"=>"Coffs Harbour", "2460"=>"Grafton", "2480"=>"Lismore", "2500"=>"Wollongong", "2529"=>"Shellharbour", "2560"=>"Campbelltown", "2580"=>"Goulburn", "2620"=>"Queanbeyan", "2640"=>"Albury", "2650"=>"Wagga Wagga", "2680"=>"Griffith", "2750"=>"Penrith", "2790"=>"Lithgow", "2795"=>"Bathurst", "2800"=>"Orange", "2830"=>"Dubbo", "2880"=>"Broken Hill" }, "QLD" => { "4000"=>"Brisbane", "4217"=>"Surfers Paradise", "4305"=>"Ipswich", "4350"=>"Toowoomba", "4370"=>"Warwick", "4551"=>"Caloundra", "4570"=>"Gympie", "4650"=>"Maryborough", "4655"=>"Hervey Bay", "4670"=>"Bundaberg", "4680"=>"Gladstone", "4700"=>"Rockhampton", "4740"=>"Mackay", "4810"=>"Townsville", "4820"=>"Charters Towers", "4825"=>"Mount Isa", "4870"=>"Cairns" }, "VIC" => { "3000"=>"Melbourne", "3175"=>"Dandenong", "3199"=>"Frankston", "3220"=>"Geelong", "3280"=>"Warrnambool", "3300"=>"Hamilton", "3337"=>"Melton", "3350"=>"Ballarat", "3377"=>"Ararat", "3400"=>"Horsham", "3500"=>"Mildura", "3550"=>"Bendigo", "3585"=>"Swan Hill", "3630"=>"Shepparton", "3672"=>"Benalla", "3677"=>"Wangaratta", "3690"=>"Wodonga", "3825"=>"Moe", "3840"=>"Morwell", "3844"=>"Traralgon", "3850"=>"Sale", "3875"=>"Bairnsdale" }, "TAS" => { "7000"=>"Hobart", "7010"=>"Glenorchy", "7250"=>"Launceston", "7310"=>"Devonport", "7320"=>"Burnie" } } POSTCODE = SUBURB.inject({}) { |h, (s_abbr, postcode_suburb_map)| h.update(s_abbr => postcode_suburb_map.keys) } end end