Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(195)

Side by Side Diff: tools/html_json_doc/lib/html_to_json.dart

Issue 11865005: Remove Futures class, move methods to Future. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « tests/standalone/io/http_session_test.dart ('k') | tools/testing/dart/multitest.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * Library for extracting the documentation comments from files generated by 6 * Library for extracting the documentation comments from files generated by
7 * the HTML library. The comments are stored in a JSON file. 7 * the HTML library. The comments are stored in a JSON file.
8 * 8 *
9 * Comments must be in either the block style with leading *s: 9 * Comments must be in either the block style with leading *s:
10 * 10 *
(...skipping 19 matching lines...) Expand all
30 30
31 /// True if any errors were triggered through the conversion. 31 /// True if any errors were triggered through the conversion.
32 bool _anyErrors = false; 32 bool _anyErrors = false;
33 33
34 34
35 /** 35 /**
36 * Convert files on [htmlPath] and write JSON to [jsonPath]. 36 * Convert files on [htmlPath] and write JSON to [jsonPath].
37 */ 37 */
38 Future<bool> convert(Path htmlPath, Path jsonPath) { 38 Future<bool> convert(Path htmlPath, Path jsonPath) {
39 var completer = new Completer(); 39 var completer = new Completer();
40 40
41 // TODO(amouravski): make this transform once I know what I want this file to 41 // TODO(amouravski): make this transform once I know what I want this file to
42 // return. 42 // return.
43 _convertFiles(htmlPath).then((convertedJson) { 43 _convertFiles(htmlPath).then((convertedJson) {
44 final jsonFile = new File.fromPath(jsonPath); 44 final jsonFile = new File.fromPath(jsonPath);
45 var writeJson = convertedJson; 45 var writeJson = convertedJson;
46 46
47 if (jsonFile.existsSync()) { 47 if (jsonFile.existsSync()) {
48 writeJson = _mergeJsonAndFile(convertedJson, jsonFile); 48 writeJson = _mergeJsonAndFile(convertedJson, jsonFile);
49 } 49 }
50 50
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 _anyErrors = true; 98 _anyErrors = true;
99 return; 99 return;
100 } 100 }
101 101
102 fileFutures.add(_convertFile(file)); 102 fileFutures.add(_convertFile(file));
103 }; 103 };
104 104
105 105
106 // Combine all JSON objects 106 // Combine all JSON objects
107 lister.onDone = (_) { 107 lister.onDone = (_) {
108 Futures.wait(fileFutures).then((jsonList) { 108 Future.wait(fileFutures).then((jsonList) {
109 var convertedJson = {}; 109 var convertedJson = {};
110 jsonList.forEach((json) { 110 jsonList.forEach((json) {
111 final k = json.keys[0]; 111 final k = json.keys[0];
112 convertedJson.putIfAbsent(k, () => json[k]); 112 convertedJson.putIfAbsent(k, () => json[k]);
113 }); 113 });
114 completer.complete(convertedJson); 114 completer.complete(convertedJson);
115 }); 115 });
116 }; 116 };
117 117
118 // TODO(amouravski): add more error handling. 118 // TODO(amouravski): add more error handling.
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 bool _listsEqual(List list1, List list2) { 263 bool _listsEqual(List list1, List list2) {
264 return list1.every((e) => list2.contains(e)) && 264 return list1.every((e) => list2.contains(e)) &&
265 list2.every((e) => list1.contains(e)); 265 list2.every((e) => list1.contains(e));
266 } 266 }
267 267
268 268
269 /** 269 /**
270 * Print JSON in a much nicer format. 270 * Print JSON in a much nicer format.
271 * 271 *
272 * For example: 272 * For example:
273 * 273 *
274 * {"foo":["bar","baz"],"boo":{"far:"faz"}} 274 * {"foo":["bar","baz"],"boo":{"far:"faz"}}
275 * 275 *
276 * becomes: 276 * becomes:
277 * 277 *
278 * { 278 * {
279 * "foo": 279 * "foo":
280 * [ 280 * [
281 * "bar", 281 * "bar",
282 * "baz" 282 * "baz"
283 * ], 283 * ],
284 * "boo": 284 * "boo":
285 * { 285 * {
286 * "far": 286 * "far":
287 * "faz" 287 * "faz"
288 * } 288 * }
289 * } 289 * }
290 */ 290 */
291 String prettyPrintJson(Object json, [String indentation = '']) { 291 String prettyPrintJson(Object json, [String indentation = '']) {
292 var output; 292 var output;
293 293
294 if (json is List) { 294 if (json is List) {
295 var recursiveOutput = 295 var recursiveOutput =
296 Strings.join(json.map((e) => 296 Strings.join(json.map((e) =>
297 prettyPrintJson(e, '$indentation ')), ',\n'); 297 prettyPrintJson(e, '$indentation ')), ',\n');
298 output = '$indentation[\n' 298 output = '$indentation[\n'
299 '$recursiveOutput' 299 '$recursiveOutput'
300 '\n$indentation]'; 300 '\n$indentation]';
301 } else if (json is Map) { 301 } else if (json is Map) {
302 var keys = json.keys 302 var keys = json.keys
303 ..sort(); 303 ..sort();
304 304
305 // TODO(amouravski): No newline after : 305 // TODO(amouravski): No newline after :
306 var mapList = keys.map((key) => 306 var mapList = keys.map((key) =>
307 '$indentation${JSON.stringify(key)}:\n' 307 '$indentation${JSON.stringify(key)}:\n'
308 '${prettyPrintJson(json[key], '$indentation ')}'); 308 '${prettyPrintJson(json[key], '$indentation ')}');
309 var recursiveOutput = Strings.join(mapList, ',\n'); 309 var recursiveOutput = Strings.join(mapList, ',\n');
310 output = '$indentation{\n' 310 output = '$indentation{\n'
311 '$recursiveOutput' 311 '$recursiveOutput'
312 '\n$indentation}'; 312 '\n$indentation}';
313 } else { 313 } else {
314 output = '$indentation${JSON.stringify(json)}'; 314 output = '$indentation${JSON.stringify(json)}';
315 } 315 }
316 return output; 316 return output;
317 } 317 }
OLDNEW
« no previous file with comments | « tests/standalone/io/http_session_test.dart ('k') | tools/testing/dart/multitest.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698