ffaker 1.15.0 → 1.16.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/Changelog.rdoc +4 -1
  2. data/Gemfile +2 -0
  3. data/README.rdoc +1 -1
  4. data/ffaker.gemspec +43 -2
  5. data/lib/ffaker.rb +31 -5
  6. data/lib/ffaker/address.rb +57 -4
  7. data/lib/ffaker/address_au.rb +41 -42
  8. data/lib/ffaker/address_de.rb +16 -0
  9. data/lib/ffaker/address_mx.rb +448 -0
  10. data/lib/ffaker/address_se.rb +1074 -0
  11. data/lib/ffaker/company_se.rb +24 -0
  12. data/lib/ffaker/conference.rb +52 -0
  13. data/lib/ffaker/dizzle_ipsum.rb +30 -0
  14. data/lib/ffaker/identification.rb +25 -0
  15. data/lib/ffaker/internet_se.rb +105 -0
  16. data/lib/ffaker/lorem.rb +1 -1
  17. data/lib/ffaker/lorem_ar.rb +45 -0
  18. data/lib/ffaker/lorem_cn.rb +6 -6
  19. data/lib/ffaker/movie.rb +64 -0
  20. data/lib/ffaker/name_ga.rb +57 -0
  21. data/lib/ffaker/name_mx.rb +198 -0
  22. data/lib/ffaker/name_ph.rb +91 -0
  23. data/lib/ffaker/name_se.rb +97 -0
  24. data/lib/ffaker/name_sn.rb +1 -1
  25. data/lib/ffaker/phone_number_mx.rb +57 -0
  26. data/lib/ffaker/phone_number_se.rb +111 -0
  27. data/lib/ffaker/ssn.rb +15 -0
  28. data/lib/ffaker/ssn_se.rb +111 -0
  29. data/lib/ffaker/string.rb +90 -0
  30. data/lib/ffaker/time.rb +28 -0
  31. data/lib/ffaker/venue.rb +45 -0
  32. data/test/test_address.rb +15 -7
  33. data/test/test_address_au.rb +10 -14
  34. data/test/test_address_de.rb +8 -0
  35. data/test/test_address_mx.rb +25 -0
  36. data/test/test_address_se.rb +36 -0
  37. data/test/test_company_se.rb +14 -0
  38. data/test/test_conference.rb +8 -0
  39. data/test/test_dizzle_ipsum.rb +28 -0
  40. data/test/test_faker.rb +20 -4
  41. data/test/test_faker_internet_se.rb +66 -0
  42. data/test/test_faker_name_ga.rb +54 -0
  43. data/test/test_faker_name_mx.rb +177 -0
  44. data/test/test_faker_name_ph.rb +15 -0
  45. data/test/test_faker_name_se.rb +37 -0
  46. data/test/test_faker_name_sn.rb +1 -0
  47. data/test/test_identification.rb +25 -0
  48. data/test/test_lorem_ar.rb +35 -0
  49. data/test/test_movie.rb +7 -0
  50. data/test/test_phone_number_mx.rb +42 -0
  51. data/test/test_phone_number_se.rb +58 -0
  52. data/test/test_ssn.rb +9 -0
  53. data/test/test_ssn_se.rb +43 -0
  54. data/test/test_string.rb +69 -0
  55. data/test/test_time.rb +17 -0
  56. data/test/test_venue.rb +8 -0
  57. metadata +64 -4
data/Changelog.rdoc CHANGED
@@ -1,10 +1,13 @@
1
+ == 1.16.0
2
+ Many module additions from different contributors!
3
+
1
4
  == 1.15.0
