Sha256: 5eadf2fec5776699da0396e716af30d4ca381817a911ef5af90f137e3fb7ff0c

Contents?: true

Size: 837 Bytes

Versions: 1

Compression:

Stored size: 837 Bytes

Contents

module ShouldaRouting
  module Routes
    class Stack
      include Routes::Helpers

      def resources
        @resources ||= []
      end

      def namespaces
        @namespaces ||= []
      end

      def routes
        permutations(stack).map do |segments|
          namespaces = segments[0...self.namespaces.count]
          resources  = segments[self.namespaces.count...segments.count]

          options = {}
          options[:segments]    = segments
          options[:url]         = "/#{namespaces.join("/")}/#{resources.join("/1/")}"
          options[:params]      = params(resources[0...-1])
          options[:controller]  = (namespaces + [segments.last]).join("/")
          options
        end
      end

      private

      def stack
        namespaces + resources
      end
    end

    STACK = Stack.new
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoulda_routing-0.0.2 lib/shoulda_routing/routes/stack.rb