Sha256: bb966ebcd7b8e04a99df3a91e03bb1daa9d6cabd4da44320071eba5b3f18b11a

Contents?: true

Size: 1.2 KB

Versions: 1

Compression:

Stored size: 1.2 KB

Contents

module Munge
  module Routers
    class Fingerprint
      def initialize(extensions:,
                     separator:)
        @extensions = extensions
        @separator = separator
      end

      def type
        :route
      end

      def match?(_initial_route, item)
        if item.frontmatter.key?(:fingerprint_asset)
          return item.frontmatter[:fingerprint_asset]
        end

        intersection = item.extensions & @extensions

        !intersection.empty?
      end

      def call(initial_route, item)
        generate_link(initial_route, item.compiled_content)
      end

      private

      def generate_link(initial_route, content)
        pre, extension = disassemble(initial_route)
        asset_hash = hash(content)

        if extension == ""
          "#{pre}#{@separator}#{asset_hash}"
        else
          "#{pre}#{@separator}#{asset_hash}.#{extension}"
        end
      end

      def hash(content)
        Digest::SHA256.hexdigest(content)
      end

      def disassemble(path)
        extension = Util::Path.extname(path)
        path_without_extension = Util::Path.path_no_extension(path)

        [
          path_without_extension,
          extension
        ]
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
munge-0.18.0 lib/munge/routers/fingerprint.rb