2
5
  NameKR (https://github.com/EmmanuelOga/ffaker/pull/47) and PhoneNumbersSG
3
6
  (https://github.com/EmmanuelOga/ffaker/pull/46).
4
7
 
5
8
  == 1.14.0
6
9
 
7
- AddressSN (thanks PapePethe), and a bugfix on Faker::Product.model (thanks finarfin).
10
+ AddressSN (thanks PapePathe), and a bugfix on Faker::Product.model (thanks finarfin).
8
11
 
9
12
  == 1.13.0
10
13
 
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'http://rubygems.org'
2
+ gemspec
data/README.rdoc CHANGED
@@ -33,7 +33,7 @@ in mind, if your spec suite is slow, chances are the generation of random data
33
33
  will not account for much of the run time.
34
34
 
35
35
  Since then, the original faker gem has become faster (at the moment it did not
36
- seem it was mantained). Nevertheless, ffaker is still about 20x faster than
36
+ seem it was maintained). Nevertheless, ffaker is still about 20x faster than
37
37
  faker.
38
38
 
39
39
  $ cat scripts/benchmark.rb
data/ffaker.gemspec CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
  s.rubygems_version = '1.3.5'
5
5
 
6
6
  s.name = 'ffaker'
7
- s.version = '1.15.0'
8
- s.date = '2012-07-03'
7
+ s.version = '1.16.0'
8
+ s.date = '2013-04-28'
9
9
  s.rubyforge_project = 'ffaker'
10
10
 
11
11
  s.summary = "Faster Faker, generates dummy data."
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  # = MANIFEST =
24
24
  s.files = %w[
25
25
  Changelog.rdoc
26
+ Gemfile
26
27
  LICENSE
27
28
  README.rdoc
28
29
  Rakefile
@@ -33,35 +34,55 @@ Gem::Specification.new do |s|
33
34
  lib/ffaker/address_ca.rb
34
35
  lib/ffaker/address_da.rb
35
36
  lib/ffaker/address_de.rb
37
+ lib/ffaker/address_mx.rb
38
+ lib/ffaker/address_se.rb
36
39
  lib/ffaker/address_sn.rb
37
40
  lib/ffaker/address_uk.rb
38
41
  lib/ffaker/address_us.rb
39
42
  lib/ffaker/company.rb
43
+ lib/ffaker/company_se.rb
44
+ lib/ffaker/conference.rb
45
+ lib/ffaker/dizzle_ipsum.rb
40
46
  lib/ffaker/education.rb
41
47
  lib/ffaker/geolocation.rb
42
48
  lib/ffaker/hipster_ipsum.rb
43
49
  lib/ffaker/html_ipsum.rb
50
+ lib/ffaker/identification.rb
44
51
  lib/ffaker/internet.rb
52
+ lib/ffaker/internet_se.rb
45
53
  lib/ffaker/job.rb
46
54
  lib/ffaker/lorem.rb
55
+ lib/ffaker/lorem_ar.rb
47
56
  lib/ffaker/lorem_cn.rb
57
+ lib/ffaker/movie.rb
48
58
  lib/ffaker/name.rb
49
59
  lib/ffaker/name_cn.rb
50
60
  lib/ffaker/name_da.rb
51
61
  lib/ffaker/name_de.rb
62
+ lib/ffaker/name_ga.rb
52
63
  lib/ffaker/name_ja.rb
53
64
  lib/ffaker/name_kr.rb
65
+ lib/ffaker/name_mx.rb
66
+ lib/ffaker/name_ph.rb
54
67
  lib/ffaker/name_ru.rb
68
+ lib/ffaker/name_se.rb
55
69
  lib/ffaker/name_sn.rb
56
70
  lib/ffaker/name_vn.rb
57
71
  lib/ffaker/phone_number.rb
58
72
  lib/ffaker/phone_number_au.rb
59
73
  lib/ffaker/phone_number_da.rb
74
+ lib/ffaker/phone_number_mx.rb
75
+ lib/ffaker/phone_number_se.rb
60
76
  lib/ffaker/phone_number_sg.rb
61
77
  lib/ffaker/phone_number_sn.rb
62
78
  lib/ffaker/product.rb
79
+ lib/ffaker/ssn.rb
80
+ lib/ffaker/ssn_se.rb
81
+ lib/ffaker/string.rb
82
+ lib/ffaker/time.rb
63
83
  lib/ffaker/utils/array_utils.rb
64
84
  lib/ffaker/utils/module_utils.rb
85
+ lib/ffaker/venue.rb
65
86
  scripts/benchmark.rb
66
87
  scripts/profile.sh
67
88
  scripts/profiling.rb
@@ -70,32 +91,52 @@ Gem::Specification.new do |s|
70
91
  test/test_address_au.rb
71
92
  test/test_address_ca.rb
72
93
  test/test_address_de.rb
94
+ test/test_address_mx.rb
95
+ test/test_address_se.rb
73
96
  test/test_address_sn.rb
74
97
  test/test_address_uk.rb
75
98
  test/test_address_us.rb
76
99
  test/test_array_utils.rb
77
100
  test/test_company.rb
101
+ test/test_company_se.rb
102
+ test/test_conference.rb
103
+ test/test_dizzle_ipsum.rb
78
104
  test/test_education.rb
79
105
  test/test_faker.rb
80
106
  test/test_faker_internet.rb
107
+ test/test_faker_internet_se.rb
81
108
  test/test_faker_job.rb
82
109
  test/test_faker_name.rb
83
110
  test/test_faker_name_cn.rb
84
111
  test/test_faker_name_de.rb
112
+ test/test_faker_name_ga.rb
85
113
  test/test_faker_name_ja.rb
86
114
  test/test_faker_name_kr.rb
115
+ test/test_faker_name_mx.rb
116
+ test/test_faker_name_ph.rb
87
117
  test/test_faker_name_ru.rb
118
+ test/test_faker_name_se.rb
88
119
  test/test_faker_name_sn.rb
89
120
  test/test_geolocation.rb
90
121
  test/test_hipster_ipsum.rb
91
122
  test/test_html_ipsum.rb
123
+ test/test_identification.rb
92
124
  test/test_lorem.rb
125
+ test/test_lorem_ar.rb
93
126
  test/test_lorem_cn.rb
94
127
  test/test_module_utils.rb
128
+ test/test_movie.rb
95
129
  test/test_phone_number.rb
96
130
  test/test_phone_number_au.rb
131
+ test/test_phone_number_mx.rb
132
+ test/test_phone_number_se.rb
97
133
  test/test_phone_number_sg.rb
98
134
  test/test_phone_number_sn.rb
135
+ test/test_ssn.rb
136
+ test/test_ssn_se.rb
137
+ test/test_string.rb
138
+ test/test_time.rb
139
+ test/test_venue.rb
99
140
  ]
100
141
  # = MANIFEST =
101
142
 
data/lib/ffaker.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Faker
2
- VERSION = "1.15.0"
2
+ VERSION = "1.16.0"
3
3
 
4
4
  require 'ffaker/utils/array_utils'
5
5
  require 'ffaker/utils/module_utils'
@@ -7,6 +7,7 @@ module Faker
7
7
  extend ModuleUtils
8
8
 
9
9
  LETTERS = k('a'..'z')
10
+ CAPITAL_LETTERS = k('A'..'Z')
10
11
 
11
12
  def self.numerify(*masks)
12
13
  mask = ArrayUtils.rand(masks.flatten)
@@ -14,42 +15,67 @@ module Faker
14
15
  mask
15
16
  end
16
17
 
17
- def self.letterify(*masks)
18
+ def self.letterify(capitalize = false, *masks)
18
19
  mask = ArrayUtils.rand(masks.flatten)
19
- mask.gsub!(/\?/) { LETTERS.rand }
20
+ if capitalize
21
+ mask.gsub!(/\?/) {CAPITAL_LETTERS.rand}
22
+ else
23
+ mask.gsub!(/\?/) { LETTERS.rand }
24
+ end
20
25
  mask
21
26
  end
22
27
 
23
- def self.bothify(masks)
24
- letterify(numerify(masks))
28
+ def self.bothify(capitalize = false, masks)
29
+ letterify(capitalize, numerify(masks))
25
30
  end
26
31
 
27
32
  autoload :Address, 'ffaker/address'
28
33
  autoload :AddressAU, 'ffaker/address_au'
29
34
  autoload :AddressCA, 'ffaker/address_ca'
30
35
  autoload :AddressDE, 'ffaker/address_de'
36
+ autoload :AddressSE, 'ffaker/address_se'
37
+ autoload :AddressMX, 'ffaker/address_mx'
31
38
  autoload :AddressSN, 'ffaker/address_sn'
32
39
  autoload :AddressUK, 'ffaker/address_uk'
33
40
  autoload :AddressUS, 'ffaker/address_us'
34
41
  autoload :Company, 'ffaker/company'
42
+ autoload :CompanySE, 'ffaker/company_se'
43
+ autoload :Conference, 'ffaker/conference'
44
+ autoload :DizzleIpsum, 'ffaker/dizzle_ipsum'
35
45
  autoload :Education, 'ffaker/education'
36
46
  autoload :Geolocation, 'ffaker/geolocation'
37
47
  autoload :HTMLIpsum, 'ffaker/html_ipsum'
38
48
  autoload :HipsterIpsum, 'ffaker/hipster_ipsum'
49
+ autoload :Identification,'ffaker/identification'
39
50
  autoload :Internet, 'ffaker/internet'
51
+ autoload :InternetSE, 'ffaker/internet_se'
40
52
  autoload :Job, 'ffaker/job'
41
53
  autoload :Lorem, 'ffaker/lorem'
54
+ autoload :LoremAR, 'ffaker/lorem_ar'
42
55
  autoload :LoremCN, 'ffaker/lorem_cn'
56
+ autoload :Movie, 'ffaker/movie'
43
57
  autoload :Name, 'ffaker/name'
44
58
  autoload :NameCN, 'ffaker/name_cn'
45
59
  autoload :NameDE, 'ffaker/name_de'
60
+ autoload :NameGA, 'ffaker/name_ga'
46
61
  autoload :NameJA, 'ffaker/name_ja'
62
+ autoload :NameMX, 'ffaker/name_mx'
47
63
  autoload :NameKR, 'ffaker/name_kr'
48
64
  autoload :NameRU, 'ffaker/name_ru'
65
+ autoload :NameSE, 'ffaker/name_se'
49
66
  autoload :NameSN, 'ffaker/name_sn'
67
+ autoload :NamePH, 'ffaker/name_ph'
50
68
  autoload :PhoneNumber, 'ffaker/phone_number'
51
69
  autoload :PhoneNumberAU, 'ffaker/phone_number_au'
70
+ autoload :PhoneNumberSE, 'ffaker/phone_number_se'
71
+ autoload :PhoneNumberMX, 'ffaker/phone_number_mx'
52
72
  autoload :PhoneNumberSN, 'ffaker/phone_number_sn'
53
73
  autoload :PhoneNumberSG, 'ffaker/phone_number_sg'
54
74
  autoload :Product, 'ffaker/product'
75
+ autoload :SSN, 'ffaker/ssn'
76
+ autoload :SSNSE, 'ffaker/ssn_se'
77
+ autoload :Regexp, 'ffaker/regexp'
78
+ autoload :String, 'ffaker/string'
79
+ autoload :Time, 'ffaker/time'
80
+ autoload :Venue, 'ffaker/venue'
55
81
  end
@@ -41,6 +41,10 @@ module Faker
41
41
  STREET_SUFFIX.rand
42
42
  end
43
43
 
44
+ def building_number
45
+ Faker.numerify ( '#' * rand(3) ) << '###'
46
+ end
47
+
44
48
  def street_name
45
49
  case rand(2)
46
50
  when 0 then "#{Name.last_name} #{street_suffix}"
@@ -49,10 +53,9 @@ module Faker
49
53
  end
50
54
 
51
55
  def street_address(include_secondary = false)
52
- str = ( "#" * rand(3) ) << ('### %s' % street_name)
53
- str << ' ' << secondary_address if include_secondary
54
-
55
- Faker.numerify(str)
56
+ str = "#{building_number} #{street_name}"
57
+ str << " #{secondary_address}" if include_secondary
58
+ str
56
59
  end
57
60
 
58
61
  def secondary_address
@@ -81,6 +84,9 @@ module Faker
81
84
  NEIGHBORHOOD.rand
82
85
  end
83
86
 
87
+ def country
88
+ COUNTRY.rand
89
+ end
84
90
 
85
91
  COMPASS_DIRECTIONS = k %w(North East West South)
86
92
 
@@ -124,5 +130,52 @@ module Faker
124
130
  'Cipriani', 'Brentwood Central', 'Jupiter South/Abacoa', 'Sea Ranch Lakes', 'Schall Circle/Lakeside Green',
125
131
  'Olmsted Falls Central', 'South of Lake Shore Blvd', 'Gates Mills North', 'White Oak South of Columbia Pike',
126
132
  'Rockville East of Hungerford Dr', 'Cleveland Park']
