Sha256: 9ac70388f758e4c38be7cf38af1bd5d7efc3c2fd5f8a627fc1496eb640a9bd39
Contents?: true
Size: 1.01 KB
Versions: 19
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
19 entries across 19 versions & 1 rubygems