@@ -24,13 +24,10 @@ String _key(KeyFormat format, String name, String override)
24
24
switch (format)
25
25
{
26
26
case KeyFormat .None : return name;
27
- case KeyFormat .Kebab : return name.replaceAllMapped (_upperCase, (m) => m.start > 0
28
- ? '-${m .group (0 ).toLowerCase ()}'
29
- : m.group (0 ).toLowerCase ()
27
+ case KeyFormat .Kebab : return name.replaceAllMapped (_upperCase, (m) =>
28
+ (m.start > 0 ? '-' : '' ) + (m[0 ]? .toLowerCase () ?? '?' )
30
29
);
31
30
}
32
-
33
- return name;
34
31
}
35
32
36
33
// Retrieve the key from the annotation. If the
@@ -40,8 +37,8 @@ String _keyOverride(Element e)
40
37
{
41
38
return _translateChecker
42
39
.firstAnnotationOfExact (e)
43
- .getField ('key' )
44
- .toStringValue ();
40
+ ? .getField ('key' )
41
+ ? .toStringValue () ?? '' ;
45
42
}
46
43
47
44
@@ -60,13 +57,12 @@ class TranslatableGenerator extends GeneratorForAnnotation<Translatable>
60
57
);
61
58
}
62
59
63
- final classElement = element as ClassElement ;
64
- final className = '_\$ ${classElement .name }' ;
60
+ final className = '_\$ ${element .name }' ;
65
61
final name = annotation.read ('module' ).stringValue;
66
- final withMixin = annotation.read ('withMixin' ).boolValue ? "with ${classElement .name }" : "" ;
67
- final fields = classElement .fields.where ((f) => _translateChecker.hasAnnotationOfExact (f.getter) || _translateChecker.hasAnnotationOfExact (f));
68
- final methods = classElement .methods.where ((m) => _translateChecker.hasAnnotationOfExact (m));
69
- final lookups = classElement .methods.where ((m) => _lookupChecker.hasAnnotationOfExact (m));
62
+ final withMixin = annotation.read ('withMixin' ).boolValue ? "with ${element .name }" : "" ;
63
+ final fields = element .fields.where ((f) => _translateChecker.hasAnnotationOfExact (f.getter ?? f)); // || _translateChecker.hasAnnotationOfExact(f));
64
+ final methods = element .methods.where ((m) => _translateChecker.hasAnnotationOfExact (m));
65
+ final lookups = element .methods.where ((m) => _lookupChecker.hasAnnotationOfExact (m));
70
66
final format = KeyFormat .values.singleWhere (
71
67
(v) => annotation.read ('format' ).objectValue.getField (v.toString ().split ('.' )[1 ]) != null
72
68
);
@@ -76,19 +72,24 @@ class TranslatableGenerator extends GeneratorForAnnotation<Translatable>
76
72
77
73
for (var f in fields)
78
74
{
79
- final key = _key (format, f.name, _keyOverride (f.getter));
75
+ final getter = f.getter;
76
+
77
+ if (getter != null )
78
+ {
79
+ final key = _key (format, f.name, _keyOverride (getter));
80
80
81
- IsAbstract (f. getter);
82
- ReturnsString (f.type, f);
83
- DoesNotContainKey (f. getter, values, key);
81
+ IsAbstract (getter);
82
+ ReturnsString (f.type, f);
83
+ DoesNotContainKey (getter, values, key);
84
84
85
- values[key] = _translateChecker
86
- .firstAnnotationOfExact (f. getter)
87
- .getField ('source' )
88
- .toStringValue ()
89
- .replaceAll ('"' , '\\ "' );
85
+ values[key] = _translateChecker
86
+ .firstAnnotationOfExact (getter)
87
+ ? .getField ('source' )
88
+ ? .toStringValue ()
89
+ ? .replaceAll ('"' , '\\ "' ) ?? '' ;
90
90
91
- buffer.write ('String get ${f .name } => values["${key }"];\n ' );
91
+ buffer.write ('String get ${f .name } => values["${key }"] ?? "";\n ' );
92
+ }
92
93
}
93
94
94
95
for (var m in methods)
@@ -104,11 +105,11 @@ class TranslatableGenerator extends GeneratorForAnnotation<Translatable>
104
105
final list = m.parameters.map ((p) => p.name).join (', ' );
105
106
values[key] = _translateChecker
106
107
.firstAnnotationOfExact (m)
107
- .getField ('source' )
108
- .toStringValue ()
109
- .replaceAll ('"' , '\\ "' );
108
+ ? .getField ('source' )
109
+ ? .toStringValue ()
110
+ ? .replaceAll ('"' , '\\ "' ) ?? '' ;
110
111
111
- buffer.write ('String ${m .name }($parameters ) => TranslatableModule.Substitute(values["${key }"], [ $list ]);\n ' );
112
+ buffer.write ('String ${m .name }($parameters ) => TranslatableModule.Substitute(values["${key }"] ?? "" , [ $list ]);\n ' );
112
113
}
113
114
114
115
for (var l in lookups)
@@ -119,22 +120,20 @@ class TranslatableGenerator extends GeneratorForAnnotation<Translatable>
119
120
120
121
final table = _lookupChecker
121
122
.firstAnnotationOfExact (l)
122
- .getField ('table' )
123
- .toMapValue ()
124
- .map <String , String >((k, v) => MapEntry (
125
- k.toStringValue (),
126
- v.toStringValue ().replaceAll ('"' , '\\ "' )
127
- ));
123
+ ? .getField ('table' )
124
+ ? .toMapValue ()
125
+ ? .map <String , String >((k, v) => MapEntry (
126
+ k? .toStringValue () ?? '' ,
127
+ v? .toStringValue ()? .replaceAll ('"' , '\\ "' ) ?? ''
128
+ )) ?? {} ;
128
129
129
130
table.forEach ((k, v) => DoesNotContainKey (l, values, k));
130
131
values.addAll (table);
131
- buffer.write ('String ${l .name }(String key) => values[key];\n ' );
132
+ buffer.write ('String ${l .name }(String key) => values[key] ?? "" ;\n ' );
132
133
}
133
134
134
-
135
-
136
135
yield '''
137
- class $className extends TranslatableModule $withMixin implements ${classElement .name }
136
+ class $className extends TranslatableModule $withMixin implements ${element .name }
138
137
{
139
138
$className (Resources resources) : super(resources, "$name ", {
140
139
${values .keys .map ((k ) => '"${k }": "${values [k ]}"' ).join (',\n ' )}
0 commit comments