Sha256: db6ecf33af9bc7230b94985311559a346e89c518e98cef62f1adae8025c6eef4

Contents?: true

Size: 1.97 KB

Versions: 23

Compression:

Stored size: 1.97 KB

Contents

require 'openssl'

module Hanami
  module Assets
    # Bundle assets from a single application.
    #
    # @since 0.1.0
    # @api private
    class Bundler
      # @since 0.3.0
      # @api private
      class Asset
        # @since 0.3.0
        # @api private
        attr_reader :path

        # @since 0.3.0
        # @api private
        attr_reader :configuration

        # @since 0.3.0
        # @api private
        WILDCARD_EXT = '.*'.freeze

        # Return a new instance
        #
        # @since 0.3.0
        # @api private
        def initialize(path, configuration)
          @path = path
          @configuration = configuration
        end

        # @since 0.3.0
        # @api private
        def expanded_path
          ::File.expand_path(@path)
        end

        # @since 0.3.0
        # @api private
        def fingerprinted_target
          ::File.join(directory, "#{filename}-#{fingerprint}#{extension}")
        end

        # @since 0.3.0
        # @api private
        def expanded_fingerprinted_target
          ::File.expand_path(fingerprinted_target)
        end

        # @since 0.3.0
        # @api private
        def base64_digest(algorithm)
          raw_digest(algorithm).base64digest
        end

        private

        # @since 0.3.0
        # @api private
        def directory
          ::File.dirname(@path)
        end

        # @since 0.3.0
        # @api private
        def filename
          ::File.basename(@path, WILDCARD_EXT)
        end

        # @since 0.3.0
        # @api private
        def extension
          ::File.extname(@path)
        end

        # @since 0.3.0
        # @api private
        def fingerprint
          raw_digest(:md5).hexdigest
        end

        # @since 0.3.0
        # @api private
        def raw_digest(algorithm)
          OpenSSL::Digest.new(algorithm.to_s, contents)
        end

        # @since 0.3.0
        # @api private
        def contents
          ::File.read(@path)
        end
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
hanami-assets-1.3.4 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.3.3 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.3.2 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.3.1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.3.0 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.3.0.beta1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.2.0 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.2.0.rc2 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.2.0.rc1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.2.0.beta2 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.2.0.beta1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.1.1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.1.0 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.1.0.rc1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.1.0.beta3 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.1.0.beta2 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.1.0.beta1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.0.0 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.0.0.rc1 lib/hanami/assets/bundler/asset.rb
hanami-assets-1.0.0.beta2 lib/hanami/assets/bundler/asset.rb