Skip to content

Commit a266d55

Browse files
Merge pull request #327 from appwrite/feat-dart-identifier-overrides
2 parents f757e4e + 66cfdcc commit a266d55

File tree

4 files changed

+12
-9
lines changed

4 files changed

+12
-9
lines changed

CONTRIBUTING.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ SDK Language name (JS, PHP…)
4848
**getKeywords**
4949
An array with language keywords to avoid using as param or function names, template engine will solve conflicts
5050

51+
**getIdentifierOverrides**
52+
Returns an associative array that can be used to override keywords with pre-defined word using `overrideIdentifier` filter.
53+
5154
**getFiles**
5255
An array with a list of language template files in [twig format](https://twig.symfony.com/).
5356
Each file scope determines what template parameters will be available.

src/SDK/Language/Dart.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ public function getKeywords()
110110
*/
111111
public function getIdentifierOverrides()
112112
{
113-
return [];
113+
return ['Function' => 'Func'];
114114
}
115115

116116
/**

templates/dart/lib/services/service.dart.twig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class {{ service.name | caseUcfirst }} extends Service {
1616
{{ method.description|dartComment }}
1717
///
1818
{% endif %}
19-
{% if method.type == 'webAuth' %}Future{% elseif method.type == 'location' %} Future<Uint8List> {% else %} {% if method.responseModel and method.responseModel != 'any' %}Future<models.{{method.responseModel | ucFirstAndEscape}}>{% else %}Future{% endif %}{% endif %} {{ method.name | caseCamel }}({{ _self.method_parameters(method.parameters) }}) async {
19+
{% if method.type == 'webAuth' %}Future{% elseif method.type == 'location' %} Future<Uint8List> {% else %} {% if method.responseModel and method.responseModel != 'any' %}Future<models.{{method.responseModel | caseUcfirst | overrideIdentifier}}>{% else %}Future{% endif %}{% endif %} {{ method.name | caseCamel }}({{ _self.method_parameters(method.parameters) }}) async {
2020
final String path = '{{ method.path }}'{% for parameter in method.parameters.path %}.replaceAll(RegExp('{{ '{' }}{{ parameter.name | caseCamel }}{{ '}' }}'), {{ parameter.name | caseCamel | escapeKeyword }}){% endfor %};
2121

2222
final Map<String, dynamic> params = {
@@ -52,7 +52,7 @@ class {{ service.name | caseUcfirst }} extends Service {
5252
};
5353

5454
final res = await client.call(HttpMethod.{{ method.method | caseLower }}, path: path, params: params, headers: headers);
55-
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | ucFirstAndEscape}}.fromMap(res.data){% else %} res.data{% endif %};
55+
return {% if method.responseModel and method.responseModel != 'any' %}models.{{method.responseModel | caseUcfirst | overrideIdentifier}}.fromMap(res.data){% else %} res.data{% endif %};
5656
{% endif %}
5757
}
5858
{% endfor %}

templates/dart/lib/src/models/model.dart.twig

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
{% macro sub_schema(property) %}{% if property.sub_schema %}{% if property.type == 'array' %}List<{{property.sub_schema | ucFirstAndEscape}}>{% else %}{{property.sub_schema | ucFirstAndEscape }}{% endif %}{% else %}{{property.type | typeName}}{% endif %}{% endmacro %}
1+
{% macro sub_schema(property) %}{% if property.sub_schema %}{% if property.type == 'array' %}List<{{property.sub_schema | caseUcfirst | overrideIdentifier}}>{% else %}{{property.sub_schema | caseUcfirst | overrideIdentifier }}{% endif %}{% else %}{{property.type | typeName}}{% endif %}{% endmacro %}
22
part of {{ language.params.packageName }}.models;
33

44
/// {{ definition.description }}
5-
class {{ definition.name | ucFirstAndEscape }} {
5+
class {{ definition.name | caseUcfirst | overrideIdentifier }} {
66
{% for property in definition.properties %}
77
/// {{ property.description }}
88
final {% if not property.required %}{{_self.sub_schema(property)}}? {{ property.name | escapeKeyword }}{% else %}{{_self.sub_schema(property)}} {{ property.name | escapeKeyword }}{% endif %};
@@ -11,7 +11,7 @@ class {{ definition.name | ucFirstAndEscape }} {
1111
final Map<String, dynamic> data;
1212
{% endif %}
1313

14-
{{ definition.name | ucFirstAndEscape}}({
14+
{{ definition.name | caseUcfirst | overrideIdentifier}}({
1515
{% for property in definition.properties %}{% if property.required %}
1616
required {% endif %}this.{{ property.name | escapeKeyword }},
1717
{% endfor %}
@@ -20,10 +20,10 @@ class {{ definition.name | ucFirstAndEscape }} {
2020
{% endif %}
2121
});
2222

23-
factory {{ definition.name | ucFirstAndEscape}}.fromMap(Map<String, dynamic> map) {
24-
return {{ definition.name | ucFirstAndEscape }}(
23+
factory {{ definition.name | caseUcfirst | overrideIdentifier}}.fromMap(Map<String, dynamic> map) {
24+
return {{ definition.name | caseUcfirst | overrideIdentifier }}(
2525
{% for property in definition.properties %}
26-
{{ property.name | escapeKeyword }}: {% if property.sub_schema %}{% if property.type == 'array' %}List<{{property.sub_schema | ucFirstAndEscape}}>.from(map['{{property.name | escapeDollarSign }}'].map((p) => {{property.sub_schema | ucFirstAndEscape}}.fromMap(p))){% else %}{{property.sub_schema | ucFirstAndEscape}}.fromMap(map['{{property.name | escapeDollarSign }}']){% endif %}{% else %}map['{{property.name | escapeDollarSign }}']{% if property.type == "number" %}.toDouble(){% endif %}{% if property.type == "string" %}.toString(){% endif %}{% endif %},
26+
{{ property.name | escapeKeyword }}: {% if property.sub_schema %}{% if property.type == 'array' %}List<{{property.sub_schema | caseUcfirst | overrideIdentifier}}>.from(map['{{property.name | escapeDollarSign }}'].map((p) => {{property.sub_schema | caseUcfirst | overrideIdentifier}}.fromMap(p))){% else %}{{property.sub_schema | caseUcfirst | overrideIdentifier}}.fromMap(map['{{property.name | escapeDollarSign }}']){% endif %}{% else %}map['{{property.name | escapeDollarSign }}']{% if property.type == "number" %}.toDouble(){% endif %}{% if property.type == "string" %}.toString(){% endif %}{% endif %},
2727
{% endfor %}
2828
{% if definition.additionalProperties %}
2929
data: map,

0 commit comments

Comments
 (0)