Sha256: c51ce49d0835d1921afeb92bdeb43c0879152f70f7c22f008213fd50ab02eeec

Contents?: true

Size: 931 Bytes

Versions: 7

Compression:

Stored size: 931 Bytes

Contents

require 'active_support/core_ext'
require 'action_dispatch/routing/inspector'
require_relative 'mount_route'

module Passages
  class Route < DelegateClass(ActionDispatch::Routing::RouteWrapper)

    def initialize(route)
      super(ActionDispatch::Routing::RouteWrapper.new(route))
    end

    class << self
      def attributes_for_display
        %w[name verb controller action path]
      end

      def from_raw_route(raw_route)
        mount_class = mount_route_class(raw_route)

        if mount_class.nil?
          new(raw_route)
        else
          MountRoute.new(raw_route, mount_class)
        end
      end

      private

      def mount_route_class(route)
        route_app = route.app

        app = if route_app.class == Class
          route_app
        else
          route_app.try(:app)
        end

        app if app.ancestors.include?(Rails::Engine)
      rescue
        nil
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
passages-1.4.0 lib/passages/route.rb
passages-1.3.0 lib/passages/route.rb
passages-1.2.0 lib/passages/route.rb
passages-1.1.0 lib/passages/route.rb
passages-1.0.0 lib/passages/route.rb
passages-0.2.0 lib/passages/route.rb
passages-0.1.0 lib/passages/route.rb