Frame.parseFriendly constructor
- String frame
Parses this package's string representation of a stack frame.
Implementation
factory Frame.parseFriendly(String frame) => _catchFormatException(frame, () {
var match = _friendlyFrame.firstMatch(frame);
if (match == null) {
throw FormatException(
"Couldn't parse package:stack_trace stack trace line '$frame'.");
}
// Fake truncated data urls generated by the friendly stack trace format
// cause Uri.parse to throw an exception so we have to special case
// them.
var uri = match[1] == 'data:...'
? Uri.dataFromString('')
: Uri.parse(match[1]!);
// If there's no scheme, this is a relative URI. We should interpret it
// as relative to the current working directory.
if (uri.scheme == '') {
uri = path.toUri(path.absolute(path.fromUri(uri)));
}
var line = match[2] == null ? null : int.parse(match[2]!);
var column = match[3] == null ? null : int.parse(match[3]!);
return Frame(uri, line, column, match[4]);
});