Class: JSRailsRoutes::Language::JavaScript

Inherits:
Base
  • Object
show all
Defined in:
lib/js_rails_routes/language/javascript.rb

Direct Known Subclasses

TypeScript

Constant Summary collapse

PROCESS_FUNC =
<<~JAVASCRIPT
  function process(route, params, keys) {
    var query = [];
    for (var param in params) if (params.hasOwnProperty(param)) {
      if (keys.indexOf(param) === -1) {
        query.push(param + "=" + encodeURIComponent(params[param]));
      }
    }
    return query.length ? route + "?" + query.join("&") : route;
  }
JAVASCRIPT

Instance Method Summary collapse

Instance Method Details

#extObject

Note:

Implementation for Base#ext



37
38
39
# File 'lib/js_rails_routes/language/javascript.rb', line 37

def ext
  'js'
end

#handle_route(route) ⇒ String

Parameters:

Returns:

  • (String)


30
31
32
33
34
# File 'lib/js_rails_routes/language/javascript.rb', line 30

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) ⇒ Object

Note:

Implementation for Base#generate



22
23
24
25
26
# File 'lib/js_rails_routes/language/javascript.rb', line 22

def handle_route_set(routes)
  routes.each_with_object([self.class::PROCESS_FUNC]) do |route, lines|
    lines.push(handle_route(route))
  end.join("\n") + "\n"
end