class Jekyll::Assets::Liquid::Tag::ProxiedAsset

Attributes

args[R]
asset[R]
env[R]

Public Class Methods

new(asset, args, env, tag) click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 26
def initialize(asset, args, env, tag)
  @env = env
  @asset = asset
  @args = args
  @tag = tag

  cache_file
  proxy_file
end

Public Instance Methods

cached?() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 46
def cached?
  @_cached
end
digest() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 73
def digest
  Digest::SHA2.hexdigest(
    args.proxies.to_s
  )
end
digest_path() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 91
def digest_path
  name = asset.logical_path
  ext  = File.extname(name)
  "#{name.chomp(ext)}-#{digest}#{ext}"
end
filename() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 67
def filename
  env.in_cache_dir(digest_path)
end
integrity() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 38
def integrity
  Sprockets::DigestUtils.integrity_uri(
    digest
  )
end
logical_path() click to toggle source

We always digest a proxied asset so it's uniq based on what proxies you give us, it would be ignorant to treat it otherwise, we also make sure they are URL safe by digesting the args.


# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 85
def logical_path
  digest_path
end
source() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 61
def source
  File.binread(filename)
end
write_to(name) click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 52
def write_to(name)
  FileUtils.mkdir_p File.dirname(name)
  Sprockets::PathUtils.atomic_write(name) do |f|
    f.write source
  end
end

Private Instance Methods

cache_file() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 111
def cache_file
  @_cached = File.file?(filename)
  return @_cached if @_cached

  dir = File.dirname(filename)
  FileUtils.mkdir_p dir unless dir == env.in_cache_dir
  FileUtils.cp asset.filename, filename
  true
end
proxy_file() click to toggle source

# File lib/jekyll/assets/liquid/tag/proxied_asset.rb, line 100
def proxy_file
  unless cached?
    args.proxies.each do |key, val|
      Proxies.get(key).first[:class].new(self, val, @args).process
    end
  end
end