Sha256: 917ff44dff935645946da0d83cf8d4c02ba9c93808280bfa8463a16cf08c7b9d
Contents?: true
Size: 1.72 KB
Versions: 1
Compression:
Stored size: 1.72 KB
Contents
module GovKit module CA module PostalCode # The set of postal code to electoral district strategies. class StrategySet # Stores the strategy set. # @return [Array<Strategy::Base>] the strategy set def self.strategies @@strategies ||= [] end # Adds a strategy to the strategy set. # @param [Strategy::Base] strategy a strategy # @return [Array<Strategy::Base>] the strategy set def self.register(strategy) strategies << strategy end # Runs through the strategies in order of registration. Returns the # output of the first strategy to successfully determine electoral # districts from a postal code. # @param [String] postal_code a postal code # @return [Array<Fixnum>] the electoral districts within the postal code # @raise [ResourceNotFound] if no strategy succeeds def self.run(postal_code) strategies.each do |strategy| begin electoral_districts = strategy.new(postal_code).electoral_districts return electoral_districts if electoral_districts rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, Errno::ETIMEDOUT, EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError, Net::ProtocolError # Do nothing. Continue. end end raise ResourceNotFound end end end end end require 'gov_kit-ca/postal_code/strategy/base' require 'gov_kit-ca/postal_code/strategy/elections-ca' require 'gov_kit-ca/postal_code/strategy/cbc-ca' require 'gov_kit-ca/postal_code/strategy/ndp-ca' require 'gov_kit-ca/postal_code/strategy/greenparty-ca'
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
govkit-ca-0.0.2 | lib/gov_kit-ca/postal_code/strategy.rb |