lib/gman/locality.rb in gman-5.0.9 vs lib/gman/locality.rb in gman-6.0.0
- old
+ new
@@ -1,17 +1,29 @@
class Gman
+ class Locality
+ AFFINITY_NAMESPACES = %w(state dst cog).freeze
- LOCALITY_REGEX = %r{
- (
- (state|dst|cog)
- |
- (ci|co|borough|boro|city|county|parish|town|twp|vi|vil|village)\.[a-z-]+
- )
- \.(ak|al|ar|az|ca|co|ct|dc|de|fl|ga|hi|ia|id|il|in|ks|ky|la|ma|md|me|mi|mn|mo|ms|mt|nc|nd|ne|nh|nj|nm|nv|ny|oh|ok|or|pa|ri|sc|sd|tn|tx|um|ut|va|vt|wa|wi|wv|wy)
- \.us
- }x
+ STATES = %w(
+ ak al ar az ca co ct dc de fl ga hi ia id il in ks ky
+ la ma md me mi mn mo ms mt nc nd ne nh nj nm nv ny oh
+ ok or pa ri sc sd tn tx um ut va vt wa wi wv wy
+ ).freeze
+ LOCALITY_DOMAINS = %w(
+ ci co borough boro city county
+ parish town twp vi vil village
+ ).freeze
+
+ REGEX = /
+ (
+ (#{Regexp.union(AFFINITY_NAMESPACES)})
+ |
+ (#{Regexp.union(LOCALITY_DOMAINS)})\.[a-z-]+
+ )\.(#{Regexp.union(STATES)})\.us
+ /x
+ end
+
# Second level .us domains for states and locality
# See http://en.wikipedia.org/wiki/.us
#
# Examples:
# * foo.state.il.us
@@ -21,8 +33,8 @@
# * state.foo.il.us
# * foo.ci.il.us
# * k12.il.us
# * ci.foo.zx.us
def locality?
- !!(domain.to_s =~ LOCALITY_REGEX)
+ !domain.to_s.match(Locality::REGEX).nil?
end
end