class JSRailsRoutes::Language::JavaScript

Constants

PROCESS_FUNC

Public Instance Methods

ext() click to toggle source

@note Implementation for {JSRailsRoutes::Language::Base#ext}

# File lib/js_rails_routes/language/javascript.rb, line 44
def ext
  'js'
end
handle_route(route) click to toggle source

@param route [JSRailsRoutes::Route] @return [String]

# File lib/js_rails_routes/language/javascript.rb, line 37
def handle_route(route)
  path, keys = parse(route.path)
  name = function_name(route.name)
  "export function #{name}(params) { return process('#{path}', params, [#{keys.join(',')}]); }"
end
handle_route_set(routes) click to toggle source

@note Implementation for {JSRailsRoutes::Language::Base#generate}

# File lib/js_rails_routes/language/javascript.rb, line 28
def handle_route_set(routes)
  set = routes.each_with_object([self.class::PROCESS_FUNC]) do |route, lines|
    lines.push(handle_route(route))
  end.join("\n")
  "#{set}\n"
end

Private Instance Methods

camelize(name) click to toggle source

@param name [String] @return [String]

# File lib/js_rails_routes/language/javascript.rb, line 72
def camelize(name)
  config.camelize ? name.camelize(config.camelize) : name
end
config() click to toggle source

@return [JSRailsRoutes::Configuration]

# File lib/js_rails_routes/language/javascript.rb, line 77
def config
  JSRailsRoutes.config
end
function_name(route_name) click to toggle source

@param route_name [String] @return [String]

# File lib/js_rails_routes/language/javascript.rb, line 65
def function_name(route_name)
  url_helper_name = "#{route_name}_path"
  config.camelize.nil? ? url_helper_name : url_helper_name.camelize(config.camelize)
end
parse(route_path) click to toggle source

@param route_path [String] @return [Array<(String, Array<String>)>]

# File lib/js_rails_routes/language/javascript.rb, line 52
def parse(route_path)
  destructured_path = route_path.dup
  keys = []
  while destructured_path =~ JSRailsRoutes::PARAM_REGEXP
    key = camelize(Regexp.last_match(1))
    keys.push("'#{key}'")
    destructured_path.sub!(JSRailsRoutes::PARAM_REGEXP, "' + params.#{key} + '#{Regexp.last_match(2)}")
  end
  [destructured_path, keys]
end