Sha256: ebccf24ce23ca0a19fc67476b21c470e0d0f6820147416a13293ca04bc8c0a57
Contents?: true
Size: 1.02 KB
Versions: 1
Compression:
Stored size: 1.02 KB
Contents
require 'active_support/core_ext/hash/keys' require 'active_support/inflector' require 'crawler/base' require 'crawler/operator/configuration' module Crawler module Operator include Base PROVIDERS = [] def self.add_provider(provider_name, options = {}) options.assert_valid_keys :insert_at PROVIDERS.insert(options[:insert_at] || -1, provider_name) end def self.resolve(name, address) full_address = address && "#{address.dig(:street)}, #{address.dig(:zipcode)} #{address.dig(:city)}, #{address.dig(:country)&.upcase}" operator = PROVIDERS.reduce(nil) do |_acc, provider_name| camelized = ActiveSupport::Inflector.camelize("crawler/operator/providers/#{provider_name.to_s}") klass = ActiveSupport::Inflector.constantize(camelized) result = klass.resolve(name, full_address) break result if result end return operator if operator return unless config.default_provider config.default_provider.resolve(name, full_address) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
crawler-operator-core-1.0.4 | lib/crawler/operator.rb |