| Index: dart/tests/try/poi/source_update.dart
|
| diff --git a/dart/tests/try/poi/source_update.dart b/dart/tests/try/poi/source_update.dart
|
| index 6bd2395276262a3dc661c49242eaf8b98c7e45ab..571311d703dbf6298e8572b0b0dbe961226a5c7f 100644
|
| --- a/dart/tests/try/poi/source_update.dart
|
| +++ b/dart/tests/try/poi/source_update.dart
|
| @@ -39,3 +39,76 @@ List<String> expandUpdates(List updates) {
|
|
|
| return result.map((e) => '$e').toList();
|
| }
|
| +
|
| +/// Returns [files] split into mulitple named files. The keys in the returned
|
| +/// map are filenames, the values are the files' content.
|
| +///
|
| +/// Names are indicated by a line on the form "==> filename <==". Spaces are
|
| +/// significant. For example, given this input:
|
| +///
|
| +/// ==> file1.dart <==
|
| +/// First line of file 1.
|
| +/// Second line of file 1.
|
| +/// Third line of file 1.
|
| +/// ==> empty.dart <==
|
| +/// ==> file2.dart <==
|
| +/// First line of file 2.
|
| +/// Second line of file 2.
|
| +/// Third line of file 2.
|
| +///
|
| +/// This function would return:
|
| +///
|
| +/// {
|
| +/// "file1.dart": """
|
| +/// First line of file 1.
|
| +/// Second line of file 1.
|
| +/// Third line of file 1.
|
| +/// """,
|
| +///
|
| +/// "empty.dart":"",
|
| +///
|
| +/// "file2.dart":"""
|
| +/// First line of file 2.
|
| +/// Second line of file 2.
|
| +/// Third line of file 2.
|
| +/// """
|
| +/// }
|
| +Map<String, String> splitFiles(String files) {
|
| + Map<String, String> result = <String, String>{};
|
| + String currentName;
|
| + List<String> content;
|
| + void finishFile() {
|
| + if (currentName != null) {
|
| + if (result.containsKey(currentName)) {
|
| + throw new ArgumentError("Duplicated filename $currentName in $files");
|
| + }
|
| + result[currentName] = content.join('');
|
| + }
|
| + content = null;
|
| + }
|
| + void processDirective(String line) {
|
| + finishFile();
|
| + if (line.length < 8 || !line.endsWith(" <==\n")) {
|
| + throw new ArgumentError(
|
| + "Malformed line: expected '==> ... <==', but got: '$line'");
|
| + }
|
| + currentName = line.substring(4, line.length - 5);
|
| + content = <String>[];
|
| + }
|
| + for (String line in splitLines(files)) {
|
| + if (line.startsWith("==>")) {
|
| + processDirective(line);
|
| + } else {
|
| + content.add(line);
|
| + }
|
| + }
|
| + finishFile();
|
| + return result;
|
| +}
|
| +
|
| +/// Split [text] into lines preserving trailing newlines (unlike
|
| +/// String.split("\n"). Also, if [text] is empty, return an empty list (unlike
|
| +/// String.split("\n")).
|
| +List<String> splitLines(String text) {
|
| + return text.split(new RegExp('^', multiLine: true));
|
| +}
|
|
|