| OLD | NEW |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, 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 services.src.correction.strings; | 5 library services.src.correction.strings; |
| 6 | 6 |
| 7 import 'dart:math'; | 7 import 'dart:math'; |
| 8 | 8 |
| 9 /** | 9 /** |
| 10 * "$" | 10 * "$" |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 } | 34 } |
| 35 if (a == null) { | 35 if (a == null) { |
| 36 return 1; | 36 return 1; |
| 37 } | 37 } |
| 38 if (b == null) { | 38 if (b == null) { |
| 39 return -1; | 39 return -1; |
| 40 } | 40 } |
| 41 return a.compareTo(b); | 41 return a.compareTo(b); |
| 42 } | 42 } |
| 43 | 43 |
| 44 int countLeadingWhitespaces(String str) { |
| 45 int i = 0; |
| 46 for (; i < str.length; i++) { |
| 47 int c = str.codeUnitAt(i); |
| 48 if (!isWhitespace(c)) { |
| 49 break; |
| 50 } |
| 51 } |
| 52 return i; |
| 53 } |
| 54 |
| 44 /** | 55 /** |
| 45 * Counts how many times [sub] appears in [str]. | 56 * Counts how many times [sub] appears in [str]. |
| 46 */ | 57 */ |
| 47 int countMatches(String str, String sub) { | 58 int countMatches(String str, String sub) { |
| 48 if (isEmpty(str) || isEmpty(sub)) { | 59 if (isEmpty(str) || isEmpty(sub)) { |
| 49 return 0; | 60 return 0; |
| 50 } | 61 } |
| 51 int count = 0; | 62 int count = 0; |
| 52 int idx = 0; | 63 int idx = 0; |
| 53 while ((idx = str.indexOf(sub, idx)) != -1) { | 64 while ((idx = str.indexOf(sub, idx)) != -1) { |
| 54 count++; | 65 count++; |
| 55 idx += sub.length; | 66 idx += sub.length; |
| 56 } | 67 } |
| 57 return count; | 68 return count; |
| 58 } | 69 } |
| 59 | 70 |
| 71 int countTrailingWhitespaces(String str) { |
| 72 int i = 0; |
| 73 for (; i < str.length; i++) { |
| 74 int c = str.codeUnitAt(str.length - 1 - i); |
| 75 if (!isWhitespace(c)) { |
| 76 break; |
| 77 } |
| 78 } |
| 79 return i; |
| 80 } |
| 81 |
| 60 /** | 82 /** |
| 61 * Returns the number of characters common to the end of [a] and the start | 83 * Returns the number of characters common to the end of [a] and the start |
| 62 * of [b]. | 84 * of [b]. |
| 63 */ | 85 */ |
| 64 int findCommonOverlap(String a, String b) { | 86 int findCommonOverlap(String a, String b) { |
| 65 int a_length = a.length; | 87 int a_length = a.length; |
| 66 int b_length = b.length; | 88 int b_length = b.length; |
| 67 // all empty | 89 // all empty |
| 68 if (a_length == 0 || b_length == 0) { | 90 if (a_length == 0 || b_length == 0) { |
| 69 return 0; | 91 return 0; |
| (...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 246 } | 268 } |
| 247 if (isEmpty(separator)) { | 269 if (isEmpty(separator)) { |
| 248 return ''; | 270 return ''; |
| 249 } | 271 } |
| 250 int pos = str.lastIndexOf(separator); | 272 int pos = str.lastIndexOf(separator); |
| 251 if (pos == -1) { | 273 if (pos == -1) { |
| 252 return str; | 274 return str; |
| 253 } | 275 } |
| 254 return str.substring(pos + separator.length); | 276 return str.substring(pos + separator.length); |
| 255 } | 277 } |
| OLD | NEW |