| // 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. |
| |
| library test_utils; |
| |
| /** |
| * Removes eight spaces of leading indentation from a multiline string. |
| * |
| * Note that this is very sensitive to how the literals are styled. They should |
| * be: |
| * ''' |
| * Text starts on own line. Lines up with subsequent lines. |
| * Lines are indented exactly 8 characters from the left margin. |
| * Close is on the same line.''' |
| * |
| * This does nothing if text is only a single line. |
| */ |
| // TODO(nweiz): Make this auto-detect the indentation level from the first |
| // non-whitespace line. |
| String cleanUpLiteral(String text) { |
| var lines = text.split('\n'); |
| if (lines.length <= 1) return text; |
| |
| for (var j = 0; j < lines.length; j++) { |
| if (lines[j].length > 8) { |
| lines[j] = lines[j].substring(8, lines[j].length); |
| } else { |
| lines[j] = ''; |
| } |
| } |
| |
| return lines.join('\n'); |
| } |
| |
| /** |
| * Indents each line of [text] so that, when passed to [cleanUpLiteral], it will |
| * produce output identical to [text]. |
| * |
| * This is useful for literals that need to include newlines but can't be |
| * conveniently represented as multi-line strings. |
| */ |
| // TODO(nweiz): Once cleanUpLiteral is fixed, get rid of this. |
| String indentLiteral(String text) { |
| var lines = text.split('\n'); |
| if (lines.length <= 1) return text; |
| |
| for (var i = 0; i < lines.length; i++) { |
| lines[i] = " ${lines[i]}"; |
| } |
| |
| return lines.join("\n"); |
| } |