Sha256: 947259de1ea7d8f9ac6bd0b4a9e091c1135da7e02a499f147f51b0de25400b59

Contents?: true

Size: 1.36 KB

Versions: 51

Compression:

Stored size: 1.36 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.namespace(context)
        return Current.namespace if Current.namespace.present?

        req = request(context)
        route = Rails.application.routes.recognize_path(req.path, method: req.env['REQUEST_METHOD'])
        parts = route[:controller].split('/')
        return unless parts.length > 1

        parts.first.to_sym
      rescue ActionController::RoutingError
        nil
      end
    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

51 entries across 51 versions & 1 rubygems

Version Path
pg_rails-7.1.1.pre.5 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.1.pre.4 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.1.pre.3 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.1.pre.2 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.1.pre.1 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.1.0 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.112 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.111 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.110 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.109 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.108 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.107 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.106 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.105 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.104 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.103 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.102 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.101 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.100 pg_engine/app/helpers/pg_engine/route_helper.rb
pg_rails-7.0.8.pre.alpha.99 pg_engine/app/helpers/pg_engine/route_helper.rb