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 (Object.prototype.hasOwnProperty.call(params, param)) {
      if (keys.indexOf(param) === -1) {
        if (Array.isArray(params[param])) {
          for (var value of params[param]) {
            query.push(param + "[]=" + encodeURIComponent(value));
          }
        } else {
          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



44
45
46
# File 'lib/js_rails_routes/language/javascript.rb', line 44

def ext
  'js'
end

#handle_route(route) ⇒ String

Parameters:

Returns:

  • (String)


37
38
39
40
41
# 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) ⇒ Object

Note:

Implementation for Base#generate



28
29
30
31
32
33
# 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