Skip to content

Commit 02ea20c

Browse files
committed
Ignore some stacktrace lines when using vanilla Dart in the browser
Thanks @gmpassos!
1 parent 625c0dc commit 02ea20c

File tree

1 file changed

+18
-1
lines changed

1 file changed

+18
-1
lines changed

lib/src/printers/pretty_printer.dart

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,13 @@ class PrettyPrinter extends LogPrinter {
5555
static final _webStackTraceRegex =
5656
RegExp(r'^((packages|dart-sdk)\/[^\s]+\/)');
5757

58+
/// Matches a stacktrace line as generated by browser Dart.
59+
/// For example:
60+
/// dart:sdk_internal
61+
/// package:logger/src/logger.dart
62+
static final _browserStackTraceRegex =
63+
RegExp(r'^(?:package:)?(dart:[^\s]+|[^\s]+)');
64+
5865
static DateTime _startTime;
5966

6067
/// Amount of [StackTrace] lines to show with message (non-error log).
@@ -147,7 +154,8 @@ class PrettyPrinter extends LogPrinter {
147154
var count = 0;
148155
for (var line in lines) {
149156
if (_discardDeviceStacktraceLine(line) ||
150-
_discardWebStacktraceLine(line)) {
157+
_discardWebStacktraceLine(line) ||
158+
_discardBrowserStacktraceLine(line)) {
151159
continue;
152160
}
153161
formatted.add('#$count ${line.replaceFirst(RegExp(r'#\d+\s+'), '')}');
@@ -180,6 +188,15 @@ class PrettyPrinter extends LogPrinter {
180188
match.group(1).startsWith('dart-sdk/lib');
181189
}
182190

191+
bool _discardBrowserStacktraceLine(String line) {
192+
var match = _browserStackTraceRegex.matchAsPrefix(line);
193+
if (match == null) {
194+
return false;
195+
}
196+
return match.group(1).startsWith('package:logger') ||
197+
match.group(1).startsWith('dart:');
198+
}
199+
183200
String getTime() {
184201
String _threeDigits(int n) {
185202
if (n >= 100) return '$n';

0 commit comments

Comments
 (0)