blob: a786fa2846365d2168670d3e89ecb8e381e576cb [file] [log] [blame]
// 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");
}