blob: 278d4e3c29db43e3ba67ceb562614b2e77a1c319 [file] [log] [blame]
// Copyright (c) 2017, 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.
import 'dart:async';
import 'dart:convert';
import 'dart:io';
/// Split [text] using [infixes] as infix markers.
List<String> split(String text, List<String> infixes) {
List<String> result = <String>[];
int start = 0;
for (String infix in infixes) {
int index = text.indexOf(infix, start);
if (index == -1)
throw "'$infix' not found in '$text' from offset ${start}.";
result.add(text.substring(start, index));
start = index + infix.length;
}
result.add(text.substring(start));
return result;
}
/// Pad [text] with spaces to the right to fit [length].
String padRight(String text, int length) {
if (text.length < length) return '${text}${' ' * (length - text.length)}';
return text;
}
const bool LOG = const bool.fromEnvironment('LOG', defaultValue: false);
void log(String text) {
if (LOG) print(text);
}
/// Reads the content of [uri] as text.
Future<String> readUriAsText(HttpClient client, Uri uri) async {
HttpClientRequest request = await client.getUrl(uri);
HttpClientResponse response = await request.close();
return await response.transform(UTF8.decoder).join();
}