133
+
134
+ COUNTRY = k ["Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla",
135
+ "Antigua and Barbuda", "Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan",
136
+ "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize", "Benin", "Bermuda",
137
+ "Bhutan", "Bolivia", "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil",
138
+ "British Indian Ocean Territory", "British Virgin Islands", "Brunei",
139
+ "Bulgaria", "Burkina Faso", "Burundi",
140
+ "Cambodia", "Cameroon", "Canada", "Cape Verde", "Cayman Islands", "Central African Republic",
141
+ "Chad", "Chile", "China", "Christmas Island", "Cocos Islands", "Colombia", "Comoros",
142
+ "Congo", "Congo", "Cook Islands", "Costa Rica", "Cote d'Ivoire", "Croatia", "Cuba", "Cyprus",
143
+ "Czech Republic",
144
+ "Denmark", "Djibouti", "Dominica", "Dominican Republic",
145
+ "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia",
146
+ "Faroe Islands", "Falkland Islands", "Fiji", "Finland", "France", "French Guiana",
147
+ "French Polynesia", "French Southern Territories",
148
+ "Gabon", "Gambia", "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada",
149
+ "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau", "Guyana",
150
+ "Haiti", "Honduras", "Hong Kong", "Hungary",
151
+ "Iceland", "India", "Indonesia", "Iran", "Iraq", "Ireland", "Isle of Man", "Israel", "Italy",
152
+ "Jamaica", "Japan", "Jersey", "Jordan",
153
+ "Kazakhstan", "Kenya", "Kiribati", "Korea", "Korea", "Kuwait", "Kyrgyz Republic",
154
+ "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia",
155
+ "Libya", "Liechtenstein", "Lithuania", "Luxembourg",
156
+ "Macao", "Macedonia", "Madagascar", "Malawi", "Malaysia", "Maldives", "Mali", "Malta",
157
+ "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
158
+ "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique", "Myanmar",
159
+ "Namibia", "Nauru", "Nepal", "Netherlands Antilles", "Netherlands", "New Caledonia", "New Zealand",
160
+ "Nicaragua", "Niger", "Nigeria", "Niue", "Norfolk Island", "Northern Mariana Islands", "Norway",
161
+ "Oman",
162
+ "Pakistan", "Palau", "Palestinian Territory", "Panama", "Papua New Guinea", "Paraguay", "Peru",
163
+ "Philippines", "Pitcairn Islands", "Poland", "Portugal", "Puerto Rico",
164
+ "Qatar",
165
+ "Reunion", "Romania", "Russian Federation", "Rwanda",
166
+ "St. Barthelemy", "St. Helena", "St. Kitts and Nevis", "St. Lucia", "St. Martin",
167
+ "St. Pierre and Miquelon", "St. Vincent and the Grenadines", "Samoa", "San Marino", "Sao Tome and Principe",
168
+ "Saudi Arabia", "Senegal", "Serbia", "Seychelles", "Sierra Leone", "Singapore", "Slovakia",
169
+ "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia and South Sandwich Islands",
170
+ "Spain", "Sri Lanka", "Sudan", "Suriname", "Svalbard & Jan Mayen Islands", "Swaziland", "Sweden",
171
+ "Switzerland", "Syrian Arab Republic",
172
+ "Taiwan", "Tajikistan", "Tanzania", "Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga",
173
+ "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands", "Tuvalu",
174
+ "Uganda", "Ukraine", "United Arab Emirates", "United Kingdom", "United States of America",
175
+ "US Minor Outlying Islands", "US Virgin Islands", "Uruguay", "Uzbekistan",
176
+ "Vanuatu", "Venezuela", "Vietnam",
177
+ "Wallis and Futuna", "Western Sahara",
178
+ "Yemen",
179
+ "Zambia", "Zimbabwe"]
127
180
  end
