Sha256: 7299ec6b38114d3c3d7522a6e37b07d4e1c23777e5dfd6df66bf447851cea9a3

Contents?: true

Size: 1.51 KB

Versions: 30

Compression:

Stored size: 1.51 KB

Contents

# frozen_string_literal: true

module PgEngine
  module RouteHelper
    class NamespaceDeductor
      def self.request(context)
        if context.respond_to?(:request) && context.request
          # Controllers
          context.request
        elsif context.respond_to?(:helpers) && context.helpers
          # Decorators
          context.helpers.request
        elsif context.respond_to?(:template) && context.template
          # FormBuilders
          context.template.request
        end
      end

      def self.current_route(context)
        req = request(context)
        Rails.application.routes.recognize_path(req.path, method: req.env['REQUEST_METHOD'])
      end

      def self.namespace(context)
        return Current.namespace if Current.namespace.present?

        route = current_route(context)
        parts = route[:controller].split('/')
        return unless parts.length > 1

        parts.first.to_sym
      rescue ActionController::RoutingError
        nil
      end
    end

    def pg_current_route
      NamespaceDeductor.current_route(self)
    end

    def pg_namespace
      NamespaceDeductor.namespace(self)
    end

    def namespaced_path(object, options = {})
      target = [pg_namespace, object]

      if options[:prefix]
        target.prepend options[:prefix]
        options.delete(:prefix)
      end

      if options[:suffix]
        target.append options[:suffix]
        options.delete(:suffix)
      end

      polymorphic_url(target.flatten.compact, options.merge(only_path: true))
    end
  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
pg_rails-7.4.3 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.4.2 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.4.1 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.4.0 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.3.5 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.3.4 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.3.3 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.3.2 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.3.1 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.3.0 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.2.3 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.2.2 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.2.1 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.2.0 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.16 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.15 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.14 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.13 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.12 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.11 pg_engine/app/helpers/pg_engine/route_helper.rb