vitoravelino/modular_routes

View on GitHub
lib/modular_routes/routable/standalone.rb

Summary

Maintainability
A
0 mins
Test Coverage
# frozen_string_literal: true

module ModularRoutes
  module Routable
    class Standalone
      def initialize(http_method, action, options)
        @http_method = http_method
        @action = action
        @options = options
      end

      def apply(mapper)
        mapper.public_send(@http_method, @action, options)
      end

      private def options
        to = @options.fetch(:to, nil)

        if namespace_controller_pattern?(to)
          namespace, controller = to.split("#")
          @options[:to] = "#{namespace}/#{controller}#call"
        end

        @options
      end

      private def namespace_controller_pattern?(obj)
        obj.is_a?(String) && obj.include?("#")
      end
    end

    private_constant :Standalone
  end
end