128
181
  end
@@ -6,13 +6,11 @@ module Faker
6
6
  extend ModuleUtils
7
7
  extend self
8
8
 
9
- def zip_code(st_abbr = nil)
9
+ def postcode(st_abbr = nil)
10
10
  st_abbr ||= state_abbr
11
- ZIP_CODE[st_abbr][rand(ZIP_CODE[st_abbr].size)]
11
+ POSTCODE[st_abbr][rand(POSTCODE[st_abbr].size)]
12
12
  end
13
13
 
14
- alias :postcode :zip_code
15
-
16
14
  def state
17
15
  STATE.rand
18
16
  end
@@ -21,63 +19,64 @@ module Faker
21
19
  STATE_ABBR.rand
22
20
  end
23
21
 
24
- def city(st_abbr = nil)
22
+ def suburb(st_abbr = nil)
25
23
  st_abbr ||= state_abbr
26
- CITY[st_abbr][rand(CITY[st_abbr].size)]
24
+ SUBURB[st_abbr][rand(SUBURB[st_abbr].size)]
27
25
  end
28
26
 
29
27
  def full_address(st_abbr = nil)
30
28
  st_abbr ||= state_abbr
31
- "#{Faker::Address.street_address}, #{city(st_abbr)} #{st_abbr} #{zip_code}"
29
+ "#{Faker::Address.street_address}, #{suburb(st_abbr)} #{st_abbr} #{postcode}"
32
30
  end
