@@ -87,16 +87,26 @@ Future<void> main(List<String> rawArgs) async {
87
87
// To regenerate run (omit --overwrite to print to console instead of the file):
88
88
// dart --enable-asserts dev/tools/localization/bin/gen_date_localizations.dart --overwrite
89
89
90
+ import 'package:intl/date_symbols.dart' as intl;
91
+
90
92
'''
91
93
);
92
94
buffer.writeln ('''
93
95
/// The subset of date symbols supported by the intl package which are also
94
96
/// supported by flutter_localizations.''' );
95
- buffer.writeln ('const Map<String, dynamic > dateSymbols = <String, dynamic > {' );
97
+ buffer.writeln ('final Map<String, intl.DateSymbols > dateSymbols = <String, intl.DateSymbols > {' );
96
98
symbolFiles.forEach ((String locale, File data) {
97
99
currentLocale = locale;
98
- if (supportedLocales.contains (locale))
99
- buffer.writeln (_jsonToMapEntry (locale, json.decode (data.readAsStringSync ())));
100
+ if (supportedLocales.contains (locale)) {
101
+ final Map <String , Object ?> objData = json.decode (data.readAsStringSync ()) as Map <String , Object ?>;
102
+ buffer.writeln ("'$locale ': intl.DateSymbols(" );
103
+ objData.forEach ((String key, Object ? value) {
104
+ if (value == null )
105
+ return ;
106
+ buffer.writeln (_jsonToConstructorEntry (key, value));
107
+ });
108
+ buffer.writeln ('),' );
109
+ }
100
110
});
101
111
currentLocale = null ;
102
112
buffer.writeln ('};' );
@@ -123,28 +133,67 @@ Future<void> main(List<String> rawArgs) async {
123
133
if (writeToFile) {
124
134
final File dateLocalizationsFile = File (path.join ('packages' , 'flutter_localizations' , 'lib' , 'src' , 'l10n' , 'generated_date_localizations.dart' ));
125
135
dateLocalizationsFile.writeAsStringSync (buffer.toString ());
126
- Process .runSync (path.join ('bin' , 'cache' , 'dart-sdk' , 'bin' , 'dartfmt' ), < String > [
127
- '-w' ,
136
+ final String extension = Platform .isWindows ? '.exe' : '' ;
137
+ final ProcessResult result = Process .runSync (path.join ('bin' , 'cache' , 'dart-sdk' , 'bin' , 'dart$extension ' ), < String > [
138
+ 'format' ,
128
139
dateLocalizationsFile.path,
129
140
]);
141
+ if (result.exitCode != 0 ) {
142
+ print (result.exitCode);
143
+ print (result.stdout);
144
+ print (result.stderr);
145
+ }
130
146
} else {
131
147
print (buffer);
132
148
}
133
149
}
134
150
151
+ String _jsonToConstructorEntry (String key, dynamic value) {
152
+ return '$key : ${_jsonToObject (value )},' ;
153
+ }
154
+
135
155
String _jsonToMapEntry (String key, dynamic value) {
136
156
return "'$key ': ${_jsonToMap (value )}," ;
137
157
}
138
158
159
+ String _jsonToObject (dynamic json) {
160
+ if (json == null || json is num || json is bool )
161
+ return '$json ' ;
162
+
163
+ if (json is String )
164
+ return generateEncodedString (currentLocale, json);
165
+
166
+ if (json is Iterable <Object ?>) {
167
+ final String type = json.first.runtimeType.toString ();
168
+ final StringBuffer buffer = StringBuffer ('const <$type >[' );
169
+ for (final dynamic value in json) {
170
+ buffer.writeln ('${_jsonToMap (value )},' );
171
+ }
172
+ buffer.write (']' );
173
+ return buffer.toString ();
174
+ }
175
+
176
+ if (json is Map <String , dynamic >) {
177
+ final StringBuffer buffer = StringBuffer ('<String, Object>{' );
178
+ json.forEach ((String key, dynamic value) {
179
+ buffer.writeln (_jsonToMapEntry (key, value));
180
+ });
181
+ buffer.write ('}' );
182
+ return buffer.toString ();
183
+ }
184
+
185
+ throw 'Unsupported JSON type ${json .runtimeType } of value $json .' ;
186
+ }
187
+
139
188
String _jsonToMap (dynamic json) {
140
189
if (json == null || json is num || json is bool )
141
190
return '$json ' ;
142
191
143
192
if (json is String )
144
- return generateEncodedString (currentLocale! , json);
193
+ return generateEncodedString (currentLocale, json);
145
194
146
195
if (json is Iterable ) {
147
- final StringBuffer buffer = StringBuffer ('<dynamic >[' );
196
+ final StringBuffer buffer = StringBuffer ('<String >[' );
148
197
for (final dynamic value in json) {
149
198
buffer.writeln ('${_jsonToMap (value )},' );
150
199
}
@@ -153,7 +202,7 @@ String _jsonToMap(dynamic json) {
153
202
}
154
203
155
204
if (json is Map <String , dynamic >) {
156
- final StringBuffer buffer = StringBuffer ('<String, dynamic >{' );
205
+ final StringBuffer buffer = StringBuffer ('<String, Object >{' );
157
206
json.forEach ((String key, dynamic value) {
158
207
buffer.writeln (_jsonToMapEntry (key, value));
159
208
});
0 commit comments