class Camping::CommandsHelpers::RoutesParser

Public Class Methods

new(app = Camping) click to toggle source
# File lib/camping/commands.rb, line 68
def initialize(app = Camping)
  @parent_app, @routes = app, []
end
parse(app) click to toggle source
# File lib/camping/commands.rb, line 64
def self.parse(app)
  new(app).parse
end

Public Instance Methods

parse() click to toggle source
# File lib/camping/commands.rb, line 72
def parse
  @parent_app.routes
  collected_routes = []

  make_routes =  -> (a) {
    a::X.constants.map { |c|
      k = a::X.const_get(c)
      im = k.instance_methods(false).map!(&:to_s)
      methods = im & ["get", "post", "put", "patch", "delete"]
      if k.respond_to?:urls
        methods.each { |m|
          k.urls.each { |u|
            collected_routes.append Camping::CommandsHelpers::Route.new(m,c,a.to_s,u)
          }
        }
      end
    }
  }

  if @parent_app == Camping
    @parent_app::Apps.each {|a|
      make_routes.(a)
    }
  else
    make_routes.(@parent_app)
  end

  routes_collection = Camping::CommandsHelpers::RouteCollection.new(collected_routes)
end