module Incline::Extensions::ResourceRouteGenerator

Public Class Methods

included(base) click to toggle source

Overrides the add_resource_route method.

# File lib/incline/extensions/resource_route_generator.rb, line 9
    def self.included(base)
      base.class_eval do
        undef add_resource_route

        ##
        # Adds a resource route with additional :api and :locate actions.
        def add_resource_route
          return if options[:actions].present?

          # iterates over all namespaces and opens up blocks
          regular_class_path.each_with_index do |namespace, index|
            write("namespace :#{namespace} do", index + 1)
          end

          # inserts the primary resource with api routes as well.
          pad = '  ' * (route_length + 1)
          write <<-EOR, 0
#{pad}resources :#{file_name.pluralize} do
#{pad}  member do
#{pad}    post :locate
#{pad}  end
#{pad}  collection do
#{pad}    match :api, via: [ :get, :post ]
#{pad}  end
#{pad}end
          EOR

          # ends blocks
          regular_class_path.each_index do |index|
            write("end", route_length - index)
          end

          # route prepends two spaces onto the front of the string that is passed, this corrects that.
          # Also it adds a \n to the end of each line, as route already adds that
          # we need to correct that too.
          route route_string[2..-2]
        end

      end
    end

Public Instance Methods

add_resource_route() click to toggle source

Adds a resource route with additional :api and :locate actions.

# File lib/incline/extensions/resource_route_generator.rb, line 15
        def add_resource_route
          return if options[:actions].present?

          # iterates over all namespaces and opens up blocks
          regular_class_path.each_with_index do |namespace, index|
            write("namespace :#{namespace} do", index + 1)
          end

          # inserts the primary resource with api routes as well.
          pad = '  ' * (route_length + 1)
          write <<-EOR, 0
#{pad}resources :#{file_name.pluralize} do
#{pad}  member do
#{pad}    post :locate
#{pad}  end
#{pad}  collection do
#{pad}    match :api, via: [ :get, :post ]
#{pad}  end
#{pad}end
          EOR

          # ends blocks
          regular_class_path.each_index do |index|
            write("end", route_length - index)
          end

          # route prepends two spaces onto the front of the string that is passed, this corrects that.
          # Also it adds a \n to the end of each line, as route already adds that
          # we need to correct that too.
          route route_string[2..-2]
        end