Sha256: 09552f33a9d41e5ef5fdfc8b9053b2271852511fa069b816488a249a68df8ba6

Contents?: true

Size: 909 Bytes

Versions: 6

Compression:

Stored size: 909 Bytes

Contents

require 'yaml'
module CountryList
  class Data
    @@country_codes = nil
    @@cached_countries = nil

    def initialize(country_code)
      @country_code = country_code.to_s.upcase
      Data.load_cached_countries unless @@cached_countries
    end

    def call
      @@cached_countries[@country_code]
    end

    class << self

      def datafile_path(file_array)
        File.join([File.dirname(__FILE__)] + file_array)
      end

      def country_codes
        @@country_codes ||= load_country_codes!
      end

      def load_cached_countries
        @@cached_countries ||= load_countries!
      end
      alias_method :countries, :load_cached_countries

      def load_countries!
        Marshal.load(File.binread(datafile_path(%w(cache countries ))))
      end

      def load_country_codes!
        YAML.load_file(datafile_path(%w(country_data country_codes.yaml)))
      end

    end

  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
country_list-0.1.6 lib/country_list/data.rb
country_list-0.1.5 lib/country_list/data.rb
country_list-0.1.4 lib/country_list/data.rb
country_list-0.1.3 lib/country_list/data.rb
country_list-0.1.2 lib/country_list/data.rb
country_list-0.1.1 lib/country_list/data.rb