blob: 9891065118dbd62a2a9557163348173425cb2cbb [file] [log] [blame]
// Copyright (c) 2014, 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.
/// Inserts the given arguments into [pattern].
///
/// format('Hello, {0}!', 'John') = 'Hello, John!'
/// format('{0} are you {1}ing?', 'How', 'do') = 'How are you doing?'
/// format('{0} are you {1}ing?', 'What', 'read') = 'What are you reading?'
String format(String pattern,
[Object? arg0,
Object? arg1,
Object? arg2,
Object? arg3,
Object? arg4,
Object? arg5,
Object? arg6,
Object? arg7]) {
// TODO(rnystrom): This is not used by analyzer, but is called by
// analysis_server. Move this code there and remove it from here.
return formatList(pattern, [arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7]);
}
/// Inserts the given [arguments] into [pattern].
///
/// format('Hello, {0}!', ['John']) = 'Hello, John!'
/// format('{0} are you {1}ing?', ['How', 'do']) = 'How are you doing?'
/// format('{0} are you {1}ing?', ['What', 'read']) =
/// 'What are you reading?'
String formatList(String pattern, List<Object?>? arguments) {
if (arguments == null || arguments.isEmpty) {
assert(!pattern.contains(RegExp(r'\{(\d+)\}')),
'Message requires arguments, but none were provided.');
return pattern;
}
return pattern.replaceAllMapped(RegExp(r'\{(\d+)\}'), (match) {
String indexStr = match.group(1)!;
int index = int.parse(indexStr);
return arguments[index].toString();
});
}