class RoutesJS::Routes

Attributes

default_format[RW]
filter_type[RW]
named_routes[RW]

Public Class Methods

as_json(routes = nil) click to toggle source
# File lib/routesjs/routes.rb, line 14
def as_json(routes = nil)
  routes ||= ::Rails.application.routes.named_routes.routes
  js_routes = build_routes(routes)

  results = { routes: js_routes }
  results[:format] = default_format unless default_format.blank?
  results.as_json
end
init(options = {}) click to toggle source
# File lib/routesjs/routes.rb, line 6
def init(options = {})
  reset

  set_format_from_options(options)
  make_filter(options, :except) if options.has_key?(:except)
  make_filter(options, :only) if options.has_key?(:only)
end

Private Class Methods

build_routes(routes) click to toggle source
# File lib/routesjs/routes.rb, line 40
def build_routes(routes)
  route_map = routes.values.inject({}) do |result, route|
    if include_route?(route)
      derived_route = RoutesJS::Routing::Route.new(route)
      result[derived_route.name] = derived_route.url
    end

    result
  end
end
include_route?(route) click to toggle source
# File lib/routesjs/routes.rb, line 51
def include_route?(route)
  return true unless named_routes.present? && named_routes.any?

  found = named_routes.include?(route.name)
  filter_type == :only ? found : !found
end
make_filter(options, type) click to toggle source
# File lib/routesjs/routes.rb, line 35
def make_filter(options, type)
  self.filter_type = type
  self.named_routes = Array(options[type]).map(&:to_s)
end
reset() click to toggle source
# File lib/routesjs/routes.rb, line 25
def reset
  self.default_format = nil
  self.named_routes = nil
  self.filter_type = nil
end
set_format_from_options(options) click to toggle source
# File lib/routesjs/routes.rb, line 31
def set_format_from_options(options)
  self.default_format = options[:default_format]
end