class Prawn::SVG::UrlLoader

Constants

Error

Attributes

enable_cache[R]
loaders[R]

Public Class Methods

new(enable_cache: false, enable_web: true, enable_file_with_root: nil) click to toggle source
# File lib/prawn/svg/url_loader.rb, line 6
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

Public Instance Methods

add_to_cache(url, data) click to toggle source
# File lib/prawn/svg/url_loader.rb, line 20
def add_to_cache(url, data)
  @url_cache[url] = data
end
load(url) click to toggle source
# File lib/prawn/svg/url_loader.rb, line 16
def load(url)
  retrieve_from_cache(url) || perform_and_cache(url)
end
retrieve_from_cache(url) click to toggle source
# File lib/prawn/svg/url_loader.rb, line 24
def retrieve_from_cache(url)
  @url_cache[url]
end

Private Instance Methods

perform(url) click to toggle source
# File lib/prawn/svg/url_loader.rb, line 36
def perform(url)
  try_each_loader(url) or raise Error, "No handler available for this URL scheme"
end
perform_and_cache(url) click to toggle source
# File lib/prawn/svg/url_loader.rb, line 30
def perform_and_cache(url)
  data = perform(url)
  add_to_cache(url, data) if enable_cache
  data
end
try_each_loader(url) click to toggle source
# File lib/prawn/svg/url_loader.rb, line 40
def try_each_loader(url)
  loaders.detect do |loader|
    data = loader.from_url(url)
    break data if data
  end
end