Class: JSRailsRoutes::Language::TypeScript
- Inherits:
-
JavaScript
- Object
- Base
- JavaScript
- JSRailsRoutes::Language::TypeScript
- Defined in:
- lib/js_rails_routes/language/typescript.rb
Constant Summary collapse
- PROCESS_FUNC =
<<~TYPESCRIPT type Value = string | number | (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 (Object.prototype.hasOwnProperty.call(params, param)) { if (keys.indexOf(param) === -1) { if (Array.isArray(params[param])) { for (var value of params[param] as (string | number)[]) { query.push(param + "[]=" + encodeURIComponent(value.toString())); } } else { query.push(param + "=" + encodeURIComponent(params[param].toString())); } } } return query.length ? route + "?" + query.join("&") : route; } TYPESCRIPT
Instance Method Summary collapse
Methods inherited from JavaScript
Methods inherited from Base
Instance Method Details
#ext ⇒ Object
Note:
Implementation for Base#ext
40 41 42 |
# File 'lib/js_rails_routes/language/typescript.rb', line 40 def ext 'ts' end |
#handle_route(route) ⇒ String
32 33 34 35 36 37 |
# File 'lib/js_rails_routes/language/typescript.rb', line 32 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 |