module PowerApi::GeneratorHelper::RoutesHelper

rubocop:disable Layout/AlignArguments

Public Instance Methods

api_version_routes_line_regex() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 21
def api_version_routes_line_regex
  /Api::V#{version_number}[^\n]*/
end
parent_resource_routes_line_regex() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 25
def parent_resource_routes_line_regex
  /#{parent_resource_route_tpl}[^\n]*/
end
parent_route_already_have_children?() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 46
def parent_route_already_have_children?
  routes_match_regex?(/#{parent_resource_route_tpl}[\W\w]*do/)
end
parent_route_exist?() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 42
def parent_route_exist?
  routes_match_regex?(/#{parent_resource_route_tpl}/)
end
resource_route_tpl(actions: [], is_parent: false) click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 35
def resource_route_tpl(actions: [], is_parent: false)
  res = (is_parent ? parent_resource : resource).plural
  line = "resources :#{res}"
  line += ", only: [#{actions.map { |a| ":#{a}" }.join(', ')}]" if actions.any?
  line
end
routes_line_to_inject_new_version() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 15
def routes_line_to_inject_new_version
  return "routes.draw do\n" if first_version?

  "'/api' do\n"
end
routes_path() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 11
def routes_path
  "config/routes.rb"
end
version_route_tpl() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 29
def version_route_tpl
  return first_version_route_tpl if first_version?

  new_version_route_tpl
end

Private Instance Methods

api_version_params() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 85
  def api_version_params
    "module: 'Api::V#{version_number}', \
path: { value: 'v#{version_number}' }, \
defaults: { format: 'json' }"
  end
first_version_route_tpl() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 69
def first_version_route_tpl
  concat_tpl_statements(
    "scope path: '/api' do",
      "api_version(#{api_version_params}) do",
      "end",
    "end\n"
  )
end
new_version_route_tpl() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 78
def new_version_route_tpl
  concat_tpl_statements(
    "api_version(#{api_version_params}) do",
    "end"
  )
end
parent_resource_route_tpl() click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 63
def parent_resource_route_tpl
  raise PowerApi::GeneratorError.new("missing parent_resource") unless parent_resource?

  "resources :#{parent_resource.plural}"
end
resource_route_statements(actions: []) click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 52
def resource_route_statements(actions: [])
  line = "resources :#{resource.plural}"
  line += ", only: [#{actions.map { |a| ":#{a}" }.join(', ')}]" if actions.any?
  line
end
routes_match_regex?(regex) click to toggle source
# File lib/power_api/generator_helper/routes_helper.rb, line 58
def routes_match_regex?(regex)
  path = File.join(Rails.root, routes_path)
  File.readlines(path).grep(regex).any?
end