OLD | NEW |
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, 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 library pub.validator.utf8_readme; | |
6 | |
7 import 'dart:async'; | 5 import 'dart:async'; |
8 import 'dart:convert'; | 6 import 'dart:convert'; |
9 | 7 |
10 import '../entrypoint.dart'; | 8 import '../entrypoint.dart'; |
11 import '../io.dart'; | 9 import '../io.dart'; |
12 import '../validator.dart'; | 10 import '../validator.dart'; |
13 | 11 |
14 /// Validates that a package's README is valid utf-8. | 12 /// Validates that a package's README is valid utf-8. |
15 class Utf8ReadmeValidator extends Validator { | 13 class Utf8ReadmeValidator extends Validator { |
16 Utf8ReadmeValidator(Entrypoint entrypoint) | 14 Utf8ReadmeValidator(Entrypoint entrypoint) |
17 : super(entrypoint); | 15 : super(entrypoint); |
18 | 16 |
19 Future validate() { | 17 Future validate() { |
20 return new Future.sync(() { | 18 return new Future.sync(() { |
21 var readme = entrypoint.root.readmePath; | 19 var readme = entrypoint.root.readmePath; |
22 if (readme == null) return; | 20 if (readme == null) return; |
23 var bytes = readBinaryFile(readme); | 21 var bytes = readBinaryFile(readme); |
24 try { | 22 try { |
25 // UTF8.decode doesn't allow invalid UTF-8. | 23 // UTF8.decode doesn't allow invalid UTF-8. |
26 UTF8.decode(bytes); | 24 UTF8.decode(bytes); |
27 } on FormatException catch (_) { | 25 } on FormatException catch (_) { |
28 warnings.add("$readme contains invalid UTF-8.\n" | 26 warnings.add("$readme contains invalid UTF-8.\n" |
29 "This will cause it to be displayed incorrectly on " | 27 "This will cause it to be displayed incorrectly on " |
30 "pub.dartlang.org."); | 28 "pub.dartlang.org."); |
31 } | 29 } |
32 }); | 30 }); |
33 } | 31 } |
34 } | 32 } |
35 | 33 |
OLD | NEW |