Sha256: e8c59e4f8012e4b02e0b41dd3b8ca369224a9caf3d7a6362fadeb1b0604c7e99

Contents?: true

Size: 902 Bytes

Versions: 2

Compression:

Stored size: 902 Bytes

Contents

class Gman
  class Locality
    AFFINITY_NAMESPACES = %w(state dst cog).freeze

    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
  #  * ci.foo.il.us
  #
  # Not:
  #  * state.foo.il.us
  #  * foo.ci.il.us
  #  * k12.il.us
  #  * ci.foo.zx.us
  def locality?
    !domain.to_s.match(Locality::REGEX).nil?
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gman-6.0.1 lib/gman/locality.rb
gman-6.0.0 lib/gman/locality.rb