Sha256: ea924e6e373466936828391b040b40ea5a831aa1b4a9e888833a28f5b62457a5

Contents?: true

Size: 1017 Bytes

Versions: 14

Compression:

Stored size: 1017 Bytes

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.empty?
      end

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

        intersection = initial_route_extensions & @keep_extensions

        intersection.empty?
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
munge-0.17.0 lib/munge/routers/auto_add_extension.rb
munge-0.16.0 lib/munge/routers/auto_add_extension.rb
munge-0.15.1 lib/munge/routers/auto_add_extension.rb
munge-0.15.0 lib/munge/routers/auto_add_extension.rb
munge-0.14.0 lib/munge/routers/auto_add_extension.rb
munge-0.13.0 lib/munge/routers/auto_add_extension.rb
munge-0.12.0 lib/munge/routers/auto_add_extension.rb
munge-0.11.1 lib/munge/routers/auto_add_extension.rb
munge-0.11.0 lib/munge/routers/auto_add_extension.rb
munge-0.10.0 lib/munge/routers/auto_add_extension.rb
munge-0.9.0 lib/munge/routers/auto_add_extension.rb
munge-0.8.0 lib/munge/routers/auto_add_extension.rb
munge-0.7.1 lib/munge/routers/auto_add_extension.rb
munge-0.7.0 lib/munge/routers/auto_add_extension.rb