Sha256: 5a5b3cbbf8d8f89d6a027ff9513772c13a0ae2e7a524b5faf69cb6a0193b1864

Contents?: true

Size: 1 KB

Versions: 1

Compression:

Stored size: 1 KB

Contents

module Munge
  module Routers
    class AutoAddExtension
      def initialize(keep_extensions:)
        @keep_extensions = keep_extensions
      end

      def type
        :route
      end

      def match?(initial_route, item)
        item_should_have_extension?(item) && route_doesnt_have_extension?(initial_route)
      end

      def call(initial_route, item)
        add_extension(initial_route, item)
      end

      private

      def add_extension(initial_route, item)
        intersection = item.extensions & @keep_extensions
        extension    = intersection[0]

        "#{initial_route}.#{extension}"
      end

      def item_should_have_extension?(item)
        intersection = item.extensions & @keep_extensions

        intersection.length > 0
      end

      def route_doesnt_have_extension?(initial_route)
        initial_route_extensions = initial_route.split(".")[1..-1]

        intersection = initial_route_extensions & @keep_extensions

        intersection.length == 0
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
munge-0.6.0 lib/munge/routers/auto_add_extension.rb