check_yo_spelling 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +4 -0
  3. data/CHANGELOG.rdoc +2 -0
  4. data/Gemfile.lock +35 -0
  5. data/README.md +36 -0
  6. data/Rakefile +6 -0
  7. data/check_yo_spelling.gemspec +24 -0
  8. data/data/.keep +0 -0
  9. data/data/alabama_cities.yml +553 -0
  10. data/data/alaska_cities.yml +246 -0
  11. data/data/arizona_cities.yml +397 -0
  12. data/data/arkansas_cities.yml +499 -0
  13. data/data/california_cities.yml +1417 -0
  14. data/data/colorado_cities.yml +404 -0
  15. data/data/connecticut_cities.yml +142 -0
  16. data/data/delaware_cities.yml +76 -0
  17. data/data/florida_cities.yml +900 -0
  18. data/data/georgia_cities.yml +609 -0
  19. data/data/hawaii_cities.yml +146 -0
  20. data/data/idaho_cities.yml +206 -0
  21. data/data/illinois_cities.yml +1315 -0
  22. data/data/indiana_cities.yml +654 -0
  23. data/data/iowa_cities.yml +869 -0
  24. data/data/kansas_cities.yml +554 -0
  25. data/data/kentucky_cities.yml +510 -0
  26. data/data/louisiana_cities.yml +469 -0
  27. data/data/maine_cities.yml +132 -0
  28. data/data/maryland_cities.yml +483 -0
  29. data/data/massachusetts_cities.yml +243 -0
  30. data/data/michigan_cities.yml +683 -0
  31. data/data/minnesota_cities.yml +805 -0
  32. data/data/mississippi_cities.yml +357 -0
  33. data/data/missouri_cities.yml +887 -0
  34. data/data/montana_cities.yml +307 -0
  35. data/data/nebraska_cities.yml +452 -0
  36. data/data/nevada_cities.yml +117 -0
  37. data/data/new_hampshire_cities.yml +97 -0
  38. data/data/new_jersey_cities.yml +536 -0
  39. data/data/new_mexico_cities.yml +381 -0
  40. data/data/new_york_cities.yml +1173 -0
  41. data/data/north_carolina_cities.yml +721 -0
  42. data/data/north_dakota_cities.yml +238 -0
  43. data/data/ohio_cities.yml +1177 -0
  44. data/data/oklahoma_cities.yml +639 -0
  45. data/data/oregon_cities.yml +353 -0
  46. data/data/pennsylvania_cities.yml +1718 -0
  47. data/data/rhode_island_cities.yml +35 -0
  48. data/data/south_carolina_cities.yml +378 -0
  49. data/data/south_dakota_cities.yml +288 -0
  50. data/data/states.yml +51 -0
  51. data/data/tennessee_cities.yml +424 -0
  52. data/data/texas_cities.yml +1619 -0
  53. data/data/utah_cities.yml +314 -0
  54. data/data/vermont_cities.yml +118 -0
  55. data/data/virginia_cities.yml +579 -0
  56. data/data/washington_cities.yml +599 -0
  57. data/data/west_virginia_cities.yml +387 -0
  58. data/data/wisconsin_cities.yml +748 -0
  59. data/data/wyoming_cities.yml +156 -0
  60. data/gemfile +6 -0
  61. data/lib/check_yo_spelling.rb +4 -0
  62. data/lib/check_yo_spelling/usa.rb +52 -0
  63. data/lib/check_yo_spelling/version.rb +3 -0
  64. data/pkg/spell_checker-0.1.0.gem +0 -0
  65. data/spec/lib/usa_city_checker_spec.rb +16 -0
  66. data/spec/lib/usa_state_checker_spec.rb +16 -0
  67. data/spec/spec_helper.rb +3 -0
  68. metadata +159 -0
