Sha256: 1b6fdcdcfd30665a807a0aa1f904076f025d3b71701c847537254d2d597694f0

Contents?: true

Size: 1.76 KB

Versions: 2

Compression:

Stored size: 1.76 KB

Contents

require "forwardable"

module Jekyll
  module Assets
    class Tag
      class ProxiedAsset
        attr_reader :args, :asset, :env
        extend Forwardable

        def_delegator :@asset, :liquid_tags
        def_delegator :@asset, :content_type
        def_delegator :@asset, :filename

        def initialize(asset, args, env, tag)
          @env = env
          @asset = asset
          @args = args
          @tag = tag
          cache_file
          proxy_file
        end

        def cached?
          @_cached
        end

        def source
          File.binread(
            filename
          )
        end

        def filename
          env.in_cache_dir(
            digest_path
          )
        end

        def digest
          Digest::SHA2.hexdigest(
            args.proxies.to_s
          )
        end

        # 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.

        def logical_path
          digest_path
        end

        def digest_path
          name = asset.logical_path
          ext  = File.extname(name)
          "#{File.basename(name, ext)}-#{digest}#{ext}"
        end

        def write_to(name)
          File.binwrite(
            name, source
          )
        end

        private
        def proxy_file
          unless cached?
            args.proxies.each do |k, v|
              Proxies.get(k).first[:cls].new(self, v).process
            end
          end
        end

        private
        def cache_file
          if File.file?(filename)
            @_cached = true else @_cached = false
            FileUtils.cp asset.filename, filename
          end
        end
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jekyll-assets-2.0.0.pre.beta2 lib/jekyll/assets/tag/proxied_asset.rb
jekyll-assets-2.0.0.pre.beta1 lib/jekyll/assets/tag/proxied_asset.rb