ansi_modifier 0.1.0 ansi_modifier: ^0.1.0 copied to clipboard
Style strings for terminal output by adding, replacing, or removing ANSI modifiers.
Ansi Modifier #
Introduction #
The package provides the class Ansi
holding ANSI modifier codes and
the String extension methods style
and clearStyle
for adding, replacing, and removing ANSI modifiers.
Usage #
Include ansi_modifier
as a dependency
in your pubspec.yaml
file.
Use the String extension function style
to add new modifiers or
to replace existing ones. Use the function clearStyle
to remove
all Ansi modifier from a string.
import 'package:ansi_modifier/src/ansi.dart';
void main(List<String> args) {
// Create colorized strings.
print('\nCreate colorized strings:');
final blue = 'blueberry'.style(Ansi.blue + Ansi.italic);
final green = 'green apple'.style(Ansi.green);
final blueGreen = blue +
' and ' +
green.style(
Ansi.bold,
method: Replace.none,
);
print('$blue, $green, $blueGreen');
// Modify a previously colorized string.
print('\nModify previously colorized strings:');
// Create custom Ansi modifier.
final customModifier = Ansi.combine({Ansi.yellow, Ansi.bold, Ansi.underline});
// Replace first modifier:
final yellowGreen = blueGreen.style(customModifier, method: Replace.first);
// Replace all modifiers.
final magenta =
yellowGreen.style(Ansi.magenta, method: Replace.clearPrevious);
// Strip all Ansi modifiers.
print('$yellowGreen, $magenta, ${magenta.clearStyle()}\n');
}
Runnig the program above:
$ dart example/bin/color_example.dart
produces the following output:
Tips and Tricks #
-
The String extension method
style
supports different replacement modes that can be adjusted using the optional argumentmethod
. -
Ansi codes can be combined using the addition operator
Anis.red + Ansi.bold
, or by using the factory constructorAnsi.combine
. -
Ansi output can be globally disabled by setting
Ansi.status = AnsiOutput.disabled
or by using the option:$ dart --define=isMonochrome=true example/bin/color_example.dart
Features and bugs #
If some Ansi modifiers are missing please file an enhancement request at the issue tracker.