area 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/area/array.rb +7 -4
- data/lib/area/integer.rb +11 -16
- data/lib/area/string.rb +13 -29
- data/lib/area/version.rb +1 -1
- data/test/unit/area_test.rb +25 -4
- metadata +2 -2
data/lib/area/array.rb
CHANGED
@@ -4,14 +4,15 @@ class Array
|
|
4
4
|
Area::ZIP_CODES.each do |row|
|
5
5
|
if row[3] == self[0].to_s and row[4] == self[1].to_s
|
6
6
|
if options[:city]
|
7
|
-
|
7
|
+
@area = row[1]
|
8
8
|
elsif options[:state]
|
9
|
-
|
9
|
+
@area = row[2]
|
10
10
|
else
|
11
|
-
|
11
|
+
@area =row[1] + ', ' + row[2]
|
12
12
|
end
|
13
13
|
end
|
14
14
|
end
|
15
|
+
@area || nil
|
15
16
|
end
|
16
17
|
|
17
18
|
def to_zip
|
@@ -34,8 +35,10 @@ class Array
|
|
34
35
|
def to_gmt_offset
|
35
36
|
Area::ZIP_CODES.each do |row|
|
36
37
|
if row[3] == self[0].to_s and row[4] == self[1].to_s
|
37
|
-
|
38
|
+
@offset = row[5]
|
38
39
|
end
|
39
40
|
end
|
41
|
+
@offset || nil
|
40
42
|
end
|
43
|
+
|
41
44
|
end
|
data/lib/area/integer.rb
CHANGED
@@ -3,45 +3,40 @@ class Integer
|
|
3
3
|
def to_region(options = {})
|
4
4
|
if self.to_s.length == 3 # an area code
|
5
5
|
Area::AREA_CODES.each do |row|
|
6
|
-
if row.first == self.to_s
|
7
|
-
return row.last
|
8
|
-
end
|
6
|
+
@region = row.last if row.first == self.to_s
|
9
7
|
end
|
10
8
|
else
|
11
|
-
#
|
9
|
+
# puts "not an area code"
|
12
10
|
end
|
11
|
+
@region || nil
|
13
12
|
end
|
14
13
|
|
15
14
|
def to_latlon
|
16
15
|
Area::ZIP_CODES.each do |row|
|
17
|
-
if row.first == self.to_s
|
18
|
-
return row[3] + ', ' + row[4]
|
19
|
-
end
|
16
|
+
@coordinates = row[3] + ', ' + row[4] if row.first == self.to_s
|
20
17
|
end
|
18
|
+
@coordinates || nil
|
21
19
|
end
|
22
20
|
|
23
21
|
def to_lat
|
24
22
|
Area::ZIP_CODES.each do |row|
|
25
|
-
if row.first == self.to_s
|
26
|
-
return row[3]
|
27
|
-
end
|
23
|
+
@lat = row[3] if row.first == self.to_s
|
28
24
|
end
|
25
|
+
@lat || nil
|
29
26
|
end
|
30
27
|
|
31
28
|
def to_lon
|
32
29
|
Area::ZIP_CODES.each do |row|
|
33
|
-
if row.first == self.to_s
|
34
|
-
return row[4]
|
35
|
-
end
|
30
|
+
@lon = row[4] if row.first == self.to_s
|
36
31
|
end
|
32
|
+
@lon || nil
|
37
33
|
end
|
38
34
|
|
39
35
|
def to_gmt_offset
|
40
36
|
Area::ZIP_CODES.each do |row|
|
41
|
-
if row.first == self.to_s
|
42
|
-
return row[5]
|
43
|
-
end
|
37
|
+
@offset = row[5] if row.first == self.to_s
|
44
38
|
end
|
39
|
+
@offset || nil
|
45
40
|
end
|
46
41
|
|
47
42
|
end
|
data/lib/area/string.rb
CHANGED
@@ -3,37 +3,30 @@ class String
|
|
3
3
|
def to_area
|
4
4
|
@area_codes = []
|
5
5
|
Area::AREA_CODES.each do |row|
|
6
|
-
if row[1].upcase == self
|
7
|
-
@area_codes.push(row.first)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
if @area_codes.length == 1
|
11
|
-
return @area_codes.first
|
12
|
-
else
|
13
|
-
return @area_codes
|
6
|
+
@area_codes.push(row.first) if row[1].upcase == self
|
14
7
|
end
|
8
|
+
@area_codes.length == 1 ? @area_codes.first : @area_codes
|
15
9
|
end
|
16
10
|
|
17
11
|
def to_region(options = {})
|
18
12
|
if self.to_s.length == 3 # an area code
|
19
13
|
Area::AREA_CODES.each do |row|
|
20
|
-
if row.first == self.to_s
|
21
|
-
return row.last
|
22
|
-
end
|
14
|
+
@region = row.last if row.first == self.to_s
|
23
15
|
end
|
24
16
|
else # more than 3 digits, assume a zipcode
|
25
17
|
Area::ZIP_CODES.each do |row|
|
26
18
|
if row.first == self.to_s
|
27
19
|
if options[:city]
|
28
|
-
|
20
|
+
@region = row[1]
|
29
21
|
elsif options[:state]
|
30
|
-
|
22
|
+
@region = row[2]
|
31
23
|
else
|
32
|
-
|
24
|
+
@region = row[1] + ', ' + row[2]
|
33
25
|
end
|
34
26
|
end
|
35
27
|
end
|
36
28
|
end
|
29
|
+
@region || nil
|
37
30
|
end
|
38
31
|
|
39
32
|
def to_zip
|
@@ -44,30 +37,21 @@ class String
|
|
44
37
|
@area.collect! { |a| a.strip }
|
45
38
|
|
46
39
|
Area::ZIP_CODES.each do |row|
|
47
|
-
if row[1] && row[1].downcase == @area[0].downcase
|
48
|
-
@zip_codes.push(row[0])
|
49
|
-
end
|
40
|
+
@zip_codes.push(row[0]) if row[1] && row[1].downcase == @area[0].downcase and row[2].downcase == @area[1].downcase
|
50
41
|
end
|
51
42
|
else
|
52
43
|
Area::ZIP_CODES.each do |row|
|
53
|
-
if row[1] and row[1].downcase == self.downcase
|
54
|
-
@zip_codes.push(row[0])
|
55
|
-
end
|
44
|
+
@zip_codes.push(row[0]) if row[1] and row[1].downcase == self.downcase
|
56
45
|
end
|
57
46
|
end
|
58
|
-
|
59
|
-
if @zip_codes.length == 1
|
60
|
-
return @zip_codes.first
|
61
|
-
else
|
62
|
-
return @zip_codes
|
63
|
-
end
|
47
|
+
@zip_codes.length == 1 ? @zip_codes.first : @zip_codes
|
64
48
|
end
|
65
49
|
|
66
50
|
def to_gmt_offset
|
67
51
|
Area::ZIP_CODES.each do |row|
|
68
|
-
if row[2].upcase == self.to_s.upcase
|
69
|
-
return row[5]
|
70
|
-
end
|
52
|
+
@offset = row[5] if row[2] != nil and row[2].upcase == self.to_s.upcase
|
71
53
|
end
|
54
|
+
@offset || nil
|
72
55
|
end
|
56
|
+
|
73
57
|
end
|
data/lib/area/version.rb
CHANGED
data/test/unit/area_test.rb
CHANGED
@@ -5,9 +5,9 @@ class TestInteger < MiniTest::Unit::TestCase
|
|
5
5
|
|
6
6
|
|
7
7
|
def test_that_it_converts_area_code_to_region
|
8
|
-
assert_equal "NY", 646.to_region
|
8
|
+
assert_equal "NY", 646.to_region
|
9
9
|
end
|
10
|
-
|
10
|
+
|
11
11
|
def test_that_it_converts_zip_code_to_latlon
|
12
12
|
assert_equal "40.71209, -73.95427", 11211.to_latlon
|
13
13
|
end
|
@@ -24,14 +24,22 @@ class TestInteger < MiniTest::Unit::TestCase
|
|
24
24
|
assert_equal "-5", 11211.to_gmt_offset
|
25
25
|
end
|
26
26
|
|
27
|
+
def test_that_it_handles_bad_area_codes
|
28
|
+
assert_nil(1234.to_region)
|
29
|
+
assert_nil(1234.to_latlon)
|
30
|
+
assert_nil(1234.to_lat)
|
31
|
+
assert_nil(1234.to_lon)
|
32
|
+
assert_nil(1234.to_gmt_offset)
|
33
|
+
end
|
34
|
+
|
27
35
|
end
|
28
36
|
|
29
37
|
class TestString < MiniTest::Unit::TestCase
|
30
38
|
|
31
39
|
def test_that_it_converts_area_code_to_region
|
32
|
-
assert_equal "NY", "646".to_region
|
40
|
+
assert_equal "NY", "646".to_region
|
33
41
|
end
|
34
|
-
|
42
|
+
|
35
43
|
def test_that_it_converts_zip_code_to_region
|
36
44
|
assert_equal "Brooklyn, NY", "11211".to_region
|
37
45
|
end
|
@@ -59,6 +67,13 @@ class TestString < MiniTest::Unit::TestCase
|
|
59
67
|
assert_equal "-5", "ny".to_gmt_offset
|
60
68
|
end
|
61
69
|
|
70
|
+
def test_that_it_handles_incorrect_zips
|
71
|
+
assert_equal [], "9888".to_zip
|
72
|
+
assert_nil "9888".to_region
|
73
|
+
assert_equal [], "9888".to_area
|
74
|
+
assert_nil "9888".to_gmt_offset
|
75
|
+
end
|
76
|
+
|
62
77
|
end
|
63
78
|
|
64
79
|
class TestArray < MiniTest::Unit::TestCase
|
@@ -83,4 +98,10 @@ class TestArray < MiniTest::Unit::TestCase
|
|
83
98
|
assert_equal "11211", [40.71209123228157, -73.95488409019887].to_zip
|
84
99
|
end
|
85
100
|
|
101
|
+
def test_that_it_handles_incorrect_values
|
102
|
+
assert_nil [12.12345, -40.23423].to_zip
|
103
|
+
assert_nil [12.12345, -40.23423].to_region
|
104
|
+
assert_nil [12.12345, -40.23423].to_gmt_offset
|
105
|
+
end
|
106
|
+
|
86
107
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: area
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: fastercsv
|