class RailsTemplatedUrls::Builder

Public Class Methods

new(name, params, url_helpers, routes) click to toggle source
# File lib/rails_templated_urls/builder.rb, line 8
def initialize(name, params, url_helpers, routes)
  @name = name
  @params = params
  @url_helpers = url_helpers
  @routes = routes

  check_route
end

Public Instance Methods

path() click to toggle source
# File lib/rails_templated_urls/builder.rb, line 23
def path
  build(:path)
end
url() click to toggle source
# File lib/rails_templated_urls/builder.rb, line 19
def url
  build(:url)
end

Protected Instance Methods

build(strategy) click to toggle source
# File lib/rails_templated_urls/builder.rb, line 49
def build(strategy)
  url = @url_helpers.public_send("#{@name}_#{strategy}",
                                 *required_parts_expressions)

  "#{CGI.unescape(url)}#{params_expression}"
end
check_route() click to toggle source
# File lib/rails_templated_urls/builder.rb, line 29
def check_route
  return if named_routes.key?(@name)
  fail UnknownRouteError, "Unknown route #{@name.inspect}"
end
params_expression() click to toggle source
# File lib/rails_templated_urls/builder.rb, line 44
def params_expression
  return if @params.empty?
  format('{?%s}', @params.join(','))
end
required_parts() click to toggle source
# File lib/rails_templated_urls/builder.rb, line 34
def required_parts
  named_routes[@name].required_parts
end
required_parts_expressions() click to toggle source
# File lib/rails_templated_urls/builder.rb, line 38
def required_parts_expressions
  required_parts.map do |key|
    { key => format('{%s}', key) }
  end
end