Skip to content
This repository has been archived by the owner on Dec 16, 2024. It is now read-only.

Commit

Permalink
fix: typeName -> typename (#11)
Browse files Browse the repository at this point in the history
  • Loading branch information
alecthomas authored Jan 9, 2024
1 parent a4d05f6 commit 2f8fffc
Show file tree
Hide file tree
Showing 4 changed files with 155 additions and 155 deletions.
150 changes: 75 additions & 75 deletions frontend/mobile/templates/template.js
Original file line number Diff line number Diff line change
@@ -1,80 +1,80 @@
// Return the corresponding Dart type for an FTL type.
function dartType(t) {
const type = typeName(t);
switch (type) {
case "String":
return "String";

case "Int":
return "int";

case "Bool":
return "bool";

case "Float":
return "double";

case "Time":
return "DateTime";

case "Map":
return `Map<${dartType(t.key)}, ${dartType(t.value)}>`;

case "Array":
return `List<${dartType(t.element)}>`;

case "VerbRef":
case "DataRef":
if (context.name === t.module) {
return t.name;
}
return `${t.module}.${t.name}`;

case "Optional":
return dartType(t.type) + "?";

default:
throw new Error(`Unspported FTL type: ${typeName(t)}`);
}
const type = typename(t);
switch (type) {
case "String":
return "String";

case "Int":
return "int";

case "Bool":
return "bool";

case "Float":
return "double";

case "Time":
return "DateTime";

case "Map":
return `Map<${dartType(t.key)}, ${dartType(t.value)}>`;

case "Array":
return `List<${dartType(t.element)}>`;

case "VerbRef":
case "DataRef":
if (context.name === t.module) {
return t.name;
}
return `${t.module}.${t.name}`;

case "Optional":
return dartType(t.type) + "?";

default:
throw new Error(`Unspported FTL type: ${typename(t)}`);
}
function deserialize(t) {
switch (typeName(t)) {
case "Array":
return `v.map((v) => ${deserialize(t.element)}).cast<${dartType(t.element)}>().toList()`;

case "Map":
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${dartType(t.key)}, ${dartType(t.value)}>()`;

case "DataRef":
return `${dartType(t)}.fromMap(v)`;

default:
return "v";
}
}

function deserialize(t) {
switch (typename(t)) {
case "Array":
return `v.map((v) => ${deserialize(t.element)}).cast<${dartType(t.element)}>().toList()`;

case "Map":
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${dartType(t.key)}, ${dartType(t.value)}>()`;

case "DataRef":
return `${dartType(t)}.fromMap(v)`;

default:
return "v";
}

function serialize(t) {
switch (typeName(t)) {
case "Array":
return `v.map((v) => ${deserialize(t.element)}).cast<${dartType(t.element)}>().toList()`;

case "Map":
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${dartType(t.key)}, ${dartType(t.value)}>()`;

case "DataRef":
return "v.toMap()";

default:
return "v";
}
}

function url(verb) {
let path = verb.metadata[0].path;
const method = verb.metadata[0].method;

return path.replace(/{(.*?)}/g, (match, fieldName) => {
return '$' + `{request.${fieldName}}`;
});
}

function serialize(t) {
switch (typename(t)) {
case "Array":
return `v.map((v) => ${deserialize(t.element)}).cast<${dartType(t.element)}>().toList()`;

case "Map":
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${dartType(t.key)}, ${dartType(t.value)}>()`;

case "DataRef":
return "v.toMap()";

default:
return "v";
}
}

function url(verb) {
let path = verb.metadata[0].path;
const method = verb.metadata[0].method;

return path.replace(/{(.*?)}/g, (match, fieldName) => {
return "$" + `{request.${fieldName}}`;
});
}
4 changes: 2 additions & 2 deletions frontend/mobile/templates/{{ .Name | lower }}.dart
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class {{ .Name | camel }} {
{{ .Type | dartType }} {{ .Name }};
{{- end }}

{{ .Name | camel }}({{ if .Fields }}{ {{ range .Fields }}{{ if not (eq (.Type | typeName) "Optional")}} required{{end}} this.{{ .Name }}, {{ end}} }{{ end }});
{{ .Name | camel }}({{ if .Fields }}{ {{ range .Fields }}{{ if not (eq (.Type | typename) "Optional")}} required{{end}} this.{{ .Name }}, {{ end}} }{{ end }});

Map<String, dynamic> toMap() {
return {
Expand Down Expand Up @@ -44,7 +44,7 @@ class {{ .Name | camel }}Client {
{{ range .Verbs }}
{{- $verb := . -}}
{{- range .Metadata }}
{{ if eq "MetadataIngress" (. | typeName) }}
{{ if eq "MetadataIngress" (. | typename) }}
Future<{{ $verb.Response | dartType }}> {{ $verb.Name }}({{ $verb.Request | dartType }} request) async {
{{ if eq .Method "GET" -}}
final response = await ftlClient.{{ .Method | lower }}('{{ $verb | url }}', requestJson: request.toJson());
Expand Down
154 changes: 77 additions & 77 deletions frontend/web/templates/template.js
Original file line number Diff line number Diff line change
@@ -1,82 +1,82 @@
// Return the corresponding Typescript type for an FTL type.
function tsType(t) {
const type = typeName(t);
switch (type) {
case "String":
return "string";

case "Int":
return "number";

case "Bool":
return "bool";

case "Float":
return "double";

case "Time":
return "DateTime";

case "Map":
return `Map<${tsType(t.key)}, ${tsType(t.value)}>`;

case "Array":
return `${tsType(t.element)}[]`;

case "VerbRef":
case "DataRef":
if (context.name === t.module) {
return t.name;
}
return `${t.module}.${t.name}`;

case "Optional":
return tsType(t.type) + "?";

default:
throw new Error(`Unspported FTL type: ${typeName(t)}`);
}
}

function deserialize(t) {
switch (typeName(t)) {
case "Array":
return `v.map((v) => ${deserialize(t.element)}).cast<${tsType(t.element)}>().toList()`;

case "Map":
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${tsType(t.key)}, ${tsType(t.value)}>()`;

case "DataRef":
return `${tsType(t)}.fromMap(v)`;

default:
return "v";
}
const type = typename(t)
switch (type) {
case 'String':
return 'string'

case 'Int':
return 'number'

case 'Bool':
return 'bool'

case 'Float':
return 'double'

case 'Time':
return 'DateTime'

case 'Map':
return `Map<${tsType(t.key)}, ${tsType(t.value)}>`

case 'Array':
return `${tsType(t.element)}[]`

case 'VerbRef':
case 'DataRef':
if (context.name === t.module) {
return t.name
}
return `${t.module}.${t.name}`

case 'Optional':
return tsType(t.type) + '?'

default:
throw new Error(`Unspported FTL type: ${typename(t)}`)
}
function serialize(t) {
switch (typeName(t)) {
case "Array":
return `v.map((v) => ${deserialize(t.element)}).cast<${tsType(t.element)}>().toList()`;

case "Map":
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${tsType(t.key)}, ${tsType(t.value)}>()`;

case "DataRef":
return "v.toMap()";

default:
return "v";
}
}

function deserialize(t) {
switch (typename(t)) {
case 'Array':
return `v.map((v) => ${deserialize(t.element)}).cast<${tsType(t.element)}>().toList()`

case 'Map':
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${tsType(t.key)}, ${tsType(t.value)}>()`

case 'DataRef':
return `${tsType(t)}.fromMap(v)`

default:
return 'v'
}

function url(verb) {
let path = verb.metadata[0].path;
const method = verb.metadata[0].method;

path = path.replace(/{(.*?)}/g, (match, fieldName) => {
return '$' + `{request.${fieldName}}`;
});

return method !== 'GET' ? path : path + '?@json=${encodeURIComponent(JSON.stringify(request))}';
}

function serialize(t) {
switch (typename(t)) {
case 'Array':
return `v.map((v) => ${deserialize(t.element)}).cast<${tsType(t.element)}>().toList()`

case 'Map':
return `v.map((k, v) => MapEntry(k, ${deserialize(t.value)})).cast<${tsType(t.key)}, ${tsType(t.value)}>()`

case 'DataRef':
return 'v.toMap()'

default:
return 'v'
}
}

function url(verb) {
let path = verb.metadata[0].path
const method = verb.metadata[0].method

path = path.replace(/{(.*?)}/g, (match, fieldName) => {
return '$' + `{request.${fieldName}}`
})

return method !== 'GET' ? path : path + '?@json=${encodeURIComponent(JSON.stringify(request))}'
}
2 changes: 1 addition & 1 deletion frontend/web/templates/{{ .Name | lower }}.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ export class {{ .Name | camel }}Client {
{{- range .Verbs }}
{{- $verb := . -}}
{{- range .Metadata }}
{{ if eq "MetadataIngress" (. | typeName) }}
{{ if eq "MetadataIngress" (. | typename) }}
public async {{ $verb.Name | lowerCamel }}(request: {{ $verb.Request | tsType }}): Promise<{{ $verb.Response | tsType }}> {
const path = `{{ $verb | url }}`;
{{ if eq .Method "GET" -}}
Expand Down

0 comments on commit 2f8fffc

Please sign in to comment.