mirror of
https://github.com/dart-lang/sdk
synced 2024-09-23 07:23:31 +00:00
ecce8a6293
Review URL: https://codereview.chromium.org//12295014 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18686 260f80e4-7a28-3924-810f-c04153c831b5
54 lines
1.6 KiB
Dart
54 lines
1.6 KiB
Dart
// 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");
|
|
}
|