Index: utils/dartdoc/utils.dart |
diff --git a/utils/dartdoc/utils.dart b/utils/dartdoc/utils.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..2819020f7785c2f66ea0b99481437cc0e8396c2c |
--- /dev/null |
+++ b/utils/dartdoc/utils.dart |
@@ -0,0 +1,56 @@ |
+// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+// Generic utility functions. |
+ |
+/** Invokes [callback] and returns how long it took to execute in ms. */ |
+num time(callback()) { |
+ final watch = new Stopwatch(); |
+ watch.start(); |
+ callback(); |
+ watch.stop(); |
+ return watch.elapsedInMs(); |
+} |
+ |
+/** Turns [name] into something that's safe to use as a file name. */ |
+String sanitize(String name) => name.replaceAll(':', '_').replaceAll('/', '_'); |
+ |
+/** Returns the number of times [search] occurs in [text]. */ |
+int countOccurrences(String text, String search) { |
+ int start = 0; |
+ int count = 0; |
+ |
+ while (true) { |
+ start = text.indexOf(search, start); |
+ if (start == -1) break; |
+ count++; |
+ // Offsetting by search length means overlapping results are not counted. |
+ start += search.length; |
+ } |
+ |
+ return count; |
+} |
+ |
+/** Repeats [text] [count] times, separated by [separator] if given. */ |
+String repeat(String text, int count, [String separator]) { |
+ // TODO(rnystrom): Should be in corelib. |
+ final buffer = new StringBuffer(); |
+ for (int i = 0; i < count; i++) { |
+ buffer.add(text); |
+ if ((i < count - 1) && (separator !== null)) buffer.add(separator); |
+ } |
+ |
+ return buffer.toString(); |
+} |
+ |
+/** Removes up to [indentation] leading whitespace characters from [text]. */ |
+String unindent(String text, int indentation) { |
+ var start; |
+ for (start = 0; start < Math.min(indentation, text.length); start++) { |
+ // Stop if we hit a non-whitespace character. |
+ if (text[start] != ' ') break; |
+ } |
+ |
+ return text.substring(start); |
+} |