Sha256: b1e95d0c408d463bfcbb1d43c58750cdd61e6439f50f10b78c0b4f85e60fbca5
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
module ProductSpy class Host class Parser def initialize(regexp, pk_keys) @regexp = regexp @pk_keys = pk_keys end def get_pk(url) if m = @regexp.match(url) return @pk_keys.map do |i| m[i] end else return nil end end end class Builder def initialize(pattern) @pattern = pattern end def get_url(pk) @pattern.gsub /:(\d+)/ do |i| pk[i.to_i] end end end attr_reader :host_name def initialize(host_name) @host_name = host_name @parser = [] @builder = {} end def parse(regex, pk_keys) @parser << Parser.new(regex, pk_keys) end def build(type, pattern) @builder[type.to_sym] = Builder.new(pattern) end def make_url(pk, options) builder = @builder[options[:type].to_sym] builder.get_url(pk) end def make_pk(url) @parser.each do |parser| result = parser.get_pk(url) return result unless result.nil? end return nil end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
product_spy-0.0.1 | lib/product_spy/host.rb |