Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
passing geocode class either a postcode string or an object. geocodes = Geocode.new("postcode") or Geocode.new(object_with_postcode_attribute) (to avoid doing object.lat = geocodes.lat object.lng = geocodes.lng) require 'hive/collect' module BookerBee class Geocode SERVER = 'geo.localsearchmaps.com' attr_accessor :lat, :lng, :partial def (obj,country=:uk) if obj.class != String geocode(obj.postcode,country) obj.lat = @lat obj.lng = @lng return obj else geocode(obj,country) end end private def geocode(code,country) code.gsub!(/\s/){} code.upcase! if code.size > 4 code = code.split('').insert(-4,'+').join('') else code = (code.split('')[0..3] << '+').join('') end part = code.split('+').first p code p part codes = {} eval File.readlines("lib/geocodes/#{country.to_s}.txt").to_s if codes[code] @lat = codes[code][:lat] @lng = codes[code][:lng] else page = "/?zip=#{code}&country=#{country.to_s}" response = BookerBee::Hive::Collect.new(SERVER,page).response if response.include?('Zoom') parse(response) elsif codes[part] @lat = codes[part][:lat] @lng = codes[part][:lng] @partial = true else puts "#{code} not found" end end code = part if @partial unless codes[code] file = File.open("lib/geocodes/#{country.to_s}.txt", "a") file.puts "codes['#{code}'] = {:lat => '#{@lat}', :lng => '#{@lng}'}" file.close end end def parse(response,partial=false) codes = response.match(/nt\((.*)\),/)[1].split(', ') @lng = codes.first @lat = codes.last @partial = partial end end end
This paste will be private.
From the Design Piracy series on my blog: