Sha256: 8b6b1f319d59b0543c26d14e652e67394424a335d8887a700f4b6e2ecba5f1e7

Contents?: true

Size: 1.31 KB

Versions: 8

Compression:

Stored size: 1.31 KB

Contents

module Barometer
  module Query
    module Format
      class NotFound < StandardError; end

      @@formats = []

      def self.formats=(formats)
        @@formats = formats
      end

      def self.formats
        @@formats
      end

      def self.register(key, format)
        @@formats ||= []
        @@formats << [ key.to_sym, format ] unless has?(key)
      end

      def self.has?(key)
        !@@formats.select{|format| format[0] == key.to_sym}.empty?
      end

      def self.find(key)
        @@formats ||= []
        format = @@formats.select{|format| format[0] == key.to_sym}

        if format && format[0]
          format[0][1]
        else
          raise NotFound
        end
      end

      def self.match?(q)
        @@formats.detect do |key, klass|
          if klass.is?(q)
            yield(key, klass)
            true
          end
        end
      end
    end
  end
end

require_relative 'formats/base'
require_relative 'formats/short_zipcode'
require_relative 'formats/zipcode'
require_relative 'formats/postalcode'
require_relative 'formats/weather_id'
require_relative 'formats/coordinates'
require_relative 'formats/icao'
require_relative 'formats/ipv4_address'
require_relative 'formats/woe_id'
require_relative 'formats/unknown'
require_relative 'formats/noaa_station_id'
require_relative 'formats/geocode'

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
barometer-0.9.7 lib/barometer/query/format.rb
barometer-0.9.6 lib/barometer/query/format.rb
barometer-0.9.5 lib/barometer/query/format.rb
barometer-0.9.4 lib/barometer/query/format.rb
barometer-0.9.3 lib/barometer/query/format.rb
barometer-0.9.2 lib/barometer/query/format.rb
barometer-0.9.1 lib/barometer/query/format.rb
barometer-0.9.0 lib/barometer/query/format.rb