Skip to content

Commit

Permalink
level colors and level emojis constructor injection
Browse files Browse the repository at this point in the history
  • Loading branch information
ik-make committed Sep 14, 2022
1 parent 7e510ec commit 9900757
Showing 1 changed file with 15 additions and 21 deletions.
36 changes: 15 additions & 21 deletions lib/src/printers/pretty_printer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class PrettyPrinter extends LogPrinter {
static const doubleDivider = '─';
static const singleDivider = '┄';

static final levelColors = {
static final defaultLevelColors = {
Level.verbose: AnsiColor.fg(AnsiColor.grey(0.5)),
Level.debug: AnsiColor.none(),
Level.info: AnsiColor.fg(12),
Expand All @@ -33,7 +33,7 @@ class PrettyPrinter extends LogPrinter {
Level.wtf: AnsiColor.fg(199),
};

static final levelEmojis = {
static final defaultLevelEmojis = {
Level.verbose: '',
Level.debug: '🐛 ',
Level.info: '💡 ',
Expand All @@ -45,21 +45,18 @@ class PrettyPrinter extends LogPrinter {
/// Matches a stacktrace line as generated on Android/iOS devices.
/// For example:
/// #1 Logger.log (package:logger/src/logger.dart:115:29)
static final _deviceStackTraceRegex =
RegExp(r'#[0-9]+[\s]+(.+) \(([^\s]+)\)');
static final _deviceStackTraceRegex = RegExp(r'#[0-9]+[\s]+(.+) \(([^\s]+)\)');

/// Matches a stacktrace line as generated by Flutter web.
/// For example:
/// packages/logger/src/printers/pretty_printer.dart 91:37
static final _webStackTraceRegex =
RegExp(r'^((packages|dart-sdk)\/[^\s]+\/)');
static final _webStackTraceRegex = RegExp(r'^((packages|dart-sdk)\/[^\s]+\/)');

/// Matches a stacktrace line as generated by browser Dart.
/// For example:
/// dart:sdk_internal
/// package:logger/src/logger.dart
static final _browserStackTraceRegex =
RegExp(r'^(?:package:)?(dart:[^\s]+|[^\s]+)');
static final _browserStackTraceRegex = RegExp(r'^(?:package:)?(dart:[^\s]+|[^\s]+)');

static DateTime? _startTime;

Expand All @@ -74,6 +71,8 @@ class PrettyPrinter extends LogPrinter {
final bool colors;
final bool printEmojis;
final bool printTime;
final Map<Level, AnsiColor> levelColors;
final Map<Level, String> levelEmojis;

/// To prevent ascii 'boxing' of any log [Level] include the level in map for excludeBox,
/// for example to prevent boxing of [Level.verbose] and [Level.info] use excludeBox:{Level.verbose:true, Level.info:true}
Expand All @@ -97,9 +96,12 @@ class PrettyPrinter extends LogPrinter {
this.colors = true,
this.printEmojis = true,
this.printTime = false,
Map<Level, AnsiColor>? levelColors,
Map<Level, String>? levelEmojis,
this.excludeBox = const {},
this.noBoxingByDefault = false,
}) {
}) : levelColors = levelColors ?? defaultLevelColors,
levelEmojis = levelEmojis ?? defaultLevelEmojis {
_startTime ??= DateTime.now();

var doubleDividerLine = StringBuffer();
Expand Down Expand Up @@ -156,10 +158,7 @@ class PrettyPrinter extends LogPrinter {
var formatted = <String>[];
var count = 0;
for (var line in lines) {
if (_discardDeviceStacktraceLine(line) ||
_discardWebStacktraceLine(line) ||
_discardBrowserStacktraceLine(line) ||
line.isEmpty) {
if (_discardDeviceStacktraceLine(line) || _discardWebStacktraceLine(line) || _discardBrowserStacktraceLine(line) || line.isEmpty) {
continue;
}
formatted.add('#$count ${line.replaceFirst(RegExp(r'#\d+\s+'), '')}');
Expand Down Expand Up @@ -188,17 +187,15 @@ class PrettyPrinter extends LogPrinter {
if (match == null) {
return false;
}
return match.group(1)!.startsWith('packages/logger') ||
match.group(1)!.startsWith('dart-sdk/lib');
return match.group(1)!.startsWith('packages/logger') || match.group(1)!.startsWith('dart-sdk/lib');
}

bool _discardBrowserStacktraceLine(String line) {
var match = _browserStackTraceRegex.matchAsPrefix(line);
if (match == null) {
return false;
}
return match.group(1)!.startsWith('package:logger') ||
match.group(1)!.startsWith('dart:');
return match.group(1)!.startsWith('package:logger') || match.group(1)!.startsWith('dart:');
}

String getTime() {
Expand Down Expand Up @@ -283,10 +280,7 @@ class PrettyPrinter extends LogPrinter {
var errorColor = _getErrorColor(level);
for (var line in error.split('\n')) {
buffer.add(
color(verticalLineAtLevel) +
errorColor.resetForeground +
errorColor(line) +
errorColor.resetBackground,
color(verticalLineAtLevel) + errorColor.resetForeground + errorColor(line) + errorColor.resetBackground,
);
}
if (includeBox[level]!) buffer.add(color(_middleBorder));
Expand Down

0 comments on commit 9900757

Please sign in to comment.