module UndergroundWeather module Features features = { :conditions => { :class => CurrentConditions }, :forecast => { :class => Forecast }, :astronomy => { :class => Astronomy }, :radar => { :class => Radar }, :satellite => { :class => Satellite }, :webcams => { :class => Webcams }, :history => { :class => ''}, :alerts => { :class => ''}, :hourly => { :class => ''}, :hourly7day => { :class => ''}, :forecast7day => { :class => ''}, :yesterday => { :class => ''} } features.each do |feature, v| define_method(feature) do |zip_code| call = ApiCall.new(@api_key, feature, zip_code) if call.response && !call.error v[:class].new(call.response) else #? "error" end end end end end