area 0.6.0 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|