class Plumnailer::ImgParser

Fetch image data urls, load into Magick::Image and set some additional fields.

Attributes

fetcher[RW]

Public Class Methods

new(fetcher) click to toggle source
# File lib/plumnailer/img_parser.rb, line 11
def initialize(fetcher)
  @fetcher = fetcher
end

Public Instance Methods

parse(img_urls) click to toggle source

Parse image data from one or more urls.

# File lib/plumnailer/img_parser.rb, line 16
def parse(img_urls)
  if img_urls.respond_to?(:inject)
    cache = {}
    img_urls.inject([]) do |memo,u|
      # nil values should be cached
      memo << (cache.include?(u) ? cache[u] : (cache[u] = parse_one(u)))
    end.compact
  else
    parse_one i
  end
end
parse_one(img_url) click to toggle source

Fetch image data from a url, load into Magick::ImageList and set some additional fields.

# File lib/plumnailer/img_parser.rb, line 30
def parse_one(img_url)
  begin
    img_data = fetcher.fetch(img_url)
    img = Magick::ImageList.new.from_blob(img_data).extend(
      Plumnailer::WebImage)
    img.source_url = img_url
    img
  rescue Exception
    nil
  end
end