Advertisement
Guest User

Untitled

a guest
Sep 4th, 2015
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.45 KB | None | 0 0
  1. namespace :grape do
  2. desc "Grape API Routes"
  3. task :routes => :environment do
  4. mapped_prefix = '/api' # where mounted API in routes.rb
  5. params_str = ' params:'
  6. desc_limit = 45
  7. route_info = Kanban::API.routes.map {|r| [r, r.instance_variable_get(:@options)] }
  8. max_desc_size = route_info.map{|_,info| (info[:description] || '')[0..desc_limit].size }.max
  9. max_method_size = route_info.map{|_,info| info[:method].size }.max
  10. max_version_size = route_info.map{|_,info| info[:version].size }.max
  11. max_path_size = route_info.map{|_,info| info[:path].sub(':version', info[:version]).size }.max
  12. max_params_digits = route_info.map{|_,info| info[:params].size.to_s.size }.max
  13. format_str = format(
  14. '%%%ds %%%ds %%%ds %%%ds%%-%ds | %%%ds%%%ds %%s',
  15. max_desc_size + 1,
  16. max_version_size,
  17. max_method_size,
  18. mapped_prefix.size,
  19. max_path_size,
  20. max_params_digits,
  21. params_str.size)
  22.  
  23. route_info.each do |_,info|
  24. fields = [
  25. info[:description] ? info[:description][0..desc_limit] : '',
  26. info[:version],
  27. info[:method],
  28. mapped_prefix,
  29. info[:path].sub(':version', info[:version]),
  30. info[:params].size.to_s,
  31. params_str,
  32. info[:params].first.inspect,
  33. ]
  34. puts format(format_str, *fields)
  35.  
  36. info[:params].drop(1).each do |param|
  37. puts format(format_str, *([''] * (fields.size-1)) + [param.inspect])
  38. end
  39. end
  40. end
  41. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement