Class: JSRailsRoutes::Language::TypeScript

Inherits:
JavaScript show all
Defined in:
lib/js_rails_routes/language/typescript.rb

Constant Summary collapse

PROCESS_FUNC =
<<~TYPESCRIPT
  type Value = string | number
  type Params<Keys extends string> = { [key in Keys]: Value } & Record<string, Value>
  function process(route: string, params: Record<string, Value> | undefined, keys: string[]): string {
    if (!params) return route
    var query: string[] = [];
    for (var param in params) if (params.hasOwnProperty(param)) {
      if (keys.indexOf(param) === -1) {
        query.push(param + "=" + encodeURIComponent(params[param].toString()));
      }
    }
    return query.length ? route + "?" + query.join("&") : route;
  }
TYPESCRIPT

Instance Method Summary collapse

Methods inherited from JavaScript

#handle_route_set

Methods inherited from Base

#handle_route_set

Instance Method Details

#extObject

Note:

Implementation for Base#ext



34
35
36
# File 'lib/js_rails_routes/language/typescript.rb', line 34

def ext
  'ts'
end

#handle_route(route) ⇒ String

Parameters:

Returns:

  • (String)


26
27
28
29
30
31
# File 'lib/js_rails_routes/language/typescript.rb', line 26

def handle_route(route)
  path, keys = parse(route.path)
  name = function_name(route.name)
  params = keys.empty? ? 'params?: Record<string, Value>' : "params: Params<#{keys.join(' | ')}>"
  "export function #{name}(#{params}) { return process('#{path}', params, [#{keys.join(',')}]); }"
end