pseudomuto/routesjs-rails

View on GitHub
lib/routesjs/routing/route.rb

Summary

Maintainability
A
0 mins
Test Coverage
module RoutesJS
  module Routing
    class Route
      attr_reader :name, :url

      def initialize(rails_route)
        @name = generate_name(rails_route)
        @url = generate_url(rails_route)
      end

      private

      def generate_name(route)
        route.name.camelize(:lower)
      end

      def generate_url(route)
        return redirect_url(route) if redirect?(route)
        route.path.spec.to_s.sub(/\(\.:format\)\z/, "")
      end

      def redirect_url(route)
        app(route).block
      end

      def redirect?(route)
        app(route).respond_to?(:block)
      end

      def app(route)
        route.app.respond_to?(:app) ? route.app.app : route.app
      end
    end
  end
end