33
31
 
34
- ZIP_FORMATS = k ['####']
35
-
36
32
  # based on areas labeled state (+act) here: http://en.wikipedia.org/wiki/States_and_territories_of_Australia
37
- STATE = k ['Australian Capital Territory', 'New South Wales', 'Queensland', 'South Australia', 'Tasmania', 'Victoria', 'Western Australia']
33
+ STATE = k ['Australian Capital Territory', 'New South Wales', 'Queensland',
34
+ 'South Australia', 'Tasmania', 'Victoria', 'Western Australia']
38
35
 
39
36
  STATE_ABBR = k %w(ACT NSW NT QLD SA TAS VIC WA)
40
37
 
41
38
  # based on http://en.wikipedia.org/wiki/List_of_cities_in_Australia
42
- CITY = {
39
+ SUBURB = {
43
40
  "ACT" => ["Canberra", "Ainslie", "Braddon", "O'Connor"],
44
- "NSW" => ["Albury", "Armidale", "Bankstown", "Bathurst", "Blacktown", "Blue Mountains", "Botany Bay",
45
- "Broken Hill", "Campbelltown", "Canada Bay", "Canterbury", "Cessnock", "Coffs Harbour", "Dubbo",
46
- "Fairfield", "Gosford", "Goulburn", "Grafton", "Greater Taree", "Griffith", "Hawkesbury", "Holroyd",
47
- "Hurstville", "Lake Macquarie", "Lismore", "Lithgow", "Liverpool", "Maitland", "Newcastle", "Orange",
48
- "Parramatta", "Penrith", "Queanbeyan", "Randwick", "Rockdale", "Ryde", "Shellharbour", "Shoalhaven",
41
+ "NSW" => ["Albury", "Armidale", "Bankstown", "Bathurst", "Blacktown",
42
+ "Blue Mountains", "Botany Bay", "Broken Hill", "Campbelltown",
43
+ "Canada Bay", "Canterbury", "Cessnock", "Coffs Harbour", "Dubbo",
44
+ "Fairfield", "Gosford", "Goulburn", "Grafton", "Greater Taree", "Griffith",
45
+ "Hawkesbury", "Holroyd", "Hurstville", "Lake Macquarie", "Lismore", "Lithgow",
46
+ "Liverpool", "Maitland", "Newcastle", "Orange", "Parramatta", "Penrith",
47
+ "Queanbeyan", "Randwick", "Rockdale", "Ryde", "Shellharbour", "Shoalhaven",
49
48
  "Sydney", "Tamworth", "Wagga Wagga", "Willoughby", "Wollongong"],
50
- "NT" => ["Darwin","Palmerston"],
51
- "QLD" => ["Brisbane", "Bundaberg", "Cairns", "Caloundra", "Charters Towers", "Gladstone", "Gold Coast",
52
- "Gympie", "Hervey Bay", "Ipswich", "Logan City", "Mackay", "Maryborough", "Mount Isa", "Redcliffe City",
53
- "Redland City", "Rockhampton", "Sunshine Coast", "Surfers Paradise", "Thuringowa", "Toowoomba", "Townsville",
54
- "Warwick"],
55
- "SA" => ["Adelaide", "Mount Barker", "Mount Gambier", "Murray Bridge", "Port Adelaide", "Port Augusta",
56
- "Port Lincoln", "Port Pirie", "Victor Harbor", "Whyalla"],
49
+ "NT" => ["Darwin", "Palmerston"],
50
+ "QLD" => ["Brisbane", "Bundaberg", "Cairns", "Caloundra", "Charters Towers",
51
+ "Gladstone", "Gold Coast", "Gympie", "Hervey Bay", "Ipswich", "Logan City",
52
+ "Mackay", "Maryborough", "Mount Isa", "Redcliffe City", "Redland City",
53
+ "Rockhampton", "Sunshine Coast", "Surfers Paradise", "Thuringowa",
54
+ "Toowoomba", "Townsville", "Warwick"],
55
+ "SA" => ["Adelaide", "Mount Barker", "Mount Gambier", "Murray Bridge",
56
+ "Port Adelaide", "Port Augusta", "Port Lincoln", "Port Pirie", "Victor Harbor",
57
+ "Whyalla"],
57
58
  "TAS" => ["Burnie", "Clarence", "Devonport", "Glenorchy", "Hobart", "Launceston"],
58
- "VIC" => ["Ararat", "Bairnsdale", "Ballarat", "Benalla", "Bendigo", "Dandenong", "Frankston", "Geelong",
59
- "Hamilton", "Horsham", "Melbourne", "Melton", "Mildura", "Moe", "Morwell", "Sale", "Shepparton",
60
- "Swan Hill", "Traralgon", "Wangaratta", "Warrnambool", "Wodonga"],
61
- "WA" => ["Albany", "Armadale", "Bayswater", "Bunbury", "Canning", "Cockburn", "Fremantle", "Geraldton",
62
- "Gosnells", "Joondalup", "Kalgoorlie", "Mandurah", "Melville", "Nedlands", "Perth", "Rockingham",
63
- "South Perth", "Stirling", "Subiaco", "Swan", "Wanneroo"]
59
+ "VIC" => ["Ararat", "Bairnsdale", "Ballarat", "Benalla", "Bendigo", "Dandenong",
60
+ "Frankston", "Geelong", "Hamilton", "Horsham", "Melbourne", "Melton", "Mildura",
61
+ "Moe", "Morwell", "Sale", "Shepparton", "Swan Hill", "Traralgon", "Wangaratta",
62
+ "Warrnambool", "Wodonga"],
63
+ "WA" => ["Albany", "Armadale", "Bayswater", "Bunbury", "Canning", "Cockburn",
64
+ "Fremantle", "Geraldton", "Gosnells", "Joondalup", "Kalgoorlie", "Mandurah",
65
+ "Melville", "Nedlands", "Perth", "Rockingham", "South Perth", "Stirling",
66
+ "Subiaco", "Swan", "Wanneroo"]
64
67
  }
65
- CITIES = CITY.keys.collect {|k| CITY[k]}.flatten.sort
66
68
 
67
69
  # based on http://en.wikipedia.org/wiki/Postcodes_in_Australia
68
- ZIP_CODE = {
69
- "NSW" => [("1000".."1999").to_a + ("2000".."2599").to_a + ("2619".."2898").to_a + ("2921".."2999").to_a].flatten,
70
- "ACT" => [("0200".."0299").to_a + ("2600".."2618").to_a + ("2900".."2920").to_a].flatten,
71
- "VIC" => [("3000".."3999").to_a + ("8000".."8999").to_a].flatten,
72
- "QLD" => [("4000".."4999").to_a + ("9000".."9999").to_a].flatten,
73
- "SA" => [("5000".."5799").to_a + ("5800".."5999").to_a].flatten,
74
- "WA" => [("6000".."6797").to_a + ("6800".."6999").to_a].flatten,
75
- "TAS" => [("7000".."7799").to_a + ("7800".."7999").to_a].flatten,
76
- "NT" => [("0800".."0899").to_a + ("0900".."0999").to_a].flatten
70
+ POSTCODE = {
71
+ 'NSW' => [('1000'..'1999').to_a + ('2000'..'2599').to_a + ('2619'..'2898').to_a + ('2921'..'2999').to_a].flatten,
72
+ 'ACT' => [('0200'..'0299').to_a + ('2600'..'2618').to_a + ('2900'..'2920').to_a].flatten,
73
+ 'VIC' => [('3000'..'3999').to_a + ('8000'..'8999').to_a].flatten,
74
+ 'QLD' => [('4000'..'4999').to_a + ('9000'..'9999').to_a].flatten,
75
+ 'SA' => [('5000'..'5799').to_a + ('5800'..'5999').to_a].flatten,
76
+ 'WA' => [('6000'..'6797').to_a + ('6800'..'6999').to_a].flatten,
77
+ 'TAS' => [('7000'..'7799').to_a + ('7800'..'7999').to_a].flatten,
78
+ 'NT' => [('0800'..'0899').to_a + ('0900'..'0999').to_a].flatten
77
79
  }
78
- ZIP_CODES = ZIP_CODE.keys.collect {|k| ZIP_CODE[k]}.flatten.sort
79
80
 
80
81
  end
81
82
  end
82
-
83
-