@@ -0,0 +1,156 @@
1
+ ---
2
+ - afton
3
+ - albin
4
+ - alpine
5
+ - alpine northeast
6
+ - alpine northwest
7
+ - alta
8
+ - antelope valley crestview
9
+ - arapahoe
10
+ - auburn
11
+ - baggs
12
+ - bairoil
13
+ - bar nunn
14
+ - basin
15
+ - bear river
16
+ - bedford
17
+ - bessemer bend
18
+ - big horn
19
+ - big piney
20
+ - boulder
21
+ - boulder flats
22
+ - brookhurst
23
+ - buffalo
24
+ - burlington
25
+ - burns
26
+ - byron
27
+ - casper
28
+ - casper mountain
29
+ - centennial
30
+ - cheyenne
31
+ - chugcreek
32
+ - chugwater
33
+ - clearmont
34
+ - clearview acres
35
+ - cody
36
+ - cokeville
37
+ - cora
38
+ - cowley
39
+ - crowheart
40
+ - daniel
41
+ - dayton
42
+ - deaver
43
+ - diamondville
44
+ - douglas
45
+ - dubois
46
+ - east thermopolis
47
+ - eden
48
+ - edgerton
49
+ - elk mountain
50
+ - encampment
51
+ - ethete
52
+ - etna
53
+ - evanston
54
+ - evansville
55
+ - fairview
56
+ - farson
57
+ - fort bridger
58
+ - fort laramie
59
+ - fort washakie
60
+ - fox farm college
61
+ - frannie
62
+ - freedom
63
+ - garland
64
+ - gillette
65
+ - glendo
66
+ - glenrock
67
+ - granger
68
+ - green river
69
+ - greybull
70
+ - grover
71
+ - guernsey
72
+ - hanna
73
+ - hartrandt
74
+ - hill view heights
75
+ - hoback
76
+ - homa hills
77
+ - hudson
78
+ - hulett
79
+ - jackson
80
+ - james town
81
+ - johnstown
82
+ - kaycee
83
+ - kelly
84
+ - kemmerer
85
+ - la barge
86
+ - la grange
87
+ - lander
88
+ - laramie
89
+ - lingle
90
+ - lovell
91
+ - lucerne
92
+ - lusk
93
+ - lyman
94
+ - mammoth
95
+ - manderson
96
+ - marbleton
97
+ - meadow acres
98
+ - medicine bow
99
+ - meeteetse
100
+ - midwest
101
+ - mills
102
+ - moorcroft
103
+ - moose wilson road
104
+ - mountain view
105
+ - newcastle
106
+ - nordic
107
+ - north rock springs
108
+ - osage
109
+ - osmond
110
+ - parkman
111
+ - pavillion
112
+ - pine bluffs
113
+ - pine haven
114
+ - pinedale
115
+ - powell
116
+ - purple sage
117
+ - rafter j ranch
118
+ - ralston
119
+ - ranchester
120
+ - ranchettes
121
+ - rawlins
122
+ - red butte
123
+ - reliance
124
+ - riverton
125
+ - rock river
126
+ - rock springs
127
+ - rolling hills
128
+ - saratoga
129
+ - sheridan
130
+ - shoshoni
131
+ - sinclair
132
+ - sleepy hollow
133
+ - smoot
134
+ - south greeley
135
+ - south park
136
+ - star valley ranch
137
+ - story
138
+ - sundance
139
+ - superior
140
+ - ten sleep
141
+ - teton village
142
+ - thayne
143
+ - thermopolis
144
+ - torrington
145
+ - turnerville
146
+ - upton
147
+ - urie
148
+ - vista west
149
+ - wamsutter
150
+ - warren afb
151
+ - wheatland
152
+ - wilson
153
+ - worland
154
+ - wright
155
+ - y o ranch
156
+ - yoder
data/gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gem 'levenshtein', '~> 0.2.2'
4
+ gem 'geolookup', '~> 0.5.10'
5
+
6
+ gemspec
@@ -0,0 +1,4 @@
1
+ require 'check_yo_spelling/usa'
2
+
3
+ module CheckYoSpelling
4
+ end
@@ -0,0 +1,52 @@
1
+ module CheckYoSpelling
2
+ class USA
3
+ # Use the Levenshtein gem to find the closest match
4
+ # NOTE: the gem treats replacement edits as a distance of 2
5
+ MIN_DISTANCE = 4
6
+ class << self
7
+ # Find the closest existing city in the state
8
+ def check_city city, state
9
+ full_state = Geolookup::USA::State.abbreviation_to_name state
10
+ return nil if full_state.nil?
11
+ @@city_arrays ||= Hash.new
12
+ filename = "#{full_state.downcase.gsub(" ", "_")}_cities.yml"
13
+ @@city_arrays[filename] ||= words(filename)
14
+ check city, @@city_arrays[filename]
15
+ end
16
+
17
+ # Find the closest existing state
18
+ def check_state state
19
+ @@states ||= words("states.yml")
20
+ check state, @@states
21
+ end
22
+
23
+ private
24
+ def check word, nwords
25
+ word.downcase!
26
+ best_match = nil # return nil if no match
27
+ current_distance = MIN_DISTANCE # only accept possible matches that are close enough
28
+ nwords.each do |proposed|
29
+ distance = Levenshtein.distance word, proposed.downcase
30
+ if distance < current_distance
31
+ best_match = proposed
32
+ current_distance = distance
33
+ end
34
+ break if distance == 0 # Found perfect match
35
+ end
36
+ best_match = titleize(best_match) if best_match
37
+ best_match
38
+ end
39
+
40
+ def words filename
41
+ YAML.load_file(File.join(File.dirname(__FILE__), "/../../data/", filename))
42
+ end
43
+
44
+ # Basic titleize functionality ex: rhode island => Rhode Island
45
+ def titleize string
46
+ string.gsub(/\w+/) do |word|
47
+ word.capitalize
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,3 @@
1
+ module CheckYoSpelling
2
+ VERSION = "0.1.0"
3
+ end
Binary file
@@ -0,0 +1,16 @@
1
+ describe "CheckYoSpelling::USA" do
2
+ it "should check city names" do
3
+ city = CheckYoSpelling::USA.check_city "Los Angelos", "CA"
4
+ expect(city).to eq("Los Angeles")
5
+ end
6
+
7
+ it "should return the same city name for a correct city" do
8
+ city = CheckYoSpelling::USA.check_city "Los Angeles", "CA"
9
+ expect(city).to eq("Los Angeles")
10
+ end
11
+
12
+ it "should return nil for city names that are too incorrect" do
13
+ city = CheckYoSpelling::USA.check_city "Los Angelesaaaaa", "CA"
14
+ expect(city).to eq(nil)
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ describe "CheckYoSpelling::USA" do
2
+ it "should check state names" do
3
+ state = CheckYoSpelling::USA.check_state "Californa"
4
+ expect(state).to eq("California")
5
+ end
6
+
7
+ it "should return the same state name for a correct state" do
8
+ state = CheckYoSpelling::USA.check_state "California"
9
+ expect(state).to eq("California")
10
+ end
11
+
12
+ it "should return nil for state names that are too incorrect" do
13
+ state = CheckYoSpelling::USA.check_state "Californiaaaaaa"
14
+ expect(state).to eq(nil)
15
+ end
16
+ end
@@ -0,0 +1,3 @@
1
+ require 'check_yo_spelling'
2
+ require 'geolookup'
3
+ require 'levenshtein'
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: check_yo_spelling
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Austin Fonacier
8
+ - Eric Kuecks
9
+ - Emily Lutz
10
+ autorequire:
11
+ bindir: bin
12
+ cert_chain: []
13
+ date: 2015-07-08 00:00:00.000000000 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: bundler
17
+ requirement: !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - - "~>"
20
+ - !ruby/object:Gem::Version
21
+ version: '1.5'
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.5'
29
+ - !ruby/object:Gem::Dependency
30
+ name: rake
31
+ requirement: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
36
+ type: :development
37
+ prerelease: false
38
+ version_requirements: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: '0'
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
45
+ requirement: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 3.0.0.beta1
50
+ type: :development
51
+ prerelease: false
52
+ version_requirements: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: 3.0.0.beta1
57
+ description: Spell checker for U.S. cities and states
58
+ email:
59
+ - austin@spokeo.com
60
+ - ekuecks@ucla.edu
61
+ - emily.lutz@berkeley.edu
62
+ executables: []
63
+ extensions: []
64
+ extra_rdoc_files: []
65
+ files:
66
+ - ".rspec"
67
+ - CHANGELOG.rdoc
68
+ - Gemfile.lock
69
+ - README.md
70
+ - Rakefile
71
+ - check_yo_spelling.gemspec
72
+ - data/.keep
73
+ - data/alabama_cities.yml
74
+ - data/alaska_cities.yml
75
+ - data/arizona_cities.yml
76
+ - data/arkansas_cities.yml
77
+ - data/california_cities.yml
78
+ - data/colorado_cities.yml
79
+ - data/connecticut_cities.yml
80
+ - data/delaware_cities.yml
81
+ - data/florida_cities.yml
82
+ - data/georgia_cities.yml
83
+ - data/hawaii_cities.yml
84
+ - data/idaho_cities.yml
85
+ - data/illinois_cities.yml
86
+ - data/indiana_cities.yml
87
+ - data/iowa_cities.yml
88
+ - data/kansas_cities.yml
89
+ - data/kentucky_cities.yml
90
+ - data/louisiana_cities.yml
91
+ - data/maine_cities.yml
92
+ - data/maryland_cities.yml
93
+ - data/massachusetts_cities.yml
94
+ - data/michigan_cities.yml
95
+ - data/minnesota_cities.yml
96
+ - data/mississippi_cities.yml
97
+ - data/missouri_cities.yml
98
+ - data/montana_cities.yml
99
+ - data/nebraska_cities.yml
100
+ - data/nevada_cities.yml
101
+ - data/new_hampshire_cities.yml
102
+ - data/new_jersey_cities.yml
103
+ - data/new_mexico_cities.yml
104
+ - data/new_york_cities.yml
105
+ - data/north_carolina_cities.yml
106
+ - data/north_dakota_cities.yml
107
+ - data/ohio_cities.yml
108
+ - data/oklahoma_cities.yml
109
+ - data/oregon_cities.yml
110
+ - data/pennsylvania_cities.yml
111
+ - data/rhode_island_cities.yml
112
+ - data/south_carolina_cities.yml
113
+ - data/south_dakota_cities.yml
114
+ - data/states.yml
115
+ - data/tennessee_cities.yml
116
+ - data/texas_cities.yml
117
+ - data/utah_cities.yml
118
+ - data/vermont_cities.yml
119
+ - data/virginia_cities.yml
120
+ - data/washington_cities.yml
121
+ - data/west_virginia_cities.yml
122
+ - data/wisconsin_cities.yml
123
+ - data/wyoming_cities.yml
124
+ - gemfile
125
+ - lib/check_yo_spelling.rb
126
+ - lib/check_yo_spelling/usa.rb
127
+ - lib/check_yo_spelling/version.rb
128
+ - pkg/spell_checker-0.1.0.gem
129
+ - spec/lib/usa_city_checker_spec.rb
130
+ - spec/lib/usa_state_checker_spec.rb
131
+ - spec/spec_helper.rb
132
+ homepage: https://github.com/spokeo/CheckYoSpelling
133
+ licenses:
134
+ - MIT
135
+ metadata: {}
136
+ post_install_message:
137
+ rdoc_options: []
138
+ require_paths:
139
+ - lib
140
+ required_ruby_version: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ required_rubygems_version: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - ">="
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ requirements: []
151
+ rubyforge_project:
152
+ rubygems_version: 2.4.3
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: Spell checker for U.S. cities and states
156
+ test_files:
157
+ - spec/lib/usa_city_checker_spec.rb
158
+ - spec/lib/usa_state_checker_spec.rb
159
+ - spec/spec_helper.rb