OLD | NEW |
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 library name_validator; | 5 library name_validator; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 import '../../../pkg/pathos/lib/path.dart' as path; | 10 import '../../../pkg/pathos/lib/path.dart' as path; |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 warnings.add('$description should be lower-case. Maybe use ' | 84 warnings.add('$description should be lower-case. Maybe use ' |
85 '"${_unCamelCase(name)}"?'); | 85 '"${_unCamelCase(name)}"?'); |
86 } | 86 } |
87 } | 87 } |
88 | 88 |
89 String _unCamelCase(String source) { | 89 String _unCamelCase(String source) { |
90 var builder = new StringBuffer(); | 90 var builder = new StringBuffer(); |
91 var lastMatchEnd = 0; | 91 var lastMatchEnd = 0; |
92 for (var match in new RegExp(r"[a-z]([A-Z])").allMatches(source)) { | 92 for (var match in new RegExp(r"[a-z]([A-Z])").allMatches(source)) { |
93 builder | 93 builder |
94 ..add(source.substring(lastMatchEnd, match.start + 1)) | 94 ..write(source.substring(lastMatchEnd, match.start + 1)) |
95 ..add("_") | 95 ..write("_") |
96 ..add(match.group(1).toLowerCase()); | 96 ..write(match.group(1).toLowerCase()); |
97 lastMatchEnd = match.end; | 97 lastMatchEnd = match.end; |
98 } | 98 } |
99 builder.add(source.substring(lastMatchEnd)); | 99 builder.write(source.substring(lastMatchEnd)); |
100 return builder.toString().toLowerCase(); | 100 return builder.toString().toLowerCase(); |
101 } | 101 } |
102 } | 102 } |
OLD | NEW |