class Voom::Presenters::Router

Attributes

base_url[R]

Public Class Methods

new(base_url: nil) click to toggle source
# File lib/voom/presenters/router.rb, line 9
def initialize(base_url: nil)
  @base_url = base_url
end

Public Instance Methods

scrub_params(_params_) click to toggle source
# File lib/voom/presenters/router.rb, line 20
def scrub_params(_params_)
  _params_.delete('captures')
  _params_.delete('presenter')
  _params_.delete('action')
  _params_.delete('errors')
  _params_
end
url(command: nil, render: nil, host: false, context:) click to toggle source
# File lib/voom/presenters/router.rb, line 13
def url(command: nil, render: nil, host: false, context:)
  _params_ = context.dup
  return build_render_url(render, _params_, host: host) unless command
  _params_[:redirect]=build_render_url(render, _params_) if render
  build_command_url(command, _params_)
end

Private Instance Methods

add_query_params(url, params) click to toggle source
# File lib/voom/presenters/router.rb, line 45
def add_query_params(url, params)
  query_params = build_params(params)
  if (!query_params.nil? && !query_params.empty?)
    query_seperator = url.include?('?') ? '&' : '?'
    url = "#{url}#{query_seperator}#{query_params}"
  end
  url
end
build_command_url(command, params) click to toggle source
# File lib/voom/presenters/router.rb, line 30
def build_command_url(command, params)
  return '' unless command
  add_query_params(command, params)
end
build_params(params) click to toggle source
# File lib/voom/presenters/router.rb, line 54
def build_params(params)
  Rack::Utils.build_nested_query(scrub_params(params))
end
build_render_url(render_, params, host:) click to toggle source
# File lib/voom/presenters/router.rb, line 35
def build_render_url(render_, params, host:)
  return '#' unless render_
  render = render_.to_s
  return render if render.start_with?('http')
  render = render.gsub(':', '/')
  seperator = render.start_with?('/') ? '' : '/'
  url = "#{host ? base_url : nil}#{seperator}#{render}"
  add_query_params(url, params)
end