Sha256: 1115cec26a5aa9bb9932c8a61e7a94af6556b3f8d143cf8c4cb36472903a096a

Contents?: true

Size: 1.01 KB

Versions: 5

Compression:

Stored size: 1.01 KB

Contents

class Prawn::SVG::UrlLoader
  Error = Class.new(StandardError)

  attr_reader :enable_cache, :loaders

  def initialize(enable_cache: false, enable_web: true, enable_file_with_root: nil)
    @url_cache = {}
    @enable_cache = enable_cache

    @loaders = []
    loaders << Prawn::SVG::Loaders::Data.new
    loaders << Prawn::SVG::Loaders::Web.new if enable_web
    loaders << Prawn::SVG::Loaders::File.new(enable_file_with_root) if enable_file_with_root
  end

  def load(url)
    retrieve_from_cache(url) || perform_and_cache(url)
  end

  def add_to_cache(url, data)
    @url_cache[url] = data
  end

  def retrieve_from_cache(url)
    @url_cache[url]
  end

  private

  def perform_and_cache(url)
    data = perform(url)
    add_to_cache(url, data) if enable_cache
    data
  end

  def perform(url)
    try_each_loader(url) or raise Error, 'No handler available for this URL scheme'
  end

  def try_each_loader(url)
    loaders.detect do |loader|
      data = loader.from_url(url)
      break data if data
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
prawn-svg-0.36.2 lib/prawn/svg/url_loader.rb
prawn-svg-0.36.1 lib/prawn/svg/url_loader.rb
prawn-svg-0.36.0 lib/prawn/svg/url_loader.rb
prawn-svg-0.35.1 lib/prawn/svg/url_loader.rb
prawn-svg-0.35.0 lib/prawn/svg/url_loader.rb