def parse_element(element, target = nil)
if target == :url
url = case element.name
when 'img' then element['src']
when 'a' then element['href']
when 'object' then element['value']
end
url[/^http/] ? url : @options[:base_url].to_s + url if url.respond_to?(:[])
elsif target.is_a? Array
target.inject(nil) do |found, klass|
klass = klass.respond_to?(:find) ? klass : nil
found || parse_element(element, klass)
end
elsif target.is_a? Class
target.find(@options.merge(:first => element))
else
value = case element.name
when 'abbr' then element['title']
when 'img' then element['alt']
end || ''
ret = (value.empty? ? element.innerHTML : value).strip
target == :html ? ret : ret.strip_html.coerce
end
end